ELK—logstash学习—logstash安装

logstash简介

  • Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据存储到指定的位置。
  • Logstash 能够动态地采集、转换和传输数据,不受格式或复杂度的影响。利用 Grok 从非结构化数据中派生出结构,从 IP 地址解码出地理坐标,匿名化或排除敏感字段,并简化整体处理过程。
    注:就写这么多了,等抽空的时候,把这个ELK三件套单独作为一篇文章进行详谈。
  • 官网:https://www.elastic.co/cn/

安装

下载logstash

注:需要实现准备jdk环境(我的在安装es的时候已经设置jdk环境了,这里就直接跳过)
# cd /opt/src/
# wget https://artifacts.elastic.co/downloads/logstash/logstash-5.5.2.zip		#我的ES是安装的5.5.2版本这个logstash也选择一样(建议版本一样,不然会出莫名奇妙的问题)

新建logstash用户(不建议以root用户直接进行运行)

# groupadd -g549 logstash && useradd -g 549 -u 549 -s /sbin/nologin logstash

安装

# yum install zip unzip -y
# mkdir /opt/app/			#主程序目录(已有就不用安装)
# unzip logstash-5.5.2.zip
# mv logstash-5.5.2 /opt/app/
# ln -s /opt/app/logstash-5.5.2/ /opt/app/logstash

创建对应的目录及授权

# mkdir -p /data/app/logstash/run
# mkdir -p /data/app/logstash/data
# mkdir -p /data/app/logstash/etc
# mkdir -p /data/logs/logstash
# chown logstash.logstash -R /data/app/logstash/
# chown logstash.logstash -R /data/logs/logstash/

编辑配置文件

# cp  /opt/app/logstash/config/logstash.yml{,.bak}
# vim /opt/app/logstash/config/logstash.yml						#只要是控制logstash的运行状态
path.data: /opt/app/logstash/data/
pipeline.workers: 2
pipeline.output.workers: 1
pipeline.batch.size: 125
path.config: /opt/app/logstash/etc
config.reload.automatic: false
config.reload.interval: 3
path.logs: /data/logs/logstash

注:上面是常用的一些配置,下面对整个配置内容进行了一个大概的介绍
#其他设置
ode.name: test		#为节点添加描述
pipeline.id	#管道ID
path.plugins: 			#自定义插件路劲

#data路劲
path.data:				#logstash工作目录(插件也放这下面),默认是logstash_home/data下面

#pipeline 设置
pipeline.workers: 32							#设置logstash的工作线程数,默认是cpu的核心数
pipeline.output.workers: 4				#每个输出实例最多使用几个线程
pipeline.batch.size: 125	#设置单个线程处理文件的最大事件数,如果此值调高,可以更加容易批量处理文件,但是会增加内存开销,那就需要增加jvm.options配置文件中的JVM堆空间
pipeline.batch.delay: 5	#创建管道进行批量处理事件时,每个事件等待时间为多久(单位毫秒)

#pipeline 配置文件设置
path.config: /opt/app/logstash/etc	#logstash的pipeline配置路劲
config.string		#指定phpilne配置的字符串文件,使用与配置文件相同的语法
config.test_and_exit: false	#为ture,启动服务,测试配置文件是否有效,并退出
config.reload.automatic: false 	#为ture时,定期检查配置是否生效,并且在更改配置时,重新自动加载配置
config.reload.interval: 3		#多久检查一次配置配置(默认单位为s)

#队列
queue.type: memory			#指定事件缓存内部队列模型分为memory(队列存放于内存中)及persisted(基于磁盘的ACKed队列,实现持久化),
path.queue:					#启用持久化队列数据文件存放路劲
queue.page_capacity: 250mb	#指定启用持久化页面数据文件大小,队列数据由仅附加的数据文件组成,这个些文件被分割为多个页面,默认是250M。
 queue.max_events: 0 #指定在persisted队列中,未读事件的最大数目,为0时,无限制,默认为0.
 queue.max_bytes: 1024mb #队列的总容量。通过增大此值,可以缓冲更多的未读时间,当queue.max_events和queue.max_bytes都指定,Logstash选择第一达到条件的(默认值是1024MB)
 queue.checkpoint.acks: 1024	#启用persisted,在强制检查之前确认最大事件数,默认是1024,0无限制
 queue.checkpoint.writes: 1024	#启用persisted,在强制检查之前写入最大事件数,默认是1024,0无限制
 queue.checkpoint.interval: 1000	#启用persisted,强制检查的时间间隔(毫秒),默认1000,0无限制

