zabbix监控Pod Restart状态

释放双眼,带上耳机,听听看~!
在k8s生产环境中,会遇到pod restart次数过高的问题。当pod restart次数过高时,会对服务器的负载造成影响,同时会影响业务的稳定。一般情况下,pod restart会有两种原因,一种是程序有bug(内存溢出)另外一种就是业务量过大。虽然k8s有自己的健康检查机制,但是还是会对业务造成影响,有的时候发现pod restart次数已经达到600多次,可想对服务器对业务的影响有多大
🤖 由 ChatGPT 生成的文章摘要

zabbix监控Pod Restart状态

zabbix

Date:2019年01月14日18:10:23


在k8s生产环境中,会遇到pod restart次数过高的问题。当pod restart次数过高时,会对服务器的负载造成影响,同时会影响业务的稳定。一般情况下,pod restart会有两种原因,一种是程序有bug(内存溢出)另外一种就是业务量过大。虽然k8s有自己的健康检查机制,但是还是会对业务造成影响,有的时候发现pod restart次数已经达到600多次,可想对服务器对业务的影响有多大

zabbix监控Pod Restart状态

关于zabbix安装以及配置可以参考 zabbix板块

首先,先把脚本复制下来,放到服务器中。需要修改一下脚本的内容

[root@YZSJHL81-32 scripts]# cat k8s.sh
#!/bin/bash
# this kubernetes pod status
# pod restart status
metric=$1
tmp_file=/tmp/sql/k8s_status.txt

/usr/local/kubernetes/client/kubectl get pod --namespace=prod-rrqc |awk -F "[ ]+" '{print $1,$4}' >$tmp_file

case $metric in
credit-open-plat)
		output=$(awk '/credit-open-plat/{print $2}' $tmp_file|sort -rn|awk '{print $1}'|sed -n '1p')
                   echo $output
                    ;;
renren-jinkong-kylin-app-push-server)
                output=$(awk '/renren-jinkong-kylin-app-push-server/{print $2}' $tmp_file|sort -rn|awk '{print $1}'|sed -n '1p')
                   echo $output
                ;;
renren-jinkong-kylin-auth-server)
                output=$(awk '/renren-jinkong-kylin-auth-server/{print $2}' $tmp_file|sort -rn|awk '{print $1}'|sed -n '1p')
                   echo $output
                ;;
pod名称)
                output=$(awk '/pod名称/{print $2}' $tmp_file|sort -rn|awk '{print $1}'|sed -n '1p')
                   echo $output
                ;;
*)
                   echo "please input 工程名称"
                ;;
esac

脚本添加完毕,需要对脚本授权同时设置属主
chown zabbix k8s.sh
chmod +x k8s.sh
chmod zabbix /tmp/sql/k8s_status.txt
#还需要对存储数据的目录进行授权,否则会造成权限拒绝


#脚本参数解释
这个脚本其实就是将Pod名称以及重启次数过滤到/tmp/下的文件,同时对应的项目进行awk grep 以达到获取到restart次数

#还需要kubectl 设置zabbix可执行,由于每个人安装都不一样,我就不写命令了

脚本配置完毕,还需要修改zabbix_agent.conf,添加key

[root@YZSJHL81-32 zabbix]# tail zabbix_agentd.conf
#k8s pod status
UserParameter=k8s_pod_status[*],/etc/zabbix/scripts/k8s.sh "$1"

#添加完毕后,我们需要重启zabbix
centos7重启
systemctl restart zabbix-agent
Centos6重启
/etc/init.d/zabbix_agetd restart

脚本添加完毕,我们通过zabbix_get获取

[root@YZSJHL82-200 ~]# zabbix_get -s 10.4.81.32 -k k8s_pod_status[credit-open-plat]
7

可以获取到数据,说明没啥问题。如果获取不到大概就是zabbix权限拒绝或者命令有问题

接下来就是在Zabbix Web界面添加一个模板

zabbix监控Pod Restart状态

配置模板

zabbix监控Pod Restart状态

找到我们创建的模板,我们需要创建一个应用集,在应用集添加监控项

右上角创建应用集

zabbix监控Pod Restart状态

zabbix监控Pod Restart状态

点击监控项目

zabbix监控Pod Restart状态

点击创建监控项

zabbix监控Pod Restart状态

其他的所有项目都按照这种方式进行添加,这里就不一一截图了

zabbix监控Pod Restart状态

添加完毕后

1.这里的键值对应的是脚本里面对应的key
2.获取时间我们设置为15分钟 (时间间隔太短会给服务器造成io负载)
3.我们设置的key的单位为次
4.设置好对应的应用集

zabbix监控Pod Restart状态

创建图形展示

zabbix监控Pod Restart状态

zabbix监控Pod Restart状态

zabbix监控Pod Restart状态

添加完毕我们可以点预览查看一下

zabbix监控Pod Restart状态

我们点击确认,保存,点击主机添加监控模板

zabbix监控Pod Restart状态

我们获取key的时间设置为900秒(15分钟)测试的时候设置短一点,等添加完在修改。等待一会出图

zabbix监控Pod Restart状态

图片已经添加完成,剩下就是添加监控项

配置-->模板-->k8s模板

zabbix监控Pod Restart状态

表达式添加需要点击添加,选中对应的Key

zabbix监控Pod Restart状态

zabbix监控Pod Restart状态

选择主机,找到监控项,点击插入

zabbix监控Pod Restart状态

当pod restart次数达到5次,即可触发器报警

zabbix监控Pod Restart状态

zabbix监控Pod Restart状态

添加完毕后

zabbix监控Pod Restart状态

触发器创建完成现在需要测试,触发器测试

zabbix监控Pod Restart状态

zabbix监控Pod Restart状态

同时图片也是显示正常

zabbix监控Pod Restart状态

接下来我们将这个pod删除,从新创建,查看是否会恢复

zabbix监控Pod Restart状态

报警恢复,间隔15分钟

zabbix微信报警配置

zabbix板块

给TA打赏
共{{data.count}}人
人已打赏
Kubernetes

Harbor 启动报错 502 Bad Gateway

2018-8-7 18:43:44

DockerELKStackKubernetes

K8s容器日志实时收集FileBeat+ES+Kibana

2019-4-4 17:20:31

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索