#log #command-line #graylog #logging #cli

app 五十度灰

用 Rust 编写的 Graylog REST API 客户端

2 个不稳定版本

0.2.0 2019 年 10 月 29 日
0.1.0-beta.02019 年 8 月 31 日

#2369命令行工具

Apache-2.0

48KB
994 代码行

50shades (of Graylog)

Latest version License CI Status

用 Rust 编写的日志追踪和查询客户端。

50shades 与 Graylog 和 Elasticsearch 的查询 API 进行接口,以便可以从命令行执行日志消息搜索。它支持将登录信息存储在本地操作系统密钥链中,并跟踪查询,以便以 tail -fjournalctl -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

在可以使用 queryfollow 进行任何实际查询之前,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 调用未指定节点的情况将尝试使用用户 adminhttps://graylog.example.com/api 上查询 Graylog 服务器 API。通过指定 -n elastic,它将相反地查询 https://elastic.example.com/ 上的 Elasticsearch 服务器以获取所有索引,并尝试验证用户 elastic。指定 -n logstash 将限制对以 logstash- 开头的索引的相同查询,而 -n elastic-noauth 将查询所有索引,但不尝试任何验证,这对于 Elasticsearch 是可行的,但对于 Graylog 则不行。

此外,如果指定了用户名,则必须为节点存储匹配的密码。这可以通过使用 login 命令并使用 -n 指定所需节点来存储密码来完成。

在选项之后传递的任何附加的 queryfollow 参数将作为实际查询传递给 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