ELK日志分析Kibana——筛选语法基础

ELK日志分析Kibana——筛选语法基础

ES全文搜索的简易语法是Kibana上使用的搜索语法,一定需要学会,前一篇文章给出的只是基础的、最根本的CRUD操作,是对单挑数据的操作,但是在Kibana中存在大量的搜索和聚合,动辄上千万的数据量,所以掌握好ES全文搜索的语法就是使用Kibana的重要保证。
简易语法详细解析:

1、全文检索:直接写搜索的单词 如:搜索‘id’,搜索字符A;

2、单字段的全文检索:在搜索单词之前加上字段名和冒号,比如如果知道单词 Riven(用户名) 肯定出现在 user字段,可以写作 user:Riven;

3、单字段的精确检索:在搜索单词前后加双引号,比如 user:"Riven";

4 、多个检索条件的组合:可以使用 NOT, AND 和 OR 来组合检索,注意必须是大写。比如 user:("Riven" OR "riven") AND NOT mesg:BUG;
这个搜索的全意是: 精确搜索字段值为"Riven" 、"riven"并且mesg字段值不能为BUG的信息

5、字段是否存在:exists:user 表示要求 user 字段存在,missing:user 表示要求 user 字段不存在;

6、通配符:用 ? 表示单字母,* 表示任意个字母。比如 fir?t mess*;

7、正则:需要比通配符更复杂一点的表达式,可以使用正则。比如 mesg:/mes{2}ages?/。注意 ES 中正则性能很差,而且支持的功能也不是特别强大,尽量不要使用;

8、近似搜索:用 ~ 表示搜索单词可能有一两个字母写的不对;

9、范围搜索:对数值和时间,ES 都可以使用范围搜索,比如:size:>300,date:["now-6h" TO "now"} 等。其中,[] 表示端点数值包含在范围内{} 表示端点数值不包含在范围内

以上九条就是ES全文搜索的简易语法使用,这些语法全部都可以在Kibana中的任何一个搜索框内使用:

如果我想要搜索带有字符A的信息:

如果我们要精确检索一个单词"params":

如果我把搜索语句改为"params" NOT '回款' 则,带回款字样的信息将不会在出现在展示列表里面.

注意: 搜索关系词 必须大写

其他的检索语法和前面的实例并无不同,在这里就不一一展示了,感兴趣的同学可以自己试试.
还有一个不能被忽略的重要功能,那就是储存基础的搜索简易,以备下面的图形化展示做铺垫。
怎么储存呢?

搜索建议怎么用?在图形制作细节我会进行介绍。

ELK日志分析Kibana——数据图形化制作

Kibana把数据图形化,可以帮助我们更好的去分析数据,找到数据里面的结构 注意看一下,上面缩看的界面,是一个聚合的结果,他是由CPU Usage图表、System Load图表、CPU usage over time图表、 System Load over time图表一起构造而成的。

Kibana把数据图形化,可以帮助我们更好的去分析数据,找到数据里面的结构

注意看一下,上面缩看的界面,是一个聚合的结果,他是由CPU Usage图表、System Load图表、CPU usage over time图表、 System Load over time图表一起构造而成的。我把这种聚合称作一组相关性的数据看板,你可以随意的组合你的看板,如果你觉得这样做是合适的。那么,CPU Usage图表、System Load图表、CPU usage over time图表、 System Load over time图表是从哪里来的呢?

数据对应的index决定了你想要处理的数据源是那一部分,而上面的搜索基础则决定的更加细致,‘我想要的数据是什么样子的’,这样关于CPU的调用数据就可以被筛选出来了。把想要的数据筛选出来以后就需要操作数据来制作表格了,我么有很多大的选择,当然,你选制作什么样的图形,在这之前就需要选择好:

第 1 步: 进入新增页面后需要选在对应的图形

图形说明

1、Area :用区块图来可视化多个不同序列的总体贡献。

2、Data :用数据表来显示聚合的原始数据。其他可视化可以通过点击底部的方式显示数据表。

3、Line :用折线图来比较不同序列。

4、Markdown : 用 Markdown 显示自定义格式的信息或和你仪表盘有关的用法说明。

5、Metric :用指标可视化在你仪表盘上显示单个数字。

