elasticsearch logstash使用说明
*****************************
logstash 简述
logstash从输入源接受数据,直接发送达目的地,或者对数据进行过滤后在传输到目的地
输入源:logstash支持多种输入源,如:stdin、beats、elasticsearch、file、jdbc、redis等
过滤器:logstash提供多种过滤器,过滤器可不使用,如:grok、geoip、date等
输出源:logstash支持多种输出源,如:elasticsearch、redis、stdout等
*****************************
logstash 配置说明
配置文件位置:/usr/share/logstash/config/logstash.yml
默认配置
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]
管道配置:/usr/share/logstash/pipeline/logstash.conf
输入配置
#控制台输入
input {
stdin {
}
}
#beats输入
input {
beats {
port => 5044
}
}
#file输入
input {
file {
path => "/var/log/*"
exclude => "*.gz"
}
}
*********************
filter过滤器
filter {
grok {
match => { "message" => "pattern" }
}
geoip {
source => "source_string" #source_string为ip地址或者hostname
}
date {
match => [ "timestamp" , "timestamp_pattern" ]
}
}
*********************
输出配置
#输出到控制台
output {
stdout { codec => json } #codec默认为rubydebug
}
#输出到elasticsearch
output {
elasticsearch {
hosts => ["localhost:9200"]
user => "username"
password => "password"
index => "index_name"
document_id => "%{id}" #使用数据库的id字段
#document_type不推荐使用,不使用时默认为:_doc
}
}
*****************************
docker 运行logstash
下载镜像
docker pull docker.elastic.co/logstash/logstash:7.5.1
管道配置示例:从控制台输入,并输出到控制台
input {
stdin {
}
}
output {
stdout { codec => json }
}
docker创建logstash容器
docker run -it -d --ip 172.18.0.3 -p 5044:5044 \
-v /usr/elasticsearch/logstash/conf/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
--name logstash docker.elastic.co/logstash/logstash:7.5.1
*********************
控制台输出