我正在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
答案 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