Usa Prometheus para monitorear la nube de primavera

¡Acostúmbrate a escribir juntos! Este es el sexto día de mi participación en el "Nuggets Daily New Plan · April Update Challenge", haz clic para ver los detalles del evento .

Prometeo

Prometheus, un proyecto de Cloud Native Computing Foundation , es un sistema de monitoreo de sistemas y servicios. Recopila métricas de objetivos configurados a intervalos determinados, evalúa expresiones de reglas, muestra resultados y activa alertas cuando se observan condiciones específicas.

Lo que diferencia a Prometheus de otras métricas y sistemas de monitoreo son:

  • Modelo de datos multidimensional (serie temporal definida por nombre de métrica y conjunto de dimensiones clave/valor)
  • PromQL, un lenguaje de consulta potente y flexible que aprovecha esta dimensión
  • No depende del almacenamiento distribuido; los nodos de servidor individuales son autónomos
  • Modelo de extracción HTTP para la recopilación de series temporales
  • **** Admite series de tiempo push a través de una puerta de enlace intermedia para trabajos por lotes
  • Descubra objetivos a través del descubrimiento de servicios o la configuración estática
  • Múltiples modos compatibles con gráficos y paneles
  • Apoyo a uniones jerárquicas y horizontales

Descripción general de la arquitectura

Instalar

Descarga la última versión de Prometheus para tu plataforma , luego descomprímelo y ejecútalo:

tar xvfz prometheus-*.tar.gz
cd prometheus-*
复制代码

Antes de iniciar Prometheus, configurémoslo.

prometheus.yml

# my global config
global:
  scrape_interval:     10s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 10s # 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:
       - 127.0.0.1:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "rules/*.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # 配置job,可以同时配置多个服务
  - job_name: 'name1'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 5s
    scheme: "https"
    static_configs:
      - targets: ['xxx.com']

  - job_name: 'name2'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 5s
    scheme: "http"
    static_configs:
      - targets: ['abc.com']
复制代码

Supervisión de reglas de alarma

rules/xx_rules.yml

groups:
- name: nqi-down
  rules:
  - alert: gx-node-down
    expr: up{instance="xxx.com:443"} == 0
    for: 10s
    labels:
      status: High
      team: xxx
    annotations:
      description: "xxx is Down ! ! !"
      summary:  "xxx服务停了,请留意!!!"
      
  - alert: test-node-down
    expr: up{instance="abc.com:80"} == 0
    for: 5s
    labels:
      status: Warn
      team: test
    annotations:
      description: "abc is Down ! ! !"
      summary:  "abc服务停了,请留意!!!"
复制代码

Instale alertmanager y extráigalo

tar xvfz alertmanager-*.tar.gz
cd alertmanager-*
复制代码

configurar

alertmanager.yml

global: 
  resolve_timeout: 5m #解析的超时时间
  smtp_smarthost: 'smtp.xxx.com:465' #邮箱smtp地址
  smtp_from: '[email protected]' #来自哪个邮箱发出的
  smtp_auth_username: '[email protected]' #邮箱的用户名
  smtp_auth_password: 'W7CKmqD2x0iGXM9R' #这里是邮箱的授权密码,不是登录密码
  smtp_require_tls: false #是否启用tls

templates:
  - ./email.html

route:
  group_by: ['abc']
  group_wait: 3s
  group_interval: 10s
  repeat_interval: 3h
  receiver: 'mail'
receivers:
- name: 'mail'
  email_configs: #email的配置
  - to: '[email protected], [email protected]' #报警接收人的邮件地址
    send_resolved: true  #发送恢复通知
    html: '{{ template "email.html" . }}'
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']
复制代码

código

agregar dependencia pom

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

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
复制代码

application.properties aumentar la configuración

#监控
management.endpoints.web.exposure.include=prometheus
复制代码

Instalar Grafana

wget <https://dl.grafana.com/enterprise/release/grafana-enterprise-8.4.6.linux-amd64.tar.gz>\
tar -zxvf grafana-enterprise-8.4.6.linux-amd64.tar.gz
复制代码

Configuración de referencia de Grafana

Agregar fuente de datos

pro.png

gra.png

panel de importación

importar.png

mercado de plantillas de tableros

guion.png

tablerob.png

Proyecto de referencia

Supongo que te gusta

Origin juejin.im/post/7087849471849005092
Recomendado
Clasificación