版本:v1.8

自定义指标采集

在你的应用中,如果你想要将应用内组件(如 webservice)的指标暴露给 Prometheus,从而被指标采集器采集,你只需要为其添加 prometheus-scrape 运维特征。

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: my-app
  5. spec:
  6. components:
  7. - name: my-app
  8. type: webservice
  9. properties:
  10. image: somefive/prometheus-client-example:new
  11. traits:
  12. - type: prometheus-scrape

你也可以显式指定指标的端口和路径。

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: my-app
  5. spec:
  6. components:
  7. - name: my-app
  8. type: webservice
  9. properties:
  10. image: somefive/prometheus-client-example:new
  11. traits:
  12. - type: prometheus-scrape
  13. properties:
  14. port: 8080
  15. path: /metrics

上述配置将会帮助你让 Prometheus 采集到应用组件的指标。如果你想要在 Grafana 上看到这些指标,你需要在 Grafana 上创建相应的监控大盘。详见 监控大盘 章节来了解后续步骤。

如果你想自定义安装 prometheus-server ,你可以把配置放到一个单独的 ConfigMap 中,比如在命名空间 o11y-system 中的 my-prom。 要将你的自定义配置分发到所有集群,你还可以使用 KubeVela Application 来完成这项工作。

例如,如果你想在所有集群中的所有 prometheus 服务配置中添加一些记录规则,你可以首先创建一个 Application 来分发你的记录规则,如下所示。

  1. # my-prom.yaml
  2. apiVersion: core.oam.dev/v1beta1
  3. kind: Application
  4. metadata:
  5. name: my-prom
  6. namespace: o11y-system
  7. spec:
  8. components:
  9. - type: k8s-objects
  10. name: my-prom
  11. properties:
  12. objects:
  13. - apiVersion: v1
  14. kind: ConfigMap
  15. metadata:
  16. name: my-prom
  17. namespace: o11y-system
  18. data:
  19. my-recording-rules.yml: |
  20. groups:
  21. - name: example
  22. rules:
  23. - record: apiserver:requests:rate5m
  24. expr: sum(rate(apiserver_request_total{job="kubernetes-nodes"}[5m]))
  25. policies:
  26. - type: topology
  27. name: topology
  28. properties:
  29. clusterLabelSelector: {}

然后你需要在 prometheus-server 插件的启用过程中添加 customConfig 参数,比如:

  1. vela addon enable prometheus-server thanos=true serviceType=LoadBalancer storage=1G customConfig=my-prom

然后你将看到记录规则配置被分发到到所有 prome。

要对告警规则等其他配置进行自定义,过程与上面显示的记录规则示例相同。 你只需要在 application 中更改/添加 prometheus 配置。

  1. data:
  2. my-alerting-rules.yml: |
  3. groups:
  4. - name: example
  5. rules:
  6. - alert: HighApplicationQueueDepth
  7. expr: sum(workqueue_depth{app_kubernetes_io_name="vela-core",name="application"}) > 100
  8. for: 10m
  9. annotations:
  10. summary: High Application Queue Depth

prometheus-rules-config

如果要更改 Grafana 的默认用户名和密码,可以运行以下命令:

  1. vela addon enable grafana adminUser=super-user adminPassword=PASSWORD

这会将你的默认管理员用户更改为 super-user,并将其密码更改为 PASSWORD

如果你希望 prometheus-server 和 grafana 将数据持久化在卷中,可以在安装时指定 storage 参数,例如:

  1. vela addon enable prometheus-server storage=1G

这将创建 PersistentVolumeClaims 并让插件使用提供的存储。 即使插件被禁用,存储也不会自动回收。 你需要手动清理存储。

Last updated on 2023年5月6日 by Tianxin Dong