无法在Kubernetes上为Prometheus编写配置文件

时间:2017-07-07 08:19:19

标签: kubernetes prometheus

我正在kubernetes集群上运行prometheus并试图刮掉pod,节点和服务。当我通过发送POST请求重新加载配置时,我收到以下错误 -

var getRecords = function (data, category) {
        $scope.stocks.result = [];
        data.forEach(function (elem) {
            if (elem.duration === category) {
                $scope.stocks.result.push(elem);
            }
        });
    };

function loadMore(){
    httpHelper.get(urlName, false, function (err, response) {
       if (err) return err;

       getRecords(response.data.data, $scope.category);
    });
}

在尝试按照官方文档编写配置文件时,我无法理解relabel_configs,source_labels,target_labels,action,keep,regex部分。有人可以解释这些部分以及prometheus中标签的使用。提前谢谢。

以下是prometheus.yml文件 -

failed to reload config: couldn't load configuration (-config.file=/etc/prometheus/conf/prometheus.yml): unknown fields in kubernetes_sd_config: api_server

2 个答案:

答案 0 :(得分:1)

您的yaml文件已关闭,请尝试以下操作:

  - job_name: 'kubernetes-services'

...

    kubernetes_sd_configs:
    - api_server: "https://kubernetes.default.svc"
      role: service

...

答案 1 :(得分:0)

这是有效的Prometheus Configmap示例文件fwiw。

https://github.com/kayrus/prometheus-kubernetes/blob/master/prometheus-configmap.yaml#L214-L241

我发现要减少kubectl认为使用yamllint所做的噪音。如果你得到配置图与选项yaml;当在kubectl命令中读取该文件时,将所有用于数据的部分放在data:部分中并且应该知道忽略其他3个部分(apiVersion,kind和metadata) )

因此,如果您将其作为新的配置图加载,请确保只有数据:部分。

apiVersion: v1 data: kind: ConfigMap metadata:

获取配置图的命令

kubectl get configmap prometheus-config --namespace prometheus -o yaml > prometheus.yml

取出所有多余的注释和两个文件中的额外空白行(你和示例)将其保存为prometheus [#]。yml然后获取yamllint并在文件上运行

yamllint -d relaxed prometheus[#].yml

大多数情况下yamllint会抱怨行是> 80个字符长。 如果它是JSON语法问题,那么它将很快显示出来。

HTH