上一回我们对 NSG Flow Log 方案的整体架构做了介绍,大家可以参考下面的架构图,快速回忆一下。本文我们主要聚焦在事件驱动的日志注入部分,即架构图中流程中的第一到第三步。

NSG Flow Log 目前支持的 Export 方式只有持久化到 Blob 存储中,使用的是 Block Blob 类型,NSG Flow Log 以 1 分钟为间隔向 Block Blob 中的日志文件追加 Block,在 Storage Account 内所有日志文件均归属在名为 insights-logs-networksecuritygroupflowevent Blob Container 下,Blob 日志文件的命名规则如下:resourceId=/SUBSCRIPTIONS/{subscriptionID}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/{nsgName}/y={year}/m={month}/d={day}/h={hour}/m=00/macAddress={macAddress}/PT1H.json,每一小时都会产生一个独立的 Blob 日志文件,因为同一个 NSG 策略可以被使能在多台虚拟机上,所以在 Blob 命名规则上大家可以看到 macAddress 这个字段用来标识虚拟机网卡的 Mac 地址。在将 Blob 存储的日志流化的实现里面很重要的一个目标就是实时性,上面看到 Blob 存储的 Log 最小的更新周期是 1 分钟,以事件驱动的方式来处理可以满足实时性的要求,当 Blob 中产生新文件或者现有文件有更新时,用该事件驱动后续对日志的处理流程来保证最新的日志被注入到后端的分析引擎。Azure 中的 Event Grid 原生支持 Blob 存储作为事件源,当 Blob 中产生新文件或者现有文件有更新时,Event Grid 可以释放该事件消息。在消费该事件消息时,我们需要知道触发该事件的 Blob 名称,以及该事件产生的新增日志偏移量。我们先来看一下 Blob 变更事件的 Schema :

[{"topic": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount","subject": "/blobServices/default/containers/testcontainer/blobs/testfile.txt","eventType": "Microsoft.Storage.BlobCreated","eventTime": "2017-06-26T18:41:00.9584103Z","id": "831e1650-001e-001b-66ab-eeb76e069631","data": {"api": "PutBlockList","clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760","requestId": "831e1650-001e-001b-66ab-eeb76e000000","eTag": "0x8D4BCC2E4835CD0","contentType": "text/plain","contentLength": 524288,"blobType": "BlockBlob","url": "https://example.blob.core.windows.net/testcontainer/testfile.txt","sequencer": "00000000000004420000000000028963","storageDiagnostics": {"batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"}},"dataVersion": "","metadataVersion": "1"
}]

其中 data 部分的 url 属性标识了触发事件的 Blob 名称,contentLength 属性标识当前 Blob 文件的总字节大小,新增日志的偏移量可以通过前后两次事件的差值进行计算。偏移量计算要求每次事件处理时对前序事件有依赖关系,所以需要一个持久化存储来记录相同 Blob 文件的前序状态,将 Blob 文件名和 contentLength 记录下来,这是一个典型的 KV 持久化场景,我们选择了 Azure Table Storage 来实现,CosmosDB 也是不错的选择。实现已经介绍清楚,一起来看下配置方法:

1. 创建 NSG Flow Log 存储账号,

2. 打开 NSG Flow Log,Storage Account 指向第一步创建的存储账户

3. 配置 Event Grid 的 Blob 事件触发器(此步也可跳过,参考 Azure Function ETL 部分),

配置完成了, Blob 事件触发就绪,后续就可以开始 NSG Flow Log 的流式处理啦。未完待续...

转载于:https://www.cnblogs.com/wekang/p/10936556.html

