docker部署elk实现对logback日志过滤分析
目录
一、业务场景
现在公司的日志都是直接用logback打印log文件保存,最多也只是对保存的log文件进行管理,并没有对日志进行细化管理,一旦需要查询某些错误日志,就必须在服务器查找,先不说linux下没有图形化界面有多不方便,光是查询速度就让人吐血,故才有此系统的实现。
二、系统的搭建
2.1.参考链接
这一块主要参考了https://www.cnblogs.com/soar1688/p/6849183.html的搭建步骤,个人只是在此基础上进行完善
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
不一定在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属性,相关内容自行查询,参考链接:https://blog.****.net/qq_34021712/article/details/79754356
3.1. 新建自定义规则
具体原因可以参考上面的链接
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搜索
- 上下文查看