Eugenio Goryaev
Desarrollo, soporte y optimización

Monitoreo del servidor para proyectos Web con DataDog

La ilustración para el artículo Monitoreo del servidor para proyectos Web con DataDog

Aprendí sobre DataDog en 2017 de uno de mis podcasts favoritos: DevZen. Desde entonces, ha sido mi asistente confiable en el monitoreo de mis servidores y la salud de los sitios que mantengo.

En este artículo te diré qué partes del agente DataDog uso y cómo las configuro para recibir las métricas y las notificaciones. Una cuenta gratuita es suficiente para mí (también probé una pagada - pero resultó ser demasiado caro para mí, y una gratis es simplemente perfecta).

Infraestructura: cómo ejecuto sitios web

Primero, unas palabras sobre cómo ejecuto varios sitios en el mismo servidor: para esto, por supuesto, uso docker y docker-compose. Nginx o traefik actúa como equilibrador y proxy inverso. Por lo tanto, cada sitio se está ejecutando en su propio entorno, en su propia subred, con servicios que sólo necesita para sí mismo. Al mismo tiempo, los proyectos están completamente aislados entre sí, tanto a nivel de red como de sistema de archivos:

Server scheme

Instalación del DadaDog agent

En primer lugar, instale el agente oficial DataDog utilizando el comando que se puede encontrar en la documentación oficial. La señal única del usuario de datadog ya se sustituirá en el comando ejecutado: sólo es necesario ejecutarla:

DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=XXX DD_SITE="datadoghq.com" bash -c "$(curl -L 
https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)"

A continuación, debe instalar el módulo para recopilar métricas traefik con un comando separado, si utiliza traefik (I recientemente - sí). Esto debe hacerse con el usuario de dd-agent:

sudo -u dd-agent datadog-agent integration install -t datadog-traefik==1.0.0

Además, ya que vamos a trabajar con docker, necesitamos agregar el usuario dd-agent al grupo docker para que pueda interactuar con el servicio:

usermod -aG docker dd-agent

Configuración del DataDog Agent

Una vez instalado el agente, se deben crear o editar varios archivos de configuración:

Docker

Para activar la supervisión del docker:

/etc/datadog-agent/conf.d/docker.d/conf.yaml

init_config:
instances:
    - url: "unix://var/run/docker.sock"
      new_tag_names: true

Volúmenes

Corregimos la lista de particiones para no recopilar información sobre discos virtuales creados por docker. De lo contrario, los datos se dañarán:

/etc/datadog-agent/conf.d/disk.d/conf.yaml

init_config:
instances:
  - use_mount: false
    file_system_blacklist:
      - tmpfs
      - none
      - shm
      - nsfs
      - netns
      - binfmt_misc
      - autofs
    mount_point_blacklist:
      - /var/lib/docker/(containers|overlay2)/
      - /run/docker/
      - /sys/kernel/debug/
      - /run/user/1000/

Traefik

Si está utilizando traefik, actívelo utilizando la configuración:

/etc/datadog-agent/conf.d/traefik.d/conf.yaml

init_config:
instances:
  - host: localhost 

Además, se debe agregar el siguiente bloque a la configuración de traefik:

metrics:
  datadog:
    addEntryPointsLabels: true

Nginx

Si está utilizando nginx, active esta configuración: /etc/datadog-agent/conf.d/nginx.d/conf.yaml

init_config:
instances:
  - nginx_status_url: http://localhost:8831/nginx_status

También creamos una configuración que abre un puerto para la página de estado de nginx: /etc/nginx/sites-enabled/nginx_status

server {
    listen 8831;
    location /nginx_status {
        stub_status;
        }
}

Comprobaciones del protocolo HTTP

El DataDog tiene grandes oportunidades para varios tipos de comprobaciones basadas en el protocolo http: verifica la presencia de una cadena en la respuesta, encabezados, códigos de respuesta, tiempos de espera, etc. Puede encontrar más detalles en la documentación oficial. En mi ejemplo, se aplican las comprobaciones más sencillas del estado de la página principal. En la vida real, este archivo puede ser muy largo para mí y comprobar diferentes urls del sitio, incluyendo especialmente «pesados» y lentos.

/etc/datadog-agent/conf.d/http_check.d/conf.yaml

init_config:
instances:
  - name: akvilon.expert
    url: https://akvilon.expert
    timeout: 5
    http_response_status_code: 200
    seconds_warning: 3

  - name: volvofix.ru
    url: https://volvofix.ru
    timeout: 5
    http_response_status_code: 200
    seconds_warning: 3

Una vez completada la configuración, nuestro host y una lista de servicios que se encuentran en él aparecerán en la sección Lista de infraestructuras.

DadaDog

Según los datos recibidos, puede configurar fácilmente alertas para eventos como:

  • falta de espacio libre en discos o en RAM
  • problemas de rendimiento del sitio web: tiempo de inactividad o largos tiempos de espera
  • vencimiento inminente de los certificados tls
  • tiempo de inactividad de todo el servidor

Utilizando datadog de forma gratuita durante varios años, estaba convencido de que esta es una gran herramienta y un asistente indispensable para el monitoreo de la infraestructura. Además, tiene un millón de otras características y funciones que se pueden utilizar para mantener proyectos web: por ejemplo, pruebas de navegador sintético.

Espero que haya encontrado esta información útil!