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:
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.
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!