logwatch需手动配置服务名和日志路径才能分析apache日志:rhel用httpd,ubuntu用apache2;须设置mailto、service、range等参数,并通过cron每日自动发送邮件报告。

Logwatch 默认不自动识别 Apache 日志,需明确指定服务名或日志路径才能汇总其访问与错误日志。关键在于让 Logwatch 知道“要分析什么”以及“怎么发出去”。
确认 Apache 日志位置和服务名
Apache 日志路径因发行版而异:
- CentOS/RHEL:/var/log/httpd/access_log 和 /var/log/httpd/error_log,服务名为 httpd
- Ubuntu/Debian:/var/log/apache2/access.log 和 /var/log/apache2/error.log,服务名为 apache2(部分旧版本也认 httpd)
Logwatch 自带的解析脚本位于 /usr/share/logwatch/scripts/services/,检查是否存在 httpd 或 apache2 文件。多数系统已预置 httpd,Ubuntu 可能需要软链或手动适配。
配置 Logwatch 仅聚焦 Apache
编辑主配置文件(优先级最高):
sudo nano /etc/logwatch/conf/logwatch.conf确保以下几项设置合理:
- MailTo = your@email.com(必须填写,否则无邮件输出)
-
Service = httpd(RHEL)或 Service = apache2(Ubuntu),不写
all,避免干扰 - Range = yesterday(推荐,生成昨日报告更实用)
- Detail = Med(High 容易因大量 404 导致邮件超大)
- Output = mail(配合本地 MTA 使用)
测试命令并验证输出
先绕过邮件,用终端快速验证是否能正确解析:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
若看到类似 “HTTPD: Top URL Requests”、“HTTPD: Top Referrers” 的区块,说明解析成功。如报错 “No logs found”,请检查日志路径权限或确认日志文件非空。
若需强制指定路径(例如自定义 Apache 日志位置),可临时用:
sudo logwatch --service "httpd:/var/log/httpd/custom_access.log" --range yesterday --output stdout设置每日自动邮件报告
Logwatch 本身不调度,依赖 cron。推荐添加独立 crontab 条目(比依赖 /etc/cron.daily/00logwatch 更可控):
sudo crontab -e追加一行(例如每天凌晨 3:20 执行):
20 3 * * * /usr/sbin/logwatch --service httpd --range yesterday --mailto admin@example.com --output mail注意:本地必须运行 MTA(如 postfix 或 sendmail)。测试方法:
echo "test" | mail -s "test" your@email.com收不到?先配置好邮件发送能力,再让 Logwatch 跑。










