Logstash配置详解

图文并茂搞定Logstash

此篇不谈优劣,只谈配置

一、版本说明

因为logstash版本迭代较快,每个版本的插件都有点区别,在使用logstash之前先想清楚自己的需求是什么,从哪种数据源同步到哪里,需要经过怎么样的处理,再确认哪个版本适合。
比如下面几点差异:

  1. filter中的http插件 ,6.6版本以后才有;
  2. output中jdbc的插件 7.1之前都没有;
    注意:最好在linux下进行调试或使用,windows下会出现乱码

二、下载

你可以从官网 link下载二进制版本包,如logstash-7.6.2.tar.gz。

三、安装

Linux终端 解压缩,解压完之后的目录参见官网link
注意:使用root权限操作,防止没有权限访问某些日志文件。

四、测试

在解压缩后的目录(例如:/home/elk/logstash-7.6.2)下,执行如下命令来验证是否安装成功

 bin/logstash -e 'input { stdin { } } output { stdout {} }' 

等待启动成功,直接输入任意字符,例如 hello world .会有如下显示,则安装成功:

{
    "host" => "promote.cache-dns.local",
    "@version" => "1",
    "@timestamp" => 2020-04-03T02:16:28.722Z,
    "message" => "hello world"
}

五、配置文件

默认放置在解压缩目录(如/home/elk/logstash-7.6.2/config/)下,形如:logstash-sample.conf

1 输入插件

1.1 标准输入(Stdin)

配置示例

input {
    stdin {
    
    }
}

后面测试输出插件时,均用此子。

1.2 读取文件(File)

配置示例

input {
	#文件输入
	file {
        path => ["/var/log/messages"]  #监听的文件路劲,单个文件可以省略[],例如当前可简写成"/var/log/messages"。       
        type => "systemlog"  #标记事件类型。提前预定的各个事件对应类型。
        start_position => "beginning"  #从什么位置开始读取文件数据,默认是结束位置。
        stat_interval => "2"  #每隔多久检查一次被监听文件状态(是否有更新),默认是 1 秒。
	}
}
1.3 读取 Syslog 数据

我是在192.168.122.1机器上装了logstash,只在这一台机器上模拟测试。不同服务器间,原理一样。
配置示例,只是配置成syslog 服务器来接收数据

input {
  syslog {
    type => "system-syslog"
    host => "192.168.122.1"  #logstash所在主机IP
    port => "514"                   #监听端口
  }
}

root用户下执行如下命令,修改所有日志发送至ogstash服务器。

vim /etc/rsyslog.conf 

注意:此处修改的是你想要收集日志的服务上的文件
修改后如下图:
配置日志转发至指定地址
*此处IP为安装logstash的主机地址
执行如下命令,令日志生效:

systemctl restart rsyslog

启动logstash后,运行命令

ss -lntp | grep 514

可见514端口启动了,如下图:
ss -ntlp执行结果
再看logstash控制台输出,如下:
logstash收集到的syslo信息
注意:测试完后记得将/etc/rsyslog.conf 复原。嘻嘻

1.4 读取 Collectd 数据

Collectd部分配置如下:

<Plugin network>
    <Server "192.168.122.1" "5999"> ## logstash 的 IP 地址和 collectd 的数据接收端口号
    </Server>
</Plugin>

Logstash配置示例:

	#Collectd 数据
	udp {
		port => 5999
		buffer_size => 1452
		workers => 3          # Default is 2
		queue_size => 30000   # Default is 2000
		codec => collectd { }
		type => "collectd"
	}

执行命令启动Collectd:

systemctl start collectd.service

启动logstash后,等候些许就有信息,如下:
部分信息

1.5 读取 Redis 数据

前提是有个可以正常运作的redis服务器,我环境信息为:
IP:10.148.180.204
PORT:6379
PASSWORD: 123456
注意防火墙问题,要不然写不进去。

1.5.1 列表模式

配置示例

input {
    redis {
        host => "192.168.64.1"   # redis主机地址,字符串或字符串数组,可以指定port,会覆盖全局port
        port => 6379               # redis端口号,默认6379
        password => "123456"       # redis 密码,默认不使用密码
        data_type => "list"        # 队列模式
        key => "logstash_list_0"   # 队列(列表)名称
        codec => plain
    }
}

