项目如何用prometheus监控华为云资源(应用实践)
首先华为云已经有华为云cloudeye监控系统为什么还要用prometheus对xx系统资源进行监控呢?
Cloudeye监控系统只对华为云本身的云服务资源进行监控,比如vpc网络流量是否超过阈值,RDS总的内存占用率多少,但是对部署在云上的单个应用程序的内省监控(状态、内部组件)、探针监控等却没有涉及。
其次为什么这么多开源的监控软件为什么选prometheus。
Prometheus原生支持k8s监控,k8s官方原生为prometheus提供了监控接口,能够很好的完成监控工作。
当然prometheus还支持众多生态对接,比如华为云资源,比如grafana等等。
Prometheus有强大的数据存储和查询能力
下面主要介绍在xx项目中如何用prometheus各个组件监控华为云资源。
在华为云中搭建了用户WEB系统,luckin系统和wms系统,其中每套系统都用到了 ECS搭建web服务app、RDS mysql存储该系统数据、Redis缓存中间数据、CSS云搜索服务等。
在上图可以看到使用容错架构为该系统提供了监控,每个prometheus监控两个系统上的服务,所有prometheus服务器会向所有的alertmanager发送报警,alertmanager负责去除重复数据并通过集群共享警报状态。
展开来看prometheus监控某个系统服务的具体流程实现:
注: 这里只体现了对华为云资源的监控部分,不包括对应用程序的内省监控
对于华为云资源,使用了两种exporter进行监控,对于ECS VM虚拟机,使用社区自带的node exporter进行监控。对于RDS、CSS、ELB等无法使用社区exporter监控的资源使用cloudeye exporter进行监控。
Node exporter监控流程(黄色1、2、3…):
使用prometheus文件发现方式
1、 在prometheus中配置需要被监控的文件(targets.json),Prometheus默认每5m重新读取一次文件内容
scrape_configs:
- job_name: 'file_ds'
file_sd_configs:
- files:
- targets.json
2、 调用huaweicloud-prometheus-discover程序调用list API去发现需要被监控的ECS VM虚拟机ip及port。
3、 返回ECS VM虚拟机ip及属性(名称、状态、region等)
4、 将虚拟机信息写入targets.json文件
cloudeye exporter流程(红色1、2、3)
1、 prometheus发起pull请求
也就是发送http://localhost:8087/metrics?services=SYS.VPC,SYS.ELB 请求,services表示需要监控哪些服务。
2、 Cloudeye exporter发送api到CES服务获取监控的指标及数值信息
3、 Cloudeye exporter获取到监控信息后返回到prometheus,由prometheus进行存储。
参考链接:
https://github.com/huaweicloud/cloudeye-exporter
https://github.com/huaweicloud/huaweicloud-prometheus-discovery
- 点赞
- 收藏
- 关注作者
评论(0)