Управление оповещениями
В этой теме представлены различные элементы оповещений из разных измерений, включая непрерывность бизнеса, доступность кластера и нагрузку на машины, а также предоставлены соответствующие решения.
В следующих примерах все переменные имеют префикс $. Их следует заменить в соответствии с вашей бизнес-средой. Например, $job_name следует заменить соответствующим именем задания в конфигурации Prometheus, а $fe_leader следует заменить IP-адресом Leader FE.
Оповещения о приостановке сервиса
Приостановка сервиса FE
PromSQL
count(up{group="fe", job="$job_name"}) >= 3
Описание оповещения
Оповещение срабатывает, когда количество активных узлов FE падает ниже указанного значения. Вы можете настроить это значение в зависимости от фактического количества узлов FE.
Решение
Попробуйте перезапустить приостановленный узел FE.
Приостановка сервиса BE
PromSQL
node_info{type="be_node_num", job="$job_name",state="dead"} > 1
Описание оповещения
Оповещение срабатывает, когда приостановлено более одного узла BE.
Решение
Попробуйте перезапустить приостановленный узел BE.
Оповещения о нагрузке на машины
Оповещение о CPU BE
PromSQL
(1-(sum(rate(starrocks_be_cpu{mode="idle", job="$job_name",instance=~".*"}[5m])) by (job, instance)) / (sum(rate(starrocks_be_cpu{job="$job_name",host=~".*"}[5m])) by (job, instance))) * 100 > 90
Описание оповещения
Оповещение срабатывает, когда использование CPU BE превышает 90%.
Решение
Прове рьте, есть ли большие запросы или крупномасштабная загрузка данных, и передайте детали команде поддержки для дальнейшего расследования.
-
Используйте команду
topдля проверки использования ресурсов процессами.top -Hp $be_pid -
Используйте команду
perfдля сбора и анализа данных о производительности.# Выполните команду в течение 1-2 минут и завершите её нажатием CTRL+C.
sudo perf top -p $be_pid -g >/tmp/perf.txt
В чрезвычайных ситуациях для быстрого восстановления сервиса вы можете попробовать перезапустить соответствующий узел BE после сохранения стека. Чрезвычайная ситуация здесь означает ситуацию, когда использование CPU узла BE остается аномально высоким, и нет эффективных средств для снижения использования CPU.
Оповещение о памяти
PromSQL
(1-node_memory_MemAvailable_bytes{instance=~".*"}/node_memory_MemTotal_bytes{instance=~".*"})*100 > 90
Описание оповещения
Оповещение срабатывает, когда использование памяти превышает 90%.
Решение
Обратитесь к Get Heap Profile для устранения неполадок.
- В чрезвычайных ситуациях вы можете попробовать перезапустить соответствующий сервис BE для восстановления сервиса. Чрезвычайная ситуация здесь означает ситуацию, когда использование памяти узла BE остается аномально высоким, и нет эффективных средств для снижения использования памяти.
- Если другие смешанно развернутые сервисы влияют на систему, вы можете рассмотреть возможность завершения этих сервисов в чрезвычайных ситуациях.
Оповещения о дисках
Оповещение о нагрузке на диск
PromSQL
rate(node_disk_io_time_seconds_total{instance=~".*"}[1m]) * 100 > 90
Описание оповещения
Оповещение срабатывает, когда нагрузка на диск превышает 90%.
Решение
Если кластер срабатывает оповещение node_disk_io_time_seconds_total, сначала проверьте, есть ли какие-либо изменения в бизнесе. Если да, рассмотрите возможность отката изменений для поддержания предыдущего баланса ресурсов. Если изменения не выявлены или откат невозможен, рассмотрите, не вызывает ли нормальный рост бизнеса потребность в расширении ресурсов. Вы можете использовать инструмент iotop для анализа использования дискового I/O. iotop имеет интерфейс, похожий на top, и включает информацию, такую как pid, user и I/O.
Вы также можете использовать следующий SQL-запрос для выявления tablet'ов, потребляющих значительный I/O, и отследить их до конкретных задач и таблиц.
-- "all" указывает все сервисы. 10 указывает, что сбор длится 10 секунд. 3 указывает получение топ-3 результатов.
ADMIN EXECUTE ON $backend_id 'System.print(ExecEnv.io_profile_and_get_topn_stats("all", 10, 3))';
Оповещение о емкости корневого пути
PromSQL
node_filesystem_free_bytes{mountpoint="/"} /1024/1024/1024 < 5
Описание оповещения
Оповещение срабатывает, когда доступное пространство в корневом каталоге составляет менее 5 ГБ.
Решение
Общие каталоги, которые могут занимать значительное пространство, включают /var, /opt и /tmp. Используйте следующую команду для проверки больших файлов и очистки ненужных файлов.
du -sh / --max-depth=1
Оповещение о емкости диска данных
PromSQL
(SUM(starrocks_be_disks_total_capacity{job="$job"}) by (host, path) - SUM(starrocks_be_disks_avail_capacity{job="$job"}) by (host, path)) / SUM(starrocks_be_disks_total_capacity{job="$job"}) by (host, path) * 100 > 90
Описание оповещения
Оповещение срабатывает, когда использование емкости диска превышает 90%.
Решение
-
Проверьте, были ли изменения в объеме загружаемых данных.
Отслеживайте метрику
load_bytesв Grafana. Если произошло значительное увеличение объема загрузки данных, вам может потребоваться масштабировать системные ресурсы. -
Проверьте наличие операций DROP.
Если объем загрузки данных не сильно изменился, выполните
SHOW BACKENDS. Если сообщаемое использование диска не соответствует фактическому использованию, проверьте журнал аудита FE на предмет недавних операций DROP DATABASE, TABLE или PARTITION.Метаданные для этих операций остаются в памяти FE в течение одного дня, что позволяет восстановить данные с помощью оператора RECOVER в течение 24 часов, чтобы избежать ошибочных операций. После восстановления фактическое использование диска может превысить то, что показано в
SHOW BACKENDS.Период хранения удаленных данных в памяти можно настроить с помощью динамического параметра FE
catalog_trash_expire_second(значение по умолчанию: 86400).ADMIN SET FRONTEND CONFIG ("catalog_trash_expire_second"="86400");Чтобы сохранить это изменение, добавьте элемент конфигурации в файл конфигурации FE fe.conf.
После этого удаленные данные будут перемещены в каталог trash на узлах BE (
$storage_root_path/trash). По умолчанию удален ные данные хранятся в каталоге trash в течение одного дня, что также может привести к тому, что фактическое использование диска превысит то, что показано вSHOW BACKENDS.Время хранения удаленных данных в каталоге trash можно настроить с помощью динамического параметра BE
trash_file_expire_time_sec(значение по умолчанию: 86400).curl http://$be_ip:$be_http_port/api/update_config?trash_file_expire_time_sec=86400