适用场景

自建日志平台最常见的失败原因:日志量估错、索引未按时间切分、磁盘写满后平台直接不可用。

配置步骤(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 生效

小结

日志平台上线后要做两件运维:每周看磁盘与索引健康、每月抽查检索可用性。否则半年后平台会变成"装了但不敢用"。

> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。