2017-03-03 10:57:38 +01:00
# Yanic
```
__ __ _
\ \ / /_ _ _ __ (_) ___
\ V / _` | '_ \| |/ __ |
| | (_| | | | | | (__
|_|\__,_|_| |_|_|\___|
Yet another node info collector
```
2016-02-26 09:28:31 +01:00
2022-03-28 03:42:42 +02:00
[![Test, Lint ](https://github.com/FreifunkBremen/yanic/actions/workflows/go.yml/badge.svg )](https://github.com/FreifunkBremen/yanic/actions/workflows/go.yml)
2021-02-17 23:25:56 +01:00
[![codecov ](https://codecov.io/gh/FreifunkBremen/yanic/branch/main/graph/badge.svg )](https://codecov.io/gh/FreifunkBremen/yanic)
2017-06-14 14:05:20 +02:00
[![Go Report Card ](https://goreportcard.com/badge/github.com/FreifunkBremen/yanic )](https://goreportcard.com/report/github.com/FreifunkBremen/yanic)
2016-03-20 12:34:58 +01:00
2017-03-03 10:57:38 +01:00
`yanic` is a respondd client that fetches, stores and publishes information about a Freifunk network. The goals:
2017-01-30 15:23:36 +01:00
* Generating JSON for [Meshviewer ](https://github.com/ffrgb/meshviewer )
2017-06-14 14:05:20 +02:00
* Storing statistics in [InfluxDB ](https://influxdata.com/ ) or [Graphite ](https://graphiteapp.org/ ) to be analyzed by [Grafana ](http://grafana.org/ )
2017-01-30 15:23:36 +01:00
* Provide a little webserver for a standalone installation with a meshviewer
2016-02-26 09:28:31 +01:00
2017-06-14 14:05:20 +02:00
## How it works
2019-10-13 10:48:44 +02:00
In the first step Yanic sends a multicast message to the group `ff05::2:1001` and port `1001` .
2017-06-14 14:05:20 +02:00
Recently seen nodes that does not reply are requested via a unicast message.
2017-12-31 05:28:03 +01:00
## Documentation
2023-09-17 02:05:08 +02:00
Take a look at the [git ](https://github.com/FreifunkBremen/yanic/blob/main/SUMMARY.md ) or [website ](https://freifunkbremen.github.io/yanic/ )
2017-12-31 05:28:03 +01:00
2019-10-13 10:48:44 +02:00
# Installation
Take a look into the Documentation (see above) or for Quick Overview in [INSTALL.md ](INSTALL.md ).
If you like Docker you may want to take a look [here ](https://github.com/christf/docker-yanic ).
2017-06-14 14:05:20 +02:00
2017-09-17 03:26:19 +02:00
## Configuration
Read comments in [config_example.toml ](config_example.toml ) for more information.
## Running
Yanic provides several commands:
2017-06-14 14:05:20 +02:00
### Usage
2017-09-17 03:26:19 +02:00
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:
2019-10-13 10:48:44 +02:00
-h, --help help for yanic
--loglevel uint32 Show log message starting at level (default 40)
--timestamps Enables timestamps for log output
2017-09-17 03:26:19 +02:00
Use "yanic [command] --help" for more information about a command.
2016-02-26 09:28:31 +01:00
```
2017-09-17 03:26:19 +02:00
#### Serve
2019-10-13 10:48:44 +02:00
Runs the yanic server
2016-02-26 09:28:31 +01:00
```
2017-09-17 03:26:19 +02:00
Usage:
yanic serve [flags]
Examples:
2019-10-13 10:48:44 +02:00
yanic serve --config /etc/yanic.toml
2017-09-17 03:26:19 +02:00
Flags:
-c, --config string Path to configuration file (default "config.toml")
-h, --help help for serve
2019-10-13 10:48:44 +02:00
Global Flags:
--loglevel uint32 Show log message starting at level (default 40)
--timestamps Enables timestamps for log output
```
2017-09-17 03:26:19 +02:00
2019-10-13 10:48:44 +02:00
#### Query
Sends a query on the interface to the destination and waits for a response
2017-09-17 03:26:19 +02:00
```
Usage:
2019-10-13 10:48:44 +02:00
yanic query < interfaces > < destination > [flags]
2017-09-17 03:26:19 +02:00
Examples:
2019-10-13 10:48:44 +02:00
yanic query "eth0,wlan0" "fe80::eade:27ff:dead:beef"
2017-09-17 03:26:19 +02:00
Flags:
2019-10-13 10:48:44 +02:00
-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
2017-09-17 03:26:19 +02:00
```
2019-10-13 10:48:44 +02:00
#### Import
Imports global statistics from the given RRD files (ffmap-backend).
2017-09-17 03:26:19 +02:00
```
Usage:
2019-10-13 10:48:44 +02:00
yanic import < file.rrd > < site > < domain > [flags]
2017-09-17 03:26:19 +02:00
Examples:
2019-10-13 10:48:44 +02:00
yanic import --config /etc/yanic.toml olddata.rrd global global
2017-09-17 03:26:19 +02:00
Flags:
2019-10-13 10:48:44 +02:00
-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
2017-09-17 03:26:19 +02:00
```
2017-01-30 15:23:36 +01:00
2018-01-13 16:24:23 +01:00
2019-10-13 10:48:44 +02:00
## Communities using Yanic
2023-09-11 07:17:25 +02:00
* **Freifunk Aachen** uses InfluxDB, [Grafana ](https://grafana.ffac.rocks ), and [Meshviewer-FFM ](https://map.aachen.freifunk.net ).
2021-02-17 23:25:56 +01:00
* **Freifunk Bremen** uses InfluxDB, [Grafana ](https://grafana.bremen.freifunk.net ), and [Meshviewer ](https://map.bremen.freifunk.net ) with a patch to show state-version of `nodes.json` .
2021-05-14 21:43:33 +02:00
* **Freifunk Nord** uses [meshviewer ](https://github.com/ffrgb/meshviewer ) (commit 587740a) as frontend: https://mesh.freifunknord.de/
2021-03-24 09:22:18 +01:00
* **Freifunk Hannover** uses [Grafana ](https://stats.ffh.zone ), InfluxDB, and [Meshviewer ](https://hannover.freifunk.net/karte/ ).
2021-03-24 09:57:24 +01:00
* **Freifunk Rhein-Sieg e.V.** uses InfluxDB, [Grafana ](https://grafana.freifunk-rhein-sieg.net/ ), [Meshviewer ](https://map.freifunk-rhein-sieg.net/ ) - see [Github ](https://github.com/Freifunk-Rhein-Sieg/Ansible-FFlo )
2021-06-23 00:21:04 +02:00
* **Freifunk Ingolstadt** uses InfluxDB, [Grafana ](https://grafana.freifunk-ingolstadt.de/ ), [Meshviewer ](https://map.freifunk-ingolstadt.de/ ) - see https://git.bingo-ev.de/freifunk/mapserver-docker
2018-01-13 16:24:23 +01:00
Do you know someone else using Yanic? Create a [pull request ](https://github.com/FreifunkBremen/yanic/issues/new?template=community.md&title=Mention+community+$name )!
2017-01-30 15:23:36 +01:00
2016-03-21 18:58:49 +01:00
## Related projects
Collecting data from respondd:
* [HopGlass Server ](https://github.com/plumpudding/hopglass-server ) written in Node.js
Respondd for servers:
2018-08-07 21:33:02 +02:00
* [mesh-announce ](https://github.com/ffnord/mesh-announce ) from ffnord
2016-03-21 18:58:49 +01:00
* [respondd ](https://github.com/Sunz3r/ext-respondd ) from Sunz3r
2018-01-04 12:13:00 +01:00
## License
2018-01-06 15:07:50 +01:00
This software is licensed under the terms of the [AGPL v3 License ](LICENSE ).