如何解决 Prometheus 错误 'role missing (one of: pod, service, endpoints, node)'

How to resolve Prometheus Error 'role missing (one of: pod, service, endpoints, node)'

我第一次尝试将 kubernetes 应用到我的 minikube 集群。我在集群管理方面的经验有限,之前从未使用过 prometheus,所以对于菜鸟错误我深表歉意。

我运行以下命令:

docker build -t my-prometheus .
docker run -p 9090:9090 my-prometheus

这是我的 yaml:

global:
  scrape_interval: 15s
  external_labels:
    monitor: 'codelab-monitor'
scrape_configs:
- job_name: 'kubernetes-apiservers'
  scheme: http
  tls_config:
    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  kubernetes_sd_configs:
  - role: endpoints
  - api_server: localhost:30000

我 运行 通过 YAMLlint 得到它是有效的。但是,当我 运行 第二个 docker 命令时出现以下错误:

level=error ts=2018-09-18T21:49:34.365671918Z caller=main.go:617 err="error 
loading config from \"/etc/prometheus/prometheus.yml\": couldn't load 
configuration (--config.file=\"/etc/prometheus/prometheus.yml\"): parsing 
YAML file /etc/prometheus/prometheus.yml: role missing (one of: pod, 
service, endpoints, node)"

但是,你可以看到我在我的kubernetes_sd_configs中指定了我的- role: endpoints

谁能帮我解决这个问题

kubernetes_sd_configs 是配置列表,在 YAML 术语中样式为块序列。

现在,您的配置列表如下所示:

- role: endpoints
- api_server: localhost:3000

所以你定义了两个配置,只有第一个有作用。这就是您收到错误的原因。很可能,您只想创建一个配置了 roleapi_server 的配置。删除第二个 - 以便 api_server 属于第一个配置:

- role: endpoints
  api_server: localhost:3000