Docker Swarm
LoggiFly does not monitor Swarm services directly, since the Swarm API is limited. Instead, it monitors the individual containers that belong to a configured Swarm service by recognizing the service name from the Docker Swarm labels.
This means that for LoggiFly to reliably monitor swarm services it has to be deployed as a global service on every node in the swarm cluster.
If you want to get context in your notifications about which node the container that has triggered a notification is running on, you can set the LOGGIFLY_MODE environment variable to swarm.
The config.yaml can be passed to each worker via Docker Configs (see example).
The configuration stays the same except that you set swarm_services instead of containers or use the SWARM_SERVICES environment variable instead of CONTAINERS.
If normal containers are set instead of or additionally to swarm_services LoggiFly will also look for these containers on every node.
Docker Compose
version: "3.8"
services:
loggifly:
image: ghcr.io/clemcer/loggifly:latest
deploy:
mode: global # runs on every node
restart_policy:
condition: any
delay: 5s
max_attempts: 5
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
TZ: Europe/Berlin
LOGGIFLY_MODE: swarm
# You can use environment variables instead of a config.yaml if you want
# SWARM_SERVICES: nginx,redis
# GLOBAL_KEYWORDS: keyword1,keyword2
# GLOBAL_KEYWORDS_WITH_ATTACHMENT: keyword3
# For more environment variables see the environment variables section in the docs
# Comment out the rest of this file if you are only using environment variables
configs:
- source: loggifly-config
target: /config/config.yaml
configs:
loggifly-config:
file: ./config.yaml # SET THE PATH TO YOUR CONFIG.YAML HEREConfiguring the config.yaml
In the config.yaml, you can configure Swarm services to be monitored in the same way as containers.
swarm_services:
nginx:
keywords:
- error
- regex: \timeout\b.*
redis:
- keyword: critical
attach_logfile: trueIf both nginx and redis are part of the same compose stack named my_service you can configure that service name to monitor both:
swarm_services:
my_service: # includes my_service_nginx and my_service_redis
keywords:
- error
- regex: \timeout\b.*The swarm_services configuration is identical to that of containers, so for all available configuration options, refer to the Containers section or the Settings Overview.