#死信队列(主要存放logstash中映射错误,以及对响应无法处理的事件,在logstash默认是将这些事件挂机或者删除,只要开启死信队列功能,就会存储这些数据,以便分析)
dead_letter_queue.enable: false	#是否启用死信队列,默认是false没有启用
dead_letter_queue.max_bytes: 1024mb	#指定死信队列的最大大小,超过此值将删除条目,默认是1024(可以增大)
path.dead_letter_queue:			#指定死信队列数据存放路劲

#指标设置
http.host: "127.0.0.1"	#REST端点的绑定地址
http.port: 9600-9700 #REST端点绑定的端口,也可以是一个范围,logstash将获取第一个可用的端口

#日志设置
log.level: info		#设置日志级别(fatal error warn info (default) debug trace)
path.logs:				#日志存储路劲

配置startup.options

# vim  /opt/app/logstash/config/startup.options							#存放logstash需要的参数
JAVACMD=/opt/app/jdk/bin/java						#填写你的java路劲
LS_HOME=/opt/app/logstash								#服务主程序目录
LS_SETTINGS_DIR="${LS_HOME}/config"			#简单来说是你服务的conf目录位置(默认即可)
LS_OPTS="--path.settings ${LS_SETTINGS_DIR}"	#Arguments to pass to logstash(翻译的我也看不懂,默认即可)
LS_JAVA_OPTS=/opt/app/jdk				#填写jdk路劲即可
LS_PIDFILE=/opt/app/logstash/run/logstash.pid	#针对sysv用户启动提供设置的(就是ini.d启动用户)
LS_USER=logstash						#用户
LS_GROUP=logstash						#组		
LS_GC_LOG_FILE=/data/logs/logstash/gc.log		#指定gc日志存放位置
LS_OPEN_FILES=16384					#打开文件限制(选择默认即可)
LS_NICE=19				#默认即可
SERVICE_NAME="logstash"			#文档说明,运行多个logstash实例时非常有用
SERVICE_DESCRIPTION="logstash"

创建logstash环境变量文件

JAVACMD="/opt/app/jdk/bin/java"
LS_HOME="/opt/app/logstash"
LS_SETTINGS_DIR="/opt/app/logstash/config"
LS_PIDFILE="/opt/app/logstash/run/logstash.pid"
LS_USER="logstash"
LS_GROUP="logstash"
LS_GC_LOG_FILE="/data/logs/logstash/gc.log"
LS_OPEN_FILES="16384"
LS_NICE="19"
SERVICE_NAME="logstash"
SERVICE_DESCRIPTION="logstash"

创建logstash.service文件

# vim /etc/systemd/system/logstash.service
[Unit]
Description=logstash

[Service]
Type=simple
User=logstash
Group=logstash
EnvironmentFile=-/etc/default/logstash
#ExecStart=/opt/app/logstash/bin/logstash
ExecStart=/opt/app/logstash/bin/logstash --path.settings /opt/app/logstash/config
ExecStop=/bin/kill -s QUIT \$MAINPID
Restart=always
WorkingDirectory=/
Nice=19
LimitNOFILE=16384

[Install]
WantedBy=multi-user.target

测试:

# /opt/app/logstash/bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'  #回车输入下面内容
hello world
{
   "message" => "hello world",
   "@version" => "1",
   "@timestamp" => " ",
   "host" => "atman081.atmandomain"
}
 回车	看下是不是显示下面内容
 {
"@timestamp" => 2019-09-26T11:12:17.695Z,
  "@version" => "1",
      "host" => "test",
   "message" => "\thello world"
}
# ps aux | grep logstash #然后看下有没有对应的进程出现,出现了就代表安装成功了,如果使用system方式启动的话,最好指定定义的监控日志才行

你可能感兴趣的:(ELK,logstash,logstash安装)