Lokiとログ
🔥 Vibe プロンプト
「Loki + Promtailでログ集約。LogQLでログクエリ。メトリクスと関連付け。」
services:
loki:
image: grafana/loki:latest
ports: ["3100:3100"]
promtail:
image: grafana/promtail:latest
volumes: ["/var/log:/var/log"]
LogQLクエリ
# エラー数(30分)
count_over_time({job="api"} |= "error" [30m])
# サービス別エラー率
sum by (service) (rate({job="api"} |~ "5\\d{2}" [5m]))
# 特定トレース
{job="api"} |~ "trace_id=abc123"
メトリクスvsログ
メトリクス: 「エラーはいくつ?」→ Prometheus
ログ: 「このエラーの原因は?」→ Loki
トレース: 「スタックのどこで?」→ Tempo
ベストプラクティス
- 構造化ログ(JSON形式)
- trace_idをログに含める
- ログレベルを使用(info, warn, error)
- 保持期間:7-30日
- 機密データをログに記録しない
章のまとめ
- コアコンセプトと原理を理解
- 実装方法とテクニックを習得
- 一般的な問題と解決策に精通
- 実際のプロジェクトに適用可能
さらに読む
- 公式ドキュメントとAPIリファレンス
- GitHubのオープンソース例
- 技術書とオンラインコース
- コミュニティディスカッションと技術ブログ
実装例
基本例
# 完全な実装例を提供します
手順
- セットアップ: 開発環境の設定
- データ: 必要なデータの準備
- 実装: コア機能の構築
- テスト: 動作確認
- 最適化: パフォーマンスの向上
よくあるエラー
| エラー種別 | 原因 | 解決方法 | |-----------|------|---------| | コンパイル | 構文 | コードの構文を確認 | | 実行時 | 環境 | 依存パッケージの確認 | | 論理 | アルゴリズム | ステップごとのデバッグ | | パフォーマンス | 効率 | プロファイラーの使用 |
コード例
import sys
def main():
print("Hello, World!")
if __name__ == "__main__":
main()
参考資料
- 公式ドキュメント
- APIリファレンス
- オープンソース例
- コミュニティディスカッション