Logcli-loki 命令行工具

安装

cd /tmp/  && \
wget https://github.com/grafana/loki/releases/download/v2.5.0/logcli-linux-amd64.zip && \
unzip logcli-linux-amd64.zip && \
mv logcli-linux-amd64 /usr/local/bin/ && \
ln -sv /usr/local/bin/logcli-linux-amd64 /usr/local/bin/logcli && \
rm -f ./logcli-linux-amd64.zip 

配置

echo 'export LOKI_ADDR=http://localhost:3100' >> /etc/profile && \
source /etc/profile

如果loki 为非本机地址, 请将localhost 替换为对应ip 地址

执行命令logcli labels 出现类似以下内容时,表示配置成功

logcli labels
http://localhost:3100/loki/api/v1/labels?end=1656311640897253757&start=1656308040897253757
__name__

用法

query

query 中查询表达式可以使用任意logql 进行查询, 以下仅以{app="foo"} 做示例说明, 更多logql 语法请查询官方文档 LogQL

1. 查询app 为foo, 10条日志

logcli query '{app="foo"}' --limit 1 -o raw  
# --limit 限制日志条数, 默认30
# -o 输出格式, 有三种default, jsonl, raw. raw 相比default 会抑制日志标签与时间戳的输出

2. 查询app 为foo, 10条日志,每批次限制5条

logcli query '{app="foo"}' --limit 10 -o raw --batch 5 
# --batch 限制每批次请求行数,范围 2-5000

3. 查询app 为foo, 时间为2022-06-26 09:00:00 到 2022-06-26 18:00:00 的日志

logcli query '{app="foo"}' -o raw --from="2022-06-26T01:00:00Z" --to="2022-06-26T10:00:00Z" --timezone=UTC
# --from 日志起始时间
# --to 日志截止时间
# --timezone 时区, 二选一 Local 或UTC, 建议使用UTC 时区

有时可能会遇到这种情况-> 服务foo 在过去某一段时间明明有日志, 但是通过 logcli query '{app="foo"}' -o raw 未查询到结果, 这是因为 logcli 默认只在过去1小时的区间里查询日志(--since=1h), 如果没有查询到日志,则会返回空

4. 查询app 为foo, 过去8个小时最新的1000 条日志

logcli query '{app="foo"}' -o raw  --limit 1000  --since=8h

5. 实时查询app 为iam 的日志

logcli query '{app="foo"}'  --limit 10 -o raw -t
# -t 实时跟踪日志

labels

1. 查询loki 所有的标签

logcli labels -q # 同query 的时间区间,默认 --since=1h

2. 查询app 标签所有的值

logcli labels app

series

series 命令将根据提供的标签匹配器 返回时间窗口内的所有日志流

1. 获取所有标签的摘要信息

logcli series '{}' -q --analyze-labels # 同query 的时间区间,默认 --since=1h

2. 获取app 为foo 的日志流信息

logcli series '{app="foo"}' -q

参考: https://grafana.com/docs/loki/latest/tools/logcli/

posted @ 2022-06-27 18:05  guoew  阅读(1363)  评论(0编辑  收藏  举报