如何在Prometheus-operator中监视外部服务

时间:2019-07-02 08:35:37

标签: kubernetes prometheus kubernetes-helm prometheus-operator

我正在尝试在prometheus-operator中监视外部服务(cassandra度量标准的导出器)。我使用头盔2.11.0安装了prometheus-operator。我使用以下yaml安装了它:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system

以及我的kubernetes集群上的以下命令:

kubectl create -f rbac-config.yml
helm init --service-account tiller --history-max 200
helm install stable/prometheus-operator --name prometheus-operator --namespace monitoring

接下来,基于文章: how monitor to an external service

我尝试执行其中描述的步骤。按照建议,我创建了带有现有Prometheus标签的Endpoints,Service和ServiceMonitor。这是我的Yaml文件:

apiVersion: v1
kind: Endpoints
metadata:
  name: cassandra-metrics80
  labels:
    app: cassandra-metrics80
subsets:
- addresses:
  - ip: 10.150.1.80
  ports:
  - name: web
    port: 7070
    protocol: TCP
apiVersion: v1
kind: Service
metadata:
  name: cassandra-metrics80
  namespace: monitoring
  labels:
    app: cassandra-metrics80
    release: prometheus-operator
spec:
  externalName: 10.150.1.80
  ports:
  - name: web
    port: 7070
    protocol: TCP
    targetPort: 7070
  type: ExternalName
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: cassandra-metrics80
  labels:
    app: cassandra-metrics80
    release: prometheus-operator
spec:
  selector:
    matchLabels:
      app: cassandra-metrics80
      release: prometheus-operator
    namespaceSelector:
      matchNames:
      - monitoring
  endpoints:
  - port: web
    interval: 10s
    honorLabels: true

在Prometheus服务发现页面中,我可以看到: Service Discovery

该服务未激活,所有标签均被删除。 为了解决这个问题,我做了很多事情,例如设置targetLabels。尝试重新标记发现的内容,例如 在此处描述:prometheus relabeling 但是不幸的是没有任何效果。可能是问题所在,或者我应该如何对其进行更好的调查?

2 个答案:

答案 0 :(得分:1)

好吧,在普罗米修斯开始从cassandra中看到一些指标之后,我发现服务应该与服务监视器和端点在同一个命名空间中。

答案 1 :(得分:0)

严格地说,只有“端点”和“服务”应该在同一名称空间中。 此外,“端点”和“服务”应与卢卡斯之前提到的名称相同。

ServiceMonitor可以放置在任何地方,它可以在已定义的名称空间(namespaceSelector-> matchNames)内查找并刮取SVC / Endpoint并匹配所有标签(selector-> matchLabels):

    spec:
  selector:
    matchLabels:
      app: cassandra-metrics80
      release: prometheus-operator
  namespaceSelector:
    matchNames:
    - my-namespace

此外,现在有更简单的方法来定义其他刮取: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/additional-scrape-config.md 第二个缺点是,更改后需要重新启动Pod。似乎会自动发现并应用基于Endpoint / Service / ServiceMonitor的配置。