前言
我们在开发项目时往往希望可以实时监控项目的健康状态,包括内存使用率、CPU使用情况、JVM各种参数,那么我们肯定是希望可以有一个实时的参数面板可以直观的看到各种指数
特别是当我们使用微服务时,项目非常多,使用监控平台就变得尤为重要了
搭建监控平台
搭建资源目标:
springboot项目:http://121.40.54.206:8082
prometheus:http://121.40.54.206:9099
grafana:http://121.40.54.206:3000
1、配置项目开放actuator端点
我们首先有一个springboot搭建的web项目,在pom.xml添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
监控平台需要使用到springboot的提供的actuator
application.properties添加参数,开放actuator所有端点,默认只开启了health和info
management.endpoints.web.exposure.include=*
启动项目,访问http://121.40.54.206:8082/actuator/prometheus
返回很多参数数据,即表示项目已经配置成功
2、搭建prometheus平台
prometheus可以收集项目的数据指标
- 进入linux终端根目录,执行mkdir prometheus创建一个文件夹
- 官网下载(https://prometheus.io/),支持Linux、Mac、Windows系统,cd prometheus进入文件夹, wget
https://github.com/prometheus/prometheus/releases/download/v2.8.1/prometheus-2.8.1.linux-
amd64.tar.gz下载prometheus压缩包 - tar -zxvf prometheus-2.8.1.linux-amd64.tar.gz解压
- cd prometheus-2.8.1.linux-amd64进入文件夹内
- vi prometheus.yml修改配置文件,主要修改内容为job_name配置部分,如下所示
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
#主要修改的内容就是job
job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
#监控的路径
metrics_path: '/actuator/prometheus'
static_configs:
#要监控的项目地址
- targets: ['121.40.54.206:8082']
- ./prometheus --config.file=prometheus.yml --web.listen-address=:9099 & 启动项目,并且设置端口为9099,默认端口是9090
- 启动完成后,访问http://121.40.54.206:9099/targets,监控地址显示state为UP,即启动成功
3、搭建grafana集成prometheus
grafana可以使用各种数据源如prometheus来根据参数显示各种监控面板
- 进入官网查看安装方式https://grafana.com/grafana/download
- 查看Red Hat安装方式,wget https://dl.grafana.com/oss/release/grafana-7.0.4-1.x86_64.rpm下载安装包
- sudo yum install grafana-7.0.4-1.x86_64.rpm安装
- 输入启动命令:service grafana-server start
- 访问:http://121.40.54.206:3000即可打开登录页面
- 初次登录账户密码都是admin,登录后会提示修改密码
- 配置数据源,选择configuration->data sources->add data source
选择prometheus select,配置name自定义,URL为prometheus的地址http://121.40.54.206:9099,其余默认,点击save & Test,显示Data source is working即配置成功 - 然后我们可以配置我们需要的数据面板,进入官网找到dashboards界面
- 我们以配置JVM面板为例,搜索jvm,找一个下载量高的面板,如:JVM (Micrometer),找到对应的id为:4701
- 点击+号选择import,Import via grafana.com输入框输入4701,点击Load,点击import
- 然后就可以看到出现了jvm的监控面板,包括io、cpu使用情况、jvm内存使用情况等,最后点击保存面板即可
至此我们使用grafana集成prometheus搭建监控平台监控我们的springboot项目已经成功
扩展:grafana可以选择多种数据源如Elasticsearch、mysql、oracle等,监控各种平台,感兴趣的同学可以自行了解