在Kubernetes命名空间中监控Prometheus上的自定义服务的问题

时间:2019-05-29 02:14:10

标签: service kubernetes monitoring prometheus

我的目标是使用Prometheus监视服务,因此我遵循以下指南:

https://github.com/coreos/prometheus-operator/blob/master/Documentation/user-guides/getting-started.md

我对这一切还比较陌生,因此请原谅我的幼稚。我试图调查错误,但所有答案都令人费解。我不知道从哪里开始调试过程(也许看看YAML?)

我想监视自定义服务。因此,我将以下内容的service.yaml部署到自定义名称空间(t)中:

kind: Service
apiVersion: v1
metadata:
  namespace: t
  name: example-service-test
  labels:
    app: example-service-test
spec:
  selector:
    app: example-service-test
  type: NodePort
  ports:
  - name: http
    nodePort: 30901
    port: 8080
    protocol: TCP
    targetPort: http
---
apiVersion: v1
kind: Pod
metadata:
  name: example-service-test
  namespace: t
  labels:
    app: example-service-test
spec:
  containers:
  - name: example-service-test
    image: python:2.7
    imagePullPolicy: IfNotPresent
    command: ["/bin/bash"]
    args: ["-c", "echo \"<p>This is POD1 $(hostname)</p>\" > index.html; python -m SimpleHTTPServer 8080"]
    ports:
    - name: http
      containerPort: 8080

并将服务监视器部署到名称空间中:

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: example-service-test
  labels:
    team: frontendtest1
  namespace: t
spec:
  selector:
    matchLabels:
      app: example-service-test
  endpoints:
  - port: http

到目前为止,服务监视器正在检测服务,如下所示: Prometheus Service Discovery。 但是,从服务Prometheus Targets获取指标存在错误。

据我所知,普罗米修斯无法访问示例服务上的/ metrics-在这种情况下,我需要公开指标吗?如果是这样,我可以获取有关如何公开指标的逐步指南解决方案吗?如果没有,我应该走什么路线?

1 个答案:

答案 0 :(得分:0)

恐怕您可能会错过在CoreOS网站上关注的教程中有关应用程序指标如何进入Prometheus的关键内容:

  

首先,部署一个简单示例应用程序的三个实例,   在端口8080上监听并公开指标

是的,您的应用程序(网站)在端口8080上进行侦听,但未以Prometheus格式公开“ / metrics”端点上的任何度量标准。

您可以通过在托管Pod / Conatiner的内部点击端点来验证我在谈论哪种指标。

kubectl exec -it $(kubectl get po -l app=example-app -o jsonpath='{.items[0].metadata.name}') -c example-app -- curl localhost:8080/metrics

您应该看到与此类似的输出:

# HELP codelab_api_http_requests_in_progress The current number of API HTTP requests in progress.
# TYPE codelab_api_http_requests_in_progress gauge
codelab_api_http_requests_in_progress 1
# HELP codelab_api_request_duration_seconds A histogram of the API HTTP request durations in seconds.
# TYPE codelab_api_request_duration_seconds histogram
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.0001"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.00015000000000000001"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.00022500000000000002"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.0003375"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.00050625"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.000759375"} 0

请阅读更多here,以了解如何公开指标。