Linux命令 - 统计log日志某接口用户访问频次并排序

背景

某天发现内部人员使用的app服务器访问突增,但不影响服务正常运行,想通过log统计接口的人员访问频次。
从监控平台可以看到访问激增的接口,因Nginx不缓存用户信息只有访问IP,日志清洗的Hive表只能访问前一天,不方便快速统计。
在这里插入图片描述

所以想直接用Linux命令检索log日志,快速输出分组排序结果。

实现方案

在知道是哪个接口被大量访问,以及访问时间段后, 可以圈定log检索范围。

log日志格式如下:

[xx-xx 16:00:00 007] 658d2xxxx-false INFO - logId=xxx uri=/api/submitOrder act=submitOrder 
param={"wxUid":"123456","wxName":null,"productPoolIdList":[1234213,1111111],"uid":22222,"proposer":"张三"}

要在上述日志信息中,统计各个wxUid访问接口 /api/submitOrder 频次,并根据频次倒序排列。

Linux命令如下:

grep "uri=/api/submitOrder" $logpath  | awk -F '("wxUid":|,"wxName":null)' '{print $2}'  
| sort   | uniq -c  | sort -nr
  • grep “uri=/api/submitOrder” $logpath
    框定查询范围。因log日志存放大量info信息,而我们只需要某个action的日志。logpath 为访问路径,此处可以指定访问某个时间段的log日志。

  • awk -F ‘(“wxUid”: |,“wxName”:null)’ ‘{print $2}’
    字符串切割输出需要字符串。用"wxUid": 或,“wxName”:null为分隔符,将上述日志分为三部分,
    1 —— [xx-xx 16:00:00 007] 658d2xxxx-false INFO - logId=xxx uri=/api/submitOrder act=submitOrder param={"wxUid":
    2 —— "123456"
    3 —— ,"wxName":null,"productPoolIdList":[1234213,1111111],"uid":22222,"proposer":"张三"}
    取出第二部分字符串,即"123456"。

  • sort
    对切割获取的结果排序。目的是将相同字符串聚集到一起。

  • uniq -c
    统计数量与去重

  • sort -nr
    对统计结果倒排。不指定会按正序排。

输出结果
在这里插入图片描述
其中:
1418089为该台服务器在这期间总访问次数;下面的数据,第一列为访问次数,第二列为用户wxuid,结果按访问次数倒序排。

参考文档

下面是一篇非常详细的实现博客,推荐阅读。

Linux awk+uniq+sort 统计文件中某字符串出现次数并排序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/652393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

行测-资料:2. 一般增长率、增长量

1、一般增长率 1.1 百分数和百分点 50%,20% 1.2 增长率和倍数 1.5;50 1.3 成数和翻番 1.4 增幅,降幅,变化幅度 A,A,D B,高于全国增速 2.3 个百分点,21.8 - 2.3 19.5。 5%&#xff0…

Oracle PL/SQL Programming 第1章:Introduction to PL/SQL 读书笔记

总的目录和进度,请参见开始读 Oracle PL/SQL Programming 第6版 PL/SQL 是 “Procedural Language extensions to the Structured Query Language.”的缩写。 什么是PL/SQL? Oracle 公司推出 PL/SQL 是为了克服 SQL 中的一些限制,并为那些寻求构建针…

RTPS协议

文章目录 RTPS(Real-time Publish-Subscribe Protocol)RTPS(Real-time Publish-Subscribe Protocol) RTPS(Real-time Publish-Subscribe Protocol)是一种基于发布/订阅模型的协议,用于实时数据分发。它是 OMG 组织定义的标准协议,用于支持分布式实时系统中的数据分发和…

打开 IOS开发者模式

前言 需要 1、辅助设备:苹果电脑; 2、辅助应用:Xcode; 3、准备工作:苹果手机 使用数据线连接 苹果电脑; 当前系统版本 IOS 17.3 通过Xcode激活 两指同时点击 Xcode 显示选择,Open Develop…

重生奇迹MU平民玩家推荐的职业

女魔法师 女魔法师是一个非常适合平民玩家的职业选择。她拥有着强大的魔法攻击能力,可以轻松地击败敌人。而且女魔法师的装备价格相对较低,适合玩家们的经济实力。 精灵射手 精灵射手是一个非常灵活的职业选择。他们可以远程攻击,可以在战…

go-carbon v2.3.7 发布,轻量级、语义化、对开发者友好的 golang 时间处理库

carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装使用 Golang 版本大于…

Markdown语法简介

Markdown是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档。Markdown文件通常以.md或.markdown为后缀。这篇博文将介绍Markdown的一些基本语法,帮助您快速上手。 标题 在Markdown中,您可以通过在文本前面添加#符号来创建标…

使用PCL进行法向量可视化

使用PCL进行法向量可视化 文章目录 1、使用PCL进行法向量可视化2、计算所有点的法线并显示3、计算一个子集的法线 1、使用PCL进行法向量可视化 #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/visualization/pcl_visualizer.h> #include &l…

element plus使用问题

