当前位置 : 首页 » 文章分类 :  开发  »  ELK使用笔记

ELK使用笔记

ELK使用笔记

ELK 不是一款软件,而是 Elasticsearch、Logstash 和 Kibana 三种软件产品的首字母缩写。这三者都是开源软件,通常配合使用,而且又先后归于 Elastic.co 公司名下,所以被简称为 ELK Stack。


kibana lucene查询语法

在搜索栏输入login,会返回所有字段值中包含login的文档

带空格的短语

使用双引号包起来作为一个短语搜索
“like Gecko”

通配符

? 匹配单个字符
* 匹配0到多个字符

kiba?a, el*search

注意:? * 不能用作第一个字符,例如:?text *text

模糊搜索

quikc~ brwn~ foks~
:在一个单词后面加上启用模糊搜索,可以搜到一些拼写错误的单词

first~ 这种也能匹配到 frist

还可以设置编辑距离(整数),指定需要多少相似度
cromm~1 会匹配到 from 和 chrome
默认2,越大越接近搜索的原始值,设置为1基本能搜到80%拼写错误的单词

近似搜索

在短语后面加上,可以搜到被隔开或顺序不同的单词
“where select”
5 表示 select 和 where 中间可以隔着5个单词,可以搜到 select password from users where id=1

逻辑操作

AND
OR
+:搜索结果中必须包含此项
-:不能含有此项

+apache -jakarta test aaa bbb, 结果中必须存在apache,不能有jakarta,剩余部分尽量都匹配到
+"str1" and +"str2 str22", 结果中必须出现 str1 和 “str2 str22”,等于+"str1" +"str2 str22"
-"str1" -"str2", 结果中不能出现 str1 和 str2

ELK:kibana使用的lucene查询语法
https://segmentfault.com/a/1190000002972420


最简单架构

在这种架构中,只有一个 Logstash、Elasticsearch 和 Kibana 实例。Logstash 通过输入插件从多种数据源(比如日志文件、标准输入 Stdin 等)获取数据,再经过滤插件加工数据,然后经 Elasticsearch 输出插件输出到 Elasticsearch,通过 Kibana 展示。


logstash配置

Configuring Logstash
https://www.elastic.co/guide/en/logstash/current/configuration.html

Structure of a Config File
https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html

Grok filter plugin

https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html

带下划线的项目的GrokPattern

uds_message_consumer项目的kibana现在可以看到日志了。
之前看不到的原因是我们的类的全路径是指包括下划线拼接的,而GrokPatterns表达式的JAVA_CLASS 不支持包名用下划线拼接。目前已经JAVACLASS–>DATA。 其他项目也注意了,如果包名有下划线拼接,复制其他项目的配置的时候将JAVACLASS换成DATA。
具体文档参见:
https://streamsets.com/documentation/datacollector/3.4.3/help/datacollector/UserGuide/Apx-GrokPatterns/GrokPatterns_title.html

pattern

GREEDYDATA 就是全部日志

GREEDYDATA .*

logstash-patterns-core/patterns/grok-patterns
https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns


Beats 作为日志搜集器

这种架构引入 Beats 作为日志搜集器。目前 Beats 包括四种:

  • Packetbeat(搜集网络流量数据);
  • Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据);
  • Filebeat(搜集文件数据);
  • Winlogbeat(搜集 Windows 事件日志数据)。

Beats 将搜集到的数据发送到 Logstash,经 Logstash 解析、过滤后,将其发送到 Elasticsearch 存储,并由 Kibana 呈现给用户。

filebeat配置项

https://www.elastic.co/guide/en/beats/filebeat/6.0/configuration-filebeat-options.html#_literal_multiline_literal

多行采集 Manage multiline messages

https://www.elastic.co/guide/en/beats/filebeat/6.0/multiline-examples.html#multiline-examples

filebeat多行日志采集

例如:

multiline:
    pattern: '^[0-2][0-9]:[0-5][0-9]:[0-5][0-9]'
    negate: true
    match: after

上面配置的意思是:不以时间格式开头的行都合并到上一行的末尾

pattern:正则表达式
negate:true 或 false;默认是false,匹配pattern的行合并到上一行;true,不匹配pattern的行合并到上一行
match:after 或 before,合并到上一行的末尾或开头

例如:

multiline:
  pattern: ^@
  negate: true
  match: after

我们的日志pattern为@%d{yyyy-MM-dd HH:mm:ss,SSS} [%-5level] RID=%X{requestId} UID=%X{userId} AID=%X{accountId} MOBILE=%X{mobile} -- [%thread] %c [%L]: %msg%n
日志的每行都是以 @ 开头的,所以这里正则为 ^@ 即匹配以@开头的,negate: true 表示不以 @ 开头的都合并到上一行。

filebeat 多行日志的处理
https://www.cnblogs.com/toSeek/p/6120778.html

ELK+Filebeat 集中式日志解决方案详解
https://www.ibm.com/developerworks/cn/opensource/os-cn-elk-filebeat/index.html

ELK:kibana使用的lucene查询语法
https://segmentfault.com/a/1190000002972420

上一篇 Azkaban笔记

下一篇 Java8 Optional 笔记

阅读
评论
1.1k
阅读预计4分钟
创建日期 2018-08-30
修改日期 2019-08-14
类别

页面信息

location:
protocol:
host:
hostname:
origin:
pathname:
href:
document:
referrer:
navigator:
platform:
userAgent:

评论