1、prometheus的3种部署方式对比
Prometheus Operator
Prometheus Operator 使用 Kubernetes自定义资源来简化 Prometheus、Alertmanager 和相关监控组件的部署和配置。
kube-prometheus
kube-prometheus提供了基于 Prometheus 和 Prometheus Operator 的完整集群监控堆栈的示例配置。这包括部署多个 Prometheus 和 Alertmanager 实例、指标导出器(例如用于收集节点指标的 node_exporter)、将 Prometheus 链接到各种指标端点的抓取目标配置,以及用于通知集群中潜在问题的示例警报规则。
community helm chart
prometheus-community/kube-prometheus-stack helm chart 提供了与 kube-prometheus 类似的功能集。此图表由 Prometheus 社区维护。
通过对比可以看出kube-prometheus功能更加强大,所以我们使用kube-prometheus
2、部署kube-prometheus
kube-prometheus和k8s之间的版本对应关系,因为我使用的k8s版本为1.22.0,因此需要安装release-0.10版本
下载kube-prometheus
wget https://github.com/prometheus-operator/kube-prometheus/archive/refs/tags/v0.10.0.tar.gz
tar xf v0.10.0.tar.gz && mv kube-prometheus-0.10.0 kube-prometheus && cd kube-prometheus
为grafana创建pvc:grafana-pvc.yml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: grafana-pvc
namespace: monitoring
spec:
storageClassName:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
修改grafana-deployment.yaml
volumes:
#- emptyDir: {}
# name: grafana-storage
- name: grafana-storage
persistentVolumeClaim:
claimName: grafana-pvc
因为告警规则都是英文,使用不方便,所以都统一删除,后期再添加中文告警模板
rm -rf *-prometheusRule.yaml
部署kube-prometheus
kubectl apply --server-side -f manifests/setup
until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done
kubectl apply -f manifests/
3、配置ingress访问
分别为grafana、prometheus、alertmanager配置ingress,方便访问,使用traefik的IngressRoute方式配置如下:
grafana-ing.yml
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: grafana
namespace: monitoring
spec:
entryPoints:
- web
routes:
- kind: Rule
match: Host(`grafana.bgxwz.com`)
services:
- name: grafana
port: 3000
prometheus-ing.yml
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: prometheus
namespace: monitoring
spec:
entryPoints:
- web
routes:
- kind: Rule
match: Host(`prometheus.bgxwz.com`)
services:
- name: prometheus-k8s
port: 9090
alertmanager-ing.yml
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: alertmanager
namespace: monitoring
spec:
entryPoints:
- web
routes:
- kind: Rule
match: Host(`alertmanager.bgxwz.com`)
services:
- name: alertmanager-main
port: 9093
评论区