找出apache日志中访问量最大的IP

简介:

最近打算换个工作环境,于是就投了几份简历,做运维的,笔试题是少不了的。

其中碰见最多的就是关于日志的统计和分析的题。

这里贴一个比较典型的出来,方便以后查阅。

原题如下:

某公司采用apache作为web服务器,其中记录客户端访问情况的日志名为,clientuser.log。日志内容如下图所示:

请写一个shell找出该日志中,访问量最大的ip。

这个题对于运维老手来说,写个shell也是非常轻松的。可是对于新手来说就有些难度了。

我的思路是这样的,首先找出IP段,然后进行数量统计,最后对统计数量排序,取出最大值。

明确了思路,就方便些shell了。

我是这样写的:

# cut -d " " -f 1 clientuser.log |uniq -c|sort -r|head -1|awk '{print $2}'

这里将命令分段执行,方便大家理解。

# cat clientuser.log

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
192.168.1.100 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
192.168.1.100 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
192.168.1.100 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
192.168.1.100 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
192.168.1.110 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 

1、取出IP段:

# cut -d " " -f 1 clientuser.log

127.0.0.1
127.0.0.1
192.168.1.100
192.168.1.100
192.168.1.100
192.168.1.100
192.168.1.110 

2、统计IP访问数量

# cut -d " " -f 1 clientuser.log |uniq -c

2 127.0.0.1
4 192.168.1.100
1 192.168.1.110 

3、对统计好的IP访问数量排序

# cut -d " " -f 1 clientuser.log |uniq -c|sort -r

4 192.168.1.100
2 127.0.0.1
1 192.168.1.110 

4、取出访问量最大的IP及访问数量

# cut -d " " -f 1 clientuser.log |uniq -c|sort -r|head -1

4 192.168.1.100 

5、只显示IP

# cut -d " " -f 1 clientuser.log |uniq -c|sort -r|head -1|awk '{print $2}'

192.168.1.100 

到此,我们就完成了此题的解答。

此题的解法不止这一种方法,还有很多,大家都来想一想吧。



本文转自 cyr520 51CTO博客,原文链接:http://blog.51cto.com/cyr520/768707

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
存储 算法 数据挖掘
带你读《Apache Doris 案例集》——06 Apache Doris 助力中国联通万亿日志数据分析提速10倍(2)
带你读《Apache Doris 案例集》——06 Apache Doris 助力中国联通万亿日志数据分析提速10倍(2)
|
4月前
|
存储 安全 数据挖掘
带你读《Apache Doris 案例集》——06 Apache Doris 助力中国联通万亿日志数据分析提速10倍(1)
带你读《Apache Doris 案例集》——06 Apache Doris 助力中国联通万亿日志数据分析提速10倍(1)
|
4月前
|
存储 监控 安全
带你读《Apache Doris 案例集》——07查询平均提速700% ,奇安信基于 Apache Doris 升级日志安全分析系统(1)
带你读《Apache Doris 案例集》——07查询平均提速700% ,奇安信基于 Apache Doris 升级日志安全分析系统(1)
|
4月前
|
SQL 存储 安全
带你读《Apache Doris 案例集》——07查询平均提速700% ,奇安信基于 Apache Doris 升级日志安全分析系统(2)
带你读《Apache Doris 案例集》——07查询平均提速700% ,奇安信基于 Apache Doris 升级日志安全分析系统(2)
105 0
|
1月前
|
存储 消息中间件 监控
Zoom 基于Apache Hudi 的流式日志处理实践
Zoom 基于Apache Hudi 的流式日志处理实践
43 1
|
1月前
|
域名解析 网络协议 应用服务中间件
nginx-ingress通过ipv6暴露服务,并在nginx ingress日志中记录客户端真实ipv6的ip地址
本文主要通过阿里云提供的clb和nlb来实现,建议是提前创建好双栈的vpc和vsw(使用clb可以不用双栈vpc和vsw)
175 1
|
2月前
|
Linux Perl
sed提取日志中的IP地址
sed提取日志中的IP地址
60 4
|
17天前
|
Java
使用Java代码打印log日志
使用Java代码打印log日志
73 1
|
18天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
72 1
|
22天前
|
SQL 关系型数据库 MySQL
MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复
对于MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复。二进制日志是MySQL中记录所有数据库更改操作的日志文件。要进行时间点恢复,您需要执行以下步骤: 1. 确保MySQL配置文件中启用了二进制日志功能。在配置文件(通常是my.cnf或my.ini)中找到以下行,并确保没有被注释掉: Copy code log_bin = /path/to/binary/log/file 2. 在需要进行恢复的时间点之前创建一个数据库备份。这将作为恢复的基准。 3. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位

热门文章

最新文章

推荐镜像

更多