InfraLab
GRAFANA-LOKI40 cmd

Grafana / Loki / LogQL チート集

Grafana の dashboard/変数/provisioning、Loki の LogQL ラベル抽出・集計、Promtail/Vector/Fluent Bit 連携、retention 運用をまとめたチート集。

更新日
2026-05-29
参照範囲
公式ドキュメント / man page / 主要ベンダーCLI
対象実装
主要 Linux / BSD / ネットワーク機器 CLI の一般的な実装
免責
OS とバージョン差分は実環境で確認してください。

このチートシートの使いどころ

Grafana / Loki / LogQL チート集は、Grafana の dashboard/変数/provisioning、Loki の LogQL ラベル抽出・集計、Promtail/Vector/Fluent Bit 連携、retention 運用をまとめたチート集。 対象は公式ドキュメント、man page、主要ベンダー CLI で確認できる現行の一般的な実装です。カテゴリはGrafana、LogQL ラベル・抽出、LogQL 集計、運用を中心に、40件のコマンドや値を用途別に引けます。障害調査、設定変更前の確認、作業メモ作成で、Grafana、Loki、LogQL、Promtail、Vectorに関連する操作を短時間で探すために使います。

40 / 40

dashboard JSON panels

ダッシュボード JSON の基本構造。

Example
{"title":"API","panels":[{"type":"timeseries","targets":[{"expr":"sum(rate(http_requests_total[5m]))"}]}]}
templating custom

custom 変数を定義する。

Example
{"templating":{"list":[{"name":"env","type":"custom","query":"prod,stg,dev"}]}}
$__interval

パネル幅に応じた集計間隔を使う。

Example
sum by (job) (rate(http_requests_total[$__interval]))
$__rate_interval

rate に安全な間隔を使う。

Example
rate(container_cpu_usage_seconds_total[$__rate_interval])
annotations

デプロイイベントを注釈表示する。

Example
annotations: list: - name: deploy datasource: Prometheus expr: changes(deploy_revision[1m]) > 0
playlist

複数ダッシュボードを巡回表示する。

Example
curl -H "Authorization: Bearer $TOKEN" https://grafana.example.com/api/playlists
provisioning dashboards

ダッシュボード provisioning を設定する。

Example
apiVersion: 1 providers: - name: infra folder: Infra type: file options: { path: /var/lib/grafana/dashboards }
grafana-cli plugins install

プラグインをインストールする。

Example
grafana-cli plugins install grafana-piechart-panel
dashboard API import

API でダッシュボードを投入する。

Example
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d @dashboard.json https://grafana.example.com/api/dashboards/db
{job="nginx"}

Loki のラベルセレクタ基本形。

Example
{job="nginx"}
|= "error"

文字列を含む行だけ残す。

Example
{job="nginx"} |= "error"
!= "health"

文字列を含まない行だけ残す。

Example
{job="nginx"} != "GET /health"
|~ regex

正規表現に一致する行だけ残す。

Example
{app="api"} |~ "status=(5..|429)"
!~ regex

正規表現に一致しない行だけ残す。

Example
{app="api"} !~ "DEBUG|TRACE"
| json

JSON ログをパースする。

Example
{app="api"} | json | level="error"
| logfmt

logfmt ログをパースする。

Example
{app="api"} | logfmt | status >= 500
| pattern

パターンでフィールド抽出する。

Example
{job="nginx"} | pattern `<ip> - - <_> "<method> <path> <_>" <status> <_>`
| line_format

出力行を整形する。

Example
{job="nginx"} | pattern `<ip> - - <_> "<method> <path> <_>" <status> <_>` | line_format "{{.ip}} {{.method}} {{.path}}"
| label_format

抽出値をラベルとして整形する。

Example
{app="api"} | json | label_format endpoint="{{.method}} {{.path}}"
unwrap duration

数値フィールドをメトリクス化する。

Example
{app="api"} | json | unwrap duration_ms
rate logs

ログ行の秒間レートを計算する。

Example
rate({job="nginx"} |= "error" [5m])
count_over_time

期間内ログ件数を数える。

Example
count_over_time({app="api"} |= "timeout" [5m])
sum by level

level ごとにログ件数を集計する。

Example
sum by (level) (count_over_time({app="api"} | json [5m]))
bytes_over_time

期間内のログバイト量を計算する。

Example
bytes_over_time({namespace="prod"}[5m])
quantile_over_time

unwrap した値の分位点を出す。

Example
quantile_over_time(0.95, {app="api"} | json | unwrap duration_ms [5m])
topk log streams

ログ量の多い stream を探す。

Example
topk(10, sum by (pod) (rate({namespace="prod"}[5m])))
loki retention config

Loki retention を compactor で設定する。

Example
limits_config: retention_period: 744h compactor: retention_enabled: true delete_request_store: s3
ingester role

ingester はログを受信して chunk 化する。

Example
kubectl -n observability get pod -l app.kubernetes.io/component=ingester
querier role

querier は保存済み chunk を検索する。

Example
kubectl -n observability get pod -l app.kubernetes.io/component=querier
compactor role

compactor は index 圧縮と retention 削除を担う。

Example
kubectl -n observability logs deploy/loki-compactor --tail=100
promtail pipeline json

Promtail で JSON ログをラベル化する。

Example
pipeline_stages: - json: expressions: { level: level, msg: message } - labels: level:
promtail pipeline regex

Promtail で正規表現抽出する。

Example
pipeline_stages: - regex: expression: "^(?P<ip>\S+) .* (?P<status>[0-9]{3})$" - labels: status:
Vector to Loki

Vector から Loki sink へ送る。

Example
sinks.loki.type = "loki" sinks.loki.endpoint = "https://loki.example.com" sinks.loki.inputs = ["kubernetes_logs"]
Fluent Bit Loki output

Fluent Bit の Loki 出力設定。

Example
[OUTPUT] Name loki Match kube.* Host loki.example.com Labels job=fluent-bit
logcli query

CLI で LogQL を実行する。

Example
logcli --addr=https://loki.example.com query '{job="nginx"} |= "error"' --limit=20
logcli labels

利用可能なラベルを確認する。

Example
logcli --addr=https://loki.example.com labels
Loki readiness

Loki の readiness を確認する。

Example
curl -f http://loki.example.com/ready
Grafana datasource API

Loki datasource を API で作る。

Example
curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d '{"name":"Loki","type":"loki","url":"http://loki:3100"}' https://grafana.example.com/api/datasources
Explore URL

Explore へ LogQL 付きで遷移する。

Example
https://grafana.example.com/explore?left={"datasource":"Loki","queries":[{"expr":"{app=\"api\"} |= \"error\""}]}
derived fields

ログから trace ID リンクを作る。

Example
derivedFields: - name: TraceID matcherRegex: "trace_id=(\w+)" url: "https://tempo.example.com/trace/$${__value.raw}"
Related