6、Pie :用饼图来显示每个来源对总体的贡献。

7、Tile map :用瓦片地图将聚合结果和经纬度联系起来。

8、Timeseries :计算和展示多个时间序列数据。

9、Vertical bar :用垂直条形图作为一个通用图形。

第 2 步: 选择数据源

首先需要明白的是,当你选择一个使用一个已有的搜索建议作为你的数据处理数搜索基础的时候,已经绑定了一个已有的index,因为你的搜索建议是需要现将其建立在index上的。

其次,如果你选择了一个index作为你的数据处理基础的时候(注意这里的表述,和上面的相比缺少了什么),你就需要在接下来的页面上去建立自己的搜索建议了,至于如何建立。。。上一篇文章有详细介绍

第 3 步: 可视化编辑器

主要操作的节点为以下几个:
1、工具栏(Toolbar)
2、聚合构建器(Aggregation Builder)
3、预览画布(Preview Canvas)

工具栏:

工具栏里面其实就是一些搜索建议,当然如果你一进选择了搜索建议基础,那么也许你只需要稍作修改即可,当你看不到搜索框的时候,也许你需要双击一下这个标签image 还有一个需要你注意的细节就是,你可以对你的数据进行时间属性的控制,她在你工具栏见面的右上角,如果你在Logstash为ES数据附上了一个相关的时间参数的时候。

聚合构建器:

用页面左侧的聚合构建器配置你的可视化要用的 metric 和 bucket 聚合。桶(Buckets) 的效果类似于 SQL GROUP BY 语句。想更详细的了解聚合,阅读 Elasticsearch aggregations reference。
下面介绍一下更为细节的一些聚合器字段:

1、Count count 聚合返回选中索引模式中元素的原始计数。
2、Average 这个聚合返回一个数值字段的 average 。从下拉菜单选择一个字段。
3、Sum sum 聚合返回一个数值字段的总和。从下拉菜单选择一个字段。
4、Min min 聚合返回一个数值字段的最小值。从下拉菜单选择一个字段。
5、Max max 聚合返回一个数值字段的最大值。从下拉菜单选择一个字段。
6、Unique Count cardinality 聚合返回一个字段的去重数据值。从下拉菜单选择一个字段。
7、Standard Deviation extended stats 聚合返回一个数值字段数据的标准差。从下拉菜单选择一个字段。
8、Percentile percentile 聚合返回一个数值字段中值的百分比分布。从下拉菜单选择一个字段,然后在 Percentiles 框内指定范围。点击 X 移除一个百分比框,点击 +Add 添加一个百分比框。
9、Percentile Rank percentile ranks 聚合返回一个数值字段中你指定值的百分位排名。从下拉菜单选择一个字段,然后在 Values 框内指定一到多个百分位排名值。点击 X 移除一个百分比框,点击 +Add 添加一个数值框。

1、Date Histogram date histogram 基于数值字段创建,由时间组织起来。你可以指定时间片的间隔,单位包括秒,分,小时,天,星期,月,年。
2、Histogram 标准 histogram 基于数值字段创建。为这个字段指定一个整数间隔。勾选 Show empty buckets 让直方图中包含空的间隔。
3、Range 通过 range 聚合。你可以为一个数值字段指定一系列区间。点击 Add Range 添加一对区间端点。点击红色 (x) 符号移除一个区间。
4、Date Range date range 聚合计算你指定的时间区间内的值。你可以使用 date math 表达式指定区间。点击 Add Range 添加新的区间端点。点击红色 (/) 符号移除区间。
5、IPv4 Range IPv4 range 聚合用来指定 IPv4 地址的区间。点击 Add Range 添加新的区间端点。点击红色 (/) 符号移除区间。
6、Terms terms 聚合允许你指定展示一个字段的首尾几个元素,排序方式可以是计数或者其他自定义的metric。
7、Filters 你可以为数据指定一组 filters。你可以用 querystring(全文搜索简易检所语法),也可以用 JSON 格式来指定过滤器,就像在 Discover 页的搜索栏里一样。点击 Add Filter 添加下一个过滤器。
8、Significant Terms 展示实验性的 significant terms 聚合的结果。
9、也许你需要对某一个数据进行计算,你可以使用json表达式:{ "script" : "doc['grade'].value * 1.2" } grade代表字段,后面后面是算数表达式。

