Prometheus 结合 StateMetrics+cAdvisor 监控 Kubernetes 集群服务
文章目录
!版权声明:本博客内容均为原创,每篇博文作为知识积累,写博不易,转载请注明出处。
系统环境:
- 操作系统: CentOS 7.9
- Docker 版本: 19.03.13
- Prometheus 版本: 2.25.0
- Kubernetes 版本: 1.20.2
- Kube State Metrics 版本: 2.0.0
参考地址:
示例地址:
系列文章目录
- 01. Kubernetes 部署监控工具 Prometheus
- 02. Kubernetes 部署图表工具 Grafana
- 03. Prometheus 结合 Node Exporter 监控 Kubernetes 集群节点
- 04. Prometheus 结合 StateMetrics+cAdvisor 监控 Kubernetes 集群服务
- 05. Prometheus 监听指定标签 Kubernetes 服务
- 06. Prometheus 监控 Kubernetes ETCD 集群
- 07. Prometheus Exporter 黑盒监控 Kubernetes 服务
- 08. Kubernetes 部署告警工具 AlertManager
- 09. AlertManager 配置邮箱告警
- 其它章节整理中...
一、cAdvisor 和 KubeStateMetrics 简介
在部署监控组件监控 Kubernetes 集群服务之前,先了解下监控组件 cAdvisor
和 Kube State Metrics
都是什么。本人从相应的俩个组件的 Github 和相关网址收集了一些信息,分别对其进行描述。
什么是 cAdvisor
cAdvisor
(Container Advisor) 是 Google 开源的一个容器监控工具,可用于对容器资源的使用情况和性能进行监控。它以守护进程方式运行,用于收集、聚合、处理和导出正在运行容器的有关信息。具体来说,该组件对每个容器都会记录其资源隔离参数、历史资源使用情况、完整历史资源使用情况的直方图和网络统计信息。
cAdvisor
本身就对 Docker
容器支持,并且还对其它类型的容器尽可能的提供支持,力求兼容与适配所有类型的容器。
由以上介绍我们可以知道,cAdvisor 是用于监控容器引擎的。由于其监控的实用性,Kubernetes 已经默认将其与 Kubelet 融合,所以我们无需再单独部署 cAdvisor 组件来暴露节点中容器运行的信息,直接使用 Kubelet 组件提供的指标采集地址即可。
什么是 KubeStateMetrics
Kube State Metrics
是一个简单的服务,该服务通过监听 Kubernetes API
服务器来生成不同资源的状态的 Metrics
数据。它不关注 Kubernetes 节点组件的运行状况,而是关注集群内部各种资源对象 (例如 deployment、node 和 pod) 的运行状况。
Kube State Metrics
是直接从 Kubernetes API
对象中获取生成的指标数据,这个过程中不会对指标数据进行修改。这样可以确保该组件提供的功能具有与 Kubernetes API
对象本身具有相同级别的稳定性。反过来讲,这意味着在某些情况下 Kube State Metrics
的 metrics
数据可能不会显示与 Kubectl
完全相同的值,因为 Kubectl
会应用某些启发式方法来显示可理解的消息。Kube State Metrics
公开了未经 Kubernetes API
修改的原始数据,这样用户可以拥有所需的所有数据,并根据需要执行启发式操作。
由于该组件 Kubernetes 并未与其默认集成在一起,所以需要我们单独部署。
二、Kubernetes 部署 KubeStateMetrics 组件
上面介绍这俩个监控组件时已经提到,cAdvisor
已经被 Kubernetes 默认集成,而 Kube State Metrics
并没有被默认集成,所以我们要想监控集群完整数据,就需要在 Kubernetes
中部署 Kube State Metrics
组件,这样才能够将集群中的服务资源指标数据暴露出来,以便于我们对不同资源进行监控。
部署 KubeStateMetrics RBAC
由于 Kube State Metrics
组件需要通过与 kube-apiserver
连接,并调用相应的接口去获取 kubernetes
集群数据,这个过程需要 Kube State Metrics
组件拥有一定的权限才能成功执行这些操作。
在 Kubernetes
中默认使用 RBAC
方式管理权限。所以,我们需要创建相应的 RBAC 资源来提供该组件使用。这里创建 Kube State Metrics
RBAC
文件 kube-state-metrics-rbac.yaml,内容如下:
这里使用的 Namespace 为 kube-system,如果你不想部署在这个命名空间,请提前修改里面的 Namespace 参数。
1apiVersion: v1
2kind: ServiceAccount
3metadata:
4 name: kube-state-metrics
5 namespace: kube-system
6 labels:
7 k8s-app: kube-state-metrics
8---
9apiVersion: rbac.authorization.k8s.io/v1
10kind: ClusterRole
11metadata:
12 name: kube-state-metrics
13 labels:
14 k8s-app: kube-state-metrics
15rules:
16- apiGroups: [""]
17 resources: ["configmaps","secrets","nodes","pods",
18 "services","resourcequotas",
19 "replicationcontrollers","limitranges",
20 "persistentvolumeclaims","persistentvolumes",
21 "namespaces","endpoints"]
22 verbs: ["list","watch"]
23- apiGroups: ["extensions"]
24 resources: ["daemonsets","deployments","replicasets"]
25 verbs: ["list","watch"]
26- apiGroups: ["apps"]
27 resources: ["statefulsets","daemonsets","deployments","replicasets"]
28 verbs: ["list","watch"]
29- apiGroups: ["batch"]
30 resources: ["cronjobs","jobs"]
31 verbs: ["list","watch"]
32- apiGroups: ["autoscaling"]
33 resources: ["horizontalpodautoscalers"]
34 verbs: ["list","watch"]
35- apiGroups: ["authentication.k8s.io"]
36 resources: ["tokenreviews"]
37 verbs: ["create"]
38- apiGroups: ["authorization.k8s.io"]
39 resources: ["subjectaccessreviews"]
40 verbs: ["create"]
41- apiGroups: ["policy"]
42 resources: ["poddisruptionbudgets"]
43 verbs: ["list","watch"]
44- apiGroups: ["certificates.k8s.io"]
45 resources: ["certificatesigningrequests"]
46 verbs: ["list","watch"]
47- apiGroups: ["storage.k8s.io"]
48 resources: ["storageclasses","volumeattachments"]
49 verbs: ["list","watch"]
50- apiGroups: ["admissionregistration.k8s.io"]
51 resources: ["mutatingwebhookconfigurations","validatingwebhookconfigurations"]
52 verbs: ["list","watch"]
53- apiGroups: ["networking.k8s.io"]
54 resources: ["networkpolicies","ingresses"]
55 verbs: ["list","watch"]
56- apiGroups: ["coordination.k8s.io"]
57 resources: ["leases"]
58 verbs: ["list","watch"]
59---
60apiVersion: rbac.authorization.k8s.io/v1
61kind: ClusterRoleBinding
62metadata:
63 name: kube-state-metrics
64 labels:
65 app: kube-state-metrics
66roleRef:
67 apiGroup: rbac.authorization.k8s.io
68 kind: ClusterRole
69 name: kube-state-metrics
70subjects:
71- kind: ServiceAccount
72 name: kube-state-metrics
73 namespace: kube-system
将 KubeStateMetrics
RBAC
资源部署到 Kubernetes 集群中:
- -f: 指定待部署的资源文件。
1$ kubectl apply -f kube-state-metrics-rbac.yaml
部署 KubeStateMetrics
接下来我们创建 Kube State Metrics
的部署文件 kube-state-metrics-deploy.yaml,内如如下:
1apiVersion: v1
2kind: Service
3metadata:
4 name: kube-state-metrics
5 labels:
6 k8s-app: kube-state-metrics
7 app.kubernetes.io/name: kube-state-metrics ##不能删除此注解,该注解用于Prometheus自动发现
8spec:
9 type: ClusterIP
10 ports:
11 - name: http-metrics
12 port: 8080
13 targetPort: 8080
14 - name: telemetry
15 port: 8081
16 targetPort: 8081
17 selector:
18 k8s-app: kube-state-metrics
19---
20apiVersion: apps/v1
21kind: Deployment
22metadata:
23 name: kube-state-metrics
24 labels:
25 k8s-app: kube-state-metrics
26spec:
27 replicas: 1
28 selector:
29 matchLabels:
30 k8s-app: kube-state-metrics
31 template:
32 metadata:
33 labels:
34 k8s-app: kube-state-metrics
35 spec:
36 serviceAccountName: kube-state-metrics
37 containers:
38 - name: kube-state-metrics
39 image: bitnami/kube-state-metrics:2.0.0
40 securityContext:
41 runAsUser: 65534
42 ports:
43 - name: http-metrics ##用于公开kubernetes的指标数据的端口
44 containerPort: 8080
45 - name: telemetry ##用于公开自身kube-state-metrics的指标数据的端口
46 containerPort: 8081
47 resources:
48 limits:
49 cpu: 200m
50 memory: 200Mi
51 requests:
52 cpu: 100m
53 memory: 100Mi
54 livenessProbe:
55 httpGet:
56 path: /healthz
57 port: 8080
58 initialDelaySeconds: 5
59 timeoutSeconds: 5
60 readinessProbe:
61 httpGet:
62 path: /
63 port: 8081
64 initialDelaySeconds: 5
65 timeoutSeconds: 5
将 KubeStateMetrics
部署到 Kubernetes 中:
- -f: 指定待部署的资源文件。
- -n: 指定资源部署的命名空间。
1$ kubectl apply -f kube-state-metrics-deploy.yaml -n kube-system
访问 KubeStateMetrics 暴露的指标数据
部署完 Kube State Metrics
组件后,我们可以在 Kubernetes Master
节点中执行下面命令,测试是否能正常访问到 Kube State Metrics
暴露的 /metrics
接口获取数据。执行的命令如下:
1$ curl -kL $(kubectl get service -n kube-system | grep kube-state-metrics |awk '{ print $3 }'):8080/metrics
如果执行命令成,此时应该能看到如下样式的指标数据:
1kube_configmap_info{namespace="mydlqcloud",configmap="mysql-config"} 1
2kube_configmap_info{namespace="kube-system",configmap="extension-apiserver-authentication"} 1
3kube_configmap_info{namespace="default",configmap="kube-root-ca.crt"} 1
4kube_configmap_info{namespace="kube-system",configmap="coredns"} 1
5kube_configmap_info{namespace="kube-system",configmap="kubelet-config-1.20"} 1
6kube_configmap_info{namespace="kube-system",configmap="nginx-ingress-leader-election"} 1
7kube_configmap_info{namespace="mydlqcloud",configmap="nacos-config"} 1
8kube_configmap_info{namespace="kube-system",configmap="traefik-config"} 1
9kube_configmap_info{namespace="kube-system",configmap="nginx-config"} 1
10kube_configmap_info{namespace="mydlqcloud",configmap="kube-root-ca.crt"} 1
11kube_configmap_info{namespace="kube-node-lease",configmap="kube-root-ca.crt"} 1
12kube_configmap_info{namespace="kube-system",configmap="kubernetes-dashboard-settings"} 1
13kube_configmap_info{namespace="kube-public",configmap="kube-root-ca.crt"} 1
14kube_configmap_info{namespace="kube-system",configmap="alertmanager-config"} 1
15kube_configmap_info{namespace="kube-system",configmap="kube-proxy"} 1
16kube_configmap_info{namespace="kube-public",configmap="cluster-info"} 1
17kube_configmap_info{namespace="kube-system",configmap="calico-config"} 1
18kube_configmap_info{namespace="kube-system",configmap="kube-root-ca.crt"} 1
19kube_configmap_info{namespace="kube-system",configmap="kubeadm-config"} 1
20kube_configmap_info{namespace="kube-system",configmap="prometheus-config"} 1
21# HELP kube_configmap_created Unix creation timestamp
22# TYPE kube_configmap_created gauge
23kube_configmap_created{namespace="kube-system",configmap="prometheus-config"} 1.615452918e+09
24kube_configmap_created{namespace="kube-system",configmap="kube-root-ca.crt"} 1.615278773e+09
25kube_configmap_created{namespace="kube-system",configmap="kubeadm-config"} 1.615278757e+09
26kube_configmap_created{namespace="kube-system",configmap="kubelet-config-1.20"} 1.615278757e+09
27......
三、Prometheus 中添加采集 cAdvisor 配置
Prometheus 添加 cAdvisor 配置
由于 Kubelet 中已经默认集成 cAdvisor 组件,所以我们无需部署该组件。不过由于监控的需要,我们还需在 Prometheus
中将采集 cAdvisor
的配置添加进去。
在 Prometheus
配置文件中添加 cAdvisor
指标数据采集配置,配置内容如下所示:
1- job_name: 'kubernetes-cadvisor'
2 scheme: https
3 metrics_path: /metrics/cadvisor
4 tls_config:
5 ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
6 bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
7 kubernetes_sd_configs:
8 - role: node
9 relabel_configs:
10 - action: labelmap
11 regex: __meta_kubernetes_node_label_(.+)
12 - target_label: __address__
13 replacement: kubernetes.default.svc:443
14 - source_labels: [__meta_kubernetes_node_name]
15 target_label: __metrics_path__
16 replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
17
18 ## 下面配置只是用于适配对应的 Grafana Dashboard 图表(这里用编号13105图表),不同的图表配置不同,不过多介绍
19 metric_relabel_configs:
20 - source_labels: [instance]
21 separator: ;
22 regex: (.+)
23 target_label: node
24 replacement: $1
25 action: replace
26 - source_labels: [pod_name]
27 separator: ;
28 regex: (.+)
29 target_label: pod
30 replacement: $1
31 action: replace
32 - source_labels: [container_name]
33 separator: ;
34 regex: (.+)
35 target_label: container
36 replacement: $1
37 action: replace
上面部分参数简介如下:
- kubernetes_sd_configs: 设置发现模式为 Kubernetes 动态服务发现。
- kubernetes_sd_configs.role: 指定 Kubernetes 的服务发现模式,这里设置为 node 的服务发现模式,该模式下会调用 kubelet 中的接口获取指标数据,能够获取到各个 Kubelet 的服务器地址和节点名称等信息。
- tls_config.ca_file: 用于指定连接 kube-apiserver 的证书文件。
- bearer_token_file: 用于指定连接 kube-apiserver 的鉴权认证的 token 串文件。
- relabel_configs: 用于对采集的标签进行重新标记。
cAdvisor 配置项 relabel_configs 简介
上面我们在配置中添加了 relabel_configs
重标记相关配置内容,这里每个重标记参数的作用都是为了更加方便收集与处理 Kubernetes 集群的监控指标数据。由于这部分配置比较多且繁琐,这里将分块一一为大家解释一下:
1## 模块一
2- action: labelmap
3 regex: __meta_kubernetes_node_label_(.+)
4
5## 模块二
6- target_label: __address__
7 replacement: kubernetes.default.svc:443
8- source_labels: [__meta_kubernetes_node_name]
9 target_label: __metrics_path__
10 replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
(1)、模块一
将 regex 表达式中的内容 __meta_kubernetes_node_label_(.+)
与获取的所有标签名进行匹配,根据全部匹配成功的标签来创建新标签。新标签的标签名称为 __meta_kubernetes_node_label_(.+)
表达式中 (.+)
这部分的内容,新标签的值为原标签的值。
例如,获取的标签列表中存在内容为 __meta_kubernetes_node_label_beta_kubernetes_io_os="linux"
的标签,这个标签的名称和值分别为:
1标签名称: "__meta_kubernetes_node_label_beta_kubernetes_io_os"
2标签值: "linux"
该标签能够与上面配置的 regex 表达式匹配,那么这时,将会创建一个新的标签,该标签名称与值分别为:
1新标签名称: "beta_kubernetes_io_os"
2新标签值: "linux"
综上可知,这里这么做的目的是获取 Kubernetes Node 节点的 Label 标签,但是 Kubernetes 给这些标签加了 __meta_kubernetes_node_label_
前缀,所以我们需要将这些前缀移除,才能获得真实的 Label 标签。
(2)、模块二
在介绍这块配置作用之前,我们先介绍下 cAdvisor 在和 kubernetes 的集成关系。
在 Kubernetes 1.7.3 版本以前,cAdvisor 的 metrics 数据集成在 Kubelet 接口中,在 1.7.3 以后的版本中 cAdvisor 的指标数据被 Kubelet 的 metrics 独立出来了。按新版本的标准配置,Kubelet 中的 cAdvisor 是没有对外开放 4194 端口的。所以,我们只能通过 kube-apiserver 提供的 api 做代理获取监控指标数据,其中:
1## 可以通过下面地址来获取 Kubelet 的指标数据
2http://{apiserver的IP地址}:{{apiserver的端口}/api/v1/nodes/{节点名称}/proxy/metrics
3
4## 可以通过地址来获取 cAdvisor 的指标数据
5http://{apiserver的IP地址}:{{apiserver的端口}/api/v1/nodes/{节点名称}/proxy/metrics/cadvisor
所以,我们可以通过 kube-apiserver 获取我们想要的 cAdvisor 数据。
在 Kubernets 中的 Default 命名空间中存在 kube-apiserver 的 Service 资源 kubernetes
,我们在 kubernetes 内部可以使用与该 Service 关联的域名 kubernetes.default.svc:443
访问 kube-apiserver 的接口。
介绍了 cAdvisor 和 kubernetes 的集成关系后,那么这里 relabel_configs 配置有什么用呢?我们将其分为两步分别介绍:
- 步骤一,修改指标数据采集地址参数
address
为kubernetes.default.svc:443
。 - 步骤二,修改指标数据采集地址中的路径参数
metrics_path
为/api/v1/nodes/${1}/proxy/metrics/cadvisor
,其中${1}
表示 Kubernetes 中每个 Node 的名称。
结合这两步骤,可以知道这俩个配置的作用是拼凑 http://{apiserver的IP地址}:{{apiserver的端口}/api/v1/nodes/{节点名称}/proxy/metrics/cadvisor
这个地址。
cAdvisor 重标记作用总结
综上介绍,我们可以对上面配置进行总结一下,其每步作用分别为:
- ① 去掉前缀,获取 kubernetes 的 node 节点设置的 label 标签。
- ② 修改指标数据采集为 kubernetes 集群内部 kube-apiserver 地址,即 kubernetes.default.svc:443。
- ③ 通过节点 label 标签,获取各个节点名称,拼凑路径 /api/v1/nodes/{节点名称}/proxy/metrics/cadvisor。
有了上面三个步骤,我们就能通过 http://{apiserver的IP地址}:{{apiserver的端口}/api/v1/nodes/{节点名称}/proxy/metrics/cadvisor
接口地址中获取指 cAdvisor 指标数据了。
四、Prometheus 添加 KubeStateMetrics 配置
Prometheus 添加 KubeStateMetrics 配置
经过上面操作,我们已经在 Kubernetes 中部署了 Kube State Metrics
。接下来就需要在 Prometheus
配置文件中添加 kube-state-metrics
指标数据采集配置,配置内容如下所示:
1- job_name: "kube-state-metrics"
2 kubernetes_sd_configs:
3 - role: endpoints
4 ## 指定kube-state-metrics组件所在的Namespace名称
5 namespaces:
6 names: ["kube-system"]
7 relabel_configs:
8 ## 指定从 app.kubernetes.io/name 标签等于 kube-state-metrics 的 service 服务获取指标信息
9 - action: keep
10 source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_name]
11 regex: kube-state-metrics
12 ## 下面配置也是为了适配 Grafana Dashboard 模板(编号13105图表)
13 - action: labelmap
14 regex: __meta_kubernetes_service_label_(.+)
15 - action: replace
16 source_labels: [__meta_kubernetes_namespace]
17 target_label: k8s_namespace
18 - action: replace
19 source_labels: [__meta_kubernetes_service_name]
20 target_label: k8s_sname
上面部分参数简介如下:
- kubernetes_sd_configs: 设置发现模式为 Kubernetes 动态服务发现。
- kubernetes_sd_configs.role: 指定 Kubernetes 的服务发现模式,这里设置为 endpoints 的服务发现模式,该模式下会调用 kube-apiserver 中的接口获取指标数据。并且还限定只获取 kube-state-metrics 所在 Namespace 的空间 kube-system 中的 Endpoints 信息。
- kubernetes_sd_configs.namespace: 指定只在配置的 Namespace 中进行 endpoints 服务发现。
- relabel_configs: 用于对采集的标签进行重新标记。
KubeStateMetrics 配置项 relabel_configs 简介
和上面介绍 cAdvisor 一样,我们也介绍下 KubeStateMetrics 的 relabel_configs
配置的作用:
1## 模块一
2- action: keep
3 source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_name]
4 regex: kube-state-metrics
(1)、模块一
使用 keep 行为则表示,删除与 regex 表达式不符合全部标签,只保留符合要求的标签。这里原标签 source_labels 的配置的内容为 __meta_kubernetes_service_label_app_kubernetes_io_name
,对这个标签进行拆分,可以分为:
1前缀: __meta_kubernetes_service_label_
2标签: app_kubernetes_io_name
这样拆分后就很容易理解了,意思就是只处理带 app.kubernetes.io/name
标签的服务,且标签的值还得与 regex 表达式匹配。
这里这么做的目的是通过 Kubernetes 的 endpoints 类型的服务发现,查找带 app.kubernetes.io/name
标签的 Service
,从该 Service
关联 Endpoints
的每个 地址
与 端口
中发现目标。
五、将 Prometheus 配置存入 ConfigMap 资源中
在之前介绍过 在 Kubernetes 中如何部署 Prometheus。部署过程中将 Prometheus 的配置文件存储在 Kubernetes 的 ConfigMap 资源里进行存储,所以我们需要修改 ConfigMap
资源中的配置内容,在配置中添加 cAdvisor
和 KubeStateMetrics
相关配置。
将上面 Prometheus
中的配置存入到 Kubernetes
中的 ConfigMap
资源文件 prometheus-config.yaml 中,资源内容如下:
1kind: ConfigMap
2apiVersion: v1
3metadata:
4 name: prometheus-config
5 namespace: kube-system
6data:
7 prometheus.yml: |
8 global:
9 scrape_interval: 15s
10 evaluation_interval: 15s
11 external_labels:
12 cluster: "kubernetes"
13 scrape_configs:
14 ############################ kubernetes-cadvisor ##############################
15 - job_name: 'kubernetes-cadvisor'
16 scheme: https
17 metrics_path: /metrics/cadvisor
18 tls_config:
19 ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
20 bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
21 kubernetes_sd_configs:
22 - role: node
23 relabel_configs:
24 - action: labelmap
25 regex: __meta_kubernetes_node_label_(.+)
26 - target_label: __address__
27 replacement: kubernetes.default.svc:443
28 - source_labels: [__meta_kubernetes_node_name]
29 target_label: __metrics_path__
30 replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
31 metric_relabel_configs:
32 - source_labels: [instance]
33 separator: ;
34 regex: (.+)
35 target_label: node
36 replacement: $1
37 action: replace
38 - source_labels: [pod_name]
39 separator: ;
40 regex: (.+)
41 target_label: pod
42 replacement: $1
43 action: replace
44 - source_labels: [container_name]
45 separator: ;
46 regex: (.+)
47 target_label: container
48 replacement: $1
49 action: replace
50 ############################ kube-state-metrics ##############################
51 - job_name: "kube-state-metrics"
52 kubernetes_sd_configs:
53 - role: endpoints
54 namespaces:
55 names: ["kube-system"]
56 relabel_configs:
57 - action: keep
58 source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_name]
59 regex: kube-state-metrics
60 - action: labelmap
61 regex: __meta_kubernetes_service_label_(.+)
62 - action: replace
63 source_labels: [__meta_kubernetes_namespace]
64 target_label: k8s_namespace
65 - action: replace
66 source_labels: [__meta_kubernetes_service_name]
67 target_label: k8s_sname
将 Prometheus 配置文件 ConfigMap 资源部署到 Kubernetes 中:
- -f: 指定要部署的资源文件。
- -n: 指定 Namespace 名称。
1$ kubectl apply -f prometheus-config.yaml -n kube-system
重新加载 Prometheus 配置,这里本人的 Prometheus
地址为 http://192.168.2.32:30900,执行命令如下:
1$ curl -XPOST http://192.168.2.32:30900/-/reload
六、Grafana 中引入 Prometheus 数据库
上面已经配置完成 Prometheus
监控 Kubernetes
服务,不过我们很难直观的通过采集的 Metrics
数据观测服务运行状态信息。所以,这时候我们需要借助 Grafana 图表工具将这些指标信息绘制成图表,来直观的显示服务的运行情况。
在之前的 "Kubernetes 部署图表组件 Grafana" 文章中,已经介绍过如何在 Kubernetes 中部署 Grafana,有兴趣可以看一下,这里就不介绍该组件的安装过程。
进入 Grafana 界面,输入默认的用户名/密码 (默认为admin
/admin
) 进入 Grafana 界面中:
然后主界面后点左侧栏菜单,选择 Data Sources
来添加 Prometheus
数据库:
输入数据库名称与 Prometheus 地址,然后点 Save&Test
按钮。
这样我们就成功将 Prometheus
数据库添加到 Grafana
中了,后面展示图表时就可以选择指定使用该数据库读取数据。
七、Grafana 中引入 Kubernetes 服务监控看板
点击 Grafana 左侧栏菜单,选择 Manage
菜单,进入后点击右上角 Import
按钮:
设置 Import
的 ID
号为 13105
的图表,引入 Kubernetes
监控模板,然后点击 Load
按钮进入配置数据库:
选择使用上面配置的 Prometheus
数据库,之后点击 Import
按钮进入看板:
可以看到如下监控信息:
---END---
如果本文对你有帮助,可以关注我的公众号"小豆丁技术栈"了解最新动态,顺便也请帮忙 github 点颗星哦~感谢~
!版权声明:本博客内容均为原创,每篇博文作为知识积累,写博不易,转载请注明出处。