Python获取nginx-pod的QPS

#!/usr/bin/python
# -*- coding: UTF-8 -*-
#===========================================================#
#该脚本根据匹配到的Deployment进入到每个Pod下面抓取Nginx的QPS
#zabbixServer端可以获取到值
#主要用于zabbix获取kubernetes中pod的qps
#===========================================================#
import os,commands,time,sys,re
#定义命名空间
namespace="apm"

#获取输入值,这里是监控的域名,输入域名
host=str(sys.argv[1])

if host == "m":
    deployment="ywf-html5-nginx-online"
else:
    deployment="ywf-"+host+"-nginx-online"

#该命令解决zabbix无法调用kubernetes命令问题
base_command = "export KUBECONFIG=/var/lib/zabbix/.kube/config > /dev/null && kubectl config get-contexts > /dev/null && kubectl config use-context cls-f5kd5v85-context-default > /dev/null && "
#匹配Deploymen下面对应的POD
get_pod_command = base_command + "kubectl get pods -n " + namespace +"|grep ^" + deployment + "|awk {'print $1'} "

get_pod_str = commands.getstatusoutput(get_pod_command)[1]
def get_nginx_qps(get_pod_str,namespace,host):
    #用来存储多台POD的qps总数和
    num = 0
    get_pods = get_pod_str.split("\n")
    for pod in get_pods:
        #进入到容器获取qps
        get_qps_command = base_command + "kubectl exec -it -n " + namespace +" "+ pod +  " -c " + deployment +" -- curl http://"+host+".test.com/nginx_status| awk NR==3 | awk '{print $3}'"
        #exit()
        get_qps1 = commands.getstatusoutput(get_qps_command)[1]
        get_qps = int(get_qps1.split("\n")[-1])
        num = num + get_qps
    return num

#进行5s统计之后计算平均值
num_first = get_nginx_qps(get_pod_str,namespace,host)
time.sleep(5)
num_second = get_nginx_qps(get_pod_str,namespace,host)
qps =int(num_second - num_first)/5
print(qps)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值