Desbloquee profundamente los componentes principales de Spring Cloud para resolver muchos problemas en microservicios

descargar: Desbloquee profundamente los componentes principales de SpringCloud para resolver muchos problemas en microservicios

Este curso es un curso de microservicio basado en la integración de SpringCloud del proyecto de backend del centro comercial "Maoyan", desde cero hasta explicaciones detalladas que incluyen Gateway, Hystrix, Ribbon, Feign y otros componentes principales y sus características avanzadas. Al mismo tiempo, también presentará problemas de microservicios encontrados en el trabajo, como seguridad de microservicios, pruebas automatizadas e implementación de Docker, y explicará las causas y soluciones para ayudar fundamentalmente a todos a resolver los problemas del trabajo y las entrevistas.
Adecuado para la multitud
Estudiantes que quieren entender
microservicios;
estudiantes que están interesados ​​en muchas características avanzadas de SpringCloud; estudiantes que encuentran problemas extraños en el trabajo y entrevistas y no pueden comenzar.
Requisitos de reserva técnica.
Familiarizados con las aplicaciones básicas de Spring y SpringMVC frameworks.
Familiarizado con los comandos comunes de MySQL.
Comprender los comandos básicos de Linux.

Ansible implementa prometheus + node-exporter
implementación simple del sistema de monitoreo prometheus

yum dispositivo ansible
yum instalar
archivo de hosts ansible ansible

[alertmanagers]
10.9.119.1
[prometheus]
10.9.119.1
[exportador de nodos]
10.9.119.1
10.9.119.2
10.9.119.3 El
formato de jerarquía de archivos es el siguiente:

prometheus
prometheus.yml

  • hosts: prometheus
    remote_user:
    tareas raíz :
    • nombre: crear
      archivo de directorio :
      ruta: / opt / prometheus
      estado: directorio # Crear si no hay directorio
    • nombre: copiar archivo
      unarchive:
      old-src: prometheus-2.24.0.linux-amd64.tar.gz
      dest: / opt / prometheus
    • nombre: crear
      archivo de enlace :
      old-src: /opt/prometheus/prometheus-2.24.0.linux-amd64
      dest: / opt / prometheus / prometheus
      estado: enlace # 软 链接
    • nombre:
      plantilla de archivo de servicio de copia :
      old-src: prometheus.service.j2
      dest: /usr/lib/systemd/system/prometheus.service
    • name: copy config yaml
      template:
      old-src: prometheus.yml.j2
      dest: /opt/prometheus/prometheus/prometheus.yml
      notificar:
      • reiniciar prometheus
    • nombre: crear
      archivo de directorio de reglas :
      ruta: / opt / prometheus / prometheus /
      estado de reglas : directorio
    • name: copy rules yaml # Hay símbolos especiales en el nodo, así que usa copy
      copy:
      old-src: node.yml
      dest: /opt/prometheus/prometheus/rules/node.yml
      notifica: # Esta acción activará manejadores
      • reiniciar prometheus
    • nombre: iniciar
      servicio de prometheus :
      nombre:
      estado de prometheus : iniciado
      habilitado: sí
      controladores:
    • nombre: reiniciar prometheus
      servicio:
      nombre: prometheus
      estado: reiniciado
      prometheus.service.j2 Se puede usar el módulo de copia, y la plantilla se usa aquí

[Unidad]
Descripción =
Documentación de Prometheus =
Después = network.target
[Servicio]
WorkingDirectory = / opt / prometheus / prometheus
ExecStart = / opt / prometheus / prometheus / prometheus
ExecReload = / bin / kill -HUP $ MAINPID
ExecStop = / bin / kill -KILL $ MAINPID
Tipo = simple
KillMode = grupo de control
Reiniciar = en caso de falla
RestartSec = 3s
[Instalar]
WantedBy = multi-user.target
prometheus.yml.j2

Configuración global

global:
scrape_interval: 30s #Tiempo de distancia de agarre Evaluation_interval: 30s #Tiempo de distancia de
ejecución del motor de
reglas query_log_file: ./promql.log

Configuración de alarma


