DRX INFRA Написать

Что не так с вашим Directum RX, за полминуты

Поиск перестал находить документы, задания приходят с опозданием, система тормозит к вечеру. rxdoctor запускается на сервере одной командой и показывает, где искать причину: что нашли, чем грозит, что делать. Утилита бесплатная и ничего на сервере не меняет.

Очередь индексации: 12 000 сообщений, потребителей нетпроблема
Индекс поиска закрыт на записьпроблема
Контейнер rx-worker убит по памяти, 34 перезапускапроблема
Сессия ждёт блокировку 12 минутпроблема
Контейнер rx-webserver занял 89 % лимита памятивнимание
Сертификат действует ещё 85 днейнорма
Строки из примера отчёта. Стенд собран специально с этими проблемами, полный отчёт здесь.

На какие вопросы отвечает отчёт

Типичная установка: один сервер, на нём RX, база и брокер сообщений, часто в контейнерах. Мониторинга нет, о проблеме узнают от пользователей. Отчёт показывает, с чего начать.

Почему поиск не находит документы

Служба поиска не отвечает, индекс закрыт на запись после переполнения диска, очередь индексации стоит.

Почему задания и уведомления опаздывают

В каких очередях накопились сообщения, сколько их и есть ли у очереди живой обработчик.

Куда уходит память

Какие контейнеры и процессы занимают больше всех, кто близок к лимиту, кого система уже убивала и перезапускала.

Почему тормозит база

Зависшие транзакции, блокировки с номерами сессий, раздутые таблицы, чтение с диска вместо памяти.

Что сломается на днях

Заканчивается место на диске, истекает сертификат, растёт каталог журнала базы, брокер подходит к порогу памяти.

Переживёте ли отказ сервера

Работает ли реплика и архив журнала базы. Плюс пять вопросов администратору про бэкапы и восстановление.

Чего утилита не делает: ничего не чинит и не меняет настройки, документы и таблицы RX не читает. Базу, брокер, поиск и сервер она видит снаружи, как мониторинг.

Скачать версию 0.3.0

Запускайте там, где база и брокер уже доступны: на сервере приложений или СУБД. Чтобы утилита увидела контейнеры, нужен root или пользователь из группы docker.

Контрольные суммы SHA-256
linux-amd64 bff0f34ad340e5f906f08d0619e1274f2e26dd2a36960ab44082d9295041bcb5
linux-arm64 3ded9cd2fbfca3cf86326ede4972ec0293c93ce3bd3152be85726d9123a7655c
windows-amd64.zip 445e835323b98fbd715fb7be554e1e8ecd30d0cb878b9a8460ec1a62203bd259
darwin-arm64 ffb34510bb4f7f921dc9efdaf84e134b3886fe37b54ad36674db4b8a4f123212
darwin-amd64 6c16ed54bd323ba9b778fa843bd378d7e4b45b962c0331f94b4ea230d5094a71
Что нового в 0.3.0
  • Компонент, который не отвечает, теперь красная строка в начале отчёта.
  • Накопление в очередях RabbitMQ: десять самых больших очередей с числом обработчиков.
  • Контейнеры на сервере: перезапуски, убитые по памяти, память относительно лимита.
  • Блокировка записи в индексах поиска.
  • Источники опрашиваются одновременно, прогон занимает 30 секунд.

На Windows архив без подписи, SmartScreen спросит один раз.

Три шага до отчёта

Первый запуск задаёт вопросы и запоминает ответы. Следующие сразу делают отчёт, поэтому утилиту можно ставить в расписание.

  1. Скачайте файл

    Один файл под вашу систему. Ставить ничего не нужно.

  2. Запустите на сервере

    chmod +x rxdoctor-0.3.0-linux-amd64
    sudo ./rxdoctor-0.3.0-linux-amd64
    Expand-Archive rxdoctor-*.zip .
    .\rxdoctor.exe

    На Windows можно просто дважды щёлкнуть по файлу.

  3. Ответьте на вопросы и откройте отчёт

    Утилита спросит адреса и учётки базы, брокера, поиска и веб-клиента. Любой пункт можно пропустить. Отчёт появится в той же папке в трёх видах: страница для чтения, текст и файл для сравнения.

Ещё четыре команды

