bin目录下
1: ./logstash -e "input {stdin {}} output {stdout{}}"
主要是输入和过滤 及 输出流程
例子2:
./bin/logstash -e "input {stdin {}} output {stdout{codec => plain}}"
2:通过定义conf文件来执行:
input { stdin { } }
filter {
grok {
match => {
"message" => "%{WORD:request}\?client=%{WORD:client}&areaCode=%{NUMBER:area}&netWorkId=%{NUMBER:net}"
}
remove_field => ["message"]
}
}
output { stdout {} }
1:一个是删除lock,一个是删除上次的偏移量
操作之前 ,删除.lock
std_es.conf 如下:
input {
stdin { }
}
output {
elasticsearch {
hosts => ["http://121.40.42.216:9200"]
index => "mystdin"
user => "elastic"
password => "elasticCll" }
}
注:会自动创建索引
参考网址1:
ELK快速入门(二)通过logstash收集日志 - 别来无恙- - 博客园
logstash收集tomcat日志
参考网址2:logstash采集日志_木子金丰的博客-优快云博客_logstash日志收集
grok表达式 参考 Grok常用表达式_zhangsaho的博客-优快云博客_grok表达式
input {
file{
path => "E:/devetool/apache-tomcat-7.0.77/logs/catalina.2019-07-18.log"
codec => plain{ charset => "GBK" }
type => "tomcat-catalina"
}
file{
path => "E:/devetool/apache-tomcat-7.0.77/log/disconf-log4j.log"
type => "disconf-log4j"
#多行日志合并
codec => multiline{
negate => true #是否匹配到
pattern => "(?<datetime>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}.\d{3})" #匹配的正则
what => "previous" #将没匹配到的合并到上一条,可选previous或next, previous是合并到匹配的上一行末尾
}
}
}
#从采集的数据处理
filter{
grok{
match => {"message" => "(?<logdatetime>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})"}
remove_field => "logdatetime"
add_field =>{
"from" => "lifeng"
}
}
date{
match => ["logdatetime", "yyyy-MM-dd HH:mm:ss,SSS"] #这里是如果datetime跟后面的格式匹配上了就会去替换,替换什么呢?target默认指的就是@timestamp,所以就是以datetime的时间更新@timestamp的时间
target => "@timestamp"
}
}
output{
if[type] == "tomcat-catalina"{
elasticsearch{
hosts => "localhost:9200"
index => "tomcat-catalina-%{+YYYY.MM.dd}" #索引名称
document_type => "tomcat-catalina" #type
}
}
if[type] == "disconf-log4j"{
elasticsearch{
hosts => "localhost:9200"
index => "disconf-log4j-%{+YYYY.MM.dd}" #索引名称
document_type => "disconf-log4j" #type
}
}
stdout{
}
}
Grok表达式
55.3.244.1 GET /index.html 15824 0.043
%{IP:client}\s*%{WORD:method}\s*%{URIPATHPARAM:request}\s*%{NUMBER:bytes}\s*%{NUMBER:duration}
结果如下
127.0.0.1 - - [03/Nov/2021:15:47:20 +0800] "POST /ewj_market/admin/MarketAccountLog/Com_list.action HTTP/1.1" 200 26205
grok表达式1
%{IP:ip}\s*(-\s*)+\[%{HTTPDATE:date}\]\s*\"%{WORD:method}\s*%{NOTSPACE:requestPath}\s*%{NOTSPACE:uri}\"\s*%{POSINT:status}\s*%{POSINT:port}
grok表达式2
%{IP:ip}\s*(-\s*)+\[%{HTTPDATE:date}\]\s*\"%{WORD:method}\s*%{NOTSPACE:requestPath}\s*%{NOTSPACE:uri}\"\s*%{INT:status}\s*%{POSINT:port}
127.0.0.1 - - [03/Nov/2021:15:47:21 +0800] "GET /ewj_market/common_res/js/base64UTF8.js?_=1635925641868 HTTP/1.1" 200 3005
grok表达式
%{IP:ip}\s*(-\s*)+\[%{HTTPDATE:date}\]\s*\"%{WORD:method}\s*%{NOTSPACE:requestPath}\s*%{NOTSPACE:uri}\"\s*%{POSINT:status}\s*%{POSINT:port}