一、简介
官方文档:https://prometheus-operator.dev/
kube-prometheus 是一整套监控解决方案,它使用 Prometheus 采集集群指标,Grafana 做展示,集成了很多模板。
Prometheus Operator 在 Kubernetes 中引入了自定义资源,以声明 Prometheus 和 Alertmanager 集群以及 Prometheus 配置的理想状态。
- Prometheus
- ServiceMonitor
- PodMonitor
Prometheus 资源以声明方式描述 Prometheus 部署的所需状态,而 ServiceMonitor 和 PodMonitor 资源描述 Prometheus 要监视的目标。
二、部署
2.1 下载
在 github 上下载项目代码。
github 地址:https://github.com/prometheus-operator/kube-prometheus
2.2 修改配置
部分镜像在国内无法下载,自行下载后修改 yaml 文件。
# 进入项目的 manifests 文件夹
cd kube-prometheus-0.12.0/manifests/
# 查询哪些文件有需要修改镜像地址的 yaml 文件
grep -r 'image: ' *
kube-prometheus 项目中,dashboard 默认时区是 UTC,修改成UTC+8
sed -i 's/UTC/UTC+8/g' grafana-dashboardDefinitions.yaml
sed -i 's/utc/utc+8/g' grafana-dashboardDefinitions.yaml
sed -i 's/UTC/UTC+8/g' grafana-config.yaml
2.3 部署
# 部署自定义 CRD
kubectl create -f setup/
# 部署服务
kubectl apply -f .
注:在 release-0.11 版本之后新增了 NetworkPolicy,默认是允许自己访问,修改一下默认的规则或者以直接删除
2.4 创建ingress
这里使用 ingress-nginx,同时 NetworkPolicy 中修改 ingress 方向,增加允许 ingress-nginx 访问权限。
# 修改 grafana-networkPolicy.yaml,增加允许来自命名空间 ingress-nginx 的访问
# 同理修改 alertmanager-networkPolicy.yaml、prometheus-networkPolicy.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
labels:
app.kubernetes.io/component: grafana
app.kubernetes.io/name: grafana
app.kubernetes.io/part-of: kube-prometheus
app.kubernetes.io/version: 9.3.2
name: grafana
namespace: monitoring
spec:
egress:
- {}
ingress:
- from:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: ingress-nginx
- podSelector:
matchLabels:
app.kubernetes.io/name: prometheus
ports:
- port: 3000
protocol: TCP
podSelector:
matchLabels:
app.kubernetes.io/component: grafana
app.kubernetes.io/name: grafana
app.kubernetes.io/part-of: kube-prometheus
policyTypes:
- Egress
- Ingress
创建 ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: monitoring
name: prometheus-ingress
spec:
ingressClassName: nginx
rules:
- host: grafana.xxx.top
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: grafana
port:
number: 3000
- host: prometheus.xxx.top
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: prometheus-k8s
port:
number: 9090
- host: alertmanager.xxx.top
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: alertmanager-main
port:
number: 9093
到此可以访问 grafana 等 web 界面。
服务器租用托管,机房租用托管,主机租用托管,https://www.e1idc.com