在使用helm快速部署的基础上,本文实现对prometheus+Grafana监控框架的自定义配置;
获取kube-prometheus-stack Helm Chart 的所有默认配置值
helm show values prometheus-community/kube-prometheus-stack > custom-values.yaml
该命令的作用是获取 kube-prometheus-stack Helm Chart 的所有默认配置值,并将其保存到本地文件 custom-values.yaml中。这个文件是您定制化 Prometheus Stack 部署的核心工具。
一、custom-values.yaml 文件的作用
配置中心:包含 Prometheus、Alertmanager、Grafana 等所有组件的可配置参数
定制化基础:通过修改此文件,可以:
- 调整资源限制(CPU/内存)
- 配置持久化存储
- 修改服务暴露方式
- 自定义告警规则
- 配置 Grafana 仪表盘和数据源
- 调整 Prometheus 抓取配置
- 版本控制:将配置纳入版本控制,确保环境一致性
- 可重复部署:使用相同的 values 文件可在不同环境部署相同配置
二、如何修改 custom-values.yaml 实现 K8s 监控需求
以下是关键配置项及其作用,按功能分类说明:
- 基础配置
# 启用所有核心组件
kube-prometheus-stack:
fullnameOverride: "kube-prometheus"
# 命名空间配置(建议保持默认)
namespaceOverride: ""
- Prometheus 配置
prometheus:
enabled: true
# 持久化存储配置(强烈推荐)
prometheusSpec:
storageSpec:
volumeClaimTemplate:
spec:
storageClassName: "standard" # 替换为您的存储类
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 50Gi # 根据需求调整大小
# 资源限制
resources:
limits:
memory: 4Gi
cpu: 2
requests:
memory: 2Gi
cpu: 1
# 数据保留时间
retention: 15d
# 服务暴露方式(NodePort 示例)
service:
type: NodePort
nodePort: 30090
- Grafana 配置
grafana:
enabled: true
# 管理员凭证
adminUser: "admin"
adminPassword: "your-strong-password" # 修改为安全密码
# 持久化存储
persistence:
enabled: true
storageClassName: "standard"
accessModes: ["ReadWriteOnce"]
size: 10Gi
# 服务暴露方式(LoadBalancer 示例)
service:
type: LoadBalancer
port: 80
targetPort: 3000
# 预配置数据源(Prometheus)
datasources:
datasources.yaml:
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
url: http://prometheus-operated.monitoring.svc:9090
access: proxy
isDefault: true
# 导入默认仪表盘(包含K8s监控)
sidecar:
dashboards:
enabled: true
label: grafana_dashboard
- Kubernetes 监控配置
# 启用核心监控组件
kubeStateMetrics:
enabled: true
nodeExporter:
enabled: true
kubeControllerManager:
enabled: true
kubeScheduler:
enabled: true
kubeEtcd:
enabled: true
kubeProxy:
enabled: true
# 自动发现配置
prometheus:
prometheusSpec:
serviceMonitorSelectorNilUsesHelmValues: false
podMonitorSelectorNilUsesHelmValues: false
- Alertmanager 配置
alertmanager:
enabled: true
config:
global:
resolve_timeout: 5m
route:
group_by: ['job']
group_wait: 30s
group_interval: 5m
repeat_interval: 12h
receiver: 'null'
routes:
- match:
alertname: Watchdog
receiver: 'null'
receivers:
- name: 'null'
# 持久化存储
alertmanagerSpec:
storage:
volumeClaimTemplate:
spec:
storageClassName: "standard"
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi
- 资源监控配置
# 添加自定义 ServiceMonitors(监控其他命名空间)
prometheus:
additionalServiceMonitors:
- name: "my-application"
selector:
matchLabels:
app: my-app
namespaceSelector:
any: true
endpoints:
- port: web
interval: 30s
三、部署自定义配置
- 修改 custom-values.yaml 文件
- 应用配置进行部署:
# 首次安装
helm install prometheus prometheus-community/kube-prometheus-stack \
-f custom-values.yaml \
--namespace monitoring
# 更新配置
helm upgrade prometheus prometheus-community/kube-prometheus-stack \
-f custom-values.yaml \
--namespace monitoring
四、验证和访问
- 检查 Pod 状态:
kubectl get pods -n monitoring
- 访问 Grafana:
获取访问地址:
kubectl get svc -n monitoring | grep grafana
使用配置的用户名/密码登录
导航到 Dashboards → Manage,查看预装的 Kubernetes 仪表盘
- 访问 Prometheus:
kubectl port-forward svc/prometheus-kube-prometheus-prometheus 9090:9090 -n monitoring
浏览器访问 http://localhost:9090