从零跑通 Loki 日志读写:3条 curl 命令搞定

📅 发布时间:2026/9/4 14:12:12
从零跑通 Loki 日志读写:3条 curl 命令搞定
从零跑通 Loki 日志读写3条 curl 命令搞定【免费下载链接】lokiLike Prometheus, but for logs.项目地址: https://gitcode.com/GitHub_Trending/lok/lokiLoki 是 Grafana Labs 出品的开源日志聚合系统口号是Like Prometheus, but for logs——你把日志推给它再用 LogQL 查询语言把它捞回来。全文只干一件事用三条 curl 命令把写入 → 查询 → 标签这条核心链路跑通。⚡ 快速认知把 Loki 想成日志界的收件箱每条日志贴一张标签便签比如jobapi-server所有贴同一张便签的日志自动归成一流。你不用建索引按标签查就行这也是它比传统搜索引擎省资源的关键。 动手用 curl 推送第一条日志先起一个 Loki本地单条命令即可docker run -p 3100:3100 grafana/loki然后回答一个问题我的应用日志怎么进去答案就是 POST 到/loki/api/v1/pushcurl -X POST http://localhost:3100/loki/api/v1/push \ -H Content-Type: application/json \ -d { streams: [ { stream: { job: demo, host: server-01 }, values: [ [ 1728000000000000000, Hello from Loki API ] ] } ] }你会看到没有任何响应体HTTP 204。成功就是没话说——push 接口设计上不返回内容。常见坑请求体里values的时间戳写成秒级1728000000会查不到数据。Loki 要纳秒18 位左右。少写 6 个 0 不会报错只会让日志消失在很久以前的时间线上。 动手把刚写入的数据查回来现在问题来了刚推的那条日志在哪用即时查询/loki/api/v1/query它只回答某个时间点现在有什么curl http://localhost:3100/loki/api/v1/query?query%7Bjob%3D%22demo%22%7Dtime1728000000limit10%7B...%7D是 URL 编码后的{jobdemo}你会看到status为successdata.resultType是streamsresult数组里每条流带着标签和[时间戳, 日志内容]对——就是你刚推的那句 Hello from Loki API。如果要看一段趋势比如每分钟错误数换成范围查询/loki/api/v1/query_range多加三个参数start、end、step。一句话区分两者query是拍照query_range是录像。常见坑time和start/end单位是秒而 push 的时间戳是纳秒——同一篇文章里两个地方单位不同是最容易栽的点。统一用date %s生成秒级时间戳就不会错。动手看看仓库里有哪些标签数据进多了以后新人的第一个问题永远是我到底写了些啥两个接口解决curl http://localhost:3100/loki/api/v1/labels curl http://localhost:3100/loki/api/v1/label/job/values第一条列出所有标签名job、host…第二条列出指定标签下出现过的所有值demo、server-01…。你会看到两个响应都是{status:success,data:[...]}的扁平数组可以直接喂给下拉框做筛选 UI。常见坑标签返回的是全历史的并集删了数据也不会从列表里消失。想要当前还有哪些流用/loki/api/v1/index/stats或直接看 Grafana 的 Explore。踩坑速查现象push 返回 400原因JSON 结构错或stream标签里带了空 key解法先按上面的最小示例对着改再逐步加字段现象push 204查询一条都没有原因时间戳单位写错秒当成了纳秒数据落在很久以前解法push 用纳秒查询用秒各 18 位和 10 位现象日志在 Grafana 里能查到curl 查不到原因query 参数没做 URL 编码{}被 shell 或网关吃掉解法用--data-urlencode query{job\demo\}配合 POST现象大批量推送返回 413原因超过单次请求体大小限制解法把批量拆小每次不超过 1MB现象429 Too Many Requests原因触发限流ingestion rate limit解法客户端做退避重试别硬刷进阶线索pkg/loghttp/push/ —— 推送接口的解析入口PushRequest怎么从 HTTP body 变成内部结构都在这pkg/engine/ —— 查询引擎query/query_range背后真正干活的地方docs/sources/query/ —— 官方 LogQL 文档想知道哪些函数能写进query参数翻这里【免费下载链接】lokiLike Prometheus, but for logs.项目地址: https://gitcode.com/GitHub_Trending/lok/loki创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考