Использование систем мониторинга Datadog при разработке проекта на Azure

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Для меня, как и для моей команды, важна скорость разработки и ее качество, именно поэтому особое внимание я всегда уделяю выбору хорошей системе мониторинга.

В моем понимании мониторинг должен быть:

  • Хорошо визуализированным;

  • Максимально удобным в использовании;

  • Гибким по различным настройкам; 

  • Надежным в плане отказоустойчивости, обновлений;

  • Адаптированным к нагрузкам.

Немного бекграунда: в основном я занимаются разработкой новых фич, выпуском обновлений, поиском и устранением ошибок. Как и вам, мне важно понимать, как ведет себя разрабатываемая система в контексте ресурсов и нагрузок. Именно поэтому нужна грамотная и качественно настроенная система мониторинга. Одной из таких, на мой взгляд, как раз и является система Datadog, о преимуществах и возможностях которой я хотел бы рассказать подробнее. 

Очевидные бенефиты Datadog:

  1. Различные возможности интеграции с системами на разных уровнях. https://docs.datadoghq.com/integrations/

  1. Достаточно хорошая документация по настройке интеграций к различным сервисам. 

Итак, используемый стек технологий: Azure Services, Azure Kubernetes Service (AKS), MSSQL, MongoDB, Rabbitmq, ASP .Net Core 5. 

Так что, дорогие читатели, в тексте расскажу о возможности мониторинга Datadog на различных уровнях. А о том, как развернуть проект в AKS, настроить CI/CD и прочие DevOps фишки оставлю на сладкое до следующего материала.

В статье хотел бы разложить по полочкам следующие блоки:

  • мониторинг Azure 

  • мониторинг Kubernetes

  • мониторинг баз данных и rabbitmq

  • мониторинг приложений 

  • мониторинг сервисов

Как и в любой системе мониторинга, в Datadog хотелось бы видеть всё структурированно, поэтому рекомендую создавать для проекта отдельную организацию (неймспейс) в личном кабинете Datadog. 

Уровни и интеграции мониторинга (а также тонкости настроек) 

При разработке проектов на Azure существует возможность интеграции с подпиской Azure.

Для интеграции необходимо знать:

  • Tenant_name

  • Client_id

  • Client_secret

Шаги интеграции с Azure хорошо описаны тут: https://github.com/ryanmaclean/k8s-dd-cnhh

Отталкиваясь от информации по ссылке на github сразу устанавливаем через Helm в кубернейтс агента Datadog для мониторинга самих сущностей Kubernetes, указывая в качестве параметра DD_API_KEY который сгенерирован в личном кабинете для организации (Integrations->Agent).

Следующий наш шаг - установка соответствующих модулей в меню Integrations Datadog для Azure и для Kubernetes. 

Кстати, очень удобно что при интеграции и установке модуля сразу предлагаются ссылки на инструкции на сайте компании. Вот такой вот плюс! 

Успешно настроив предыдущее шаги и подождав некоторое время сразу “из коробки” видим огромное количество готовых дашбордов в личном кабинете Datadog. Наблюдаем мониторинг  сервисов подписки Azure и мониторинг нашего AKS кластера. 

Присутствует мониторинг хостов в AKS по всем ресурсам.

Мониторинг Kubernetes позволяет максимально детально мониторить всё необходимое (Pods, Deployments, Services…):

Все графики выглядят как и описано в блоге Datadog (https://www.datadoghq.com/blog/announcing-aks/) и даже лучше!

Ресурс также предлагает и самому пользователю попробовать себя в создании дашбордов и графиков по метрикам. Так что я решил не упустить эту возможность и поэкспериментировал с созданием собственных дашбордов. Результат оказался крайне полезнен для команды разработки системы.

На этом мы с командой решили не останавливаться и посмотреть возможные решения и архитектуру работы продукта Datadog по мониторингу баз данных используемых на проекте.

Для мониторинга баз данных использовали схему работы через агента Datadog. 

Настраиваются конфигурации мониторингов БД достаточно просто:

1) Для MSSQL предварительно создается пользовать.

Пример запроса в БД по созданию пользователя при установке интеграции модуля в системе Datadog.
Пример запроса в БД по созданию пользователя при установке интеграции модуля в системе Datadog.

2) Далее в на хосте агента в директории Datadog агента (etc/datadog) создается конфигурация в файл - conf.d/sqlserver.d/mssql-conf.yaml

Ниже приведу пример самых базовых настроек, более углубленная конфигурация будет зависеть от настроек вашего SQL сервера:

init_config:

instances:

  - host: IP,PORT

    username: datadog

    password: password

При необходимости подключения нескольких хостов их можно добавить в конфиг по аналогии. Кстати, также возможно добавление тегов к хостам.

При необходимости указываются дополнительные настройки для подключений к БД (например connector: odbc  с указанием конкретного driver) и различные специфические метрики.

Вы также можете собрать дополнительные метрики из вашей интеграции с SQL, в официальной документации достаточно неплохо расписано по этому вопросу: https://docs.datadoghq.com/integrations/faq/how-can-i-collect-more-metrics-from-my-sql-server-integration/

 “Из коробки” для SQLServer сразу доступно 2 дашборда: Overview и Metrics
