Loki API一次讲透:5分钟跑通日志聚合接口
Loki API一次讲透5分钟跑通日志聚合接口【免费下载链接】lokiLike Prometheus, but for logs.项目地址: https://gitcode.com/GitHub_Trending/lok/lokiLoki是类Prometheus的日志聚合系统Loki API是它的数据入口POST推日志GET用LogQL查日志标签当索引。我们从跑通第一个请求讲起最后给一份生产踩坑清单全部复制即跑。 跑通第一个请求先别急着写数据用一个最轻的读端点确认Loki活着curl http://localhost:3100/loki/api/v1/labels返回{status:success,data:[]}就算通了。空数组很正常——还没人写过日志。这一步能排除 90% 的我是不是配错了问题。写入与查询两个核心场景日志聚合只有两个本质动作写进去查出来。对应Loki的两个REST接口POST /loki/api/v1/push和GET /loki/api/v1/queryquery_range。推送日志streams三层结构push请求体只有一层嵌套要记streams是数组每个流由stream标签集合决定日志归到哪条流和values[纳秒时间戳, 日志内容]的数组组成。同标签的日志天然同流curl -X POST http://localhost:3100/loki/api/v1/push \ -H Content-Type: application/json \ -d {streams:[{stream:{job:demo,host:server-01}, values:[[$(date %s%N),Hello Loki, first log]]}]}等个一两秒ingester默认按周期刷盘再发一次第一条命令的labels就能看到data里出现job和host。LogQL查询即时与范围各一条查询端点都接收 LogQL 表达式URL编码后。标签选择器{jobdemo | Hello}的意思是从 job 为 demo 的流里过滤含 Hello 的行。# 即时查询只看某个时刻limit 控制条数 curl http://localhost:3100/loki/api/v1/query?query{job%22demo%22}limit10time$(date %s)# 范围查询start/end 为Unix秒step 是聚合步长 curl http://localhost:3100/loki/api/v1/query_range?query{job%22demo%22}%20%7C%3D%20%22Hello%22start$(date -d 1 hour ago %s)end$(date %s)step1m两者的响应结构一致data.result是个数组日志查询里每项含stream标签和values时间戳内容换成sum(count_over_time(...))这类聚合器返回的则是matrix时间点数值。想系统学语法看 LogQL文档。标签Loki的索引灵魂Loki不解析日志正文只给标签建索引——所以你能多快查到一条日志取决于标签设计得多好。两个元数据端点是探索数据的起点端点作用什么时候用GET /loki/api/v1/labels列出所有标签名不确定数据里有什么时GET /loki/api/v1/label/name/values列出某标签的所有取值拼查询前先确认值GET /loki/api/v1/series列出所有日志流排查流数量是否爆炸curl http://localhost:3100/loki/api/v1/label/job/values上图解释了为什么标签是灵魂相同的标签组合会哈希出同一个流ID日志聚进同一组chunk标签任何一个值变了就是另一条流、另一份索引。高基数标签比如把user_id塞进标签会制造海量流存储和查询一起崩。⚠️ 踩坑与调优清单400 先看编码Content-Encoding: gzip但发了明文或JSON里时间戳少了引号是最常见的400。values里的时间戳必须是字符串。429 被限流不是故障ingester按租户限流批量写入时把每批控制在 1MB 内别攒大包硬怼。500 先看ingester写链路问题 9 成在 ingester 侧查它的日志和内存而不是反复重试。标签别超过10个高基数标签会拖垮查询instance可以用request_id这种别进标签——把它留在日志正文里用|过滤。查询加| limit或限定时间窗query_range不设start/end或step太小会把整个索引扫到冒烟。时间戳用纳秒$(date %s%N)差三个零就是25年后。下一步把 Loki HTTP API参考 留作速查手册——tail、series、index/volume这些端点都能覆盖日常运维。真正的闭环在 Grafana接入上面的Loki数据源LogQL查询会从curl搬进查询框配合时间选择器完成可视化写入侧则把 Promtail 指向同一个 push 端点。跑通本文两条curl的那一刻你的日志管道其实已经活了。【免费下载链接】lokiLike Prometheus, but for logs.项目地址: https://gitcode.com/GitHub_Trending/lok/loki创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →