logstash安装以及简单读取文件功能

Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。

上传logstash并解压缩
tar -zxvf logstash-7.3.1.tar.gz
在这里插入图片描述
编辑配置文件
vi test.conf

input {
  #标准输入
  stdin {
    #通用选项,用于输入数据的编解码器
    codec => plain{ charset => "UTF-8" }
  }
  #从文件读取数据
  file {
    type => "json"
    path => "/data/logstash/logdata/test.log"
    #选择logstash开始读取文件的位置,begining或者end
    start_position => "beginning"
    codec => plain{ charset => "UTF-8" }
  }
}
filter{
  #解析json
  json {
        source => "message"
    }
  #将timestamp转为时间类型,并重新定义一个createdate字段来存储
  date {
    match => [ "timestamp", "UNIX_MS" ]
    target => "createdate"
  }
}
output {
  #将事件存储到es中
  elasticsearch { hosts => ["192.168.98.128:9200"] }
  #标准输出,将事件输出到屏幕上
  stdout { codec => rubydebug }
}

测试数据文件如下
vi test.log

{"name": "zhangsan", "age": 21, "addr": "北京", "country": "中国", "timestamp": "1532933162361", "salary": 10000}
{"name": "tom", "age":20,"addr":"纽约", "country": "美国", "timestamp": "1532933163361", "salary": 12000}
{"name": "wangwu", "age":19,"addr":"上海", "country": "中国", "timestamp": "1532933163361", "salary": 11000}
{"name": "dabai", "age":19,"addr":"上海", "country": "中国", "timestamp": "1532933162361", "salary": 7000}
{"name": "xiaoming", "age":19,"addr":"北京", "country": "中国", "timestamp": "1532933165361", "salary": 15000}
{"name": "xiaohong", "age": 21, "addr": "北京", "country": "中国", "timestamp": "1532933162361", "salary": 9000}
{"name": "jack", "age":20,"addr":"纽约", "country": "美国", "timestamp": "1532933162361", "salary": 14000}

测试配置文件是否正确
./bin/logstash -t -f config/test.conf

在这里插入图片描述

启动logstash 并读取log文件,存入es

./bin/logstash -f config/test.conf

在这里插入图片描述
在这里插入图片描述
控制台输入hello 世界回车,自动存入es

在这里插入图片描述
在这里插入图片描述

遇到的问题:

重启logstash时,要想重新读取日志文件。
需要手工删除logstash-7.3.1/data/plugins/inputs目录下的file目录
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好!在 Logstash 中使用 Ruby 代码访问 Redis 数据库并实现持久化功能,您可以这样写: ``` filter { ruby { code => " require 'redis' redis = Redis.new # 将数据存入 Redis event.set('my_field', 'my_value') redis.set('my_key', event.get('my_field')) # 从 Redis 读取数据 value = redis.get('my_key') event.set('my_field_from_redis', value) " } } ``` 希望这些代码对您有所帮助! ### 回答2: 要使用Logstash、Ruby和Redis进行持久化的代码写法,可以按照以下步骤进行: 首先,确保已经安装Logstash、Ruby和Redis的相关组件和依赖。 1. 导入所需的Ruby库文件: ``` require 'redis' ``` 2. 创建Redis连接,并准备持久化数据: ``` redis = Redis.new(host: 'localhost', port: 6379) ``` 3. 在Logstash的配置文件中使用Ruby filter插件来处理数据并进行持久化。例如: ``` input { # 设置Logstash输入源,如kafka、file等 } filter { ruby { code => " # 在这里添加数据处理逻辑 # 在处理过程中,将数据存储到Redis中 redis.rpush('mylist', event.get('field_name')) " } } output { # 设置Logstash输出目标,如Elasticsearch、stdout等 } ``` 在Ruby filter的代码块中,可以根据需要进行数据处理,并通过redis.rpush方法将数据存储到Redis的列表中(示例中使用的列表名为'mylist')。 4. 运行Logstash并加载配置文件: ``` logstash -f your_config_file.conf ``` 这样,当Logstash获取到输入数据后,Ruby filter插件将按照配置的数据处理逻辑来处理数据,并将处理后的数据存储到Redis中。 需要注意的是,上述代码只是简单示例,实际应用中可能需要根据具体需求进行适当的修改和扩展。 ### 回答3: 在使用Logstash的Ruby插件和Redis进行持久化时,可以通过以下步骤来编写代码: 1. 首先,确保已经安装并配置好了Logstash、Ruby和Redis环境。 2. 创建一个新的Logstash配置文件,例如`logstash.conf`,并在其中定义输入、过滤和输出插件。 3. 在输出插件部分,选择Redis作为输出目标。添加以下配置代码: ``` output { redis { host => "localhost" # Redis服务器地址 data_type => "list" # 存储数据类型 key => "my_key" # 存储数据的键名 codec => "json" # 数据编码格式 } } ``` 根据自己的实际需求修改相应的参数值,确保正确与Redis建立连接。 4. 在Logstash安装目录下创建一个新的Ruby脚本文件,例如`persist.rb`。 5. 在该脚本中引入Redis和Logstash的Ruby库: ```ruby require 'redis' require 'logstash/config/mixin' class Persist include LogStash::Config::Mixin def initialize config_init('logstash.conf') @redis = Redis.new(host: 'localhost') end end persist = Persist.new ``` 6. 在脚本的`initialize`方法中,首先调用`config_init`方法来读取`logstash.conf`配置文件,以便获取Redis服务器地址等信息。然后,创建一个Redis实例。 7. 可以添加一些自定义的方法来执行持久化操作。例如,可以使用Logstash的`filter_matched`方法来获得经过过滤的事件数据,并使用Redis的`rpush`方法将数据存储到指定的键名: ```ruby def persist_event(event) filter_matched(event) @redis.rpush('my_key', event.to_json) end ``` 按照自己的需求修改键名和数据格式,确保正确存储到Redis。 8. 最后,在Logstash的配置文件中使用Ruby插件的执行器来调用上述的持久化方法。在`output`插件中添加以下代码: ``` ruby { code => 'persist.persist_event(event)' } ``` 这样,当有新的事件数据经过过滤后,会自动调用`persist_event`方法将数据持久化到Redis中。 以上是一个简单的示例,根据实际需求可以进行更多的定制和优化。在实际应用中,还需要注意异常处理和数据处理的效率等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值