グラファナとデータの可視化
(セクション: 技術とインフラ)
概要
Grafanaは、メトリクス、ログ、トレース、ビジネスインジケータ、アラートなど、すべてのオブザビリティのショーケースです。iGamingでは、p95/p99の監視、支払い変換、タイムツーウォレット、ゲームプロバイダの可用性、インシデントの地理的分布、および安定したカナリアと。成功:テンプレート(変数)、わかりやすいパネル、リリースアノテーション、SLOダッシュボード、アクセス権の規律。
1)接続アーキテクチャ
データソース:Prometheus(メトリック)、Loki/ELK(ログ)、Tempo/Jaeger(トレイル)、ClickHouse/BigQuery/PG(ビジネスデータ)、OTLP via Gateway。
主なリンク:→exemplar→trace metric→関連ログから'trace_id'。
フォルダとRBAC:別個のフォルダ'SRE'、 'Payments'、 'Risk'、 'Games'、 'BizOps';'Viewer/Editor/Admin'の詳細な権限。
2)ダッシュボードの設計: 原則
1.1-2クリックで質問に対する答え:SLOカードから詳細まで。
2.各サービスのRED/USE+ドメインカード(TTW、デポジット変換)。
3.安定した格子:24列、上の大きいKPI、底の細部。
4.色としきい値:最小、SLA/SLOのみ。
5.リリースアノテーション:Git SHA、バージョン、リリースタイプ(カナリア/ブルーグリーン)。
3)変数とテンプレート(テンプレート)
変数は1つのダッシュボードを多数にします。
例(Prometheus query-variable):- 名前:'サービス'
- クエリ:'label_values (up、 service)'
- マルチセレクト+はすべて含みます-集計に便利です。
- 'region'→'env'→'service'→'instance'
- UXでは'regex'/'sort'、ダッシュボードでは'refresh: load'を使用します。
4)パネルおよびレンダリングのタイプ
時系列:p50/p95/p99、エラー率、スループット。
Stat/Gauge:ターゲットKPI(可用性、TTW p95)。
バーゲージ/テーブル:トップNルート/PSP/ゲームプロバイダ。
ジオマップ:thermal incident/latency maps by country/ROR。
Canvas:回路図ストリーム(Player→API→PSP→Bank)。
ノードグラフ:サービス依存性、エラーによる着色。
- フィールドへのラベル、Outer join、 Reduce (min/max/avg)、計算(conversion)からフィールドを追加します。
5)クエリやパネルの例
5.1 p95レイテンシ(PromQL)
promql histogram_quantile(0. 95,
sum by (le, route) (rate(http_request_duration_seconds_bucket{service="$service",region="$region"}[5m]))
)
5.2リクエストの成功(SLOプロキシ)
promql sum(rate(http_requests_total{service="$service",status=~"2.. 3.."}[5m]))
/
sum(rate(http_requests_total{service="$service"}[5m]))
5.3支払い変換(PromQL集計)
promql sum(rate(payments_success_total{psp=~"$psp",currency=~"$currency"}[15m]))
/
sum(rate(payments_attempt_total{psp=~"$psp",currency=~"$currency"}[15m]))
5.4クイックジャンプトラック(例)
「時系列」パネルで、Examplars→ポイントをクリック→Tempoが'trace_id'で開きます。
5.5ロキ・trace_id
logql
{service="$service"} = "$traceID"
6)注釈とイベント
リリースアノテーション:枯渇中のイベントの自動追加(バージョン、作者、カナリア重量)。
インシデント/フリーズ:インシデントの開始/終了マークとリリースのフリーズ・ウィンドウ。
ビジネスイベント:大規模なキャンペーン/トーナメント-チャートにマークします。
7) Grafanaでのアラート
アラートルールを中心に(Prometheus/Loki/Cloudに基づく)。
コンタクトポイント:PagerDuty/Slack/Email;通知ポリシー(フォルダ/タグによるルート化)。
マルチウィンドウバーンレート:高速かつ低速の予算ロースト。
サイレンス:スケジュールされたウィンドウと重複しています。
promql histogram_quantile(0. 95,
sum by (le, service) (rate(http_request_duration_seconds_bucket{service="$service"}[5m]))
) > 0. 25
8)コードとしてのプロビジョニング(IaC)
ソース/ダッシュボード/アラートをGitに保存します。
データソース。yaml
yaml apiVersion: 1 datasources:
- name: Prometheus type: prometheus access: proxy url: http://prometheus:9090 isDefault: true
- name: Loki type: loki url: http://loki:3100
- name: Tempo type: tempo url: http://tempo:3100
ダッシュボード。yaml
yaml apiVersion: 1 providers:
- name: sres folder: SRE type: file disableDeletion: false options:
path: /var/lib/grafana/dashboards/sre
グラファナ。ini(フラグメント)
ini
[auth]
disable_login_form = false
[users]
viewers_can_edit = false
[alerting]
enabled = true
[unified_alerting. screenshots]
capture = true
9)セキュリティとアクセス
SSO (OIDC/SAML)、グループ→ロール→フォルダ。
データソースの権利:ビューアの読み取り専用の必要なフォルダのみ。
PII衛生:パネルのPIIが付いている分野を引っ張らないで下さい;ログ-フィルター/マスク。
秘密:ダッシュボードの「プレーンテキスト」なしで、Vault/secure JSONフィールドを介してのみ。
10)性能および費用
Prometheusで重い表現のためのルールを記録します。
長期的なストレージ・バックエンドでのダウンサンプリング/保持。
ダッシュボードキャッシュと公平な間隔(どこでも"1s'ではありません)。
変数のカーディナリティ制限('user_id'/'session_id'を代用しない)。
再配布:騒々しいチームのための個別のインスタンス/フォルダ。
11) iGaming専用ダッシュボード
支払い:試行/成功/TTW p95、 PSP/ルートエラー、地理偏差マップ。
ゲーム/プロバイダ:スタジオ/ゲームによるレイテンシとエラーレート、変換を起動します。
リスク/詐欺:アクションの速度、デバイスのバースト/IP、相関(テーブル+バーゲージ)。
RG/コンプライアンス:セッション>しきい値、ステーキの成長、異常アラート。
Release Compare: p95/error/business metricsによるstable vs canary。
Infra/USE:クラスタとキューによる使用/彩度/エラー。
12) JSONダッシュボードの例(フラグメント)
json
{
"title": "Payments SLO",
"tags": ["slo","payments"],
"time": {"from":"now-6h","to":"now"},
"panels": [
{
"type":"stat",
"title":"Availability",
"targets":[{"expr":"sum(rate(http_requests_total{service=\"payments-api\",status=~\"2.. 3..\"}[5m]))/sum(rate(http_requests_total{service=\"payments-api\"}[5m]))"}],
"thresholds":{"mode":"absolute","steps":[{"color":"red","value":0},{"color":"green","value":0. 999}]}
},
{
"type":"timeseries",
"title":"p95 latency",
"exemplars": {"color":"rgba(31,120,193,0. 6)"},
"targets":[{"expr":"histogram_quantile(0. 95,sum by (le) (rate(http_request_duration_seconds_bucket{service=\"payments-api\"}[5m])))"}]
}
]
}
13) RunbooksとUXの改善
各アラートにはRunbook URL(アクション命令)があります。
関連ダッシュボードへのリンク(支払い↔ Infra ↔ PSP)。
ドリルダウン:ラベル→フィルタ(region/psp/route)をクリックします。
変数のデフォルト:'env=prod'、' region=eu'-開始を高速化します。
14)実装チェックリスト
1.データソースの設定:Prometheus/Loki/Tempo/SQL。
2.フォルダとRBACを入力します。権利の監査。
3.テンプレート変数(region/env/service)を作成します。
4.SLOダッシュボードの構築(可用性、P95、エラー率、エラー予算)。
5.リリース注釈と安定/カナリア比較を追加します。
6.例題を有効にし、クリックしてトレース/ログに移動します。
7.アラート(マルチウィンドウバーンレート)とルーティングを設定します。
8.すべてをコードとして提供し、Gitに保存し、レビューを行います。
9.パフォーマンスの最適化:録音ルール、間隔、キャッシュ。
10.ビジネスダッシュボード(TTW、支払い変換、GGRカード)を入力します。
15) Antipatterns
変数と標準のない「Zoo」一貫性のないダッシュボード。
ルールを記録せずに重いPromQLを持つパネル→遅いUI。
異なるスケールの色/凡例/Y軸の過剰。
Viewer用に開いたパネルのPII接続。
リリースアノテーションの欠如-ジャンプがどこから来るかは明らかではありません。
フォルダ構造の代わりに1つの「monovew」ダッシュボード。
概要
Grafanaは、メトリック、ログ、トラックがビジネス画像に接続されるという、技術が製品と出会うインターフェイスです。テンプレート、正しいパネル、注釈、アラートにより、データは迅速な診断、予測可能なリリース、管理可能なオブザビリティコストなどのソリューションになります。