“Из коробки” для SQLServer сразу доступно 2 дашборда: Overview и Metrics

Для MongoDB, как и для MSSQL, предварительно создается пользователь на основе инструкций при установке модуля интеграции на портале Datagog, а затем по примеру можно сделать  конфигурационный файл на агенте: conf.d/mongo.d/mongo-conf.yaml.

При интеграции создается 1 дашборд “из коробки”
При интеграции создается 1 дашборд “из коробки”

Для мониторинга RabbitMQ указывается api_url имя пользователя и пароль в базовой конфигурации. Из коробки создается 2 дашборда: Overview и Metrics.

Далее перейдём к самому интересному - мониторингу самих приложений и сервисов.

Для мониторинга приложений и сервисов также используется агент. В основном конфигурационном файле агента включается модуль  DogStatsD и указывается порт (по умолчанию 8125).

Для данных, отправленных с внешнего хоста, агенту Datadog требуется следующая конфигурация: dogstatsd_non_local_traffic: true и apm_non_local_traffic: true. Это также можно настроить в файле конфигурации datadog.yaml

В настройках приложений указывается адрес агента через который слать метрики в Datadog.

А вот дашборды для мониторинга самих приложений по используемым внутренним метрикам приходится создавать  самостоятельно.

 

Лично мне для настройки мониторинга ASP.Net сервисов помогла официальная документации по этой ссылке https://www.datadoghq.com/blog/asp-dotnet-core-monitoring/. Агент уже был, но необходимо было только добавить в сборку образов соответствующие строки и в системе CI/CD передавать переменные: DD_ENV, DD_SERVICE, DD_AGENT_HOST, соответственно для указания: энвайрмента, имени сервиса и адреса агента. 

После всего этого в Datadog в разделе APM->Services стали поступать данные, с максимально подробными метриками всех сервисов и отобразились автоматически графики. 

Проблемы есть везде, и тут это тоже не исключение. Мне пришлось столкнуться с тем, что ты сам вынужден ковыряться с настройками мониторинга MSSQL сервера в контексте использования определенного odbc драйвера. И чтобы не наступать на эти же грабли кому-то другому, дублирую вам ссылку на статью, которая помогал мне разобраться с установкой на агента и добавления в конфиг: https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017 

Теперь о перспективах: сейчас рассматривается возможное конфигурирование Datadog для сбора логов, пока используется другая система.

Немного затрагивая систему оповещений, хотелось бы отметить что она удобная в Datadog и интуитивно понятная.

повещения создаются в разделе “Monitors->Manage Monitors”
повещения создаются в разделе “Monitors->Manage Monitors”

Что ж, подводя итог могу сказать, что есть еще  множество тонких настроек в подробности которых я бы не вдавался именно в этой статье. Но всегда буду рад ответить на ваши комментарии. 

Стоит отметить, что Datadog также возможно интегрировать с различными системами оповещений.

Лично у меня остались только позитивные впечатления от Datadog: в процессе настройки системы на различных уровнях оперативно удавалось выявить те или иные проблемы. Так что да, мы с командой нашли оптимальный уровень ресурсов для нашего окружения. Меняя такие параметры как количество нод в кластере, распределение сервисов по нодам, ресурсы самих пулов узлов в кластере, а также используя различное количество потоков и количество параллельных запусков в тестировании и одновременное тестирование различных модулей системы, мы пришли к наиболее оптимальной конфигурации в нашем случае. 

Сейчас я уже хорошо понимаю, какие нагрузки на какие сервисы поступают при тестировании. Результат этой работы, конечно, впечатлял. 

И, на последок, небольшой список того, что мне удалось прокачать благодаря  Datadog:

  1. Сформировалось более детальное понимание работы разрабатываемой системы и реакции на те или иные изменения;

  2. Да, теперь у моей команды есть стабильная многоуровневая систему мониторинга;

  3. Улучшились процессы в команде и коммуникации между командами;

  4. Ускорилось время нахождения багов и конкретизировать влияние этих багов на систему;

  5. Оптимизировались сервисы по работе с базами данных;

  6. Улучшилось скорость разработки системы, а разрабатываемые сервисы стали лучше.

Источник: https://habr.com/ru/company/sdventures/blog/598599/


Интересные статьи

Интересные статьи

Привет, Хабр! Сегодня делимся подборкой наших крутых вебинаров и митапов по Azure в Июне. В этот раз их четыре, и один из четырех эвентов может вас заинтересовать, даже е...
Начало в статье «Когда программисту 1С становится скучно». В настоящее время существует множество систем машинного обучения. Технология бурно развивается. Разные производители решений ...
Это история появилась на стыке государственной медицины и IT. Она о том, как быстро и бесплатно получилось внедрить процесс информационного обеспечения станций скорой медицинской помощи о...
Использование контроля версий для разработки в ERP-системе MS Dynamics AX — штука довольно неоднозначная. Кто-то не использует совсем, кто-то использует встроенную систему контроля версий...
Часто, когда я говорю кому-то про уязвимость, на меня смотрят как на сумасшедшего с табличкой «Покайтесь, ибо конец света близок»! Сейчас все бегают в панике и пытаются организовать «удалёнку...