0、官网
https://www.elastic.co/guide/en/logstash/6.0/input-plugins.html
1、file
- 从文件中采集数据,类似于Flume中学的taildir
- 数据源:文件、数据库、数据流
vim usercase/input-file-test.json
input{
file{
path => "/home/es/tomcat.log"
type => "log"
start_position => "beginning"
}
}
output{
stdout{
codec=>rubydebug
}
}
- path:是一个必填的属性,表示采集的文件地址
- 这是一个数组类型,可以采集多个文件,支持通配符
- 如果你要采集某个目录下所有文件
- dir/*.log
- sincedb_path :类似于flume的taildir中的position_file
- 记录每个文件当前被采集的位置
- 下次再启动时,避免重复采集
- 记录每个文件当前被采集的位置
- exclude :指定哪些文件不采集
- 类似于Flume的spooling dir中讲到的ignoreParttern
- exclude => “*.tmp”
- 类似于Flume的spooling dir中讲到的ignoreParttern
- 运行
bin/logstash -f usercase/input-file-test.json
2、jdbc
- 功能:用于采集数据库中的数据库
- 采集类型 :全量或者增量
- 指定列 或者行进行采集
- 全量
vim usercase/input-jdbc1.json
input {
jdbc {
jdbc_driver_library => "/home/es/mysql-connector-java-5.1.38.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://192.168.1.9:3306/test"
jdbc_user => "root"
jdbc_password => "123456"
use_column_value => true
tracking_column => "id"
schedule => "*/1 * * * *"
statement => "SELECT * from wcresult where number > 10;"
}
}
output{
stdout{
codec=>rubydebug
}
}
- jdbc_driver_library:指定连接驱动包
- jdbc_driver_class:指定连接驱动类
- jdbc_connection_string:连接的数据库地址
- jdbc_user:用户名
- jdbc_password:密码
- schedule:多长时间执行一次
- statement:你要采集的数据
- 增量
vim usercase/input-jdbc2.json
input {
jdbc {
jdbc_driver_library => "/home/es/mysql-connector-java-5.1.38.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://192.168.1.9:3306/test"
jdbc_user => "root"
jdbc_password => "123456"
use_column_value => true
tracking_column => "id"
schedule => "*/1 * * * *"
statement => "SELECT * from wcresult where number > 10 and id > :sql_last_value;"
}
}
output{
stdout{
codec=>rubydebug
}
}
- use_column_value:使用某一列的值来做增量标记
- tracking_column:使用哪一列作为增量的列
- 必须在SQL中指定增量的条件: id > :sql_last_value;
3、tcp
vim usercase/input-tcp.json
input{
tcp {
host => "node-01"
port => 45454
mode => "server"
ssl_enable => false
}
}
output{
stdout{}
}
4、syslog
- rsyslog:将系统产生的日志以tcp或者udp发送到对应的端口
- 先配置该服务的配置文件
sudo vim /etc/rsyslog.conf
#添加下面这行
*.* @@node-01:6789
#重启该服务
sudo /etc/init.d/rsyslog restart
vim usercase/input-syslog.json
input{
tcp{
port=> 6789
type=> syslog
}
udp{
port=> 6789
type=> syslog
}
}
filter{
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
output{
stdout{
codec=> rubydebug
}
}