ELK详解(十二)——多行日志收集

今天继续给大家介绍Linux运维相关知识,本文主要内容是Logstash的多行日志收集。

一、Logstash日志收集新问题

在前文ELK详解(八)——Logstash收集系统日志实战ELK详解(九)——Logstash多日志收集实战ELK详解(十)——Logstash收集Tomcat日志实战几文中,我们使用Logstash进行了日志收集实战,已经可以通过Logstash收集指定的日志,并且将其输出到我们Elasticsearch集群上,并最终在Kibana上显示。
今天,我们要讨论一些特殊日志的Logstash收集方式。以ELK日志为例,其中一个日志片段如下所示:
在这里插入图片描述
可以看出,在上图中红圈部分,是一些JAVA(事实上,ELK就是依赖于JAVA环境而,所以才有JAVA的报错)的报错信息。这些信息分了多行列出,但是这些信息却在本质上算一条“日志信息”。因此,我们希望Logstash在日志收集的时候,把这些信息看做一条日志信息来进行收集。事实上,这种日志格式是非常常见的,几乎所有基于JAVA开发的项目,都面临这样的问题。
为解决上面的问题,我们需要重新指定划分日志的依据,观察上面的日志格式,我们可以发现,每一条日志,基本上都是以换行符加上左中括号开头的,基于这种规则,我们就可以正确的划分日志,解决上述问题。而这种划分原理的实现,依托于Logstash中codec模块的multiline插件。

二、Logstash配置详解

首先,我们先来写一下Logstash的配置文件,内容如下:

input{
        file{
                path=>"/var/log/elasticsearch/my-elk.log"
                type=>"elk"
                start_position=>"beginning"
                stat_interval=>"5"
                codec=>multiline{
                        pattern=>"^\["
                        negate=>"true"
                        what=>"previous"
                }
        }
}

output{
        elasticsearch{
                hosts=>["192.168.136.101:9200"]
                index=>"elk-log-%{+YYYY.MM.dd}"
        }
}

在上述配置中,input输入使用了codec的multiline插件,里面有3个参数,pattern参数指定了匹配的模式,“^”表示开头,“\”表示转义,“[”为左中括号的意思;negate表示匹配成功的操作,相反,若想设置为匹配失败,则可以将negate设置为false;what为previous表示与之前的内容进行合并,如果想要设置为和之后的内容合并,可以将该值设置为next。
在完成上述配置后,我们执行命令:

logstash -f /etc/elasticsearch/conf.d/elk-log.conf

用于执行日志收集命令。

三、效果展示

最后,我们来检验一下刚才配置的结果。
执行完日志收集后,我们来到Elasticsearch上,查看发现有指定的日志,结果如下所示:
在这里插入图片描述
接下来,我们前往Kibana上查看日志信息,发现包含JAVA报错(告警)信息的日志已经称为了单个日志,不再分裂,结果如下:
在这里插入图片描述
由此可见,我们的Logstash多行日志收集成功!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要远程采集日志,需要在目标服务器上安装一个日志采集代理,如Logstash或Filebeat。然后,将代理配置为将日志发送到Elasticsearch集群中的一个或多个节点。 以下是大致步骤: 1. 在目标服务器上安装Logstash或Filebeat 2. 配置代理以获取要采集的日志 3. 配置代理以将日志发送到Elasticsearch集群中的节点 4. 在Elasticsearch中创建适当的索引模板和搜索查询以检索日志 具体来说,可以按照以下步骤进行操作: 1. 安装Logstash或Filebeat 对于Logstash,可以按照官方文档中的指南进行操作。对于Filebeat,也可以按照官方文档中的指南进行操作。 2. 配置代理 在Logstash或Filebeat中,需要配置输入和输出。输入是指要采集的日志文件或数据源,输出是指将日志发送到Elasticsearch集群中的节点。 例如,在Filebeat中,可以使用以下配置: ``` filebeat.inputs: - type: log enabled: true paths: - /var/log/myapp/*.log output.elasticsearch: hosts: ["http://es-node1:9200", "http://es-node2:9200"] ``` 这将采集`/var/log/myapp/*.log`中的日志,并将其发送到`es-node1`和`es-node2`节点上的Elasticsearch。 3. 创建索引模板和搜索查询 在Elasticsearch中,需要创建一个适当的索引模板以确保日志正确地解析和存储。还可以创建搜索查询以检索和过滤日志。 例如,可以使用以下示例索引模板: ``` PUT _template/myapp_logs { "index_patterns": ["myapp-*"], "settings": { "number_of_shards": 1 }, "mappings": { "properties": { "timestamp": { "type": "date" }, "message": { "type": "text" }, "tags": { "type": "keyword" } } } } ``` 此模板指定了一个索引模式,即`myapp-*`,并定义了索引中的字段。还可以创建搜索查询以检索和过滤日志。 总之,远程采集日志需要配置日志采集代理,并将其配置为将日志发送到Elasticsearch集群中的节点。然后,在Elasticsearch中创建索引模板和搜索查询以检索日志

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远是少年啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值