Linux监控工具完全指南:从系统监控到日志分析的必备工具

监控是保障系统稳定运行的关键。本文将介绍Linux环境下常用的监控工具和最佳实践。

1. 系统性能监控

top/htop

# top - 实时监控
top

# htop - 增强版(需安装)
htop

# 关键指标
# %CPU - CPU使用率
# %MEM - 内存使用率
# TIME+ - CPU时间
# COMMAND - 进程名

vmstat

# 虚拟内存统计
vmstat 2 10

# 输出说明
# r: 运行队列长度
# b: 阻塞进程数
# swpd: 交换内存使用
# free: 空闲内存
# buff: 缓冲区内存
# cache: 缓存内存
# si/so: 交换入/出速率

iostat

# 磁盘IO统计
iostat -x 2

# 关键指标
# %util: 磁盘使用率
# await: IO等待时间
# r/s, w/s: 读写速率

free

# 内存使用
free -h

# 输出说明
# total: 总内存
# used: 已使用
# free: 空闲
# shared: 共享内存
# buff/cache: 缓冲/缓存
# available: 可用内存

2. 网络监控

iftop

# 实时网络流量
sudo iftop -i eth0

# 按端口监控
sudo iftop -F 192.168.1.0/24

nethogs

# 按进程监控网络
sudo nethogs

ss

# Socket统计
ss -tlnp
ss -s

nload

# 网络带宽监控
nload

3. 进程监控

ps

# 查看进程
ps aux
ps -ef | grep nginx

pidstat

# 进程统计
pidstat 2
pidstat -u 2    # CPU
pidstat -r 2    # 内存
pidstat -d 2    # IO

strace

# 跟踪系统调用
strace -p 1234
strace -e trace=file ls

4. 日志分析

grep/awk/sed

# 搜索错误
grep "ERROR" /var/log/syslog

# 统计IP访问
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr

# 提取时间
grep "2025-01-15" /var/log/syslog | wc -l

日志轮转

# logrotate配置
sudo nano /etc/logrotate.d/nginx

/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        if [ -f /var/run/nginx.pid ]; then
            kill -USR1 `cat /var/run/nginx.pid`
        fi
    endscript
}

日志聚合

# ELK Stack
# Elasticsearch + Logstash + Kibana

# LAMP Stack
# Loki + Promtail + Grafana

5. 监控系统

Prometheus + Grafana

# Prometheus配置
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']

# Node Exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.0/node_exporter-1.6.0.linux-amd64.tar.gz
tar xvfz node_exporter-*.tar.gz
./node_exporter

Zabbix

# 安装Zabbix
# 1. 安装Zabbix Server
# 2. 安装Zabbix Agent
# 3. Web界面配置

# 监控项
- CPU使用率
- 内存使用率
- 磁盘使用率
- 网络流量
- 进程状态

Nagios

# 安装Nagios
# 1. 安装核心
# 2. 安装插件
# 3. 配置监控主机

# 检查命令
define command{
    command_name check_ssh
    command_line $USER1$/check_ssh $HOSTADDRESS$
}

6. 告警配置

邮件告警

# 配置mailx
sudo nano /etc/mail.rc

set [email protected]
set smtp=smtp://smtp.example.com:587
set smtp-auth=login
set [email protected]
set smtp-auth-password=password

钉钉/企业微信

# 钉钉机器人
curl 'https://oapi.dingtalk.com/robot/send?access_token=TOKEN' \
    -H 'Content-Type: application/json' \
    -d '{"msgtype": "text", "text": {"content": "告警信息"}}'

Prometheus告警

# alertmanager配置
route:
  group_by: ['alertname']
  receiver: 'webhook'

receivers:
  - name: 'webhook'
    webhook_configs:
      - url: 'http://alert-webhook:5000/'

7. 性能分析

perf

# CPU性能分析
perf top
perf record -g ./program
perf report

systemtap

# 系统跟踪
stap -e 'probe process("/usr/bin/python3").function("main") { printf("Python started\n") }'

8. 容器监控

Docker监控

# 查看容器资源
docker stats

# cAdvisor
docker run \
    --volume=/:/rootfs:ro \
    --volume=/var/run:/var/run:ro \
    --publish=8080:8080 \
    google/cadvisor

Kubernetes监控

# 部署Prometheus Stack
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/kube-prometheus-stack

9. 日志管理

journalctl

# 查看系统日志
journalctl -u nginx
journalctl -f
journalctl --since "2025-01-15" --until "2025-01-16"

10. 监控检查清单

  • [ ] CPU使用率监控
  • [ ] 内存使用率监控
  • [ ] 磁盘空间监控
  • [ ] 网络流量监控
  • [ ] 进程存活监控
  • [ ] 日志错误监控
  • [ ] 告警通知配置
  • [ ] 历史数据保留
  • [ ] 监控面板可视化
  • [ ] 定期性能分析

总结

监控体系是运维工作的基础。关键要点:

  • 选择合适的工具:根据场景选择轻量或企业级方案
  • 定义关键指标:CPU、内存、磁盘、网络
  • 及时告警:异常情况第一时间通知
  • 历史数据:保留数据用于趋势分析
📖 进阶工具:学习使用eBPF进行高级性能分析,使用Pixie进行分布式追踪,以及OpenTelemetry统一可观测性标准。

发表评论