Мониторинг баз данных: Clickhouse Exporter
Чтобы выполнить данный сценарий мониторинга, установите и настройте серверы c использованием следующего оборудования:
- Prometheus 2.13 на ОС Ubuntu 18.04 LTS x86_64.
- Grafana 6.4.2 на ОС Ubuntu 18.04 LTS x86_64.
- Clickhouse 19.15.3.6 на ОС Ubuntu 18.04 LTS x86_64.
Для мониторинга параметров Clickhouse и сбора метрик в Prometheus используется экспортер, который опрашивает сервер Clickhouse и передает данные серверу Prometheus. Данные визуализируются в Grafana с помощью Dashboard.
- Выполните логин на сервере Clickhouse c правами суперпользователя.
- Поскольку exporter не существует в бинарном виде, установите пакеты для его сборки:
root@clickhouse:~# apt-get -y install git golang
- Создайте пользователя prometheus и группу prometheus, от имени которых вы будете запускать clickhouse_exporter:
root@clickhouse:~# groupadd --system prometheus
root@clickhouse:~# useradd --system -g prometheus -s /bin/false prometheus
- Скачайте exporter:
root@clickhouse:~# go get github.com/percona-lab/clickhouse_exporter
- Скомпилируйте exporter:
root@clickhouse:~# go build github.com/percona-lab/clickhouse_exporter
- Переместите exporter в папку /usr/local/bin:
root@clickhouse:~# mv ./clickhouse_exporter /usr/local/bin
- Измените владельца на prometheus:
root@clickhouse:~# chown -R prometheus:prometheus /usr/local/bin/clickhouse_exporter
- Создайте пользователя мониторинга на сервере Clickhouse. Для этого создайте файл /etc/clickhouse-server/users.d/web.xml со следующим содержимым:
<yandex>
<users>
<web>
<password>web</password>
<networks incl="networks" replace="replace">
<ip>::1</ip>
<ip>127.0.0.1</ip>
</networks>
<profile>readonly</profile>
<quota>default</quota>
<allow_databases>
<database>test</database>
</allow_databases>
</web>
</users>
</yandex>
- Запустите сервер Clickhouse:
root@clickhouse:~# systemctl restart clickhouse-server
-
Создайте сценарий запуска systemd сервиса clickhouse_exporter. Для этого создайте файл /etc/systemd/system/clickhouse_exporter.service со следующим содержимым:
[Unit] Description=Prometheus Clickhouse Exporter After=network.target [Service] Type=simple Restart=always User=prometheus Group=prometheus Environment=CLICKHOUSE_USER=web Environment=CLICKHOUSE_PASSWORD=web ExecStart=/usr/local/bin/clickhouse_exporter [Install] WantedBy=multi-user.target
- Запустите clickhouse_exporter:
root@clickhouse:~# systemctl daemon-reload
root@clickhouse:~# systemctl start clickhouse_exporter.service
root@clickhouse:~# systemctl enable clickhouse_exporter.service
Created symlink /etc/systemd/system/multi-user.target.wants/clickhouse_exporter.service → /etc/systemd/system/clickhouse_exporter.service.
- Убедитесь, что сервис запустился:
root@clickhouse:~# systemctl status clickhouse_exporter.service
● clickhouse_exporter.service - Prometheus Clickhouse Exporter
Loaded: loaded (/etc/systemd/system/clickhouse_exporter.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2019-10-24 06:26:17 UTC; 8s ago
Main PID: 10421 (clickhouse_expo)
Tasks: 5 (limit: 1151)
CGroup: /system.slice/clickhouse_exporter.service
└─10421 /usr/local/bin/clickhouse_exporter
Oct 24 06:26:17 clickhouse systemd[1]: Started Prometheus Clickhouse Exporter.
Oct 24 06:26:17 clickhouse clickhouse_exporter[10421]: time="2019-10-24T06:26:17Z" level=info msg="Error scraping clickhouse: Error scraping clickhouse url http://localhost:812
Oct 24 06:26:17 clickhouse clickhouse_exporter[10421]: " file=exporter.go line=292
Oct 24 06:26:17 clickhouse clickhouse_exporter[10421]: time="2019-10-24T06:26:17Z" level=info msg="Starting Server: :9116" file="clickhouse_exporter.go" line=34
- Выполните логин на ноду Prometheus.
- В файла /opt/prometheus/prometheus.yml в секцию scrape_configs добавьте секцию работы с clickhouse_exporter:
scrape_configs:
- job_name: clickhouse
static_configs:
- targets: ['<IP-адрес и порт сервера clickhouse_exporter>']
labels:
alias: clickhouse
- Перезапустите сервис Prometheus:
root@prometheus:~# systemctl reload prometheus.service
Для визуализации полученных данных установите соответствующий Dashboard (например, базовый ).
После установки и настройки получения данных с сервера Prometheus отобразится примерно следующее:
Чтобы посмотреть, как изменятся графики при нагрузке на сервер Clickhouse, создадим нагрузку .
Для этого:
- Установите соответствующий пакет:
root@clickhouse:~# apt-get -y install clickhouse-test
- Запустите тесты:
root@clickhouse:~# cd /usr/share/clickhouse-test/performance
root@clickhouse:/usr/share/clickhouse-test/performance# clickhouse performance-test --user default --password 'пароль пользователя default'
2019.10.24 08:03:11.856560 <Information> PerformanceTestSuite: Trying to find test scenario files in the current folder...
2019.10.24 08:03:11.857526 <Information> PerformanceTestSuite: Found 82 input files
2019.10.24 08:03:11.863838 <Information> PerformanceTestSuite: Preparing test configurations
2019.10.24 08:03:12.092390 <Information> PerformanceTestSuite: Test configurations prepared
2019.10.24 08:03:12.092833 <Information> PerformanceTestSuite: Config for test 'IPv4' parsed
2019.10.24 08:03:12.092992 <Information> PerformanceTestSuite: Preconditions for test 'IPv4' are fullfilled
2019.10.24 08:03:12.093084 <Information> PerformanceTestSuite: Preparing for run, have 15 create and fill queries
2019.10.24 08:03:12.093166 <Information> PerformanceTest: Executing create or fill query "CREATE TABLE IF NOT EXISTS ips_v4(ip String) ENGINE = MergeTree() PARTITION BY tuple() ORDER BY tuple()"
...
В результате тестовой нагрузки графики в Grafana изменяться:
Чтобы удалить clickhouse_exporter:
- Удалите Dashboard из Grafana.
- Из конфигурационного файла prometheus удалите секцию - job_name: clickhouse.
- На сервере с clickhouse_exporter выполните команды:
root@clickhouse:~# systemctl stop clickhouse_exporter.service
root@clickhouse:~# systemctl disable clickhouse_exporter.service
Removed /etc/systemd/system/multi-user.target.wants/clickhouse_exporter.service.
root@clickhouse:~# rm /etc/systemd/system/clickhouse_exporter.service
root@clickhouse:~# systemctl daemon-reload
root@clickhouse:~# rm -f /usr/local/bin/clickhouse_exporter
root@clickhouse:~# userdel prometheus
root@clickhouse:~# groupdel prometheus