上传文件至 /
This commit is contained in:
parent
9ea029a6c3
commit
3e7a2ca772
153
日志管理.md
Normal file
153
日志管理.md
Normal file
@ -0,0 +1,153 @@
|
||||
<h2><center>日志管理</center></h2>
|
||||
|
||||
------
|
||||
|
||||
## 一:简介
|
||||
|
||||
在 Linux 系统中,日志管理是系统维护和故障排查的核心环节。系统和服务通过日志记录运行状态、错误信息和用户操作,合理管理日志有助于快速定位问题并保障系统安全。
|
||||
|
||||
## 二:日志管理
|
||||
|
||||
### 1. 日志文件的位置与类型
|
||||
|
||||
Linux 日志文件通常存储在 /var/log 目录下,常见日志文件如下:
|
||||
|
||||
| 日志文件 | 说明 |
|
||||
| :---------------------: | :-----------------------------------------: |
|
||||
| **/var/log/messages** | 系统级日志 |
|
||||
| **/var/log/secure** | 与系统安全相关的日志 |
|
||||
| **/var/log/yum.log** | 记录通过 yum 安装或更新的软件包信息。 |
|
||||
| **/var/log/maillog** | 记录邮件服务 |
|
||||
| **/var/log/cron** | 记录 cron 定时任务的执行情况 |
|
||||
| **/var/log/dmesg** | 记录内核启动时的硬件检测和驱动加载信息。 |
|
||||
| var/log/audit/audit.log | 记录系统审计日志 |
|
||||
| /var/log/btmp | 记录失败的登录尝试 |
|
||||
| /var/log/wtmp | 记录所有用户的登录、注销及系统启动/关机事件 |
|
||||
| /var/log/lastlog | 记录每个用户最后一次登录的时间 |
|
||||
| /var/log/mysqld.log | MySQL 数据库日志 |
|
||||
|
||||
### 2. 查看日志的工具
|
||||
|
||||
#### 1. 基础工具
|
||||
|
||||
**tail / head** :查看日志尾部或头部内容
|
||||
|
||||
```bash
|
||||
[root@wxin ~]# tail -n 100 /var/log/messages # 查看最后 100 行
|
||||
[root@wxin ~]# tail -f /var/log/nginx/access.log # 实时追踪日志更新
|
||||
```
|
||||
|
||||
**grep**:按关键词过滤日志
|
||||
|
||||
```bash
|
||||
[root@wxin ~]# grep "error" /var/log/messages # 查找包含 "error" 的行
|
||||
[root@wxin ~]# grep -C 3 "failed" /var/log/audit/audit.log # 显示匹配行及其前后 3 行
|
||||
```
|
||||
|
||||
**less**:分页浏览日志
|
||||
|
||||
```bash
|
||||
[root@wxin ~]# less +F /var/log/messages # 进入实时滚动模式(按 Ctrl+C 退出)
|
||||
```
|
||||
|
||||
#### 2. 高级工具
|
||||
|
||||
**journalctl**(systemd 系统日志管理工具)
|
||||
|
||||
```bash
|
||||
[root@wxin ~]# journalctl -u nginx.service # 查看 nginx 服务日志
|
||||
[root@wxin ~]# journalctl --since "2024-01-01" --until "2024-01-02"
|
||||
[root@wxin ~]# journalctl -p err -b # 查看本次启动后的错误日志
|
||||
```
|
||||
|
||||
**logrotate**:日志轮转工具
|
||||
|
||||
```bash
|
||||
[root@wxin ~]# logrotate -vf /etc/logrotate.conf # 手动触发日志轮转并显示详情
|
||||
```
|
||||
|
||||
## 三:日志轮转
|
||||
|
||||
日志轮转(Log Rotation)是系统管理中用于管理日志文件的重要机制,其主要目的是避免单个日志文件过大导致磁盘空间耗尽,同时保留历史日志以方便后续排查问题。
|
||||
|
||||
### 1. 日志轮转的核心功能
|
||||
|
||||
- **分割日志**:将单个日志文件按时间或大小分割成多个文件(例如 access.log1,access.log2)。
|
||||
- **压缩旧日志**:减少日志占用的磁盘空间(如使用 gzip )。
|
||||
- **删除过期日志**:根据保留策略清理旧日志。
|
||||
- **无缝切换**:轮转过程中不中断正在写入的日志(通过重命名文件或信号通知应用重新打开日志)。
|
||||
|
||||
### 2. 日志轮转策略
|
||||
|
||||
**按时间轮转**
|
||||
|
||||
- **每日轮转**:每天生成一个新日志文件(例如 nginx_20231101.log)。
|
||||
- **每周/每月轮转**:适用于低频日志场景。
|
||||
|
||||
```shell
|
||||
daily # 每天轮转
|
||||
rotate 7 # 保留最近7天的日志
|
||||
```
|
||||
|
||||
**按大小轮转**
|
||||
|
||||
- 当日志文件达到指定大小时触发轮转(如 100MB)。
|
||||
|
||||
```shell
|
||||
size 100M # 文件超过100MB时轮转
|
||||
rotate 5 # 保留5个历史文件
|
||||
```
|
||||
|
||||
**混合策略**
|
||||
|
||||
- 同时限制时间和大小,例如:每天轮转,但超过1GB立即轮转。
|
||||
|
||||
### 3. 示例
|
||||
|
||||
**基础配置**
|
||||
|
||||
```shell
|
||||
/var/log/nginx/*.log {
|
||||
daily # 按天轮转
|
||||
missingok # 如果日志不存在,不报错
|
||||
rotate 30 # 保留30个历史文件
|
||||
compress # 压缩旧日志(默认用gzip)
|
||||
delaycompress # 延迟压缩前一个日志文件(方便排查最新日志)
|
||||
notifempty # 如果日志为空,不轮转
|
||||
create 0640 www-data adm # 新日志文件的权限、属主和属组
|
||||
sharedscripts # 所有日志处理完后执行一次脚本
|
||||
postrotate
|
||||
systemctl reload nginx # 通知Nginx重新打开日志文件
|
||||
endscript
|
||||
}
|
||||
```
|
||||
|
||||
**按大小轮转**
|
||||
|
||||
```shell
|
||||
/var/log/app/app.log {
|
||||
size 100M # 超过100MB时轮转
|
||||
rotate 5 # 保留5个历史文件
|
||||
compress
|
||||
dateext # 使用日期后缀(如app.log-20231101.gz)
|
||||
}
|
||||
```
|
||||
|
||||
### 4. 高级配置选项
|
||||
|
||||
- **dateext**:用日期格式作为轮转后的后缀(例如 access.log-20231101)。
|
||||
- **dateformat**:自定义日期格式(如 %Y%m%d-%H)。
|
||||
- **olddir**:将旧日志移动到指定目录。
|
||||
- **maxage**:删除超过指定天数的旧日志(例如 maxage 30)。
|
||||
- **su**:指定轮转时使用的用户/组(如 su www-data adm)。
|
||||
|
||||
### 5. 手动触发日志轮转
|
||||
|
||||
```bash
|
||||
# 测试配置(不实际执行)
|
||||
[root@wxin ~]# logrotate -d /etc/logrotate.d/nginx
|
||||
|
||||
# 强制执行轮转
|
||||
[root@wxin ~]# logrotate -vf /etc/logrotate.d/nginx
|
||||
```
|
||||
|
Loading…
x
Reference in New Issue
Block a user