Skip to main content

用于连接 Humio 的 Python SDK

项目描述

humiolib库是 Humio Web API 的包装器,支持直接从 Python 与 Humio 轻松交互可以在https://python-humio.readthedocs.io/en/latest/readme.html找到此存储库的完整文档。

想象

humiolib的愿景是围绕 Humio Web API 创建一个自以为是的包装器,支持日志摄取和日志查询。该项目不只是将 Web 端点公开为 Python 方法,而是尝试改进 API 的可用性体验。此外,该项目还寻求添加非侵入式的生活质量功能,以便用户在开发过程中可以专注于他们的主要目标。

治理

该项目由 Humio ApS 的员工维护。作为一般规则,只有 Humio 的员工才能成为维护者并拥有对该存储库的提交权限。因此,如果您想为我们非常鼓励的项目做出贡献,您必须首先分叉存储库。维护者将对接受或拒绝拉取请求拥有最终决定权。根据经验,如果出现以下情况,将接受拉取请求:

  • 贡献符合项目的愿景

  • 所有自动化测试均已通过

  • 贡献的质量可与项目的其他部分相媲美

维护者将尝试快速响应问题并拉取请求,但他们这样做的能力可能会有所不同。如果您在创建问题或提出拉取请求后的 7 天内没有收到维护者的回复,请随时在相关帖子上 ping 他们。

参与该项目的积极维护者包括:

安装

humiolib库已经发布在 PyPI 上,所以你可以使用pip安装它:

pip install humiolib

用法

下面的示例旨在让您使用humiolib。有关进一步的文档,请查看代码本身。

Humio客户端

HumioClient 类用于与 Humio 的一般交互。它主要用于执行查询,以及管理您的 Humio 实例的不同方面。

from humiolib.HumioClient import HumioClient

# Creating the client
client = HumioClient(
     base_url= "https://cloud.humio.com",
     repository= "sandbox",
     user_token="*****")

# Using a streaming query
webStream = client.streaming_query("Login Attempt Failed", is_live=True)
for event in webStream:
    print(event)

# Using a queryjob
queryjob = client.create_queryjob("Login Attempt Failed", is_live=True)
poll_result = queryjob.poll()
for event in poll_result.events:
    print(event)

# With a static queryjob you can poll it iterativly until it has been exhausted
queryjob = client.create_queryjob("Login Attempt Failed", is_live=False)
for poll_result in queryjob.poll_until_done():
    print(poll_result.metadata)
    for event in poll_result.events:
            print(event)

HumioIngestClient

HumioIngestClient 类用于将数据摄取到 Humio。虽然 HumioClient 也可用于摄取数据,但这主要用于调试。

 from humiolib.HumioClient import HumioIngestClient

# Creating the client
client = HumioIngestClient(
   base_url= "https://cloud.humio.com",
   ingest_token="*****")

# Ingesting Unstructured Data
messages = [
      "192.168.1.21 - user1 [02/Nov/2017:13:48:26 +0000] \"POST /humio/api/v1/ingest/elastic-bulk HTTP/1.1\" 200 0 \"-\" \"useragent\" 0.015 664 0.015",
      "192.168.1..21 - user2 [02/Nov/2017:13:49:09 +0000] \"POST /humio/api/v1/ingest/elastic-bulk HTTP/1.1\" 200 0 \"-\" \"useragent\" 0.013 565 0.013"
  ]

client.ingest_messages(messages)

# Ingesting Structured Data
structured_data = [
      {
          "tags": {"host": "server1" },
          "events": [
              {
                  "timestamp": "2020-03-23T00:00:00+00:00",
                  "attributes": {"key1": "value1", "key2": "value2"}
              }
          ]
      }
  ]

client.ingest_json_data(structured_data)

变更日志

0.2.0 (2020-03-30)

PyPI 的初始真实版本

添加:

  • 测试,使用 vcr.py 模拟 API 调用

  • 自定义错误处理以完全包装使用的 url 库

  • 查询作业类

改变:

  • 整个API接口已更新

  • 更新了 Sphinx 文档

删除:

  • 早期版本遗留的一些配置文件

0.2.2 (2020-05-19)

修正错误以确保可以轮询静态查询作业的所有结果

添加:

  • 静态查询作业现在可以查询多个段

改变:

  • 在从 QueryJob 轮询时,它现在将停止,直到它可以从 Humio 轮询数据,确保不会过早返回空结果。

删除:

  • poll_until_done 方法已从实时查询作业中删除,因为这在概念上没有意义,与静态查询作业相同。

0.2.3 (2021-08-13)

较小的错误修正已更改:

  • 修复 HumioClient.py 文档字符串中的 url

  • 将 kwargs 传播到 QueryJob.py 中的轮询函数

0.2.4 (2022-08-15)

较小的文件相关的错误修正 更改:

  • upload_file 函数不再尝试转换为 json

  • list_files 函数现在适用于较新版本的 humio

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

humiolib-0.2.4.tar.gz (39.4 kB 查看哈希)

已上传 source

内置分布

humiolib-0.2.4-py2.py3-none-any.whl (18.9 kB 查看哈希)

已上传 py2 py3