Prometheus监控docker容器

只愿长相守 提交于 2019-12-10 20:27:19

###中文文档

####需了解cadvisor

###首先在监控服务器安装:

####1.安装Node Exporter 来收集硬件信息
所有节点运行以下命令安装Node Exporter 容器

docker run -d -p 9100:9100 \
-v "/proc:/host/proc" \
-v "/sys:/host/sys" \
-v "/:/rootfs" \
-v "/etc/localtime:/etc/localtime" \
--net=host \
prom/node-exporter \
--path.procfs /host/proc \
--path.sysfs /host/sys \
--collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

注意:
这里我们使用了 --net=host,这样 Prometheus Server 可以直接与 Node Exporter 通信

####2.安装cAdvisor 来收集容器信息 所有节点运行以下命令来安装cAdvisor

docker run -d \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
--net=host \
-v "/etc/localtime:/etc/localtime" \
google/cadvisor:latest

注意:
这里我们使用了 --net=host,这样 Prometheus Server 可以直接与 cAdvisor 通信。

####3.安装普罗米修斯服务
首先在本地创建prometheus.yml这是普罗米修斯的配置文件
将下方内容写入到文件中
将监听的地址改为自己本机地址

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    #监听的地址
    - targets: ['localhost:9090','10.0.122.39:8080','10.0.122.39:9090']

####启动容器

docker run -d -p 9090:9090 \
-v /root/prometheus.yml:/etc/prometheus/prometheus.yml \
-v "/etc/localtime:/etc/localtime" \
--name prometheus \
--net=host \
prom/prometheus

注意:
这里我们使用了 --net=host,这样 Prometheus Server 可以直接与 Exporter 和 Grafana 通信。

当Prometheus容器启动成功后访问
10.0.122.39:9090

####4.在DockerMachine上运行Grafana

docker run -d -i -p 3000:3000 \
-v "/etc/localtime:/etc/localtime" \
-e "GF_SERVER_ROOT_URL=http://grafana.server.name" \
-e "GF_SECURITY_ADMIN_PASSWORD=admin8888" \
--net=host \
grafana/grafana

Grafana启动后,在浏览器中打开http://10.0.122.39:3000 登录界面,登录用admin 密码为刚创建Grafana时的admin8888

####添加普罗米修斯服务器,重点看框部分,其它默认即可

如果一切顺利该DataSource可以正常工作了,也就是说Grafana可以正常跟Prometheus正常通信了,接下来通过dashboard展示数据。

7.自己手工创建dashboard有点困难,可以借助开元的力量访问 监控模板地址 将会看到很多用于监控 Docker 的 Dashboard。监控模板地址(多种监控模板根据自己需求下载不同的模板)

有些dashboard可以下载后直接导入,而有些需要修改后再导入,需要看dashboard的overview

最后效果

最后说明:
监控服务器 需要安装4个服务
Prometheus Server(普罗米修斯监控主服务器 )
Node Exporter (收集Host硬件和操作系统信息)
cAdvisor (负责收集Host上运行的容器信息)
Grafana (展示普罗米修斯监控界面)

被监控的只有安装2个
Node Exporter (收集Host硬件和操作系统信息)
cAdvisor (负责收集Host上运行的容器信息)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!