Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
次世代のログ基盤 Grafana Lokiを始めよう! / prometheus-meetup...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
uesyn
January 15, 2020
Technology
15k
7
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
次世代のログ基盤 Grafana Lokiを始めよう! / prometheus-meetup-tokyo-3-lets-start-the-loki
uesyn
January 15, 2020
More Decks by uesyn
See All by uesyn
PodSecurityPolicyの安全な移行の道のり / On the safe migration of PodSecurityPolicy
uesyn
1
1.2k
PodSecurityPolicyの廃止に備えて、 一足先にPodSecurity Admissionを試してみよう! / from-psp-to-podsecurity
uesyn
4
1.9k
Kubernetes v1.19 変更点調査のまとめ / k8s-v119-updates
uesyn
1
310
そのクラスタ本当にアップグレードして大丈夫? Storage Version の更新も忘れずにしよう! / k8s-storage-version-migration
uesyn
2
4k
kindでも"type LoadBalancer"を使いたい! / kubernetes-meetup-tokyo-24-kind-with-type-loadbalancer
uesyn
0
1.8k
Loki入門
uesyn
8
2.8k
Cortexの話をKubeConで聞きたかったっていう話
uesyn
4
2.2k
kubernetesでGPUを 管理するために スケジューラをいじってみた
uesyn
2
3k
Other Decks in Technology
See All in Technology
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
3
300
AIをリアル世界に解き放つ 〜M5Stack×AIであなたのアイディアを手の平に〜
hamadakoji
1
540
なぜAI時代に技術記事を書くのか?どう書くのか? 〜bunの場合〜
kworkdev
PRO
0
130
局所最適は悪ではない。壊れているのは指標です。量と質を同時に見る先行指標の設計
recruitengineers
PRO
2
1.2k
これだけは抑えておきたい!後悔しない re:Invent の過ごし方 / AWS re:Invent 2026 prestudy
kinunori
2
340
AI秘書と毎日働くのはもう当たり前。開発以外の業務に足りない機能をどう埋める?
minorun365
PRO
2
1.7k
VLA-JEPA: Enhancing Vision-Language-Action Models with Latent World Models
takmin
0
330
小規模OSSモデルは サイバーセキュリティ業務に どこまで使えるか
bbrbbq
0
300
生成AI時代、PMは事業責任者に進化するともっと面白い〜PMだからこそ事業構造を動かせる時代に〜
kakehashi
PRO
0
860
AI駆動開発における開発環境のセキュリティの考え方
yamahiro
2
620
Claude Codeから見る、エンジニアの世界の変容とその先
oikon48
5
4k
Metadata - Section 2: Simple Metadata & Meta Tags
mohab1
0
140
Featured
See All Featured
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
740
The Cost Of JavaScript in 2023
addyosmani
55
10k
Producing Creativity
orderedlist
PRO
348
41k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
560
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Bash Introduction
62gerente
615
220k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
230
How to make the Groovebox
asonas
2
2.5k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
440
Transcript
次世代のログ基盤 Grafana Loki を始めよう! Loki : @uesyn Promtail: @kameneko1004
Profile 上村 真也 • 所属: ゼットラボ株式会社 • Twitter: @uesyn •
今回からこのMeetupの運営へ入りました
ゼットラボ株式会社 / Z Lab Corporation • 2015年に設立されたヤフー株式会社の100%子会社 • ヤフーのインフラ課題に対して R&D
でソリューション提供 • Kubernetes as a Service を開発・提供
Lokiとは? • Log Aggregation System ◦ Horizontally-Scalable ◦ Highly-Available ◦
Multi-tenant • Grafana Labsが主体となって開発 ◦ Grafana連携 • OSS ◦ https://github.com/grafana/loki ◦ 最新はv1.2.0(2020/1/14時点)
デモ 動かなかったら この動画再生します https://www.youtube.com/watch?time_continue=5&v=7n342UsAMo0
Lokiについて • Like Prometheus, but for logs ◦ ログ検索には以下のように行う ▪
ログに付与されたラベルによるフィルタリング ▪ さらに結果をgrepのように絞り込み • ログをシンプルに扱う ◦ ログを保存時する時、形態素解析のようなテキスト処理はしない ◦ Prometheusのようにラベルを付与してログを保存
Lokiを動かす https://github.com/grafana/loki/blob/master/production/README.md#running-loki
Lokiの概要 Ω Promtail App Log Service Discovery Systemd Journal Node
ラベル+ログ Log Log Cortexっぽい アーキテクチャ Prometheusっぽい コンフィグ Label + Logを送信
Ω Lokiの概要 Promtail App Log Service Discovery Systemd Journal Node
ラベル+ログ Log Log Cortexっぽい アーキテクチャ Prometheusっぽい コンフィグ 前半パート(@uesyn) 後半パート(@kameneko1004) Label + Logを送信
Grafana loki
lokiのアーキテクチャ • ほぼCortexのアーキテクチャ ◦ https://github.com/cortexproject/cortex • 主なコンポーネント ◦ Distributor ◦
Ingester ◦ Chunk Store ◦ Querier ◦ Table Manager Distributor Ingester Querier Chunk Store (Index) Chunk Store (Chunks) Promtail Table Manager fluentd その他 Clients Consul or etcd
lokiのアーキテクチャ • ほぼCortexのアーキテクチャ ◦ https://github.com/cortexproject/cortex • 主なコンポーネント ◦ Distributor ◦
Ingester ◦ Chunk Store ◦ Querier ◦ Table Manager Distributor Ingester Querier Chunk Store (Index) Chunk Store (Chunks) Promtail Table Manager fluentd その他 Clients • 受信したログをIngesterへ送信 • 冗長化構成の時は複数のIngesterへ • どのIngesterへ送信するかはConsul(or etcd)を参照 Consul or etcd
lokiのアーキテクチャ • ほぼCortexのアーキテクチャ ◦ https://github.com/cortexproject/cortex • 主なコンポーネント ◦ Distributor ◦
Ingester ◦ Chunk Store ◦ Querier ◦ Table Manager Distributor Ingester Querier Chunk Store (Index) Chunk Store (Chunks) Promtail Table Manager fluentd その他 Clients • ログを永続ストレージへ保存 • Ingester毎に受け付けるログが決まっている ◦ Consul(or etcd)に情報を保持 • セミステートフルなコンポーネント ◦ 直近のログを持つ Consul or etcd
lokiのアーキテクチャ • ほぼCortexのアーキテクチャ ◦ https://github.com/cortexproject/cortex • 主なコンポーネント ◦ Distributor ◦
Ingester ◦ Chunk Store ◦ Querier ◦ Table Manager Distributor Ingester Querier Chunk Store (Index) Chunk Store (Chunks) Promtail Table Manager fluentd その他 Clients • IndexとChunkの2種類のストレージ ◦ 外部(または内部)のストレージを利用 Consul or etcd
Chunk Storeの補足 • loki自体はDBではない • 2種類のChunk Store ◦ Index: ログ検索のための転置インデックス
◦ Chunk: 実際のログを保持 • 利用可能なDB Index ◦ Local ◦ DynamoDB ◦ Bigtable ◦ Cassandra Chunk ◦ Local ◦ Cloud Storage ◦ S3 Distributor Ingester Querier Chunk Store (Index) Chunk Store (Chunks) Promtail Table Manager fluentd その他 Clients Consul or etcd
lokiのアーキテクチャ • ほぼCortexのアーキテクチャ ◦ https://github.com/cortexproject/cortex • 主なコンポーネント ◦ Distributor ◦
Ingester ◦ Chunk Store ◦ Querier ◦ Table Manager Distributor Ingester Querier Chunk Store (Index) Chunk Store (Chunks) Promtail Table Manager fluentd その他 Clients • ログの検索に応じる • IngesterやChunk Storeからログを取得 Consul or etcd
lokiのアーキテクチャ • ほぼCortexのアーキテクチャ ◦ https://github.com/cortexproject/cortex • 主なコンポーネント ◦ Distributor ◦
Ingester ◦ Chunk Store ◦ Querier ◦ Table Manager Distributor Ingester Querier Chunk Store (Index) Chunk Store (Chunks) Promtail Table Manager fluentd その他 Clients • 保存するログのretentionを管理 • 一部Chunk Storeには非対応 Consul or etcd
lokiのアーキテクチャ • ほぼCortexのアーキテクチャ ◦ https://github.com/cortexproject/cortex • 主なコンポーネント ◦ Distributor ◦
Ingester ◦ Chunk Store ◦ Querier ◦ Table Manager Distributor Ingester Querier Chunk Store (Index) Chunk Store (Chunks) Promtail Table Manager fluentd その他 Clients Consul or etcd
lokiのコンポーネントについて • 様々なコンポーネントがあるが、全て同一の実行バイナリ ◦ シングルプロセスで全てのコンポーネントを動かすことも可能
Lokiとは? • Log Aggregation System ◦ Horizontally-Scalable ◦ Highly-Available ◦
Multi-tenant • Grafana Labsが主体となって開発 ◦ Grafana連携 • OSS ◦ https://github.com/grafana/loki ◦ 最新はv1.2.0(2019/1/14時点) 再掲
マルチテナント • テナントを識別するHTTPヘッダを付与することで実現 ◦ X-Scope-OrgID: <tenant ID> • Loki自体にテナントの認証の仕組みは含まれていない ◦
Nginx + Basic AuthやOAuth2 Proxyのようなリバースプロキシを用意する必要がある ◦ 上記のヘッダは認証リバースプロキシでセットされるべき(と書いてありました) Reverse Proxy Promtail Distributor Ingester Querier
Lokiとは? • Log Aggregation System ◦ Horizontally-Scalable ◦ Highly-Available ◦
Multi-tenant • Grafana Labsが主体となって開発 ◦ Grafana連携 • OSS ◦ https://github.com/grafana/loki ◦ 最新はv1.2.0(2019/1/14時点) 再掲
Grafanaからログの検索 • ExploreでデータソースをLokiに指定すると利用可能
Grafana連携~ダッシュボードでログを表示~ • Log Panelが Grafana v6.4+ で利用可能 ◦ document: https://grafana.com/docs/grafana/latest/features/panels/logs/
Grafana連携~Automatic Annotations~ • ログを動的にPanelへAnnotationとして付与可能 https://grafana.com/blog/2019/12/09/how-to-do-automatic-annotations-with-grafana-and-loki/
かめねこ SAKURA internet Inc. Evangelist, Infrastracture @kameneko1004
Promtailとは?
https://grafana.com/blog/2018/12/12/loki-prometheus-inspired-open-source-logging-for-cloud-natives/
https://grafana.com/blog/2018/12/12/loki-prometheus-inspired-open-source-logging-for-cloud-natives/ これ
Promtailとは? • 各Node上でPodなどのログを収集するエージェント • Kubernetes以外やコンテナ以外もOK
Promtailとは? 特徴 Like Prometheus, but for logs.
Promtailとは? Like Prometheus, but for logs. ScrapeConfigs Relabeling 特徴 ServiceDiscovery
Promtailとは? Like Prometheus, but for logs. ScrapeConfigs Relabeling Prometheusのノウハウがそのまま使える 特徴
ServiceDiscovery
Promtailとは? 役割 1. ターゲットからログを収集してLokiに転送 2. ログからアラートを生成
1. ターゲットからログを収集してLokiに転送
1. ターゲットからログを収集してLokiに転送 promtail.yaml
promtail.yaml • ServiceDiscovery で自動的にターゲットのログを追跡 ◦ ScrapeConfigs で定義 • Relabeling でログストリームにラベルを付与する
promtail.yaml server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /tmp/positions.yaml clients:
- url: http://localhost:3100/loki /api/v1/push scrape_configs: - job_name: system static_configs: - targets: - localhost labels: job: varlogs __path__: /var/log/*log
promtail.yaml server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /tmp/positions.yaml clients:
- url: http://localhost:3100/loki /api/v1/push scrape_configs: - job_name: system static_configs: - targets: - localhost labels: job: varlogs __path__: /var/log/*log Promtail本体に関する設定
promtail.yaml server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /tmp/positions.yaml clients:
- url: http://localhost:3100/loki /api/v1/push scrape_configs: - job_name: system static_configs: - targets: - localhost labels: job: varlogs __path__: /var/log/*log Positionファイルに関する設定
promtail.yaml server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /tmp/positions.yaml clients:
- url: http://localhost:3100/loki /api/v1/push scrape_configs: - job_name: system static_configs: - targets: - localhost labels: job: varlogs __path__: /var/log/*log Lokiのインスタンスへの 接続に関する設定
promtail.yaml server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /tmp/positions.yaml clients:
- url: http://localhost:3100/loki /api/v1/push scrape_configs: - job_name: system static_configs: - targets: - localhost labels: job: varlogs __path__: /var/log/*log ターゲットの検出に関する設定
scrape_configs: scrape_configs: - job_name: system static_configs: - targets: - localhost
labels: job: varlogs __path__: /var/log/*log もっともシンプルな構成
scrape_configs: scrape_configs: - job_name: system static_configs: - targets: - localhost
labels: job: varlogs __path__: /var/log/*log もっともシンプルな構成 __path__に指定したパスを参照する localhost の /var/log/*log な ログをスクレイプ
scrape_configs: scrape_configs: - job_name: kubernetes-pods kubernetes_sd_configs: - role: pod ServiceDiscovery
も当然利用可能
scrape_configs: scrape_configs: - job_name: kubernetes-pods kubernetes_sd_configs: - role: pod relabel_configs:
- source_labels: - __meta_kubernetes_pod_label_app target_label: app - source_labels: - __meta_kubernetes_pod_node_name target_label: hostname relabel_configs でラベルを加工
scrape_configs: scrape_configs: - job_name: kubernetes-pods kubernetes_sd_configs: - role: pod relabel_configs:
- source_labels: - __meta_kubernetes_pod_uid - __meta_kubernetes_pod_container_name replacement:/var/log/pods/*$1/*.log separator: / target_label: __path__ PodのUIDやコンテナ名から ログファイルをスクレイプ
ログからアラートを生成
ログからアラートを生成 • pipeline_stages • 取得したログの値を加工・参照する ◦ LogLevel をラベルのValueに ◦ HTTPのステータスコードを
ラベルのValueに pipeline_stages - match: selector: '{name="jaeger-agent"}' stages: - json: expressions: level: level components: components - labels: level: components:
- job_name: kubernetes-pods-name kubernetes_sd_configs: .... pipeline_stages: - match: selector: '{name="promtail"}'
stages: - regex: expression: '.*level=(?P<level>[a-zA-Z]+).*ts=(?P<timestamp>[T\d-:.Z]*)' - labels: level: component: - timestamp: format: RFC3339Nano source: timestamp 例1
- job_name: kubernetes-pods-name kubernetes_sd_configs: .... pipeline_stages: - match: selector: '{name="promtail"}'
stages: - regex: expression: '.*level=(?P<level>[a-zA-Z]+).*ts=(?P<timestamp>[T\d-:.Z]*)' - labels: level: component: - timestamp: format: RFC3339Nano source: timestamp 例1 selector で元となるログを指定 → LogQuery
- job_name: kubernetes-pods-name kubernetes_sd_configs: .... pipeline_stages: - match: selector: '{name="promtail"}'
stages: - regex: expression: '.*level=(?P<level>[a-zA-Z]+).*ts=(?P<timestamp>[T\d-:.Z]*)' - labels: level: component: - timestamp: format: RFC3339Nano source: timestamp 例1 各Stageごとに加工を行う
- job_name: kubernetes-pods-name kubernetes_sd_configs: .... pipeline_stages: - match: selector: '{name="promtail"}'
stages: - regex: expression: '.*level=(?P<level>[a-zA-Z]+).*ts=(?P<timestamp>[T\d-:.Z]*)' - labels: level: component: - timestamp: format: RFC3339Nano source: timestamp 例1 regex: ログストリームに対して正規表現で値を取得
# 正規表現 expression: '.*level=(?P<level>[a-zA-Z]+).*ts=(?P<timestamp>[T\d-:.Z]*)' # ログ level=info ts=2020-01-14T23:44:05.12674019Z caller=tailer.go:77 component=tailer
msg="start tailing file" path=/var/log/pods/monitoring_prometheus-k8s-0_a993e0a4-e7a2-44bb-8716-c92d4 d24a1e5/prometheus-config-reloader/0.log 例1 regex: ログストリームに対して正規表現で値を取得
# 正規表現 expression: '.*level=(?P<level>[a-zA-Z]+).*ts=(?P<timestamp>[T\d-:.Z]*)' # ログ level=info ts=2020-01-14T23:44:05.12674019Z caller=tailer.go:77 component=tailer
msg="start tailing file" path=/var/log/pods/monitoring_prometheus-k8s-0_a993e0a4-e7a2-44bb-8716-c92d4 d24a1e5/prometheus-config-reloader/0.log 例1 level を参照して…
# 正規表現 expression: '.*level=(?P<level>[a-zA-Z]+).*ts=(?P<timestamp>[T\d-:.Z]*)' # ログ level=info ts=2020-01-14T23:44:05.12674019Z caller=tailer.go:77 component=tailer
msg="start tailing file" path=/var/log/pods/monitoring_prometheus-k8s-0_a993e0a4-e7a2-44bb-8716-c92d4 d24a1e5/prometheus-config-reloader/0.log 例1 かっこ内の正規表現に一致する値を 変数 <level> に格納
# 正規表現 expression: '.*level=(?P<level>[a-zA-Z]+).*ts=(?P<timestamp>[T\d-:.Z]*)' # ログ level=info ts=2020-01-14T23:44:05.12674019Z caller=tailer.go:77 component=tailer
msg="start tailing file" path=/var/log/pods/monitoring_prometheus-k8s-0_a993e0a4-e7a2-44bb-8716-c92d4 d24a1e5/prometheus-config-reloader/0.log 例1 ts を参照して…
# 正規表現 expression: '.*level=(?P<level>[a-zA-Z]+).*ts=(?P<timestamp>[T\d-:.Z]*)' # ログ level=info ts=2020-01-14T23:44:05.12674019Z caller=tailer.go:77 component=tailer
msg="start tailing file" path=/var/log/pods/monitoring_prometheus-k8s-0_a993e0a4-e7a2-44bb-8716-c92d4 d24a1e5/prometheus-config-reloader/0.log 例1 かっこ内の正規表現に一致する値を 変数 <timestamp> に格納
- job_name: kubernetes-pods-name kubernetes_sd_configs: .... pipeline_stages: - match: selector: '{name="promtail"}'
stages: - regex: expression: '.*level=(?P<level>[a-zA-Z]+).*ts=(?P<timestamp>[T\d-:.Z]*)' - labels: level: component: - timestamp: format: RFC3339Nano source: timestamp 例1 label: 変数の値はラベルに置換可能
# 正規表現 expression: '.*level=(?P<level>[a-zA-Z]+).*ts=(?P<timestamp>[T\d-:.Z]*)' # ログ level=info ts=2020-01-14T23:44:05.12674019Z caller=tailer.go:77 component=tailer
msg="start tailing file" path=/var/log/pods/monitoring_prometheus-k8s-0_a993e0a4-e7a2-44bb-8716-c92d4 d24a1e5/prometheus-config-reloader/0.log 例1 label: level=info timestamp=2020-01-14T2… が格納される
- job_name: kubernetes-pods-name kubernetes_sd_configs: .... pipeline_stages: - match: selector: '{name="promtail"}'
stages: - regex: expression: '.*level=(?P<level>[a-zA-Z]+).*ts=(?P<timestamp>[T\d-:.Z]*)' - labels: level: component: - timestamp: format: RFC3339Nano source: timestamp 例1 timestamp: 指定の方法でタイムスタンプを指定
- match: selector: '{name="sample-app"}' stages: - json: expressions: remote: remote_ip
status: status - labels: remote: status: 例2
- match: selector: '{name="sample-app"}' stages: - json: expressions: remote: remote_ip
status: status - labels: remote: status: 例2 正規表現以外にも、 - json - docker - cri などを指定可能
- match: selector: '{name="sample-app"}' stages: - json: expressions: remote: remote_ip
status: status - labels: remote: status: {"time":"2020-01-15T09:33:38.375111489Z","id":"","remote_ip":"10.42.29.199","host" :"10.42.38.19:8080","method":"GET","uri":"/health","user_agent":"Go-http-client/1. 1","status":200,"error":"","latency":42187,"latency_human":"42.187 µs","bytes_in":0,"bytes_out":2} 例2 json であれば、 ログ上のKeyを直接指定可能
- match: selector: '{app="some-app"} != "info"' stages: - regex: expression:
".*(?P<panic>panic: .*)" - metrics: - panic_total: type: Counter description: "total count of panic" source: panic config: action: inc 例3
- match: selector: '{app="some-app"} != "info"' stages: - regex: expression:
".*(?P<panic>panic: .*)" - metrics: - panic_total: type: Counter description: "total count of panic" source: panic config: action: inc 例3 ‘panic’ が含まれるログを抽出
- match: selector: '{app="some-app"} != "info"' stages: - regex: expression:
".*(?P<panic>panic: .*)" - metrics: - panic_total: type: Counter description: "total count of panic" source: panic config: action: inc 例3 metrics: カスタムメトリクスを定義
- match: selector: '{app="some-app"} != "info"' stages: - regex: expression:
".*(?P<panic>panic: .*)" - metrics: - panic_total: type: Counter description: "total count of panic" source: panic config: action: inc 例3 メトリクス名
- match: selector: '{app="some-app"} != "info"' stages: - regex: expression:
".*(?P<panic>panic: .*)" - metrics: - panic_total: type: Counter description: "total count of panic" source: panic config: action: inc 例3 メトリクスのタイプ
- match: selector: '{app="some-app"} != "info"' stages: - regex: expression:
".*(?P<panic>panic: .*)" - metrics: - panic_total: type: Counter description: "total count of panic" source: panic config: action: inc 例3 説明
- match: selector: '{app="some-app"} != "info"' stages: - regex: expression:
".*(?P<panic>panic: .*)" - metrics: - panic_total: type: Counter description: "total count of panic" source: panic config: action: inc 例3 メトリクスを変化させる 変数を指定
- match: selector: '{app="some-app"} != "info"' stages: - regex: expression:
".*(?P<panic>panic: .*)" - metrics: - panic_total: type: Counter description: "total count of panic" source: panic config: action: inc 例3 対象の変数にマッチしたら 行うアクションを指定 ← inc: インクリメント
- match: selector: '{app="some-app"} != "info"' stages: - regex: expression:
".*(?P<panic>panic: .*)" - metrics: - panic_total: type: Counter description: "total count of panic" source: panic config: action: inc 例3 promtail/metricsで ‘promtail_custom_’ から始まる メトリクスが生成される
- match: selector: '{app="some-app"} != "info"' stages: - regex: expression:
".*(?P<panic>panic: .*)" - metrics: - panic_total: type: Counter description: "total count of panic" source: panic config: action: inc 例3 promtail/metricsで ‘promtail_custom_’ から始まる メトリクスが生成される promtail_custom_panic_total
カスタムメトリクスを元にアラート • Prometheusから [promtail-host]:3101/metrics をスクレイプする • スクレイプしたメトリクスを元に、アラートを生成する
DEMO 可能であれば…( ˘ω˘)
ドキュメント https://github.com/grafana/loki/tree/master/docs/clients/promtail
Thank you! Let’s Logging.