Install and persist Grafana Zabbix plugin 6.5.0, provision the internal Zabbix datasource, and add a fleet dashboard modeled on client 02 Telemt panels. Add an active-agent Zabbix 7 template plus a 30-second sanitized collector for active IP count/list, connections, traffic, and uptime. Active checks avoid inbound polling of client-private Docker hosts. The exact Zabbix host names and required ZABBIX_API_TOKEN Portainer variable are documented. Compose validation passed on 10.0.0.6; the live plugin registered successfully under Grafana 13.1.0.
85 lines
3.0 KiB
YAML
85 lines
3.0 KiB
YAML
services:
|
|
loki:
|
|
# This pin and the TSDB v13 on-disk format were validated on Fedora 44 in
|
|
# the 02-tekhnohim logging stack. Do not replace it with :latest during
|
|
# the data migration.
|
|
image: grafana/loki:3.7.2
|
|
container_name: loki
|
|
command: -config.file=/etc/loki/config.yaml
|
|
restart: unless-stopped
|
|
volumes:
|
|
- /mnt/containers/logging/loki-config/config.yaml:/etc/loki/config.yaml:ro,Z
|
|
- /mnt/containers/logging/loki-data:/loki:Z
|
|
ports:
|
|
# Retained for the existing operator query path.
|
|
- "3100:3100/tcp"
|
|
networks:
|
|
- logging-nw
|
|
|
|
syslog-ng:
|
|
# DEPOT's RouterOS fleet includes senders that omit the PRI/header Alloy's
|
|
# strict parser requires. Keep the proven normalizer, pinned by digest,
|
|
# and relay canonical RFC5424 to Alloy.
|
|
image: balabit/syslog-ng@sha256:ce85e1af17daf888c72267b19f7f104bf329044257564b784ff8c00ce4fc01ef
|
|
container_name: syslog-ng
|
|
command: -edv
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- alloy
|
|
volumes:
|
|
- /mnt/containers/logging/syslog-ng-config/syslog-ng.conf:/etc/syslog-ng/syslog-ng.conf:ro,Z
|
|
ports:
|
|
# Existing fleet target: 185.108.4.158:514/udp.
|
|
- "514:514/udp"
|
|
# Preserve the old stack's TCP syslog endpoint.
|
|
- "601:601/tcp"
|
|
networks:
|
|
- logging-nw
|
|
|
|
alloy:
|
|
# Replaces Promtail. syslog-ng normalizes the mixed/raw fleet input into
|
|
# RFC5424 before sending it to Alloy on the private stack network.
|
|
image: grafana/alloy:v1.16.1
|
|
container_name: alloy
|
|
command:
|
|
- run
|
|
- --server.http.listen-addr=0.0.0.0:12345
|
|
- --storage.path=/var/lib/alloy/data
|
|
- /etc/alloy/config.alloy
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- loki
|
|
volumes:
|
|
- /mnt/containers/logging/alloy-config/config.alloy:/etc/alloy/config.alloy:ro,Z
|
|
- /mnt/containers/logging/alloy-data:/var/lib/alloy/data:Z
|
|
networks:
|
|
- logging-nw
|
|
|
|
grafana:
|
|
image: grafana/grafana:13.1.0
|
|
container_name: grafana
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- loki
|
|
environment:
|
|
GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_ADMIN_PASSWORD}
|
|
GF_USERS_ALLOW_SIGN_UP: "false"
|
|
# Install the same Zabbix datasource version used by client 02.
|
|
GF_PLUGINS_PREINSTALL_SYNC: alexanderzobnin-zabbix-app@6.5.0
|
|
# Used only by the provisioned Zabbix datasource; set as a Portainer
|
|
# secret/environment value and never commit the token.
|
|
ZABBIX_API_TOKEN: ${ZABBIX_API_TOKEN}
|
|
volumes:
|
|
- /mnt/containers/logging/grafana-data:/var/lib/grafana:Z
|
|
- /mnt/containers/logging/grafana-config/provisioning/datasources:/etc/grafana/provisioning/datasources:ro,Z
|
|
- /mnt/containers/logging/grafana-config/provisioning/dashboards:/etc/grafana/provisioning/dashboards:ro,Z
|
|
- /mnt/containers/logging/grafana-config/dashboards:/var/lib/grafana/dashboards:ro,Z
|
|
ports:
|
|
# Retained for the current LAN/operator access path.
|
|
- "3000:3000/tcp"
|
|
networks:
|
|
- logging-nw
|
|
|
|
networks:
|
|
logging-nw:
|