使用 Prometheus + Grafana 搭建监控系统

前言

系统监控是中大型企业中必不可少的组件,在线上服务器遇到负载问题时通过监控便能够查看系统状态快照,还能够通过监控系统开发其他效能组件,进一步提高系统的可用性。

监控应用程序

通常情况下,要想获得应用的负载情况就需要改造原有工程,提供 pull 或 push 的方式将应用状况进行上报。

Prometheus 使用的是 pull 模式,在应用中开放端口提供系统状态信息,监控系统可以定时从应用中拉取记录。

  1. 在 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>
  1. 配置暴露的 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 数据可视化

  1. 通过 http://docs.grafana.org/installation/ 选择合适的版本安装

  2. 访问 http://127.0.0.1:3000 ,默认账号 admin/admin

  3. 添加 Prometheus 数据源,进入 Configuration/DataSources 配置监控中心地址。

  4. 导入 Dashboard,对数据的采集展示配置可通过 https://grafana.com/dashboards 获取已有配置,填写 dashboardId 导入 (如 8919/4701)。

也可通过 Add panel 增加监控面板,再选择 Add Query 设置监控主体,监控语句可通过 http://127.0.0.1:9090/graph 获取。