Logstash入门-部署与测试
Logstash环境准备与安装
Logstash环境准备
关闭防火墙
#CentOS6 关闭防火墙 [root@elkstack01 ~]# /etc/init.d/iptables stop #CentOS7 关闭防火墙 [root@elkstack01 ~]# systemctl stop firewalld
关闭SELINUX
#临时关闭 [root@elkstack01 ~]# setenforce 0 setenforce: SELinux is disabled #永久关闭 [root@elkstack01 ~]# vim /etc/sysconfig/selinux SELINUX=disabled ==> //原来是enforcing 改成disabled SELINUXTYPE=targeted
设置epel源
#CentOS6 下载epel源 [root@elkstack01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo #CentOS7 下载epel源 [root@elkstack01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
修改时区
#将时区修改为上海时区
[root@elkstack01 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime cp:是否覆盖"/etc/localtime"? y
设置时间同步
#同步服务器时间 [root@elkstack01 ~]# ntpdate time1.aliyun.com 28 Feb 14:11:28 ntpdate[8904]: step time server 203.107.6.88 offset 3168820.831817 sec
部署Logstash
安装JDK环境
下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
#解压JDK安装包 [root@elkstack01 ~]# tar xf jdk-8u121-linux-x64.tar.gz #将JDK安装包移动到安装目录下 [root@elkstack01 ~]# mv jdk1.8.0_121 /usr/local/ #做软链接(方便日后升级) [root@elkstack01 ~]# ln -s /usr/local/jdk1.8.0_121 /usr/local/jdk1.8 #添加环境变量 [root@elkstack01 ~]# vim /etc/profile.d/jdk1.8.sh export JAVA_HOME=/usr/local/jdk1.8 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin #加载环境变量 [root@elkstack01 ~]# source /etc/profile #检查是否加载成功 [root@elkstack01 ~]# java -version java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
安装Logstash
下载地址: https://www.elastic.co/downloads/past-releases/logstash-5-3-0
#安装Logstash使用yum localinstall 自动安装依赖包 [root@elkstack03 ~]# yum localinstall -y logstash-5.3.0.rpm #给Logstash目录授权 [root@elkstack03 ~]# chown -R logstash.logstash /usr/share/logstash/
Logstash输入输出插件介绍
INPUT、OUTPUT插件
INPUT:插件使Logstash能够读取特定的事件源。
OUTPUT:插件将事件数据发送到特定的目的地,OUTPUT是事件流水线中的最后阶段。
INPUT支持事件源 | OUTPUT支持输出源 | CODEC编解码器支持编码 |
azure_event_hubs(微软云事件中心) | elasticsearch(搜索引擎数据库) | avro(数据序列化) |
beats(filebeat日志收集工具) | email(邮件) | CEF(嵌入式框架) |
elasticsearch(搜索引擎数据库) | file(文件) | es_bulk(ES中的bulk api) |
file(文件)http(超文本传输协议) | http(超文本传输协议) | Json(数据序列化、格式化) |
generator(生成器) | kafka(基于java的消息队列) | Json_lines(便于存储结构化) |
heartbeat(高可用软件) | rabbitmq(消息队列 OpenStack) | line(行) |
http_poller(http api) | redis(缓存、消息队列、NoSQL) | multiline(多行匹配) |
jdbc(java连接数据库的驱动) | s3*(存储) | plain(纯文本,事件间无间隔) |
kafka(基于java的消息队列) | stdout(标准输出) | rubydebug(ruby语法格式) |
rabbitmq(消息队列 OpenStack) | tcp(传输控制协议) | |
redis(缓存、消息队列、NoSQL) | udp(用户数据报协议) | |
s3*(存储) | ||
stdin(标准输入) | ||
syslog(系统日志) | ||
tcp(传输控制协议) | ||
udp(用户数据报协议) |
Logstash输入输出插件测试
测试logstash标准输入到标准输出
#从标准输入到标准输出 [root@elkstack03 ~]# /usr/share/logstash/bin/logstash -e 'input { stdin{} } output { stdout{ codec => rubydebug }}' #标准输入zls test及返回结果 zls test { #时间戳 "@timestamp" => 2019-03-05T09:41:40.198Z, #版本信息 "@version" => "1", #主机 "host" => "0.0.0.0", #接收信息 "message" => "zls test" }
结果展示如下图所示:
测试logstash标准输入到文件
#从标准输入到文件中 [root@elkstack03 ~]# /usr/share/logstash/bin/logstash -e 'input { stdin{} } output { file { path => "/tmp/test_%{+YYYY.MM.dd}.log"}}' #输入bgx ugly bgx ugly #返回结果 19:10:00.303 [[main]>worker0] INFO logstash.outputs.file - Opening file {:path=>"/tmp/test_2019.03.05.log"} #查看tmp目录下是否有日志文件存在 [root@elkstack03 ~]# ll /tmp/ 总用量 4 -rw-r--r-- 1 root root 95 3月 5 19:10 test_2019.03.05.log #查看日志内容 [root@elkstack03 ~]# cat /tmp/test_2019.03.05.log {"@timestamp":"2019-03-05T11:10:00.235Z","@version":"1","host":"0.0.0.0","message":"bgx ugly"}
结果展示如下图所示:
打开浏览器,访问:http://10.0.0.51:9100