graylog简介
what
graylog 的官方定义是:Enterprise Log Management for All。
一个具有报警选项的可插入日志和事件分析服务器。
Graylog v.s ELK(Kibana)
Graylog 和 ELK(Kibana)的区别:
ELK:Logstash -> Elasticsearch -> Kibana
Graylog:Graylog Collector -> Graylog Server(封装Elasticsearch) -> Graylog Web
ELK(或者 EFK,Flunted),使用不当的几个缺点:
- 不能处理多行日志,比如Mysql慢查询,Tomcat/Jetty应用的Java异常打印
- 不能保留原始日志,只能把原始日志分字段保存,这样搜索日志结果是一堆Json格式文本,无法阅读。
- 不符合正则表达式匹配的日志行,被全部丢弃。
Graylog 的优点:
- 一体化方案,安装方便,不像ELK有3个独立系统间的集成问题。
- 采集原始日志,并可以事后再添加字段,比如http_status_code,response_time等。
- 个性化定制开发(带来很大的自由度)采集日志的脚本,并用curl/nc发送到Graylog Server,发送格式是自定义的GELF,Flunted和Logstash都有相应的输出GELF消息的插件。实际上只需要用inotifywait监控日志的modify事件,并把日志的新增行用curl/netcat发送到Graylog Server就可。
- 搜索结果高亮显示。
- 搜索语法简单,比如:
source:mongo AND response_time_ms:>5000
,避免直接输入elasticsearch搜索JSON语法 - 搜索条件可以导出为elasticsearch的搜索json文本,方便直接开发调用elasticsearch rest api的搜索脚本。
kibana 通过 x-pack 这个plugin可以给kibana提供一些炫酷的功能。
功能:
- 日志的收集和处理
- 日志portal
- 可视化集群管理:graylog 集群 和 ES 集群
在大家平时的使用中,关注最多的功能还是搜索以及搜索的性能,在这方面graylog 做了很多优化。
kibana 按照时间搜索,会把所有的索引全部扫描一遍。
graylog 会根据时间的选择,只查询时间段内的索引。
setup
Graylog服务器安装,包括四块内容:
- mongodb
- elasticsearch
- graylog-server
- graylog-web
基于 JDK/JRE 环境,
simple usage
streams:可以理解成以前的 kibana下拉选择索引。
搜索语法和 kibana 基本上没有区别,参考博客Kibana 使用简介及查询条件示例
用双引号是精确搜索,用于有特殊字符串的场景:
如:“f871a76e-4cb0-4c41-add9-3c1da35b9e2e.M.1.1”
没有双引号的是模糊搜索
字段
也可以按页面左侧显示的字段搜索限定字段。
- 全文搜索:field:value
- 精确搜索:关键字加上双引号 filed:“value”
- http.code:404 搜索http状态码为404的文档
字段本身是否存在
- exists:http:返回结果中需要有http字段
- missing:http:不能含有http字段
通配符
?
:匹配单个字符;
*
:匹配0到多个字符;
如:kiba?a, el*search。
? *
不能用作第一个字符,例如:?text *text
范围搜索
数值/时间/IP/字符串 类型的字段可以对某一范围进行查询:
length:[100 TO 200] sip:["172.24.20.110" TO "172.24.20.140"] date:{"now-6h" TO "now"}
tag:{b TO e}
搜索b到e中间的字符
count:[10 TO *]
:* 表示一端不限制范围
count:[1 TO 5}
:[ ] 表示端点数值包含在范围内,{ } 表示端点数值不包含在范围内,可以混合使用,此语句为1到5,包括1,不包括5。
简写:
age:>10 age:<=10 age:(>=10 AND <20)
逻辑操作 AND/OR/NOT
+:搜索结果中必须包含此项
-:不能含有此项
+apache -jakarta test aaa bbb:结果中必须存在apache,不能有jakarta,剩余部分尽量都匹配到
分组
(jakarta OR apache) AND jakarta
字段分组
title:(+return +"pink panther") host:(baidu OR qq OR google) AND host:(com OR cn)
转义特殊字符
+ - = && || > < ! ( ) { } [ ] ^ " ~ * ? : \ /
以上字符当作值搜索的时候需要用\转义。
advance
集群部署;
脚本定制化;
日志源收集;
索引定制及优化;
……
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix