将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(1)

问题

        项目里使用了 AzureBlob 存储了用户上传的各种资源文件,近期 AzureBlob 的流量费用增长很快,想通过分析Blob的日志,获取一些可用的信息,所以有了这个需求:将存储账户的日志(读写,审计,监控等)通过Azure Event Hubs 发送到我的 elasticsearch, 并且发送给elasticsearch的日志进行必要的加工,即从中解析出一些特别的字段,方便分析。

实现步骤

1. 配置 Azure Blob 存储日志记录

Azure Blob 存储提供日志记录功能,你可以启用存储帐户的活动日志(例如:读取、写入、审计等)以便后续处理。具体步骤如下:

  • 启用日志记录
    • 进入 Azure 门户,选择你的存储账户。
    • 监控 部分,选择 诊断设置
    • 创建一个新的诊断设置,启用 Blob 存储 服务的相关日志项(例如,读取、写入、删除、审计日志等)。
    • 选择将日志输出到 Event Hubs,并选择一个已配置的 Event Hub 实例作为目标。
2. 创建 Azure Event Hubs

Event Hubs 将会作为一个中介,接收来自 Azure Blob 存储的日志并将其转发到 Elasticsearch。具体步骤如下:

  • 创建 Event Hubs 命名空间
    • 在 Azure 门户中,选择 创建资源,然后选择 Event Hubs
    • 创建一个新的 Event Hubs 命名空间并选择合适的区域。
    • 在命名空间下创建一个新的 Event Hub 实例。

3. 配置 Azure Function 解析日志

