分享好友 最新动态首页 最新动态分类 切换频道
centos7下安装docker(17.4docker监控----prometheus)
2024-12-27 03:30

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

centos7下安装docker(17.4docker监控----prometheus)

Prometheus架构如盗图:

官网上的原始架构要复杂些。

Prometheus server

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

exporter:

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

 

可视化组件:

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

 

Alertmanager

用户可以定义基于数据监控的告警规则,规则会触发告警,会通过预定义的方式发出告警通知。支持的方式包括Email,pagerduty,webhook等

 

prometheus最大的亮点和先进性是他的多维数据模型

 

prometheus核心:多维数据模型

比如要监控容器webapp1的内存使用情况,最传统和典型的方法是定义一个指标container_memory_usage_bytes_webapp1来记录webapp1的内存使用数据,加入每一分钟取样一次,那么在数据库里就会有类似下面的记录

如果现在需求发生了变化,我们需要知道webapp所有容器的内存使用情况,如果还是采用刚才的方法,就不得不增加指标container_memory_usage_bytes_webapp2,container_memory_usage_bytes_webapp3,。。。。。。。

像graphite这类更高级的监控方案采用了更为优雅的层次化数据模型,为了满足上面的需求,graphite会定义指标:container.memory_usage_butes.webapp1,container.memory_usage_butes.webapp2,container.memory_usage_butes.webapp3,。。。。。。

然后就可以用:container.memory_usage_butes.webapp*获取所有的webapp内存使用数据

此外graphite还支持sum()等函数对指标进行计算和处理,

比如:sum(container.memory_usage_butes.webapp1*)可以得到所有webapp容器占用的总内存量

 

 

目前为止,问题处理的都很好,但是客户也许会提出更多得需求:现在不仅按容器得名字统计内存使用量,还要按照镜像来统计;或者想对比一下某一组容器在生产环境和测试环境中内存使用得不同情况

 

如果按照传统得方案:只要定义更多得指标就能满足这些需求,比如:

container.memory_usage_bytes.image1.webapp1,container.memory_usage_bytes.webapp1.prod等

但问题在于我们没办法提前预知客户要用这些数据回答怎样得问题,所以没办法提前定义好所有得指标

 

下面来看一下prometheus解决方案:

 

promethues只需要定义一个全局得指标container_memory_usage_bytes,然后通过添加不同得维度数据来满足不同得业务需求

比如对于前面的webapp1的三条取样数据,转换成prometheus多维数据变成:

 

后面三列container_name,image,env就是数据的三个w维度。

想象一下,如果不同的env(prod,test,dev),不同image的容器,他们的内存使用数据中标注了这三个维度信息,那么就能满足很多业务需求

比如:

1.计算webapp2的平均内存使用情况:

avg(container_memory_usage_bytes{container_name="webapp2"})

2.计算运行mycom/webapp:1.3镜像的所有内存使用总量:

sum(container_memory_usage_bytes{image="mycom/webapp:1.3"})

3.统计不同运行环境中webapp容器内存使用总量:

sum(container_memory_usage_bytes{container_name=~"webapp"})by (env)

这只是几个例子,不过已经说明prometheus数据模型的优势了:

1.通过维度对数据进行说明,附加更多的业务信息,进而满足不同业务的需求。同时维度是可以动态添加的,比如再给数据添加一个user维度,就可以按照用户来统计内存的使用量了。

2.prometheus丰富的查询语句能够灵活,充分挖掘数据的价值

 

 

部署prometheus:

环境说明:我们通过prometheus监控两台docker host,监控host和容器两个层次的数据

按照架构图,我们需要运行如下组件:

prometheus server

prometheus server本身也是用容器方式运行

exporter

prometheus有很多现成的exporter,完整的列表请参考官网:

    我们将使用:

1.NODE exporter,负责收集host硬件和操作系统数据,他将以容器的方式运行在所有的host上

2.cadvisor:负责收集容器的数据,他将以容器的方式运行在所有的host上

 

grafana

显示多维数据,grafana将以容器的方式与prometheus server运行在同一个host上

 

开始部署

1.运行node exporter

在两个host上运行容器:

 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 :--network host,这样prometheus server可以直接与node exporter通信

Node exporter启动后,将通过9100提供host的监控数据。在浏览器中通过http://ip:9100/metrics测试一下

两个host运行cadvisor

docker run -d -p 8080:8080 --network host --name cadvisor -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker/:/var/lib/docker:ro google/cadvisor:latest

注意:我们这里的容器也是用的是host网络,这样方便cadvisor与prometheus server 进行通信

cadvisor启动后,将通过8080提供host的监控数据。在浏览器中通过:http://ip:8080/metrics测试

在docker2host上运行prometheus server

 docker run -it -p 9090:9090 -v /root/prometheus:/etc/prometheus --name prometheus --network host prom/prometheus

这个prometheus.yml文件是自己创建的

可以在官网上copy,https://prometheus.io/docs/prometheus/latest/getting_started/

最重要的配置是最后两句:

指定从那些exporter上抓取数据,我这里指定了两台host上的Node exporter和cadvisor

另外,localhost:9090就是prometheus server自己,可见prometheus本身也会收集自己的监控数据。同样的可以通过http://ip:9090/metrics测试一下

 

在这里我们使用的依然是host的网络,这样prometheus server可以直接与exporter和grafana进行通信

 

