Yet another node info collector - for respondd to be used with meshviewer to Grafana (with influxdb or graphite) https://www.gitbook.com/book/freifunkbremen/yanic/details
Go to file
lemoer a76df9b9ac
[TASK] add output raw-jsonl
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>
2021-03-29 16:12:26 +02:00
.circleci Migrate to Go modules 2020-05-18 00:25:05 +02:00
.github Add PR template for communities using Yanic 2018-01-13 16:37:37 +01:00
.gitlab/issue_templates [TASK] add support for gitlab 2018-08-30 10:17:56 +02:00
cmd [DOC] improve raw-output 2020-01-05 17:15:44 +01:00
contrib [TASK] Add editorconfig & format code (#94) 2017-11-06 00:59:42 +01:00
data nodeinfo without empty values 2021-03-24 08:57:46 +01:00
database Add hostnames to database-output of link 2021-03-26 10:18:29 +01:00
docs [TASK] add output raw-jsonl 2021-03-29 16:12:26 +02:00
lib lib/duration: Implement encoding.TextUnmarshaler 2018-01-13 15:06:18 +01:00
output [TASK] add output raw-jsonl 2021-03-29 16:12:26 +02:00
respond [BUGFIX] respondd module encoding 2020-01-07 15:37:09 +01:00
rrd [TASK] improve logging 2019-01-19 20:58:36 +01:00
runtime [TASK] add output raw-jsonl 2021-03-29 16:12:26 +02:00
webserver [TASK] improve logging 2019-01-19 20:58:36 +01:00
.drone.yml add drone 2018-05-05 23:30:24 +02:00
.editorconfig [TASK] Add editorconfig & format code (#94) 2017-11-06 00:59:42 +01:00
.gitignore [TEST] improve gitlab-ci 2019-05-21 09:45:04 +02:00
.gitlab-ci.yml Bump dependencies version 2020-05-18 02:53:56 +02:00
.gitmodules switch to config-file 2016-03-07 09:52:52 +01:00
INSTALL.md [DOC] update install 2019-10-13 10:48:44 +02:00
LICENSE Use license from Github template 2018-01-06 15:11:02 +01:00
README.md [DOC] Mention community Freifunk Rhein-Sieg e.V. 2021-03-24 09:57:24 +01:00
SUMMARY.md [TASK] add rules for documentation, PR and testing 2017-12-31 16:01:19 +01:00
book.json [TASK] add rules for documentation, PR and testing 2017-12-31 16:01:19 +01:00
config_example.toml black lives matter 2020-06-17 10:14:22 +02:00
go.mod go.mod: update of log (for circleci) 2021-03-24 11:05:21 +01:00
go.sum go.mod: update of log (for circleci) 2021-03-24 11:05:21 +01:00
main.go not export logging stdout / stderr hook 2019-02-27 02:51:01 +01:00

README.md

Yanic

__   __          _
\ \ / /_ _ _ __ (_) ___
 \ V / _` | '_ \| |/ __|
  | | (_| | | | | | (__
  |_|\__,_|_| |_|_|\___|
Yet another node info collector

CircleCI Coverage Status codecov Go Report Card

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

Do you know someone else using Yanic? Create a pull request!

Collecting data from respondd:

Respondd for servers:

License

This software is licensed under the terms of the AGPL v3 License.