为了根据你的需要解析日志数据并发送到 Elasticsearch,你可以使用 Azure Function。此函数将从 Event Hubs 获取日志数据,解析日志内容并将它们转发到 Elasticsearch。你可以选择编写自定义代码来实现日志解析。

  • 创建 Azure Function

    • 在 Azure 门户中,选择 创建资源,然后选择 Function App
    • 创建一个新的 Function App,选择合适的区域和运行时堆栈(通常是 .NETNode.js)。
    • 在 Function App 中,创建一个新的 Event Hub Trigger 函数,以便在日志数据到达 Event Hub 时自动触发。
  • 编写函数代码

    • 在函数代码中,你可以使用以下技术解析日志数据:

      • 解析日志内容:提取你需要的字段(如操作类型、文件名、时间戳、请求者 IP 等)。
      • 使用 JSON 处理库:如果日志是 JSON 格式,你可以使用相关库(如 JSON.parse().NETJsonSerializer)来解析数据。
      • 创建 Elasticsearch 客户端:使用 Azure Function 的客户端库或 Elastic Search .NET 客户端(或其他语言的客户端)将解析后的日志发送到 Elasticsearch。

      示例代码(JavaScript,Node.js 环境):

      const { Client } = require('@elastic/elasticsearch');
      const client = new Client({ node: 'http://your-elasticsearch-server:9200' });module.exports = async function (context, eventHubMessages) {for (const message of eventHubMessages) {try {const logData = JSON.parse(message.body);// 提取你需要的字段const logEntry = {timestamp: logData.timestamp,operation: logData.operationName,blobName: logData.blobName,requestor: logData.requestorIp};// 将数据发送到 Elasticsearchawait client.index({index: 'storage-logs',document: logEntry});} catch (err) {context.log('Error processing message: ', err);}}
      };
  • 部署 Azure Function:部署并运行该 Azure Function,它将自动从 Event Hubs 获取日志消息,进行解析,并将结果推送到 Elasticsearch。

4. 配置 Elasticsearch 和 Kibana

在 Elasticsearch 中,你需要创建合适的索引模板和映射,以便于后续检索和分析。你还可以使用 Kibana 来可视化日志数据。

  • 配置索引模板和映射

    • 在 Elasticsearch 中,你可以为 storage-logs 索引定义自定义映射,确保字段类型(如时间戳、IP 地址等)符合预期,方便查询。

    示例映射(适用于上述日志):

    PUT /storage-logs
    {"mappings": {"properties": {"timestamp": { "type": "date" },"operation": { "type": "keyword" },"blobName": { "type": "text" },"requestor": { "type": "ip" }}}
    }
    
  • 创建 Kibana 仪表板

    • 在 Kibana 中,创建新的索引模式(Index Pattern),指向 storage-logs 索引。
    • 然后,使用 Kibana 创建查询、仪表板和可视化,帮助你对存储日志进行实时分析。
5. 使用 Logstash (可选)

如果你不想使用 Azure Function 来解析日志数据,另一个选择是使用 Logstash,它是 Elastic Stack 的一部分,可以帮助你从 Event Hubs 中提取数据并进行解析,然后将其发送到 Elasticsearch。

  • 配置 Logstash

    • 安装 Logstash 并配置它从 Azure Event Hubs 获取数据。可以使用 Event Hub Input Plugin 连接到 Event Hub。
    • 在 Logstash 配置中,使用过滤器(如 json 过滤器)来解析日志数据并转换字段,最后将数据输出到 Elasticsearch。

    示例 Logstash 配置文件:

    input {azure_event_hubs {connection_string => "your-event-hub-connection-string"codec => json}
    }filter {json {source => "message"}mutate {add_field => {"timestamp" => "%{[timestamp]}""operation" => "%{[operationName]}"}}
    }output {elasticsearch {hosts => ["http://your-elasticsearch-server:9200"]index => "storage-logs"document_type => "_doc"}
    }
    
6. 测试和监控
  • 测试:在你配置完成之后,开始生成一些 Azure Blob 存储的日志(例如,进行文件操作)。确保这些日志通过 Event Hub 传递到 Azure Function 或 Logstash,成功解析并被发送到 Elasticsearch。
  • 监控:通过 Azure Monitor、Event Hubs 和 Elasticsearch 的监控工具来查看系统的运行状态和日志处理情况。

注意事项

  • 性能:Event Hubs 可以支持高吞吐量的日志数据传输,但要确保 Event Hubs 的吞吐量单位(TU)配置合理,以处理日志的高并发传输。
  • 数据延迟:从 Blob 存储到 Elasticsearch 的数据传输可能存在一定的延迟,尤其是在高负载情况下。可以通过优化 Event Hubs 和 Azure Function 的配置来减少延迟。
  • 日志解析:在解析日志时,要确保正则表达式、JSON 解析等操作高效执行,避免性能瓶颈。
  • 安全性:确保在使用 Event Hubs 和 Elasticsearch 时启用适当的身份验证和加密,避免敏感数据泄露。
  • 索引管理:Elasticsearch 中的日志数据可能会迅速增长,因此需要定期管理索引,如设置索引生命周期管理(ILM)以避免索引膨胀。

通过这种方式,你可以实现将 Azure Blob 存储的日志通过 Event Hubs 发送到 Elasticsearch,并根据需要解析并优化日志的结构,以便在 Elasticsearch 中进行更高效的查询和分析。


前情后续:

将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(1)-CSDN博客

将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(2)-CSDN博客

将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(3)-CSDN博客




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/66319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ESP32S3基于espidf接入网络获取NTP时间

ESP32S3基于espidf接入网络获取NTP时间 📌 相关篇《ESP32S3基于espidf接入网络配置介绍》📍官方相关SNTP 时间同步介绍文档:https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/api-reference/system/system_time.html?highli…

【蓝桥杯选拔赛真题63】C++奇数 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解

目录 C++奇数 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、运行结果 五、考点分析 七、推荐资料 C++奇数 第十四届蓝桥杯青少年创意编程大赛C++选拔赛真题 一、题目要求 1、编程实现 给定两个正整数N和M(10≤N<M≤10000),请找出N到M…

(学习总结20)C++11 可变参数模版、lambda表达式、包装器与部分新内容添加

C11 可变参数模版、lambda表达式、包装器与部分新内容添加 一、可变参数模版基本语法及原理包扩展emplace系列接口 二、lambda表达式lambda表达式语法捕捉列表lambda的原理lambda的应用 三、包装器bindfunction 四、部分新内容添加新的类功能1.默认的移动构造和移动赋值2.声明时…

东芝e-STUDIO2829A复印机提示“维护”该如何操作

东芝e-STUDIO2829A复印机基本参数: 产品类型 数码复合机 颜色类型 黑白 涵盖功能 复印/打印/扫描 最大原稿尺寸 A3 处 理 器 500MHz 内存容量 标配:512MB,选配:1GB 供纸容量 标配纸盒:350页(A4),最大容…

春秋杯-WEB

SSTI 可以看到主页那里有个登录测试之后为ssti {{4*4}} fenjing梭哈即可得到payload {{((g.pop.__globals__.__builtins__.__import__(os)).popen(cat flag)).read()}}file_copy 看到题目名字为file_copy&#xff0c; 当输入路径时会返回目标文件的大小&#xff0c; 通…

警惕IDEA 2024版重大Bug问题:LomBok失效、Gradle冲突、Spring Boot启动错误

一直以来我认为工具类的软件是越新越好&#xff0c;因为工具代表着一定的先进性&#xff1b;但是IDEA 2024好好的给我上了一课&#xff0c;比如lombok 不起作用、比如Spring Boot 3.4.x 启动报错、再比如MyBatis log plus冲突、再比如Gradle插件冲突. 一、Lombok 失效问题 请不…

GPT-5 传言:一场正在幕后发生的 AI 变革

新的一年&#xff0c;让我们从一个引人入胜的话题开始&#xff1a;如果我告诉你&#xff0c;GPT-5 并非虚构&#xff0c;而是真实存在呢&#xff1f;它不仅真实存在&#xff0c;而且正在你看不见的地方悄然塑造着世界。我的基本假设是&#xff1a;OpenAI 已经秘密开发出 GPT-5&…

【Unity3D】利用Hinge Joint 2D组件制作绳索效果

目录 一、动态绳索 &#xff08;可移动根节点&#xff09; 二、静态绳索 三、利用Skinning Editor(Unity2022.3.15f1正常使用) 四、注意事项 一、动态绳索 &#xff08;可移动根节点&#xff09; 动态绳索 DynamicRope空物体 Anchor和whitecircle是相同位置的物体&#xff…

【12】Word:张老师学术论文❗

目录 题目 ​NO2 NO3 NO4 NO5 NO6 NO7.8 题目 NO2 布局→页面设置→纸张&#xff1a;A4→页边距&#xff1a;上下左右边距→文档网格&#xff1a;只指定行网格→版式&#xff1a;页眉和页脚&#xff1a;页脚距边界&#xff1a;1.4cm居中设置论文页码&#xff1a;插入…

每日进步一点点(网安)

今日练习题目是PHP反序列化&#xff0c;也学习一下说明是序列化和反序列化 1.PHP序列化 序列化是指将数据结构或对象转换为可传输或可储存的格式的过程。这通常需要将数据转换为字节流或者其他编码格式&#xff0c;以便在不同系统和应用程序之间进行传输或存储 在PHP中&…

【专题一 递归】21. 合并两个有序链表

1.题目解析 2.讲解算法原理 解法:递归-> 重复的子问题 重复子问题 ->函数头的设计 合并两个有序链表--->Node dfs(l1&#xff0c;l2) 只关心某一个子问题在做什么事情 ->函数体的设计 比大小l1→next dfs( l1.next, l2)return l1 递归的出口 if(l1null)return l2…

OpenCV基础:获取子矩阵的几种方式

目录 相关阅读 方法一&#xff1a;使用切片操作 方法二&#xff1a;使用高级索引 方法三&#xff1a;使用条件筛选 方法四&#xff1a;使用 numpy 的 take 函数 相关阅读 OpenCV基础&#xff1a;矩阵的创建、检索与赋值-CSDN博客 OpenCV基础&#xff1a;图像运算-CSDN博客…

Visual Studio Community 2022(VS2022)安装方法

废话不多说直接上图&#xff1a; 直接上步骤&#xff1a; 1&#xff0c;首先可以下载安装一个Visual Studio安装器&#xff0c;叫做Visual Studio installer。这个安装文件很小&#xff0c;很快就安装完成了。 2&#xff0c;打开Visual Studio installer 小软件 3&#xff0c…

学习threejs,使用OrbitControls相机控制器

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.OrbitControls 相机控…

【2024年华为OD机试】 (B卷,100分)- 流水线(Java JS PythonC/C++)

一、问题描述 题目描述 一个工厂有 m 条流水线&#xff0c;来并行完成 n 个独立的作业&#xff0c;该工厂设置了一个调度系统&#xff0c;在安排作业时&#xff0c;总是优先执行处理时间最短的作业。 现给定流水线个数 m&#xff0c;需要完成的作业数 n&#xff0c;每个作业…

opencv图像基础学习

2.3图像的加密解密 源码如下&#xff1a; import cv2 import numpy as np import matplotlib.pyplot as plt def passImg():imgcv2.imread(./image/cat.jpg,0)h,wimg.shape#生成一个密码&#xff0c;加密key_imgnp.random.randint(0,256,size(h,w),dtypenp.uint8)img_addmcv2…

【机器学习】零售行业的智慧升级:机器学习驱动的精准营销与库存管理

我的个人主页 我的领域&#xff1a;人工智能篇&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;&#x1f44d;点赞 收藏❤ 在当今数字化浪潮汹涌澎湃的时代&#xff0c;零售行业正站在转型升级的十字路口。市场竞争的白热化使得企业必须另辟蹊径&#xff0…

Navicat Premium 原生支持阿里云 PolarDB 数据库

近日&#xff0c;我司旗下的 Navicat Premium 软件通过了阿里云 PolarDB 数据库产品生态集成认证&#xff0c;这标志着 Navicat 通过原生技术全面实现了对秒级弹性、高性价比、稳定可靠的PolarDB 数据库三大引擎&#xff08;PolarDB MySQL版、PolarDB PostgreSQL版和 PolarDB f…

【SpringBoot应用篇】SpringBoot+MDC+自定义Filter操作traceId实现日志链路追踪

【SpringBoot应用篇】SpringBootMDC自定义Filter操作traceId实现日志链路追踪 解决的问题解决方案MDC具体逻辑ymllogback-spring.xmlTraceIdUtil操作工具类TraceIdFilter自定义过滤器GlobalExceptionHandler全局异常处理类TraceIdAspect切面UserController测试验证 多线程处理M…

python如何解析word文件格式(.docx)

python如何解析word文件格式&#xff08;.docx&#xff09; .docx文件遵从开源的“Office Open XML标准”&#xff0c;这意味着我们能用python的文本操作对它进行操作&#xff08;实际上PPT和Excel也是&#xff09;。而且这并不是重复造轮子&#xff0c;因为市面上操作.docx的…