Prometheus 在 Kubernetes 环境中的部署和使用:
部署方式:
- Helm Chart 部署(推荐):
bashhelm install prometheus prometheus-community/kube-prometheus-stack
- Operator 部署:
- 使用 Prometheus Operator 简化管理
- 提供 CRD:Prometheus、Alertmanager、ServiceMonitor 等
关键组件:
- Prometheus:主监控服务
- Node Exporter:节点指标采集
- Kubelet Metrics:容器和 Pod 指标
- cAdvisor:容器资源使用
- Kube-State-Metrics:Kubernetes 对象状态
ServiceMonitor 配置:
yamlapiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: my-app spec: selector: matchLabels: app: my-app endpoints: - port: metrics interval: 30s
常用指标:
- 容器资源:
container_cpu_usage_seconds_total - Pod 状态:
kube_pod_status_phase - 节点资源:
node_memory_MemAvailable_bytes - 网络流量:
container_network_receive_bytes_total
自动发现配置:
yamlscrape_configs: - job_name: 'kubernetes-pods' kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] action: keep regex: true
最佳实践:
- 使用命名空间隔离监控数据
- 配置资源限制避免影响业务
- 使用 PersistentVolume 持久化数据
- 定期备份配置和数据
- 结合 Grafana 创建仪表盘