Azure NSG Flow Log 引发的自嗨 -- 事件驱动的日志注入相关推荐

  1. Azure NSG Flow Log 引发的自嗨 -- 日志查询分析

    上一篇中通过 Function 服务来实现了 NSG Flow Log 的 ETL 和流化处理,然后将处理好的 NSG Flow Log 推入到 Event Hub 中.NSG Flow Log 的分 ...

  2. Azure NSG Flow Log 引发的自嗨 -- 日志 ETL 流式处理

    上一篇中我们已经完成了事件驱动的日志注入的事件驱动的部分,本篇我们继续介绍关于由事件驱动产生的增量 NSG Flow Log 如何进行 ETL 处理,然后流式的方式注入到 Data Explorer ...

  3. Azure NSG网络安全组日志分析

    好久不见,最近很多小伙伴说Azure的监控不大灵光,所以就去回去好好看了一下目前Azure上服务的监控支持情况.整理来看AZURE目前GLOBAL从运维监控角度的支持好于国内AZURE,无论是基础组件 ...

  4. 使用开源工具ELK可视化 Azure NSG日志

    国内的Azure最近上线了网络观察程序服务,可以帮助用户监控和分析VNET虚拟网络.其中一个很重要的功能就是可以记录NSG的安全访问日志了.但是如果用户设置了NSG流日志,并下载日志想要分析一下的话, ...

  5. 位于/var/log目录下的20个Linux日志文件

    位于/var/log目录下的20个Linux日志文件[译] from:http://buptguo.com/2014/01/16/linux-var-log-files/ 原文地址:20 Linux ...

  6. 2. linux的日志文件在哪个目录,位于/var/log目录下的20个Linux日志文件

    如果你多数时间都在使用Linux系统,那么你有必要知道系统的日志文件位于哪里,以及每个日志文件是关于哪些内容的.在系统正常的时候学习理解各种日志文件的内容,有助于在遇到紧急情况时通过日志文件定位问题所 ...

  7. Azure NSG(安全组)

    [在此处输入文章标题] 之前在Azure上,对于网络安全,用户自己可以配置VM终结点的ACL ,但是无法针对整个V-NET或定义一个组来配置ACL. 网络安全组 (NSG) 的出现解决了这个问题,可用 ...

  8. [ Azure - NSG ] 通过 Azure 网络安全组建立虚拟机的入站规则 Inbound 和出站规则 Outbound

    本文介绍在Azure门户中设置NSG中的inbound端口规则和outbound端口规则,在自己的虚拟机VM中如果添加了对应的防火墙白名单,同样也需要在NSG中进行配置,不然依然无法进行通信.如果有遇 ...

  9. Android log 引发的血案

    今天调试代码,我打印了一个东西: Log.d("WelcomeActivity", res.str); 结果总是代码执行不到这一行的下一行,程序也没有挂掉.后来,我自己去想各种可能 ...

最新文章

  1. -变量,进制,数据类型,标识符
  2. java里面怎么添加表约束_mysql给表增加约束条件
  3. CVPR2020人脸防伪检测挑战赛冠亚军论文解读(上篇)
  4. Android开发 ----------怎样真机调试?
  5. python中%是什么意思_python中%代表什么意思?
  6. 运营商与SP再次博弈手机广告
  7. 安装python环境与运行_专栏G|轻松学Python01:Python环境搭建与运行
  8. 【Python】base64模块对图片进行base64编码和解码
  9. Linux四种共享内存技术(附源码):SystemV、POSIX mmap、memfd_create、dma-buf
  10. CentOS7--IP配置与网络问题排查
  11. OpenCV Sobel和Scharr (索贝尔和夏尔滤波器检测边缘)
  12. html list列表
  13. 形式化方法对软件开发的挑战:一些历史与现实
  14. 根据名称获取对应的拼音码首字母大写
  15. 视觉SLAM总结-本质矩阵E分解
  16. Java判定身份证号码的合法性
  17. [工作记事] Ubuntu 编译安装PHP以及gd库使得支持jepg
  18. 数据库基础之位图索引
  19. 计算机中班音乐,【精品】中班音乐教案6篇
  20. Leetcode-01-Tow SUM

热门文章

  1. 1. 简明误差卡尔曼滤波器(ESKF)及其推导过程
  2. 刚体运动部分(坐标、旋转、平移、李群和李代数)
  3. linux安装java.jdk环境
  4. HPE的通信技术集团将如何加速电信5G的普及和应用?
  5. 前端工程化配置-husky + eslint + lint-staged
  6. Git+Vscode+ToroiseGit+码云
  7. PLC实验 S7-300超详细硬件组态实验过程
  8. 利用matlab画地图
  9. 汇编移位指令SHR,SAR,SAL/SHL,ROR,ROL,RCR,RCL
  10. localstorage ie11不支持