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
nrbffs 1a1163aaa1 add support for custom fields
At the moment, if one has a custom respondd module which includes custom
fields, Yanic will simply ignore these fields. Communities which have custom
fields have to maintain patches on Yanic to have them available.

This commit allows to define custom fields in the configuration file, which
will cause Yanic to also save the values of these custom fields in its internal
data structures. Output modules can then decide whether they want to include
these fields. For most cases, this should avoid the need for patches in Yanic.
2019-12-29 15:41:05 +01:00
.circleci Trash Travis-CI 2018-06-22 00:56:35 +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 refactor: make complete respondd config available during collecting 2019-12-29 15:41:05 +01:00
contrib [TASK] Add editorconfig & format code (#94) 2017-11-06 00:59:42 +01:00
data add support for custom fields 2019-12-29 15:41:05 +01:00
database [TASK] improve neighbours stats (+ babel support) 2019-05-28 20:14:12 +02:00
docs [DOC] misspell 2019-11-13 13:29:46 +01:00
lib lib/duration: Implement encoding.TextUnmarshaler 2018-01-13 15:06:18 +01:00
output add support for custom fields 2019-12-29 15:41:05 +01:00
respond add support for custom fields 2019-12-29 15:41:05 +01:00
rrd [TASK] improve logging 2019-01-19 20:58:36 +01:00
runtime add support for custom fields 2019-12-29 15:41:05 +01: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 [TEST] improve gitlab-ci 2019-05-21 09:45:04 +02:00
.gitmodules switch to config-file 2016-03-07 09:52:52 +01:00
Gopkg.lock update dep 2019-05-21 09:40:59 +02:00
Gopkg.toml add support for custom fields 2019-12-29 15:41:05 +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] update install 2019-10-13 10:48:44 +02: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 add support for custom fields 2019-12-29 15:41:05 +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.