rxdoctor explain
Печатает все запросы и команды, которые будут выполнены, и выходит. Для службы безопасности перед первым запуском.
rxdoctor diff вчера.json сегодня.json
Сравнивает два отчёта. Так видно утечку памяти: контейнер, который за сутки только вырос.
rxdoctor init
Задаёт вопросы заново и переписывает настройки.
rxdoctor grant
Печатает команды для отдельных учёток только на чтение. Они необязательны, утилита работает и под имеющимися.

Что именно проверяется

65 пунктов по семи источникам. Утилита читает то, что есть у всех и не зависит от версии RX, поэтому одинаково работает на 4.x и 26.x, на Windows и Linux.

15 пунктовPostgreSQL

Соединения к лимиту, долгие и зависшие транзакции, ожидающие блокировки с номерами сессий, мёртвые строки, autovacuum, возраст транзакций, вынужденные чекпоинты, попадание в кэш за время прогона по каждой базе, размер базы, реплика и её отставание, архив WAL, рост каталога WAL, слоты репликации, версия и срок её поддержки.

16 пунктовMS SQL Server

Соединения, долгие транзакции и спящие сессии с открытой транзакцией, блокировки, устаревшая статистика, журнал транзакций и его бэкапы, история бэкапов, буферный кэш, файлы базы и лимит Express, диск под файлами, max server memory, задержки диска, давность DBCC CHECKDB, взаимоблокировки, группы доступности AlwaysOn, версия.

8 пунктовRabbitMQ

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

7 пунктовElasticsearch и OpenSearch

Здоровье кластера, шарды к лимиту, диск к порогам, куча JVM, отклонённые запросы, блокировка записи в индексах, версия.

7 пунктовСервер Linux или Windows

Свободное место, память и самые большие процессы, нагрузка к числу ядер, синхронизация времени, ожидающая перезагрузка. На Linux дополнительно контейнеры Docker: кто перезапускается, кого убили по памяти, сколько занято относительно лимита.

5 пунктовВеб-клиент и сертификаты

Ответ и время главной страницы, срок сертификатов на всех адресах, полнота цепочки, отклонение устаревших TLS 1.0 и 1.1, защитные заголовки.

7 пунктовKubernetes

Рестарты и CrashLoopBackOff, OOMKilled, зависшие поды, заполнение томов, requests и limits, состояние узлов, версия кластера.

5 вопросовВопросы администратору

Чем делаете бэкапы, когда последний раз восстанавливались из бэкапа, кто владелец системы, куда приходят уведомления, есть ли тестовый контур. Ответ «никогда» на второй вопрос встречается в отчётах чаще любого другого красного пункта.

Почему это можно запускать на рабочей системе

Запрет на запись зашит в код утилиты и не зависит от прав учётки. Поэтому подходят те учётки, которыми администратор уже пользуется.

База данных

В PostgreSQL сессия открывается в режиме только чтения. Выполняется фиксированный список запросов к служебным представлениям, у каждого таймаут 10 секунд. К таблицам RX запросов нет.

Брокер, поиск, Kubernetes

Программа умеет отправлять только запросы на чтение, других в её коде нет.

Сервер

Фиксированный список команд чтения: место на диске, память, время, список контейнеров. Произвольные команды не выполняются.

Данные остаются у вас

Утилита не выходит в интернет и ничего не отправляет. В отчёте нет паролей, адреса скрываются ключом --anonymize.

Что спрашивают перед запуском

У нас Windows и MS SQL

Поддерживается. MS SQL Server проверяется по своим 16 пунктам, включая историю бэкапов. Подключение под sa, отдельным логином или учёткой Windows. Сервер Windows проверяется запуском на нём самом, права администратора не нужны.

Нужен ли доступ в интернет?

Нет. Единственное внешнее обращение идёт к адресу вашего веб-клиента, который вы сами указали.

Мы не хотим заводить отдельные учётки

И не нужно. Работает под postgres, администратором RabbitMQ, root. В отчёте будет одна строка с советом завести отдельную учётку для регулярных запусков.

Что с бэкапами? У нас снимки виртуальной машины

Утилита не угадывает, как у вас устроены бэкапы. Сама проверяет только то, что видно в базе: архив журнала, реплику, слоты. Про бэкапы задаёт два вопроса администратору: чем делаете и когда последний раз восстанавливались.

Почему бесплатно?

Утилита находит проблемы, а чинить их и держать систему в порядке это наша платная работа. Кто справится сам, тому хватит отчёта и подсказок в нём.

Можно посмотреть исходный код?

Код закрыт, программа бесплатна. По запросу показываем исходники под соглашением о неразглашении, если службе безопасности нужно убедиться самой.