当前位置: 首页>前端>正文

grafana导入json模板 grafana json model

构建监控系统

  1. Promethues + Grafana + AlertManager使用总结
  2. Nacos Server 监控 Prometheus grafana
  3. springboot服务做埋点

1. Prometheus、exporters、alertmanager、Grafana 构建监控系统

1.1 核心组件

Prometheus Server, 主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理。
exporters ,数据采样器,例如采集机器数据的node_exporter,采集MongoDB 信息的 MongoDB exporter 等等。
alertmanager ,用于告警通知管理。
Grafana ,监控数据图表化展示模块。

1.2 安装

  1. 完整的docker-compose.yml如下:
version: '3'
services:
  prometheus:
    image: prom/prometheus
   _name: prometheus
    hostname: prometheus
    restart: always
    volumes:
      - /data/docker_file/prometheus/data:/prometheus
      - /data/docker_file/prometheus/conf/prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - "9090:9090"
    networks:
      - monitor
  alertmanager:
    image: prom/alertmanager
   _name: alertmanager
    hostname: alertmanager
    restart: always
    volumes:
      - /data/docker_file/monitor/conf/alertmanager.yml:/etc/alertmanager/alertmanager.yml
    ports:
      - "9093:9093"
    networks:
      - monitor
  grafana:
    image: grafana/grafana
   _name: grafana
    hostname: grafana
    restart: always
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin
    volumes:
      - /data/docker_file/grafana/data:/var/lib/grafana
      - /data/docker_file/grafana/log:/var/log/grafana
    ports:
      - "3000:3000"
    networks:
      - monitor
  node-exporter:
    image: prom/node-exporter
   _name: node-exporter
    hostname: node-exporter
    restart: always
    ports:
      - "9100:9100"
    networks:
      - monitor
networks:
  monitor:
    driver: bridge
  1. alertmanager.yml 如下:
global:
  resolve_timeout: 5m
  smtp_smarthost: 'smtp.qq.com:25'            #QQ服务器
  smtp_from: '326167575@qq.com'         #发邮件的邮箱
  smtp_auth_username: '326167575@qq.com'      #发邮件的邮箱用户名,也就是你的邮箱
  smtp_auth_password: '********************'            #发邮件的邮箱密码
  smtp_require_tls: false               #不进行tls验证

templates:
  - 'template/*.tmpl'

route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 10m
  receiver: 'live-monitoring'

receivers:
  - name: 'live-monitoring'
  1. prometheus.yml
# 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:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['prometheus:9090']
  - job_name: 'node-exporter'
    scrape_interval: 5s
    static_configs:
      - targets: ['node-exporter:9100']
  1. 启动:
    docker-compose up -d -f {docker-compose.yml的name}

2. 配置Grafana DashBoard

Grafana通过PromQL查询语句从Prometheus拉取数据,并有Pannel进行渲染,一个个Grafana Pannel 组成一个Grafana DashBoard。

2.1 添加grafana数据源

grafana导入json模板 grafana json model,grafana导入json模板 grafana json model_spring,第1张

2.2 下载Grafana DashBoard文件

可以从官网下载已经写好的Grafana DashBoard文件,导入到我们Grafana系统就可以直接使用。

在这里下载的是Spring Boot 2.1 Statistics

2.3 导入Grafana DashBoard

grafana导入json模板 grafana json model,grafana导入json模板 grafana json model_prometheus_02,第2张

3. springboot工程应用

3.1 新建springboot工程

添加如下依赖:

<properties>
        <spring-boot.version>2.2.5.RELEASE</spring-boot.version>
        <micrometer.version>1.3.5</micrometer.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
            <version>${micrometer.version}</version>
        </dependency>
    </dependencies>

注意版本一致问题,spring-boot-starter-actuator已经有了micrometer-core这个依赖。

SpringBoot中的spring-boot-starter-actuator依赖已经集成了对Micrometer的支持,其中的metrics端点的很多功能就是通过Micrometer实现的,prometheus端点默认也是开启支持的,实际上actuator依赖的spring-boot-actuator-autoconfigure中集成了对很多框架的开箱即用的API,其中prometheus包中集成了对Prometheus的支持,使得使用了actuator可以轻易地让项目暴露出prometheus端点,作为Prometheus收集数据的客户端,Prometheus(服务端软件)可以通过此端点收集应用中Micrometer的度量数据。

注意多看spring官方文档关于Actuator的详细描述,在SpringBoot-2.x之后,配置Web端点暴露的权限控制和1.x有很大的不同。总结一下就是:除了shutdown端点之外,其他端点默认都是开启支持的这里仅仅是开启支持,并不是暴露为Web端点,端点必须暴露为Web端点才能被访问,禁用或者开启端点支持的配置方式如下:

management.endpoint.${端点ID}.enabled=true/false

可以查看actuator-api文档查看所有支持的端点的特性,这个是2.1.0.RELEASE版本的官方文档,不知道日后链接会不会挂掉。端点只开启支持,但是不暴露为Web端点,是无法通过http://{host}:{management.port}/{management.endpoints.web.base-path}/{endpointId}访问的。暴露监控端点为Web端点的配置是:

management.endpoints.web.exposure.include=info,health
management.endpoints.web.exposure.exclude=prometheus
management.endpoints.web.exposure.exclude用于指定不暴露为Web端点的监控端点,指定多个的时候用英文逗号分隔management.endpoints.web.exposure.include默认指定的只有info和health两个端点,我们可以直接指定暴露所有的端点:management.endpoints.web.exposure.include=,如果采用YAML配置,记得要加单引号’*‘。暴露所有Web监控端点是一件比较危险的事情,如果需要在生产环境这样做,请务必先确认http://{host}:{management.port}不能通过公网访问(也就是监控端点访问的端口只能通过内网访问,这样可以方便后面说到的Prometheus服务端通过此端口收集数据)。

application.yml文件如下:

server:
  port: 9000

spring:
  application:
    name: monitor-service

management:
  server:
    port: 10090
  metrics:
    # 1.添加全局的tags,后面可以作为变量搜索数据
    tags:
      application: ${spring.application.name}
  endpoints:
    web:
      base-path: /manager
      exposure:
        # 2.打开prometheus端点功能
        include: 'health,prometheus'
  endpoint:
    health:
      show-details: ALWAYS

3.2 修改prometheus.yml

添加如下内容:

- job_name: 'monitor-service'
    metrics_path: /manager/prometheus
    static_configs:
      - targets: ['192.168.1.117:10090']

metrics_path: /manager/prometheus 为application.yml配置的路径。
192.168.1.117:10090 为IP和端口。

重新启动prometheus服务,可以在 status -> target 下面看到。

3.4 Grafana结果查看

在Grafana中,使用 Spring Boot 2.1 Statistics 显示效果如下:

grafana导入json模板 grafana json model,grafana导入json模板 grafana json model_数据_03,第3张

使用 主机基础监控(cpu,内存,磁盘,网络) 效果如下:

grafana导入json模板 grafana json model,grafana导入json模板 grafana json model_prometheus_04,第4张

可以从DashBoard官网中,找现成的来使用。

这里只是简单使用,还是使用现成的dashboard。后续看文档,结合自己实际使用情况,添加埋点,添加dashboard来使用。



https://www.xamrdz.com/web/2we1922138.html

相关文章: