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%拼写错误的单词
近似搜索
在短语后面加上,可以搜到被隔开或顺序不同的单词5 表示 select 和 where 中间可以隔着5个单词,可以搜到 select password from users where id=1
“where select”
逻辑操作
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配置项
多行采集 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笔记
页面信息
location:
protocol
: host
: hostname
: origin
: pathname
: href
: document:
referrer
: navigator:
platform
: userAgent
: