diff --git a/examples/grafana-monitoring/Grafana_Dashboard_Template.json b/examples/grafana-monitoring/Grafana_Dashboard_Template.json new file mode 120000 index 0000000..3e58f02 --- /dev/null +++ b/examples/grafana-monitoring/Grafana_Dashboard_Template.json @@ -0,0 +1 @@ +/var/run/vmblock-fuse/blockdir/VBfYaD/Grafana_Dashboard_Template.json \ No newline at end of file diff --git a/examples/grafana-monitoring/README.md b/examples/grafana-monitoring/README.md index 9be5d62..5b22d0b 100644 --- a/examples/grafana-monitoring/README.md +++ b/examples/grafana-monitoring/README.md @@ -2,3 +2,17 @@ - https://blog.lrvt.de/monitoring-dashboard-with-grafana-telegraf-influxdb-and-docker/ - https://blog.lrvt.de/log-visualization-with-grafana-loki-promtail/ + +# Notes + +Spawning up this docker stack will provide you with: + +- A containerized Grafana web instance runnning on the default port TCP/3000 +- A containerized Telegraf instances that fetches data points from your docker host server +- A containerized InfluxDB instance for storing Telegraf data, which can be defined in Grafana as datasource (just specify `http://influxdb:8086`). Default database is `telegraf`. Default username is `telegrafuser`. Default password is `MyStrongTelegrafPassword`. Defaults can be changed in `/volume-data/influxdb/init/create-database.iql`. +- A containerized Promtail instance that can fetch various log and send them into Loki (e.g. /var/log/auth.log or your Traefik reverse proxy logs) +- A containerized Loki instance for storing Promtail data, which can be defined in Grafana as datasource (just specify `http://loki:3100`). No authentication enabled per default. + +Finally, after configuring InfluxDB and Loki as datasources on Grafana, you can just import the provided `Grafana_Dashboard_Template.json` dashboard template YAML file in Grafana by browsing http://127.0.0.1:3000/dashboard/import. Your dashboard will look like the following: + + diff --git a/examples/grafana-monitoring/docker-compose.yml b/examples/grafana-monitoring/docker-compose.yml index 93a8686..7d0944d 100644 --- a/examples/grafana-monitoring/docker-compose.yml +++ b/examples/grafana-monitoring/docker-compose.yml @@ -7,14 +7,14 @@ services: hostname: loki container_name: loki volumes: - - /mnt/docker-volumes/loki:/etc/loki # see example-configs and place loki-config.yml + - ./volume-data/loki:/etc/loki # see example-configs and place loki-config.yml ports: - "127.0.0.1:3100:3100" restart: unless-stopped user: 1000:1000 command: -config.file=/etc/loki/loki-config.yml - networks: - - monitoring_default + #networks: + # - monitoring_default promtail: image: grafana/promtail:latest @@ -23,13 +23,13 @@ services: - loki hostname: promtail volumes: - - /var/log:/var/log - - /mnt/docker-volumes/promtail:/etc/promtail # see example-configs and place promtail-config.yml - #- /mnt/docker-volumes/traefik/logs:/var/log/traefik + - /var/log:/var/log:ro # let promtail access the docker host's log files + - ./volume-data/promtail:/etc/promtail # see example-configs and place promtail-config.yml + #- /mnt/docker-volumes/traefik/logs:/var/log/traefik # let promtail access your traefik reverse logs restart: unless-stopped command: -config.file=/etc/promtail/promtail-config.yml - networks: - - monitoring_default + #networks: + # - monitoring_default influxdb: image: influxdb:1.8.10 @@ -37,14 +37,14 @@ services: hostname: influxdb restart: unless-stopped volumes: - - /mnt/docker-volumes/influxdb/data:/var/lib/influxdb - - /mnt/docker-volumes/influxdb/influxdb.conf:/etc/influxdb/influxdb.conf:ro # see example-configs and place infuxdb.conf - - /mnt/docker-volumes/influxdb/init:/docker-entrypoint-initdb.d # see example-configs and place create-database.iql + - ./volume-data/influxdb/data:/var/lib/influxdb + - ./volume-data/influxdb/influxdb.conf:/etc/influxdb/influxdb.conf:ro # see example-configs and place infuxdb.conf + - ./volume-data/influxdb/init:/docker-entrypoint-initdb.d # see example-configs and place create-database.iql environment: - INFLUXDB_ADMIN_USER=admin - INFLUXDB_ADMIN_PASSWORD=SuperDuperAdminPW - networks: - - monitoring_default + #networks: + # - monitoring_default telegraf: image: telegraf:latest @@ -58,7 +58,7 @@ services: depends_on: - influxdb volumes: - - /mnt/docker-volumes/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro # see example-configs and place telegraf.conf + - ./volume-data/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro # see example-configs and place telegraf.conf - /:/hostfs:ro - /etc:/hostfs/etc:ro - /proc:/hostfs/proc:ro @@ -70,8 +70,8 @@ services: - HOST_PROC=/hostfs/proc - HOST_SYS=/hostfs/sys - HOST_MOUNT_PREFIX=/hostfs - networks: - - monitoring_default + #networks: + # - monitoring_default grafana: container_name: grafana @@ -86,11 +86,11 @@ services: #environment: # - GF_SERVER_ROOT_URL=https://grafana.example.com # optional volumes: - - /mnt/docker-volumes/grafana:/var/lib/grafana + - ./volume-data/grafana:/var/lib/grafana ports: - 3000:3000 - networks: - - monitoring_default + #networks: + # - monitoring_default #labels: # - traefik.enable=true # - traefik.http.routers.grafana.rule=Host(`grafana.example.com`) @@ -99,6 +99,6 @@ services: # # Part for local lan services only # - traefik.http.routers.grafana.middlewares=local-ipwhitelist@file -networks: - monitoring_default: - external: true +#networks: +# monitoring_default: +# external: true diff --git a/examples/grafana-monitoring/example-configs/influxdb.conf b/examples/grafana-monitoring/volume-data/influxdb/influxdb.conf similarity index 100% rename from examples/grafana-monitoring/example-configs/influxdb.conf rename to examples/grafana-monitoring/volume-data/influxdb/influxdb.conf diff --git a/examples/grafana-monitoring/example-configs/create-database.iql b/examples/grafana-monitoring/volume-data/influxdb/init/create-database.iql similarity index 100% rename from examples/grafana-monitoring/example-configs/create-database.iql rename to examples/grafana-monitoring/volume-data/influxdb/init/create-database.iql diff --git a/examples/grafana-monitoring/example-configs/loki-config.yml b/examples/grafana-monitoring/volume-data/loki/loki-config.yml similarity index 100% rename from examples/grafana-monitoring/example-configs/loki-config.yml rename to examples/grafana-monitoring/volume-data/loki/loki-config.yml diff --git a/examples/grafana-monitoring/example-configs/promtail-config.yml b/examples/grafana-monitoring/volume-data/promtail/promtail-config.yml similarity index 100% rename from examples/grafana-monitoring/example-configs/promtail-config.yml rename to examples/grafana-monitoring/volume-data/promtail/promtail-config.yml diff --git a/examples/grafana-monitoring/example-configs/telegraf.conf b/examples/grafana-monitoring/volume-data/telegraf/telegraf.conf similarity index 100% rename from examples/grafana-monitoring/example-configs/telegraf.conf rename to examples/grafana-monitoring/volume-data/telegraf/telegraf.conf