使用 Prometheus + Grafana 搭建监控系统
前言
系统监控是中大型企业中必不可少的组件,在线上服务器遇到负载问题时通过监控便能够查看系统状态快照,还能够通过监控系统开发其他效能组件,进一步提高系统的可用性。
监控应用程序
通常情况下,要想获得应用的负载情况就需要改造原有工程,提供 pull 或 push 的方式将应用状况进行上报。
Prometheus 使用的是 pull 模式,在应用中开放端口提供系统状态信息,监控系统可以定时从应用中拉取记录。
- 在 SpringBoot 应用中引入依赖
<!-- prometheus -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<!-- endpoint -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
- 配置暴露的 endpoint 及系统标识
management.metrics.tags.application=${spring.application.name}
# 开放全部监控,或选择配置,如 prometheus, health
management.endpoints.web.exposure.include=*
启动完成后通过 {host}:{port}/actuator/prometheus
可以查看暴露的度量指标
监控中心
通过 https://prometheus.io/docs/prometheus/latest/getting_started/ 下载合适的 Prometheus 版本
解压后修改 prometheus.yml
配置,增加目标应用的监控配置
...
scrape_configs:
- job_name: 'targetProject'
scrape_interval: 5s
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['127.0.0.1:8080']
修改后通过命令 ./prometheus -config.file=prometheus.yml
启动 Prometheus,并进入管理页面 http://127.0.0.1:9090 检查 Endpoint 状态。
Grafana 数据可视化
-
通过 http://docs.grafana.org/installation/ 选择合适的版本安装
-
访问 http://127.0.0.1:3000 ,默认账号 admin/admin
-
添加 Prometheus 数据源,进入
Configuration/DataSources
配置监控中心地址。 -
导入 Dashboard,对数据的采集展示配置可通过 https://grafana.com/dashboards 获取已有配置,填写 dashboardId 导入 (如 8919/4701)。
也可通过
Add panel
增加监控面板,再选择Add Query
设置监控主体,监控语句可通过 http://127.0.0.1:9090/graph 获取。