Flink on k8s - k8s部署-部署Prometheus Grafana

Prometheus Grafana

通过 chatgpt 来引入一下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Prometheus 和 Grafana 是一对强大的工具,经常被一起使用来监控和可视化各种系统和应用的性能指标。这两个工具可以协同工作,提供全面的监控解决方案,下面是关于每个工具的详细介绍:

Copilot

使用**web**

正在为你生成答案…

###### 由 Copilot 发送:

**Prometheus** 和 **Grafana** 确实是一对强大的组合,经常被一起使用来监控和可视化各种系统和应用的性能指标。以下是对这两个工具的详细介绍:

### Prometheus

Prometheus 是一个开源的监控系统和时序数据库,主要特点包括:

- **多维数据模型**:由度量名称和键值对标识的时间序列数据。
- **PromQL**:一种灵活的查询语言,可以利用多维数据完成复杂查询。
- **数据采集**:基于 HTTP 的 pull(拉取)方式采集时间序列数据,同时支持 PushGateway 组件收集数据。
- **服务发现**:支持通过静态配置或服务发现机制动态发现监控目标。
- [**告警管理**:通过 Alertmanager 组件进行告警的汇总和分发](https://blog.csdn.net/Mo_nor/article/details/139614521)[1](https://blog.csdn.net/Mo_nor/article/details/139614521)[2](https://blog.csdn.net/kft1314/article/details/140015246).

### Grafana

Grafana 是一个开源的可视化平台,主要用于展示从各种数据源(如 Prometheus、Graphite、Elasticsearch、InfluxDB 等)收集的数据。其主要特点包括:

- **丰富的仪表盘和图形编辑器**:可以创建和定制各种图表和仪表盘。
- **多数据源支持**:支持多种数据源的集成,提供统一的可视化界面。
- [**告警功能**:可以设置告警规则,并通过多种方式(如邮件、Slack 等)发送告警通知](https://blog.csdn.net/Mo_nor/article/details/139614521)[2](https://blog.csdn.net/kft1314/article/details/140015246)[3](https://cloud.tencent.com/developer/article/2245013).

### 协同工作

Prometheus 和 Grafana 通常协同工作,提供全面的监控解决方案:

1. **数据采集**:Prometheus 负责从各种监控目标(如服务器、应用程序、容器等)采集性能指标数据。
2. **数据存储**:Prometheus 将采集到的数据存储在其内置的时序数据库中。
3. **数据可视化**:Grafana 从 Prometheus 获取数据,并通过其强大的图形编辑器和仪表盘展示这些数据。
4. [**告警管理**:Prometheus 通过 Alertmanager 处理告警,Grafana 也可以配置告警规则并发送通知](https://blog.csdn.net/Mo_nor/article/details/139614521)[1](https://blog.csdn.net/Mo_nor/article/details/139614521)[2](https://blog.csdn.net/kft1314/article/details/140015246).

如果你有具体的使用场景或问题,欢迎分享,我可以提供更详细的帮助和建议。

[](https://blog.csdn.net/Mo_nor/article/details/139614521)[1](https://blog.csdn.net/Mo_nor/article/details/139614521):  [](https://blog.csdn.net/Mo_nor/article/details/139614521)[2](https://blog.csdn.net/kft1314/article/details/140015246):  [](https://blog.csdn.net/Mo_nor/article/details/139614521)[3](https://cloud.tencent.com/developer/article/2245013):

部署 Prometheus、Grafana

1. 选择 kube-prometheus 版本

image.png ![[image-20240830140417985.png]]

2.下载 kube-promethus

1
2
wget https://github.com/prometheus-operator/kube-prometheus/archive/refs/tags/v0.13.0.tar.gz
tar -zxf v0.13.0.tar.gz

3. 查看 kube-prometheus-0.13.0/manifests/目录

这个目录下负责初始化,涉及到一下内容

1
2
3
4
5
6
7
8
9
Custom Resource Definitions (CRDs):Prometheus Operator 使用 CRDs 来定义和管理 Prometheus、Alertmanager 实例以及相关的监控和告警规则。setup/ 通常包含这些 CRDs 的定义。

Prometheus Operator Deployment: 在部署 Prometheus 和 Alertmanager 实例之前,您首先需要部署 Prometheus Operator。setup/ 可能包含了 Prometheus Operator 的 Deployment 清单。

RBAC Resources: 这可能包括与 Prometheus Operator 和其他监控组件相关的 Roles, RoleBindings, ServiceAccounts 等。

Initial Configurations: 这可能包括一些初步的配置,如 ConfigMaps,用于初始化组件的设置。

在应用整个 manifests/ 目录之前,通常首先应用 manifests/setup/。这确保了所有必要的基础设施和设置都到位,然后再部署其他监控组件,例如 Prometheus、Alertmanager、Grafana 等。

4. 配置 Prometheus-server 存储持久化

因为 prometheus 是 Statefulset 部署模式, 这里使用 StorageClass 动态创建 PVC 方式(并不需要提前创建 PVC),并且命名规则会参考 POD 的命名。 修改内容如下:
nvim kube-prometheus-0.13.0/manifests/prometheus-prometheus.yaml image.png ![[image-20240830141217501.png]]

5.配置 Grafana 存储持久化

由于 ​​Grafana​​​ 资源 kind 是 ​​Deployment​​​,这里需要补充一个知识点:在 Kubernetes 的 YAML 中不能直接在 Deployment 的配置文件中声明 volumeClaimTemplate。volumeClaimTemplate 是专门用于 StatefulSets 中的,用来为每个 Pod 创建一个新的 Persistent Volume(PV), 所以我们提前为其创建一个 ​​grafana-pvc.yaml ​​​ 文件,加入下面 ​​PVC​​ 配置。
创建 manifests/grafana-pvc.yaml image.png ![[image-20240830141358390.png]]

修改 manifests/grafana-deployment.yaml,将上面创建name: grafana的 volume 配置在 grafana-deployment.yaml 中,内容如下:

1
2
3
4
5
6
7
8
# 原文内容
- emptyDir: {}
  ame: grafana-storage

# 将上面原文内容 修改为下面内容,注意 claimName。
- name: grafana-storage
  persistentVolumeClaim:
    claimName: grafana

# 若 monitoring 命名空间不存在,则创建 kubectl create namespace monitoring kubectl apply -f grafana-pvc.yaml

6. 将 Prometheus,Grafana 的 service Type 设置 NodePort

vim manifests/prometheus-service.yaml 源文件为: image.png ![[image-20240830141933832.png]] 修改成如下样子

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
spec:
  type: NodePort # 新增
  ports:
    - name: web
      port: 9090
      targetPort: web
      nodePort: 32101 # 新增
    - name: reloader-web
      port: 8080
      targetPort: reloader-web
      nodePort: 32102 # 新增
  selector:

image.png ![[image-20240830142114666.png]]

nvim manifests/grafana-service.yaml image.png ![[image-20240830142243667.png]]

修改后的样子 image.png ![[image-20240830142340082.png]]

7. 修改副本数

  1. nvim manifests/prometheus-prometheus.yaml 将  replicas  设置为 1 (默认是 2)

  2. nvim manifests/prometheusAdapter-deployment.yaml 将  replicas  设置为 1 (默认是 2)

  3. nvim manifests/alertmanager-alertmanager.yaml 将  replicas  设置为 1 (默认是 3)

8.部署

1
2
3
4
5
6
7
8
kubectl apply --server-side -f manifests/setup

kubectl wait \
	--for condition=Established \
	--all CustomResourceDefinition \
	--namespace=monitoring

kubectl apply -f manifests/

9.删除 networkpolicy

1
[root@k8s01 ~]# kubectl delete networkpolicy --all -n monitoring networkpolicy.networking.k8s.io "alertmanager-main" deleted networkpolicy.networking.k8s.io "blackbox-exporter" deleted networkpolicy.networking.k8s.io "grafana" deleted networkpolicy.networking.k8s.io "kube-state-metrics" deleted networkpolicy.networking.k8s.io "node-exporter" deleted networkpolicy.networking.k8s.io "prometheus-adapter" deleted networkpolicy.networking.k8s.io "prometheus-k8s" deleted networkpolicy.networking.k8s.io "prometheus-operator" deleted

10. 处理镜像

1
for image in $(cat images-list.txt); do  skopeo copy docker://${image} docker://10.7.20.12:5000/${image#*/} --insecure-policy --dest-tls-verify=false; done

images.list

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
quay.io/brancz/kube-rbac-proxy:v0.14.2
quay.io/brancz/kube-rbac-proxy:v0.14.2
quay.io/brancz/kube-rbac-proxy:v0.14.2
quay.io/brancz/kube-rbac-proxy:v0.14.2
quay.io/brancz/kube-rbac-proxy:v0.14.2
quay.io/brancz/kube-rbac-proxy:v0.14.2
quay.io/brancz/kube-rbac-proxy:v0.14.2
quay.io/prometheus/alertmanager:v0.26.0
quay.io/prometheus-operator/prometheus-config-reloader:v0.67.1
registry.k8s.io/prometheus-adapter/prometheus-adapter:v0.11.1
registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.9.2
docker.io/jimmidyson/configmap-reload:v0.5.0
docker.io/grafana/grafana:9.5.3

替换对应的镜像。 访问对应的界面

10. 访问界面

gafana: http://10.7.10.196:32103 image.png ![[image-20240830150454411.png]] 默认账户和密码: admin/admin

image.png ![[image-20240830150527584.png]]

  • Prometheus Web: http://10.7.10.196:32101 image.png ![[image-20240830150608276.png]] image.png ![[image-20240830150631488.png]]

参考记录 L http://xinzhuxiansheng.com/articleDetail/122

卸载

1
	kubectl delete -f manifests/setup
Licensed under CC BY-NC-SA 4.0
最后更新于 Jan 06, 2025 05:52 UTC
comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计
Caret Up