Nginx状态监控及日志分析,VUE项目版本迭代自动更新当前版本的代码 更新 刷新 自动更新静态文件 reload

Nginx状态监控及日志分析

1、Nginx状态监控
Nginx提供了一个内置的状态信息监控页面可用于监控Nginx的整体访问情况,这个功能由ngx_http_stub_status_module模块进行实现。
使用nginx -V 2>&1 | grep -o with-http_stub_status_module命令检测当前Nginx是否有status功能,如果输出ngx_http_stub_status_module则说明是有的,如果没有可以在编译时加上此模块。
默认情况下,status是关闭的,我们需要开启,并指定uri来访问数据。

server {
    listen 80;
    server_name default_server;
    location /status {
       stub_status on; 
       allow 114.247.125.227;
    }
}

allow配置只允许指定的Ip才能访问nginx status功能,去掉就是不限制。
重启Nginx之后,浏览器访问http://{IP}/status查看状态监控信息

image.png

Active connections:当前的客户端活动连接数(包含正在等待的客户端连接),相当于TCP连接状态处于Established和SYN_ACK
accepts: 已接受的客户端连接总数,即已被worker进程接收的连接
handled: 已被处理的连接总数
requests: 客户端的http请求总数
Reading: 当前正在读取的http请求数(读取到http请求首部)
Writing: 当前准备响应的连接数(写入到http响应首部)
Waiting: 当前处于等待的空闲客户端请求数, 等待的时间为Reading和Writing之间的间隔
采集到Nginx数据之后就可以用监控工具给监控起来了。

2、日志分析
Nginx默认的日志格式配置可以在/etc/nginx/nginx.conf中找到

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" $request_time $upstream_response_time';

打印的日志实例

39.105.66.117 - mp [11/Sep/2019:19:03:01 +0800] "POST /salesplatform-gateway/users HTTP/1.1" 200 575 "-" "Apache-HttpClient/4.5.5 (Java/1.8.0_161)" "-" 0.040 0.040
39.105.66.117 - mp [11/Sep/2019:19:03:08 +0800] "POST /salesplatform-gateway/users HTTP/1.1" 200 575 "-" "Apache-HttpClient/4.5.5 (Java/1.8.0_161)" "-" 0.008 0.008

$remote_addr: 客户端的ip地址
$remote_user: 用于记录远程客户端的用户名称
$time_local: 用于记录访问时间和时区
$request: 用于记录请求的url以及请求方法
$status: 响应状态码
$body_bytes_sent: 给客户端发送的文件主体内容字节数
$http_referer: 可以记录用户是从哪个链接访问过来的
$http_user_agent: 用户所使用的浏览器信息
$http_x_forwarded_for: 可以记录客户端IP,通过代理服务器来记录客户端的ip地址
r e q u e s t t i m e : 指 的 是 从 接 受 用 户 请 求 的 第 一 个 字 节 到 发 送 完 响 应 数 据 的 时 间 , 即 request_time: 指的是从接受用户请求的第一个字节到发送完响应数据的时间,即 requesttime:request_time包括接收客户端请求数据的时间、后端程序响应的时间、发送响应数据给客户端的时间
$upstream_response_time: 用于接收来自上游服务器的响应的时间
常用分析命令
1、根据访问IP统计UV

awk '{print $1}' paycenteraccess.log | sort -n | uniq | wc -l

2、查询访问最频繁的IP(前10)

awk '{print $1}' /var/log/nginx/access.log | sort -n |uniq -c | sort -rn | head -n 10

3、查看某一时间段的IP访问量(1-8点)

awk '$4 >="[25/Mar/2020:01:00:00" && $4 <="[25/Mar/2020:08:00:00"' /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c| sort -nr |wc -l

4、查看访问100次以上的IP

awk '{print $1}' /var/log/nginx/access.log | sort -n |uniq -c |awk '{if($1 >100) print $0}'|sort -rn

5、查看指定ip访问过的url和访问次数

grep "39.105.67.140" /var/log/nginx/access.log|awk '{print $7}' |sort |uniq -c |sort -n -k 1 -r

6、根据访问URL统计PV

cat /var/log/nginx/access.log |awk '{print $7}' |wc -l

7、查询访问最频繁的URL(前10)

awk '{print $7}' /var/log/nginx/access.log | sort |uniq -c | sort -rn | head -n 10

8、查看访问最频的URL([排除/api/appid])(前10)

grep -v '/api/appid' /var/log/nginx/access.log|awk '{print $7}' | sort |uniq -c | sort -rn | head -n 10

