当前位置: 首页 > news >正文

日志审计Graylog 使用教程-kafka收取消息

Graylog 是一个开源的日志管理和分析平台。它主要用于收集、存储、处理和分析大量的日志数据。Graylog 的核心功能包括:

  1. 日志收集:Graylog 可以从各种来源(如服务器、网络设备、应用程序等)收集日志数据。它支持多种输入方式,包括 Syslog、GELF、Beats、Kafka 等。
  2. 日志存储:Graylog 使用 Elasticsearch 作为其后端存储系统,因此它可以高效地存储和检索大量的日志数据。
  3. 日志处理和分析:Graylog 提供了强大的搜索和分析功能,用户可以通过查询语言对日志进行过滤、排序、聚合等操作,帮助发现问题或监控系统状态。
  4. 警报和通知:Graylog 可以根据预设条件触发警报,并通过电子邮件、Slack 等渠道发送通知。
  5. 可视化和仪表板:用户可以在 Graylog 中创建可视化的仪表板,用于实时监控和分析日志数据。

Graylog 常用于 IT 运维、安全监控、故障排查等场景,通过对日志数据的集中管理和分析,帮助企业提高系统的可观测性和问题解决能力。

一、日志收集

1.1、配置日志服务器

选择input

这里给了很多日志接收方法

试验使用kafka获取日志,

1.2、配置映射表

他作为动态数据获取,比如IP 地理位置等,根据日志某个字段的信息从XX库找到对应的数据

选择数据源

创建链接源数据实例

有很多不同格式的数据源

选择csv文件

如果我们的内容为

username ,department,email

jdoe,IT,jdoe@example.com

asmith,HR,asmith@example.com

bwhite,Finance,bwhite@example.com

johndoe,jiushi,a.com

将内容编写为

不区分大小写,更新

创建索引表实例

选择刚刚创建的数据源实例并创建

1.3、创建字段提取器

创建,内容填写自己构建的kafka服务器地址和topic

保存成功,他会自己运行的,如果没有问题就会变成RUNNING的状态

先生产一个消息,因为要配置字段提取器

生产内容

{  "version": "1.1",  "host": "webserver.local",  "short_message": "User login failed",  "full_message": "User johndoe failed to login to the web application",  "level": 3,  "_username": "johndoe",  "_src_ip": "192.168.1.2"}

查看消息

新产生的这个就是

构造字段提取

新增字段提取器

加载最近的消息

这里内容是kafka生产的消息,只作为日志,可以对每个字段配置提取。

将username 用于 Look UP配置

忘记设置映射表了。先在1,2小节创建映射表实例

选择映射表

1.4、创建告警

1.4.1、创建上报

使用简单的API上报

填充URL,并尝试发送测试数据

提示成功

查看api服务器

1.4.2、定义事件

设置上报方式,刚才创建的API方式

创建告警事件完成

1.5、测试

1.5.1、产生关于登录失败的日志

{  "version": "1.1",  "host": "webserver.local",  "short_message": "User login failed",  "full_message": "User johndoe failed to login to the web application",  "level": 3,  "_username": "johndoe",  "_src_ip": "192.168.1.2"}

其中username的值为johndoe,记得之前映射表给定文件内容

我们创建映射表时,通过username查找department内容,并添加到告警自定义字段中。

产生的告警内容,我们自定义字段“renyuan”他的value通过映射表username关联到的。日志内容jdoe对应表格IT内容

附录

Input kafka不同格式示例

1. CEF Kafka

示例消息:

CEF:0|SecurityVendor|SecurityProduct|1.0|100|User Login|5|dvc=192.168.1.1 duser=johndoe src=10.0.0.1 spt=443

解释:

  • CEF:0: CEF 版本号。
  • SecurityVendor: 设备供应商名称。
  • SecurityProduct: 设备产品名称。
  • 1.0: 设备版本。
  • 100: 事件 ID。
  • User Login: 事件名称或描述。
  • 5: 严重级别(1-10)。
  • dvc=192.168.1.1: 设备 IP 地址。
  • duser=johndoe: 目标用户名。
  • src=10.0.0.1: 源 IP 地址。
  • spt=443: 源端口。

2. GELF Kafka

示例消息:

{
  "version": "1.1",
  "host": "webserver.local",
  "short_message": "User login failed",
  "full_message": "User johndoe failed to login to the web application",
  "level": 3,
  "_username": "johndoe",
  "_src_ip": "192.168.1.2"
}

解释:

  • version: GELF 版本号。
  • host: 主机名或 IP 地址。
  • short_message: 简短的事件描述。
  • full_message: 事件的详细描述。
  • level: 日志级别(例如:3 表示错误)。
  • _username 和 _src_ip: 自定义字段。

3. RAW Kafka

示例消息:

User johndoe failed to login from IP 192.168.1.2 via web application.

解释:

  • RAW 格式是原始日志消息的简单文本,没有结构化的字段或元数据。消息内容完全取决于发送方。

4. Syslog Kafka

示例消息:

<134>webserver.local User login failed: johndoe from 192.168.1.2

