百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

14天shell脚本入门学习-第十三天#日志分析

off999 2025-03-24 19:14 26 浏览 0 评论

日志分析与报告生成是系统管理和运维中的重要任务,能够帮助识别问题、优化性能并生成统计报告。通过编写 Shell 脚本,可以自动化完成日志分析、提取关键信息并生成报告。以下是一个日志分析与报告生成的实战项目示例。


1. 项目需求

假设我们有一个 Web 服务器的访问日志文件(access.log),需要实现以下任务: 1. 分析日志文件,统计访问量、状态码分布、热门页面等。 2. 生成报告文件,包含统计结果。 3. 支持定期运行并发送报告。


2. 日志文件格式

假设日志文件格式如下(Nginx 默认格式):

192.168.1.1 - - [10/Oct/2023:14:30:01 +0000] "GET /index.html HTTP/1.1" 200 1024
192.168.1.2 - - [10/Oct/2023:14:30:02 +0000] "GET /about.html HTTP/1.1" 404 512

3. 脚本设计

3.1 脚本功能

  • 统计访问量:统计总访问量。
  • 状态码分布:统计不同 HTTP 状态码的出现次数。
  • 热门页面:统计访问量最高的页面。
  • 生成报告:将统计结果写入报告文件。

3.2 脚本结构

#!/bin/bash
# 日志分析与报告生成脚本

# 配置
LOG_FILE="/var/log/nginx/access.log"
REPORT_FILE="/var/log/nginx/access_report.txt"
TOP_PAGES=5