成功启动logstash后,运行redis-cli,向list中加入数据:
在这里插入图片描述
随后观察logstash控制台,有如下信息:
在这里插入图片描述

指令概述
keys * ##列举出所有key
llen key ##查看对应key列表的长度
rpush key value ##向key列表中加入一条数据

1.5.2 发布/订阅模式

配置示例

input {
	redis {
		host => "192.168.64.1"
		port => 6379
	    password => "123456"
        data_type => "channel"
        key => "logstash_channel_0"
    }
}

成功启动logstash后,在redis-cli上发布,如下:
在这里插入图片描述
在logstash上查看,如下:
在这里插入图片描述
指令概述
publish channel message #将信息发送到指定的频道。

1.5.3 发布/订阅模式(多合一)

配置示例

redis {
		host => "192.168.64.1"
		port => 6379
		password => "123456"
        data_type => "pattern_channel"
        key => "logstash-channel-*"
    }

成功启动logstash后,在redis-cli上发布,如下:
在这里插入图片描述
在logstash上查看,如下:
在这里插入图片描述

1.5 读取网络数据

配置示例

input {
	tcp {
        port => 8888
        mode => "server"
        ssl_enable => false
    }
}

成功启动logstash后,另开一个终端,执行如下操作:
在这里插入图片描述
在logstash上查看,局部信息如下(直到nc命令结束为止,信息也就加载完):
在这里插入图片描述

过滤插件(暂缺)

输出插件

此处测试用的输入数据均采用控制台输入(前面有提到),这样便于测试。

3.1 标准输出(Stdout)

配置示例

output {
	#输出到控制台
	stdout { }
}

成功启动logstash后,直接输入任意字符(例如 Test output).控制台输出,如下:
结果

3.2 保存成文件(File)

配置示例

output {
	#输出到文件
	file {
		path => "/usr/local/logstash/logs/test.log" #指定写入文件路径
		flush_interval => 0  # 指定刷新间隔,0代表实时写入
		codec => json		#JSON格式
    }
}

成功启动logstash后,直接输入任意字符(例如 Test file) .控制台回显如下:
在这里插入图片描述
对应文件中会写入如下信息:
在这里插入图片描述

3.3 输出到 Redis

前提是有个可以正常运作的redis服务器,我环境信息为:
IP:10.148.180.204
PORT:6379
PASSWORD: 123456
注意防火墙问题,要不然写不进去。

3.3.1 列表模式

配置示例

output {
    redis {
        host => "10.148.180.204"   # redis主机地址,字符串或字符串数组,可以指定port,会覆盖全局port
        port => 6379               # redis端口号,默认6379
        password => "123456"       # redis 密码,默认不使用密码
        data_type => "list"        # 队列模式
        key => "logstash_list_0"   # 队列(列表)名称
    }
}

成功启动logstash后,直接输入任意字符(例如 Test redis) .可以在redis-cli上查看,如下:
在这里插入图片描述
指令概述
keys * ##列举出所有key
llen key ##查看对应key列表的长度
lpop key ##取出对应key列表中的一条数据

3.3.1 发布/订阅模式

配置示例

output {
	redis {
        host => ["10.148.180.204"] # redis主机地址,字符串或字符串数组,可以指定port,会覆盖全局port
        port => 6379               # redis端口号,默认6379
        password => "123456"       # redis 密码,默认不使用密码
        data_type => "channel"        # 发布/订阅模式
        key => "logstash_channel_0"   # 频道名称
    }
}

在redis-cli上订阅,如下:
在这里插入图片描述
成功启动logstash后,直接输入任意字符(例如 Test redis2) .可以在redis-cli上查看,如下:
在这里插入图片描述
指令概述
subscribe channel [channel …] #订阅给定的一个或多个频道的信息

六、常用命令

查看已安装插件列表:

./logstash-plugin list

启动logstash

./logstash -f  配置文件路径

启动logstash,重新加载配置文件

./logstash -f  配置文件路径  --config.reload.automatic

安装插件

 ./logstash-plugin install 插件名称
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值