Оператор Прометея + новый мини-куб Kubernetes = DeadMansSwitch + KubeControllerManagerDown + KubeSchedulerDown + TargetDown
Если я запускаю свежий чистый пустой мини-куб и helm install
последний stable/prometheus-operator
со строгими настройками по умолчанию я вижу четыре активных сигнала тревоги Прометея.
В этом супер упрощенном сценарии, где у меня есть чистый свежий мини-куб, на котором работает абсолютно ничего, кроме Прометея, не должно быть никаких проблем и никаких тревог. Являются ли эти сигналы ложными или сломанными? Что-то не так с моей настройкой или я должен отправить отчет об ошибке и отключить эти сигналы тревоги на время?
Вот мои основные шаги настройки:
minikube delete
# Any lower memory/cpu settings will experience problems
minikube start --memory 10240 --cpus 4 --kubernetes-version v1.12.2
eval $(minikube docker-env)
helm init
helm repo update
# wait a minute for Helm Tiller to start up.
helm install --name my-prom stable/prometheus-operator
Подождите несколько минут, пока все запустится, затем запустите переадресацию портов на сервере Prometheus и на Grafana:
kubectl port-forward service/my-prom-prometheus-operato-prometheus 9090:9090
kubectl port-forward service/my-prom-grafana 8080:80
Затем перейдите к http://localhost:9090/alerts
и посмотреть:
DeadMansSwitch (1 active)
KubeControllerManagerDown (1 active)
KubeSchedulerDown (1 active)
TargetDown (1 active)
Это фальшивка? Что-то действительно не так? Должен ли я отключить это?
В двух из этих сигналов отсутствуют метрики:
- KubeControllerManagerDown:
absent(up{job="kube-controller-manager"} == 1)
- KubeSchedulerDown:
absent(up{job="kube-scheduler"} == 1)
В http://localhost:9090/config
Я не вижу ни одной настроенной работы, но вижу очень тесно связанную работу с job_name
значения default/my-prom-prometheus-operato-kube-controller-manager/0
а также default/my-prom-prometheus-operato-kube-scheduler/0
, Это говорит о том, что job_name
значения должны совпадать, и есть ошибка, когда они не совпадают. Я также не вижу собранных метрик для любой работы. Разрешены ли косые черты в именах должностей?
Два других сигнала тревоги:
- DeadMansSwitch: выражение тревоги
vector(1)
, Я понятия не имею, что это такое. - TargetDown: этот сигнал тревоги срабатывает
up{job="kubelet"}
который имеет два значения метрики, один со значением 1,0 и один со значением 0,0. Верхнее значение дляendpoint="http-metrics"
и вниз Вали дляendpoint="cadvisor"
, Это последняя конечная точка должна быть? Почему бы не быть?
я иду в http://localhost:9090/graph
и беги sum(up) by (job)
я вижу 1.0
значения для всех:
{job="node-exporter"}
{job="my-prom-prometheus-operato-prometheus"}
{job="my-prom-prometheus-operato-operator"}
{job="my-prom-prometheus-operato-alertmanager"}
{job="kubelet"}
{job="kube-state-metrics"}
{job="apiserver"}
FYI, kubectl version
показывает:
Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.2", GitCommit:"17c77c7898218073f14c8d573582e8d2313dc740", GitTreeState:"clean", BuildDate:"2018-10-30T21:39:16Z", GoVersion:"go1.11.1", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.2", GitCommit:"17c77c7898218073f14c8d573582e8d2313dc740", GitTreeState:"clean", BuildDate:"2018-10-24T06:43:59Z", GoVersion:"go1.10.4", Compiler:"gc", Platform:"linux/amd64"}
1 ответ
DeadManSwitchAlarm - это вектор (1), который является сигналом тревоги, который всегда срабатывает, обычно он используется для проверки того, работает ли ваш менеджер оповещений или нет.
Вы возможно решаете эту проблему,
https://github.com/coreos/prometheus-operator/issues/1001
Надеюсь это поможет.
Watchdog
оповещение (ранее называлось DeadManSwitch
) является:
Предупреждение предназначено для обеспечения работоспособности всего конвейера предупреждений. Это предупреждение всегда срабатывает, поэтому оно всегда должно срабатывать в Alertmanager и всегда вести огонь по приемнику.
В Миникубе kube-controller-manager
а также kube-scheduler
слушайте по умолчанию на 127.0.0.1, поэтому Прометей не может очистить от них метрики. Вам необходимо запустить Minikube с прослушиванием этих компонентов на всех интерфейсах:
minikube start --kubernetes-version v1.12.2 \
--bootstrapper=kubeadm \
--extra-config=scheduler.address=0.0.0.0 \
--extra-config=controller-manager.address=0.0.0.0
Еще одна причина TargetDown
заключается в том, что селекторы службы по умолчанию, созданные с помощью рулевой диаграммы оператора Prometheus, не соответствуют меткам, используемым компонентами Minikube. Вам нужно сопоставить их, установив kubeControllerManager.selector
а также kubeScheduler.selector
параметры руля.
Взгляните на эту статью: Попробуйте Prometheus Operator с Helm + Minikube. Здесь рассматриваются все эти проблемы, способы их решения и многое другое.