Monthly Archives: July 2018

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 »

Jenkins: уведомление в Slack из Jenkins Scripted Pipeline

25 July 2018
 

 Имеется Jenkins-job, из которой необходимо отправлять уведомления по завершению билда. В Jenkins для этого имеется Slack Notification, который и применим. Хороший пост по теме – тут>>>. Устанавливаем его: Настраиваем Slack – переходим на https://setevoy.slack.com/apps/new/A0F7VRFKN-jenkins-ci (меняем setevoy на ваш URL, само собой), и добавляем Jenkins: И следуем инструкции: Настройка Slack Notification Переходим в Jenkins > Global configuration, внизу настраиваем Slack… Read More »

AWS: бекап EBS по расписанию через CloudWatch rules или Data Lifecycle Manager

24 July 2018
 

 Выполнить снапшот EBS по расписанию можно двумя способами: старый – с помощью CloudWatch rules, и новый – с помощью Data Lifecycle Manager. EBS backup with CloudWatch rules Переходим в CloudWatch > Rules, жмём Create rule: В Event source выбираем Schedule, задаём время – фиксированный период или по крону, например – в 18:10 каждый день (время тут задаётся… 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 »

MySQL/MariaDB: ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number

16 July 2018
 

 В MySQL имеется функция PASSWORD() для получения хеша из строки с паролем, котоаря используется самим MySQL для проверки авторизации. При добавлении пользователя с использованием этой функции и при передачи пароля открытым текстом – возникает ошибка: Вариант первый – не использовать PASSWORD(), и передать пароль открытым: Проверяем: Вариант второй – таки сначала получить хеш пароля, вызвав PASSWORD()напрямую: И… Read More »

Docker: настройка tzdata и timezone во время билда

14 July 2018
 

 При сборке образа – билд останавливается с запросом на настройку tzdata. Dockerfile выглядит сейчас так: FROM ubuntu:18.04 RUN apt update && apt install -y python-pip python-dev ssh python-boto3 RUN pip install ansible==2.4.3.0 Запускаем сборку: И тут сборка зависает в ожидании ввода данных, при чём даже после указание региона – процесс не продолжается. Что бы избежать… Read More »

Ansible: проверить конфигурацию NGINX перед рестартом

13 July 2018
 

 Имеется роль nginx, в которой выполняется его настройка и копирование файлов. Последней задачей роли выполняется nginx restart. Проблема заключается в том, что попытка перезапуска NGINX выполняется в любом случае, и если в файле шаблона виртуалхоста есть ошибка – то NGINX не запустится. Что бы выполнить проверку – nginx -t – добавляем задачу с вызовом модуля… Read More »

Ansible: использование ansible_date_time для получения даты/времени

12 July 2018
 

 Имеется задача по созданию архива, в имени которого хочется добавлять дату и время его создания. Для получения даты-времени можно использовать ansible_date_time. Проверяем. Добавлем задачу, которая выведет всё содержимое: – name: Test date debug: msg: “{{ ansible_date_time }}” Запускаем: Теперь – попробуем получить отдельные значения, например date: – name: Test date debug: msg: “{{ ansible_date_time.date }}”… Read More »