Перейти к содержимому

Graylog

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

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

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

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

МетрикаЧтоМетки
processing1, пока узел обрабатывает сообщения, 0 — когда обработка на паузе
running, lb_aliveжизненный цикл узла — running; он сообщает балансировщикам нагрузки, что жив
version_infoзначение 1version
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, unassignedstate
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

Заголовок раздела «Создание пользователя и токена только для чтения в 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 только читает. Он никогда не ищет сообщения, никогда не запускает и не останавливает ввод и никогда не подтверждает уведомление.

Что покрывает каждое право 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 с).