如何解决Prometheus错误“角色丢失(以下各项之一:pod,服务,端点,节点)”

时间:2018-09-19 12:49:02

标签: configuration kubernetes yaml prometheus

我正在尝试第一次将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)"

但是,您会看到我在- role: endpoints中指定了kubernetes_sd_configs

有人可以帮我吗

1 个答案:

答案 0 :(得分:2)

@media (max-width: 767.98px) { .mx-w-100 { max-width: 100% !important; } }是配置列表,以YAML术语表示为块顺序。

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

kubernetes_sd_configs

因此,您要定义两个配置,并且只有第一个具有角色。这就是为什么您得到错误。您很可能只想创建一个配置了- role: endpoints - api_server: localhost:3000 role的配置。删除第二个api_server,使-属于第一个配置:

api_server