nginx访问量分析

涉及的技术

curl webservice echart

需求描述:

nginx 配置status模块后,可以获取到访问量信息如下:

Active connections: 391 
server accepts handled requests
 47866689 47866689 279005479 
Reading: 0 Writing: 2 Waiting: 389 

需要分析如何将该数据以图形方式展示:
在这里插入图片描述

思路分析

计划每分钟读取一次该状态值,存储到数据库,然后通过echart进行显示。

1、数据存储

通过spring+hibernate,可以很方便的将数据存储到数据库:
在这里插入图片描述

2、webservice接口

通过webservice,将日志存储接口暴露出来,便于通过各类运维工具访问。

3、测试webservice

通过SoapUI测试webservice:
在这里插入图片描述

4、使用curl调用webservice

命令示例:

curl -o ws调用结果.txt -H "Content-Type:text/xml;charset=UTF-8;SOAPAction:\"urn:execute\"" -d ws数据.txt ws地址

参数解析:
-o ws调用结果.txt:指ws的调用返回结果;
-H "Content-Type:text/xml;charset=UTF-8;SOAPAction:\"urn:execute\"":设置调用webservice时的header信息,参考soapui发送端raw里的内容,主要包括Content-Type,SOAPAction;
-d ws数据.txt:指定webservice调用参数:<soapenv:Envelope...>...</soapenv:Envelope>
ws地址:指soapui中地址栏内的地址;

5、通过curl解析nginx的状态值:

通过curl解析nginx状态值:

#!/bin/bash 
HOST="127.0.0.1"
PORT="80" 
curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'

6、完整curl调用命令

下面扩展curl命令,读取nginx状态,动态生成webservice的请求文件,并自动调用webservice:
脚本名称:ngx_status.sh

#!/bin/bash 
# nginx状态监控
# 计划任务 crontab -l
# * * * * * nohup sh /usr/local/nginx/sbin/ngx_status.sh &
HOST="127.0.0.1"
PORT="8080" 
LOG_FILE=/tmp/ngx_status.log
REQ_FILE=/tmp/ngx_status_req.xml
RES_FILE=/tmp/ngx_status_res.xml
WS_PATH=http://192.168.6.105:8080/test/services/testWSProxyService.testWSProxyServiceHttpSoap11Endpoint/

# 获取nginx状态
curl -o $LOG_FILE "http://$HOST:$PORT/status/"

# 生成请求xml
echo '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.test.com">' > $REQ_FILE
echo '<soapenv:Header/><soapenv:Body><ws:execute><ws:request>' >> $REQ_FILE
echo '<![CDATA[{"serviceId":"simpleSave","op":"create","schema":"SM_APP_STATUS","body":{"id":"","app_id":102' >> $REQ_FILE

echo ",\"mon_date\":\"`date +'%Y-%m-%dT%H:%M:%S'`\"" >> $REQ_FILE
cat /tmp/ngx_status.log | grep 'Active' | awk '{print ",\"active_sl\":" $NF}' >> $REQ_FILE
cat /tmp/ngx_status.log | grep 'Reading' | awk '{print ",\"reading_sl\":" $2}' >> $REQ_FILE
cat /tmp/ngx_status.log | grep 'Writing' | awk '{print ",\"writing_sl\":" $4}' >> $REQ_FILE
cat /tmp/ngx_status.log | grep 'Waiting' | awk '{print ",\"waiting_sl\":" $6}' >> $REQ_FILE

echo '}}]]>' >> $REQ_FILE
echo '</ws:request></ws:execute></soapenv:Body></soapenv:Envelope>' >> $REQ_FILE

# 发送请求
curl -o $RES_FILE -H "Content-Type:text/xml;charset=UTF-8;SOAPAction:\"urn:execute\"" -d @$REQ_FILE $WS_PATH

7、echart数据展示

可以参考echart官网示例:
https://echarts.baidu.com/examples/editor.html?c=area-stack
在这里插入图片描述

至此结束。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值