目录

一、业务场景

二、系统的搭建

2.1.参考链接 

2.2. 安装步骤

2.2.1. 安装Docker ELK

2.2.2. 启动

2.2.3. 更改logstash细化配置

三、logstash实现日志过滤

3.1. 新建自定义规则

3.2. 更改logstash配置


一、业务场景

现在公司的日志都是直接用logback打印log文件保存,最多也只是对保存的log文件进行管理,并没有对日志进行细化管理,一旦需要查询某些错误日志,就必须在服务器查找,先不说linux下没有图形化界面有多不方便,光是查询速度就让人吐血,故才有此系统的实现。

二、系统的搭建

2.1.参考链接 

这一块主要参考了的搭建步骤,个人只是在此基础上进行完善

2.2. 安装步骤

docker的安装搭建不多赘述,如有需要请自行查询。

2.2.1. 安装Docker ELK

docker pull sebp/elk

2.2.2. 启动

docker run -p 5601:5601 -p 9200:9200 -p 5044:5044  -e ES_MIN_MEM=128m --name elk -v /home/fxms/stg/fxms-operate/logs:/home sebp/elk

注意:-v 是把我的文件夹挂载到docker容器下,详细说明一下,-v后面/home/fxms/stg/fxms-operate/logs:/home,冒号前面"/home/fxms/stg/fxms-operate/logs"指的是我宿主主机的绝对路径(这里就是我日志文件存放的文件夹),冒号后面“/home”指的是docker容器内部的绝对路径(我随便指定的)。

2.2.3. 更改logstash细化配置

  • 进入容器内部
docker exec -it <container-name> /bin/bash

这里因为我们上面启动的时候,--name elk 重命名过容器,即容器名字为elk,把<container-name>替换为elk即可进入

  • 关闭logstash服务
service logstash stop
  • 进入/opt/logstash/bin/新建配置logstash.conf

docker logback docker logback日志_docker logback

不一定在bin下新建,也可以在其他地方,我只是为了下一步方便而已

  • 接下来编辑logstash.conf
input
{
    file {
        path => ["/home/test.txt"]
        start_position => beginning
       codec=>plain{
            charset=>"UTF-8"
        }
    }

}

output
{

    elasticsearch
    {
        hosts => "localhost:9200"
		index => "fxmslogs-%{+YYYY.MM.dd}"

    }

    stdout
    {
		codec => rubydebug
    }

}

这里说明一下,input-file里面的path路径,指的是容器内部的绝对路径,所以之前我们才需要把宿主主机的文件夹挂载到这,如何这里可以使用通配符*等等。start_position意思是重头开始读取文件,如果不加入这个,默认只有当文件进行变动的时候才会读取变动的内容(防止踩坑)

  • 启动logstash
bin/logstash -f bin/logstash.conf

注意路径即可

三、logstash实现日志过滤

主要利用了logstash的filter的grok属性,相关内容自行查询,参考链接:

3.1. 新建自定义规则

docker logback docker logback日志_绝对路径_02

具体原因可以参考上面的链接

myself

MYSELF [\s\S]*
MYSELFTIMESTAMP 20%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:?%{MINUTE}(?::?%{SECOND})
GROKLOG %{MYSELFTIMESTAMP:timestamp} %{LOGLEVEL:loglevel} %{NUMBER:line} %{MYSELF:class} : %{MYSELF:result}

3.2. 更改logstash配置

input
{
    file {
        path => ["/home/operate-console-2019-03-25.out"]
        start_position => beginning
       codec=>plain{
            charset=>"UTF-8"
        }
    }

}

filter{

    grok{
            patterns_dir => "/opt/logstash/mypatterns"
            match => {
                "message" => ["%{GROKLOG}","%{MYSELF:result}"]
            }   
            overwrite => ["message"]
    }

}

output
{

    elasticsearch
    {
        hosts => "localhost:9200"
                index => "fxmslogs-%{+YYYY.MM.dd}"

    }

    stdout
    {
                codec => rubydebug
    }

}

重启logstash,即可

3.3. kibana查看

  • management里面配置index,具体自行查询,很简单的,不会就*哈哈哈
  • discover搜索

docker logback docker logback日志_Docker_03

  • 上下文查看

docker logback docker logback日志_docker_04