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

24 июля 2018
 

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

Grafana: создание dashboard

23 июля 2018
 

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

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

19 июля 2018
 

 Имеется два експортёра для NGINX — discordianfish/nginx_exporter и hnlq715/nginx-vts-exporter. Второй предоставляет больше возможностей, но мне сейчас нужны самые базовые, поэтому использую discordianfish/nginx_exporter. NGINX status Сначала — добавим /nginx_status в NGINX. Проверяем — собран ли NGINX со статус-модулем: [simterm] root@bm-backed-app-dev:/opt/prometheus-client# nginx -V 2>&1 | grep -o with-http_stub_status_module with-http_stub_status_module [/simterm] Я добавил отдельный конфиг /etc/nginx/conf.d/status.conf с default_server, который принимает запросы… Читать далее »

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

18 июля 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… Читать далее »

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

16 июля 2018
 

 В MySQL имеется функция PASSWORD() для получения хеша из строки с паролем, котоаря используется самим MySQL для проверки авторизации. При добавлении пользователя с использованием этой функции и при передачи пароля открытым текстом — возникает ошибка: [simterm] MariaDB [(none)]> CREATE USER ‘ruser’@’%’ IDENTIFIED BY PASSWORD ‘password’; ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number… Читать далее »

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

14 июля 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 Запускаем сборку: [simterm] admin@jenkins-production:~$ docker build -t proj/proj-ansible:1.1 . Sending build context to Docker daemon 29.62MB Step 1/3 : FROM ubuntu:18.04 —> 113a43faa138… Читать далее »

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

13 июля 2018
 

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

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

12 июля 2018
 

 Имеется задача по созданию архива, в имени которого хочется добавлять дату и время его создания. Для получения даты-времени можно использовать ansible_date_time. Проверяем. Добавлем задачу, которая выведет всё содержимое: — name: Test date debug: msg: «{{ ansible_date_time }}» Запускаем: [simterm] $ ansible-playbook -i hosts.ini —tags test —limit mobilebackend-dev mobilebackend.yml —extra-vars «ansible_connection=local» PLAY [all] **** TASK [Gathering… Читать далее »

Ansible: использование with_dict на примере модуля rabbitmq_user

11 июля 2018
 

 Требуется создать пользователей и пароли для RabbitMQ, используя плагин rabbitmq_user. При этом хочется не создавать несколько переменных и несколько задач, а всё выполнить в одном цикле, но у каждой переменной должно быть несколько полей и значений. Используем with_dict и словарь в переменных. В файле roles/roles/rabbitmq/vars/main.yml добавляем: rabbitmq_users: user1: password: «pass1» vhost: «/» configure_priv: .* read_priv:… Читать далее »

MariaDB: AWS RDS read-replica и Seconds_Behind_Master

10 июля 2018
 

 Имеется AWS RDS read-replica сервер, у котого постоянно растёт значение Seconds_Behind_Master. Ниже — попытки разобраться в причинах и исправить ситуацию. Забегая наперёд — причину нашёл, однако решения как избежать её в будущем не искал, а «пофиксилось» путём запуска нового read-replica сервера, но на будущее оставлю себе запись о том, как проверял статус и искал решение.… Читать далее »