▲ 点击上方"DevOps和k8s全栈技术"关注公众
使用工具如Prometheus监控k8s节点cpu、内存、磁盘网络,以及k8s集群组件的健康情况,用Grafana可视化展示监控信息,基于Alertmanager实现报警。
1. 为什么使用Prometheus?
1.1 灵活性和可扩展性
Prometheus以其高度可扩展性而著称,能够轻松处理大规模的K8s集群。您可以根据需要添加自定义指标,监控多个应用程序和服务。
1.2 数据收集
Prometheus通过拉模型主动从目标上收集数据,而不需要被动等待数据推送。这使得它在K8s中易于实施,因为容器和Pod的生命周期动态变化。
2. 场景和实战
2.1 安装和配置Prometheus
首先,让我们安装和配置Prometheus。您可以使用Helm来部署Prometheus Operator,这是一个管理Prometheus实例的K8s自定义资源定义(CRD)的控制器。
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/prometheus
2.2 配置目标和指标
在Prometheus中,您需要定义目标(targets)和指标(metrics)。目标是您要监视的应用程序和服务,而指标是您要收集的数据。
创建一个prometheus-k8s.yaml
配置文件,定义您要监控的K8s服务和应用程序:
apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-k8s-config
data:
| :
global:
scrape_interval: 15s
scrape_configs:
job_name: 'kubernetes-nodes'
kubernetes_sd_configs:
role: node
job_name: 'kubernetes-pods'
kubernetes_sd_configs:
pod :
2.3 创建服务监控规则
Prometheus允许您定义警报规则以监视指标并在满足某些条件时发出警报。例如,您可以创建规则来监视CPU使用率、内存利用率等。
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
labels:
prometheus: k8s
name: example
spec:
groups:
name: example
rules:
alert: HighCpuUsage
expr: 100 - (avg by (instance) (irate(node_cpu{mode="idle"}[5m])) * 100) > 90
for: 5m
labels:
severity: warning
annotations:
'High CPU usage on instance {{ $labels.instance }}' :
2.4 部署Alertmanager
Alertmanager是Prometheus的一部分,用于处理警报通知。您可以使用Helm来安装它:
helm install alertmanager prometheus-community/alertmanager
2.5 监控可视化
Prometheus提供了一个简单的Web界面,您可以使用它来查询和可视化监控数据。另外,Grafana是一个流行的可视化工具,它可以与Prometheus集成,提供更丰富的监控仪表板。
helm install grafana prometheus-community/grafana
2.6 测试
压测网站,测试报警:
[ ]
登录grafana ui界面,可以看到流量已经上来了
登录邮箱,可以看到报警信息也发出来了