基于Prometheus+Grafana的服务监控系统

基于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

在当前目录执行

  1. docker-compose up -d

其他:

  1. #删除容器:
  1. docker-compose -f down#重启容器:
  1. docker restart id

如图:prometheus,alertmanager,node-exporter已启动

基于Prometheus+Grafana的服务监控系统

 

访问http://106.75.222.98:9090/targets

可以看到当前服务器的监控数据

3.6 SpringBoot应用集成prometheus监控

3.6.1 添加依赖

  1. <!--增加prometheus监控依赖-->
  1. <dependency>
  1.     <groupId>org.springframework.boot</groupId>
  1.     <artifactId>spring-boot-starter-actuator</artifactId>
  1.     <version>${spring-boot-starter-actuator.version}</version>
  1. </dependency>
  1. <dependency>
  1.     <groupId>io.micrometer</groupId>
  1.     <artifactId>micrometer-core</artifactId>
  1. </dependency>
  1. <dependency>
  1.     <groupId>io.micrometer</groupId>
  1.     <artifactId>micrometer-registry-prometheus</artifactId>
  1. </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

  1. public class CbasApplication {
  1.  
  1.     public static void main(String[] args) {
  1.         SpringApplication.run(CbasApplication.class, args);
  1.     }
  1. //
  1.  
  1.     //添加prometheus+grafana+springboot2监控集成配置
  1.     @Bean
  1.     MeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}") String applicationName,@Value("${spring.profiles.active}") String profiles) {
  1.         return (registry) -> registry.config().commonTags("application", applicationName+"-"+profiles);
  1.     }
  1.  
  1. }

3.6.4启动效果

SpringBoot项目到这里就配置完成了,启动项目,访问http://localhost:8888/actuator/prometheus,如图所示,可以看到一些度量指标。

基于Prometheus+Grafana的服务监控系统

 

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数据源

基于Prometheus+Grafana的服务监控系统

 

3.8配置grafana仪表盘dashboards

说明:可以用自带模板,也可以去https://grafana.com/dashboards,下载对应的模板。

java服务仪表盘 ID:12856

输入ID点load

基于Prometheus+Grafana的服务监控系统


效果如图:

基于Prometheus+Grafana的服务监控系统

 

服务器资源仪表盘8919

效果如下:

 

基于Prometheus+Grafana的服务监控系统