1. 首页 > Linux教程 > 正文

Linux教程FG526-系统监控与日志审计体系搭建

本文档风哥主要介绍Linux系统监控与日志审计体系的搭建方法,包括监控系统的部署、日志集中管理、审计系统配置等内容,学习交流加群风哥微信: itpux-com风哥教程参考Linux官方文档System administration、Security等章节,适合系统管理员和DevOps工程师在生产环境中使用。

Part01-基础概念与理论知识

1.1 系统监控的概念与重要性

系统监控是指对计算机系统的运行状态、性能指标、资源使用情况等进行实时监测和分析的过程。通过系统监控,管理员可以及时发现系统异常、性能瓶颈和潜在问题,确保系统的稳定运行。

系统监控的重要性:

  • 及时发现系统异常和故障
  • 预防性能瓶颈和系统崩溃
  • 优化系统资源使用
  • 提高系统可靠性和可用性
  • 为容量规划提供数据支持

1.2 日志审计的概念与作用

日志审计是指对系统、应用程序和用户操作的日志进行收集、分析和存储的过程。通过日志审计,管理员可以追踪系统事件、安全事件和用户行为,为故障排查、安全分析和合规审计提供依据。

1.3 常用监控与日志工具

常用的系统监控与日志工具包括:

  • 监控工具:Prometheus、Grafana、Zabbix、Nagios
  • 日志管理工具:ELK Stack(Elasticsearch、Logstash、Kibana)、Graylog
  • 审计工具:Auditd、Rsyslog
  • 系统自带工具:top、htop、vmstat、iostat、sar

风哥提示:

选择监控工具时,应根据系统规模、监控需求和团队技术栈来决定,小规模环境可以使用简单的工具,大规模环境则需要更强大的监控平台。

Part02-生产环境规划与建议

2.1 监控体系架构规划

生产环境监控体系架构规划要点:

from PG视频:www.itpux.com

# 监控体系架构层次
– 数据采集层:通过exporter采集系统、应用和服务的指标
– 数据存储层:使用时序数据库存储监控数据
– 数据可视化层:通过Grafana等工具展示监控数据
– 告警层:基于预设阈值触发告警

# 监控范围规划
– 基础设施监控:服务器CPU、内存、磁盘、网络
– 应用监控:应用性能、响应时间、错误率
– 服务监控:服务可用性、接口调用情况
– 容器监控:容器状态、资源使用
– 网络监控:网络连通性、延迟、丢包率

# 监控指标规划
– 系统指标:CPU使用率、内存使用率、磁盘使用率、网络流量
– 应用指标:请求量、响应时间、错误率、并发数
– 服务指标:服务状态、调用次数、失败次数

# 监控部署模式
– 集中式:所有监控数据集中存储和管理
– 分布式:分区域部署监控节点,统一汇总
– 混合式:结合集中式和分布式优点

2.2 日志管理策略规划

日志管理策略规划要点:

# 日志收集策略
– 集中收集:所有服务器日志集中到日志服务器
– 分类收集:按应用、服务类型分类收集
– 实时收集:实时传输日志数据

# 日志存储策略
– 存储期限:根据合规要求和业务需求设置
– 存储方式:热存储(快速访问)和冷存储(归档)
– 存储介质:SSD(热数据)和HDD(冷数据)

# 日志分析策略
– 实时分析:实时监控日志中的异常
– 离线分析:定期对日志进行深度分析
– 趋势分析:分析日志数据的趋势变化

# 日志安全策略
– 日志加密:传输和存储加密
– 访问控制:限制日志访问权限
– 完整性保护:防止日志被篡改

2.3 告警策略规划

告警策略规划要点:

  • 告警级别:紧急、严重、警告、信息
  • 告警触发条件:基于阈值、趋势、模式
  • 告警通知方式:邮件、短信、微信、电话
  • 告警处理流程:告警确认、故障定位、故障处理、告警恢复
  • 告警抑制:避免告警风暴和重复告警
风哥针对生产环境建议:建立完善的监控体系架构,确保监控覆盖所有关键系统和服务,同时制定合理的日志管理策略和告警策略,提高系统的可观测性和故障响应能力。

Part03-生产环境项目实施方案

3.1 Prometheus监控系统部署

3.1.1 安装Prometheus

# 下载Prometheus
$ wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz

# 解压
$ tar -xzf prometheus-2.45.0.linux-amd64.tar.gz
$ cd prometheus-2.45.0.linux-amd64

