Linux: kernel panic-not syncing: VFS: unable to mount root fs on unknown block(0,0)

17 August 2018
 

 Есть Ubuntu машинка, Jenkins билд-агент. Последнее время начала выпадать в Kernel panic и просто во время работы, и при перезагрузке, с ошибкой вида “kernel panic-not syncing: VFS: unable to mount root fs on unknown block(0,0)“. Причина оказалась банальна – раздел /boot был забит чуть менее, чем полностью (с). Для решения – находим старые ядра: И… Read More »

Jenkins: Scripted Pipeline – подтверждение выполнения для Production окружения

16 August 2018
 

 Есть несколько задач, которые выполняются в Scripted Pipeline. В задачах выполняется провижен CloudFormation и запуск Ansible плейбука на Dev и Production. Что бы исключить случайный запуск Production задачи – хочется добавить шаг подтверждения действия. Используем pipeline-input-step и класс BooleanParameterDefinition. Добавляем функцию verify(): def verify() { stage(‘Verify’) { def userInput = input( id: ‘userInput’, message: ‘This… Read More »

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 »

AWS: 502 ошибка на Application Load balancer

10 August 2018
 

 Имеется ALB, на который постоянно срабатывает Alertmanager с ошибкой 502: В CloudWatch видно, что ошибка возникает спорадически, и только один раз: При этом в логах NGINX никаких ошибок нет Первым делом – включаем логи ALB: Не то что бы они чем-то реально помогли – но по крайне мере теперь можно увидеть ошибку “вживую” : 52.***.***.142… Read More »

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

9 August 2018
 

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

RabbitMQ: Ansible и Hostname mismatch: node believes its host is different.

8 August 2018
 

 Имеется Ansible плейбук, где среди прочего выполняется установка и настройка RabbitMQ. При запуске задачи с использованием плагина rabbitmq_vhost возникает ошибка: Решение – добавить в вызов rabbitmq_vhost имя ноды с указанием имени хоста, в примере ниже это будет node: “rabbit@{{ set_hostname }}”: … – name: Add RabbitMQ vhosts rabbitmq_vhost: node: “rabbit@{{ set_hostname }}” name: “{{ item.value.vhost… 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 »

AWS: CloudFormation – создание EFS + Ansible роль

1 August 2018
 

 Задача – добавить ресурсы AWS Elastic File System в существующий CloudFormation стек. В CloudFormation для этого имеется ресурс AWS::EFS::FileSystem, который и используем. Шаблон для CloudFormation уже создан, и в примерах ниже будут отсылки к его ресурсам. Contents Опции EFSPerformance modeThroughput ModesCloudFormationAWS::EC2::SecurityGroupAWS::EFS::MountTargetAWS::EFS::FileSystemOutputsAnsible Опции EFS Перед тем, как создавать EFS – немного рассмотрим доступные опции. EFS имеет два… 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 »