ELK生态系统——logstash使用一般流程

1、logstash一般整体工作流程:

 { 各种数据源 } ==>input {输入} ==>filter {过滤器} ==>output {输出} ==>{ ES等数据输出端}

说明:就是需要在logstash中添加不同的插件,通过各种插件的组合来实现读取不同来源数据、过滤处理数据功能、输出数据到不同地方。

(1)定义.conf配置文件:

Logstash读取什么数据来源、进行如何过滤、将过滤后数据输出到什么地方,都是通过.conf格式配置文件进行定义的,.conf格式配置文件名称自己设置,默认文件保存的地方在logstash/bin中,如果放置的位置发生变化,需要在logstash.yml配置文件中通过path.config参数进行配置

注意:logstash中conf格式文件中缩进一律使用tab进行严格缩进,conf格式文件使用notepad++修改文件格式为unix格式:

要想实现多少个logstash处理数据的功能,一般就会有多少个对应的配置文件。

(2)查看logstash已安装插件:

在logstash/bin/中的logstash-plugin命令通过list进行查看:

logstash-plugin.bat list结果如下图所示:

(3)安装logstash插件:

根据.conf配置文件的功能,并且根据查看logstash中已安装插件的情况,决定是否需要安装实现.conf配置功能对应的各种插件。

(4)执行logstash命令:

Logstash可执行脚本在logstash/bin/中的logstash

执行logstash语法:

Logstash.bat -f 对应.conf配置文件的绝对路径或相对路径

(5)查看执行结果数据:

根据.conf配置文件中配置的功能需求,到对应的结果输出地方查看logstash执行完毕的结果数据是否正确。

2、Logstash的codec(通用)插件:

logstash-codec-collectd

logstash-codec-dots

logstash-codec-edn

logstash-codec-edn_lines

logstash-codec-es_bulk

logstash-codec-fluent

logstash-codec-graphite

logstash-codec-json

logstash-codec-json_lines

logstash-codec-line

logstash-codec-msgpack

logstash-codec-multiline

logstash-codec-netflow

logstash-codec-oldlogstashjson

logstash-codec-plain

logstash-codec-rubydebug

3、Logstash的input(数据来源)插件:

logstash-input-beats

logstash-input-couchdb_changes

logstash-input-elasticsearch

logstash-input-eventlog

logstash-input-exec

logstash-input-file

logstash-input-ganglia

logstash-input-gelf

logstash-input-generator

logstash-input-graphite

logstash-input-heartbeat

logstash-input-http

logstash-input-http_poller

logstash-input-imap

logstash-input-irc

logstash-input-jdbc

logstash-input-kafka

logstash-input-log4j

logstash-input-lumberjack

logstash-input-pipe

logstash-input-rabbitmq

logstash-input-redis

logstash-input-s3

logstash-input-snmptrap

logstash-input-sqs

logstash-input-stdin

logstash-input-syslog

logstash-input-tcp

logstash-input-twitter

logstash-input-udp

logstash-input-unix

logstash-input-xmpp

logstash-input-zeromq

4、Logstash的filter(数据过滤)插件:

logstash-filter-anonymize

logstash-filter-checksum

logstash-filter-clone

logstash-filter-csv

logstash-filter-date

logstash-filter-dns

logstash-filter-drop

logstash-filter-fingerprint

logstash-filter-geoip

logstash-filter-grok

logstash-filter-json

logstash-filter-kv

logstash-filter-metrics

logstash-filter-multiline

logstash-filter-mutate

logstash-filter-ruby

logstash-filter-sleep

logstash-filter-split

logstash-filter-syslog_pri

logstash-filter-throttle

logstash-filter-urldecode

logstash-filter-useragent

logstash-filter-uuid

logstash-filter-xml

5、Logstash的output(数据输出)插件:

logstash-output-cloudwatch

logstash-output-cloudwatch

logstash-output-csv

logstash-output-elasticsearch

logstash-output-email

logstash-output-exec

logstash-output-file

logstash-output-ganglia

logstash-output-gelf

logstash-output-graphite

logstash-output-hipchat

logstash-output-http

logstash-output-irc

logstash-output-juggernaut

logstash-output-kafka

logstash-output-lumberjack

logstash-output-nagios

logstash-output-nagios_nsca

logstash-output-null

logstash-output-opentsdb

logstash-output-pagerduty

logstash-output-pipe

logstash-output-rabbitmq

logstash-output-redis

logstash-output-s3

logstash-output-sns

logstash-output-sqs

logstash-output-statsd

logstash-output-stdout

logstash-output-tcp

logstash-output-udp

logstash-output-xmpp

logstash-output-zeromq

logstash-patterns-core   // 这个是过滤匹配块

6、logstash配置文件实例demo:

input {
    jdbc {
			# mysql数据库连接驱动jar包地址
			jdbc_driver_library => "E:\JavaSoft\logstash\connect_jar\mysql-connector-java-5.1.46-bin.jar"
			# mysql驱动类
			jdbc_driver_class => "com.mysql.jdbc.Driver"
			# mysql连接地址
			jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/test"
			# mysql用户名
			jdbc_user => "root"
			# mysql密码
			jdbc_password => "123456"
			
			
			# 设置当前时区,所有时间类型字段插入es中,存储为0时区时间,读取出来格式化为当前时区,时间字段不会出问题
			jdbc_default_timezone => "Asia/Shanghai"
			# 处理中文乱码问题
      codec => plain { charset => "UTF-8"}
			# mysql数据抽取sql语句,按照时间字段增量,那么一定按照增量时间字段升序排列,因为logstash会将最后一条记录时间记录下来作为增量时间分割点
			statement => "select * from test_one where insert_time >= :sql_last_value order by insert_time asc"
			
			# 增量同步数据配置开始
			# 每次运行是否清除last_run_metadata_path 的记录,如果为true,那么每次都相当于从头开始查询所有的数据库记录
      clean_run => false
			# 是否记录上次执行结果, 如果为真,将会把上次执行到的 tracking_column 字段的值记录下来,保存到 last_run_metadata_path 指定的文件中
      record_last_run => true
			# 使用字段值
      use_column_value => true
			# 追踪字段名称,该字段在Mysql中类型必须为timestamp类型,即带有时区的时间
			tracking_column => "insert_time"
			# 追踪字段类型
			tracking_column_type => "timestamp"
			# 上一次运行数据保存路径,建议文件名命名规则:.数据库类型_sync_表名_增量时间字段,文件名强烈添加.前缀,这样在linux中为隐藏文件,不容易被删除。
      last_run_metadata_path => "E:\JavaSoft\logstash\logstash-6.5.0\config\.mysql_sync_test_one_insert_time"
			# 增量同步数据配置结束
			
			# 数据存储到es中type名称
			type => "test"
  }
}
output {
    elasticsearch {
				# 数据存储在es中index名称,从input中传递过来的参数中配置好了
        index => "test_one_index"
				# 数据存储在es中index内type名称,从input中传递过来的参数中配置好了
        document_type => "%{type}"
				# 数据存储在es中每条数据的document_id唯一标识符,强烈建议使用mysql数据中主键ID,这样可以实现es中数据更新效果
				document_id => "%{id}"
				# 访问es地址
        hosts => "127.0.0.1:9200"
    }
}

猜你喜欢

转载自blog.csdn.net/LSY_CSDN_/article/details/91403943