我在单个节点上尝试将cAdvisor和Prometheus协同工作
最近我在寻找有关Docker监控等方面的信息,看到了cAdvisor(1)。
似乎可以将InfluxDB与Grafana连接起来,以实现可视化。
我在想要使用InfluxDB,但最近我想要熟悉一下Prometheus,所以我查看了一下它们之间是否可以进行集成。
通过Google搜索,我发现已经有人实现了这个功能。
- https://www.ctl.io/developers/blog/post/monitoring-docker-services-with-prometheus/
我打算真诚地去抄写经文。
进行顺序
1. 启动 cAdvisor 容器
sudo docker run -d \
-v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker/:/var/lib/docker:ro \
-p 8080:8080 --privileged --name=cadvisor_with_influxdb \
google/cadvisor:latest
只需要一种选项的话,可以这样翻译:
2. 准备prometheus.yml。
Prometheus设置了用于收集指标的端点。由于在AWS环境中使用,因此指定了VPC的私有IP地址以及第一步中指定的cAdvisor的8080端口。
然后,似乎会将从[私有IP:8080/metrics]收集的信息存储和可视化。
global:
scrape_interval: 15s # By default, scrape targets every 15 seconds.
evaluation_interval: 15s # By default, scrape targets every 15 seconds.
# scrape_timeout is set to the global default (10s).
# Attach these extra labels to all time-series collected by this Prometheus instance.
#labels:
#monitor: 'panamax-monitor'
rule_files:
- '/etc/prometheus/alert.rules'
# A scrape configuration containing exactly one endpoint to scrape:
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
# Panamax
- job_name: 'panamax'
scrape_interval: 5s
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
scrape_timeout: 3s
target_groups:
- targets: ['プライベートIP:8080']
labels:
group: 'development'
3. 添加 alert.rule
这里还没有深入研究。我只是简单地复制粘贴了下面的内容。
ALERT pmx_down
IF up == 0
FOR 5m
4. 启动 Prometheus 服务器
以以下方式启动。
在alertmanager.url中指定了公共IP。如果指定[0.0.0.0]或[localhost],会产生错误提示。真是相当聪明呢。。
docker run -i -p 9090:9090 \
-v $PWD/prometheus.yml:/etc/prometheus/prometheus.yml \
-v $PWD/alert.rules:/etc/prometheus/alert.rules \
prom/prometheus \
-config.file=/etc/prometheus/prometheus.yml \
-alertmanager.url=http://${AWSのパブリックIP}:9093
我看了UI界面。
通过引用在第四点中指定的用户界面,可以查看收集到的度量结果如下。
参考(或者说需要TODO)
-
- cAdvisorじゃできないこと(マルチホストの収集と可視化)を実装
-
- prometheusのデータ層等の隔離
-
- alert設定の方法の確認。https://prometheus.io/docs/alerting/rules/
exporterという概念もあり、下記のようなコマンドが紹介されています。
docker run -d --name PROM_CON_EXP \
-p 9104:9104 \
-v /sys/fs/cgroup:/cgroup -v /var/run/docker.sock:/var/run/docker.sock \
prom/container-exporter
- https://prometheus.io/docs/instrumenting/exporters/
查看上述网站,似乎有许多与其他第三方集团兼容的选项。
如果能理解概念并且看起来可用,我也想坚决引入它们。
想要尝试使用InfluxDB。
- http://davidanguita.name/articles/simple-data-visualization-stack-with-docker-influxdb-and-grafana/
请提供更多上下文信息以便进行准确的翻译。
使用cAdvisor,InfluxDB和Grafana来监控Docker容器的资源。