随着业务的越发复杂,软件系统也越来越庞大,对软件系统的要求越来越高,意味着我们需要随时掌控系统的运行情况。因此,系统的实时监控以及可视化展示,就显得非常重要。
今天来介绍下使用Grafana + Prometheus快速搭建监控平台。
总体可视化方案
![28ff133ce46e1ea5d6f24e8b67d26e43.png](https://i-blog.csdnimg.cn/blog_migrate/d8061a52f37e78e37612c3e9175ded25.jpeg)
Grafana:通过将采集的数据查询然后可视化的展示
Prometheus:存储的是时序数据,即按相同时序(相同名称和标签),以时间维度存储连续的数据的集合
Exporter:它是prometheus监控中重要的组成部分,负责数据指标的采集
Grafana介绍
![4c1d6925311beffb082ba6d46d874d27.png](https://i-blog.csdnimg.cn/blog_migrate/c81663dbfe200c00a7752293ee12b68b.jpeg)
Grafana是一个开源的度量分析与可视化套件。经常被用作基础设施的时间序列数据和应用程序分析的可视化。
Grafana支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。
![4264cc0e9ea29a16e96f40f6549043c9.png](https://i-blog.csdnimg.cn/blog_migrate/097edfd4c242cbb2f10f24ed52c0461f.jpeg)
![625005e49cb0c15bfaeab0cc7452c8f8.png](https://i-blog.csdnimg.cn/blog_migrate/1006f692cffc87c649405a4960fd64b0.jpeg)
Prometheus介绍
![d7bf6d11e1a8f9ceb69771e283b71528.png](https://i-blog.csdnimg.cn/blog_migrate/b08321ae25c5fe2004cdebe5bb44fadd.jpeg)
Prometheus是一套开源的系统监控和报警框架,可以理解Prometheus是数据库,它需要配合Exporter使用。Exporter是负责数据汇报的程序,不同的Exporter负责不同的业务。其统一命名格式:xx_exporter。
Prometheus官方提供的exporter有blackbox_exporter、consul_exporter、graphite_exporter、haproxy_exporter、memcached_exporter、mysqld_exporter、node_exporter、statsd_exporter,还有很多第三方的exporter,例如:Redis exporter、RabbitMQ exporter等
Prometheus只会采集指定格式的监控信息,它周期性地调用exporter提供的metrics数据接口来获取数据,而exporter就是按照Prometheus规定的格式采集各种软件的监控信息
案例:利用JMX监控Java程序效果
![773813f3c4b1cbaf98042cd439bf95b8.png](https://i-blog.csdnimg.cn/blog_migrate/fb54a1d98eef15333036b69d02a47731.jpeg)
搭建过程
本文采用的是Windows系统安装grafana和Prometheus,直接下载双击即可。
Grafana默认地址:http://127.0.0.1:3000,默认账号和密码都是admin
![d3bbf0cd40791db461db1212342b00d2.png](https://i-blog.csdnimg.cn/blog_migrate/18eec6f726ed107a16bc5b4e37ec8035.jpeg)
Prometheus默认地址:http://127.0.0.1:9090
![f80714460edca07f800637cadea45371.png](https://i-blog.csdnimg.cn/blog_migrate/9c694c6dd60545b431f0501c158b8d09.jpeg)
jmx_exporter
监控Java程序可以使用jmx_exporter,github地址:https://github.com/prometheus/jmx_exporter
java -javaagent:./jmx_prometheus_javaagent-0.14.0.jar=8081:config.yaml -jar yourJar.jar
config.yaml内容可以参考jmx_exporter项目中example_configs目录
Prometheus配置
修改prometheus.yml,配置需要拉取的exporter的地址
![495050352e06ce9dec54b6e8486af33b.png](https://i-blog.csdnimg.cn/blog_migrate/07dd0b1dc7bc7d544158e14c6417f8a1.jpeg)
如果看到targets中有你添加的exporter表示已经可以收集到数据了
![a6243daa2c0f8667f870105443b52ce1.png](https://i-blog.csdnimg.cn/blog_migrate/f99cf76cdf4ca3afab00efb27abb11e8.jpeg)
Grafana设置
添加数据源
![e8fbb476ca7faec5a4d0665021da3bdd.png](https://i-blog.csdnimg.cn/blog_migrate/2b9810c22037c1d606bdfe1282819316.jpeg)
选中prometheus
![c89f74dca98eaba2a70832bd9ca630ea.png](https://i-blog.csdnimg.cn/blog_migrate/c6a5a3b058c7989028164b5ddf900289.jpeg)
配置地址
![9b35d271c24c1967d2203112bccf9357.png](https://i-blog.csdnimg.cn/blog_migrate/defcb1dafad7c85473fdcb75d100bf94.jpeg)
使用Grafana插件生成dashboard
grafana提供了很多dashboard模版,例如从 https://grafana.com/dashboards/8563 这里下载一个模板,导入 grafana 中即可实现jvm监控。
![9830fecfb2bfe8bc0db032a6e885aabc.png](https://i-blog.csdnimg.cn/blog_migrate/3a53ffef136d54a48df2dcfc7c37b709.jpeg)
也可以通过手动创建dashboard
创建监控面板
![72e4ccb75a19939f1c590df60af38299.png](https://i-blog.csdnimg.cn/blog_migrate/595071931b06da867b388336fe4655c0.jpeg)
创建监控指标图表
![f6e39fc2d98e57bbfdd4d42041f2a120.png](https://i-blog.csdnimg.cn/blog_migrate/14a078207b30bd512bc9f61d14df055d.jpeg)
添加指标
![36f83e1d9d3ed53cc4ad98c72ab2282c.png](https://i-blog.csdnimg.cn/blog_migrate/e12620d85ca2e4b6e0f5295a92c3bed4.jpeg)
保存即可。
告警功能
是不是感觉实现监控的可视化非常方便,同时prometheus还提供告警插件alertmanager,可以通过alertmanager实现异常监控的报警功能。
有兴趣的可以研究一下。