Prometheus Operator 为k8s设计和管理prometheus

背景介绍

什么叫做 Operator 呢?他是 CoreOS 所主导的一项计划,目的在于使复杂的 Application 可以轻松的假设以及维护在 Kubernets 中,可以到官网查看详细说明What are Red Hat OpenShift Operators?

,在开始前先用图片大概说明一般的 Prometheus 及 Prometheus Operator 的不同之处。

image-20230817223632990

一般的 Prometheus 三个角色分别是 Exporter,Prometheus 以及 Alertmanager,组件主要定义在 Prometheus 的 YAML 当中

  1. Exporter: 必须把想要传送给 Prometheus 的资料给暴露出来。

  2. Prometheus: 组件中会决定去哪些 Exporter 把资料给拉回来,假如事先定义的 alerting rules 被触发,就会把 event 传送给 Alertmanager

  3. Alertmanager:接收到从 Prmetheus 来的 event,再根据定义的 notification 组件来决定要通知的方法。

image-20230817224134783

上图为通过 Prometheus Operator 安装完的超简易示意图,通过 Opertaor 安装就跟原本的安装有些差异,但是在使用完后,我觉得管理上变得更简单干净,eg,比如如想要监控所有的 K8S Node 该如何达成(4)?

  1. 负责输出 Node Metric 的 Exporter 必须存在。

  2. 建立好连接到该 Exporter 的 k8s Service

  3. 需有一个 K8S CRD ServiceMonitor 透过 Label 对应到 K8S Service,该 CRD 会根据定义自动产生 scrape 组件,进而让 Prometheus 可以取到到 Metric 资料。

  4. 负责监控的 rule 组件则定义在 K8S ConfigMap 中

    所以假如要监控其他的 K8S Application 就是把上面的 4 个东西都准备好,Prometheus 就可以开始收到资料额。

    开始安装

​ 必要条件

  • ​ Kubernetes Cluster:毕竟是 Prometheus Kubernets Operator,必须要有 k8s cluster 才能开始安装(以下我们将用 minikube,需要注意内存分到 8g,cpu 也尽量大一点,Prometheus 比较好资源)
1
2
3
4
5
# 简单查一下k8s cluster
🌈 k get nodes
#如果成功将得到node 信息:
NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   23h   v1.27.3

​ Helm:helm 为 k8s 的安装管理套件,建议使用 k8s 的人,一定要使用它

1
2
🌈sudo pacman -S helm
🌈helm repo update

分别部署

  • kube-prometheus,全家桶。
  • 分别安装 prometheus 和 grafana 我也不想选择第二种,但是我就一台普通的 PC,安装 kube-prometheus 直接给我报错 CPU 不够用了,我~~

https://blog.csdn.net/luzhangting/article/details/121019644

kube-prometheus-stack 可以被视为一个综合性的解决方案,一次性安装了多个组件,包括 Prometheus、Prometheus Operator、Alertmanager、Grafana、kube-state-metrics、prometheus-node-exporter 等等。

自定义配置(可选):如果需要更改配置值,可以创建一个新的 YAML 文件,例如 kube-prometheus-stack.yaml,并参考官方参数定义(注 5),将要修改的值定义在其中。

安装命令如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 按照默认配置安装

```
~$ helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack --namespace monitoring --create-namespace
```



# 或者使用自定义配置文件进行安装(可略过)

```
~$ helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack --namespace monitoring --create-namespace --values kube-prometheus-stack.yaml
```

名称: kube-prometheus-stack 上次部署时间: 2021年8月28日星期六 06:45:58 命名空间: monitoring 状态: 已部署 修订版本: 1 备注: kube-prometheus-stack 已安装。通过运行以下命令检查其状态: kubectl --namespace monitoring get pods -l "release=kube-prometheus-stack" 访问 https://github.com/prometheus-operator/kube-prometheus 以获取有关如何使用 Operator 创建和配置 Alertmanager 和 Prometheus 实例的说明。

验证安装:

在执行 Helm 命令完成后,当然要验证是否成功安装。

1
2
3
4
5
6
7
8
# 查看所有 Pod 是否已准备就绪

~$ kubectl get pod -n=monitoring

# 使用端口转发从本地访问 Kubernetes 内的 Grafana 服务

~$ kubectl port-forward -n=monitoring svc/kube-prometheus-stack-grafana 8080:80
正在将 127.0.0.1:8080 转发到 3000 正在将 [::1]:8080 转发到 3000 处理 8080 的连接 ...

在浏览器中打开连接 http://localhost:8080(用户名和密码可以从 secret kube-prometheus-stack-grafana 获取),以下是 General / Kubernetes / Compute Resources / Cluster 仪表板。

1
2
3
4
5
6
# 安装kube-prometheus-stack
helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring
# 端口转发
kubectl port-forward  -n monitoring deployment/prometheus-grafana 3000
#或
kubectl port-forward -n monitoring svc/prometheus-grafana 3000:80

了解 一下 pmm

Percona Monitoring and Management

Reference

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