使用humioapi库与humioapi交互的命令行界面

humiocli的Python项目详细描述


从命令行使用humioapi进行操作

This project requires Python>=3.6.1

这是非官方的humioapi库的一个附带CLI。它允许您从命令行轻松地使用它的大部分功能。如果您正在寻找官方CLI,可以在here: humiolib找到它。在

安装

python3 -m pip install humiocli
# or even better
pipx install humiocli

主要特点

  • 具有多种输出格式的流式搜索
  • 子搜索(将一个搜索的输出管道输出到新的搜索中)
  • 通过ENV变量配置的默认值(优先级:shell options>;shell environment>;config-file
  • 类似Splunk的可链接相对时间修改器
  • 通过将搜索URL传递给urlsearch,可以轻松地从浏览器切换到CLI
  • 将数据摄取到Humio(但是对于严肃的事情,您应该使用Filebeat)
  • 列出存储库

首次设置

启动引导安装向导以配置环境

^{pr2}$

这将帮助您创建一个带有默认Humio URL和令牌的环境文件,因此您以后不必显式地将它们作为选项提供。在

所有选项可以由格式上的环境变量提供 HUMIO_<OPTION>=<VALUE>。如果~/.config/humio/.env中存在.env文件 将在执行时自动获取源,而不会重写 现有环境。在

示例

在以reponame开头的所有回购中执行搜索,并输出@rawstrings

hc search --repo 'reponame*''#type=accesslog statuscode>=400'

使用来自另一个搜索(“subsearch”)的字段的结果执行搜索

步骤1:将输出格式设置为or-fields

hc search --repo=auth 'username | select([session_id, app_name])' --outformat=or-fields | jq '.'

这将提供一个JSON结构,其中包含来自所有字段值组合的已准备好的搜索字符串。特殊字段SUBSEARCH组合了所有字段的所有搜索字符串。在

输出示例:

{"session_id":"\"session_id\"=\"5CF4A111\" or \"session_id\"=\"14C8BCEA\"","app_name":"\"app_name\"=\"frontend\"","SUBSEARCH":"(\"session_id\"=\"5CF4A111\" or \"session_id\"=\"14C8BCEA\") and (\"app_name\"=\"frontend\")"}

步骤2:将此结果通过管道传输到新的搜索并引用所需字段:

hc search --repo=auth 'username | select([session_id, app_name])' --outformat=or-fields | hc --repo=frontend '#type=accesslog {{session_id}}'

将聚合结果输出为ND-JSON事件

简单示例:

Humios bucketing currently creates partial buckets in both ends depending on search period. You may want to provide a rounded start and stop to ensure we only get whole buckets.

hc search --repo 'sandbox*' --start=-60m@m --stop=@m "#type=accesslog | timechart(span=1m, series=statuscode)"

或者用更长的多行搜索

hc search --repo 'sandbox*' --start -60m@m --stop=@m  "$(cat << EOF#type=accesslog| case {    statuscode<=400 | status_ok := 1 ;    statuscode=4*  | status_client_error := "client_error" ;    statuscode=5*  | status_server_error := "server_error" ;    * | status_broken := 1}| bucket(limit=50, function=[count(as="count"), count(field=status_ok, as="ok"), count(field=status_client_error, as="client_error"), count(field=status_server_error, as="server_error")])| error_percentage := (((client_error + server_error) / count) * 100)EOF)"

将解析器文件上载到目标存储库,覆盖任何现有解析器

hc makeparser --repo='sandbox*' customjson

插入一个单行日志文件,该文件带有与解析器关联的摄取令牌

hc ingest customjson

使用用户提供的记录分隔符(标记头)和解析器摄取多行文件

hc ingest README.md --separator '^#' --fields '{"#repo":"sandbox", "#type":"markdown", "@host":"localhost"}'

发展

要以可编辑模式安装cli和api包,请执行以下操作:

git clone https://github.com/gwtwod/humiocli.git
poetry install

创建自包含的可执行文件以便于分发

它使用Shiv创建一个zipapp。一个包含所有python依赖项和shebang的独立文件。在

在第一次运行时,这将把所需的模块解压到~/.shiv/hc/,这将导致启动的短暂延迟。但是,后续运行应该很快。位置可以用env变量SHIV_ROOT控制。您可能应该偶尔清理一下这个目录,因为每次可分发的更改都会创建一个新的目录。在

pip install shiv
shiv -c hc -o hc humiocli -p "/usr/bin/env python3"

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

推荐PyPI第三方库


热门话题
java Spring freemarker多模板加载程序路径   在java插件中从控制台获取输入   java在包中创建继承类   网页抓取Java Jsoup网页抓取   java在线程内创建一个对象,而true条件具有相同的引用   java如何根据空格数拆分字符串   java新的安卓 studio更新中的配置文件“app”是什么?   java在将ArrayList写入/读取到文件时出现奇怪的问题   java Reg替换文本块第一次出现+最后一次出现   java当我单击任何RecyclerView列表项时,如何在MainActivity的EditText中显示特定的单击项?   JAVA XML删除节点仅删除第一个外观   java如何在数组中查找特定值   java SVG/矢量图形对象布尔运算(并集、交集、减法)   java在Android中创建线程需要多长时间   尝试从JBOSS联系Oracle LDAP服务器时发生java连接重置异常   java基于参数获取特定的实现实例   使用java就地修改文件内容   java MonetaryException:未加载MonetaryAmountsSingletonSpi   java接受用户的不同输入并使其触发完全相同的代码段的最短方法是什么   Spring 3.2.8应用程序中未找到java HTTP 404错误