4.6 KiB
Docker Based Latency Monitor
Docker container which tracks latency of one or many hosts and reports to InfluxDBv2.
Description
This Docker Container is able to track the latency of one or many targets and reports all data to a given InfluxDBv2.
It´s based on python3 an makes usage of following python libraries:
- pythonping
- influxdb_client
- threading
- sys
- os
- datetime
- configparser
- time
Configuration can be passed via ENV OR configuration file.
In case of using the ENV option you are just able to monitor ONE target for more targets please use the configuration file.
Also some influx connection options are just configurable via config file but normally they are not needed.
Requirements
- Docker
- Docker-Compose
- InfluxDB Version >= 2
- pythonping needs root privileges so same for the container
ENV Variables
| Name | Example | Usage | Option/Must |
|---|---|---|---|
| INFLUX_URL | http://10.0.0.1:8086 | InfluxDB Host | must |
| INFLUX_TOKEN | eWOcp-MCv2Y3IJPlER7wc...ICKirhw0lwEczRNnrIoTqZAg== | InfluxDB API Token | must |
| INFLUX_BUCKET | latency | InfluxDB Bucket | must |
| INFLUX_ORG | MyOrg | InfluxDB Organization | must |
| TARGET_HOST | 8.8.8.8 | Monitored Host (IP/FQDN) | must |
| TARGET_TIMER | 3 | ping frequency in sec. | option |
| TARGET_LOCATION | decript. location | option |
Config File
Instead of using the ENV variables you can use a config file.
Keep in mind it´s a OR decision not a AND
Rename the file to config.ini make your changes and add it as a volume mount to the container:
Docker-Compose Style
volumes:
- /YOUR_PATH/config.ini:/app/config.ini
Docker-CLI Style
docker latency-monitor -v /YOUR_PATH/config.ini:/app/config.ini
Compose Files
FULL-STACK
1st thing to do is creating the *docker-compose.yml from docker-compose-full_stack.yml:
cp docker-compose-full_stack.yml docker-compose.yml
Certificate
Traefik will act as a proxy and ensures the usage of TLS so it needs your certificate and key file.
within the docker-compose.yml you will find:
- ./traefik/mycert.crt:/certs/cert.crt:ro
- ./traefik/mycert.key:/certs/privkey.key:ro
so please place your certificate file as ./traefik/mycert.crt and the key file as ./traefik/mycert.key.
Thats it
Variables
You need to configure Variables in following files to make the compose work:
- file
- VARIABLE1
- VARIABLE2
- VARIABLE3
- docker-compose.yml (was docker-compose-full_stack.yml before)
- PLACE_YOUR_FQDN_HERE (3 times)
- .env (env needs to be renamed to .env)
- YOUR_PATH_TO_CONTAINER_STATIC_DATA
- YOUR_ADMIN_USER
- YOUR_ADMIN_PASSWORD
- YOUR_ORGANIZATION
- YOUR_BUCKET_NAME
- YOUR_ADMIN_TOKEN
- YOUR_MONITORED_TARGET
- YOUR_MONITORED_TARGET_TIMER
- YOUR_MONITORED_TARGET_LOCATION
- grafana/provisioning/datasources/grafana-datasource.yml
- YOUR_ADMIN_TOKEN
- YOUR_ORGANIZATION
- YOUR_BUCKET_NAME
File Permissions
Because we are configuring grafana for permanent data storing and grafana actually runs with UID + GID: 472:472 it´s necessary to change permisson of die permanent storage directory we have configured.
The directory build from the following config part of grafana within the docker-compose.yml:
${MyPath}/grafana/var_lib
MyPath was configured earlier in the .env file.
so let´s assume the following:
MyPath = /opt/docker/containers/
then you have to do the following
chown -R 472:472 /opt/docker/containers/grafana/var_lib
Lets go
docker-compose up -d
should do the job
STANDALONE
1st thing to do is creating the *docker-compose.yml from docker-compose-standalone.yml:
cp docker-compose-standalone.yml docker-compose.yml
Variables
Below paragraph:
####################################################
# LATENCY-MONITOR
####################################################
in the .env file (env needs to be renamed to .env) configure following variables:
- YOUR_ORGANIZATION
- YOUR_BUCKET_NAME
- YOUR_ADMIN_TOKEN
- YOUR_MONITORED_TARGET
- YOUR_MONITORED_TARGET_TIMER
- YOUR_MONITORED_TARGET_LOCATION
Lets go
docker-compose up -d latency-monitor
should do the job
Authors
Contributors names and contact info
Version History
- 0.1
- Initial Release
License
free to use