一、基础构架
由于heapster 暂时不支持告警功能,所以在heapster的基础上,开发了一个简单的告警程序,采用外部模块的形式,不对目前k8s整体构架造成影响.
二、说明
1.0版本、
1、将heapster采集的数据实时写一份至kafka,heapster_warning程序消费kafka数据,进行解析和触发告警规则.
2、支持的监控告警对象,pod的网络进出流量,cpu利用情况,内存使用情况。
3、目前支持的告警规则,指定时间内触发阀值的次数达到告警规则就会触发邮件告警,例如5分钟内有3次的采集结果达到告警阀值,就会触发邮件告警,邮件告警可以设置发送频率,如10分钟内最多发一次邮件提醒。
4、支持部分配置自动热刷新,支持热刷新的配置包括,阀值配置,告警规则配置,收件人配置。
5、配置的最小监控单位,命名空间---服务名----监控对象(如果cpu,内存等)
6、支持自定义和通用配置
7、告警接口采用调用外部shell脚本的方式,增加灵活性.
8、调用shell脚本 默认会传入2个参数; a、目标地址可以是邮件或者短信号码等。b、告警信息主体
如:k8s-1,k8s-1-56f68db78c-xt6sm,kube-system,memory/usage,10.11.34.6,70344704,事件数:3.0,告警数:1.0,2018-02-25T19:54:57,主体信息按逗号分隔,分布是:应用名,pod名,命名空间,监控对象,node节点IP,最后一次采集结果,第一次触发阀值到目前一共触发了多少次阀值,触发短信告警的次数,时间。
三、实例配置说明
其中warning_rule_info,threshold_info,msg_info支持热刷新,修改了对应内容配置,只需要同时修改对应版本号即可实现热刷新。
如果存储具体应用的自定义配置,优先使用自定义配置,如果不存在则使用默认配置,默认配置和自定义配置和灵活组合
warning_rule_info,threshold_info,msg_info中每个命名空间的配置完全独立无法共享。
其中warning_rule_info,threshold_info,msg_info中如果不存在对应的配置,可能会出现无法发送短信或者无法触发阀值或者无法触发告警。
由于配置文件采用yaml格式配置,切忌使用tap符,请使用空格符
------------------------------------
warning_rule_info: #告警规则
kube-system: #命名空间
k8s-1: #应用名
#具体监控指标,duration_time指定时间内,trigger_count触发阀值的次数,trigger_rate邮件通知频率,level告警级别保留字段
#以下示例是命名空间kube-system的k8s-1应用的网络接收流量,如果在300秒内触发了3次阀值,将会触发告警,600秒内最多只发一次短信
network/rx_rate: {duration_time: 300,trigger_count: 3,trigger_rate: 600,level: 1}
default: #默认配置,没有自定义配置的应用都遵循该配置
network/rx_rate: {duration_time: 300,trigger_count: 10,trigger_rate: 600,level: 1}
#只要default配置项中才可以使用global配置,该选项是通用配置选项
#表示除了network/rx_rate是300秒内触发10次阀值才会触发告警外,其他如network/tx_rate,cpu/usage_rate,memory/usage都是300秒触发3次阀值就触发告警
global: {duration_time: 300,trigger_count: 3,trigger_rate: 600,level: 1}
kube-test:
default:
global: {duration_time: 300,trigger_count: 3,trigger_rate: 600,level: 1}
threshold_info:
kube-system:
k8s-1:
cpu/usage_rate: {threshold: 300,verify: 1}
network/rx_rate: {threshold: 52428800,verify: 1}
memory/usage: {threshold: 524280000,verify: 1}
default:
cpu/usage_rate: {threshold: 300,verify: 1}
memory/usage: {threshold: 524288000,verify: 1}
network/rx_rate: {threshold: 52428800,verify: 1}
global: {threshold: 52428800,verify: 1}
kube-test:
k8s-1:
cpu/usage_rate: {threshold: 300,verify: 1}
network/rx_rate: {threshold: 52428800,verify: 1}
memory/usage: {threshold: 524280000,verify: 1}
default:
cpu/usage_rate: {threshold: 300,verify: 1}
memory/usage: {threshold: 524288000,verify: 1}
network/rx_rate: {threshold: 52428800,verify: 1}
global: {threshold: 52428800,verify: 1}
msg_info: #收集人地址,地址以,分割,地址可以根据实际邮件或短信接口等填写,如采用短信发送可以直接填写短信号码按逗号分隔。
kube-system:
k8s-1:
network/rx_rate: {mail_to: "yj@qq.com,yijun@qq.com"}
default:
network/tx_rate: {mail_to: "yj@qq.com,tiger@qq.com"}
global: {mail_to: "yj@qq.com,tiger@qq.com"}
kube-test:
default:
global: {mail_to: "yj@qq.com,tiger@qq.com"}
rule_version: 6 #配置热刷新所需要的版本号,修改了对应区块配置,同时需要修改区块配置的版本,只有程序发现版本号大于当前配置才会进行热加载刷新,对应warning_rule_info,默认一分钟刷新一次
threshold_version: 11 #对应threshold_info,默认一分钟刷新一次
msg_version: 1 #对应msg_info,默认1分钟刷新一次
script_path: "/root/go/kafka/test.sh" #邮件或短信脚本路径需要有可执行权限,最好直接755
kafka: #kafka配置
ip: "10.12.22.40:9092,10.11.37.15:9092,10.12.22.57:9092"
groupid: "heapster_monitor"
topic: "topic-monitor"
version: 0.11.0.0
log: #日志配置
level: INFO # CRITICAL > ERROR > WARNING > NOTICE > INFO > DEBUG
format: "%{color} %{time:2006-01-02 15:04:05.000} %{level} %{pid} %{shortfile} %{callpath} %{message}"
logfile: heapster_warning.log
--------------------------------------
四、heapster配置
在heapster原有配置部分增加一行- --sink=kafka:?brokers=10.12.22.40:9092&brokers=10.11.37.15:9092&brokers=10.12.22.57:9092×eriestopic=topic-monitor即可,kafka地址根据实际情况填写。
containers:
- image: 10.12.44.68:5000/heapster-amd64:v1.4.3
name: heapster
livenessProbe:
httpGet:
path: /healthz
port: 8082
scheme: HTTP
initialDelaySeconds: 180
timeoutSeconds: 5
command:
- /heapster
- --sink=kafka:?brokers=10.12.22.40:9092&brokers=10.11.37.15:9092&brokers=10.12.22.57:9092×eriestopic=topic-monitor
- --sink=influxdb:http://10.12.251.99:8086/write?db=six_hours
四、程序基于的开发版本
kafka 0.11.0.0
heapster heapster-v1.4.3
k8s 是1.8.6
heapster_warning是基于go开发,基于centos6.5 64位操作系统,理论上centos平台因该都可以运行。
五、程序运行
授权755可执行权限
nohup ./heapster_warning & 即可运行
关闭的话 只要找到对应的进程 kill pid即可。
六、日志查看
默认日志文件会在程序运行的当前目录下heapster_warning.log文件
七、二进制文件下载地址
https://pan.baidu.com/s/1i63bpWT
配置文件cfg.yaml与程序放在同一目录下即可
One Response