斯普林克河

splunk-hec-stream的Python项目详细描述


展开HEC流

splunk hec的python流式日志处理程序


此处理程序不是事件发件人。 处理程序本身不涉及转发到splunk hec端点。

这意味着日志源不必关心缓冲、转换和重试。 这些功能负责日志转发服务(如aws kinisis firehose、fluentd、logstash等)。

用例

  • 将aws lambda函数中的日志转发到splunk
    • 通过aws kinisis firehose和cloudwarch日志将事件发送到splunk hec端点
  • 与日志收集器(如fluentd和logstash)一起使用
    • 从日志文件中读取事件并由日志收集器进行处理

如何安装

pip3 install splunk-hec-stream

示例

importloggingimportjsonfromdatetimeimportdatetimefromsplunk_hec_stream.loggingimportSplunkHECStreamHandlerlogging.basicConfig(level=logging.INFO,handlers=[SplunkHECStreamHandler("main","splunk-logger-test","aws:lambda","_json")])logging.info({"key1":"value1"})logging.info("test")logging.info('''testln''')logging.info(json.dumps({"key1":"value1"}))# You can overwrite logged time by _time extra key (that must be float)logging.info({"key":"value"},extra={'_time':datetime.utcnow().timestamp()})

此示例代码将以下日志放入标准输出:

{"loggingHandler":"SplunkHECStreamHandler","time":1557301830.617483,"host":"aws:lambda","index":"main","source":"splunk-logger-test","sourcetype":"_json","event":{"key1":"value1"}}{"loggingHandler":"SplunkHECStreamHandler","time":1557301830.617758,"host":"aws:lambda","index":"main","source":"splunk-logger-test","sourcetype":"_json","event":{"message":"test"}}{"loggingHandler":"SplunkHECStreamHandler","time":1557301830.617904,"host":"aws:lambda","index":"main","source":"splunk-logger-test","sourcetype":"_json","event":{"message":"test\nln"}}{"loggingHandler":"SplunkHECStreamHandler","time":1557301830.618075,"host":"aws:lambda","index":"main","source":"splunk-logger-test","sourcetype":"_json","event":{"message":"{\"key1\": \"value1\"}"}}{"loggingHandler":"SplunkHECStreamHandler","time":1557269430.618213,"host":"aws:lambda","index":"main","source":"splunk-logger-test","sourcetype":"_json","event":{"key":"value"}}

通过将这些json行转发到splunk hec端点,splunk可以将它们读取并存储为事件。

与AWS Lambda一起使用

这个包对于将aws lambda的日志转发到splunk非常有用。

  1. lambda函数将日志放入cloudwatch,
  2. 订阅筛选器将它们转发到Firehose,
  3. 消防水龙带将它们向前推进,使它们爆裂。

如何

  1. 创建包含此库的lambda层
  2. 配置Kinesis Firehose以将事件发送到Splunk HEC终结点
    • /contrib/aws_firehose_splunk_hec_stream_processor.py可用于事件处理器lambda。
  3. 配置cloudwatch日志订阅筛选器,并将筛选的事件发送到firehose流
    • loggingHandlerjson中的键可用于筛选转发到splunk hec端点的日志。

地形

/contrib/terraform目录包含上述转发系统的terraform模块。

provider "aws" {}

variable "python_lib_path" {
  default = "/usr/local/lib/python3.7/site-packages/splunk_hec_stream"
}

module "handler_layer" {
  source     = "github.com/shuichiro-makigaki/splunk_hec_stream//contrib/terraform/aws_lambda_layer"
  layer_name = "splunk_hec_stream_handler"
  lib_path   = var.python_lib_path
}

module "firehose_processor" {
  source                  = "github.com/shuichiro-makigaki/splunk_hec_stream//contrib/terraform/aws_firehose"
  lib_path                = var.python_lib_path
  hec_endpoint            = "https://example.com"
  hec_token               = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
  layer_arn               = module.handler_layer.arn
  s3_delivery_bucket_name = "XXXXXXXX"
}

变量python_lib_path应该在您这边替换。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java泛型和基类   ProcessBuilder或DefaultExecutor启动的“RunAs”子进程的java读取标准输出   java应用程序在尝试登录时突然停止   Java:神秘的Java未捕获异常处理程序[带代码]   java JavaFX NumberAxis自动范围无限循环   最新版本和旧版本冲突的java双Maven依赖关系   java如何导入带有部署变量类名的静态函数?   编译器构造不同的JDK更新会产生不同的Java字节码吗?   java无法在struts 1.1中上载任何超过250 MB大小的文件   java调整jcombobox下拉菜单的宽度   java如何在某些情况下忽略@SQLDelete注释   在Eclipse for Java EE developers edition中禁用HTML警告   java HttpUrlConnection重置请求属性   java@Provider资源未在rest应用程序中注册   java TOP N使用JPA连接   java在使用反射调用方法时区分int和Integer参数