docker监控2

一、数据接收器 cAdvisor

      cAdvisor 是google开发的容器监控工具,在host中运行cadvisor容器

  1.下载并启动cadisor

docker pull google/cadvisor  (下载软件)

docker run --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 \
google/cadvisor:latest

  2.监控容器

            点击docker containers链接

            显示容器列表

            点击某个容器,比如sysdig ,进入该容器的监控页面。

       以上就是cadvisor的主要功能,总结起来主要两点:

            1.展示host和容器两个层次的监控数据。

            2.展示历史变化数据。

     cadvisor的一个亮点就是他可以将监控的数据导出给第三方工具,由这些工具进一步加工处理。我们可以把cadvisor定位为一个监控数据收集器,手机和导出数据是他的强项,而非展示数据。

二、prometheus架构

     prometheus是一个非常优秀的监控工具。准确的来说,应该是监控方案。prometheus提供了监控数据搜集、存储 处理 可视化和告警一套完整的解决方案。

  1.prometheus  server

       prometheus server 负责从exporter拉取和存储监控数据,并提供一套灵活的查询语言(promql)供用户使用。

  2.exporter

     exporter负责收集目标对象的性能数据,并通过http接口供prometheus server获取。

  3.可视化组件

       监控数据的可视化展现对监控方案至关重要。以前prometheus自己开发了一套工具,不过后来费弃了,因为开源社区出现了更为优秀的产品grafana。 grafana能够与prometheus无缝集成,提供完美的数据展示能力。

 4.altertmanager

      用户可以定义基于监控数据的告警规则,规则会处罚告警。一旦alermanager收到告警,会通过预定义的方案发出告警通知,支持的方式包括email pagerduty webhook等。

 三、prometheus部署

        环境说明:

服务器ip
prometheus  server192.174.1.40
监控端192.174.1.5

      1.运行node-exporter

docker search node-exporter
docker pull  node-exporter  (两台都需要下载)

(两台都运行)
docker run -d -p 9100:9100 \
-v "/proc:/host/proc" \
-v "/sys:/host/sys" \
-v "/:/rootfs" \
--net=host \
prom/node-exporter \
--path.procfs /host/proc \
--path.sysfs /host/sys \
--collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/devicemapper|rootfs/var/lib/docker/aufs)($$|/)"

由于用到主机 所以会有一个警告,所以需要:

firewall-cmd  --add-port=9100/tcp    --permanent

 

   2.运行cadvisor(两台都需要安装)

docker run \
--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 \
google/cadvisor:latest


firew-cmd  --add-port=8080/tcp  --permanent

    

  这个查看到的是容器的信息

3.运行prometheus  server

docker search prometheus
docker pull prom/prometheus

docker  run -d -p 9090:9090 -v /root/prometheus.yml:/etc/prometheus/prometheus.yml --name promentheus --net=host prom/prometheus  (运行的前提是写好yml文件)

firewall-cmd  --add-port=9090/tcp  --permanent

由于使用了--net=host  这样prometheus  server 可以直接与exporter和grafana通信。prometheus.yml是prometheus  server 的配置文件

vi  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','localhost:8080','localhost:9100','192.174.1.5:8080','192.174.1.5:9100']

4.运行grafana

docker search  grafana
docker pull grafana/grafana

docker run -d -i -p 3000:3000 \ 
-e "GF_SERVER_rOOT_URL=http://grafana.server.name" \
-e "GF_SECURITY_ADMIN_PASSWORD=SECRET"  \
--net=host \
grafana/grafana

   使用了 --net=host 这样grafana可以直接与prometheus server 通信。 -e "GF_SERVER_rOOT_URL=http://grafana.server.name"指定了grafana admin用户密码secret。 grafana启动后,在浏览器中打开http://192.174.1.40:3000/

  登录后,grafana将引导我们配置data source。

结果:

  现在可以访问prometheus中存放的监控数据,但是如何展示:

         grafana是通过dashboard展示数据的,在dashboard中需要定义:

            1.展示prometheus的那些多为数据?需要给出具体的查询语言表达式。

            2.用什么形式展示,比如二维线性图,仪表盘,各种坐标的含义。

   可以借助开源社区,直接使用线程的dashboard 访问 https://grafana.com/dashboards?dataSource=prometheus&search=docker   将会看到许多监控docker的dashboard

        导入下载的json文件 

或者导入Docker and system monitoring 的j son文件

 五、各种docker监控方案总结

        1.部署容易度

                ps/top/stats/无疑石咀容易使用的,他们是docker自带的子命令,随时随地都可以用来快速了解容器状态。其余几种也都能以容器的方式运行。总的来说都不算复杂。相对而言,prometheus涉及的组件比较多,搭建整个方案需要运行的容器数量也要多鞋,部署和管理的难度稍大。

       2.数据详细度

               ps/top/stats/和cadvisor能够监控容器基本的资料使用情况,sysdig  weave scope 和prometheus则能提供更丰富的数据。

      3.多host监控

             weave scope和prometheus可以监控整个集群,而其余的工具只提供单个host的监控能力。

       4.告警功能

             只有prometheus具备源生的告警功能。

        5.监控非容器资源

             sysdig  weave scope  和 cadvisor可以监控到host操作系统的状态,prometheus则可以通过exporter支持应用级别的监控,比如监控和ceph 、haproxy等。

六、四个方面的比较结果:

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值