文章目录 element plusvue.config.js注意1、有时候会报错 not a function2、使用 ElMessage 报错3、 element plus 版本过高4、警告Feature flag VUE_PROD_HYDRATION_MISMATCH_DETAILS is not explicitly defined.5、报错 ResizeObserver loop completed with undelivered noti…

Redis高级应用

文章目录 1.5.1 布隆过滤器BloomFilter1.5.1.1 原理1.5.1.2 使用场景 1.5.2 Redis分布式锁1.5.2.1 使用案例分析1.5.2.1.1 单机版没加锁1.5.2.1.2 单节点Redis实现分布式锁1.5.2.1.3 集群下的分布式及CAP1.5.2.1.4 Redisson可靠分布式锁1.5.2.1.5 Redis分布式锁-Redlock算法1.5…

Linux之进程间通信(system V 共享内存)

目录 一、共享内存 1、基本原理 2、共享内存的创建 3、共享内存的释放 4、共享内存的关联 5、共享内存的去关联 6、查看IPC资源 二、完整通信代码 三、共享内存的特点 四、信号量 1、相关概念 2、信号量概念 进程间通信的本质就是让不同的进程看到同一个资源。而前…

微信小程序(二十)Vant组件库的配置

教程很详细&#xff0c;直接上过程 上一篇 官方文档也有&#xff0c;但是因为版本的更新&#xff0c;官方文档并没有跟着改变&#xff0c;这里我写一份最新版能用的教程 &#xff08;口头禅还是不能少的&#x1f923;&#x1f923;&#x1f923;&#xff09; 灵魂拷问&#xf…

Android Studio 提示Use app:drawableStartCompat instead of android:drawableStart

每次提交代码时&#xff0c;AS这个老妈子总爱唠叨一堆warning&#xff0c;这些Warning都在讲什么&#xff1f; 1.Use app:drawableStartCompat instead of android:drawableStart 在Android开发中&#xff0c;android:drawableStart和app:drawableStartCompat是两个用于设置…

基于YOLOv8的摄像头吸烟行为检测系统(Python源码+Pyqt6界面+数据集)

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文主要内容:详细介绍了摄像头下吸烟行为检测系统&#xff0c;在介绍算法原理的同时&#xff0c;给出Pytorch的源码、训练数据集以及PyQt6的UI界面。在界面中可以选择各种图片、视频进行检测识别&#xff0c;可进行置信度、Iou阈值设定…

智能分析网关V4智慧冶金工厂视频智能监管方案

一、背景与需求 随着工业4.0的推进&#xff0c;冶金行业正面临着转型升级的压力。为了提高生产效率、降低能耗、保障安全&#xff0c;冶金智能工厂视频监管方案应运而生。该方案通过高清摄像头、智能分析技术、大数据处理等手段&#xff0c;对工厂进行全方位、实时监控&#xf…

详细解读vcruntime140_1.dll修复的手段,如何快速解决vcruntime140_1.dll丢失问题

当出现“无法找到vcruntime140_1.dll”或程序“未能正常启动”时&#xff0c;这通常指示系统中缺失了一个关键文件&#xff1a;vcruntime140_1.dll。作为Visual C Redistributable组件的一部分&#xff0c;这个小文件在很多用Visual Studio编译的C程序运行时发挥着重要作用。解…

2024/1/27 备战蓝桥杯 1-2

目录 金币 0金币 - 蓝桥云课 (lanqiao.cn) 天干地支 0天干地支 - 蓝桥云课 (lanqiao.cn) 明明的随机数 0明明的随机数 - 蓝桥云课 (lanqiao.cn) 浇灌 0灌溉 - 蓝桥云课 (lanqiao.cn) 金币 0金币 - 蓝桥云课 (lanqiao.cn) 思路&#xff1a;放两种情况&#xff08;k:代…

Qslog开源库使用

Qslog源码下载地址&#xff1a;https://github.com/victronenergy/QsLog 1.QSLOG使用方式 &#xff08;1&#xff09;源码集成 在你的工程中&#xff0c;直接包含QsLog.pri文件&#xff0c;进行源码集成。当然你也可以包含QsLog.pri后&#xff0c;编译为xx.dll&#xff0c;在…

MVCC原理讲解(深入浅出)

目录 一、什么是MVCC 二、当前读、快照读都是什么鬼 三、当前读 四、快照读 五、数据库的并发场景 六、MVCC解决并发的哪些问题 1.解决问题如下&#xff1a; 七、MVCC的实现原理 1.版本链 八、undo日志 1.undo log 的用途 2.undo log主要分为两种 九、Read View…

简洁思路推理 KMP 算法——子字符串匹配

例题 28. 找出字符串中第一个匹配项的下标 暴力遍历解法 枚举原串 ss 中的每个字符作为「发起点」&#xff0c;每次从原串的「发起点」和匹配串的「首位」开始尝试匹配&#xff1a; 匹配成功&#xff1a;返回本次匹配的原串「发起点」。 匹配失败&#xff1a;枚举原串的下一个…