Linux 系统监控 的完整指南

在这里插入图片描述


以下是 Linux 系统监控 的完整指南,涵盖资源监控、日志分析、性能调优及自动化实践,适用于服务器运维和云原生场景!



一、核心监控指标

1. 资源使用监控

指标监控工具典型阈值
CPU 使用率top, htop, Prometheus>70%(持续5分钟报警)
内存使用率free -m, vmstat>80%(可用水内存 <10%)
磁盘 I/Oiostat, 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)。


九、工具链推荐

  1. 监控:Prometheus + Grafana、Datadog、New Relic。
  2. 日志:ELK Stack、Graylog、Fluentd。
  3. 安全:Auditd、Fail2Ban、Osquery。
  4. 自动化:Ansible(配置管理)、Terraform(基础设施即代码)。

通过以上指南,你可以构建一个全面、高效的 Linux 监控体系,确保系统在高负载下的稳定性与性能!如果有具体需求(如容器日志聚合),欢迎进一步讨论。 🐧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独隅

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值