¡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
复制代码