logstash 常见插件配置说明

本文介绍了Logstash这一开源数据采集引擎的基本概念、系统结构及常见插件应用。涵盖文件类型插件、数据库类型插件及Redis插件的具体配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Logstash简介

1、官网地址

  https://www.elastic.co/products/logstash

2、软件介绍

  官方介绍:Logstash is an open source data collection engine with real-time pipelining capabilities。简单来说logstash就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。

  Logstash常用于日志关系系统中做日志采集设备; 
这里写图片描述

3、系统结构

这里写图片描述

  Logstash的事件(logstash将数据流中等每一条数据称之为一个event)处理流水线有三个主要角色完成:inputs –> filters –> outputs:

  • inpust:必须,负责产生事件(Inputs generate events),常用:File、syslog、redis、beats(如:Filebeats)
  • filters:可选,负责数据处理与转换(filters modify them),常用:grok、mutate、drop、clone、geoip
  • outpus:必须,负责数据输出(outputs ship them elsewhere),常用:elasticsearch、file、graphite、statsd

      其中inputs和outputs支持codecs(coder&decoder)在1.3.0 版之前,logstash 只支持纯文本形式输入,然后以过滤器处理它。但现在,我们可以在输入 期处理不同类型的数据,所以完整的数据流程应该是:input | decode | filter | encode | output;codec 的引入,使得 logstash 可以更好更方便的与其他有自定义数据格式的运维产品共存,比如:graphite、fluent、netflow、collectd,以及使用 msgpack、json、edn 等通用数据格式的其他产品等 

二、文件类型插件

  文件类型,顾名思义,文件数据源,我们可以使用input组件的file插件来获取数据。file{}插件有很多的属性参数,我们可以张开讲解一下。具体内容在下面的代码中展示:

input{
    file{
        #path属性接受的参数是一个数组,其含义是标明需要读取的文件位置
        path => [‘pathA’,‘pathB’]
        #表示多就去path路径下查看是够有新的文件产生。默认是15秒检查一次。
        discover_interval => 15
        #排除那些文件,也就是不去读取那些文件
        exclude => [‘fileName1’,‘fileNmae2’]
        #被监听的文件多久没更新后断开连接不在监听,默认是一个小时。
        close_older => 3600
        #在每次检查文件列 表的时候, 如果一个文件的最后 修改时间 超过这个值, 就忽略这个文件。 默认一天。
        ignore_older => 86400
        #logstash 每隔多 久检查一次被监听文件状态( 是否有更新) , 默认是 1 秒。
        stat_interval => 1
        #sincedb记录数据上一次的读取位置的一个index
        sincedb_path => ’$HOME/. sincedb‘
        #logstash 从什么 位置开始读取文件数据, 默认是结束位置 也可以设置为:beginning 从头开始
        start_position => ‘beginning’
        #注意:这里需要提醒大家的是,如果你需要每次都从同开始读取文件的话,关设置start_position => beginning是没有用的,你可以选择sincedb_path 定义为 /dev/null
    }           

}

三:数据库类型插件

