使用shell加python实现定时发送系统的RPS

先过滤NGINX日志

#!/bin/bash
#echo -e "\033[31mstart calculate total requests in two hours:\033[0m\033[32m $1\033[0m, \033[32m$2\033[0m"
months=("Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec")
time1=$(date +"%d")/${months[$(date +"%-m")-1]}/$(date +"%Y")':'$(date -d "1 hour ago" +"%H")
time2=$(date +"%d")/${months[$(date +"%-m")-1]}/$(date +"%Y")':'$(date +"%H")
time3=$(date +"%d")/${months[$(date +"%-m")-1]}/$(date +"%Y")':'$(date -d +1hour +"%H")

grep $time1'\|'$time2 /data/nginx/logs/access.log | grep "POST ">/root/statics/statics.log

python /root/statics/AnalyzeLogSecondsAuto.py /root/statics/statics.log $time1 $time3

再使用python做统计,同时发送到钉钉群

# -*- coding: UTF-8 -*-

import sys
import numpy as np
import requests

inputdata=open(sys.argv[1], 'r')
time1=sys.argv[2]
time2=sys.argv[3]
datax=[]
datay=[]
contents = ''
webhook = 'https://oapi.dingtalk.com/robot/send?access_token=a984a10d58dd890a602abe781186fa18231399f0a852d3bf6c4a8924a4e2d9fb'
for line in inputdata:
    line = line.split(" ")
    datax.append(line[3][1:21])

datax_sorted = sorted(datax)
unique_datax = np.unique(datax)
for i in unique_datax:
    datay.append(datax.count(i))

datay_sorted=sorted(datay,reverse = True)

total_requests=str(len(datax)*4)
qps=str(datay_sorted[0]*4)

contents += '<font color=#00b38a>%s</font>到<font color=#00b38a>%s</font>, 最大并发数: <font color=#00b38a>%s</font>(tps), 访问量: <font color=#00b38a>%s</font>(请求数), 未启动限流, 系统服务器状态运行正常, 系统支持最大并发数2000(tps).'%(time1,time2,qps,total_requests)+'\n\n'

def send_dd(webhook,content):
    headers = {"Content-Type": "application/json; charset=utf-8"}
    msg = {
        "msgtype": 'markdown',
        'markdown': {'title': '两小时最大TPS与总访问量统计',
                     'text': '--------统计结果--------\n\n%s'%content
                     },
        'at': {
            "atMobiles": [],
            "isAtAll": False
        }
    }
    resp = requests.post(webhook, headers=headers, json=msg)
    #print("钉钉发送之后的返回内容")
    #print(resp.content)

send_dd(webhook,contents)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值