解释:

  • <134>: Syslog 优先级,计算方式为 (Facility * 8) + Severity。
  • webserver.local: 发送日志的主机名。
  • User login failed: johndoe from 192.168.1.2: 日志消息内容,描述发生的事件。

这些示例展示了不同格式在 Kafka 中传输的方式,供 Graylog 等日志管理系统解析和处理。

问题

1、接收到消息,但是没有输出

存在下行数据变动

查看系统日志tail -f /var/log/graylog-server/server.log &

root@a:/home/install/kafka_2.12-2.8.2# 2024-08-19T03:49:22.949Z ERROR [DecodingProcessor] Unable to decode raw message RawMessage{id=0593cd30-5dde-11ef-b23f-ac1f6b7e6aea, journalOffset=70, codec=CEF, payloadSize=9, timestamp=2024-08-19T03:49:22.947Z} on input <66c2a27b4c33336f079032fc>.

2024-08-19T03:49:22.949Z ERROR [DecodingProcessor] Error processing message RawMessage{id=0593cd30-5dde-11ef-b23f-ac1f6b7e6aea, journalOffset=70, codec=CEF, payloadSize=9, timestamp=2024-08-19T03:49:22.947Z}

java.lang.NullPointerException: null

        at org.graylog.plugins.cef.parser.MappedMessage.<init>(MappedMessage.java:37) ~[graylog.jar:?]

        at org.graylog.plugins.cef.codec.CEFCodec.decodeCEF(CEFCodec.java:128) ~[graylog.jar:?]

        at org.graylog.plugins.cef.codec.CEFCodec.decode(CEFCodec.java:117) ~[graylog.jar:?]

        at org.graylog2.shared.buffers.processors.DecodingProcessor.processMessage(DecodingProcessor.java:149) ~[graylog.jar:?]

        at org.graylog2.shared.buffers.processors.DecodingProcessor.onEvent(DecodingProcessor.java:90) [graylog.jar:?]

        at org.graylog2.shared.buffers.processors.ProcessBufferProcessor.onEvent(ProcessBufferProcessor.java:90) [graylog.jar:?]

        at org.graylog2.shared.buffers.processors.ProcessBufferProcessor.onEvent(ProcessBufferProcessor.java:47) [graylog.jar:?]

        at com.lmax.disruptor.WorkProcessor.run(WorkProcessor.java:143) [graylog.jar:?]

        at com.codahale.metrics.InstrumentedThreadFactory$InstrumentedRunnable.run(InstrumentedThreadFactory.java:66) [graylog.jar:?]

        at java.lang.Thread.run(Thread.java:830) [?:?]

创建了CEF格式解码器,原因为kafka生产的消息不符合格式

示例CEF格式内容

CEF:0|Security|Graylog|1.0|100|Test event|5|src=10.0.0.1 dst=10.0.0.2 spt=1232

可以通过重新创建一个syslog

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【数据结构】一篇讲清楚什么是堆? 带图食用超详细~
  • go-zero接入skywalking链路追踪
  • C语言高手参考手册:函数进阶技巧
  • C++基础面试题 | C++中值传递和引用传递的区别?
  • 基于Kotlin Multiplatform的鸿蒙跨平台开发实践
  • Leetcode 2760.最长奇偶子数组
  • Linux:Linux多线程
  • 前端打字效果
  • 基于langchain的prompt指令代码编写
  • 为什么企业跨国组网建议用SD-WAN?
  • 10分钟搞懂,Python接口自动化测试-接口依赖-实战教程
  • keepalived与lvs
  • 每日一问:深入理解C++中的访问控制机制——private、protected和public
  • Unified 阻抗控制 architecture、framework、approach
  • [CLIP-VIT-L + Qwen] 多模态大模型源码阅读 - 视觉模型篇
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • Docker 笔记(2):Dockerfile
  • JavaScript设计模式之工厂模式
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • python_bomb----数据类型总结
  • Python_OOP
  • sessionStorage和localStorage
  • vue-router的history模式发布配置
  • 程序员最讨厌的9句话,你可有补充?
  • 好的网址,关于.net 4.0 ,vs 2010
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 浅谈Golang中select的用法
  • 深入 Nginx 之配置篇
  • const的用法,特别是用在函数前面与后面的区别
  • linux 淘宝开源监控工具tsar
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 进程与线程(三)——进程/线程间通信
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • #{}和${}的区别?
  • #NOIP 2014# day.2 T2 寻找道路
  • $.proxy和$.extend
  • (21)起落架/可伸缩相机支架
  • (3)选择元素——(17)练习(Exercises)
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (LeetCode) T14. Longest Common Prefix
  • (MATLAB)第五章-矩阵运算
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (规划)24届春招和25届暑假实习路线准备规划
  • (论文阅读40-45)图像描述1
  • (全注解开发)学习Spring-MVC的第三天
  • (五)c52学习之旅-静态数码管
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (自适应手机端)行业协会机构网站模板
  • ***测试-HTTP方法
  • ***详解账号泄露:全球约1亿用户已泄露
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