Мониторинг и оповещение о статусе модуля или перезапуске с помощью Google Container Engine (GKE) и Stackdriver

Есть ли способ отслеживать статус модуля и перезапускать количество модулей, работающих в кластере GKE, с помощью Stackdriver?

Хотя я могу видеть показатели использования ЦП, памяти и диска для всех модулей в Stackdriver, похоже, нет способа получить показатели о сбоях модулей или модулей в перезапускаемом наборе реплик из-за сбоев.

Я использую набор реплик Kubernetes для управления подами, поэтому они возрождаются и создаются с новым именем при сбое. Насколько я могу судить, метрики в Stackdriver отображаются по имени модуля (которое является уникальным для времени жизни модуля), что звучит не очень разумно.

Оповещение о сбоях модуля звучит настолько естественно, что трудно поверить, что это не поддерживается в настоящий момент. Возможности мониторинга и оповещения, которые я получаю от Stackdriver для Google Container Engine в существующем виде, кажутся довольно бесполезными, поскольку все они привязаны к модулям, время жизни которых может быть очень коротким.

Итак, если это не работает из коробки, есть ли известные обходные пути или передовые методы отслеживания непрерывных сбоев модулей?


comment
Я также работаю над подобным решением .. На данный момент я не нашел много информации о том, что вы спрашиваете, и других подобных показателях, которые могут быть интересными .. Если у меня появятся какие-то обновления, я дам вам знать!   -  person Michele Orsi    schedule 04.06.2017
comment
Согласились, что это явная дыра в стеке GKE / Stackdriver. Довольно удивлен, что я не могу найти способ настроить оповещения о том, когда модуль перезапускается или выселяется, или когда добавляется развертывание и т. Д. Вероятно, в конечном итоге я напишу свой собственный демон на основе python для этого. (используя это: github.com/kubernetes-client/python)   -  person JJC    schedule 16.11.2018


Ответы (4)


Вы можете добиться этого вручную, выполнив следующие действия:

  1. В средстве просмотра журналов создайте следующий фильтр:

    resource.labels.project_id="<PROJECT_ID>"
    resource.labels.cluster_name="<CLUSTER_NAME>"
    resource.labels.namespace_name="<NAMESPACE, or default>"
    jsonPayload.message:"failed liveness probe"
    
  2. Создайте метрику, нажав кнопку «Создать метрику» над полем фильтра и заполнив данные.

  3. Теперь вы можете отслеживать этот показатель в Stackdriver.

Был бы рад получить информацию о встроенной метрике вместо этого.

person Jonathan Lin    schedule 04.01.2019
comment
для полезной нагрузки, которую вы, вероятно, хотите (уничтожение контейнера И проверка работоспособности контейнера), в противном случае вы собираетесь сопоставить завершающие модули автомасштабирования при уменьшении нагрузки. - person dan carter; 10.02.2019
comment
Вы знаете, как автоматически разрешить оповещение на основе этого метода? - person 6utt3rfly; 20.11.2019
comment
Теперь похоже, что зонд живучести продукта контейнера не работает, будет перезапущен - person unludo; 15.01.2020
comment
Вы также должны фильтровать по ресурсу, иначе ваша метрика будет сканировать каждое сообщение журнала в пространстве имен кластера resource.type="k8s_pod" - person dan carter; 02.12.2020
comment
Я также считаю полезным добавить метку метрики к имени контейнера, поскольку группировка по временному имени модуля не так полезна. Поле: jsonPayload.message Регулярное выражение: Контейнер ([^ \ s \] *) - person dan carter; 02.12.2020

Теперь есть встроенная метрика, поэтому ее легко отображать на панели и / или предупреждать, не настраивая специальные метрики.

Metric: kubernetes.io/container/restart_count
Resource type: k8s_container
person dan carter    schedule 01.12.2020
comment
Это должен быть способ сделать это сейчас! - person Dennis Gloss; 26.12.2020
comment
Что-то изменилось с момента публикации этого комментария. Теперь оповещение часто срабатывает для модулей, которые завершаются. Добавьте фильтр state=ACTIVE, чтобы избежать этого и получать предупреждения только о перезапуске контейнеров в активных модулях. - person Boyko Karadzhov; 22.06.2021

В моем кластере (кластер k8s без оборудования) , я использую kube-state-metrics https://github.com/kubernetes/kube-state-metrics, чтобы делать то, что вы хотите. Этот проект принадлежит репо kubernetes и очень прост в использовании. После развертывания вы можете использовать kube_pod_container_status_restarts, чтобы узнать, перезапускается ли контейнер.

person WizardCXY    schedule 11.07.2017
comment
Я только что установил kube-state-metrics в свой кластер разработчиков, и этот статистический показатель отсутствует. На самом деле никакой другой полезной статистики о состоянии пода не представляется возможным. Слова перезапуск, завершение, выселение, изображение или отсрочка нигде не встречаются в возвращаемых 12 КБ метриках. : facepalm: - person JJC; 16.11.2018
comment
Странно, но я вижу метрику перезапуска в репо. githneby.com/kuberrer состояние-метрики / blob / - person nhooyr; 06.03.2019

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

person grimmjow_sms    schedule 29.07.2020