# 函数定义
function analyze_log() {
    echo "Analyzing log file: $LOG_FILE..."

# 统计总访问量
total_visits=$(wc -l < log_file echo total visits: total_visits> "$REPORT_FILE"

# 统计状态码分布
echo -e "\nStatus code distribution:" >> "$REPORT_FILE"
awk '{print $9}' "$LOG_FILE" | sort | uniq -c | sort -nr >> "$REPORT_FILE"

# 统计热门页面
echo -e "\nTop $TOP_PAGES most visited pages:" >> "$REPORT_FILE"
awk '{print $7}' "$LOG_FILE" | sort | uniq -c | sort -nr | head -n "$TOP_PAGES" >> "$REPORT_FILE"
}

# 主逻辑
analyze_log

echo "Report generated: $REPORT_FILE"

4. 脚本说明

4.1 配置部分

  • LOG_FILE:日志文件路径。
  • REPORT_FILE:报告文件路径。
  • TOP_PAGES:热门页面的数量。

4.2 函数定义

  • analyze_log:分析日志文件并生成报告。

4.3 主逻辑

调用 analyze_log 函数完成日志分析并生成报告。


5. 使用说明

5.1 准备工作

  1. 确保日志文件存在并具有可读权限。
  2. 将脚本保存为 log_analyzer.sh,并赋予执行权限:
chmod +x log_analyzer.sh

5.2 运行脚本

运行脚本:

./log_analyzer.sh

5.3 查看报告

报告文件将生成在
/var/log/nginx/access_report.txt
,内容如下:

Total visits: 1000

Status code distribution:
    800 200
    150 404
    50 500

Top 5 most visited pages:
    300 /index.html
    200 /about.html
    100 /contact.html
    50 /products.html
    30 /blog.html

6. 扩展功能

6.1 定期运行

使用 cron 定期运行脚本并发送报告: 1. 编辑 cron 任务:

crontab -e
  1. 添加以下内容(每天凌晨 2 点运行):
0 2 * * * /path/to/log_analyzer.sh

6.2 发送报告

使用 mail 命令将报告发送到邮箱:

mail -s "Access Log Report" user@example.com < "$REPORT_FILE"

6.3 错误处理

添加错误处理逻辑,确保脚本在出错时退出:

set -e  # 任何命令失败时退出脚本

6.4 日志轮转

结合 logrotate 管理日志文件,避免日志文件过大: 1. 创建 logrotate 配置文件:

sudo nano /etc/logrotate.d/nginx
  1. 添加以下内容:
/var/log/nginx/access.log {
   daily
   rotate 7
   compress
   missingok
   notifempty
   create 0640 www-data adm
   postrotate
       /usr/sbin/nginx -s reload
   endscript
}

7. 总结

  • 日志分析与报告生成是系统管理和运维中的重要任务。
  • 通过 Shell 脚本可以自动化完成日志分析、提取关键信息并生成报告。
  • 结合 cronmail 可以实现定期运行和报告发送。
  • 脚本应具备良好的错误处理和日志轮转功能,确保系统的稳定性和可靠性。

相关推荐

tplink设置向导(tp link路由器的设置向导)

tplink路由器首次设置时才会自动弹出向导,如果希望自动弹出,可先还原出厂设置,然后再登录即可自动弹出,还原出厂设置步骤如下:  1、路由器开启电源;  2、按下路由器表面的reset复位按钮,个别...

破解苹果激活锁的万能id(破解iphone id激活锁软件)

提前打开我的AppleID界面,点击管理您的账户。点击忘记AppleID,填写与AppleID相关的各项基本信息。通过电子邮件内的链接或回答安全问题,或者进行人工破解。1、登陆苹果官网,点击下面...

手机上不了wifi是什么原因(手机上不了网连不了wifi)

1.手机wifi已连接不可上网问题出现后首先检测一下是否为手机本身突发性的问题,可以进行关机重启一下再连接看是否还会出现这样的情况。或者使用其他手机或设备连接WiFi试试能否上网。2.如果不是手机的问...

桌面图标大小设置(怎么修改桌面图标大小设置)
  • 桌面图标大小设置(怎么修改桌面图标大小设置)
  • 桌面图标大小设置(怎么修改桌面图标大小设置)
  • 桌面图标大小设置(怎么修改桌面图标大小设置)
  • 桌面图标大小设置(怎么修改桌面图标大小设置)
win10有产品id没有密钥(win10 我没有产品密钥)

WIN10,在左下角输入WINDOWSPOWERSHELL,然后点击系统查询结果第一项,在弹出的窗口中输入:(Get-WmiObject-query‘select*fromSoftware...

win10截屏后找不到了(win10截屏后找不到了怎么办)

Win10系统截屏后没有更新通知并不是一个常见的问题。可能是由于系统设置或者安装的软件造成的。如果系统设置为静音或者禁用通知,那么截屏后不会有通知。另外,一些截屏软件可能会阻止系统通知,需要手动设置...

微软官网win10家庭版下载(微软官网win10家庭版下载速度慢)
  • 微软官网win10家庭版下载(微软官网win10家庭版下载速度慢)
  • 微软官网win10家庭版下载(微软官网win10家庭版下载速度慢)
  • 微软官网win10家庭版下载(微软官网win10家庭版下载速度慢)
  • 微软官网win10家庭版下载(微软官网win10家庭版下载速度慢)
运行定时关机命令(运行定时关机命令怎么设置)

1、打开电脑,按住【Win+R】组合键,弹出运行命令,在编辑框内输入如下命令:shutdown-s-t3600;电脑定时关机运行2、shutdown-s-t3600命令的含义如下:shut...

win7打印机共享设置(详细图文步骤)
  • win7打印机共享设置(详细图文步骤)
  • win7打印机共享设置(详细图文步骤)
  • win7打印机共享设置(详细图文步骤)
  • win7打印机共享设置(详细图文步骤)
键盘快捷键(键盘快捷键是哪个)

电脑键盘快捷键大全:Ctrl+1,2,3... 功能:切换到从左边数起第1,2,3...个标签Ctrl+A 功能:全部选中当前页面内容Ctrl+C 功能:复制当前选中内容Ctrl+D 功能:打开“添加...

宏基acer官网商城(宏基官方商城)

宏碁本本底部有个序列号标签,不是粉色的那个,粉色的是系统的序列号,白色的是本本的出厂序列号,上宏碁官网查查你的序列号就知道真假了。在盖子的后面就可以查询到序列号,或者是去网上查询宏碁笔记本在官网下...

网盘在哪里打开(华为网盘在哪里打开)

给你的是一个网盘地址吧,直接把这个地址放到浏览器地址栏就好了,如果有提取码,他会提示你输入提取码的。一般都是在网上找到百度云链接,然后把文件保存在自己的百度网盘文件夹里面的。打开百度网盘app,...

win10系统安全模式怎么进入(win10安全模式如何进入)
  • win10系统安全模式怎么进入(win10安全模式如何进入)
  • win10系统安全模式怎么进入(win10安全模式如何进入)
  • win10系统安全模式怎么进入(win10安全模式如何进入)
  • win10系统安全模式怎么进入(win10安全模式如何进入)
win7sp1专业版(win7专业版vl)

Win7系统SP1是系统发布后第一个SP包x64是64位操作系统。Windows7指的是微软公司的Windows7操作系统ultimate指的是旗舰版(with表示伴随,说明这是提供商所提供...

手写输入法手写板怎么设置(手写输入法手写板怎么设置 iphone)

手写输入法设置方法:1、打开手机至桌面主页,保持手机处于工作状态;  2、在手机桌面主页列表找到设置,点击打开并进入设置主界面;  3、在设置主界面找到系统设置选项,点击打开并进入系统设置主界面;  ...

取消回复欢迎 发表评论: