2 个不稳定版本
0.2.0 | 2019 年 10 月 29 日 |
---|---|
0.1.0-beta.0 | 2019 年 8 月 31 日 |
#2369 在 命令行工具
48KB
994 代码行
50shades (of Graylog)
用 Rust 编写的日志追踪和查询客户端。
50shades 与 Graylog 和 Elasticsearch 的查询 API 进行接口,以便可以从命令行执行日志消息搜索。它支持将登录信息存储在本地操作系统密钥链中,并跟踪查询,以便以 tail -f
或 journalctl -f
的方式查看日志。50shades 理解关于时间段的直观英语表达式。输出可以使用 Handlebars 语法进行控制。
用法
50shades 提供了几个子命令,每个子命令都有其各自的选项集。在任意其他子命令上调用 help
子命令,或将 --help
传递给任意子命令,将打印该命令的帮助屏幕。在没有子命令的情况下调用 help
或传递 --help
将打印一般帮助。
USAGE:
50shades [OPTIONS] <SUBCOMMAND>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-c, --config <config> Path to custom configuration file
-n, --node <node> Node to query [default: default]
-t, --template <template> Template to use for output [default: default]
SUBCOMMANDS:
follow Follows the tail of a query (like tail -f on a log file)
help Prints this message or the help of the given subcommand(s)
init Initializes the configuration file
login Stores new password for specified node
query Performs one-time query
在可以使用 query
或 follow
进行任何实际查询之前,50shades 需要提供有效的 TOML 配置文件和指定 node
的匹配表(默认为 default
),该表必须包含一个 url
和一个 user
。
一个有效的配置文件如下所示
[nodes.default]
url = 'https://graylog.example.com/api'
user = 'admin'
type = 'graylog'
[nodes.elastic]
url = 'https://elastic.example.com/'
user = 'elastic'
type = 'elastic'
[nodes.logstash]
url = 'https://elastic.example.com/logstash-*'
user = 'elastic'
type = 'elastic'
[nodes.elastic-noauth]
url = 'https://elastic.example.com/'
type = 'elastic'
[templates]
default = '[{{default container_name "-"}}] {{{message}}}'
rocket = '{{{method}}}{{{route}}} {{{uri}}}{{{status}}}'
这里,50shades 调用未指定节点的情况将尝试使用用户 admin
在 https://graylog.example.com/api
上查询 Graylog 服务器 API。通过指定 -n elastic
,它将相反地查询 https://elastic.example.com/
上的 Elasticsearch 服务器以获取所有索引,并尝试验证用户 elastic
。指定 -n logstash
将限制对以 logstash-
开头的索引的相同查询,而 -n elastic-noauth
将查询所有索引,但不尝试任何验证,这对于 Elasticsearch 是可行的,但对于 Graylog 则不行。
此外,如果指定了用户名,则必须为节点存储匹配的密码。这可以通过使用 login
命令并使用 -n
指定所需节点来存储密码来完成。
在选项之后传递的任何附加的 query
或 follow
参数将作为实际查询传递给 Graylog 或 Elasticsearch,并使用 Lucene 查询语法,就像在相应的工具中一样。
默认配置文件
默认配置文件的存储位置取决于操作系统。为了使用合理的值创建它并了解其位置,50shades 提供了 init
命令,该命令将提示输入 URL、用户名和密码,并打印文件的路径。初始化配置文件还会写入默认输出模板,下面将进一步说明。
控制输出
每个查询结果都以单行输出,由 --template
或 -t
选项引用的 Handlebars 模板控制。50shades 的默认模板如下所示
[{{default container_name "-"}}] {{{message}}}
50shades 包括 default
作为自定义的 辅助函数,可以用来指定一个默认值,如果查询结果中缺少字段,否则将生成一个空字符串。
密码存储
50shades 仅支持从操作系统/桌面环境密钥链中读取密码,密码不能存储在配置文件中,也不能在调用时传递或管道传输。
安装
安装 50shades 的最简单方法是安装一个有效的 Rust 工具链并调用
cargo install fifty-shades
这将把生成的二进制文件放置在 ~/.cargo/bin
。
版权
版权所有 2019 Communicatio.Systems GmbH
根据 Apache 许可证 2.0 版本(“许可证”);除非适用法律要求或经书面同意,否则不得使用此文件,除非符合许可证。您可以在以下位置获得许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何明示或暗示的保证或条件。有关许可证的具体语言规定,请参阅许可证。
依赖项
~26–39MB
~697K SLoC