input{
    jdbc{
    #jdbc sql server 驱动,各个数据库都有对应的驱动,需自己下载
    jdbc_driver_library => "/etc/logstash/driver.d/sqljdbc_2.0/enu/sqljdbc4.jar"
    #jdbc class 不同数据库有不同的 class 配置
    jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
    #配置数据库连接 ip 和端口,以及数据库   
    jdbc_connection_string => "jdbc:sqlserver://200.200.0.18:1433;databaseName=test_db"
    #配置数据库用户名
    jdbc_user =>   
    #配置数据库密码
    jdbc_password =>
    #上面这些都不重要,要是这些都看不懂的话,你的老板估计要考虑换人了。重要的是接下来的内容。
    # 定时器 多久执行一次SQL,默认是一分钟
    # schedule => 分 时 天 月 年  
    # schedule =>  22     表示每天22点执行一次
    schedule => "  *"
    #是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录
    clean_run => false
    #是否需要记录某个column 的值,如果 record_last_run 为真,可以自定义我们需要表的字段名称,
    #此时该参数就要为 true. 否则默认 track 的是 timestamp 的值.
    use_column_value => true
    #如果 use_column_value 为真,需配置此参数. 这个参数就是数据库给出的一个字段名称。当然该字段必须是递增的,可以是 数据库的数据时间这类的
    tracking_column => create_time
    #是否记录上次执行结果, 如果为真,将会把上次执行到的 tracking_column 字段的值记录下来,保存到 last_run_metadata_path 指定的文件中
    record_last_run => true
    #们只需要在 SQL 语句中 WHERE MY_ID > :last_sql_value 即可. 其中 :sql_last_value 取得就是该文件中的值
    last_run_metadata_path => "/etc/logstash/run_metadata.d/my_info"
    #是否将字段名称转小写。
    #这里有个小的提示,如果你这前就处理过一次数据,并且在Kibana中有对应的搜索需求的话,还是改为true,
    #因为默认是true,并且Kibana是大小写区分的。准确的说应该是ES大小写区分
    lowercase_column_names => false
    #你的SQL的位置,当然,你的SQL也可以直接写在这里。
    #statement => SELECT * FROM tabeName t WHERE  t.creat_time > :sql_last_value
statement_filepath => "/etc/logstash/statement_file.d/my_info.sql" #数据类型,标明你属于那一方势力。单了ES哪里好给你安排不同的山头。 type => "my_info" } #注意:外载的SQL文件就是一个文本文件就可以了,还有需要注意的是,一个jdbc{}插件就只能处理一个SQL语句, #如果你有多个SQL需要处理的话,只能在重新建立一个jdbc{}插件。 }

四:Redis插件

input {
    redis {
        batch_count => 1 #返回的事件数量,此属性仅在list模式下起作用。
        data_type => "list" #logstash redis插件工作方式
        key => "logstash-test-list" #监听的键值
        host => "127.0.0.1" #redis地址
        port => 6379 #redis端口号
        password => "123qwe" #如果有安全认证,此项为密码
        db => 0 #redis数据库的编号
        threads => 1 #启用线程数量
    }
}


<think>我们正在处理用户关于Logstash输出配置的问题。用户要求提供Logstash output配置的方法和示例。根据提供的引用,我们可以整合相关信息。 引用[1]中提到了Logstash的output插件配置参考链接,引用[2]给出了一个简单的stdout输出配置示例,引用[3]则展示了一个http输出的配置示例。 因此,我们可以为用户提供以下内容: 1. 介绍Logstash输出配置的基本结构。 2. 列举常见的输出插件(如stdout, elasticsearch, file, http等)并提供配置示例。 3. 根据引用[3]中的示例,详细说明http输出的配置方法。 注意:用户的问题集中在输出配置上,因此我们重点讲解output部分。 我们将按照以下结构组织回答: - Logstash输出配置概述 - 常用输出插件配置示例 - 配置注意事项 同时,根据系统指令,我们需要在最后生成相关问题。 由于用户要求使用中文回答,并且需要按照指定的格式要求(如数学公式的格式),但当前问题不涉及数学公式,因此我们主要关注配置示例的代码块和自然语言描述。 另外,根据引用,我们需要在引用的地方添加引用标识,例如[^1]。</think>### Logstash Output 配置指南 Logstash 的输出配置(`output`)负责将处理后的数据传输到目标系统。以下是核心配置方法和常见示例: #### 一、基础配置结构 ```ruby output { # 输出插件配置区域 } ``` #### 二、常用输出插件示例 1. **标准输出(调试用)** 将数据输出到控制台,适合调试: ```ruby output { stdout { codec => rubydebug # 格式化输出 } } ``` 2. **Elasticsearch 输出** 写入Elasticsearch集群[^1]: ```ruby output { elasticsearch { hosts => ["http://es-node1:9200", "http://es-node2:9200"] index => "app-logs-%{+YYYY.MM.dd}" # 按日期分索引 user => "elastic_user" password => "your_password" } } ``` 3. **文件输出** 写入本地文件系统: ```ruby output { file { path => "/var/log/logstash/output.log" codec => line { format => "%{message}" } # 自定义格式 } } ``` 4. **HTTP API 输出** 发送数据到HTTP接口[^3]: ```ruby output { http { url => "http://api.example.com/log" http_method => "post" format => "json" # JSON格式传输 mapping => { "timestamp" => "%{@timestamp}" "message" => "%{message}" } } } ``` 5. **多目标输出** 同时输出到多个目的地: ```ruby output { elasticsearch { ... } # 主存储 file { path => "/backup/logs.json" } # 备份 } ``` #### 三、关键配置参数 | 参数 | 说明 | 示例 | |------|------|------| | `codec` | 数据编码格式 | `json`, `plain`, `rubydebug` | | `workers` | 并发线程数 | `workers => 4` | | `flush_size` | 批量发送条数 | `flush_size => 500` | | `retry_interval` | 失败重试间隔 | `retry_interval => 30` | #### 四、最佳实践 1. **批量写入**:通过`flush_size`和`idle_flush_time`优化写入性能 2. **错误处理**:添加`dead_letter_queue`处理失败事件 3. **模板管理**:Elasticsearch输出时使用`template`指定索引映射 4. **条件输出**:使用`if`条件分流数据 ```ruby output { if [type] == "error" { elasticsearch { ... } # 错误日志单独存储 } } ``` > 完整配置参考:[官方Output插件文档](https://www.elastic.co/guide/en/logstash/current/output-plugins.html)[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值