kube-prometheus-stack
是一个完整的 Kubernetes 监控解决方案,集成了 Prometheus、Alertmanager、Grafana 和多个 Kubernetes 监控组件。
在安装 kube-prometheus-stack
之前,请确保:
你已经安装了 Kubernetes 集群(建议 v1.20+)。
你已经安装了 kubectl
并能够连接到集群。
你已经安装了 Helm
(建议 v3+)。
首先,添加 prometheus-community
Helm 仓库,并更新本地索引:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
建议将 kube-prometheus-stack
组件安装到单独的 monitoring
命名空间中:
kubectl create namespace monitoring
使用 Helm 安装 kube-prometheus-stack
,并自定义一些参数:
helm install prometheus-stack prometheus-community/kube-prometheus-stack \
--namespace monitoring \
--set grafana.enabled=true \
--set prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false
或者,如果你已经下载了 kube-prometheus-stack-70.3.0.tgz
,可以使用手动安装方式:
helm install prometheus ./kube-prometheus-stack-70.3.0.tgz --namespace monitoring --create-namespace
安装成功后,你可以使用以下命令查看相关的 Pod:
kubectl get pods -n monitoring
默认情况下,Grafana 在 kube-prometheus-stack
中会以 ClusterIP
方式暴露。你可以使用 port-forward
访问它:
kubectl port-forward -n monitoring svc/prometheus-stack-grafana 3000:80
然后,在浏览器中访问 http://localhost:3000
。
默认的 Grafana 登录凭据:
用户名:admin
密码:可以使用以下命令获取:
kubectl get secret -n monitoring prometheus-stack-grafana -o jsonpath="{.data.admin-password}" | base64 --decode
同样可以使用 port-forward
访问 Prometheus 和 Alertmanager:
kubectl port-forward -n monitoring svc/prometheus-stack-prometheus 9090:9090
kubectl port-forward -n monitoring svc/prometheus-stack-alertmanager 9093:9093
分别在浏览器中访问:
Prometheus: http://localhost:9090
Alertmanager: http://localhost:9093
如果希望 Prometheus 使用持久化存储,可以修改 values.yaml
并启用 PVC:
prometheus:
prometheusSpec:
storageSpec:
volumeClaimTemplate:
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 50Gi
然后使用 helm upgrade
进行更新:
helm upgrade prometheus-stack prometheus-community/kube-prometheus-stack -n monitoring -f values.yaml
kube-prometheus-stack
自带一些默认的告警规则,你可以修改 values.yaml
并自定义 Alertmanager 规则,例如:
alertmanager:
config:
global:
resolve_timeout: 5m
route:
receiver: 'slack-notifications'
receivers:
- name: 'slack-notifications'
slack_configs:
- channel: '#alerts'
send_resolved: true
api_url: 'https://hooks.slack.com/services/xxx/yyy/zzz'
然后升级配置:
helm upgrade prometheus-stack prometheus-community/kube-prometheus-stack -n monitoring -f values.yaml
如果你需要卸载 kube-prometheus-stack
,可以使用以下命令:
helm uninstall prometheus-stack -n monitoring
kubectl delete namespace monitoring
kube-prometheus-stack
提供了一整套 Kubernetes 监控工具,包括 Prometheus、Alertmanager 和 Grafana。通过 Helm 可以快速安装并进行自定义配置,提高 Kubernetes 集群的可观测性!