如何通过HEC将阿里云相关日志投递到SIEM
发布日期:2025-01-03 18:24 点击次数:110例如当前SIEM(如Splunk)位于组织内部环境(on-premise),而不是云端。为了安全考虑,没有开放任何端口让外界环境来访问此SIEM。 本章节中的配置代码仅为示例,最新的代码示例请参见Github或Github(多源日志库时)。推荐使用日志服务消费组构建程序进行实时消费,然后通过Splunk API(HEC)发送日志给Splunk。如下代码展示如何从日志服务获取数据并投递到Splunk,请仔细阅读代码中相关注释并根据需求调整格式。 针对多源日志库,需要共用一个executor以避免进程过多。更多信息,请参见多源日志库时发送日志到Splunk。核心的变化是主函数,示例如下所示。 每一个日志库(logstore)最多可以配置30个消费组,如果遇到ConsumerGroupQuotaExceed则表示超出限制,建议在控制台删除一些不再使用的消费组。在控制台查看消费组状态,详情请参见步骤三:查看消费组状态。基于消费组的程序,可以直接启动多次程序以实现并发效果。所有消费者的名称均不相同(消费者名以进程ID为后缀),且属于同一个消费组。因为一个分区(Shard)只能被一个消费者消费,例如一个日志库有10个分区,那么最多有10个消费组同时消费。基于测试,在没有带宽、接收端速率限制(如Splunk端)的情况下,用python3运行上述样例,单个消费者大约占用20%的单核CPU资源,此时消费可以达到10 MB/s原始日志的速率。因此10个消费者理论上可以达到100 MB/s原始日志,即每个CPU核每天可以消费0.9 TB原始日志。消费组将检测点(check-point)保存在服务器端,当一个消费者停止,另外一个消费者将自动接管并从断点继续消费。可以在不同机器上启动消费者,这样在一台机器停止或者损坏的情况下,其他机器上的消费者可以自动接管并从断点进行消费。为了备用,也可以通过不同机器启动大于Shard数量的消费者。如果服务入口(Endpoint)配置为https://前缀,例如https://cn-beijing.log.aliyuncs.com,则程序自动使用HTTPS加密与日志服务连接。服务器证书*.aliyuncs.com是由GlobalSign签发,默认大多数Linux和Windows机器自动信任此证书。如果有机器不信任此证书,请参见Certificate installation下载并安装此证书。
- 上一篇:使命召唤11:高级战争
- 下一篇:寻找独角兽:带着初心与热爱,走向有光的未来