diff --git a/files/yanic.conf b/files/yanic.conf new file mode 100644 index 0000000..6f89d97 --- /dev/null +++ b/files/yanic.conf @@ -0,0 +1,204 @@ +# This is the config file for Yanic written in "Tom's Obvious, Minimal Language." +# syntax: https://github.com/toml-lang/toml +# (if you need somethink multiple times, checkout out the [[array of table]] section) + +# Send respondd request to update information +[respondd] +enable = true +# Delay startup until a multiple of the period since zero time +synchronize = "1m" +# how often request per multicast +collect_interval = "1m" + +# table of a site to save stats for (not exists for global only) +#[respondd.sites.example] +## list of domains on this site to save stats for (empty for global only) +#domains = [] +## example +[respondd.sites.ff] +domains = ["city"] + +# interface that has an IP in your mesh network +[[respondd.interfaces]] +# name of interface on which this collector is running +ifname = "bat0" +# ip address which is used for sending +# (optional - without definition used a address of ifname) +#ip_address = "fd2f:5119:f2d::5" +# disable sending multicast respondd request +# (for receiving only respondd packages e.g. database respondd) +#send_no_request = false +# multicast address to destination of respondd +# (optional - without definition used batman default ff02::2:1001) +#multicast_address = "ff05::2:1001" +# define a port to listen +# if not set or set to 0 the kernel will use a random free port at its own +#port = 10001 + +# A little build-in webserver, which statically serves a directory. +# This is useful for testing purposes or for a little standalone installation. +[webserver] +enable = true +bind = "0.0.0.0:80" +webroot = "/opt/freifunk/yanic" + + +[nodes] +# Cache file +# a json file to cache all data collected directly from respondd +state_path = "/opt/freifunk/yanic/state.json" +# prune data in RAM, cache-file and output json files (i.e. nodes.json) +# that were inactive for longer than +prune_after = "7d" +# Export nodes and graph periodically +save_interval = "5s" +# Set node to offline if not seen within this period +offline_after = "10m" + + +## [[nodes.output.example]] +# Each output format has its own config block and needs to be enabled by adding: +#enable = true +# +# For each output format there can be set different filters +#[nodes.output.example.filter] +# +# WARNING: if it is not set, it will publish contact information of other persons +# Set to true, if you did not want the json files to contain the owner information +#no_owner = true +# +# List of nodeids of nodes that should be filtered out, so they won't appear in output +#blacklist = ["00112233445566", "1337f0badead"] +# +# List of site_codes of nodes that should be included in the output +#sites = ["ffhb"] +# +# replace the site_code with the domain_code in this output +# e.g. site_code='ffhb',domain_code='city' => site_code='city', domain_code='' +#domain_as_site = true +# +# append on the site_code the domain_code with a '.' in this output +# e.g. site_code='ffhb',domain_code='city' => site_code='ffhb.city', domain_code='' +#domain_append_site = true +# +# set has_location to true if you want to include only nodes that have geo-coordinates set +# (setting this to false has no sensible effect, unless you'd want to hide nodes that have coordinates) +#has_location = true + +#[nodes.output.example.filter.in_area] +# nodes outside this area are not shown on the map but are still listed as a node without coordinates +#latitude_min = 34.30 +#latitude_max = 71.85 +#longitude_min = -24.96 +#longitude_max = 39.72 + + +# definition for the new more compressed meshviewer.json +[[nodes.output.meshviewer-ff]] +enable = true +path = "/opt/freifunk/yanic/meshviewer.json" + +[nodes.output.meshviewer-ff.filter] +# WARNING: if it is not set, it will publish contact information of other persons +no_owner = true +#blacklist = ["00112233445566", "1337f0badead"] +#sites = ["ffhb"] +#has_location = true + +#[nodes.output.meshviewer-ff.filter.in_area] +#latitude_min = 34.30 +#latitude_max = 71.85 +#longitude_min = -24.96 +#longitude_max = 39.72 + + +# definition for nodes.json +[[nodes.output.meshviewer]] +enable = true +# The structure version of the output which should be generated (i.e. nodes.json) +# version 1 is accepted by the legacy meshviewer (which is the master branch) +# i.e. https://github.com/ffnord/meshviewer/tree/master +# version 2 is accepted by the new versions of meshviewer (which are in the legacy develop branch or newer) +# i.e. https://github.com/ffnord/meshviewer/tree/dev +# https://github.com/ffrgb/meshviewer/tree/develop +version = 2 +# path where to store nodes.json +nodes_path = "/opt/freifunk/yanic/nodes.json" +# path where to store graph.json +graph_path = "/opt/freifunk/yanic/graph.json" + +[nodes.output.meshviewer.filter] +# WARNING: if it is not set, it will publish contact information of other persons +no_owner = true + + +# definition for nodelist.json +[[nodes.output.nodelist]] +enable = true +path = "/opt/freifunk/yanic/nodelist.json" + +[nodes.output.nodelist.filter] +# WARNING: if it is not set, it will publish contact information of other persons +no_owner = true + + + +[database] +# this will send delete commands to the database to prune data +# which is older than: +delete_after = "7d" +# how often run the cleaning +delete_interval = "1h" + +## [[database.connection.example]] +# Each database-connection has its own config block and needs to be enabled by adding: +#enable = true + +# Save collected data to InfluxDB. +# There are the following measurments: +# node: store node specific data i.e. clients memory, airtime +# global: store global data, i.e. count of clients and nodes +# firmware: store the count of nodes tagged with firmware +# model: store the count of nodes tagged with hardware model +[[database.connection.influxdb]] +enable = false +address = "http://localhost:8086" +database = "ffhb" +username = "" +password = "" + +# Tagging of the data (optional) +[database.connection.influxdb.tags] +# Tags used by Yanic would override the tags from this config +# nodeid, hostname, owner, model, firmware_base, firmware_release,frequency11g and frequency11a are tags which are already used +#tagname1 = "tagvalue 1" +# some useful e.g.: +#system = "productive" +#site = "ffhb" + +# Graphite settings +[[database.connection.graphite]] +enable = false +address = "localhost:2003" +# Graphite is replacing every "." in the metric name with a slash "/" and uses +# that for the file system hierarchy it generates. it is recommended to at least +# move the metrics out of the root namespace (that would be the empty prefix). +# If you only intend to run one community and only freifunk on your graphite node +# then the prefix can be set to anything (including the empty string) since you +# probably wont care much about "polluting" the namespace. +prefix = "freifunk" + +# respondd (yanic) +# forward collected respondd package to a address +# (e.g. to another respondd collector like a central yanic instance or hopglass) +[[database.connection.respondd]] +enable = false +# type of network to create a connection +type = "udp6" +# destination address to connect/send respondd package +address = "stats.bremen.freifunk.net:11001" + +# Logging +[[database.connection.logging]] +enable = false +path = "/var/log/yanic.log"