在浏览器中打开http://ip:9090,点击菜单status->targets

 

所有的target的state都是UP,说明Promethues server能够正常获取监控数据

 

 

 在prometheus server上运行grafana

 同样是以容器的方式运行,官网:http://docs.grafana.org/installation/docker/

docker run
  -d
  -p 3000:3000
  --name

 

注:这里我们依然使用的是host网络,这样grafana可以直接与prometheus server进行通信

-e 指定了grafana admin用户密码:secret

 

grafana启动后。在浏览器中打开http://ip:3000

 

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

 

 Name为data source命名

例如:prometheus

Type选择prometheus

Url输入:prometheus server的地址:http://ip:9090

其他值保持默认,点击add

 

现在grafana就可以访问prometheus server中存放的数据了,那么如何让展示呢?

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

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

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

 

可见要做出一个dashboard也是一件不容易的事情。还好,我们可以借助开源社区的力量,直接俄使用现成的dashboard。

访问:https://grafana.com/dashboards?dataSource=prometheus&search=docker

,将会看到很多用于监控docker的dashboard

 

我们可以下载现成的dashboard,然后import到我们的grafana中就可以直接使用了。

 

 

 点击gafana左上角菜单:dashboard->import

导入我们下载得json文件

dashboard将立刻展示出漂亮得图表

在这个dashboard中,上部分是host数据,我们可以通过Node切换不同得host

 

 Dashboard得下班部分展示的是所有容器监控数据。grafana的dashboard是可以交互的,我们可以在图表上只显示指定的容器,选取指定的时间区间,重新组织和排列图表,调整刷新频率,功能非常强大!

最新文章
百度地图关怀版 v1.1.5 官网最新版下载 老年人导航地图app
2021年,工信部启动“互联网应用适老化及无障碍改造专项行动”。很多大大小小的APP,都进行了适老化改造,也就是俗称的老年版。如今,备受期待的改造基本已经完成,而这结果,貌似依旧不太理想。部分开发者特别鸡贼,改来改去,就只是加了
荣科科技涨1.25%,目前股价靠近压力位22.00,谨防压力位处回调,若突破压力位则可能会开启一波上涨行情
12月16日,涨1.25%,成交额9.30亿元,换手率6.53%,总市值139.46亿元。根据AI大模型测算荣科科技后市走势。短期趋势看,该股当前无连续增减仓现象,主力趋势不明显。主力没有控盘。中期趋势方面,上方有一定套牢筹码积压。近期该股有吸筹现
谈谈如何让一个SEO新手“快速成长”
现在SEO技术应用越来越广泛了,不用说,学习seo技术的人也越来越多。对于一个新手要学习要掌握的东西很多,那么如何才能更快的学好呢?其实没有更快学好这样的秘诀,我只能教你如何摆好心态,认真学习,这样你肯定比其他人要学的好学的快。
温州螺丝计算机视觉方案设计实时反馈全+境+到+达
  温州螺丝计算机视觉方案设计实时反馈全+境+到+达——苏州希佑科技有限公司!  提供:  计算机视觉|人工智能检测|人工智能视觉检测|CCD 视觉检测|视觉应用|视觉深度学习|AI人工智能检测|AI人工智能图像处理|AI图像处理|视觉检测|不
谷歌优化实操技巧
在海外市场竞争日趋激烈的今天,特别在的影响下,不少外贸企业的老客户也受到了影响。因此通过线上外贸开发海外客户成了企业的重点。而外贸是诸多推广渠道中效果较好且投入较低的一种方式,那么在网站优化时有哪些技巧呢?下面云程网络为大
绘画与影像的美学共生
  作者:陆颖(浙江师范大学艺术学院讲师)   在电影发展历程中,作为传统视觉艺术形式的绘画与之产生了彼此纠缠的关系,二者如同两条蜿蜒前行的轴线,时而交错、时而并进,在形式创新与内容互动等方面,逐渐消弭了门类艺术的边界,催
苹果手机里的APK格式文件肿么转换成APP
手机下载的文件怎么弄成app  手机下载的文件怎么弄成app,经常玩手机的人对于各项的应用都是需要熟练掌握的,手机上的文件非常多,我们可以随意的进行操作,下面为大家分享手机下载的文件怎么弄成app。  手机下载的文件怎么弄成app1 
谁最“牛”?四款牛津电子词典终极评测
现在的词典机太多了,消费者一般难以选择,但里面如果有牛津或剑桥的词典,会好卖很多。一位售货员告诉记者。情况也确实如此,在小编走访中关村各大卖场商铺时,发现权威辞典成为最有杀伤力的武器。 小编认为,这种情况的出现,与电子词典
阿里巴巴1688开店成本多少?怎么做起来的?
不管在哪个平台上开店,都要事先准备好,尤其是资金方面,毕竟店铺开起来之后,需要用资金的地方还很多,那1688批发网开店要交多少钱?下面来我们就来给大家讲解一下这方面的内容。一、1688批发网开店要交多少钱?阿里诚信通年费为6688元一年
资源优化瘦身:全面提升网站性能实战攻略
  在互联网时代,网站性能对于用户体验和业务发展至关重要。一个快速响应、流畅运行的网站能够吸引更多用户,提高用户满意度,进而促进业务增长。而资源瘦身计划则是提升网站性能的关键策略之一。本文将为您详细介绍资源瘦身计划,帮助您
相关文章
推荐文章
发表评论
0评