监控流量异常,早发现早处理
前几天公司内网突然变慢,查了一圈才发现是某台测试服务器被当成代理节点用了。这种事在实际运维中太常见了。别等用户投诉才动手,部署一个简单的 netdata 或者 zabbix 监控面板,实时看每台服务器的带宽使用情况。设置个阈值告警,比如出站流量连续 5 分钟超过 10MB/s,自动发邮件提醒。
像 Ubuntu 这类系统,装个 vnstat 就能记录历史流量:
sudo apt install vnstat
vnstat -l -i eth0这个命令一跑,就能看到实时流入流出速率,比翻日志快多了。
定时任务别乱放,统一管理更省心
很多人习惯直接在 crontab 里写一堆脚本路径,时间一长谁也记不清哪个任务干啥的。建议把所有自动化脚本集中放在 /opt/scripts/ 下,按功能分类,比如 backup、clean、sync。然后在 crontab 里只调用这些脚本,不写具体命令。
0 2 * * * /opt/scripts/backup/db_backup.sh
*/30 * * * * /opt/scripts/monitor/check_http.sh这样交接工作的时候,新人一看就知道哪些是数据库备份,哪些是服务探测。
SSH 登录安全不能偷懒
默认的 22 端口天天被扫,日志里全是暴力破解尝试。改端口是最简单的一招,虽然不是万能,但能过滤掉大部分自动扫描。编辑 /etc/ssh/sshd_config:
Port 22222
PermitRootLogin no
PasswordAuthentication no改完后重启 ssh 服务。再配合 fail2ban,同一 IP 多次失败就封 IP,效果立竿见影。之前有台服务器一天被试了上千次密码,上了 fail2ban 后清静了。
日志轮转别忽视,不然磁盘早晚炸
有个朋友的 Web 服务器突然宕机,上去一看,/var/log 占了 80G,全是 nginx 的 access.log。logrotate 其实早就装好了,就是没配。给 nginx 配个轮转策略:
/var/log/nginx/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 www-data adm
}每天切一次,留一周,压缩存档,基本不会出问题。记得用 logrotate -d /etc/logrotate.conf 先测试配置对不对。
批量操作用 Ansible,省时又避免手抖
要给 20 台服务器同时更新防火墙规则,手动一台台登太累还容易错。写个 Ansible playbook,几行搞定。先在控制机生成密钥对,把公钥推到所有服务器,然后写个 play.yml:
---
- hosts: all
tasks:
- name: Update ufw rule
become: yes
ansible.builtin.ufw:
rule: allow
port: "443"
proto: tcp执行 ansible-playbook -i hosts play.yml,所有机器 HTTPS 端口瞬间打开。比一个个敲命令靠谱多了。