以下是 Linux 系统监控 的完整指南,涵盖资源监控、日志分析、性能调优及自动化实践,适用于服务器运维和云原生场景!
Linux 系统监控 的完整指南
一、核心监控指标
1. 资源使用监控
指标 | 监控工具 | 典型阈值 |
---|---|---|
CPU 使用率 | top , htop , Prometheus | >70%(持续5分钟报警) |
内存使用率 | free -m , vmstat | >80%(可用水内存 <10%) |
磁盘 I/O | iostat , iotop | >50%(读写延迟 >20ms) |
网络流量 | iftop , nload | >1Gbps(持续10分钟) |
进程数 | ps aux , systemd-cgroups | >500(异常进程数) |
二、实时监控工具
1. 终端命令行工具
CPU/内存监控
# 实时查看 CPU 和内存(1秒刷新)
top -o %CPU,%MEM
# 查看详细进程信息(按内存排序)
ps aux --sort -rss
磁盘 I/O 监控
# 查看磁盘读写(按设备排序)
iostat -dx 2 # 每2秒刷新
网络流量监控
# 查看实时网络流量(按端口排序)
iftop -i eth0 -P -n
2. 图形化工具
Grafana + Prometheus
# Prometheus 配置示例(监控 Linux 节点)
scrape_configs:
- job_name: linux
static_configs:
- targets: ['localhost']
labels:
instance: linux-node
# 安装 Prometheus 和 Grafana
sudo apt install prometheus grafana
Glances
# 安装 Glances(多终端支持)
sudo apt install glances
sudo systemctl start glancesd
三、日志监控与分析
1. 日志收集
ELK Stack 配置
# Logstash 配置文件(收集 syslog)
input {
file {
path => "/var/log/syslog"
type => syslog
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "linux-logs-%{+YYYY.MM.dd}"
}
}
Fluentd + Elasticsearch
# Fluentd 配置(监控 Docker 容器日志)
<source>
@type tail
path /var/log/containers/*.log
pos_file /var/log/fluentd-containers.pos
</source>
<match >
@type elasticsearch
host elasticsearch-host
port 9200
</match>
2. 关键日志分析
• 安全日志:/var/log/auth.log
(登录尝试、SSH 记录)。
• 系统日志:/var/log/syslog
(内核消息、服务错误)。
• 应用日志:/var/log/nginx/access.log
(Web 请求统计)。
四、性能调优与报警
1. 资源瓶颈定位
CPU 高负载
# 查找高 CPU 占用进程
ps aux --sort -cpu | head -n 10
内存泄漏
# 检查内存分配(按进程排序)
ps aux --sort -rss
磁盘瓶颈
# 查找高磁盘 I/O 进程
iotop -o IO%
2. 自动报警配置
Prometheus + AlertManager
# Prometheus 规则(CPU 超过 70%)
- alert: HighCPU
expr: rate(node_cpu_seconds_total{mode="idle"}[5m]) < 0.3
for: 10m
labels:
team: backend
Email/Slack 报警
# 配置 AlertManager Webhook
apiVersion: alertmanager.org/v1
kind: Alertmanager
spec:
receivers:
- name: slack
slackAPIURL: 'https://hooks.slack.com/services/T0000000/B0000000/B0000000...'
五、高级监控场景
1. 容器化环境监控
Kubernetes 集群监控
# Prometheus 配置(监控 Pod 资源)
scrape_configs:
- job_name: kubernetes-pods
kubernetes_sd_configs:
- role: pod
cAdvisor(容器内监控)
# 安装 cAdvisor
docker run -d \
--volume=/:ro \
--publish=8080:8080 \
google/cadvisor
2. 安全监控
文件完整性监控
# 使用 AIDE(Advanced Intrusion Detection Environment)
sudo aide64 --check
异常登录检测
# 使用 fail2ban 阻止暴力破解
sudo fail2ban-client set sshd banip 10.0.0.1/24
六、自动化运维
1. 定时任务(Cron)
# 每日检查磁盘使用情况并清理日志
0 2 * * * /usr/bin/logrotate -vf /etc/logrotate.d/nginx
2. Systemd 服务管理
# 创建监控服务(每5分钟运行)
sudo nano /etc/systemd/system/monitor.service
# 内容
[Unit]
Description=System Monitor
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/monitor.sh
Restart=always
RestartSec=5m
[Install]
WantedBy=multi-user.target
七、实战案例:Web 服务器监控
1. 监控指标
• CPU:平均使用率 <60%。
• 内存:可用内存 >2GB。
• 连接数:HTTP 连接数 <1000。
2. 工具配置
# Nginx 日志分析(Grafana 可视化)
index: nginx-access-*.*.*
3. 报警规则
# Prometheus 规则(HTTP 请求失败率 >5%)
- alert: HighErrorRate
expr: sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total)) > 0.05
for: 10m
八、常见问题与解决方案
1. CPU 使用率过高
• 优化策略:
• 编译优化(使用 -O3
)。
• 使用 nice
降低进程优先级。
• 迁移到更高效的编程语言(如 Go 替代 Python)。
2. 内存泄漏
• 排查工具:
• valgrind
(内存泄漏检测)。
• pmap
(查看进程内存映射)。
3. 磁盘 I/O 慢
• 解决方案:
• 使用 SSD 替代 HDD。
• 调整文件系统(如 XFS 优化)。
• 异步 I/O 工具(如 aio
)。
九、工具链推荐
- 监控:Prometheus + Grafana、Datadog、New Relic。
- 日志:ELK Stack、Graylog、Fluentd。
- 安全:Auditd、Fail2Ban、Osquery。
- 自动化:Ansible(配置管理)、Terraform(基础设施即代码)。
通过以上指南,你可以构建一个全面、高效的 Linux 监控体系,确保系统在高负载下的稳定性与性能!如果有具体需求(如容器日志聚合),欢迎进一步讨论。 🐧