Logstash使用说明

Logstash使用说明

1、输出插件

  1. 标准输入stdin

    配置如下:

    input {
    	stdin {
    		add_field => {"key" => "value"}
    		codec => "plain"
    		tags => ["add"]
    		type => "std"
    	}
    }
    
    output {
      stdout { codec => rubydebug }
    }
    

    启动命令:bin/logstash -f stdin-test.conf,等到启动成功以后在控制台输出Hello World001进行测试如下:

    Hello World001    
    {
           "message" => "Hello World001",
          "@version" => "1",
        "@timestamp" => 2019-09-05T15:40:58.763Z,
              "type" => "std",
               "key" => "value",
              "host" => "localhost.localdomain",
              "tags" => [
            [0] "add"
        ]
    }
    
    

    type、tags是Logstash特殊字段,相关配置示例:

    input {
    	stdin {
    		type => "web"
    	}
    }
    
    filter {
    	if [type] == "web" {
    		grok {
    			match => ["message", %{COMBINEDAPACHELOG}]
    		}
    	}
    }
    
    output {
    	if "_grokparsefailure" in [tags] {
    		nagios_nsca {
    			nagios_status => "1"
    		}
    	} else {
    		elasticsearch {}
    	}
     
    }
    
    数据类型类型说明示例
    bool希尔值 true or falsedebug => true
    string字符串host =>hostname
    number数值port => 9600
    array数组match => [“datetime”,“UNIX”,“ISO8601”]
    hash哈希option => {key1 => “value1”,key2 => “value2”}
  2. 文件输入

    配置文件示例如下:

    Logstash会监听文件变化,同时跟踪被监听日志文件的当前读取位置。

    input {
    	file {
    		path => ["/var/log/*.log","/var/log/message"]
    		type => "system"
    		start_position => "beginning"
    	}
    }
    
    配置项配置说明
    discover_interval多长时间检查监听路径下是否有新文件,默认15秒
    stat_interval多长时间检查一次文件是否有更新,默认1秒
    exclude排除不需要监听的文件
    start_position从什么位置开始读取文件,默认是结束位置,“beginning”表示从头开始
    close_older文件超过这个时间无变化,就关闭对它的监听,默认3600秒
    ignore_older文件修改时间超过这个值,就忽略这个文件,默认一天
  3. TCP输入

    1. 提供推送服务

      不需要等待有新数据输入被监听的文档,推送结束就可以知道任务完成了。

      input {
      	#提供对外服务接口,例如backlog配置推送地址
      	tcp {
      		port => 8866
      	}
      }
      
      output {
        stdout { codec => rubydebug }
      }
      

      通过终端推送数据:nc 127.0.0.1 8866 < data

    2. 主动抓取,http_poller抓取

      通过其他业务系统RESTful接口获取相关数据,配置示例如下:

      input {
      	http_poller {
      		urls => {
      			0 => {
      				method => get
      				url => "http://127.0.0.1:8888/demo/format/json1"
      				headers => {
      					Accept => "application/json"
      				}
      				auth => {
      					user => "zhasan"
      					password => "123456"
      				}
      			}
      			
                  1 => {
      				method => get
      				url => "http://127.0.0.1:8888/demo/format/json2"
      				headers => {
      					Accept => "application/json"
      				}
      				auth => {
      					user => "zhasan"
      					password => "123456"
      				}
      			}
      		}
      		
      		request_timeout => 60
      		#60秒主动调用接口获取数据
      		interval => 60
      		codec => "json"
      	}
      }
      
      output {
        stdout { codec => rubydebug }
      }
      

2、编解码

  1. JSON编解码

    配置示例:

    input {
    	file {
    		path => "var/*.log"
    		codec => "json"
    	}
    }
    
  2. 多行事件编码

    配置如下:

    input {
    	stdin {
    		codec => multiline {
    			#正则表达式,直到下一行数据匹配成功才会输出
    			pattern => "^\["
    			negate => true
    			what => "previous"
    		}
    	}
    }
    

3、过滤器

  1. date事件处理,logstash-filter-date插件

    配置示例:

    filter {
    	grok {
    		match => ["message","%{HTTPDATE:logdate}"]
    	}
    	date {
    		#时间设置
    		match => ["logdate", "dd/MM/yyyy:HH:mm:ss Z"]
    	}
    }
    
    filter {
    	grok {
    		match => {
    			#正则表达式匹配数据
    			"message" => "\s+(?<request_time>\d+(?:\.\d+)?)\s+"
    		}
    	}
    }
    

