利用zabbix监控Pod Restart状态

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

zabbix监控Pod Restart状态

zabbix

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


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

1631256828-4627509eef5f57d

关于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界面添加一个模板

1631256828-7f078ace945c290

配置模板

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

右上角创建应用集

1631256828-9e3a95b2296b456

点击监控项目

1631256829-edf2e59fa245e78

点击创建监控项

1631256828-38a0e304ab1df50

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

1631256830-a7940ef9fea575e

添加完毕后

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

1631256829-8fb56b5456ec799

创建图形展示

1631256831-0b6cde354247855

1631256833-388faeacf474d47

1631256833-4fbdb8f9a822ebb

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

1631256830-88b6c4d719293b3

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

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

1631256830-2f57faadb92a3cc

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

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

1631256830-ab24e49dab82aa1

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

1631256830-0d086ebc61aad60

1631256830-c980791b4d7fa0c

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

1631256830-461888f95f764c0

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

1631256833-7a90075752bbe31

1631256833-3167d0322b02c52

添加完毕后

1631256833-fef49e1e354f669

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

1631256835-82aa94138b214ab

1631256835-2709395854d006d

同时图片也是显示正常

1631256833-b7f7be13eb3a6aa

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

1631256833-99f4823f6b95cd9

报警恢复,间隔15分钟

zabbix微信报警配置

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

zabbix监控Pod Restart状态

zabbix

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


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

1631256828-4627509eef5f57d

关于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界面添加一个模板

1631256828-7f078ace945c290

配置模板

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

右上角创建应用集

1631256828-9e3a95b2296b456

点击监控项目

1631256829-edf2e59fa245e78

点击创建监控项

1631256828-38a0e304ab1df50

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

1631256830-a7940ef9fea575e

添加完毕后

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

1631256829-8fb56b5456ec799

创建图形展示

1631256831-0b6cde354247855

1631256833-388faeacf474d47

1631256833-4fbdb8f9a822ebb

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

1631256830-88b6c4d719293b3

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

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

1631256830-2f57faadb92a3cc

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

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

1631256830-ab24e49dab82aa1

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

1631256830-0d086ebc61aad60

1631256830-c980791b4d7fa0c

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

1631256830-461888f95f764c0

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

1631256833-7a90075752bbe31

1631256833-3167d0322b02c52

添加完毕后

1631256833-fef49e1e354f669

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

1631256835-82aa94138b214ab

1631256835-2709395854d006d

同时图片也是显示正常

1631256833-b7f7be13eb3a6aa

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

1631256833-99f4823f6b95cd9

报警恢复,间隔15分钟

zabbix微信报警配置

发表评论

后才能评论