作者简介
万绍远,CNCF 基金会官方认证 Kubernetes CKA&CKS 工程师,云原生解决方案架构师。对 ceph、Openstack、Kubernetes、prometheus 技术和其他云原生相关技术有较深入的研究。参与设计并实施过多个金融、保险、制造业等多个行业 IaaS 和 PaaS 平台设计和应用云原生改造指导。
软件 | 版本 |
---|---|
Rancher | 2.6.4 |
Kubernetes | 1.22.7+rke2r2 |
概 述
-
PrometheusRules:定义告警规则 -
Alert Managers:Altermanager 启动 CRD,用于 Altermanager 启动副本 -
Receivers:配置告警接收媒介 CRD -
Routers:将告警规则和告警媒介进行匹配 -
ServiceMonitor:定义 Prometheus 采集的监控指标地址 -
Pod Monitor:更细粒化的对 POD 进行监控
配置使用
启用监控



remoteRead:
- url: http://192.168.0.7:8086/api/v1/prom/read?db=prometheusremoteWrite:
- url: http://192.168.0.7:8086/api/v1/prom/write?db=prometheus
podLabels:
jobLabel: node-exporter
resources:
limits:
cpu: 200m
memory: 150Mi
requests:
cpu: 100m
memory: 30Mi
-
Altermanager:进入的是告警信息查看页 -
Grafana:查看监控数据图标 -
Prometheus Graph:Prometheus 表达式执行页 -
Prometheus Rules:查看 Prometheus 配置的告警表达式页 -
Prometheus Targets:监控采集数据采集

-
cpu 使用情况 -
集群节点负载情况 -
内存使用情况 -
磁盘使用率 -
磁盘 IO -
Network Traffic -
Network IO
-
ApiServer 请求速率 -
Controller-Manager 队列深度 -
POD scheduler 调度状态 -
Ingress-Controller 连接数
-
Leader 选举状态 -
Leader 选举次数 -
GRPC Client Traffic -
ETCD 数据使用容量 -
Active Streams -
RPC 速率 -
磁盘数据同步时间
配置自定义监控指标
以一个应用为例,整体流程如下:
-
利用 JMX exporter,在 Java 进程内启动一个小型的 Http server -
配置 Prometheus 抓取那个 Http server 提供的 metrics -
配置 Grafana 连接 Prometheus,配置 Dashboard
mkdir -p /Dockerfile/jmx-exporter/
https://github.com/prometheus/jmx_exporter
https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.12.0/jmx_prometheus_javaagent-0.12.0.jar
---
rules:
- pattern: ".*"
FROM tomcat
COPY ./jmx_prometheus_javaagent-0.12.0.jar /jmx_prometheus_javaagent-0.12.0.jar
ENV CATALINA_OPTS="-Xms64m -Xmx128m -javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.12.0.jar=6060:/jmx-exporter/simple-config.yml"
docker build -t tomcat:v1.0 .
docker run -itd -p 8080:8080 -p 6060:6060 tomcat:v1.0

kubectl label svc tomcat app=tomcat
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: tomcat-app namespace: defaultspec:
endpoints:
port: exporter
selector:
matchLabels:
app: tomcat




配置告警





-
group_by:用于配置告警分组,达到告警抑制效果,同一个 group 的告警只会聚合到一起发送一次。例如 host01 上运行了数据库,那么对应的告警包含了 host down、mysql down。他们配置在一个 group 内,那么如果 host down 了对应的 mysql 肯定也是 down 了,那么因为他们配置在一个 group 中,所以 host down 和 mysql down 的告警会聚合到一起发送出去。 -
group_wait:新建的 AlterGroup 等待多久后触发第一次告警。 -
group_interval:AlterGroup 内产生的不同告警触发间隔时间。 -
repeat_interval:AlterGroup 内如果一直是同样的告警,Altermanager 为了避免长时间的干扰,进行告警去重的等待时间。

自定义告警

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: podmonitor
namespace: cattle-monitoring-system
spec:
groups:
name: pod_node_ready
rules:
alert: pod_not_ready
annotations:
message: '{{ $labels.namespace }}/{{ $labels.pod }} is not ready.'
expr: 'sum by (namespace, pod) (kube_pod_status_phase{phase!~"Running|Succeeded"})
0 '
for: 180s
labels:
severity: 严重
-
for:表示持续时间 -
message:表示告警通知内的信息 -
label.severity:表示告警级别 -
expr:指标获取表达式



更多内容
About SUSE Rancher
Rancher是一个开源的企业级Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理。Rancher一向因操作体验的直观、极简备受用户青睐,被Forrester评为“2020年多云容器开发平台领导厂商”以及“2018年全球容器管理平台领导厂商”,被Gartner评为“2017年全球最酷的云基础设施供应商”。
目前Rancher在全球拥有超过三亿的核心镜像下载量,并拥有包括中国联通、中国平安、中国人寿、上汽集团、三星、施耐德电气、西门子、育碧游戏、LINE、WWK保险集团、澳电讯公司、德国铁路、厦门航空、新东方等全球著名企业在内的共40000家企业客户。
2020年12月,SUSE完成收购RancherLabs,Rancher成为了SUSE “创新无处不在(Innovate Everywhere)”企业愿景的关键组成部分。SUSE和Rancher共同为客户提供了无与伦比的自由和所向披靡的创新能力,通过混合云IT基础架构、云原生转型和IT运维解决方案,简化、现代化并加速企业数字化转型,推动创新无处不在。
当前,SUSE及Rancher在中国大陆及港澳台地区的业务,均由数硕软件(北京)有限公司承载。SUSE在国内拥有优秀的研发团队、技术支持团队和销售团队,将结合Rancher领先的云原生技术,为中国的企业客户提供更加及时和可信赖的技术支撑及服务保障。
