Telegraf
Telegraf este dezvoltat de InfluxData și este un server bazat pe pluginuri pentru colectarea și raportarea valorilor.
Telegraf are integrat, pentru a surprinde o varietate de mărimi, evenimente și jurnale direct din sistemele pe care rulează, trage valori din API-uri parte terță sau chiar ascultă mărimilor prin intermediul serviciilor de consum StatsD și Kafka.
De asemenea, are pluginuri de ieșire pentru a trimite valori la o mulțime de alte servicii și cozi de mesaje, inclusiv InfluxDB, Graphite, OpenTSDB, Datadog, Librato, Kafka, MQTT, NSQ și multe altele.
Instalare Telegraf - Debian 9
Pentru instalarea serviciului/serverului, rulăm:
apt install telegraf
Înainte de a edita un fișier de configurare existent este bine a se face bakcup la el:
cp /etc/telegraf/telegraf.conf /etc/telegraf/telegraf.conf.bak
Cu editorul preferat edităm fișierul de configurare:
nano -w /etc/telegraf/telegraf.conf
După care edităm fișierul prin eliminarea comentariilor și scrierea informațiilor necesare conectării și culegerii mărimilor de la serverul mosquitto, astfel:
...
# # Read metrics from MQTT topic(s)
[[inputs.mqtt_consumer]]
# ## MQTT broker URLs to be used. The format should be scheme://host:port,
# ## schema can be tcp, ssl, or ws.
servers = ["tcp://localhost:1883"]
#
# ## QoS policy for messages
# ## 0 = at most once
# ## 1 = at least once
# ## 2 = exactly once
# ##
# ## When using a QoS of 1 or 2, you should enable persistent_session to allow
# ## resuming unacknowledged messages.
qos = 0
#
# ## Connection timeout for initial connection in seconds
# connection_timeout = "30s"
#
# ## Maximum messages to read from the broker that have not been written by an
# ## output. For best throughput set based on the number of metrics within
# ## each message and the size of the output's metric_batch_size.
# ##
# ## For example, if each message from the queue contains 10 metrics and the
# ## output metric_batch_size is 1000, setting this to 100 will ensure that a
# ## full batch is collected and the write is triggered immediately without
# ## waiting until the next flush_interval.
# # max_undelivered_messages = 1000
#
# ## Topics to subscribe to
topics = [
"telegraf/host01/cpu",
"telegraf/+/mem",
"sensors/#",
]
#
# # if true, messages that can't be delivered while the subscriber is offline
# # will be delivered when it comes back (such as on service restart).
# # NOTE: if true, client_id MUST be set
# persistent_session = false
# # If empty, a random client ID will be generated.
client_id = "telegraf"
#
# ## username and password to connect MQTT server.
username = "telegraf"
password = "parola"
#
# ## Optional TLS Config
# # tls_ca = "/etc/telegraf/ca.pem"
# # tls_cert = "/etc/telegraf/cert.pem"
# # tls_key = "/etc/telegraf/key.pem"
# ## Use TLS but skip chain & host verification
# # insecure_skip_verify = false
#
# ## Data format to consume.
# ## Each data format has its own unique set of configuration options, read
# ## more about them here:
# ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md
data_format = "influx"
...
Va trebui ca userul telegraf să poată avea acces la serverul MQTT, pentru aceasta rulăm comanda:
mosquitto_passwd /etc/mosquitto/passwd telegraf
după care vom introduce parola de mai sus, și pentru ca schimbările să aibă loc vom reporni serviciul/serverul mosquitto:
systemctl reload mosquitto
Vom continua cu editatrea fișierului de configurare:
nano -w /etc/telegraf/telegraf.conf
După care edităm fișierul prin eliminarea comentariilor și scrierea informațiilor necesare conectării la serverul influxdb, astfel:
...
# Configuration for sending metrics to InfluxDB
[[outputs.influxdb]]
## The full HTTP or UDP URL for your InfluxDB instance.
##
## Multiple URLs can be specified for a single cluster, only ONE of the
## urls will be written to each interval.
# urls = ["unix:///var/run/influxdb.sock"]
# urls = ["udp://127.0.0.1:8089"]
urls = ["http://127.0.0.1:8086"]
## The target database for metrics; will be created as needed.
database = "espduino"
## If true, no CREATE DATABASE queries will be sent. Set to true when using
## Telegraf with a user without permissions to create databases or when the
## database already exists.
# skip_database_creation = false
## Name of existing retention policy to write to. Empty string writes to
## the default retention policy. Only takes effect when using HTTP.
# retention_policy = ""
## Write consistency (clusters only), can be: "any", "one", "quorum", "all".
## Only takes effect when using HTTP.
write_consistency = "any"
## Timeout for HTTP messages.
timeout = "5s"
## HTTP Basic Auth
username = "telegraf"
password = "parola"
## HTTP User-Agent
# user_agent = "telegraf"
## UDP payload size is the maximum packet size to send.
# udp_payload = "512B"
## Optional TLS Config for use on HTTP connections.
# tls_ca = "/etc/telegraf/ca.pem"
# tls_cert = "/etc/telegraf/cert.pem"
# tls_key = "/etc/telegraf/key.pem"
## Use TLS but skip chain & host verification
# insecure_skip_verify = false
## HTTP Proxy override, if unset values the standard proxy environment
## variables are consulted to determine which proxy, if any, should be used.
# http_proxy = "http://corporate.proxy:3128"
## Additional HTTP headers
# http_headers = {"X-Special-Header" = "Special-Value"}
## HTTP Content-Encoding for write request body, can be set to "gzip" to
## compress body or "identity" to apply no encoding.
# content_encoding = "identity"
## When true, Telegraf will output unsigned integers as unsigned values,
## i.e.: "42u". You will need a version of InfluxDB supporting unsigned
## integer values. Enabling this option will result in field type errors if
## existing data has been written.
# influx_uint_support = false
...
La final repornim serverul/serviciul telegraf:
systemctl reload telegraf