一、基础构架

由于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&timeseriestopic=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&timeseriestopic=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


    还没有评论!
1  

Leave your comment

请留下您的姓名(*)

请输入正确的邮箱地址(*)

请输入你的评论(*)


感谢开源 © 2016. All rights reserved.&3Q Open Source&^_^赣ICP备15012863号-1^_^
乐于分享共同进步 KreativeThemes