Управление алертами
В этом разделе представлены различные элементы алертов с разных измерений, включая непрерывность бизнеса, доступность cluster и нагрузку машины, и предоставляются соответствующие решения.
В следующих примерах все переменные имеют префикс $. Они должны быть заменены в соответствии с вашей бизнес-средой. Например, $job_name должен быть заменен соответствующим именем Job в конфигурации 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(selena_be_cpu{mode="idle", job="$job_name",instance=~".*"}[5m])) by (job, instance)) / (sum(rate(selena_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%.
Решение
Если cluster запускает алерт node_disk_io_time_seconds_total, сначала проверьте, есть ли какие-либо изменения в бизнесе. Если да, рассмотрите возможность отката изменений для поддержания предыдущего баланса ресурсов. Если изменения не идентифицированы или откат невозможен, рассмотрите, приводит ли нормальный рост бизнеса к необходимости расширения ресурсов. Вы можете использовать инструмент iotop для анализа использования I/O диска. iotop имеет UI, похожий на top, и включает информацию, такую как pid, user и I/O.
Вы также можете использовать следующий SQL-запрос для идентификации tablets, потребляющих значительное 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(selena_be_disks_total_capacity{job="$job"}) by (host, path) - SUM(selena_be_disks_avail_capacity{job="$job"}) by (host, path)) / SUM(selena_be_disks_total_capacity{job="$job"}) by (host, path) * 100 > 90
Описание алерта
Алерт запускается, когда использование емкости диска превышает 90%.
Решение
-
Проверьте, были ли изменения в объеме загруженных данных.
Мониторьте метрику
load_bytesв Grafana. Если произошло значительное увеличение объема загрузки данных, вам может потребоваться масштабировать ресурсы системы. -
Проверьте наличие операций DROP.
Если объем загрузки да нных не сильно изменился, выполните
SHOW BACKENDS. Если отчетное использование диска не соответствует фактическому использованию, проверьте FE Audit Log на наличие недавних операций 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
Алерт емкости диска метаданных FE
PromSQL
node_filesystem_free_bytes{mountpoint="${meta_path}"} /1024/1024/1024 < 10
Описание алерта
Алерт запускается, когда доступное дисковое пространство для метаданных FE меньше 10 ГБ.
Решение
Используйте следующие команды для проверки каталогов, занимающих большие объемы пространства, и очист ите ненужные файлы. Путь метаданных указывается конфигурацией meta_dir в fe.conf.
du -sh /${meta_dir} --max-depth=1
Если каталог метаданных занимает много пространства, это обычно потому, что каталог bdb большой, возможно, из-за сбоя CheckPoint. Обратитесь к Алерт сбоя CheckPoint для устранения неполадок. Если этот метод не решит проблему, обратитесь в команду технической поддержки.
Алерты исключений сервиса cluster
Алерты сбоя Compaction
Алерт сбоя Cumulative Compaction
PromSQL
increase(selena_be_engine_requests_total{job="$job_name" ,status="failed",type="cumulative_compaction"}[1m]) > 3
increase(selena_be_engine_requests_total{job="$job_name" ,status="failed",type="base_compaction"}[1m]) > 3
Описание алерта
Алерт запускается, когда происходят три сбоя в Cumulative Compaction или Base Compaction в течение последней минуты.
Решение
Найдите лог соответствующего узла BE для следующих ключевых слов для идентификации вовлеченного tablet.
grep -E 'compaction' be.INFO | grep failed
Запись лога, подобная следующей, указывает на сбой Compaction.
W0924 17:52:56:537041 123639 comaction_task_cpp:193] compaction task:8482. tablet:8423674 failed.
Вы можете проверить контекст лога для анализа сбоя. Обычно сбой мог быть вызван операцией DROP TABLE или PARTITION во время процесса Compaction. Система имеет внутренний механизм повтора для Compaction, и вы также можете вручную установить статус tablet как BAD и запустить задачу Clone для его восстановления.
Перед выполнением следующей операции убедитесь, что таблица имеет по крайней мере три полные replicas.
ADMIN SET REPLICA STATUS PROPERTIES("tablet_id" = "$tablet_id", "backend_id" = "$backend_id", "status" = "bad");
Алерт высокого давления Compaction
PromSQL
selena_fe_max_tablet_compaction_score{job="$job_name",instance="$fe_leader"} > 100
Описание алерта
Алерт запускается, когда наивысший Compaction Score превышает 100, указывая на высокое давление Compaction.
Решение
Этот алерт обычно вызван частой загрузкой, INSERT INTO VALUES или операциями DELETE (со скоростью 1 в секунду). Рекомендуется установить интервал между задачами загрузки или DELETE более 5 секунд и избегать отправки задач DELETE с высокой concurrency.