Мониторинг ClickHouse с помощью Zabbix
Для мониторинга используется сценарий clickhouse.sh, который нужно положить в каталог /etc/zabbix
, где находится конфигурация Zabbix-агента. Его владельцем можно сделать пользователя root и дать права читать и выполнять его всем:
# chown root:root /etc/zabbix/clickhouse.sh
# chmod u=rwx,go=rx /etc/zabbix/clickhouse.sh
Сценарий использует для работы файл /etc/zabbix/clickhouse.xml
, в котором должны быть указаны настройки для подключения к ClickHouse. Файл имеет следующий формат:
<config>
<host>127.0.0.1</host>
<port>9000</port>
<user>zabbix</user>
<password>zabbix_p4$$w0rd</password>
<database>system</database>
</config>
Для того, чтобы файл смог изменять только пользователь root
, а читать смог только пользователь zabbix
, от имени которого работает Zabbbix-агент, можно выставить права доступа к этому файлу следующим образом:
# chown root:zabbix /etc/zabbix/clickhouse.xml
# chmod u=rw,g=r,o= /etc/zabbix/clickhouse.xml
Для мониторинга пользователю ClickHouse понадобятся права доступа к нескольким таблицам в базе данных system
. Нужно создать пользователя с соответствующими правами, логин и пароль которого были указаны в файле /etc/zabbix/clickhouse.xml
. Для этого нужно выполнить от имени администратора ClickHouse SQL-запросы следующего вида:
CREATE USER zabbix IDENTIFIED BY 'zabbix_p4$$w0rd';
GRANT SELECT ON system.metrics TO zabbix;
GRANT SELECT ON system.asynchronous_metrics TO zabbix;
GRANT SELECT ON system.events TO zabbix;
GRANT SELECT ON system.processes TO zabbix;
Для проверки правильности настроек можно вызвать скрипт, одним из указанных ниже способов:
$ /etc/zabbix/clickhouse.sh Version
$ /etc/zabbix/clickhouse.sh Query
Если настройки верны, скрипт должен вывести версию сервера или количество выполняемых в настоящее время запросов. В таком случае можно продолжить и прописать в файл конфигурации Zabbix-агента /etc/zabbix/zabbix_agentd.conf
следующим образом:
UserParameter=clickhouse[*],/etc/zabbix/clickhouse.sh "$1"
Как вариант, указанную выше строчку можно прописать в один из файлов в каталоге /etc/zabbix/zabbix_agentd.d
или /etc/zabbix/zabbix_agentd.conf.d
или создать новый файл с такой строчкой.
Для применения настроек Zabbix-агента нужно перезапустить при помощи одной из следующих команд:
# systemctl restart zabbix-agent
# /etc/init.d/zabbix-agent restart
Если у вас есть доступ к Zabbix-серверу или Zabbix-прокси, который осуществляет опрос Zabbix-агента, то проверить правильность настройки Zabbix-агента можно с помощью команд следующего вида:
$ zabbix_get -s clickhouse.domain.tld -k clickhouse[Version]
$ zabbix_get -s clickhouse-server.domain.tld -k clickhouse[Query]
После этого можно назначить наблюдаемому узлу шаблон Template App ClickHouse Active.xml для контроля общих показателей производительности и исправности.
При необходимости вместо этого шаблона можно воспользоваться другим, в котором вместо активного Zabbix-агента используется пассивный: Template App ClickHouse.xml.