Category Archives: Monitoring

Мониторинг серверов, сетей и оборудования

Prometheus: проверка отсутствия метрик – avg_over_time()

15 August 2018
 

 Среди прочих алертов у нас есть алерты на падение сервиса – когда метрика *_up == 0. Проблема в том, что такой алерт сработает только в том случае, если екпортёр сервиса явно вернёт значение ноль, но если ЕС2 с сервисом и екпортёром был выключен/удалён – то Alertmanager ничего не сообщит. Например – алерт на RDS выглядит… Read More »

Linux: systemd сервис для Docker Compose

14 August 2018
 

 Есть Docker Compose файл, который запускает Prometheus стек. Рабочий каталог Prometheus – /opt/prometheus, в котором находится Compose файл prometheus-compose.yml. Для управления им через systemd – создаём файл /etc/systemd/system/prometheus.service: [Unit] Description=Prometheus stack Requires=docker.service After=docker.service [Service] Restart=always WorkingDirectory=/opt/prometheus ExecStart=/usr/local/bin/docker-compose -f prometheus-compose.yml up ExecStop=/usr/local/bin/docker-compose -f prometheus-compose.yml down [Install] WantedBy=multi-user.target Проверяем. Запускаем: Проверяем контейнер: Статус процесса: При именениях в… Read More »

Prometheus: OpsGenie и Alertmanager – уведомления в почту/SMS/телефон

9 August 2018
 

 OpsGenie – сервис, позволяющий настроить отправку уведомлений на почту, в Slack, SMS и умеющий выполнять звонки при возникновении алерта. Кроме того – у него есть мобильные приложения для Android и iOS. Сейчас у нас нотификации отправляются только в Slack, через slack_configs Alertmanager-а, но этого явно мало, особенно если ночью упадёт какой-то критичный сервис. Собственно, задачей… Read More »

Prometehus: MySQL exporter

7 August 2018
 

 Ещё одна задача по мониторингу – проверять доступ к серверу баз данных. Краткая заметка просто для примера. Используем prometheus/mysqld_exporter. Подключаемся к серверу БД, добавляем пользователя: Задаём ему права доступа: Запускаем експортер: Проверяем метрики: Добавляем в Ansible шаблон Compose файла: … mysql_exporter: image: prom/mysqld-exporter networks: – prometheus-client ports: – 9104:9104 environment: – DATA_SOURCE_NAME={{ mysql_monitoring_user }}:{{ mysql_monitoring_pass }}@({{… Read More »

Prometheus: Alertmanager и blackbox-exporter – проверка срока действия SSL и нотификация в Slack

27 July 2018
 

 Основная задача – проверять SSL-сертификаты и уведомлять о том, что срок действия сертификата завершается. Запуск blackbox-exporter Все сервисы мониторинг запускаются из Compose-файла, который деплоится на хост мониторинга из Ansible-шаблона roles/monitoring/templates/prometheus-compose.yml.j2. Добавляем туда ещё один контейнер: … blackbox-exporter: image: prom/blackbox-exporter command: ‘–config.file=/config/blackbox.yml’ # for debug #command: ‘–config.file=/config/blackbox.yml –log.level=debug’ networks: – prometheus ports: – 9115:9115 volumes: -… Read More »

Grafana: создание dashboard

23 July 2018
 

 Задача – добавить дашборд для отображения различной статистики с бекенда. Ниже описывается процесс создания дашборды, рассматриваются примеры запросов из Grafana к Prometheus для получения данных, настройки различных типов панелей, примеры метрик, которые можно использовать. Основная цель поста – записать для себя примеры использования Grafana, т.к. подобных примеров не встречал, хотя у Grafana отличная документация. Для… Read More »

Prometheus: nginx_exporter и сбор метрик с NGINX

19 July 2018
 

 Имеется два експортёра для NGINX – discordianfish/nginx_exporter и hnlq715/nginx-vts-exporter. Второй предоставляет больше возможностей, но мне сейчас нужны самые базовые, поэтому использую discordianfish/nginx_exporter. NGINX status Сначала – добавим /nginx_status в NGINX. Проверяем – собран ли NGINX со статус-модулем: Я добавил отдельный конфиг /etc/nginx/conf.d/status.conf с default_server, который принимает запросы на статус: server {     charset utf-8;     listen 80 default_server;     server_name _;     location /nginx_status {         stub_status on;         access_log off;         allow 127.0.0.1;         deny all;… Read More »

Grafana: добавление CloudWatch data-sorce

18 July 2018
 

 Для получения метрик из AWS CloudWatch для связки Grafana/Prometheus можно использовать два подхода: собирать метрики в Prometheus с помощью cloudwatch_exporter добавить новый data-source в Grafana, и рисовать графики используя его Ниже описывается процесс добавления data-source в Grafana и графиков AWS Load Balancer. IAM пользователь Добавляем IAM пользователя с Programmatic access: В Permissions выбираем Attach existing policies… Read More »

Prometheus: CloudWatch exporter – сбор метрик из AWS и графики в Grafana

21 June 2018
 

 Используем prometheus/cloudwatch_exporter. Клиент написан, внезапно, на Java, из минусов – не умеет экпортировать теги AWS в метки Prometheus (есть альтернативный клиент – technofy/cloudwatch_exporter, который вроде бы умеет). IAM пользователь Для IAM пользователя, доступы которого будет использовать експортёр требуются роли cloudwatch:ListMetrics и cloudwatch:GetMetricStatistics (надо проверить – сработает ли роль CloudWatchAgentServerPolicy, подключенная к EC2, что бы не использовать Access/Secret… Read More »

Grafana: добавление datasource из Ansible

18 June 2018
 

 В Grafana 5.0 появилась возможность настраивать её без API, а просто добавляя файлы настроек. Документация тут>>>. Удобно для использования с Ansible etc. Ниже быстрый пример применения. Путь к каталогу задаётся через переменную GF_PATHS_PROVISIONING: t=2018-06-18T13:11:26+0000 lvl=info msg=”Config overridden from Environment variable” logger=settings var=”GF_PATHS_PROVISIONING=/etc/grafana/provisioning” Ручное добавление Протестируем – попробуем добавить datasource вручную. Grafana запущена в контейнере, данные… Read More »