温馨提示×

Debian Stream8如何进行系统监控

小樊
40
2025-11-27 14:08:01
栏目: 智能运维

Debian Stream 8 系统监控实操指南

一 快速排障与内置工具

  • 资源总览与进程:使用 top(按 Shift+M 按内存排序)、更友好的 htop(需安装)。
  • 负载与虚拟内存:uptime 查看系统负载;vmstat 1 观察进程、内存、swap、IO、CPU 等。
  • 磁盘与 I/O:df -h 查看磁盘空间;iostat -x 1(需安装 sysstat)查看磁盘详细 I/O。
  • 网络与连接:ss -tulnpnetstat -tulnp 查看监听端口与连接。
  • 内存与缓存:free -h 查看内存与缓存使用。
  • 服务状态与日志:systemctl status nginx/mysql/php-fpm 检查服务;journalctl -u 服务名 查看服务日志,journalctl -xe 查看系统级日志。
    以上命令适合日常巡检与临时定位问题,安装命令示例:sudo apt install htop sysstat。

二 持续监控与可视化

  • 轻量实时监控:
    • glances(sudo apt install glances):命令行全览,支持导出到 Web/API。
    • netdata(sudo apt install netdata):开箱即用的实时仪表盘,默认访问 http://服务器IP:19999
    • nmon(sudo apt install nmon):交互式资源监控,适合现场排障。
  • 进程与服务守护:
    • Monit(sudo apt install monit):监控进程/文件/目录/设备,异常可自动重启,配置路径 /etc/monit/monitrc
  • 企业级与可观测平台:
    • Nagios/Zabbix:集中监控主机、服务、网络,适合多机与告警体系。
    • Prometheus + Grafana:时序数据采集与可视化,适合长期趋势与容量规划。
      以上工具覆盖从轻量到企业级的不同场景,安装与访问方式见示例。

三 LNMP 组件监控要点

  • 服务可用性:
    • Nginx:systemctl status nginx;日志 journalctl -u nginx。
    • MySQL/MariaDB:systemctl status mysql;日志 journalctl -u mysql。
    • PHP-FPM:systemctl status php-fpm;日志 journalctl -u php-fpm。
  • 资源与连接:
    • 连接与端口:ss -tulnp | egrep ‘:(80|443|3306|9000)’。
    • 请求与错误:tail -f /var/log/nginx/*.log | egrep ’ 50[0-9] '。
    • 数据库负载:mysqladmin status/processlist(需凭据或权限)。
  • 可视化与告警:
    • 单机:netdata/glances 观察 Nginx、MySQL、PHP-FPM 指标。
    • 集群:Prometheus 抓取各组件指标,Grafana 展示与告警。
      以上步骤覆盖 LNMP 的核心监控面,从服务状态到日志与连接数,再到可视化。

四 日志分析与长期留存

  • systemd 日志:
    • 全局:journalctl;按服务:journalctl -u 服务名;时间范围:journalctl --since “2025-11-27 00:00:00” --until “2025-11-27 12:00:00”;实时跟踪:journalctl -u 服务名 -f。
  • 传统日志:
    • 关键字检索:grep -i “error” /var/log/syslog;按时间查看:sed -n ‘/Nov 27 10:00/,/Nov 27 11:00/p’ /var/log/syslog。
  • 集中化与可视化:
    • ELK Stack(Elasticsearch, Logstash, Kibana)Graylog 搭建日志平台,实现检索、分析与告警。
      以上方法便于快速定位错误并做长期留存与审计。

五 一键巡检脚本示例

  • 用途:快速输出关键指标与异常线索,便于排障与交接。
  • 使用方法:保存为 check.sh,chmod +x check.sh,执行 ./check.sh。
#!/usr/bin/env bash
echo "=== $(date) ==="
echo "Uptime / Load: $(uptime)"
echo "CPU/内存/交换: $(free -h | awk '/Mem/{printf "Mem: %s/%s(%.0f%%)", $3,$2,$3*100/$2} /Swap/{printf " Swap: %s/%s", $3,$2}')"
echo "磁盘空间: $(df -h | awk '$NF=="/"{printf "/: %s used (%s free)", $5, $4}')"
echo "I/O负载: $(vmstat 1 2 | tail -1 | awk '{printf "r=%s b=%s si=%s so=%s", $1,$2,$7,$8}')"
echo "网络监听: $(ss -tulnp | head -n 10 | column -t)"
echo "Nginx状态: $(systemctl is-active nginx 2>/dev/null || echo "inactive")"
echo "MySQL状态: $(systemctl is-active mysql 2>/dev/null || echo "inactive")"
echo "PHP-FPM状态: $(systemctl is-active php-fpm 2>/dev/null || echo "inactive")"
echo "最近错误日志(/var/log/syslog):"
grep -i "error" /var/log/syslog 2>/dev/null | tail -5 || echo "无访问权限或无错误"

该脚本聚合了 uptime、free、df、vmstat、ss 与 systemctl 等核心命令,适合作为日常巡检基线。

0