基于Prometheus+Grafana的服务监控系统
一 背景&目的
在原有的日志展示平台Grafana上集合Prometheu实现对服务器资源和java应用服务的资源监控。
并配套Alertmanager实现资源告警功能
二 系统结构说明
Prometheus负责收集数据,Grafana负责展示数据。其中采用Prometheus 中的 Exporter含:
1)Node Exporter,负责收集 host 硬件和操作系统数据。提供数据抓取接口供Prometheus收集。
2)cAdvisor,负责收集容器数据。它将以容器方式运行在所有 host 上。(docker应用)
3)Alertmanager,负责告警。它将以容器方式运行在所有 host 上。
三 安装部署
3.1安装docker
3.2安装docker-compose
3.3添加prometheus.yml配置文件
在/usr/local/config添加prometheus.yml配置文件
3.4编写docker-compose
注: volumes:
- /usr/local/config/prometheus.yml:/etc/prometheus/prometheus.yml
- /usr/local/config/node_down.yml:/etc/prometheus/node_down.yml
配置docker目录和系统目录的映射
3.5启动docker-compose
在当前目录执行
- docker-compose up -d
其他:
- #删除容器:
- docker-compose -f down#重启容器:
- docker restart id
如图:prometheus,alertmanager,node-exporter已启动
访问http://106.75.222.98:9090/targets
可以看到当前服务器的监控数据
3.6 SpringBoot应用集成prometheus监控
3.6.1 添加依赖
- <!--增加prometheus监控依赖-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- <version>${spring-boot-starter-actuator.version}</version>
- </dependency>
- <dependency>
- <groupId>io.micrometer</groupId>
- <artifactId>micrometer-core</artifactId>
- </dependency>
- <dependency>
- <groupId>io.micrometer</groupId>
- <artifactId>micrometer-registry-prometheus</artifactId>
- </dependency>
3.6.2添加配置
############################## 业务源配置
business:
source: 1
#yml格式
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
metrics:
tags:
application: ${spring.application.name}+"-"+${spring.profiles.active}
3.6.3设置application
- public class CbasApplication {
- public static void main(String[] args) {
- SpringApplication.run(CbasApplication.class, args);
- }
- //
- //添加prometheus+grafana+springboot2监控集成配置
- @Bean
- MeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}") String applicationName,@Value("${spring.profiles.active}") String profiles) {
- return (registry) -> registry.config().commonTags("application", applicationName+"-"+profiles);
- }
- }
3.6.4启动效果
SpringBoot项目到这里就配置完成了,启动项目,访问http://localhost:8888/actuator/prometheus,如图所示,可以看到一些度量指标。
3.7 prometheus配置java应用的采集job
在prometheus.yml中添加两个job分别采集测试环境和开发环境
- job_name: 'HRO-SERVICE-DEV'
scrape_interval: 5s
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['10.23.196.244:8888','10.23.196.244:8881','10.23.196.244:8700','10.23.196.244:8099','10.23.196.244:8904','10.23.196.244:9999','10.23.196.244:8882','10.23.196.244:5999']
- job_name: 'HRO-SERVICE-TEST'
scrape_interval: 5s
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['10.23.96.219:8888','10.23.96.219:8881','10.23.96.219:8700','10.23.96.219:8099','10.23.96.219:8904','10.23.96.219:9999','10.23.96.219:8882','10.23.96.219:5999']
3.7grafana添加Prometheus数据源
3.8配置grafana仪表盘dashboards
说明:可以用自带模板,也可以去https://grafana.com/dashboards,下载对应的模板。
java服务仪表盘 ID:12856
输入ID点load
效果如图:
服务器资源仪表盘8919
效果如下: