Spring Cloud microservices combate real para crear un sistema de cupones a nivel empresarial

descargar: Spring Cloud microservices combate real para crear un sistema de cupones a nivel empresarial

Hay muchos tutoriales de la página de inicio de comercio electrónico, pero hay pocos tutoriales completos y prácticos sobre el sistema de cupones. Este curso construirá un sistema de cupones a mano, basado en el marco de desarrollo de microservicios de Java convencional SpringCloud, combinado con las herramientas de uso común MySQL, Redis y Kafka, y completará el negocio principal del sistema de cupones de comercio electrónico a través de los tres microservicios de cupón. plantilla, distribución y liquidación Es una herramienta indispensable
para que los amigos se instalen, aumenten el salario, cambien de trabajo y se transformen .
Adecuado para la multitud
Estudiantes que han completado la planificación y solicitantes de empleo
que se están preparando para las entrevistas. Estudiantes interesados ​​en el sistema de cupones de comercio electrónico.
Requisitos de reserva técnica.
Familiarizados con las aplicaciones básicas de Spring y SpringMVC.
Comprender los comandos comunes de MySQL, Redis y Kafka.

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/114444355
Recomendado
Clasificación