使用ES解析日志字段

本文详细介绍了如何使用Elasticsearch(ES)、Kibana和Filebeat搭建日志分析系统。首先,文章提及了ES的Java依赖、Kibana的可视化作用以及Filebeat的数据收集功能。接着,提供了7.7.0版本的软件下载链接,并介绍了安装过程。重点讲解了Elasticsearch的配置文件,包括cluster.name、node.master、network.host等关键配置。此外,还讨论了Kibana的配置,如elasticsearch.hosts和server.port。Filebeat配置文件的介绍包括监控日志路径和设置Kibana、Elasticsearch的主机端口。文章最后详述了ingest node的概念、pipeline的定义、常用的processors类型及其应用场景,并给出了使用ingest node解析日志字段的案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.es的背景
(1)Elasticsearch基于Java语言开发,所以在安装Elasticsearch之前必须先安装JDK,Elasticsearch7要求安装JDK1.8以上版本;
(2)kibnan在ELK家族中主要起到数据可视化的作用,通过表,图,统计等不同的方式将数据以更加直观的方式显示,同时kibana必须运行于Elasticsearch的基础上,即kibana就是Elasticsearch的可视化GUI;
(3)Filebeat是beat组件的一种类型,filebeat一般安装在宿主机,用于收集文本类型的日志文件,然后把日志文件内容存储在es中
2.版本说明:
7.7.0(三个组件必须使用同一个版本)
3.软件下载源:
(1)Elaticsearch下载url:
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.7.0-linux-x86_64.tar.gz
(2)kibana下载url:
https://artifacts.elastic.co/downloads/kibana/kibana-7.7.0-linux-x86_64.tar.gz
(3)filebeat下载url:
https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.7.0-linux-x86_64.tar.gz
4.安装:
安装方法简单,解压即可用
5.Elasticsearch的配置文件说明
(1)配置文件名称:elasticsearch.yml
(2)配置文件字段说明:
(3)cluster.name:Elasticsearch集群的名称,用于服务的发现,其他节点加入集群是要通过集群的名称加入相应的集群
(4)node.name:当前机器在集群中的节点名称
(5)node.master: true是否成为master节点node.data:指定该节点是否存储索引数据,为true时允许
(6)network.host: 指定能访问该服务的IP地址,默认是环回地址,配置为0.0.0.0允许所有网络的访问
(7)http.port: 服务的打开的端口,默认是9200
(8)node ingest:是否开启节点处理,默认打开,关闭可配置为false
6.kibana的配置文件说明
(1)elasticsearch.hosts: 指定elasticsearch所在的机器的ip
(2)server.port: 指定服务的端口,默认是5601
(3)server.host: 指定能访问服务的IP来源,0.0.0.0允许所有
7.filebeat配置文件说明
(1)配置文件名称:filebeat.yml
(2)- type: log #指定类型为log
enabled: true
(3)paths:

  • /app/applogs/info.log #指定监控要监控的日志文件的路径
    (4)setup.kibana:
    host: “10.206.196.84:5601” #指定kibana所在主机的ip和服务监听的端口
    (5)output.elasticsearch:
    hosts: [“10.206.196.84:9200”] #指定es所在主机的ip以及服务监听的端口
    (6)output.elasticsearch:
    index:配置自定义索引
    (7)multiline.pattern,multiline.negate,multiline.match与开启日志多行合并相关
    8.启动:
    (1)es不能使用root启动
    (2)elasticsearch启动:直接执行安装目录下bin目录下的启动脚本elasticsearch
    (3)kibana启动:直接执行安装目录下bin目录下的启动脚本kibana
    (4)filebeat启动:执行安装目录下bin目录下的启动脚本filebeat并使用-c参数指定filebeat的配置文件filebeat.yml
    (5)查看es的健康状态:
    curl http://ip:port/_cat/health
    (6)查看es上的所有索引:
    curl http:/ip:port/_cat/indices
    (7)es启动常见错:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    解决方法:使用root用户需改内核参数,在/etc/sysctl.conf中添加vm.max_map_count=262144,保存后执行sysctl -p使配置立即生效
    9.ingest node
    (1)ingest node概念:
    Ingest Node(预处理节点)是 ES 用于功能上命名的一种节点类型, 可以使用ingest node(预处理节点)在文档被索引执行发生之前对文档进行预处理(pre-process),这些预处理行为发生在预处理节点对批量(bulk)请求和索引(index)请求的拦截的时候,对请进行数据进行转换,然后将转换后的请求数据再传递返回给对应的批量(bulk)请求和索引(index)请求,默认情款下所有节点开启ingest node预处理,如果想禁用可以在elasticsearch的配置文件中配置
    node.ingest: false
    (2)pipeline的简单定义
    在这里插入图片描述

    上面的例子,![在这里插入图片描述](https://img-blog.csdnimg.cn/20200807095938206.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTIxNzQ0Nw==,size_16,color_FFFFFF,t_7
    表明通过指定的 URL 请求"_ingest/pipeline"定义了一个 ID 为"my-pipeline-id"的 pipeline,其中请求体中的存在两个必须要的元素:
    <1>description 描述该 pipeline 是做什么的
    <2>processors 定义了一系列的 processors,这里只是简单的定义了一个赋值操作,即将字段名为"foo"的字段值都设置为"bar"
    <3>set为一个处理器,处理器的相关内容请看文档下文处理器部分
    (3)Simulate Pipeline API(pipeline debuger)
    为了让开发者更好的了解和使用预处理的方式和原理,官方也提供了相关的接口,来让我们对这些预处理操作进行测试,这些接口,官方称之为: Simulate Pipeline API
    简单使用例子如下:
    在这里插入图片描述
    使用simulate pipeline api时使用的方法为POST,pipeline的id固定为_simulate,pipeline字段下的内容为自定义定义的pipeline,这里使用了set处理器,docs字段下的_source字段指定预处理的文档内容包括字段和值,例子中数据字段foo的值为bar,该例子使用由于foo字段原来不存在,所以set处理器给文档内容添加字段foo,并设置foo的值为bar
    执行结果如下:

在这里插入图片描述

(4)pipeline中常用processors类型的说明与举例(以simulate pipeline api测试)
<1>set处理器
作用:指定字段存在时修改指定字段的值,指定字段不存在时添加指定的字段和值
举例:
在这里插入图片描述

执行结果如下:

在这里插入图片描述

<2>append处理器
追加处理器。就是当我们加载原始文档到 Elasticsearch 的时候,某些字段的描述信息可能需要我们定制性的增加一些额外说明
例子如下:
在这里插入图片描述

执行结果:
在这里插入图片描述

<3> Convert处理器
用于在写入某些文档之前对该文档的字段类型进行转换,比如文档中有个字符串类型的"价格"字段,我们希望将其转换成 float 类型,则我们可以使用该处理器来完成这项操作,目前官方支持转换的类型有如下几个:integer, float, string, boolean, and auto,auto是根据类型最相似完成转换
例子如下:
在这里插入图片描述

执行结果:
在这里插入图片描述

<4>date处理器
是将原文档中的某个日期字段转换成一个 Elasticsearch 识别的时间戳字段(一般默认为@timestamp),该时间戳字段将会新增到原文档中,也可以使用 target_field 字段来指定该字段名称,使用timezone指定原来的时间的时区,默认为世界协调时间,转换后默认是北京时间,所以要指定原来的时区,避免出现时差
例子如下:

在这里插入图片描述

执行结果:
在这里插入图片描述

<5>grok处理器
主要用于切割日志字段生成新字段,完成日志字段的提取解析
使用例程:
日志文件(路径为/app/applogs/info.log)格式如下:
[INFO] 2020-07-23 18:29:43 [/app/totoro/tcl/api/app/subnet/handle.py:fetch_sf_subnet:62]
需求:提取日志文件的日志等级和日志产生的时间戳以及该日子来自那个app(该日志来自的app是tcl
在这里插入图片描述

执行结果:
在这里插入图片描述

Grok处理器使用patterns匹配文档内容并记录在指定的字段,更多关于grok的使用可以参考文档 《grok匹配案例》
<6>gsub处理器
Gsub Processor 能够解决一些字符串中才特有的问题,按照正则表达式匹配字符串的内容并完成替换,例子如下,使用匹配SF express,使用shenzhen替换
在这里插入图片描述

执行结果:
在这里插入图片描述

<7>join处理器
能够将原本一个数组类型的字段值,分解成以指定分隔符分割的一个字符串
例子如下:
在这里插入图片描述

执行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值