prometheus通过cAdvisor监控容器状态

2023年 7月 15日 79.1k 0

cAdvisor(Container Advisor)为容器用户提供了对其运行容器的资源使用和性能特征的理解。它是一个运行守护程序,用于收集,聚合,处理和导出有关正在运行的容器的信息。具体来说,对于每个容器,它保留资源隔离参数,历史资源使用,完整历史资源使用的直方图和网络统计。此数据按容器和机器范围导出。

cAdvisor原生支持Docker容器,并且应该支持开箱即用的任何其他容器类型,并且力求更多的支持,如果有使用问题可以在官网提出。cAdvisor的容器抽象基于lmctfy,因此容器本质上是分层嵌套的。20180814-1.png在使用cadvisor开始之前,你可能需要安装prometheus和grafana并且配置好,以便于使用,在后面将会使用很多,这很重要,安装和配置这些以便于更好的分析正在运行的容器的资源使用情况和性能特征。

cadvisor配置

[root@linuxea-vm-Node3 ~]# docker pull google/cadvisor:v0.30.0

start 指定IP和端口--listen_ip="0.0.0.0" --port=8888

docker run 
  --net=host 
  --privileged=true 
  --volume=/cgroup:/cgroup:ro 
  --volume=/:/rootfs:ro 
  --volume=/var/run:/var/run:rw 
  --volume=/sys:/sys:ro 
  --volume=/var/lib/docker/:/var/lib/docker:ro 
  --volume=/dev/disk/:/dev/disk:ro 
  --publish=8081:8081 
  --detach=true 
  --name=cadvisor 
  google/cadvisor:v0.30.0  --listen_ip="0.0.0.0" --port=8888

通过浏览器在本地打开,大概是这样的当然,你可能需要一条防火墙规则

 iptables -I INPUT 5 -p tcp --dport 8888 -j ACCEPT

prometheus-2.png而后在prometheus端添加到配置文件中(在最下方添加这样)其中job_name定义为gfc,labels的组gfc_node

  - job_name: 'gfc'
    static_configs:
    - targets: 
      - '10.10.197.3:8888'
      labels:
        group: 'gfc_node'

打开prometheus端的界面IP:PORT,在status的下拉菜单中点击Targets查看状态,大概如下,可以看到10.10.197.3已经是up状态prometheus-3.png

监控指标

当然,系统的核心是prometheus服务器,prometheus基于“拉”机制,可以从配置的目标中删除指标。但是,对于短期工作,它提供了一个用于抓取指标的中间推送网关。它还提供PromDash,一个用于收集数据的可视化仪表板,一个带有查询语言的Expression浏览器,用于简化数据过滤,以及一个AlertManager,用于根据基于警报规则引擎的触发警报发送通知。

20180814-2.png

在前面的prometheus中我们提到,prometheus可以和已有的任何指标进行组合,非常灵活,我简单的组合几个参数进行监控查看

关于container_memory_usage_bytes信息,{}中的数据和配置信息中的group组对应,name为容器名称度量的条件就是组和名称,得到下图

container_memory_usage_bytes{group="gfc_node",name="nginx_server"}20180814-3.png但是我还想知道他5分钟内的信息,这样就需要时间窗口的rate()功能 rate(container_memory_usage_bytes{group="gfc_node",name="nginx_server"}[5m])20180814-4.png但是这样还是不好,他的信息太长 ,我只要保留名称和ip。那就需要聚合的功能,如:sum() 函数,加上rate()时间窗口,sum()函数将rate()包含在里面,而后使用by保留值sum(rate(container_memory_usage_bytes{group="gfc_node",name="nginx_server"}[5m])) by (name,instance)20180814-5.png

grafana

这里有grafana的展示,在之前grafana安装过了,grafana与prometheus的 配置非常简单,我们直接导入模板即可,模板下载20180814-6.png更多可以参考参考github的cadvisonr和cAdvisor运行时选项,指标信息。prometheus参考

相关文章

对接alertmanager创建钉钉卡片(1)
手把手教你搭建OpenFalcon监控系统
无需任何魔法即可使用 Ansible 的神奇变量“hostvars”
openobseve HA本地单集群模式
基于k8s上loggie/vector/openobserve日志收集
openobseve单节点和查询语法

发布评论