elk搭建及作图

elk 搭建 我参考的是 这篇文章  https://www.cnblogs.com/yuhuLin/p/7018858.html ,写的很全,很牛逼。

我补充一下 关于  logstash 输入日志的格式的自定义和  elk 画图的相关 知识。

 

首先,我按我的说法来解释一下elk

elk 分别代表,elksticsearch, logstash , kibana

logstash 负责 收集日志,收集的过程中可以自定义格式,然后按格式输出到 elasticsearch ,elasticsearch 将 l 输出过来的日志存下来,e 有存数据的配置, kibana 是将  e 里的数据 通过图形来显示出来,在我看来,l 里的存的数据 是类似于 字典一样的数据,  字典名字 和 字典里的键值对。


下面详细讲解一下Logstash 的自定义配置文件,这是整个elk 的核心,定义了 输入的文件的位置,以及将输入的内容 按 自己想要的格式来重新定义一下。

过滤条件

 Kibana 输出结果:


如果不加过滤条件, elk 输出只有一条内容,这一条内容里就是一条的log 日志,这样的话,如果想从elk 来分析 访问来源或 状态码的情况,实现不了。这就需要将这一条内容再细分成多个字段来输出,如何实现,首先,message 就代表 整条日志,通过语法,自定义隔断符,来讲message 分解,然后类似于指针输出一样,从0 开始数,message[0]  就代表 第一个被分隔符 隔断后的 第一个字段,类似awk 的-F  后的效果。具体的语法就类似于上边的logstash 的过滤条件,很简单,同时被分割符分割后的字段还可以再被分割,一样的道理。

根据上面的配置 ,每条日志输出的结果就是这样的了。 键值对 的形式



elk 的画图分析:

已 Line 图为例来分析:

如统计 不同状态码 随时间的变化,

Y 轴选count ,X 轴选时间,然后对于Y轴的count,再细分,可以统计不同状态码的count或 不同域名的count ,区分的主要以field 来区分。

我想说的是一种想要自定义算法的统计,如我按上面的规则,可以统计 发送字节数 随时间的变化,针对不通域名或不通的状态码,但得出的数据的单位 不能变,比如我日志里发送字节的单位是 B,我想呈现的是MB或GB ,如何实现,用  advanced 选项的 json input ,自定义算法,如  我想把最后的统计单位变成  MB  

{"script" : {"inline" : "(doc['bytes_sent'].value * 1 )  / 1000 / 1000  "}}

doc['bytes_sent'].value 就是 你再logstash 自定义的键的值的表示。用doc 来获取, script 和 inline 语法固定,


自定义分割的时间段: 



阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页