LogStash 日志采集系统构建

LogStash安装
LogStash 简介
LogStash 日志采集系统构建

1. 创建配置文件

  • 在 Logstash 安装路径下的 config 目录中,新建一个 conf 文件,取名为 es_log.conf,并且填入以下内容

在这里插入图片描述

input {
  file {
	path => "/elk/elasticsearch-7.14.0/logs/my-elk.log" # 读取的日志文件
	start_position => "beginning" # 从头部读取
	codec => multiline { # 多行合并,向以“[”开头的那行文字合并
		pattern => "^\["
		negate => true
		what => "previous"
	}
  }
}

output {
  elasticsearch { # 输出到es中
    hosts => ["http://192.168.42.111:9200"] # es地址
    index => "es-log-%{+YYYY.MM.dd}" # 生成索引的名称-日期
  }
  stdout{} # 同时输出到控制台
}

2. 启动LogStash

  • 进入 Logstash 的 bin 目录执行
./logstash -f ../config/es_log.conf

3. 查看控制台打印

在这里插入图片描述

4. 查看es索引

  • 访问http://192.168.42.111:9200/_cat/indices?v,创建了当天的索引

在这里插入图片描述

5. 查询索引内容

GET /es-log-2022.03.14/_search

在这里插入图片描述

6. 细化日志信息

  • 这里的日志内容是将日志信息作为整体存入message字段的,需要进一步细化

在这里插入图片描述

  • 日志的结构是
[时间戳][日志级别][输出信息的类名][节点名]具体的日志信息
  • 可以考虑使用 grok 过滤器插件对文本进行分析后再存入 es

7. grok 过滤器

  • 在 Logstash 安装路径下的 config 目录中,新建一个 conf 文件,取名为 log_grok.conf,并且填入以下内容
input {
  file {
	path => "/elk/elasticsearch-7.14.0/logs/my-elk.log" # 读取的日志文件
	start_position => "beginning" # 从头部读取
	codec => multiline { # 多行合并,向以“[”开头的那行文字合并
		pattern => "^\["
		negate => true
		what => "previous"
	}
  }
}

filter{
	grok {
		match =>{
			message => "\[%{TIMESTAMP_ISO8601:time}\]\[%{LOGLEVEL:level}%{SPACE}\]\[%{NOTSPACE:loggerclass}%{SPACE}\]%{SPACE}\[%{DATA:nodename}\]%{SPACE} %{GREEDYDATA:msg}"
		}
	}
}

output {
  elasticsearch { # 输出到es中
    hosts => ["http://192.168.42.111:9200"] # es地址
    index => "es-log-text-%{+YYYY.MM.dd}" # 生成索引的名称-日期
    template_name => "es_template*" # 模板名称
    template => "/elk/elasticsearch-7.14.0/config" # 模板位置
  }
  stdout{} # 同时输出到控制台
}

在这里插入图片描述

“[%{TIMESTAMP_ISO8601:time}][%{LOGLEVEL:level}%{SPACE}][%{NOTSPACE:loggerclass}%{SPACE}]%{SPACE}[%{DATA:nodename}]%{SPACE} %{GREEDYDATA:msg}”
格式就是%{预定义模式:字段名},这个字段名就是es中_source中的映射

  • 如果担心自己写的 conf 有语法问题,可以执行
./logstash -f ../config/es_log_grok.conf -t
  • 显示下面内容,说明语法没有问题

在这里插入图片描述

  • 这里除了配置过滤器之外,还要创建一个es的模板文件用于定义索引的 mapping(映射),注意要和对日志的分解一一对应,不然就不能输出到es中

在这里插入图片描述

  • 默认的logstash模板可以通过下面命令查看
get _template/logstash

在这里插入图片描述

8. 创建es模板文件

  • 在 config 目录下创建一个 es_template.json
{
    "template": "es-log-text-%{+YYYY.MM.dd}",
    "settings": {
        "index.refresh_interval": "1s"
    },
    "mappings": {
        "properties": {
            "time": {
                "type": "date"
            },
            "level": {
                "type": "keyword"
            },
            "loggerclass": {
                "type": "keyword"
            },
            "nodename": {
                "type": "keyword"
            },
            "msg": {
                "type": "text"
            },
            "message": {
                "type": "text"
            }
        }
    }
}

在这里插入图片描述

9. 启动LogStash

  • 启动前先到logstash 的/data/plugins/inputs/file 目录下,删除.sincedb 文件,这个文件是个隐藏文件,需要使用ls -al才能显示,删除后再启动。(这个文件记录了之前读取日志的最后位置,导致下次读取时,前面的日志读会取不到)

在这里插入图片描述

./logstash ../config/es_log_grok.conf 

在这里插入图片描述

  • 创建出索引 es-log-text-2022.03.14

在这里插入图片描述

  • 需要细化的5个字段全部都展示出来了

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值