Prometheus架构图
Prometheus安装
安装位置:...
安装环境:CentOS / docker
Prometheus
- 端口:9090
- 存储目录:/apps/prom
- 配置文件:/apps/prom/prometheus.yml
- 作用:核心模块
Node exporter
- 端口:9100
- 存储目录:(无)
- 配置文件:(无)
- 作用:收集系统信息的exporter
Alert manager (暂未启用)
- 端口:9093、9094
- 存储目录:/apps/prom/alertmanager
- 配置文件:/apps/prom/alertmanager/alertmanager.yml
- 告警配置文件:/apps/prom/alert-rules.yml
- 作用:告警
prometheus-webhook-dingtalk(暂未启用)
- 端口:8060
- 存储目录:(无)
- 配置文件:/apps/prom/dingconfig.yml
- 作用:配合alertmanager,向钉钉发信
JMeter-Prometheus-Plugin
- 端口:9877 [内部80]
- 存储目录:/apps/prom/jmeter
- 配置文件:(无)
- 作用:自带jmeter,从存储目录拿取测试文件进行测试,然后将结果反馈至9877端口,待由Prometheus接收
Grafana
- 端口:3000
- 存储目录:/apps/prom/grafana
- 配置文件:/apps/prom/grafana/grafana.ini
- 作用:可视化Prometheus结果,内置报警模块,可发邮件、钉钉报警
Jmeter 监控接口配置
- 编写jmeter测试文件
- 下载apache-jmeter,添加jmeter-prometheus-plugin库(https://search.maven.org/remotecontent?filepath=com/github/johrstrom/jmeter-prometheus-plugin/0.6.0/jmeter-prometheus-plugin-0.6.0.jar)到lib
- 使用jmeter-prometheus-plugin示例文件中的Prometheus Metrics声明监控的id和类型
- 写测试计划,配置线程永远循环,添加计时器。在后置处理器BeanShell或断言BeanShell中修改监控的id值
- 使用Prometheus Listener声明提交的监控的id
- 测试,访问 http://localhost:9270 查看运行结果。
- 在docker启动jmeter-prometheus-plugin
- docker pull germey/jmeter
- 由docker启动jmeter-prometheus-plugin,将外部特定端口(如9877)的映射为内部80端口,将外部存储jmx的目录映射为内部/app,为该container添加启动参数 *.jmx
- 为prometheus添加监控对象
- 修改prometheus.yml,添加被监控的ip和端口
- 在grafana中配置可视化及告警
- 配置告警channel,类型dingding,地址oapi,Disable Resolve Message表示当问题被处理后,不报告ok。TEST测试告警渠道是否OK
- 添加dashboard
- 添加panel
- metrics填写在第1步声明的监控的id,查看即时数据
- 添加alert - Evaluate every X for Y表示每过 X 开始持续 Y 审查一次数据,如果数据不符条件就告警 - Conditions 告警条件,可选函数,最近的数据值超过或低于或不在什么范围内。可多个条件 和 或
注意事项
- 默认的jmeter不含json包,需要自行下载放入lib
- 多个测试可以用一个jmx文件
- Disable Resolve Message 不勾选时,grafana会在出错的时候发一次告警,恢复的时候发一次告警。并不会每次检查有问题都发。