# 查看版本
$ ./prometheus –version

prometheus, version 2.45.0 (branch: HEAD, revision: xxxxxxx)
build user: root@xxxx
build date: 20260401-xx:xx:xx
go version: go1.20.5
platform: linux/amd64

# 配置Prometheus
$ vim prometheus.yml

# 启动Prometheus
$ ./prometheus –config.file=prometheus.yml &

# 验证启动状态
$ curl http://localhost:9090

# 配置系统服务
$ sudo vim /etc/systemd/system/prometheus.service

[Unit]
Description=Prometheus
After=network.target

[Service]
Type=simple
ExecStart=/path/to/prometheus –config.file=/path/to/prometheus.yml
Restart=always

[Install]
WantedBy=multi-user.target

# 启动服务
$ sudo systemctl daemon-reload
$ sudo systemctl start prometheus
$ sudo systemctl enable prometheus

# 查看服务状态
$ sudo systemctl status prometheus

● prometheus.service – Prometheus
Loaded: loaded (/etc/systemd/system/prometheus.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2026-04-05 10:00:00 CST; 5min ago
Main PID: 12345 (prometheus)
Tasks: 10
Memory: 50.0M
CPU: 1.2%
CGroup: /system.slice/prometheus.service
└─12345 /path/to/prometheus –config.file=/path/to/prometheus.yml

3.1.2 安装Node Exporter

# 下载Node Exporter
$ wget https://github.com/prometheus/node_exporter/releases/download/v1.6.更多视频教程www.fgedu.net.cn0/node_exporter-1.6.0.linux-amd64.tar.gz

# 解压
$ tar -xzf node_exporter-1.6.0.linux-amd64.tar.gz
$ cd node_exporter-1.6.0.linux-amd64

# 查看版本
$ ./node_exporter –version

node_exporter, version 1.6.0 (branch: HEAD, revision: xxxxxxx)
build user: root@xxxx
build date: 20260401-xx:xx:xx
go version: go1.20.5
platform: linux/amd64

# 配置系统服务
$ sudo vim /etc/systemd/system/node_exporter.service

[Unit]
Description=Node Exporter
After=network.target

[Service]
Type=simple
ExecStart=/path/to/node_exporter
Restart=always

[Install]
WantedBy=multi-user.target

# 启动服务
$ sudo systemctl daemon-reload
$ sudo systemctl start node_exporter
$ sudo systemctl enable node_exporter

# 查看服务状态
$ sudo systemctl status node_exporter

● node_exporter.service – Node Exporter
Loade更多学习教程公众号风哥教程itpux_comd: loaded (/etc/systemd/system/node_exporter.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2026-04-05 10:05:00 CST; 3min ago
Main PID: 12346 (node_exporter)
Tasks: 8
Memory: 10.0M
CPU: 0.5%
CGroup: /system.slice/node_exporter.service
└─12346 /path/to/node_exporter

# 验证Node Exporter
$ curl http://localhost:9100/metrics

# 在Prometheus中添加Node Exporter目标
$ vim prometheus.yml

scrape_configs:
– job_name: ‘node’
static_configs:
– targets: [‘localhost:9100’]

# 重启Prometheus
$ sudo systemctl restart prometheus

3.2 Grafana可视化配置

3.2.1 安装Grafana

# 添加Grafana仓库
$ sudo cat > /etc/yum.repos.d/grafana.repo << EOF [grafana] name=grafana baseurl=https://packages.grafana.com/oss/rpm enabled=1 gpgcheck=1 gpgkey=https://packages.grafana.com/gpg.key EOF # 安装Grafana $ sudo dnf install grafana -y # 启动Grafana服务 $ sudo systemctl start grafana-server $ sudo systemctl enable grafana-server # 查看服务状态 $ sudo systemctl status grafana-server ● grafana-server.service - Grafana instance Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2026-04-05 10:10:00 CST; 2min ago Main PID: 12347 (grafana-server) Tasks: 15 Memory: 100.0M CPU: 2.0% CGroup: /system.slice/grafana-server.service └─12347 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-server.pid --packaging=rpm # 访问Grafana # 浏览器打开 http://localhost:3000 # 默认用户名:admin,默认密码:admin

3.2.2 配置Prometheus数据源

# 在Grafana web界面中配置
1. 登录Grafana
2. 点击左侧菜单的”Configuration” -> “Data sources”
3. 点击”Add data source”
4. 选择”Prometheus”
5. 在”URL”字段中输入Prometheus的地址:http://localhost:9090
6. 点击”Save & Test”
7. 看到”Data source is working”表示配置成功

3.2.3 导入监控面板

# 导入Node Exporter面板
1. 点击左侧菜单的”Dashboards” -> “Import”
2. 在”Import via grafana.com”字段中输入面板ID:1860
3. 点击”Load”
4. 选择Prometheus数据源
5. 点击”Import”
6. 查看导入的面板,包含CPU、内存、磁盘、网络等监控指标

3.3 Rsyslog日志集中管理

3.3.1 配置Rsyslog服务器

# 安装Rsyslog
$ sudo dnf install rsyslog -y

# 配置Rsyslog服务器
$ sudo vim /etc/rsyslog.conf

# 启用UDP接收
module(load=”imudp”)
input(type=”imudp” port=”514″)

# 启用TCP接收
module(load=”imtcp”)
input(type=”imtcp” port=”514″)

# 配置日志存储
$template RemoteLogs, “/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log”
*.* ?RemoteLogs

# 重启Rsyslog服务
$ sudo systemctl restart rsyslog
$ sudo systemctl enable rsyslog

# 查看服务状态
$ sudo systemctl status rsyslog

● rsyslog.service – System Logging Service
Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2026-04-05 10:15:00 CST; 1min ago
Main PID: 12348 (rsyslogd)
Tasks: 4
Memory: 5.0M
CPU: 0.3%
CGroup: /system.slice/rsyslog.service
└─12348 /usr/sbin/rsyslogd -n

# 开放防火墙端口
$ sudo firewall-cmd –add-port=514/udp –permanent
$ sudo firewall-cmd –add-port=514/tcp –permanent
$ sudo firewall-cmd –reload

3.3.2 配置Rsyslog客户端

# 安装Rsyslog
$ sudo dnf install rsyslog -y

# 配置Rsyslog客户端
$ sudo vim /etc/rsyslog.conf

# 添加远程日志服务器
*.* @192.168.1.100:514

# 重启Rsyslog服务
$ sudo systemctl restart rsyslog
$ sudo systemctl enable rsyslog

# 测试日志发送
$ logger “Test log from client”

# 在服务器端查看日志
$ ls -la /var/log/remote/
$ cat /var/log/remote/client-hostname/logger.log

Apr 5 10:20:00 client-hostname root: Test log from client

3.4 Auditd审计系统配置

3.4.1 安装并配置Auditd

# 安装Auditd
$ sudo dnf install audit -y

# 启动Auditd服务
$ sudo systemctl start auditd
$ sudo systemctl enable auditd

# 查看服务状态
$ sudo systemctl status auditd

● auditd.service – Security Auditing Service
Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2026-04-05 10:25:00 CST; 30s ago
Main PID: 12349 (auditd)
Tasks: 5
Memory: 2.0M
CPU: 0.1%
CGroup: /system.slice/auditd.service
└─12349 /sbin/auditd

# 配置Auditd规则
$ sudo vim /etc/audit/rules.d/audit.rules

# 监控重要文件
-w /etc/passwd -p wa -k passwd_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/sudoers -p wa -k sudoers_changes

# 监控系统调用
-a always,exit -F arch=b64 -S execve -k command_execution
-a always,exit -F arch=b32 -S execve -k command_execution

# 监控登录行为
-w /var/log/lastlog -p wa -k login_logs
-w /var/run/utmp -p wa -k utmp
-w /var/log/wtmp -p wa -k wtmp

# 重启Auditd服务
$ sudo systemctl restart auditd

# 查看审计日志
$ sudo ausearch -k passwd_changes

# 实时监控审计事件
$ sudo aureport -au

风哥提示:

Auditd可以监控系统中的敏感操作,对于安全审计非常重要。建议根据实际需求配置合理的审计规则,避免产生过多的审计日志。

Part04-生产案例与实战讲解

4.1 服务器监控实战案例

4.1.1 配置服务器监控告警

# 在Prometheus中配置告警规则
$ vim /path/to/prometheus/rules/server_alerts.yml

groups:
– name: server_alerts
rules:
– alert: HighCPUUsage
expr: (100 – (avg by(instance) (irate(node_cpu_seconds_total{mode=”idle”}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: “High CPU Usage on {{ $labels.instance }}”
description: “CPU usage is above 80% for 5 minutes”

– alert: HighMemoryUsage
expr: (1 – (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 > 85
for: 5m
labels:
severity: warning
annotations:
summary: “High Memory Usage on {{ $labels.instance }}”
description: “Memory usage is above 85% for 5 minutes”

– alert: HighDiskUsage
expr: (1 – (node_filesystem_avail_bytes{mountpoint=”/”} / node_filesystem_size_bytes{mountpoint=”/”})) * 100 > 90
for: 5m
labels:
severity: warning
annotations:
summary: “High Disk Usage on {{ $labels.instance }}”
description: “Disk usage is above 90% for 5 minutes”

# 在prometheus.yml中引用告警规则
$ vim /path/to/prometheus/prometheus.yml

rule_files:
– “rules/server_alerts.yml”

# 重启Prometheus
$ sudo systemctl restart prometheus

# 在Grafana中配置告警通知
1. 点击左侧菜单的”Alerting” -> “Notification channels”
2. 点击”Add channel”
3. 配置通知方式(邮件、Slack等)
4. 点击”Save”

4.1.2 服务器监控面板配置

# 导入服务器监控面板
1. 点击左侧菜单的”Dashboards” -> “Import”
2. 输入面板ID:1860(Node Exporter Full)
3. 选择Prometheus数据源
4. 点击”Import”
5. 查看服务器监控面板,包含:
– CPU使用率和负载
– 内存使用情况
– 磁盘使用率和I/O
– 网络流量
– 系统运行时间

4.2 容器监控实战案例

4.2.1 安装cAdvisor

# 运行cAdvisor容器
$ docker run \
–volume=/:/rootfs:ro \
–volume=/var/run:/var/run:ro \
–volume=/sys:/sys:ro \
–volume=/var/lib/docker/:/var/lib/docker:ro \
–publish=8080:8080 \
–detach=true \
–name=cadvisor \
gcr.io/cadvisor/cadvisor:v0.47.0

# 查看cAdvisor状态
$ docker ps | grep cadvisor

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
xxxxxxxxxxxx gcr.io/cadvisor/cadvisor:v0.47.0 “/usr/bin/cadvisor -logtostderr” 2 minutes ago Up 2 minutes 0.0.0.0:8080->8080/tcp cadvisor

# 访问cAdvisor web界面
# 浏览器打开 http://localhost:8080

4.2.2 配置Prometheus监控容器

# 在prometheus.yml中添加cAdvisor目标
$ vim /path/to/prometheus/prometheus.yml

scrape_configs:
– job_name: ‘cadvisor’
static_configs:
– targets: [‘localhost:8080’]

# 重启Prometheus
$ sudo systemctl restart prometheus

# 导入容器监控面板
1. 点击左侧菜单的”Dashboards” -> “Import”
2. 输入面板ID:14282(cAdvisor Exporter)
3. 选择Prometheus数据源
4. 点击”Import”
5. 查看容器监控面板,包含:
– 容器CPU使用率
– 容器内存使用情况
– 容器网络流量
– 容器磁盘I/O

4.3 日志分析与故障排查案例

4.3.1 日志分析工具配置

# 安装ELK Stack(Elasticsearch、Logstash、Kibana)

# 安装Elasticsearch
$ sudo dnf install elasticsearch -y
$ sudo systemctl start elasticsearch
$ sudo systemctl enable elasticsearch

# 安装Logstash
$ sudo dnf install logstash -y
$ sudo systemctl start logstash
$ sudo systemctl enable logstash

# 安装Kibana
$ sudo dnf install kibana -y
$ sudo systemctl start kibana
$ sudo systemctl enable kibana

# 配置Logstash接收rsyslog日志
$ sudo vim /etc/logstash/conf.d/rsyslog.conf

input {
syslog {
port => 514
type => syslog
}
}

filter {
if [type] == “syslog” {
grok {
match => { “message” => “%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}” }
add_field => [ “received_at”, “%{@timestamp}” ]
add_field => [ “received_from”, “%{host}” ]
}
date {
match => [ “syslog_timestamp”, “MMM d HH:mm:ss”, “MMM dd HH:mm:ss” ]
}
}
}

output {
elasticsearch {
hosts => [“localhost:9200”]
index => “syslog-%{+YYYY.MM.dd}”
}
}

# 重启Logstash
$ sudo systemctl restart logstash

# 配置rsyslog发送日志到Logstash
$ sudo vim /etc/rsyslog.conf

*.* @192.168.1.100:514

# 重启rsyslog
$ sudo systemctl restart rsyslog

# 访问Kibana
# 浏览器打开 http://localhost:5601
# 创建索引模式:syslog-*
# 查看日志数据

4.3.2 故障排查实战

# 场景:服务器CPU使用率突然升高

# 1. 通过Prometheus查看CPU使用率
# 访问Prometheus web界面,查询:
100 – (avg by(instance) (irate(node_cpu_seconds_total{mode=”idle”}[5m])) * 100

# 2. 通过Grafana查看详细CPU使用情况
# 打开服务器监控面板,查看CPU使用率图表

# 3. 登录服务器查看进程
$ top

top – 10:30:00 up 1 day, 2:30, 2 users, load average: 4.50, 3.80, 3.20
Tasks: 150 total, 1 running, 149 sleeping, 0 stopped, 0 zombie
%Cpu(s): 85.0 us, 10.0 sy, 0.0 ni, 5.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8192000 total, 1024000 free, 5120000 used, 2048000 buff/cache
KiB Swap: 4096000 total, 3072000 free, 1024000 used. 1536000 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12345 fgedu 20 0 2097152 1048576 16384 R 80.0 12.8 0:30.00 java

# 4. 查看进程详情
$ ps aux | grep java

fgedu 12345 80.0 12.8 2097152 1048576 ? R 10:29 0:30 java -jar application.jar

# 5. 查看应用日志
$ tail -f /var/log/application.log

2026-04-05 10:29:00 INFO Application started
2026-04-05 10:29:30 ERROR OutOfMemoryError: Java heap space
2026-04-05 10:30:00 ERROR GC overhead limit exceeded

# 6. 分析问题原因:Java应用内存不足,导致频繁GC,CPU使用率升高

# 7. 解决方案:增加Java堆内存
$ java -Xmx2g -Xms1g -jar application.jar

# 8. 验证解决方案
$ top

top – 10:35:00 up 1 day, 2:35, 2 users, load average: 1.20, 2.50, 3.00
Tasks: 150 total, 1 running, 149 sleeping, 0 stopped, 0 zombie
%Cpu(s): 10.0 us, 5.0 sy, 0.0 ni, 85.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8192000 total, 512000 free, 5632000 used, 2048000 buff/cache
KiB Swap: 4096000 total, 3072000 free, 1024000 used. 1024000 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12345 fgedu 20 0 2097152 1048576 16384 S 10.0 12.8 0:35.00 java

风哥针对生产环境建议:建立完善的日志分析体系,结合监控系统和日志管理工具,提高故障排查效率。定期分析系统日志,发现潜在问题并及时解决。from Linux:www.itpux.com

Part05-风哥经验总结与分享

5.1 系统监控最佳实践

系统监控最佳实践:

  • 全面覆盖:监控所有关键系统和服务,包括基础设施、应用和网络
  • 合理阈值:根据系统特点设置合理的告警阈值,避免过多的误告警
  • 分层监控:建立从基础设施到应用的分层监控体系
  • 自动化响应:对于常见问题实现自动化响应和处理
  • 定期 review:定期 review 监控指标和告警策略,根据实际情况调整
  • 容量规划:基于监控数据进行容量规划,确保系统资源充足

5.2 日志审计最佳实践

日志审计最佳实践:

  • 集中管理:将所有服务器的日志集中管理,便于分析和查询
  • 分类存储:按应用、服务类型分类存储日志,提高查询效率
  • 合理保留:根据合规要求和业务需求设置日志保留期限
  • 安全存储:确保日志存储安全,防止被篡改或删除
  • 实时分析:实时分析日志,及时发现异常和安全事件
  • 自动化处理:对于常见日志模式实现自动化处理和告警

5.3 常见问题排查技巧

常见问题排查技巧:

  • 系统性能问题:使用top、vmstat、iostat等工具分析系统资源使用情况
  • 网络问题:使用ping、traceroute、netstat等工具分析网络连通性和性能
  • 应用问题:查看应用日志,使用strace、lsof等工具分析应用行为
  • 存储问题:使用df、du、iostat等工具分析存储使用情况和I/O性能
  • 安全问题:查看安全日志,使用auditd、fail2ban等工具分析安全事件
  • 容器问题:使用docker logs、docker stats等工具分析容器状态和日志

风哥提示:

系统监控与日志审计是保障系统稳定运行的重要手段,建议投入足够的资源建立完善的监控体系,提高系统的可观测性和故障响应能力。

持续改进:监控和日志审计体系需要不断优化和完善,根据业务需求和系统变化及时调整监控策略和日志管理方案,确保系统的稳定运行和安全合规。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息