Поиск перестал находить документы, задания приходят с опозданием, система тормозит к вечеру. rxdoctor запускается на сервере одной командой и показывает, где искать причину: что нашли, чем грозит, что делать. Утилита бесплатная и ничего на сервере не меняет.
Типичная установка: один сервер, на нём RX, база и брокер сообщений, часто в контейнерах. Мониторинга нет, о проблеме узнают от пользователей. Отчёт показывает, с чего начать.
Служба поиска не отвечает, индекс закрыт на запись после переполнения диска, очередь индексации стоит.
В каких очередях накопились сообщения, сколько их и есть ли у очереди живой обработчик.
Какие контейнеры и процессы занимают больше всех, кто близок к лимиту, кого система уже убивала и перезапускала.
Зависшие транзакции, блокировки с номерами сессий, раздутые таблицы, чтение с диска вместо памяти.
Заканчивается место на диске, истекает сертификат, растёт каталог журнала базы, брокер подходит к порогу памяти.
Работает ли реплика и архив журнала базы. Плюс пять вопросов администратору про бэкапы и восстановление.
Чего утилита не делает: ничего не чинит и не меняет настройки, документы и таблицы RX не читает. Базу, брокер, поиск и сервер она видит снаружи, как мониторинг.
Запускайте там, где база и брокер уже доступны: на сервере приложений или СУБД. Чтобы утилита увидела контейнеры, нужен root или пользователь из группы docker.
На Windows архив без подписи, SmartScreen спросит один раз.
Первый запуск задаёт вопросы и запоминает ответы. Следующие сразу делают отчёт, поэтому утилиту можно ставить в расписание.
Один файл под вашу систему. Ставить ничего не нужно.
chmod +x rxdoctor-0.3.0-linux-amd64 sudo ./rxdoctor-0.3.0-linux-amd64
Expand-Archive rxdoctor-*.zip . .\rxdoctor.exe
На Windows можно просто дважды щёлкнуть по файлу.
Утилита спросит адреса и учётки базы, брокера, поиска и веб-клиента. Любой пункт можно пропустить. Отчёт появится в той же папке в трёх видах: страница для чтения, текст и файл для сравнения.
65 пунктов по семи источникам. Утилита читает то, что есть у всех и не зависит от версии RX, поэтому одинаково работает на 4.x и 26.x, на Windows и Linux.
Соединения к лимиту, долгие и зависшие транзакции, ожидающие блокировки с номерами сессий, мёртвые строки, autovacuum, возраст транзакций, вынужденные чекпоинты, попадание в кэш за время прогона по каждой базе, размер базы, реплика и её отставание, архив WAL, рост каталога WAL, слоты репликации, версия и срок её поддержки.
Соединения, долгие транзакции и спящие сессии с открытой транзакцией, блокировки, устаревшая статистика, журнал транзакций и его бэкапы, история бэкапов, буферный кэш, файлы базы и лимит Express, диск под файлами, max server memory, задержки диска, давность DBCC CHECKDB, взаимоблокировки, группы доступности AlwaysOn, версия.
Накопление в очередях с десятью самыми большими, очереди с сообщениями без обработчиков, рост очередей между двумя замерами, неподтверждённые сообщения, тревоги по памяти и диску, узлы кластера, число очередей, версия.
Здоровье кластера, шарды к лимиту, диск к порогам, куча JVM, отклонённые запросы, блокировка записи в индексах, версия.
Свободное место, память и самые большие процессы, нагрузка к числу ядер, синхронизация времени, ожидающая перезагрузка. На Linux дополнительно контейнеры Docker: кто перезапускается, кого убили по памяти, сколько занято относительно лимита.
Ответ и время главной страницы, срок сертификатов на всех адресах, полнота цепочки, отклонение устаревших TLS 1.0 и 1.1, защитные заголовки.
Рестарты и CrashLoopBackOff, OOMKilled, зависшие поды, заполнение томов, requests и limits, состояние узлов, версия кластера.
Чем делаете бэкапы, когда последний раз восстанавливались из бэкапа, кто владелец системы, куда приходят уведомления, есть ли тестовый контур. Ответ «никогда» на второй вопрос встречается в отчётах чаще любого другого красного пункта.
Запрет на запись зашит в код утилиты и не зависит от прав учётки. Поэтому подходят те учётки, которыми администратор уже пользуется.
В PostgreSQL сессия открывается в режиме только чтения. Выполняется фиксированный список запросов к служебным представлениям, у каждого таймаут 10 секунд. К таблицам RX запросов нет.
Программа умеет отправлять только запросы на чтение, других в её коде нет.
Фиксированный список команд чтения: место на диске, память, время, список контейнеров. Произвольные команды не выполняются.
Утилита не выходит в интернет и ничего не отправляет. В отчёте нет паролей, адреса скрываются ключом --anonymize.
Поддерживается. MS SQL Server проверяется по своим 16 пунктам, включая историю бэкапов. Подключение под sa, отдельным логином или учёткой Windows. Сервер Windows проверяется запуском на нём самом, права администратора не нужны.
Нет. Единственное внешнее обращение идёт к адресу вашего веб-клиента, который вы сами указали.
И не нужно. Работает под postgres, администратором RabbitMQ, root. В отчёте будет одна строка с советом завести отдельную учётку для регулярных запусков.
Утилита не угадывает, как у вас устроены бэкапы. Сама проверяет только то, что видно в базе: архив журнала, реплику, слоты. Про бэкапы задаёт два вопроса администратору: чем делаете и когда последний раз восстанавливались.
Утилита находит проблемы, а чинить их и держать систему в порядке это наша платная работа. Кто справится сам, тому хватит отчёта и подсказок в нём.
Код закрыт, программа бесплатна. По запросу показываем исходники под соглашением о неразглашении, если службе безопасности нужно убедиться самой.