4、输出插件

  1. 输出到Elasticsearch

    配置示例:

    output {
    	elasticsearch {
    		#es集群地址
    		hosts => ["127.0.0.1:9200"]
    		#索引名称设置,以+号开始默认为时间格式,索引不能有大写字母
    		index => "logstash-%{type}-%{+YYYY.MM.dd}"
    		#文档类型
    		document_type => "%{type}"
    		#批量发送数据2000条
    		flush_size => 2000
    		#10秒以后批量发送
    		idle_flush_time => 10
    	}
    }
    
  2. 发送email

    配置示例:

    output {
    	email {
    		port => ""
    		address => "smtp.126.com"
    		username => "test@126.com"
    		password => ""
    		authentication => "plain"
    		use_tls => true
    		from => "test@126.com"
    		subject => "Warning: %{title}"
    		to => "405414011@qq.com"
    		via => "smtp"
    		body => "%{message}%"
    	}
    }
    
  3. 保存输出到文件

    配置示例:

    output {
    	file {
    		path => "/path/to/%{+yyyy}/%{+mm}/%{+dd}/%{+HH}/%{host}.log.gz"
    		#默认输出JSON格式数据,以下设置为不改变原始数据格式
    		message_format => "%{message}"
    		gzip => true
    	}
    }
    

5、Mysql慢查询日志

配置示例:

input {
	file {
		type => "mysql-slow"
		path => "var/log/myql/mysql-slow.log"
		codec => multiline {
			pattern => "^# User@Host:"
			negate => true
			what => "previous"
		}
	}
}

filter {
	grok {
		match => {"message" => "SELECT SLEEP"}
		#成功时添加
		add_tag => {"sleep_drop"}
		#仅在失败时添加
		tag_on_failure => [] # prevent default _grokparsefailure tag on real records
	}
	if "sleep_drop" in [tags] {
		drop {}
	}
	grok {
		match => [正则]
	}
	date {
		match => ["timestamp","UNIX"]
		remove_field => ["timestamp"]
	}
}

6、Redis队列

  1. 配置示例:

    input {
    	redis {
    		data_type => "pattern_channel"
    		key => "logstash-*"
    		host => "127.0.0.1"
    		port => 6379
    		threads => 5
    	}
    }
    
  2. 进行测试

    # redis-cli
    127.0.0.1:6379> PUBLISH logstash-demochan "hello world"
    #结果如下
    {
    	"message" => "hello world",
    	"@version" => "1",
    	"@timestamp" => "2019-9-6T16:01:09.365Z"
    }
    
你好!要使用Logstash,首先需要安装和配置它。以下是一些基本步骤: 1. 下载并安装Logstash:你可以从Logstash官方网站(https://www.elastic.co/logstash)上下载适用于你的操作系统的安装包。按照官方文档提供的说明进行安装。 2. 创建配置文件:在安装目录中找到并编辑Logstash的配置文件,通常是在`config`目录下的`logstash.yml`文件。根据你的需求,配置输入(从哪里获取数据)、过滤(对数据进行处理)和输出(将数据发送到目标位置)。 3. 配置输入:在配置文件中添加输入插件,指定从哪里获取数据。例如,如果要从文件中读取数据,可以使用`file`插件。根据插件的要求配置相关参数,如文件路径、格式等。 4. 配置过滤:在配置文件中添加过滤器插件,用于处理输入数据。可以使用各种插件执行过滤操作,如`grok`用于解析日志、`mutate`用于转换字段、`date`用于解析日期等。根据需要按顺序添加并配置这些插件。 5. 配置输出:在配置文件中添加输出插件,将处理后的数据发送到目标位置。可以选择将数据发送到Elasticsearch、Kafka、数据库等。根据插件的要求配置相关参数。 6. 启动Logstash:在命令行中导航到Logstash的安装目录,并运行`bin/logstash -f path/to/config.conf`命令,其中`path/to/config.conf`是你的配置文件路径。 这些是使用Logstash的基本步骤。根据你的实际需求,可能还需要进一步配置和调整。记得查看官方文档以获取更详细的信息和示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值