使用IBM Cloud Private (ICP) 提供的Prometheus和Grafana工具,可以可视化应用程序的指标数据
目标
IBM Cloud Private(ICP)作为一种附带产品监视工具,Prometheus和Grafana在kube-system命名空间中运行。通常情况下,它们用于收集节点和ICP相关服务的指标。但我们可以顺便收集应用程序的指标并将其可视化。
测试环境
– IBM 云私有化 2.1.0.2(Kubernetes 1.9.1)
程序
应用程序对Prometheus的度量支持
有一种方法类似于过去的文章”启用Spring Boot 2中的/actuator/prometheus”。在这种情况下,应用程序的度量指标可以通过/actuator/prometheus来收集。
确认 Prometheus 的 ConfigMap
由于Prometheus的ConfigMap被定义为名为monitoring-prometheus的项,因此我们需要查看其中的内容。在确认过程中,我们发现了可疑的注释。
$ kubectl get configmap monitoring-prometheus -n kube-system -o yaml | more
# Example scrape config for pods
#
# The relabeling allows the actual pod scrape endpoint to be configured via the
# following annotations:
#
# * `prometheus.io/scrape`: Only scrape pods that have a value of `true`
# * `prometheus.io/path`: If the metrics path is not `/metrics` override this.
# * `prometheus.io/port`: Scrape the pod on the indicated port instead of the default of `9102`.
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
实际上,如果在Pod的注释中指定prometheus.io/scrape: “true”,那么Prometheus将自动帮助我们收集指标数据。此外,我们还可以通过prometheus.io/path和prometheus.io/port来更改数据收集的路径和端口。
应用程序的部署
请使用以下方式指定注释。
apiVersion: apps/v1
kind: Deployment
metadata:
name: kube-sample-top
spec:
replicas: 2
selector:
matchLabels:
app: kube-sample-top
template:
metadata:
labels:
app: kube-sample-top
annotations:
prometheus.io/scrape: "true" # 収集の有効化
prometheus.io/path: /actuator/prometheus # パス
prometheus.io/port: "8080:8080" # Podのポート:コンテナポート
spec:
containers:
(略)
请确认Prometheus。
我会检查Prometheus的用户界面。因为端口没有被公开,所以我会执行端口转发。
$ kubectl get pod -n kube-system | grep monitoring-prometheus
monitoring-prometheus-7994986858-4nwp8 3/3 Running 0 5d
(略)
$ kubectl port-forward monitoring-prometheus-7994986858-4nwp8 9090:9090 -n kube-system
通过浏览器访问 http://localhost:9090/ ,然后选择菜单中的“状态→目标”。如果一切顺利,Scraping应该已经开始了。
确认Grafana
当您从ICP控制台中选择Platform→Monitoring,将显示Grafana。您可以尝试创建一个空的仪表板,并将JVM的堆使用量以图形方式显示出来。
设定如下条件。
然后图表被绘制出来了。
真是非常简单呢。
以上就是。