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 ab798f0dd6 refactor: make complete respondd config available during collecting
Right now, only the interface config and site domains are available when
collecting data. Make the complete respondd config available during collecting,
so the collect process can be configured more easily.

Motivation for this change is the support for custom fields.
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 [TASK] rename NodeInfo to Nodeinfo (same naming overall) 2019-01-24 02:56:13 +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 [BUGFIX] package name in output raw 2019-11-13 12:37:54 +01:00
respond refactor: make complete respondd config available during collecting 2019-12-29 15:41:05 +01:00
rrd [TASK] improve logging 2019-01-19 20:58:36 +01:00
runtime [TEST] improve runtime 2019-05-21 09:56:16 +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 [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 [TASK] update influxdb-client 2019-01-15 20:33:59 +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 [DOC] misspell 2019-11-13 13:29:46 +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.