Мониторинг сервера для веб-проектов с DataDog
Про datadog я узнал, в 2017 году из одного из любимых IT-подкастов DevZen. С тех пор этот мой надежный помощник в наблюдении за моими серверами и работоспособностью сайтов, которые я поддерживаю. В этой статье я расскажу какие модули для агента datadog я использую и как их настраиваю для того, чтобы получать уведомления о проблемах. При этом, мне вплоне хватает бесплатного аккаунта (платный я тоже пробовал - но это оказалось слишком дорого для меня, а бесплатный - просто идельный).
Инфраструктура: как я запускаю сайты
Для начала пару слов о том, как я запускаю несколько сайтов на одном сервере: для этого я, конечно, использую docker и docker-compose. Как балансировщик и reverse-proxy выступает nginx или traefik. Таким образом, каждый сайт запускается в своем окружении, в своей подсети, с сервисами, которые ему необходимы только ему. При этом, обеспечивается полная изоляция проектов друг от друга и на уровне сети и на уровне файловой системы:
Установка dadadog agent
Для начала устанавливаем официальный агент, используя команду, которую можно найти в официальной документации. При этом, в выполняемую команду уже будет подставлен уникальный токен вашего пользователя datadog: ее необходимо только запустить:
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)"
Далее необходимо отдельной командой установить модуль для сбора метрик traefik, если вы используете его (я в последнее время - да). Делать это необходимо от имени пользователя dd-agent.
sudo -u dd-agent datadog-agent integration install -t datadog-traefik==1.0.0
Кроме того, так как мы будем работать с докером, необходимо добавить пользователя агента в группу докера, чтобы он мог взаимодействовать с ним:
usermod -aG docker dd-agent
Конфигурирование DataDog Agent
После того, как агент установлен, необходимо создать или отредактировать несколько конфигураций.
Docker
Активируем мониторинг докера:
/etc/datadog-agent/conf.d/docker.d/conf.yaml
init_config:
instances:
- url: "unix://var/run/docker.sock"
new_tag_names: true
Диски
Корректируем список дисков, чтобы не собирать информацию по виртуальным диска, создаваемым докером. В противном случае данные будут искажены:
/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
Если вы используете traefik, то активируем его с помощью конфига:
/etc/datadog-agent/conf.d/traefik.d/conf.yaml
init_config:
instances:
- host: localhost
Кроме того, в конфиг traefik необходимо добавить следующий блок:
metrics:
datadog:
addEntryPointsLabels: true
Nginx
Если вы используете nginx, то активируем его с помощью конфига: /etc/datadog-agent/conf.d/nginx.d/conf.yaml
init_config:
instances:
- nginx_status_url: http://localhost:8831/nginx_status
А так же создаем файл с конфигом, который открывает порт для мониторинга nginx: /etc/nginx/sites-enabled/nginx_status
server {
listen 8831;
location /nginx_status {
stub_status;
}
}
Проверки по HTTP протоколу
У датадога просто огромные возможности для разного типа проверок по http протоколу: проверки по наличию строки в ответе, заголовкам, кодам, таймаутам и тд. Подробно можно ознакомиться в официальной документации. В моем примере применены простейшие проверки на работоспособность главной страницы. В реальной жизни, этот файл у меня может быть очень длинным и проверять разные урлы сайта, включая особенно "тяжелые".
/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
После того, как настройки выполнены, в разделе Infrastructure List появится наш хост и список сервисов, которые на нем обнаружены:
Опираясь на получаемые данные, можно с легкостью настроить алерты на такие события, как:
- отсутствие свободного места на дисках или в оперативной памяти
- проблемы с работоспособностью сайтов: даунтайм или долгие ответы
- скорое истечение tls сертификатов
- даунтайм всего сервера
Используя datadog в бесплатном режиме нескольк лет, я убедился, что это прекрасный инструмент и незаменимый помощник для мониторнга инфраструктуры. Кроме того, у него еще миллион других возможностей и функций, которые можно использовать при поддержке веб-проектов: например, синтетические браузерные тесты.
Надеюсь, вам была полезна эта информация!