MongoDB
Сама документная база данных: набор реплик (участники, их состояние, отсутствие primary, насколько каждый secondary отстаёт), соединения относительно лимита, кэш WiredTiger, операции и assertions.
DumbMonit входит под учётной записью, которая имеет только встроенную роль
clusterMonitor, выполняет serverStatus, а также replSetGetStatus, если
сервер входит в набор реплик. Эта роль читает состояние сервера и репликации и
не даёт доступа ни к одному документу ни одной базы. Поддерживаются MongoDB 3.6
и новее; DumbMonit сам реализует wire-протокол, без драйвера.
За какими сбоями стоит следить: набор реплик, потерявший primary, не принимает запись, пока выборы не завершатся успешно; отставший secondary — именно тот, который будет избран в день, когда primary умрёт, и без последних записей; при достижении лимита соединений новые клиенты отклоняются; если более 20% кэша WiredTiger «грязные», запросам приходится самим вытеснять страницы, и всё замедляется.
За чем он следит
Заголовок раздела «За чем он следит»Все метрики имеют префикс dumbmonit_mongodb_. Суммарные значения — счётчики:
графики и правила превращают их в скорости.
| Метрика | Что | Метки |
|---|---|---|
version_info | значение 1 | version, process, storage_engine |
role_info | значение 1 | role: primary, secondary, arbiter, standalone |
uptime_seconds | ||
connections_current, connections_available, connections_active | ||
connections_used_percent | текущие относительно текущих плюс доступных | |
connections_created_total, connections_rejected_total | ||
operations_total | операции с момента запуска | op: insert, query, update, delete, getmore, command |
asserts_total | assertions с момента запуска; type — это regular (внутренние ошибки сервера), warning, msg, user (ошибки, возвращённые клиентам), tripwire или rollovers. Графика заслуживают regular и user | type |
queued_operations, active_clients | операции, ожидающие блокировки, и клиенты, выполняющие операцию | |
wiredtiger_cache_max_bytes, wiredtiger_cache_used_bytes, wiredtiger_cache_used_percent | кэш WiredTiger и степень его заполнения | |
wiredtiger_cache_dirty_bytes, wiredtiger_cache_dirty_percent | изменённые страницы, ещё не записанные | |
wiredtiger_cache_read_bytes_total | байты, прочитанные с диска в кэш | |
memory_resident_bytes | ||
network_bytes_in_total, network_bytes_out_total | ||
cursors_open, cursors_timed_out_total, documents_deleted_total | ||
replset_info | значение 1, в наборе реплик | set, members |
replset_primary_present | 1, когда есть primary, 0, когда его нет | |
replset_member_state | номер состояния участника | member, state: primary, secondary, arbiter, recovering, down… |
replset_member_health | 1, когда участник доступен, 0, когда нет | member |
replset_member_lag_seconds | насколько secondary отстаёт от primary | member |
Применимые встроенные правила: MongoDB replica set without primary, MongoDB member unreachable, MongoDB replication lag, MongoDB connections near the limit, MongoDB cache under pressure, MongoDB internal errors, а также Monitor unreachable.
Страница монитора
Заголовок раздела «Страница монитора»Панель над графиками показывает то, что сохранил опрос; открытие страницы никогда не обращается к MongoDB. Она одной фразой говорит, что не так (набор реплик, соединения, кэш, внутренние ошибки), затем показывает соединения, операции в секунду, использованный кэш, резидентную память, операции в очереди и время работы, затем состояние и отставание каждого участника набора реплик и операции в секунду по типам.
Создание учётной записи MongoDB с ролью clusterMonitor
Заголовок раздела «Создание учётной записи MongoDB с ролью clusterMonitor»-
В mongosh, войдя под пользователем, имеющим право создавать пользователей, создайте учётную запись только со встроенной ролью clusterMonitor. Она читает состояние сервера и репликации и не даёт доступа ни к одному документу ни одной базы.
use admindb.createUser({user: "dumbmonit", pwd: passwordPrompt(), roles: [{role: "clusterMonitor", db: "admin"}]}) -
DumbMonit входит через SCRAM-SHA-256 — механизм по умолчанию для учётных записей, созданных в MongoDB 4.0 и новее. Если вы создали учётную запись не в базе admin, укажите Authentication database ниже.
-
В DumbMonit введите адрес одного mongod, например “db1.lan” или “db1.lan:27018”. В наборе реплик добавьте каждого участника: каждый сообщает о своих соединениях и кэше, а любой из них сообщает состояние и отставание всех участников. Если сервер требует TLS, отметьте TLS ниже.
-
DumbMonit выполняет только serverStatus и replSetGetStatus. Он никогда не перечисляет коллекции и никогда не читает документы.
Учётные данные
Заголовок раздела «Учётные данные»| Учётные данные | Поля |
|---|---|
| Имя пользователя / пароль | Учётная запись clusterMonitor, созданная выше, вход через SCRAM-SHA-256. |
| Без аутентификации | Для сервера, запущенного без контроля доступа. |
Учётная запись, у которой есть только учётные данные SCRAM-SHA-1 (созданная до
MongoDB 4.0 и ни разу не обновлявшаяся), отклоняется: один раз обновите её
пароль командой
db.updateUser("dumbmonit", {pwd: passwordPrompt(), mechanisms: ["SCRAM-SHA-256"]}).
Адрес: имя хоста или IP (db1.lan), host:port или строка подключения
mongodb:// с единственным хостом. Параметры: порт (27017), база данных
аутентификации (admin), TLS (выключено), проверка сертификата и тайм-аут всей
проверки (10 с).