用于检查 AlertManager 的错误 Prometheus 端点

Error Prometheus endpoint for checking AlertManager

我安装了 Prometheus(按照 link: https://devopscube.com/setup-prometheus-monitoring-on-kubernetes/

但是,当检查 Targets 的状态时,AlertManager 服务显示 "Down",每个其他端点都已启动,请参阅附件

然后,我检查服务发现,发现的标签显示:

"address="192.168.180.254:9093" __meta_kubernetes_endpoint_address_target_kind="Pod" __meta_kubernetes_endpoint_address_target_name="alertmanager-6c666985cc-54rjm" __meta_kubernetes_endpoint_node_name="worker-node1" __meta_kubernetes_endpoint_port_protocol="TCP" __meta_kubernetes_endpoint_ready="true" __meta_kubernetes_endpoints_name="alertmanager" __meta_kubernetes_namespace="monitoring" __meta_kubernetes_pod_annotation_cni_projectcalico_org_podIP="192.168.180.254/32" __meta_kubernetes_pod_annotationpresent_cni_projectcalico_org_podIP="true" __meta_kubernetes_pod_container_name="alertmanager" __meta_kubernetes_pod_container_port_name="alertmanager" __meta_kubernetes_pod_container_port_number="9093""

但是Target Labels显示另一个端口(8080),我不知道为什么:

instance="192.168.180.254:8080"
job="kubernetes-service-endpoints"
kubernetes_name="alertmanager"
kubernetes_namespace="monitoring"

首先,如果你想安装prometheus和grafana不生病,你需要通过helm来完成。

First install helm

然后

helm install installationWhatEverName stable/prometheus-operator

我已经在 GCE 上重现了你的问题。

如果您使用的是版本 1.16+,您可能已经更改了 apiVersion,因为在教程中您在 extensions/v1beta1 中有 Deployment。由于 K8s 1.16+ 您需要将其更改为 apiVersion: apps/v1。否则你会得到这样的错误:

error: unable to recognize "STDIN": no matches for kind "Deployment" in version "extensions/v1beta1"

第二件事,在 1.16+ 中你需要指定 selector。如果您不这样做,您将收到另一个错误:

`error: error validating "STDIN": error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec; if you choose to ignore these errors, turn validation off with --validate=false`

看起来像:

...
spec:
  replicas: 1
  selector:
    matchLabels:
      app: prometheus-server
  template:
    metadata:
      labels:
        app: prometheus-server
    spec:
      containers:
...

关于端口 8080 请检查 this article 示例。

Port: Port is the port number which makes a service visible to other services running within the same K8s cluster. In other words, in case a service wants to invoke another service running within the same Kubernetes cluster, it will be able to do so using port specified against “port” in the service spec file.

它适用于我在 GCE 中的环境。您是否为端点配置了防火墙?

此外。在 Helm 3 中,一些 hooks 被弃用。您可以找到此信息 here.

如果您仍然有问题,请提供您的 YAML 对版本 1.16+ 应用的更改。