使用开源软件Prometheus监控企业内部应用

使用开源软件Prometheus监控企业内部资源

1. 写在前面

在公司行政管理大区内,因为业务体量小,业务变化相对少,之前公司采用的监控技术栈较为落后,只有简单的北塔网络监控,基本没有任何的监控平台。

接触Docker和kubernetes时间久了,开源的监控方案所接触。网上也有不少Zabbix、Nagios、Open-Falcon、Prometheus、Influxdb的对比这里就不一一列举了。最终公司选择Prometheus+Grafana+explorer技术栈作为企业内部IT资源监控,Prometheus各类型采集器丰富,Grafana仪表板颜值高,基于Docker-compose部署方便,该项目自2018年实施已稳定运行三年,极大缩短了故障排查时间。

2. 监控资源分析

内部需要监控的资源有

  1. 网络资源:如交换机SNMP、交换机各端口流量
  2. Windows资源:Windows服务器运行时间、CPU使用率、内存使用率、磁盘使用率、磁盘IO、进程数、服务数、网络带宽情况等
  3. Linux资源:Linux服务器运行时间、CPU使用率、打开文件描述符、上下文切换次数、内存使用率、磁盘使用率、磁盘IO、网络带宽情况等
  4. Docker资源:各容器CPU使用率、内存使用率、网络带宽情况、磁盘io等
  5. vSphere资源:vSphere物理节点内存、CPU、虚拟机、网络情况,各虚拟机CPU使用率、CPU就绪时间、网络封包、磁盘IO等。
  6. Oracle数据库性能情况:数据库状态、执行统计、用户提交/回滚数量、进程数量、表空间使用情况、IO、资源利用率等。
  7. JVM监控:Java版本、运行时间、加载类总数、线程数量、线程峰值、死锁线程数量、gc次数等
  8. 存储资源监控:Ceph OSD状态等
  9. 其他类型监控:连通类监控如端口、HTTP,SSL证书状态监控等

根据监控资源在GitHub以及Prometheus官网内收集推荐的exporter,总结如下:

监控资源 exporter名称 部署方式 项目地址
SNMP snmp_exporter 代理部署 https://github.com/prometheus/snmp_exporter
Windows windows_exporter 实例部署 https://github.com/prometheus-community/windows_exporter
Linux node_exporter 实例部署 https://github.com/prometheus/node_exporter
Docker cadvisor 实例部署 https://github.com/google/cadvisor/releases/latest
vSphere vmware_exporter 代理部署 https://github.com/pryorda/vmware_exporter
Oracle oracledb_exporter 实例部署 https://github.com/iamseth/oracledb_exporter
JVM jmx_exporter 实例部署 https://github.com/prometheus/jmx_exporter
Ceph ceph_mgr 实例自带
其他 Blackbox_exporter 代理部署 https://github.com/prometheus/blackbox_exporter

这是官网上收录的exporter:https://prometheus.io/docs/instrumenting/exporters/

也可以在GitHub上搜,比如Proxmox就没有收录在官方文档内。

3. 整体架构及实施效果

本次采用Docker-Compose的方式搭建部署,参照Github上的https://github.com/vegasbrianc/prometheus.git进行二次开发。

拓扑如下:

使用开源软件Prometheus监控企业内部应用

我们主要关注prometheus、alertmanager、explorer、Grafana的配置以及docker-compose.yml 即可。在配置完成后,最终项目实施效果如下:

企业微信告警:

使用开源软件Prometheus监控企业内部应用

4. Docker-compose配置解析

Docker-compose 可以参照https://github.com/vegasbrianc/prometheus.git上的docker-compose.yml进行修改

该docker-compose主要配置prometheus服务、alertmanager服务、Grafana服务以及需要代理部署的exporter。

prometheus服务:

注:可在docker-compose中配置命令行参数 –storage.tsdb.retention,时间不建议配太长,容易造成磁盘IO高

通过ip:9090端口访问

alertmanager服务

通过ip:9093端口访问

grafana服务

通过ip:3000端口访问

5. Prometheus及Exporter配置

根据Exporter性质,代理部署的Exporter可直接配置在Docker-compose.yml,与prometheus同一个主机,实例部署需要每个实例上部署单独的Exporter。

建议每个Exporter都用Docker-compose进行纳管。

5.1 Prometheus 配置解析

Prometheus 配置位于/prometheus/prometheus.yml 下,主要配置参数可以参考https://prometheus.io/docs/prometheus/latest/configuration/configuration/

5.1.1 配置文件指标说明

  • global: 全局配置(如果有内部单独设定,会覆盖这个参数)
  • alerting: 告警插件定义。这里会设定alertmanager这个报警插件。
  • rule_files: 告警规则。 按照设定参数进行扫描加载,用于自定义报警规则,其报警媒介和route路由由alertmanager插件实现。
  • scrape_configs:采集配置。配置数据源,包含分组job_name以及具体target。采集配置又分为静态配置和服务发现

原始配置文件内容:

5.1 node_exporter 配置

5.1.1 实例部署

node_exporter采用go语言开发,专门用来收集*NIX系统中硬件、系统指标。需要在每个实例主机上部署Docker-compose.yml如下:

来源:桶装酱油王

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