日志服务支持将日志投递到 SIEM,以确保阿里云上的所有法规、审计、与其他相关日志能够导入到您的安全运维中心(SOC)中。

名词解释

  • SIEM:安全信息与事件管理系统(Security Information and Event Management),如Splunk,IBM QRadar等。
  • Splunk HEC:Splunk的http事件接收器(Splunk Http Event Collector),一个 HTTP(s)接口,用于接收日志。

部署建议

  • 硬件参数:
    • Linux(如Ubuntu x64)操作系统。
    • 2.0+ GHZ X 8核。
    • 16 GB 内存,推荐32 GB。
    • 1 Gbps网卡。
    • 至少2 GB可用磁盘空间,建议10 GB以上。
  • 网络参数:

    从组织内的环境到阿里云的带宽应该大于数据在阿里云端产生的速度,否则日志无法实时消费。假设数据产生速度均匀,峰值为平时的2倍左右,每天产生1 TB原始日志。数据传输为5倍压缩的场景下,推荐带宽应该在4 MB/s(32 Mbps)左右。

  • Python语言:我们用 Python 语言进行消费。Java 语言用法,请参考通过消费组消费日志

Python SDK

  • 推荐使用标准 CPython 解释器。
  • 日志服务的 Python SDK 可以使用python3 -m pip install aliyun-log-python-sdk -U命令进行安装。
  • 更多日志服务 Python SDK 的使用,请参考User Guide

协同消费库

协同消费库(Consumer Library)是日志服务中对日志进行消费的高级模式,提供了消费组的概念对消费端进行抽象和管理,和直接使用SDK进行数据读取的区别在于,用户无需关心日志服务的实现细节,只需要专注于业务逻辑,另外,消费者之间的负载均衡、failover 等用户也都无需关心。

在日志服务中,一个日志库(Logstore)下面会有多个分区(Shard),协同消费库将 shard 分配给一个消费组下面的消费者,分配方式遵循以下原则:
  • 每个shard只会分配到一个消费者。
  • 一个消费者可以同时拥有多个shard。
新的消费者加入一个消费组,这个消费组的 shard 从属关系会调整,以达到消费负载均衡的目的,但是上面的分配原则不会变,分配过程对用户透明。

协同消费库的另一个功能是保存 checkpoint,方便程序故障恢复时能接着从断点继续消费,从而保证数据不会被重复消费。

Spark Streaming、Storm 以及 Flink Connector 都以 Consumer Library 作为基础实现。

投递方式

推荐使用日志服务消费组构建程序来从日志服务进行实时消费,然后通过HTTPS或者Syslog来发送日志给SIEM。