首页/云/可观测性速查/输出到 Elasticsearch
日志平台52 条

输出到 Elasticsearch

output 阶段把事件写入 ES:index/data_stream 决定落点,批量参数与重试影响吞吐与可靠性;配合 ILM 由写入别名接收。

可观测性速查云更新于 2026-10-13

output 到 ES 是什么

Logstash 的 output 阶段决定每个事件写到哪去,写入 Elasticsearch 是最常见的一种:hosts 指定集群地址,index 或 data_stream 决定落点,认证信息与批量参数决定能不能写、写得快不快。这段配置是采集链路的最后一环,前面 filter 解析得再干净,这里参数写错或权限不足,日志同样进不了库,而且 Logstash 只会在日志里反复重试报错。

基本信息

适用平台Logstash 7.x / 8.x,插件 logstash-output-elasticsearch
服务端口Elasticsearch 默认 9200(HTTPS 场景同端口)
认证要求写入账号需目标索引或别名的 create_doc 等权限
关键参数hosts、index/data_stream、user、password、manage_template

典型使用场景

  • 日志集中入库:把多台主机的应用日志统一写入日志集群
  • 按天分索引:index 用日期表达式生成 applogs-2026.10.12 这类索引名
  • 配合 ILM 写入:用 data_stream 或写别名接收,由生命周期策略滚动索引
  • 补采历史数据:临时任务把归档日志批量导入,注意与实时索引区分
  • 多集群分流:按环境或业务写入不同集群,避免测试数据混入生产

输出配置

输出配置
output {
  elasticsearch {
    hosts => ["https://es-node1:9200", "https://es-node2:9200"]   # 多节点做故障切换
    user => "logstash_writer"
    password => "${LOGSTASH_ES_PASSWORD}"     # 从环境变量或密钥文件注入
    index => "applogs-%{+YYYY.MM.dd}"          # 按天落索引
    manage_template => false                   # 模板由平台侧统一管理
    ssl_enabled => true
    ssl_certificate_authorities => ["/etc/logstash/certs/ca.crt"]
  }
}

关键参数读法

参数作用写错的后果
hosts目标集群地址列表地址或端口错误时持续重试并积压队列
index目标索引名或表达式动态字段过多会撑出大量小索引
user / password写入认证信息权限不足时整批写入被拒
manage_template是否由 Logstash 管理模板多写入方各自建模板会互相覆盖字段类型
data_stream写入数据流的开关与 index 同时配置时行为不符合预期
写入账号按最小权限授权:只要目标索引或别名的写入与自动创建相关权限,不要直接给超级用户;索引名受通配限制时用索引模式授权。
按天分索引会让索引数量随时间线性增长,配合索引生命周期策略(ILM)滚动与删除;否则单是集群状态管理开销就会拖慢写入。

易错点

  • 密码明文写在配置仓库里,等于把集群写入权限公开,应该用环境变量或密钥文件注入
  • index 表达式里带业务动态字段(如带用户 ID),索引数量会失控,长期看写入与查询都变慢
  • Logstash 与 Filebeat 或其它写入方各自管理模板,字段类型互相覆盖,导致同一字段查不到数据
  • 只配一个 ES 节点地址时该节点维护或重启会中断写入,配置里应写多个节点由客户端切换

数据来源与参考

  • Elastic 官方文档 · Elasticsearch output plugin
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