a76df9b9ac
PR at github: #199 This output takes the respondd response as sent by the node and includes it in a Line-Delimited JSON (JSONL) document. In this format each line can be interpreted as separate JSON element, which is useful for json streaming. The first line is json object holding the timestamp and version of the file. Then there follows one line for each node, each containing a json object. An example output looks like this: {"version":1,"updated_at":"2021-03-27T21:58:48+0100","format":"raw-nodes-jsonl"} {"firstseen": ..., "lastseen": ..., "online":true, "statistics": {...}, "nodeinfo": {...}, "neighbours":null, "custom_fields":null} {"firstseen": ..., "lastseen": ..., "online":true, "statistics": {...}, "nodeinfo": {...}, "neighbours":null, "custom_fields":null} {"firstseen": ..., "lastseen": ..., "online":true, "statistics": {...}, "nodeinfo": {...}, "neighbours":null, "custom_fields":null} {"firstseen": ..., "lastseen": ..., "online":true, "statistics": {...}, "nodeinfo": {...}, "neighbours":null, "custom_fields":null} ... Signed-off-by: Leonardo Mörlein <git@irrelefant.net> |
||
---|---|---|
.circleci | ||
.github | ||
.gitlab/issue_templates | ||
cmd | ||
contrib | ||
data | ||
database | ||
docs | ||
lib | ||
output | ||
respond | ||
rrd | ||
runtime | ||
webserver | ||
.drone.yml | ||
.editorconfig | ||
.gitignore | ||
.gitlab-ci.yml | ||
.gitmodules | ||
INSTALL.md | ||
LICENSE | ||
README.md | ||
SUMMARY.md | ||
book.json | ||
config_example.toml | ||
go.mod | ||
go.sum | ||
main.go |
README.md
Yanic
__ __ _
\ \ / /_ _ _ __ (_) ___
\ V / _` | '_ \| |/ __|
| | (_| | | | | | (__
|_|\__,_|_| |_|_|\___|
Yet another node info collector
yanic
is a respondd client that fetches, stores and publishes information about a Freifunk network. The goals:
- Generating JSON for Meshviewer
- Storing statistics in InfluxDB or Graphite to be analyzed by Grafana
- Provide a little webserver for a standalone installation with a meshviewer
How it works
In the first step Yanic sends a multicast message to the group ff05::2:1001
and port 1001
.
Recently seen nodes that does not reply are requested via a unicast message.
Documentation
Take a look at the git or Gitbook
Installation
Take a look into the Documentation (see above) or for Quick Overview in INSTALL.md.
If you like Docker you may want to take a look here.
Configuration
Read comments in config_example.toml for more information.
Running
Yanic provides several commands:
Usage
Run Yanic without any arguments to get the usage information:
Usage:
yanic [command]
Available Commands:
help Help about any command
import Imports global statistics from the given RRD files, requires InfluxDB
query Sends a query on the interface to the destination and waits for a response
serve Runs the yanic server
Flags:
-h, --help help for yanic
--loglevel uint32 Show log message starting at level (default 40)
--timestamps Enables timestamps for log output
Use "yanic [command] --help" for more information about a command.
Serve
Runs the yanic server
Usage:
yanic serve [flags]
Examples:
yanic serve --config /etc/yanic.toml
Flags:
-c, --config string Path to configuration file (default "config.toml")
-h, --help help for serve
Global Flags:
--loglevel uint32 Show log message starting at level (default 40)
--timestamps Enables timestamps for log output
Query
Sends a query on the interface to the destination and waits for a response
Usage:
yanic query <interfaces> <destination> [flags]
Examples:
yanic query "eth0,wlan0" "fe80::eade:27ff:dead:beef"
Flags:
-h, --help help for query
--ip string ip address which is used for sending (optional - without definition used the link-local address)
--port int define a port to listen (if not set or set to 0 the kernel will use a random free port at its own)
--wait int Seconds to wait for a response (default 1)
Global Flags:
--loglevel uint32 Show log message starting at level (default 40)
--timestamps Enables timestamps for log output
Import
Imports global statistics from the given RRD files (ffmap-backend).
Usage:
yanic import <file.rrd> <site> <domain> [flags]
Examples:
yanic import --config /etc/yanic.toml olddata.rrd global global
Flags:
-c, --config string Path to configuration file (default "config.toml")
-h, --help help for import
Global Flags:
--loglevel uint32 Show log message starting at level (default 40)
--timestamps Enables timestamps for log output
Communities using Yanic
- Freifunk Bremen uses InfluxDB, Grafana, and Meshviewer with a patch to show state-version of
nodes.json
. - Freifunk Nord uses hopglass (commit 587740a) as frontend: https://mesh.freifunknord.de/
- Freifunk Kiel uses Meshviewer as frontend: https://map.freifunk.in-kiel.de/
- Freifunk Hannover uses Grafana, InfluxDB, and Meshviewer.
- Freifunk Rhein-Sieg e.V. uses InfluxDB, Grafana, Meshviewer - see Github
Do you know someone else using Yanic? Create a pull request!
Related projects
Collecting data from respondd:
- HopGlass Server written in Node.js
Respondd for servers:
- mesh-announce from ffnord
- respondd from Sunz3r
License
This software is licensed under the terms of the AGPL v3 License.