Compare commits
6 Commits
da4a933be7
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4145c55522 | ||
|
|
38d69731fe | ||
|
|
f5dfdaba55 | ||
|
|
1ee44b7b80 | ||
|
|
1283ec2c84 | ||
|
|
295f213621 |
18
README.md
18
README.md
@@ -2,6 +2,18 @@
|
|||||||
|
|
||||||
Various tools to monitor Docker containers
|
Various tools to monitor Docker containers
|
||||||
|
|
||||||
|
| Service | Name | Image |
|
||||||
|
|-----------------|-----------------|-------------------------|
|
||||||
|
| portainer-agent | portainer_agent | [portainer/agent] |
|
||||||
|
| telegraf-docker | telegraf-docker | [telegraf] |
|
||||||
|
| promtail | promtail | [grafana/promtail] |
|
||||||
|
| watchtower | watchtower | [containrrr/watchtower] |
|
||||||
|
|
||||||
|
[portainer/agent]: https://hub.docker.com/r/portainer/agent
|
||||||
|
[telegraf]: https://hub.docker.com/_/telegraf
|
||||||
|
[grafana/promtail]: https://hub.docker.com/r/grafana/promtail
|
||||||
|
[containrrr/watchtower]: https://hub.docker.com/r/containrrr/watchtower
|
||||||
|
|
||||||
## Services
|
## Services
|
||||||
|
|
||||||
### [Telegraf](https://www.influxdata.com/time-series-platform/telegraf/) - [Docker plugin](https://github.com/influxdata/telegraf/blob/master/plugins/inputs/docker/README.md)
|
### [Telegraf](https://www.influxdata.com/time-series-platform/telegraf/) - [Docker plugin](https://github.com/influxdata/telegraf/blob/master/plugins/inputs/docker/README.md)
|
||||||
@@ -14,12 +26,14 @@ Various tools to monitor Docker containers
|
|||||||
|
|
||||||
#### Pipline Stages
|
#### Pipline Stages
|
||||||
|
|
||||||
- appdaemon
|
|
||||||
- labels `date`. `time`, `level`, `app`, and `msg`
|
|
||||||
- zigbee2mqtt
|
- zigbee2mqtt
|
||||||
- labels `MQTT publish` - `device` and `payload`
|
- labels `MQTT publish` - `device` and `payload`
|
||||||
- categorizes `occupancy` or `contact`
|
- categorizes `occupancy` or `contact`
|
||||||
|
|
||||||
|
### [Watchtower](https://containrrr.dev/watchtower/)
|
||||||
|
|
||||||
|
> With watchtower you can update the running version of your containerized app simply by pushing a new image to the Docker Hub or your own image registry. Watchtower will pull down your new image, gracefully shut down your existing container and restart it with the same options that were used when it was deployed initially.
|
||||||
|
|
||||||
## Environment Variables
|
## Environment Variables
|
||||||
|
|
||||||
| Environment Variable | Description |
|
| Environment Variable | Description |
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ services:
|
|||||||
telegraf-docker:
|
telegraf-docker:
|
||||||
image: telegraf
|
image: telegraf
|
||||||
container_name: telegraf-docker
|
container_name: telegraf-docker
|
||||||
restart: unless-stopped
|
restart: always
|
||||||
uts: host
|
uts: host
|
||||||
user: telegraf:${DOCKER_GUID}
|
user: telegraf:${DOCKER_GUID}
|
||||||
env_file:
|
env_file:
|
||||||
@@ -21,25 +21,10 @@ services:
|
|||||||
- ./telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro
|
- ./telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
|
||||||
promtail:
|
|
||||||
image: grafana/promtail
|
|
||||||
container_name: promtail
|
|
||||||
restart: unless-stopped
|
|
||||||
uts: host
|
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
volumes:
|
|
||||||
- ./promtail:/etc/promtail
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- /var/log:/var/log:ro
|
|
||||||
command:
|
|
||||||
- "-config.file=/etc/promtail/promtail-config.yml"
|
|
||||||
- "-config.expand-env=true"
|
|
||||||
|
|
||||||
watchtower:
|
watchtower:
|
||||||
image: containrrr/watchtower
|
image: containrrr/watchtower
|
||||||
container_name: watchtower
|
container_name: watchtower
|
||||||
restart: unless-stopped
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
|||||||
@@ -1,71 +0,0 @@
|
|||||||
server:
|
|
||||||
http_listen_port: 9080
|
|
||||||
grpc_listen_port: 0
|
|
||||||
|
|
||||||
positions:
|
|
||||||
filename: /tmp/positions.yaml
|
|
||||||
|
|
||||||
clients:
|
|
||||||
- url: http://${LOKI_HOST:-loki}:3100/loki/api/v1/push
|
|
||||||
|
|
||||||
scrape_configs:
|
|
||||||
- job_name: flog_scrape
|
|
||||||
docker_sd_configs:
|
|
||||||
- host: unix:///var/run/docker.sock
|
|
||||||
refresh_interval: 5s
|
|
||||||
relabel_configs:
|
|
||||||
- source_labels: ['__meta_docker_container_name']
|
|
||||||
regex: '/(.*)'
|
|
||||||
target_label: 'container'
|
|
||||||
- source_labels: ['__meta_docker_container_label_com_docker_compose_oneoff']
|
|
||||||
target_label: oneoff
|
|
||||||
- source_labels: ['__meta_docker_container_label_com_docker_compose_project_config_files']
|
|
||||||
target_label: compose_file
|
|
||||||
- source_labels: ['__meta_docker_container_label_com_docker_compose_project']
|
|
||||||
target_label: project_name
|
|
||||||
- source_labels: ['__meta_docker_container_label_com_docker_compose_service']
|
|
||||||
target_label: service
|
|
||||||
- target_label: 'host'
|
|
||||||
replacement: '${HOSTNAME}'
|
|
||||||
pipeline_stages:
|
|
||||||
# - match:
|
|
||||||
# selector: '{container="appdaemon"}'
|
|
||||||
# stages:
|
|
||||||
# - regex:
|
|
||||||
# expression: "(?P<date>\\\\d{4}-\\\\d{2}-\\\\d{2}) (?P<time>\\\\d{2}:\\\\d{2}:\\\\d{2} [AP)]M) (?P<level>\\\\w+) (?P<app>\\\\w+): (?P<msg>.*?)$"
|
|
||||||
# - labels:
|
|
||||||
# level:
|
|
||||||
# app:
|
|
||||||
# msg:
|
|
||||||
- match:
|
|
||||||
selector: '{container="zigbee2mqtt"} |= "MQTT publish"'
|
|
||||||
stages:
|
|
||||||
- regex:
|
|
||||||
expression: "topic '(?P<topic>zigbee2mqtt\/(?P<device>[^\/]+).*?)', payload '(?P<payload>.*?)'$"
|
|
||||||
- labels:
|
|
||||||
topic:
|
|
||||||
device:
|
|
||||||
payload:
|
|
||||||
- match:
|
|
||||||
selector: '{topic=~".*action$"}'
|
|
||||||
stages:
|
|
||||||
- labels:
|
|
||||||
action: "payload"
|
|
||||||
- match:
|
|
||||||
selector: '{container="zigbee2mqtt"} |= "occupancy"'
|
|
||||||
stages:
|
|
||||||
- json:
|
|
||||||
expressions:
|
|
||||||
occupancy: occupancy
|
|
||||||
source: payload
|
|
||||||
- labels:
|
|
||||||
occupancy:
|
|
||||||
- match:
|
|
||||||
selector: '{container="zigbee2mqtt"} |= "contact"'
|
|
||||||
stages:
|
|
||||||
- json:
|
|
||||||
expressions:
|
|
||||||
contact: contact
|
|
||||||
source: payload
|
|
||||||
- labels:
|
|
||||||
contact:
|
|
||||||
@@ -80,7 +80,9 @@
|
|||||||
## Multiple URLs can be specified for a single cluster, only ONE of the
|
## Multiple URLs can be specified for a single cluster, only ONE of the
|
||||||
## urls will be written to each interval.
|
## urls will be written to each interval.
|
||||||
## ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"]
|
## ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"]
|
||||||
urls = ["http://${INFLUX_HOST:-influxdb}:8086"]
|
urls = ["https://influxdb.john-stream.com"]
|
||||||
|
tls_enable = true
|
||||||
|
tls_server_name = "influxdb.john-stream.com"
|
||||||
|
|
||||||
## Token for authentication.
|
## Token for authentication.
|
||||||
token = "$INFLUX_WRITE_TOKEN"
|
token = "$INFLUX_WRITE_TOKEN"
|
||||||
@@ -103,7 +105,6 @@
|
|||||||
|
|
||||||
## Additional HTTP headers
|
## Additional HTTP headers
|
||||||
# http_headers = {"X-Special-Header" = "Special-Value"}
|
# http_headers = {"X-Special-Header" = "Special-Value"}
|
||||||
|
|
||||||
## HTTP Proxy override, if unset values the standard proxy environment
|
## HTTP Proxy override, if unset values the standard proxy environment
|
||||||
## variables are consulted to determine which proxy, if any, should be used.
|
## variables are consulted to determine which proxy, if any, should be used.
|
||||||
# http_proxy = "http://corporate.proxy:3128"
|
# http_proxy = "http://corporate.proxy:3128"
|
||||||
@@ -136,11 +137,6 @@
|
|||||||
## configuring in multiple Swarm managers results in duplication of metrics.
|
## configuring in multiple Swarm managers results in duplication of metrics.
|
||||||
gather_services = false
|
gather_services = false
|
||||||
|
|
||||||
## Only collect metrics for these containers. Values will be appended to
|
|
||||||
## container_name_include.
|
|
||||||
## Deprecated (1.4.0), use container_name_include
|
|
||||||
# container_names = []
|
|
||||||
|
|
||||||
## Set the source tag for the metrics to the container ID hostname, eg first 12 chars
|
## Set the source tag for the metrics to the container ID hostname, eg first 12 chars
|
||||||
source_tag = false
|
source_tag = false
|
||||||
|
|
||||||
@@ -155,27 +151,19 @@
|
|||||||
# container_state_include = []
|
# container_state_include = []
|
||||||
# container_state_exclude = []
|
# container_state_exclude = []
|
||||||
|
|
||||||
|
## Objects to include for disk usage query
|
||||||
|
## Allowed values are "container", "image", "volume"
|
||||||
|
## When empty disk usage is excluded
|
||||||
|
storage_objects = ["container"]
|
||||||
|
|
||||||
## Timeout for docker list, info, and stats commands
|
## Timeout for docker list, info, and stats commands
|
||||||
timeout = "5s"
|
timeout = "5s"
|
||||||
|
|
||||||
## Whether to report for each container per-device blkio (8:0, 8:1...),
|
|
||||||
## network (eth0, eth1, ...) and cpu (cpu0, cpu1, ...) stats or not.
|
|
||||||
## Usage of this setting is discouraged since it will be deprecated in favor of 'perdevice_include'.
|
|
||||||
## Default value is 'true' for backwards compatibility, please set it to 'false' so that 'perdevice_include' setting
|
|
||||||
## is honored.
|
|
||||||
# perdevice = true
|
|
||||||
|
|
||||||
## Specifies for which classes a per-device metric should be issued
|
## Specifies for which classes a per-device metric should be issued
|
||||||
## Possible values are 'cpu' (cpu0, cpu1, ...), 'blkio' (8:0, 8:1, ...) and 'network' (eth0, eth1, ...)
|
## Possible values are 'cpu' (cpu0, cpu1, ...), 'blkio' (8:0, 8:1, ...) and 'network' (eth0, eth1, ...)
|
||||||
## Please note that this setting has no effect if 'perdevice' is set to 'true'
|
## Please note that this setting has no effect if 'perdevice' is set to 'true'
|
||||||
perdevice_include = ["cpu", "blkio", "network"]
|
perdevice_include = ["cpu", "blkio", "network"]
|
||||||
|
|
||||||
## Whether to report for each container total blkio and network stats or not.
|
|
||||||
## Usage of this setting is discouraged since it will be deprecated in favor of 'total_include'.
|
|
||||||
## Default value is 'false' for backwards compatibility, please set it to 'true' so that 'total_include' setting
|
|
||||||
## is honored.
|
|
||||||
total = false
|
|
||||||
|
|
||||||
## Specifies for which classes a total metric should be issued. Total is an aggregated of the 'perdevice' values.
|
## Specifies for which classes a total metric should be issued. Total is an aggregated of the 'perdevice' values.
|
||||||
## Possible values are 'cpu', 'blkio' and 'network'
|
## Possible values are 'cpu', 'blkio' and 'network'
|
||||||
## Total 'cpu' is reported directly by Docker daemon, and 'network' and 'blkio' totals are aggregated by this plugin.
|
## Total 'cpu' is reported directly by Docker daemon, and 'network' and 'blkio' totals are aggregated by this plugin.
|
||||||
@@ -188,7 +176,7 @@
|
|||||||
docker_label_exclude = []
|
docker_label_exclude = []
|
||||||
|
|
||||||
## Which environment variables should we use as a tag
|
## Which environment variables should we use as a tag
|
||||||
tag_env = ["JAVA_HOME", "HEAP_SIZE"]
|
tag_env = []
|
||||||
|
|
||||||
## Optional TLS Config
|
## Optional TLS Config
|
||||||
# tls_ca = "/etc/telegraf/ca.pem"
|
# tls_ca = "/etc/telegraf/ca.pem"
|
||||||
@@ -196,3 +184,6 @@
|
|||||||
# tls_key = "/etc/telegraf/key.pem"
|
# tls_key = "/etc/telegraf/key.pem"
|
||||||
## Use TLS but skip chain & host verification
|
## Use TLS but skip chain & host verification
|
||||||
# insecure_skip_verify = false
|
# insecure_skip_verify = false
|
||||||
|
|
||||||
|
# Needed to silence a warning, but it's irrelevant for me
|
||||||
|
# skip_processors_after_aggregators = true
|
||||||
|
|||||||
Reference in New Issue
Block a user