Мониторинг отказоустойчивости#

После настройки отказоустойчивости выделенный IP VIP в случае ошибок на сервере может переключиться с основного сервера на резервный.
Для отслеживания переключения VIP предусмотрена возможность настроить триггеры Zabbix.

Настройка мониторинга состоит из двух шагов:

  1. Настройка zabbix-agent на сервере.

  2. Настройка в панели администратора Zabbix.

Настройка zabbix-agent на сервере#

Примечание

Статья предполагает, что Zabbix-сервер и Zabbix-агент предварительно установлены на серверах.

На основном сервере выполните команду ниже, подставив полный путь к инсталлятору:

PATH_TO_COMPASS_INSTALL="<путь к инсталлятору Compass>";
printf "UserParameter=keepalived.status[*],$PATH_TO_COMPASS_INSTALL/script/replication/check_keepalived.py \"\$1\"\n\
UserParameter=keepalived.status_text[*],result=\$($PATH_TO_COMPASS_INSTALL/script/replication/check_keepalived.py \"\$1\"); [ \"\$result\" -eq 1 ] && echo \"master\" || echo \"backup\"\n\
UserParameter=mysql.replication.lag,$PATH_TO_COMPASS_INSTALL/script/replication/check_replication_lag.py\n\
UserParameter=mysql.replication.lag_count,$PATH_TO_COMPASS_INSTALL/script/replication/check_replication_lag.py --is-get-lag-count=1\n\
UserParameter=mysql.replication.io_running,$PATH_TO_COMPASS_INSTALL/script/replication/check_replication_io_running.py\n\
UserParameter=mysql.replication.sql_running,$PATH_TO_COMPASS_INSTALL/script/replication/check_replication_sql_running.py\n\
UserParameter=lsyncd.delays.count,max_delay=\\\$(grep -oP \\\"There are \\\\K[0-9]+(?= delays)\\\" /var/log/lsyncd/lsyncd.stat 2>/dev/null | awk '{if (\\\$1 > max || max==\\\"\\\") max=\\\$1} END{print (max==\\\"\\\") ? 0 : max}')\n\
UserParameter=lsyncd.process.running,pgrep -x lsyncd >/dev/null && echo 1 || echo 0\n" \
>> /etc/zabbix/zabbix_agentd.conf

Выполните перезапуск zabbix-agent:

/etc/init.d/zabbix-agent restart

Выполните все действия выше также на резервном сервере.

Настройка в панели администратора Zabbix#

Для настройки мониторинга keepalived используйте шаблон Zabbix, предоставленный ниже:
getcompass.ru/static/zabbix/keepalived_template.xml

Выполните следующие действия:

  1. Скачайте шаблон.

  2. В панели администратора в разделе «Data collection» (в старых версиях — «Configuration») откройте вкладку «Templates». Далее нажмите на кнопку «Import».

Settings for zabbix.
  1. Выберите скачанный файл «keepalived_template.xml».

  2. Нажмите «Advanced options», чтобы отобразить дополнительные параметры. Затем отметьте галочками в столбце «Create new» следующие правила:

  • Templates groups

  • Host groups

  • Templates

  • Items

  • Triggers

Settings for zabbix.
  1. Нажмите на кнопку «Import» для создания шаблона.

  2. В панели администратора откройте раздел «Data collection» → «Hosts». Найдите в списке хост основного сервера. Если хост ещё не добавлен — создайте его.

  3. Перейдите во вкладку «Macros» и создайте новый макрос:

  • Macro: {$VIP}

  • Value : укажите виртуальный IP-адрес (VIP), используемый в конфигурации Keepalived

Settings for zabbix.
  1. Нажмите кнопку «Update» для сохранения изменений.

  2. В окне хоста в строке «Templates» для выделенного хоста введите «Keepalived», выберите предоставленный шаблон.

Settings for zabbix.
  1. Нажмите кнопку «Update» для сохранения изменений.

  2. Аналогично настройте хост резервного сервера, используя пункты 6–10.

После этого Zabbix будет осуществлять мониторинг состояния репликации на обоих серверах.

Настройка уведомлений о состоянии репликации#

  1. Скачайте бинарный файл, который будет отвечать за отправку уведомлений в приложение On-premise Compass:
    getcompass.ru/static/zabbix/go_compass_notice

  2. Далее добавьте скаченный файл на ваш Zabbix-сервер по следующему пути:

    cp go_compass_notice /usr/lib/zabbix/alertscripts/
    
  3. Выдайте соответствующие права для файла:

    sudo chown -R zabbix:zabbix /usr/lib/zabbix/alertscripts/go_compass_notice
    sudo chmod +x /usr/lib/zabbix/alertscripts/go_compass_notice
    
  4. В панели администратора откройте раздел «Alerts» → «Media types». Далее нажмите на кнопку «Create media type».

    Заполните поля как на скриншоте:

    Create media type.

    Установите 4 новых параметра для поля Script parameters:

    • text - текст сообщения при отправке уведомления с Zabbix-сервера.

    • group_id - ключ чата, в который добавлен бот. Можно получить в интерфейсе добавления бота в чат.

    • token = токен бота из вашей компании, куда будут отправляться уведомления.

    • api_endpoint - endpoint, на который будут отправляться уведомления.

    --text={ALERT.MESSAGE}
    
    --group_id="<id_чата>"
    
    --token="<токен_вашего_бота>"
    
    --api_endpoint="https://<ваш-домен>/userbot/api/v3/group/send"
    
  5. В панели администратора откройте раздел «Users» → «User groups». Далее нажмите на кнопку «Create user group».
    Добавьте имя в поле Group name, например, «Compass notice».

  6. Далее перейдите во вкладку Template permissions. Выберете «Highavailability» в списке доступных групп шаблонов, выдайте этой группе права «Read-write».

  7. Перейдите во вкладку Hosts permissions. Выберете группу хостов, в которой мониторится состояние репликации. Выдайте этой группе права «Read-write».

  8. В панели администратора откройте раздел «Users» → «User roles». Далее нажмите на кнопку «Create user role».
    Добавьте имя в поле Name, например, «Compass notice role». Выберете тип «Admin» в поле «User Type».

  9. В панели администратора откройте раздел «Users» → «Users». Далее нажмите на кнопку «Create user».
    Заполните поля «Username», «Password», «Password (once again)».

    Во вкладке «Media» выберете ранее созданый Media type:

    User media.

    Во вкладке «Permissions» выберете роль, созданную ранее. Нажмите «Add» для создания пользователя.

  10. В панели администратора откройте раздел «Alerts» → «Actions». Далее нажмите на кнопку «Create action».
    Заполните поле «Name».

    Добавьте в поле «Conditions» новое состояние:

    Type = "Trigger severity"
    Operator = "is greater than or equals"
    Severity = "Warning"
    
    New action.
  11. Далее перейдите во вкладку «Operations». В поле «Operations» добавьте новую операцию, заполняя поля как на скриншоте:

    New operation.

    Пример текста для уведомления:

    :helmet_with_white_cross: {TRIGGER.NAME} {{TIME}}
    *{HOST.HOST1}* {HOST.IP}
    Severity: {TRIGGER.SEVERITY}
    Value: {ITEM.VALUE}
    

    Повторите шаги для поля «Recovery operations»:

    Operations.

Напишите нам в пространстве поддержки On-premise, Telegram или на почту support@getcompass.ru, чтобы получить индивидуальную демонстрацию функционала и помощь по вопросам интеграции мессенджера в вашей компании.