适用场景
自建日志平台最常见的失败原因:日志量估错、索引未按时间切分、磁盘写满后平台直接不可用。
配置步骤(ELK / OpenSearch 部署)
# 采集端(Filebeat)
filebeat.inputs:
- type: log
paths: ['/var/log/nginx/*.log']
output.elasticsearch:
hosts: ['http://10.0.10.20:9200']
# 索引生命周期(ILM)
PUT _ilm/policy/logs_policy
{ \「policy\」: { \「phases\」: { \「hot\」: {\「actions\」:{\「rollover\」:{\「max_size\」:\「30gb\」}}}, \「delete\」: {\「min_age\」:\「180d\」,\「actions\」:{\「delete\」:{}}} } } }
关键参数与建议
- 先估算日志量(条/秒、字节/天),再选架构与硬件
- 索引按天/周切分,配置生命周期策略(热-温-冷-删)
- 采集端过滤无用日志(debug/健康检查),减少 50% 以上流量
- 磁盘水位告警(80%)与只读模式保护,避免写满崩溃
- 留存周期满足合规(≥6 个月),归档到对象存储
容易踩的坑
- 单节点部署 ES,磁盘写满后索引只读、平台不可用
- 未配 ILM,索引无限增长
- 采集全部日志,带宽与存储被塞满
验证与巡检
curl -s http://localhost:9200/_cluster/health?pretty
- 巡检:集群状态 green/yellow 正常、磁盘 <80%、ILM 生效
小结
日志平台上线后要做两件运维:每周看磁盘与索引健康、每月抽查检索可用性。否则半年后平台会变成"装了但不敢用"。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。