9.Logstash配置

主要配置logstash-sample.conf配置文件

#文件 logstash-sample.conf

#input 监听filebeat端口5044
input {
	beats {
		port => 5044
	}
}

filter {
	#grok正则转换【注:(%{GREEDYDATA:kylinRequest}) 匹配剩余所有数据,使用\转译符号】
	grok {
		#匹配满足要求的massage,可以配置对各match,即可以匹配多个日志,注意配置不能相互干扰
		match => {"message" => ""} #根据日志,配置grok正则转换,到""中
	}
	#对数据中存在json的字段进行单独处理,例举:【若json中存在\转译符,会出现单个数据不全的情况】
	#去除\n和空值
	mutate {
		strip = ["json"]
	}
	#转为json并赋值给target
	json {
		source => "json"
		target => "kylinRequest"
	}
	
	#删除不需要的数据,以逗号分割
	mutate {
		remove_field => ["message","json"]
	}
	
	# @timestamp与我们时区差8小时,配置
	ruby {
		code => "event.set('timestamp',event.get('@timestamp').time.localtime + 8*60*60)"
	}
	ruby {
		code => "event.set('@timestamp',event.get('timestamp'))"
	}
	mutate {
		remove_field => ["timestamp"]
	}
}

output {
	#输出至控制台[生产环境要注释]
	stdout {
		codec => rubydebug
	}
	#输出至elasticsearch
	elasticsearch {
		hosts => ["192.168.88.111:9200","192.168.88.112:9200","192.168.88.113:9200"]
	}
	#配置index,每天跟随时间新建index
	indexn => "wyw_%{+YYYYMMdd}"
	#配置document
	document_type => "kylin"
	#若配置登录认证,需要配置es的登录账号和密码,例举
	user => "elastic"
	password => "123456"
}

如果是多地址,多index输出

#在Logstash配置中使用判断
filter {
  if [filetype] == "log_kylin"{
    grok {
      match => {"message" => ""}
    }
  } else if [filetype] == "log_AAA"{
  
  }
}
output {
  if [filetype] == "log_kylin"{
    grok {
      match => {"message" => ""}
    }
  } else if [filetype] == "log_AAA"{
  
  }
}

启动logstash

#正常启动
bin/logstash -f logstash-sample.conf --config.reload.automatic
#配置地址启动
bin/logstash -f logstash-sample.conf --path.data=/home/es1/logstash-6.5.4/test --config.reload.automatic
#后台启动,不生成日志
nohup bin/logstash -f logstash-sample.conf --path.data=/home/es1/logstash-6.5.4/test --config.reload.automatic >dev/null 2>&1 &

样例配置

input {
  beats {
    port => 5044
  }
}

filter {
  # grok正则转换 【注:(%{GREEDYDATA:json1}|-) 匹配所有数据】
  grok {
    match => {"message" => "%{TIMESTAMP_ISO8601:time} %{LOGLEVEL:loglevel} %{NUMBER:number} --- \[%{USERNAME:XNIO} %{USERNAME:task}\] %{USERNAME:KylinService}\s*\: %{USERNAME:-}\: %{NUMBER:logId}\, %{DATA:-}\: %{USERNAME:serviceId|-}\, %{DATA:-}\: \{%{GREEDYDATA:kylinRequest|-}\}"
    }
	
	# 删除不需要的字段
	#remove_field => ["message","unwanted","fields","tags","input","host","beat"]	

  }
  # 去除\n 和空值[字符串可能存在空值、\n等特殊字符]
#  mutate {
#    strip => ["json1"]
#  }
  # 转为json 并赋值给target
#  json {
#    source => "json1"
#	target => "kylinRequest"
#  }
  # 添加json字段
  
  
  # 删除处理前的数据
#  mutate {
#    remove_field => ["json1"]
#  }
  
  
  
# @timestamp与我们时区差8个小时,下面添加配置处理
  ruby{
    code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)" 
  }
  ruby{
    code => "event.set('@timestamp',event.get('timestamp'))" 
  }
  mutate {
    remove_field => ["timestamp"]
  }
}

output {
  stdout {codec => rubydebug}
  elasticsearch {
    hosts=> ["192.168.88.111:9200","192.168.88.112:9200","192.168.88.113:9200"]
	#index => "english"
	user => "elastic" # 注意:这里演示使用超级账号,安全起见最好是使用自定义的账号,并授予该用户创建索引的权限,具体看下方地址
    password => "1234567" # 密码是上面步骤设置的
  }
}

logstash 设置字段类型

logstash可以设置字段类型为 integer,string,float,boolean

filter{
  mutate{
    convert => ["handleTime","integer"] 
  }
}

自己不创建模板,es会自动给我们创建模板,这里es自动创建的模板为keyword,我们可以使用上面的在logstash中修改字段类型

  • 查看模板命令
10.181.116.83:7920/restful_20210517/_mapping?pretty
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值