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
Заголовок раздела «Создание пользователя и токена только для чтения в Graylog»-
В Graylog: System → Users and Teams → Create user. Назовите пользователя так, дайте ему длинный случайный пароль, и назначьте только роль Reader. Reader может читать состояние узла, журнал, буферы, пропускную способность, вводы и здоровье поискового кластера, и не может читать ни одного сообщения, пока ни один поток не разделён с ним.
dumbmonit -
Откройте страницу Edit tokens этого пользователя, создайте токен с именем DumbMonit и скопируйте его сразу: Graylog показывает его только один раз.
-
Необязательно: собственные уведомления 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' -
В DumbMonit введите адрес узла Graylog, например «graylog.lan» (порт 9000) или «https://graylog.lan» за обратным прокси, и вставьте токен. В кластере Graylog добавьте каждый узел: журнал, буферы и пропускная способность — на узел.
-
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 с).