最近网站总是被某些的Ip暴力访问,看不出来源,为了防止一直宕机,决定写一个守护脚本,屏蔽一分钟内请求网站超过600次的IP。
先看一下linux服务器下分析apache日志的语句:
假设apache日志格式为:
118.78.199.98 – - [09/Jan/2010:00:59:59 +0800] “GET /Public/Css/index.css HTTP/1.1″ 304 – “http://www.a.cn/common/index.php” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.3)”
问题1:在apachelog中找出访问次数最多的10个IP。
awk '{print $1}' apache_log |sort |uniq -c|sort -nr|head -n 10
awk 首先将每条日志中的IP抓出来,如日志格式被自定义过,可以 -F 定义分隔符和 print指定列;
sort进行初次排序,为的使相同的记录排列到一起;
upiq -c 合并重复的行,并记录重复次数。
head进行前十名筛选;
sort -nr按照数字进行倒叙排序。
我参考的命令是:
显示10条最常用的命令
sed -e "s/| //n/g" ~/.bash_history | cut -d ' ' -f 1 | sort | uniq -c | sort -nr | head
问题2:在apache日志中找出访问次数最多的几个分钟。
awk '{print $4}' access_log |cut -c 14-18|sort|uniq -c|sort -nr|head
awk 用空格分出来的第四列是[09/Jan/2010:00:59:59;
cut -c 提取14到18个字符
剩下的内容和问题1类似。
问题3:在apache日志中找到访问最多的页面:
awk '{print $11}' apache_log |sed 's/^.*cn/(.*/)/"//1/g'|sort |uniq -c|sort -rn|head
类似问题1和2,唯一特殊是用sed的替换功能将”http://www.a.cn/common/index.php”替换成括号内的内容:”http://www.a.cn(/common/index.php)”
问题4:在apache日志中找出访问次数最多(负载最重)的几个时间段(以分钟为单位),然后在看看这些时间哪几个IP访问的最多?
1,查看apache进程:
ps aux | grep httpd | grep -v grep | wc -l
2,查看80端口的tcp连接:
netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l
3,通过日志查看当天ip连接数,过滤重复:
cat access_log | grep "19/May/2011" | awk '{print $2}' | sort | uniq -c | sort -nr
4,当天ip连接数最高的ip都在干些什么(原来是蜘蛛):
cat access_log | grep "19/May/2011:00" | grep "61.135.166.230" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10
5,当天访问页面排前10的url:
cat access_log | grep "19/May/2010:00" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10
6,用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr
接着从日志里查看该ip在干嘛:
cat access_log | grep 220.181.38.183| awk '{print $1"/t"$8}' | sort | uniq -c | sort -nr | less
7,查看某一时间段的ip连接数:
grep "2006:0[7-8]" www20110519.log | awk '{print $2}' | sort | uniq -c| sort -nr | wc -l
8,当前WEB服务器中联接次数最多的20条ip地址:
netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -n -r | head -n 20
9,查看日志中访问次数最多的前10个IP
cat access_log |cut -d ' ' -f 1 |sort |uniq -c | sort -nr | awk '{print $0 }' | head -n 10 |less
10,查看日志中出现100次以上的IP
cat access_log |cut -d ' ' -f 1 |sort |uniq -c | awk '{if ($1 > 100) print $0}'|sort -nr |less
11,查看最近访问量最高的文件
cat access_log |tail -10000|awk '{print $7}'|sort|uniq -c|sort -nr|less
12,查看日志中访问超过100次的页面
cat access_log | cut -d ' ' -f 7 | sort |uniq -c | awk '{if ($1 > 100) print $0}' | less
13,列出传输时间超过 30 秒的文件
cat access_log|awk '($NF > 30){print $7}'|sort -n|uniq -c|sort -nr|head -20
14,列出最最耗时的页面(超过60秒的)的以及对应页面发生次数
cat access_log |awk '($NF > 60 && $7~//.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100
相关推荐
接下来,我们将介绍一些常用的Linux shell命令用于分析这些日志。 1. **`grep`**:筛选特定信息。例如,找出所有返回404状态码的请求: ``` grep '404' /var/log/nginx/access.log ``` 2. **`awk`**:处理字段...
以下是一些常用的Linux查看日志命令及其应用: 1. **`less` 和 `more` 命令** 这两个命令用于查看文件内容,特别是大型日志文件。`less` 提供了向前/向后翻页、搜索和导航功能,而 `more` 只能逐屏显示。 2. **`...
Linux操作系统提供了一系列强大的命令来帮助用户方便地查看和分析这些日志。在本篇文章中,我们将详细探讨在Linux中查看日志最常用的几个命令:`tail`、`cat`、`more`和`less`。 1. `tail` 命令: `tail` 命令主要...
本篇将详细介绍如何利用SecureCRT连接到Linux服务器,并通过常用Linux命令来查看和分析日志文件。 一、SecureCRT的使用 SecureCRT提供了一个安全的外壳协议(SSH)连接,允许用户通过图形界面与Linux服务器进行...
show log命令用于查看交换机的LOG日志,管理员可以使用这个命令来查看系统突发状况,例如端口异常关闭、链路的通断、主备机切换等等许多信息。 8. 查看端口详细状态特权模式下输入show interface显示如下:此命令...
例如,使用`combined`格式的日志,配置命令通常为`CustomLog /var/log/apache2/access.log combined`。 日志格式中的 `%v`、`%h`、`%l`、`%u`、`%t`、`%r`、`%>s`、`%b`等符号分别代表服务器名、客户端IP、远程登录...
* log [可选]:表示如果报文符合条件,需要做日志。 clear access-list counters 命令 clear access-list counters 命令用于清除访问列表规则的统计信息。该命令的格式如下: clear access-list counters ...
### Linux日志分析关键知识点详解 #### 一、引言 在现代IT环境中,日志文件扮演着极其重要的角色,特别是在Linux系统下。通过分析这些日志,管理员能够监控系统的健康状况、诊断问题以及防范安全威胁。本文将详细...
本文主要给大家总结了关于Nginx日志统计分析的一些常用命令,分享出来供大家参考学习,下面来一起看看详细的介绍: 一、IP相关统计 统计IP访问量 awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一...
本篇将基于提供的文件内容,深入解析Linux日志系统的几个关键方面,包括日志文件的作用、常用日志文件类型以及如何通过命令行工具来读取和分析这些日志。 #### 日志文件的作用 Linux操作系统中的日志文件主要用于...
- 功能:在WEB服务器日志文件`access.log`的最后100行中查找没有被Google访问的行。 - 示例:`tail -100 /var/log/apache/access.log | grep -v googlebot` - **grep -v ^# /etc/apache2/httpd.conf** - 功能:...
其日志文件通常包含两部分:访问日志(access log)和错误日志(error log)。 - **访问日志**: 记录所有HTTP请求的信息,包括客户端IP地址、请求时间、请求方法、请求URL等。 - **错误日志**: 记录Web服务器遇到的问题...
普通日志也称为访问日志(Access log),记录了 MySQL 中发生过的所有操作日志。普通日志可以用于调试和排查错误。 9.3.1 介绍 普通日志默认是关闭的,因为它会大量消耗磁盘 IO。但是,普通日志可以记录 MySQL 中...
#### 四、常用分析工具与命令 - **Linux环境**: - **Shell命令**:如`grep`、`awk`、`sort`、`uniq`等。 - `grep`:用于搜索匹配指定模式的行。 - `awk`:灵活处理文本数据,提取特定字段。 - `sort`:按指定...
1. 查看日志:`display logbuffer` 显示设备运行日志,帮助定位问题。 2. 排查链路问题:`display interface extensive` 详细显示接口状态,包括错误统计信息。 七、性能监控 1. CPU与内存监控:`display cpu-usage...
常用的日志文件包括: 1. Access-log:纪录 HTTP/web 的传输 2. acct/pacct:纪录用户命令 3. aculog:纪录 MODEM 的活动 4. btmp:纪录失败的纪录 5. lastlog:纪录最近几次成功登录的事件和最后一次不成功的登录 ...
例如,可以使用`tail -f /var/log/httpd/access_log`来实时查看访问日志,其中`-f`选项表示持续跟踪文件尾部的新数据。 - **常用选项**: - `-n`:指定显示行数,如`tail -n 100 access_log`表示显示最后100行。 ...
例如,将日志写入名为`access.log`的文件: ```javascript const fs = require('fs'); const accessLogStream = fs.createWriteStream('access.log', { flags: 'a' }); app.use(morgan('combined', { stream: ...