[mysql] Некоторые особенности работы и установки MEM

MEM mysql enterprice monitor. Это такая веб-админка, где можно посмотреть за работой базы mysql и понять, почему она тормозит или посмотреть другую статистику. По большому счёту это приложение на java, которое выгребает статистику из баз perfomance scheme и information scheme и предоставляют её в удобном виде. Так же, время от времени парсится и вывод show engine innodb status на предмет полезной информации.

Установка сервер и агентов протекает без сложностей, поэтому описывать этот процесс здесь не буду. Расскажу лишь некоторые нюансы и особенности.

При установке сервера, учтите, что по дефолту оно настраивается на https, и, если у вас самоподписный сертификат, то его нужно будет либо добавить в keystorage на каждом из клиентов либо настраивать клиент на подключение к http (и сервер соответственно тоже, ибо по умолчанию http -> https правится это в файле /opt/mysql/enterprise/monitor/apache-tomcat/conf/server.xml путём убирания опции redirectPort=»18443″)

При установке клиента рекомендую создать пользователей mem, memlim, собственно от имени которых и будут выполняться запросы в базу. Привилегии, которые они должны иметь:

mysql:(root@server) [mysql]>show grants for 'mem'@'localhost';

+--------------------------------------------------------------------------------------------------+
| Grants for mem@localhost |
+--------------------------------------------------------------------------------------------------+
| GRANT SELECT, PROCESS, SHOW DATABASES, REPLICATION CLIENT, SHOW VIEW ON *.* TO 'mem'@'localhost' |
| GRANT UPDATE ON `performance_schema`.`threads` TO 'mem'@'localhost' |
+--------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql:(root@server) [mysql]>show grants for 'memlim'@'localhost';
+------------------------------------------------------------------------+
| Grants for memlim@localhost |
+------------------------------------------------------------------------+
| GRANT SELECT, SHOW DATABASES, SHOW VIEW ON *.* TO 'memlim'@'localhost' |
| GRANT UPDATE ON `performance_schema`.`threads` TO 'memlim'@'localhost' |
+------------------------------------------------------------------------+
2 rows in set (0.00 sec)

Клиент добавляется очень просто: в процессе установке вы указывает адрес сервер и после запуска он сам подключается к нему и начинает мониторится. Нужно сказать об одной особенности по тому, как распознаёт сервер клиентов. А делает это он на основе uuid и hostid (поля из таблицы mysql.inventory). Если по какой-то причине одно из этих полей будет не уникально среди клиентов (а у меня как раз такая ситуация и возникла), то получим flap’ы в виде то сервер живой, то мёртвый.

Как же быть? Для начала разберёмся, что такое uuid и hostid. uuid — это случайное значение, которое генерирует mem client и записывает в базу, если его там нет. hostid — это fingerprint от ssh-ключей, которые лежат в /etc/ssh/ssh_host_[dsa|rsa].pub. В моём случае это оказался отпечаток ключа ssh_host_dsa_key.pub. Напомню, узнать fingerprint ssh-ключа можно так:

$ ssh-keygen -l -f ssh_host_dsa_key.pub
1024 12:fa:54:11:e3:15:44:87:e1:ab:4a:b2:4e:9e:9a:52 ssh_host_dsa_key.pub

Именно это значение и лежит в базе:

>select * from mysql.inventory;
+--------+-------------------------------------------------------+
| name   | value                                                 |
+--------+-------------------------------------------------------+
| uuid   | 81a44975-4739-65ae-a34c-8a4ad65bb2ca                  |
| hostid | ssh:{12:fa:54:11:e3:15:44:87:e1:ab:4a:b2:4e:9e:9a:52} |
+--------+-------------------------------------------------------+

И так, что бы избавится от старых значение, нужно

1) очистить таблицу mysql.inventory:

mysql:(root@server) [mysql]>TRUNCATE mysql.inventory;
Query OK, 0 rows affected (0.04 sec)

2) перегенерировать ssh-ключи (пример под Solaris):

# /lib/svc/method/sshd -c

3) перезапустить mem client:

# /etc/init.d/mysql-monitor-agent restart

Теперь проблем быть не должно.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *