常用运维工具箱:系统监控、日志分析、网络诊断

常用运维工具箱 本文整理日常运维工作中的常用工具和脚本,涵盖系统监控、日志分析、网络诊断、安全审计等场景,提升故障排查效率。 系统监控工具 htop - 交互式进程查看器 # 安装 apt install htop # 使用 htop # 快捷键 # F1 - 帮助 # F3 - 搜索进程 #

常用运维工具箱

本文整理日常运维工作中的常用工具和脚本,涵盖系统监控、日志分析、网络诊断、安全审计等场景,提升故障排查效率。

系统监控工具

htop - 交互式进程查看器

# 安装
apt install htop

# 使用
htop

# 快捷键
# F1 - 帮助
# F3 - 搜索进程
# F4 - 过滤进程
# F5 - 树形显示
# F9 - 杀死进程
# F10 - 退出

glances - 全能系统监控

# 安装
pip install glances

# 基本使用
glances

# Web 模式
glances -w

# 导出到 InfluxDB
glances --export influxdb

dstat - 系统资源统计

# 实时监控
dstat -cdngy 1

# 输出到 CSV
dstat --output report.csv 1 10

日志分析工具

journalctl - systemd 日志

# 查看所有日志
journalctl

# 查看服务日志
journalctl -u nginx

# 实时跟踪
journalctl -u myapp -f

# 查看特定时间段
journalctl --since "2024-01-01 10:00:00" --until "2024-01-01 11:00:00"

# 按优先级过滤
journalctl -p err
# 安装
apt install lnav

# 查看多个日志文件
lnav /var/log/nginx/access.log /var/log/nginx/error.log

# 自动解压
lnav /var/log/nginx/access.log.*.gz

网络诊断工具

tcpdump - 网络抓包

# 抓取所有流量
tcpdump -i eth0

# 抓取特定端口
tcpdump -i eth0 port 80

# 抓取特定主机
tcpdump -i eth0 host 192.168.1.1

# 保存到文件
tcpdump -i eth0 -w capture.pcap

# 读取 pcap 文件
tcpdump -r capture.pcap

mtr - 网络路径分析

# 实时跟踪路由
mtr google.com

# 报告模式
mtr -r -c 100 google.com

# 显示 IP 地址
mtr -n google.com

nmap - 网络扫描

# 主机发现
nmap -sn 192.168.1.0/24

# 端口扫描
nmap -p 1-65535 192.168.1.1

# 服务版本检测
nmap -sV 192.168.1.1

# 操作系统检测
nmap -O 192.168.1.1

# 全面扫描
nmap -A 192.168.1.1

iperf3 - 网络带宽测试

# 服务端
iperf3 -s

# 客户端测试
iperf3 -c server_ip -t 60

# UDP 测试
iperf3 -c server_ip -u -b 1000M

磁盘与存储工具

ncdu - 磁盘使用分析

# 安装
apt install ncdu

# 分析当前目录
ncdu

# 分析指定目录
ncdu /var/log

# 导出报告
ncdu -o report.json /home

iotop - IO 监控

# 实时监控磁盘 IO
iotop

# 只显示有 IO 的进程
iotop -o

# 非交互模式
iotop -b -n 5

安全审计工具

lynis - 安全扫描

# 安装
apt install lynis

# 执行安全审计
lynis audit system

# 查看报告
cat /var/log/lynis-report.dat

rkhunter - Rootkit 检测

# 安装
apt install rkhunter

# 更新数据库
rkhunter --update

# 执行检测
rkhunter --check

chkrootkit - Rootkit 检测

# 安装
apt install chkrootkit

# 执行检测
chkrootkit

实用脚本

系统信息收集

cat > /usr/local/bin/sysinfo.sh <<'EOF'
#!/bin/bash

echo "=== 系统信息 ==="
echo "主机名: $(hostname)"
echo "操作系统: $(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)"
echo "内核版本: $(uname -r)"
echo "架构: $(uname -m)"

echo -e "\n=== CPU 信息 ==="
nproc
cat /proc/cpuinfo | grep "model name" | head -1

echo -e "\n=== 内存信息 ==="
free -h

echo -e "\n=== 磁盘信息 ==="
df -h

echo -e "\n=== 网络信息 ==="
ip addr show | grep inet
echo "公网 IP: $(curl -s ifconfig.me)"

echo -e "\n=== 运行时间 ==="
uptime
EOF

chmod +x /usr/local/bin/sysinfo.sh

日志清理脚本

cat > /usr/local/bin/clean-logs.sh <<'EOF'
#!/bin/bash

# 保留天数
KEEP_DAYS=30

# 清理日志目录
LOG_DIRS="/var/log /home/*/logs"

for dir in $LOG_DIRS; do
    if [ -d "$dir" ]; then
        find "$dir" -type f -name "*.log" -mtime +$KEEP_DAYS -delete
        find "$dir" -type f -name "*.log.*" -mtime +$KEEP_DAYS -delete
    fi
done

# 清理 journal
journalctl --vacuum-time=${KEEP_DAYS}d

echo "日志清理完成"
EOF

chmod +x /usr/local/bin/clean-logs.sh

Docker 清理脚本

cat > /usr/local/bin/docker-cleanup.sh <<'EOF'
#!/bin/bash

# 停止的容器
docker container prune -f

# 未使用的镜像
docker image prune -a -f

# 未使用的卷
docker volume prune -f

# 未使用的网络
docker network prune -f

# 构建缓存
docker builder prune -f

echo "Docker 清理完成"
EOF

chmod +x /usr/local/bin/docker-cleanup.sh

性能分析工具

perf - Linux 性能分析

# 安装
apt install linux-tools-common

# CPU 分析
perf top

# 记录性能数据
perf record -g ./myapp

# 生成报告
perf report

strace - 系统调用跟踪

# 跟踪系统调用
strace -p PID

# 跟踪并统计
strace -c ./myapp

# 跟踪文件操作
strace -e trace=file ./myapp

gdb - 调试器

# 附加到进程
gdb -p PID

# 调试程序
gdb ./myapp

# 常用命令
# bt - 查看调用栈
# info registers - 查看寄存器
# continue - 继续运行
# quit - 退出

快捷命令别名

cat >> ~/.bashrc <<'EOF'

# 系统
alias df='df -h'
alias du='du -h'
alias free='free -h'

# 网络
alias ports='netstat -tulanp'
alias myip='curl ifconfig.me'

# Docker
alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
alias dlogs='docker logs -f'
alias dclean='docker system prune -f'

# K8s
alias k='kubectl'
alias kg='kubectl get'
alias kd='kubectl describe'
alias kdel='kubectl delete'

# 其他
alias ..='cd ..'
alias ...='cd ../..'
alias l='ls -la'
alias grep='grep --color=auto'
EOF

source ~/.bashrc

小结

本文整理的运维工具涵盖了日常工作的各个方面:

  • 监控:htop, glances, dstat
  • 日志:journalctl, lnav
  • 网络:tcpdump, mtr, nmap, iperf3
  • 存储:ncdu, iotop
  • 安全:lynis, rkhunter
  • 脚本:系统信息、日志清理、Docker 清理

建议根据工作环境选择合适的工具,并将常用脚本加入自动化任务。


参考资料

Comment