From 30ebabc2ecbec76fda3ce9a3f09e82b82c851abb Mon Sep 17 00:00:00 2001 From: Florian Zirker Date: Sun, 28 Mar 2021 15:47:32 +0200 Subject: [PATCH] Monitoring for jitsi meet - Therefore split telegraf into two instances one for host and docker and other for network queries (network monitoring) --- monitoring/docker-compose.yaml | 26 ++++- .../{telegraf.conf => telegraf_host.conf} | 1 + monitoring/telegraf_net.conf | 106 ++++++++++++++++++ 3 files changed, 128 insertions(+), 5 deletions(-) rename monitoring/{telegraf.conf => telegraf_host.conf} (99%) create mode 100644 monitoring/telegraf_net.conf diff --git a/monitoring/docker-compose.yaml b/monitoring/docker-compose.yaml index d320ff3..98d3662 100644 --- a/monitoring/docker-compose.yaml +++ b/monitoring/docker-compose.yaml @@ -6,7 +6,7 @@ services: restart: unless-stopped networks: - web - - monitoring + - grafana labels: - "traefik.enable=true" - "traefik.http.routers.grafana.rule=Host(`monitoring.${DOMAIN}`)" @@ -41,7 +41,7 @@ services: volumes: - ${VOLUMES_PATH}/grafanadb:/var/lib/postgresql/data networks: - - monitoring + - grafana restart: unless-stopped environment: - POSTGRES_DB=grafana @@ -56,7 +56,6 @@ services: restart: unless-stopped networks: - web - - monitoring environment: - INFLUXDB_MONITOR_STORE_ENABLED=false volumes: @@ -78,7 +77,7 @@ services: ################################################################## # here starts data collection - telegraf: + telegraf_host: image: telegraf:1.18 restart: unless-stopped environment: @@ -91,7 +90,7 @@ services: env_file: - ./.env # set environments into container volumes: - - ./telegraf.conf:/etc/telegraf/telegraf.conf:ro + - ./telegraf_host.conf:/etc/telegraf/telegraf.conf:ro - /var/run/docker.sock:/var/run/docker.sock:ro - /var/run/utmp:/var/run/utmp:ro - /:/hostfs:ro @@ -101,7 +100,24 @@ services: depends_on: - influxdb + telegraf_net: + image: telegraf:1.18 + restart: unless-stopped + env_file: + - ./.env # set environments into container + volumes: + - ./telegraf_net.conf:/etc/telegraf/telegraf.conf:ro + - /var/run/docker.sock:/var/run/docker.sock:ro + networks: + - monitoring + labels: + - "docker.group=monitoring" + depends_on: + - influxdb + networks: + grafana: monitoring: + external: true web: external: true diff --git a/monitoring/telegraf.conf b/monitoring/telegraf_host.conf similarity index 99% rename from monitoring/telegraf.conf rename to monitoring/telegraf_host.conf index ec5c6d4..43e1e93 100644 --- a/monitoring/telegraf.conf +++ b/monitoring/telegraf_host.conf @@ -19,6 +19,7 @@ [global_tags] # datacenter dc="florianzirker.de" + source="telegraf_host" # Configuration for telegraf agent [agent] diff --git a/monitoring/telegraf_net.conf b/monitoring/telegraf_net.conf new file mode 100644 index 0000000..3e068cd --- /dev/null +++ b/monitoring/telegraf_net.conf @@ -0,0 +1,106 @@ +# Telegraf Configuration +# +# Telegraf is entirely plugin driven. All metrics are gathered from the +# declared inputs, and sent to the declared outputs. +# +# Plugins must be declared in here to be active. +# To deactivate a plugin, comment out the name and any variables. +# +# Use 'telegraf -config telegraf.conf -test' to see what metrics a config +# file would generate. +# +# Environment variables can be used anywhere in this config file, simply surround +# them with ${}. For strings the variable must be within quotes (ie, "${STR_VAR}"), +# for numbers and booleans they should be plain (ie, ${INT_VAR}, ${BOOL_VAR}) + +# Config Sample under https://github.com/influxdata/telegraf/blob/master/etc/telegraf.conf + +# Global tags can be specified here in key="value" format. +[global_tags] + # datacenter + dc="florianzirker.de" + source="telegraf_web" + +# Configuration for telegraf agent +[agent] + ## Default data collection interval for all inputs + interval = "10s" + ## Rounds collection interval to 'interval' + ## ie, if interval="10s" then always collect on :00, :10, :20, etc. + round_interval = true + + ## Telegraf will send metrics to outputs in batches of at most + ## metric_batch_size metrics. + ## This controls the size of writes that Telegraf sends to output plugins. + metric_batch_size = 1000 + + ## Maximum number of unwritten metrics per output. Increasing this value + ## allows for longer periods of output downtime without dropping metrics at the + ## cost of higher maximum memory usage. + metric_buffer_limit = 10000 + + ## Collection jitter is used to jitter the collection by a random amount. + ## Each plugin will sleep for a random time within jitter before collecting. + ## This can be used to avoid many plugins querying things like sysfs at the + ## same time, which can have a measurable effect on the system. + collection_jitter = "0s" + + ## Default flushing interval for all outputs. Maximum flush_interval will be + ## flush_interval + flush_jitter + flush_interval = "10s" + ## Jitter the flush interval by a random amount. This is primarily to avoid + ## large write spikes for users running a large number of telegraf instances. + ## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s + flush_jitter = "0s" + + ## By default or when set to "0s", precision will be set to the same + ## timestamp order as the collection interval, with the maximum being 1s. + ## ie, when interval = "10s", precision will be "1s" + ## when interval = "250ms", precision will be "1ms" + ## Precision will NOT be used for service inputs. It is up to each individual + ## service input to set the timestamp at the appropriate precision. + ## Valid time units are "ns", "us" (or "µs"), "ms", "s". + precision = "" + + ## Override default hostname, if empty use os.Hostname() + hostname = "wong" + ## If set to true, do no set the "host" tag in the telegraf agent. + omit_hostname = false + + +############################################################################### +# OUTPUT PLUGINS # +############################################################################### + +# 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"] + + ## HTTP Basic Auth + username = "${INFLUXDB_HTTP_BASIC_AUTH_USER}" + password = "${INFLUXDB_HTTP_BASIC_AUTH_PASSWORD}" + urls = ["https://influxdb.florianzirker.de"] # required + + +############################################################################### +# INPUT PLUGINS # +############################################################################### + + +[[inputs.http]] + name_override = "jitsi_stats" + urls = [ + "http://jvb:8080/colibri/stats" + ] + + data_format = "json" + + + +