linux容器运行状态,linuxea:prometheus通过cAdvisor监控容器状态

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

cAdvisor原生支持Docker容器,并且应该支持开箱即用的任何其他容器类型,并且力求更多的支持,如果有使用问题可以在官网提出。cAdvisor的容器抽象基于lmctfy,因此容器本质上是分层嵌套的。

5c1967c5325842cec010c6abd3e07965.gif

在使用cadvisor开始之前,你可能需要安装prometheus和grafana并且配置好,以便于使用,在后面将会使用很多,这很重要,安装和配置这些以便于更好的分析正在运行的容器的资源使用情况和性能特征。

I. 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

5c1967c5325842cec010c6abd3e07965.gif

而后在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状态

5c1967c5325842cec010c6abd3e07965.gif

II. 监控指标

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

5c1967c5325842cec010c6abd3e07965.gif

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

关于container_memory_usage_bytes信息,{}中的数据和配置信息中的group组对应,name为容器名称

度量的条件就是组和名称,得到下图

container_memory_usage_bytes{group="gfc_node",name="nginx_server"}

5c1967c5325842cec010c6abd3e07965.gif

但是我还想知道他5分钟内的信息,这样就需要时间窗口的rate()功能

rate(container_memory_usage_bytes{group="gfc_node",name="nginx_server"}[5m])

5c1967c5325842cec010c6abd3e07965.gif

但是这样还是不好,他的信息太长 ,我只要保留名称和ip。那就需要聚合的功能,如:sum() 函数,加上rate()时间窗口,sum()函数将rate()包含在里面,而后使用by保留值

sum(rate(container_memory_usage_bytes{group="gfc_node",name="nginx_server"}[5m])) by (name,instance)

5c1967c5325842cec010c6abd3e07965.gif

III. grafana

这里有grafana的展示,在之前grafana安装过了,grafana与prometheus的 配置非常简单,我们直接导入模板即可,模板下载

5c1967c5325842cec010c6abd3e07965.gif

更多可以参考参考github的cadvisonr和cAdvisor运行时选项,指标信息。prometheus参考

除非另有说明,否则本站上的内容根据以下许可进行许可: CC署名-非商业性使用-相同方式共享4.0国际许可协议4.0进行许可

本文作者:www.linuxea.com for Mark

文章链接:http://www.linuxea.com/1922.html (转载请注明本文出处和本章链接)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值