Перейти к содержанию

Graylog

Сервер логов и стоящий за ним поисковый кластер: обрабатывает ли Graylog сообщения, сколько их ждёт в его журнале, насколько заполнены его буферы, что входит и что выходит, здоровье OpenSearch или Elasticsearch, как его видит Graylog, вводы, которые не смогли запуститься, и сообщения, которые не смогли быть проиндексированы.

DumbMonit читает REST API Graylog с выделенным пользователем, обладающим встроенной ролью Reader. Он никогда не ищет сообщения, никогда не запускает и не останавливает ввод и никогда не подтверждает уведомление.

Отказ, за которым стоит следить: поисковый кластер перестаёт успевать. Graylog продолжает принимать сообщения и записывает их в свой журнал на диске; веб-интерфейс открывается, поиск работает и просто ничего не показывает за недавнее время. Журнал растёт, пока не заполнится, и затем сообщения отбрасываются. Отставание журнала, здоровье поискового кластера и ошибки индексации сообщают об этом намного раньше.

Что отслеживается

Все метрики с префиксом dumbmonit_graylog_. Журнал, буферы и пропускная способность — это те, что узла, с которым общается DumbMonit: в кластере Graylog добавьте каждый узел как свой монитор.

Метрика Что Метки
processing 1, пока узел обрабатывает сообщения, 0 — когда обработка на паузе
running, lb_alive жизненный цикл узла — running; он сообщает балансировщикам нагрузки, что жив
version_info значение 1 version
journal_uncommitted_entries сообщения, записанные в журнал и ещё не обработанные
journal_size_bytes, journal_size_limit_bytes, journal_used_percent
journal_append_per_second, journal_read_per_second
buffer_used_percent насколько заполнены буферы ввода, обработки и вывода buffer
messages_in_total, messages_out_total полученные сообщения, и записанные в поисковый кластер
indexer_status здоровье поискового кластера: 0 green, 1 yellow, 2 red, 3 недоступен из Graylog
indexer_shards шарды по состоянию: active, initializing, relocating, unassigned state
inputs_running, inputs_failed вводы на этом узле
input_failed значение 1 на каждый ввод, не запустившийся input (его название)
output_failures_total, processing_failures_total, invalid_timestamps_total записи в поисковый кластер, завершившиеся ошибкой, сообщения, не прошедшие обработку или индексацию, сообщения с недействительной меткой времени
notifications, notifications_urgent, notification собственные уведомления Graylog (опциональное право, см. ниже) type, severity
cluster_nodes узлы в кластере Graylog
scrape_errors вызовы, завершившиеся ошибкой при последней проверке

Поисковый кластер читается через Graylog, поэтому отдельный монитор OpenSearch или Elasticsearch не нужно, чтобы знать, зелёный ли он; когда Graylog вообще не может до него достучаться, indexer_status показывает 3.

Применяемые встроенные правила: «Graylog не обрабатывает», «Поисковый кластер Graylog не работает», «Поисковый кластер Graylog в состоянии yellow», «Журнал Graylog заполняется», «Ввод Graylog не удался», «Сбои индексации Graylog», плюс «Монитор недоступен».

Страница монитора

Панель над графиками читает то, что сохранила проверка; открытие страницы никогда не запрашивает Graylog. Она сообщает, что не так, в одном предложении (обработка, поисковый кластер, отставание журнала, отказавшие вводы по имени, ошибки индексации, срочные уведомления), затем — входящие и исходящие сообщения в секунду, отставание журнала и число узлов, затем — буферы, шарды по состоянию и собственные уведомления Graylog.

Создание пользователя и токена только для чтения в Graylog

  1. В Graylog: System → Users and Teams → Create user. Назовите пользователя так, дайте ему длинный случайный пароль, и назначьте только роль Reader. Reader может читать состояние узла, журнал, буферы, пропускную способность, вводы и здоровье поискового кластера, и не может читать ни одного сообщения, пока ни один поток не разделён с ним.

    dumbmonit
    
  2. Откройте страницу Edit tokens этого пользователя, создайте токен с именем DumbMonit и скопируйте его сразу: Graylog показывает его только один раз.

  3. Необязательно: собственные уведомления Graylog (ввод, не смогший запуститься, пороги диска, журнал почти заполнен) требуют ещё одного права, notifications:read, которое не даёт ни одна встроенная роль сама по себе. С учётной записью, которой разрешено управлять ролями, создайте роль, содержащую только это право, и дайте её пользователю dumbmonit. Без этого уведомления пропускаются, а остальное не меняется.

    curl -u YOUR_USER -H 'X-Requested-By: cli' -H 'Content-Type: application/json' -X POST https://graylog.lan/api/roles -d '{"name":"DumbMonit Notifications","description":"Read system notifications","permissions":["notifications:read"],"read_only":false}'
    curl -u YOUR_USER -H 'X-Requested-By: cli' -X PUT 'https://graylog.lan/api/roles/DumbMonit%20Notifications/members/dumbmonit'
    
  4. В DumbMonit введите адрес узла Graylog, например «graylog.lan» (порт 9000) или «https://graylog.lan» за обратным прокси, и вставьте токен. В кластере Graylog добавьте каждый узел: журнал, буферы и пропускная способность — на узел.

  5. DumbMonit только читает. Он никогда не ищет сообщения, никогда не запускает и не останавливает ввод и никогда не подтверждает уведомление.

Warning

Не используйте повторно учётную запись, которой вы сами входите: утёкший токен несёт все права своего пользователя, в то время как роль Reader выше ничего не может изменить. Graylog обслуживает обычный HTTP, если вы не настроили TLS, а токен путешествует с каждым запросом: в недоверенной сети разместите Graylog за HTTPS.

Что покрывает каждое право Reader: system:read — состояние узла и узлы кластера, journal:read — журнал, metrics:read и throughput:read — пропускную способность и буферы, inputs:read — вводы, indexercluster:read — здоровье поискового кластера. Роль Reader также содержит messages:read, которое позволяет читать сообщения только из потоков, явно разделённых с ней: не делитесь ни одним. Подробности сбоев индексации (indices:failures) не нужны: DumbMonit считает сбои из собственных метрик Graylog.

Учётные данные

Учётные данные Поля
Токен доступа (рекомендуется) Токен выделенного пользователя. Graylog ожидает его как базовую аутентификацию HTTP с токеном в качестве имени пользователя и словом token в качестве пароля; DumbMonit делает это за вас.
Имя пользователя / пароль Сам выделенный пользователь.

Адрес: имя хоста или IP (graylog.lan), host:port, или полный URL (https://graylog.lan); завершающий /api допускается. Опции: протокол (по умолчанию HTTP), порт (9000), проверка сертификата и таймаут запроса (10 с).