使用开源软件Prometheus监控企业内部资源
1. 写在前面
在公司行政管理大区内,因为业务体量小,业务变化相对少,之前公司采用的监控技术栈较为落后,只有简单的北塔 络监控,基本没有任何的监控平台。
接触Docker和kubernetes时间久了,开源的监控方案所接触。 上也有不少Zabbix、Nagios、Open-Falcon、Prometheus、Influxdb的对比这里就不一一列举了。最终公司选择Prometheus+Grafana+explorer技术栈作为企业内部IT资源监控,Prometheus各类型采集器丰富,Grafana仪表板颜值高,基于Docker-compose部署方便,该项目自2018年实施已稳定运行三年,极大缩短了故障排查时间。
2. 监控资源分析
内部需要监控的资源有
- 络资源:如交换机SNMP、交换机各端口流量
- Windows资源:Windows服务器运行时间、CPU使用率、内存使用率、磁盘使用率、磁盘IO、进程数、服务数、 络带宽情况等
- Linux资源:Linux服务器运行时间、CPU使用率、打开文件描述符、上下文切换次数、内存使用率、磁盘使用率、磁盘IO、 络带宽情况等
- Docker资源:各容器CPU使用率、内存使用率、 络带宽情况、磁盘io等
- vSphere资源:vSphere物理节点内存、CPU、虚拟机、 络情况,各虚拟机CPU使用率、CPU就绪时间、 络封包、磁盘IO等。
- Oracle数据库性能情况:数据库状态、执行统计、用户提交/回滚数量、进程数量、表空间使用情况、IO、资源利用率等。
- JVM监控:Java版本、运行时间、加载类总数、线程数量、线程峰值、死锁线程数量、gc次数等
- 存储资源监控:Ceph OSD状态等
- 其他类型监控:连通类监控如端口、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进行二次开发。
拓扑如下:
企业微信告警:
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进行处理,非常感谢!