为什么日志是运维的‘行车记录仪’
想象一下你开车上路,突然发动机故障灯亮了。如果没有行车记录仪和故障码,你根本不知道刚才发生了什么。在云服务器的世界里,日志就是这台“行车记录仪”。每一次登录失败、服务响应变慢、接口超时,都会被悄悄记下来。关键是你得会看、会管。
监控不止看CPU和内存
很多人以为监控就是盯着CPU使用率和内存占用,其实那只是冰山一角。真正的监控必须结合日志分析。比如某天你的Web服务突然变卡,监控图显示资源一切正常,但用户投诉不断。这时候翻一翻Nginx访问日志,可能会发现大量异常请求来自某个IP段——原来是被恶意爬虫盯上了。
只靠监控告警不够,还得知道“谁动了我的奶酪”。日志告诉你操作来源、时间点和行为轨迹。
集中式日志管理怎么做
如果你维护的是多个云主机组成的集群,每台机器单独查日志效率太低。成熟的方案是把所有日志统一收集到一个地方。常用组合是Filebeat + Logstash + Elasticsearch + Kibana(简称ELK)。
比如在每台服务器部署Filebeat,它会自动读取指定日志文件并发送到Logstash做格式清洗:
filebeat.inputs:\n- type: log\n paths:\n - /var/log/nginx/access.log\n fields:\n service: nginxLogstash接收后过滤处理,再写入Elasticsearch。最后通过Kibana做可视化查询,你可以快速筛选出500错误、特定时间段的访问峰值,甚至按地域分析用户行为。
设置智能告警避免信息轰炸
日志量大了之后,另一个问题是“狼来了”太多。每隔几分钟就收到一条警告邮件,时间一长谁都会麻木。真正有用的告警应该是有上下文的。
比如你可以配置规则:当连续5分钟内出现超过100条ERROR级别日志时,才触发企业微信或钉钉通知。用Prometheus配合Alertmanager就能实现这种条件判断:
ALERT HighErrorRate\n IF sum(rate(log_error_total[5m])) > 100\n FOR 5m\n LABELS { severity = \"warning\" }\n ANNOTATIONS {\n summary = \"错误日志数量异常升高\",\n description = \"过去5分钟内每秒错误日志超过100条\"\n }保留策略也是一门学问
不是所有日志都要永久保存。访问日志保留30天足够应对大多数问题排查,而安全审计类日志则建议保留6个月以上。可以通过Elasticsearch的ILM(Index Lifecycle Management)策略自动归档或删除旧数据。
比如设置索引按天创建,30天后转入冷存储,60天后自动删除。既节省成本,又符合合规要求。
别等出事才想起翻日志
有个客户曾经遇到数据库连接池耗尽的问题,整整排查两天才发现是应用代码里有个循环每天凌晨触发大量无效连接。其实早在一周前的日志里就有线索:每天固定时间出现Connection Timeout记录。可惜没人定期查看,直到系统崩溃才注意到。
定期巡检日志应该像检查邮箱一样成为日常习惯。哪怕每天花十分钟扫一眼关键服务的错误趋势,也能把很多隐患掐灭在萌芽阶段。