Prometheus 结合 StateMetrics+cAdvisor 监控 Kubernetes 集群服务

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

参考地址:

示例地址:


系列文章目录


一、cAdvisor 和 KubeStateMetrics 简介

在部署监控组件监控 Kubernetes 集群服务之前,先了解下监控组件 cAdvisorKube 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 Metricsmetrics 数据可能不会显示与 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 配置有什么用呢?我们将其分为两步分别介绍:

  • 步骤一,修改指标数据采集地址参数 addresskubernetes.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 资源中的配置内容,在配置中添加 cAdvisorKubeStateMetrics 相关配置。

将上面 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 按钮:

设置 ImportID 号为 13105 的图表,引入 Kubernetes 监控模板,然后点击 Load 按钮进入配置数据库:

选择使用上面配置的 Prometheus 数据库,之后点击 Import 按钮进入看板:

可以看到如下监控信息:

---END---

如果本文对你有帮助,可以关注我的公众号"小豆丁技术栈"了解最新动态,顺便也请帮忙 github 点颗星哦~感谢~


  !版权声明:本博客内容均为原创,每篇博文作为知识积累,写博不易,转载请注明出处。