乐闻世界logo
搜索文章和话题

Linux 系统监控和告警的常用工具、配置方法和最佳实践有哪些?

2月17日 23:35

Linux 系统监控和告警是保障系统稳定运行的重要手段,需要掌握各种监控工具和告警机制。

系统监控工具:

  • CPU 监控:
    • top:实时查看 CPU 使用率和进程信息
    • htop:交互式进程查看器,功能更强大
    • mpstat:显示各个 CPU 核心的使用情况
    • sar:系统活动报告,可记录历史数据
    • vmstat:报告虚拟内存统计信息
  • 内存监控:
    • free:显示内存使用情况
    • vmstat:查看内存交换、缓存等信息
    • ps aux:查看进程的内存占用
    • pmap:查看进程的内存映射
  • 磁盘监控:
    • df:查看磁盘空间使用情况
    • du:查看目录或文件的大小
    • iostat:查看磁盘 I/O 统计信息
    • iotop:实时查看磁盘 I/O 使用情况
  • 网络监控:
    • ifconfig/ip:查看网络接口配置
    • netstat/ss:查看网络连接和端口监听
    • nethogs:按进程查看网络带宽使用
    • tcpdump:抓包分析网络流量
    • iftop:实时显示网络带宽使用
  • 进程监控:
    • ps:查看进程状态
    • top/htop:实时监控进程
    • pgrep:查找进程 ID
    • pidstat:监控进程资源使用

性能分析工具:

  • strace:跟踪系统调用和信号
  • ltrace:跟踪库函数调用
  • perf:性能分析工具
  • sysdig:系统级监控和故障排查
  • eBPF:扩展伯克利数据包过滤器

日志监控:

  • /var/log/messages:系统主日志
  • /var/log/syslog:系统日志(Debian/Ubuntu)
  • /var/log/auth.log:认证日志
  • /var/log/secure:安全日志(CentOS/RHEL)
  • journalctl:systemd 日志查看工具
  • logrotate:日志轮转工具

监控告警系统:

  • Nagios:企业级监控系统
  • Zabbix:分布式监控系统
  • Prometheus:时序数据库和监控系统
  • Grafana:数据可视化平台
  • ELK Stack(Elasticsearch、Logstash、Kibana):日志分析和可视化
  • Datadog:云监控平台
  • New Relic:应用性能监控

Prometheus 监控:

  • 数据采集:使用 Exporter 采集指标
  • 常用 Exporter:
    • node_exporter:系统指标
    • mysqld_exporter:MySQL 指标
    • nginx_exporter:Nginx 指标
    • redis_exporter:Redis 指标
  • 配置文件:/etc/prometheus/prometheus.yml
  • 告警规则:使用 PromQL 定义告警条件
  • 告警管理:Alertmanager 处理告警通知

Grafana 可视化:

  • 数据源配置:支持 Prometheus、Elasticsearch 等
  • 仪表板:创建自定义监控面板
  • 告警:基于可视化图表设置告警
  • 模板:使用变量创建动态仪表板

告警通知方式:

  • 邮件:SMTP 邮件通知
  • 短信:短信网关
  • 即时通讯:Slack、钉钉、企业微信
  • 电话:语音通知
  • Webhook:自定义 Web 回调

告警策略:

  • 告警级别:Critical、Warning、Info
  • 告警阈值:根据业务需求设置合理阈值
  • 告警抑制:避免告警风暴
  • 告警聚合:相关告警合并通知
  • 告警升级:长时间未处理自动升级

自定义监控脚本:

  • 编写 Shell/Python 脚本采集指标
  • 使用 cron 定时执行
  • 输出格式:支持 Nagios、Prometheus 等格式
  • 示例:
    bash
    #!/bin/bash # 检查磁盘使用率 DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//') if [ $DISK_USAGE -gt 80 ]; then echo "CRITICAL: Disk usage is ${DISK_USAGE}%" exit 2 fi echo "OK: Disk usage is ${DISK_USAGE}%" exit 0

监控最佳实践:

  • 全面监控:覆盖 CPU、内存、磁盘、网络等关键指标
  • 合理采样:避免监控数据量过大
  • 告警分级:区分紧急和一般告警
  • 告警收敛:避免重复告警
  • 定期维护:清理过期数据,更新监控规则
  • 文档记录:维护监控配置文档
  • 测试验证:定期测试告警机制

常见监控指标:

  • 系统指标:CPU 使用率、内存使用率、磁盘使用率、网络流量
  • 应用指标:请求数、响应时间、错误率、并发数
  • 业务指标:订单量、用户数、交易额

故障排查流程:

  1. 确认告警信息
  2. 查看系统监控数据
  3. 检查相关服务状态
  4. 分析日志文件
  5. 定位问题根因
  6. 实施修复措施
  7. 验证修复效果
  8. 总结经验教训
标签:Linux