9、查看页面访问次数超过100次的页面

cat /var/log/nginx/access.log | cut -d ' ' -f 7 | sort |uniq -c | awk '{if ($1 > 100) print $0}' | less

10、查看最近1000条记录,访问量最高的页面

tail -1000 /var/log/nginx/access.log |awk '{print $7}'|sort|uniq -c|sort -nr|less

11、统计每小时的请求数,top10的时间点(精确到小时)

awk '{print $4}' /var/log/nginx/access.log |cut -c 14-15|sort|uniq -c|sort -nr|head -n 10

12、统计每分钟的请求数,top10的时间点(精确到分钟)

awk '{print $4}' /var/log/nginx/access.log |cut -c 14-18|sort|uniq -c|sort -nr|head -n 10

13、统计每秒的请求数,top10的时间点(精确到秒)

awk '{print $4}' /var/log/nginx/access.log |cut -c 14-21|sort|uniq -c|sort -nr|head -n 10

14、查找指定时间段的日志

awk '$4 >="[25/Mar/2020:01:00:00" && $4 <="[25/Mar/2020:08:00:00"' /var/log/nginx/access.log

15、列出传输时间超过 0.6 秒的url,显示前10条

cat /var/log/nginx/access.log |awk '(substr($NF,2,5) > 0.6){print $4,$7,substr($NF,2,5)}' | awk -F '"' '{print $1,$2,$3}' |sort -k3 -rn | head -10

16、列出/api/appid请求时间超过0.6秒的时间点

cat /var/log/nginx/access.log |awk '(substr($NF,2,5) > 0.6 && $7~/\/api\/appid/){print $4,$7,substr($NF,2,5)}' | awk -F '"' '{print $1,$2,$3}' |sort -k3 -rn | head -10

17、获取前10条最耗时的请求时间、url、耗时

cat /var/log/nginx/access.log |awk '{print $4,$7,substr($NF,2,5)}' | awk -F '"' '{print $1,$2,$3}' | sort -k3 -rn | head -10

【转载】: https://segmentfault.com/a/1190000022808115

**

VUE项目版本迭代自动更新当前版本的代码 更新 刷新 自动更新静态文件 reload

**

window.reload是重新加载当前需要的所有内容,也就包括页面和后台的代码,此过程中实际上是从后台重新进行操作;
APP.vue 中写一个版本号,在静态文件再写一个版本号,相互印证,如果不一样的话,就调用 location.reload() 自动刷新页面

app.vue 代码:

var version = this.version;          //版本号(每次上线前需要更新下版本号)
console.log('当前版本号common.js:',version)
var vvv ='1.1.5'
console.log('当前版本号app.vue:',vvv)
if(vvv!=version){
  this.version=vvv;
  location.reload();
}

静态文件 common.js 代码:

//common.js

export default { // 公共的js
  install(_this, options) {
    _this.prototype.version = '1.1.5',//版本号
  }
}

在mian.js 静态文件中导入:

import common from '../static/common_js/common.js'
Vue.use(common)

ok, 这样就会自动更新common.js的静态文件了

原文链接:https://blog.csdn.net/qq_35713752/article/details/102921315

浏览器中打开页面之后,发布了新的内容,需要手动F5刷新才能看到内容,然后客户又不想手动刷;

看到https://blog.csdn.net/qq_35713752/article/details/102921315这篇文章之后有的想法,用原文的方法,我这
儿好像没解决

步骤:

在/static文件夹下新建一个json文件,写上你需要的版本号

{
    "version": "1.3"
}

在App.vue请求刚刚写的json,和localStorage的version比较

methods:{
    checkVersion () {
        axios.get(`http://xxx.xxx.xxxxx/static/version.json`,{headers: {'Cache-Control': 'no-cache'}}) // 反正就是要请求到json文件的内容, 并且禁止缓存
            .then(res => {
            const version = res.data.version
            const clientVersion = localStorage.getItem('_version_')

            console.log('最新版本>>', version)
            console.log('当前版本>>', clientVersion)

            // 和最新版本不同,刷新页面
            if (version !== clientVersion) {
                localStorage.setItem('_version_', version)
                window.location.reload()
            }
            })
        }
}

还是App.vue中,created里面调用

created(){
    setInterval(()=>{
        this.checkVersion()
    }, 60000) // 我这儿1分钟一次
}

原文链接:https://blog.csdn.net/RevolCat/article/details/105953847

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值