Logstash

Logstash介绍

Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。

img
集中、转换和存储你的数据

Logstash是一个开源的服务器端数据处理管道,可以同时从多个数据源获取数据,并对其进行转换,然后将其发送到你最喜欢的“存储”。(当然,我们最喜欢的是Elasticsearch)

输入:采集各种样式、大小和来源的数据

数据往往以各种各样的形式,或分散或集中地存在于很多系统中。Logstash 支持各种输入选择 ,可以在同一时间从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。

img
过滤器:实时解析和转换数据

数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值。

Logstash 能够动态地转换和解析数据,不受格式或复杂度的影响:

利用 Grok 从非结构化数据中派生出结构
从 IP 地址破译出地理坐标
将 PII 数据匿名化,完全排除敏感字段
整体处理不受数据源、格式或架构的影响

img
输出:选择你的存储,导出你的数据

尽管 Elasticsearch 是我们的首选输出方向,能够为我们的搜索和分析带来无限可能,但它并非唯一选择。

Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。

img
安装Logstash
img

首先,让我们通过最基本的Logstash管道来测试一下刚才安装的Logstash

Logstash管道有两个必需的元素,输入和输出,以及一个可选元素过滤器。输入插件从数据源那里消费数据,过滤器插件根据你的期望修改数据,输出插件将数据写入目的地。

img

接下来,允许Logstash最基本的管道,例如:

bin/logstash -e 'input { stdin {} } output { stdout {} }'

(画外音:选项 -e 的意思是允许你从命令行指定配置)

启动以后,下面我们在命令行下输入"hello world"

img
用Logstash解析日志

在上一小节中,你已经创建了一个基本的Logstash管道来测试你的Logstash设置。在现实世界中,一个Logstash管理会稍微复杂一些:它通常有一个或多个input, filter 和 output 插件。

在这一小节中,你将创建一个Logstash管道,并且使用Filebeat将Apache Web日志作为input,解析这些日志,然后将解析的数据写到一个Elasticsearch集群中。你将在配置文件中定义管道,而不是在命令行中定义管道配置。

在开始之前,请先下载示例数据。

配置Filebeat来发送日志行到Logstash

在你创建Logstash管道之前,你需要先配置Filebeat来发送日志行到Logstash。Filebeat客户端是一个轻量级的、资源友好的工具,它从服务器上的文件中收集日志,并将这些日志转发到你的Logstash实例以进行处理。Filebeat设计就是为了可靠性和低延迟。Filebeat在主机上占用的资源很少,而且Beats input插件将对Logstash实例的资源需求降到最低。

(画外音:注意,在一个典型的用例中,Filebeat和Logstash实例是分开的,它们分别运行在不同的机器上。在本教程中,Logstash和Filebeat在同一台机器上运行。)

关于Filebeat请参考《开始使用Filebeat》

img

第1步:配置filebeat.yml

filebeat.inputs:
- type: log
  paths:
    - /usr/local/programs/logstash/logstash-tutorial.log

output.logstash:
  hosts: ["localhost:5044"]

第2步:在logstash安装目录下新建一个文件first-pipeline.conf

img

(画外音:刚才说过了通常Logstash管理有三部分(输入、过滤器、输出),这里input下面beats { port => "5044" }的意思是用Beats输入插件,而stdout { codec => rubydebug }的意思是输出到控制台)

第3步:检查配置并启动Logstash

bin/logstash -f first-pipeline.conf --config.test_and_exit

(画外音:--config.test_and_exit选项的意思是解析配置文件并报告任何错误)

bin/logstash -f first-pipeline.conf --config.reload.automatic

(画外音:--config.reload.automatic选项的意思是启用自动配置加载,以至于每次你修改完配置文件以后无需停止然后重启Logstash)(画外音:--config.reload.automatic选项的意思是启用自动配置加载,以至于每次你修改完配置文件以后无需停止然后重启Logstash)

第4步:启动filebeat

./filebeat -e -c filebeat.yml -d "publish"

如果一切正常,你将会在Logstash控制台下看到类似这样的输出:

img

你可能感兴趣的:(ELK日志分析Kibana——筛选语法基础)