alerting : alertmanagers: # Alertmanagers 配置

  • static_configs: # Configuración estática de Alertmanager
    • objetivos: # alertmanager enviar configuración de destino
      {% para alertmanager en grupos ['alertmanagers']%}
      • { {alertmanager}}: 9093
        {% endfor%}
        rule_files: # configuración del archivo de reglas
  • "
    Reglas /*.yml" scrape_configs: # configuración de agarre
  • job_name: 'prometheus' #Clasificación del propósito de la colección de tareas
    static_configs: # Configuración estática del propósito de la captura
    • objetivos:
      {% para prometheu en grupos ['prometheus']%}
      • "{ {prometheu}}: 9090" # Propósito de agarre
        {% endfor%}
  • job_name: "nodo"
    static_configs:
    • objetivos:
      {% para nodo en grupos ['exportador de nodo']%}
      • "{ {Node}}: 9100"
        {% endfor%}
        reglas de nodo

grupos:

  • name: node.rules #
    Reglas de título del grupo de reglas de alarma :

    • alert: node is Down
      expr: up == 0
      for: 30s #Duration, lo que significa que si no se obtiene información durante 30 segundos, se activará una alarma.
      etiquetas:
      gravedad: grave # Etiqueta personalizada
      anotaciones graves :
      resumen: “Instancia { {$ labels.instance}} down "#
      Descripción resumida personalizada :" { {$ labels.instance}} del trabajo { {$ labels.job}} ha estado inactivo durante más de 5 minutos. "# Descripción detallada personalizada
    • alert: node Sistema de archivos
      expr: 100 - (node_filesystem_free_bytes {fstype = ~ "ext4 | xfs"} / node_filesystem_size_bytes {fstype = ~ "ext4 | xfs"} * 100)> 80
      para: 2m
      etiquetas:
      gravedad:
      anotaciones de advertencia :
      resumen: " { { Error de análisis de KaTeX: se esperaba 'EOF', obtuvo '}' en la posición 16: etiquetas.instancia} ̲}: { { etiquetas.punto de montaje}} 分区 运用 过高 ” descripción:“ { { Error de análisis de KaTeX: se esperaba 'EOF ', obtuvo'} 'en la posición 16: etiquetas.instancia} ̲}: { { etiquetas.punto de montaje}} 分区 运用 大于 80% (当前 值: { {$ valor}}) ”
    • alert: node Memory
      expr: 100- (node_memory_MemFree_bytes + node_memory_Cached_bytes + node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100> 80
      para: 2 millones de
      etiquetas:
      severidad:
      anotaciones de advertencia :
      resumen: “{ { KaTeX parseOF 'error de error: esperado', obtuvo la posición 16: etiquetas.instancia} ̲}: uso de memoria demasiado alto "de ... etiquetas.instancia}}: uso de memoria mayor al 80% (valor actual: { {$ valor}})"
    • alerta: CPU del nodo
      expr: 100 - (avg (irate (node_cpu_seconds_total {mode = "idle"} [5m])) por (instancia) * 100)> 80
      para: 2m
      etiquetas:
      gravedad:
      anotaciones de advertencia :
      resumen: "{ { Error de análisis de KaTeX: se esperaba 'EOF', obtuvo '}' en la posición 16: etiquetas.instancia} ̲}: CPU 运用 过高 "d… etiquetas.instancia}}: CPU 运用 大于 80% (当前 值: { {$ valor }}) ” Exportador de nodos exportador de nodos.yml

  • hosts: nodo-exporter
    usuario_remoto:
    tareas raíz :

    • nombre: crear
      archivo de directorio :
      ruta: / opt / prometheus
      estado: directorio
    • nombre: copiar archivo
      unarchive:
      old-src: node_exporter-1.0.1.linux-amd64.tar.gz
      dest: / opt / prometheus
    • nombre: crear
      archivo de enlace :
      old-src: /opt/prometheus/node_exporter-1.0.1.linux-amd64
      dest: / opt / prometheus / node_exporter
      estado: enlace
    • nombre:
      plantilla de archivo de servicio de copia :
      old-src: node_exporter.service.j2
      dest: /usr/lib/systemd/system/node_exporter.service
    • nombre: iniciar
      servicio exportador_nodo :
      nombre: exportador_nodo
      estado: reiniciado
      habilitado: sí
      exportador_nodo.servicio.j2

[Unidad]
Descripción =
Documentación del exportador de nodo =
Después = network.target
[Servicio]
WorkingDirectory = / opt / prometheus / node_exporter /
ExecStart = / opt / prometheus / node_exporter / node_exporter
ExecStop = / bin / kill -KILL $ MAINPID
Tipo = simple
KillMode = grupo de control
Reiniciar = en caso de falla
RestartSec = 3s
[Instalar]
WantedBy = multi-user.target
alertmanager
alertmanager.yaml

  • hosts: alertmanagers
    usuario_remoto:
    tareas raíz :
    • nombre: crear
      archivo de directorio :
      ruta: / opt / prometheus
      estado: directorio
    • nombre: copiar archivo
      unarchive:
      old-src: alertmanager-0.21.0.linux-amd64.tar.gz
      dest: / opt / prometheus
    • nombre: crear
      archivo de enlace :
      old-src: /opt/prometheus/alertmanager-0.21.0.linux-amd64
      dest: / opt / prometheus / alertmanager
      estado: enlace
    • nombre:
      plantilla de archivo de servicio de copia :
      old-src: alertmanager.service.j2
      dest: /usr/lib/systemd/system/alertmanager.service
    • name: copy config yaml
      template:
      old-src: alertmanager.yml.j2
      dest: /opt/prometheus/alertmanager/alertmanager.yml
      notificar:
      • reiniciar alertmanager
    • nombre: iniciar el
      servicio del servidor :
      nombre: alertmanager
      estado: reiniciado
      habilitado: sí
      controladores:
    • nombre: reiniciar el
      servicio alertmanager :
      nombre: alertmanager
      estado: reiniciado
      alertmanager.service.j2

[Unidad]
Descripción =
Documentación de AlertManager =
Después = network.target
[Servicio]
WorkingDirectory = / opt / prometheus / alertmanager /
ExecStart = / opt / prometheus / alertmanager / alertmanager
ExecReload = / bin / kill -HUP $ MAINPID
ExecStop = / bin / kill -KILL $ MAINPID
Tipo = simple
KillMode = grupo de control
Reiniciar = en caso de falla
RestartSec = 3s
[Instalar]
WantedBy = multi-user.target
alertmanager.yml.j2 这里 运用 了 邮箱 告警

global:
resolve_timeout: 5m # Cuando el estado de la alarma tiene un cambio de disparo para resolverse, cuánto tiempo pasará antes de que se publique el anuncio.
smtp_from: “[email protected]
smtp_smarthost: 'smtp.qq.com: 465'
smtp_auth_username: “[email protected]” # Cuenta de correo electrónico
smtp_auth_password: “bcvizcgqbgojjjeb” # Contraseña, contraseña no
port
route:
group_by: ['alertname'] # Qué etiqueta se usa como agrupación según
group_wait: 10s # Tiempo de espera del grupo 10s
group_interval: 10s # La distancia y el tiempo entre los grupos superior e inferior para enviar alarmas 10s
repeat_interval: 24h # Repetir enviando la hora de la alarma. La hora predeterminada no enviará la misma alarma repetidamente.
Receptor silencioso : 'receptor predeterminado' # aceptador predeterminado

Todas las alarmas que no coincidan con las siguientes subrutas se guardarán en el nodo raíz y se enviarán al 'receptor predeterminado'

rutas: # Grupo

  • receptor: 'db'
    group_wait: 10s
    match_re:

    El uso de alarmas coincidentes regulares contiene dos servicios, que se envían a db

    service: mysql | redis #Todo el servicio = mysql o service = redis las alarmas se asignan al extremo receptor de la base de datos
  • receptor: 'web'
    group_by: [producto, entorno] # Utilice etiquetas de producto y entorno como base de agrupación
    coincidencia:
    equipo: frontend # Todas las etiquetas de alarma con frontend se envían a los
    receptores web :
  • nombre: 'receptor predeterminado'
    email_configs:
  • nombre: 'db'
    # Enviar alarma por correo electrónico
    email_configs: -to
    : '[email protected]'
  • name: 'web'
    email_configs: -to:
    '[email protected]'
    inhibit_rules: # Inhibit, pero ambos están alarmados. Si el nivel es severo, la advertencia de nivel se inhibirá y solo se producirán alarmas de nivel grave
    • source_match:
      severity: 'critic' # La alarma crítica suprimirá la información de alarma de nivel de advertencia
      target_match:
      severity: 'warning'
      equal: ['alertname', 'dev', 'instance']

Supongo que te gusta

Origin blog.csdn.net/qiusuo123456/article/details/114444296
Recomendado
Clasificación