用于连接 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
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。