在使用elk进行日志分析时,我们需要三个关键步骤:部署logstash客户端、配置正则抽取文件以及在elasticsearch集群上验证结果。本文将重点介绍如何部署logstash客户端以及如何设置正则抽取文件。1. logstash客户端部署对于logstash版本的选择,我们采用的是5.6.3版本。从elasticsearch官方网站下载对应版本的logstash并进行解压即可使用。客户端部署过程相对简单。启动命令示例:nohup bin/logstash -f log.conf > /dev/null & 或者 bin/logstash -f log.conf。2. 如何配置正则抽取文件假设日志内容如下:2017-11-20 19:33:02.327 [Thread-65] INFO LogDemo - type:recv,taskId:17952929,count:3002017-11-20 19:33:02.327 [Thread-65] INFO LogDemo - type:collect,time:201711161138,partiton:90,taskId:17952929,count:12目标是从第一行日志中抽取timestamp、type、taskId、count四个字段,第二行日志中抽取timestamp、type、time、partition、taskId、count六个字段。配置如下:针对第一个目标,正则表达式为:match => {"message" => "%{TIMESTAMP_ISO8601:logdate}.* - type:%{WORD:type},taskId:%{BASE10NUM:taskId},count:%{BASE10NUM:count}"}针对第二个目标,正则表达式为:match => {"message" => "%{TIMESTAMP_ISO8601:logdate}.* - type:%{WORD:type},time:%{BASE10NUM:time},partiton:%{BASE10NUM:partiton},taskId:%{BASE10NUM:taskId},count:%{BASE10NUM:count}"}选择grok插件,进行字段转换。正则表达式仅截取所需字段,但字段默认类型为string,无法用于统计计算。因此,需要进行字段类型转换。3. 验证结果配置完成后,运行bin/logstash -f log.conf命令上报日志。在elasticsearch所在机器上查看mapping,验证配置结果。使用curl命令执行:curl -XGET 10.248.47.82:9200/logstash-test-2017.11.17/_mappings?pretty。通过结果展示,确认配置成功。注意,当字符串中出现[和]时,需要使用转义符号\[ \]。