我是靠谱客的博主 彩色铃铛,最近开发中收集的这篇文章主要介绍logstash之input插件logstash之input插件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

logstash之input插件

标准输入

input{
stdin{
add_field => {"key" => "value"}
codec => "plain"
tags => ["add"]
type => "std"
}
}
output{
stdout{
codec => rubydebug{}
}
elasticsearch{
hosts=>["127.0.0.1"]
}
}

文件输入

input{
file{
path => ["/home/wuyong/elk/logs/test1.log", "/home/wuyong/elk/logs/test2.log"]
type => "system"
start_position => "beginning"
}
}
output{
stdout{
codec => rubydebug{}
}
elasticsearch{
hosts=>["127.0.0.1"]
}
}

其它配置:

  • discover_interval: logstash每隔多久检测一次被监听的path下是否有新文件,默认15s
  • exclude: 不想被监听的文件列表
  • sincedb_path: 定义sincedb配置的路径,默认路径如下:
    input_file_sincedb

  • sincedb_write_interval,每个多久写一次sincedb文件,默认15s

  • stat_interval, 没隔多久检测一次被监听文件状态(是否有更新),默认1s
  • start_position: 从什么位置读取文件数据,默认结束位置,如果需导数据,则设置成beginning,从开始位置读取; 仅在该文件从未被监听过才有效,因为sincedb文件记录了该文件的inode,会从记录过的pos开始读,需要重复读取一个日志,可以删除sincedb文件或定义sincedb_path为/dev/null
  • close_older: 一个已经监听中的文件,超过这个值的时间内没更新内容,就关闭监听它的文件句柄,默认3600s
  • ingore_older: 每次检测文件列表的时候,如果一个文件的自后修改时间超过该值,就忽略这文件,默认86400s即1天

path

  • path不支持
path => "/path/to/%{+yyyy/MM/dd/hh}.log"

格式, 只能写成

path => "/path/to/*/*/*/*.log" 或
path => "/path/to/**/*.log" , **缩写表示递归全部子目录

TCP输入

  • 适用于临时任务,尤其是测试环境,因为logstash本身只能在SizeQueue中缓存20个事件,所以生产环境中最好换用其他消息队列
input{
tcp{
port => 8888
mode => "server"
ssl_enable => false
}
}
output{
stdout{
codec => rubydebug{}
}
elasticsearch{
hosts=>["127.0.0.1"]
}
}

./logstash/logstash-5.6.3/bin/logstash -f logstash.conf 执行,另一终端tcp输入数据

 nc 127.0.0.1 8888 < test1.log

输入:

nc_input
输出:

nc_logstash_output

syslog输入

  • syslog是一种标准的协议,分为客户端和服务器端,客户端是产生日志消息的一方,而服务器端负责接收客户端发送来的日志消息,并做出保存到特定的日志文件中或者其他方式的处理,rsyslog 是syslog 的升级版

服务器端

  • 使用的一个虚拟机,ip: 192.168.237.129
  • log收集服务器中logstash配置
input{
syslog{
port => "5514"
}
}
output{
stdout{
codec => rubydebug{}
}
elasticsearch{
hosts=>["127.0.0.1"]
}
}
  • 启动
./logstash/logstash-5.6.3/bin/logstash -f logstash.conf
  • 查看启动端口情况,证明已经启动
ss -ntlp

ss-ntlp

客户端

  • 客户机配置, 这里是使用另外一个虚拟机, ip: 192.168.237.130
  • 配置syslog发送服务器地址
vim /etc/rsyslog.conf

加入:

*.* @@192.168.237.129:5514
  • 重启rsyslog,观察服务器logstash日志情况
/etc/init.d/rsyslog restart
  • 日志从logstash中输出
    syslog_success.

http_poller抓取

  • logstash可以作为数据采集客户端,去像指定地址请求数据

服务端

  • 本例子使用flask搭建简单的server来实现,因为flask确实够轻量够简单
from flask import Flask
app = Flask(__name__)
from flask import jsonify
@app.route("/hello")
def hello():
return jsonify({"field": "Hello World!"})
@app.route("/bye")
def bye():
return jsonify({"field": "bye!!!"})
if __name__ == "__main__":
app.run(debug = True)
  • 启动, python app.py

  • 测试
    hello_bye_json

logstash客户端

  • 每一分钟请求一次,配置如下
input {
http_poller {
urls => {
test1 => {
method => get
url => "http://127.0.0.1:5000/hello"
headers => {
Accept => "application/json"
}
}
test2 => {
method => get
url => "http://127.0.0.1:5000/bye"
headers => {
Accept => "application/json"
}
}
}
request_timeout => 60
schedule => {cron => "* * * * * UTC" }
codec => "json"
metadata_target => "http_poller_metadata"
}
}
output{
stdout{
codec => rubydebug{}
}
elasticsearch{
hosts=>["127.0.0.1"]
}
}

请求顺序可以通过test_数字类似这样的hash顺序来作为hash的key
- 启动

./logstash/logstash-5.6.3/bin/logstash -f logstash.conf
  • 查看结果, 每隔一分钟会有如下输出
    这里写图片描述

最后

以上就是彩色铃铛为你收集整理的logstash之input插件logstash之input插件的全部内容,希望文章能够帮你解决logstash之input插件logstash之input插件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部