Ещё одна задача по мониторингу — проверять доступ к серверу баз данных.
Краткая заметка просто для примера.
Используем prometheus/mysqld_exporter.
Подключаемся к серверу БД, добавляем пользователя:
[simterm]
MariaDB [(none)]> CREATE USER 'prometheus'@'10.0.2.7' IDENTIFIED BY 'password'; Query OK, 0 rows affected (0.00 sec)
[/simterm]
Задаём ему права доступа:
[simterm]
MariaDB [(none)]> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'prometheus'@'10.0.2.7'; Query OK, 0 rows affected (0.00 sec)
[/simterm]
Запускаем експортер:
[simterm]
root@bm-backed-app-dev:/opt/prometheus-client# docker run -p 9104:9104 -e DATA_SOURCE_NAME="prometheus:password@(rdsurl.us-east-2.rds.amazonaws.com:3306)/" prom/mysqld-exporter Unable to find image 'prom/mysqld-exporter:latest' locally latest: Pulling from prom/mysqld-exporter f70adabe43c0: Already exists b91f96ddd9e3: Already exists 25f34166cb87: Pull complete Digest: sha256:9f4fb61cca309cb4a8c1b9ed9fb4aa75af0f7a21f36d3954667db37c062a0172 Status: Downloaded newer image for prom/mysqld-exporter:latest time="2018-07-19T11:13:47Z" level=info msg="Starting mysqld_exporter (version=0.11.0, branch=HEAD, revision=5d7179615695a61ecc3b5bf90a2a7c76a9592cdd)" source="mysqld_exporter.go:206" time="2018-07-19T11:13:47Z" level=info msg="Build context (go=go1.10.3, user=root@3d3ff666b0e4, date=20180629-15:00:35)" source="mysqld_exporter.go:207" time="2018-07-19T11:13:47Z" level=info msg="Enabled scrapers:" source="mysqld_exporter.go:218" time="2018-07-19T11:13:47Z" level=info msg=" --collect.info_schema.tables" source="mysqld_exporter.go:222" time="2018-07-19T11:13:47Z" level=info msg=" --collect.global_status" source="mysqld_exporter.go:222" time="2018-07-19T11:13:47Z" level=info msg=" --collect.global_variables" source="mysqld_exporter.go:222" time="2018-07-19T11:13:47Z" level=info msg=" --collect.slave_status" source="mysqld_exporter.go:222" time="2018-07-19T11:13:47Z" level=info msg="Listening on :9104" source="mysqld_exporter.go:232"
[/simterm]
Проверяем метрики:
[simterm]
admin@bm-backed-app-dev:~$ curl -s localhost:9104/metrics | grep -v \# | grep mysql_up mysql_up 1
[/simterm]
Добавляем в Ansible шаблон Compose файла:
... mysql_exporter: image: prom/mysqld-exporter networks: - prometheus-client ports: - 9104:9104 environment: - DATA_SOURCE_NAME={{ mysql_monitoring_user }}:{{ mysql_monitoring_pass }}@({{ mysql_monitoring_host }}:3306)/ ...
Готово.