Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

AbemaTV, Inc. All Rights Reserved
 Cloud Platform Team 2 About Mission ● 基幹システムの開発・保守 ● 次世代アーキテクチャの立案・浸透 ● クラウドソリューションの活用戦略 @kohei347 @_tetsuya28

Slide 3

Slide 3 text

AbemaTV, Inc. All Rights Reserved
 アジェンダ 3 1. ABEMA 監視基盤の歴史 a. メトリクス量の変化 b. Prometheus から Thanos への移行 c. Thanos → VictoriaMetrics への移行 2. マルチクラウドおけるメトリクス管理 a. Remote Write を用いたメトリクス集約 b. Metrics Label の導入 3. マルチクラウド統合監視基盤 a. Grafana b. Grafana dashboard c. Grafana unified_alert d. 監視基盤におけるコード管理 4. まとめ

Slide 4

Slide 4 text

ABEMA 監視基盤の歴史 1. メトリクス量の変化

Slide 5

Slide 5 text

AbemaTV, Inc. All Rights Reserved
 5 ダウンロード 7300万 (2018年比 約100%増) WAU 1303万 (2018年比 約100%増) ※ 出典 CyberAgent, inc. 2021 年通期決算発表資料 ABEMAの変化

Slide 6

Slide 6 text

AbemaTV, Inc. All Rights Reserved
 Total Data point 1.8+ Trillion Active Time Series 2.3 Million Data Point Ingest Rate 88.5+ K/s Retention 1+ Year Data Size 1.4+TB 2021 年の ABEMA の メトリクス 6

Slide 7

Slide 7 text

ABEMA 監視基盤の歴史 1b. Prometheus から Thanos へ

Slide 8

Slide 8 text

AbemaTV, Inc. All Rights Reserved
 ● Prometheus は各コンポーネントごとに用意 ● Prometheus-operator を利用して構築を簡略化 ● Grafana からは各 Prometheus を 参照 ● 独自の exporter からメトリクスを収集 Prometheus 2018 年の ABEMA の監視基盤構成 8 region: asia-east1 Grafana Micro Services Exporters Prometheus mongodb Prometheus k8s Prometheus redis Prometheus http Prometheus misc Prometheus node-gce Prometheus grpc Prometheus node-k8s

Slide 9

Slide 9 text

AbemaTV, Inc. All Rights Reserved
 ● 長期間のメトリクス利用の増加 ○ Prometheus には1ヶ月のデータしか保存をしていなかった ● 保持期間を伸ばすことによる OOM の発生 ○ Grafana から参照ができなくなる事案が頻発しました 2018 年の ABEMA の監視基盤構成 9 課題 対応 ● Thanos , M3 , Coretex などの long-term に適したシステム導入の検討

Slide 10

Slide 10 text

AbemaTV, Inc. All Rights Reserved
 2019 年の ABEMA の監視基盤構成 10 Thanos ● Prometheus を利用した Thanos の導入 ○ Prometheus の Sidecar として Thanos を導入 ● Thanos は大きく5つのコンポーネントで構成 ○ Sidecar , Store Gateway , Query Compactor , Ruler ● Grafana からは Query を参照するよう一元化 region: asia-east1 Grafana Thanos Query Micro Services Prometheus Thanos SIdecar Thanos Store Gateway Thanos Compact Cloud Storage

Slide 11

Slide 11 text

AbemaTV, Inc. All Rights Reserved
 2019 年の ABEMA の監視基盤構成 11 Thanos ● Prometheus を利用した Thanos の導入 ○ Prometheus の Sidecar として Thanos を導入 ● Thanos は大きく5つのコンポーネントで構成 ○ Sidecar , Store Gateway , Query Compactor , Ruler ● Grafana からは Query を参照するよう一元化 メトリクスのデータを GCS に長期保存 region: asia-east1 Grafana Thanos Query Micro Services Thanos Store Gateway Cloud Storage Prometheus Thanos SIdecar Thanos Compact

Slide 12

Slide 12 text

ABEMA 監視基盤の歴史 1c. Thanos から VictoriaMetrics へ

Slide 13

Slide 13 text

AbemaTV, Inc. All Rights Reserved
 2019 年の ABEMA の監視基盤構成 13 課題 対応 ● Thanos Store Gateway への高負荷 ○ Grafana からの過去メトリクスの参照時に OOM が頻発しました ○ 長期間のメトリクスを参照時にメモリに乗り切らずエラーが発生してしまった ● Thanos から VictoriaMetrics への移行

Slide 14

Slide 14 text

AbemaTV, Inc. All Rights Reserved
 ● Prometheus を利用した VictoriaMetrics の導入 ● VictoriaMetrics は Select , Insert , Storage の3層 ● VictoriaMetrics の Cluster 構成 ● vmselect を Grafana の datasource として追加 ● vminsert に Prometheus から Remote Write ● vmstorage には PersistentVolume 2020 年の ABEMA の監視基盤構成 14 VictoriaMetrics region: asia-east1 VictoriaMetrics storage VictoriaMetrics insert VictoriaMetrics select Micro Services Grafana Prometheus

Slide 15

Slide 15 text

AbemaTV, Inc. All Rights Reserved
 2020 年の ABEMA の監視基盤構成 15 VictoriaMetrics region: asia-east1 VictoriaMetrics storage VictoriaMetrics insert VictoriaMetrics select Micro Services Grafana Prometheus ● Prometheus を利用した VictoriaMetrics の導入 ● VictoriaMetrics は Select , Insert , Storage の3層 ● VictoriaMetrics の Cluster 構成 ● vmselect を Grafana の datasource として追加 ● vminsert に Prometheus から Remote Write ● vmstorage には PersistentVolume

Slide 16

Slide 16 text

AbemaTV, Inc. All Rights Reserved
 2020 年の ABEMA の監視基盤構成 16 VictoriaMetrics region: asia-east1 VictoriaMetrics storage VictoriaMetrics insert VictoriaMetrics select Micro Services Grafana Prometheus ● Prometheus を利用した VictoriaMetrics の導入 ● VictoriaMetrics は Select , Insert , Storage の3層 ● VictoriaMetrics の Cluster 構成 ● vmselect を Grafana の datasource として追加 ● vminsert に Prometheus から Remote Write ● vmstorage には PersistentVolume

Slide 17

Slide 17 text

AbemaTV, Inc. All Rights Reserved
 2020 年の ABEMA の監視基盤構成 17 VictoriaMetrics region: asia-east1 VictoriaMetrics storage VictoriaMetrics insert VictoriaMetrics select Micro Services Grafana Prometheus ● Prometheus を利用した VictoriaMetrics の導入 ● VictoriaMetrics は Select , Insert , Storage の3層 ● VictoriaMetrics の Cluster 構成 ● vmselect を Grafana の datasource として追加 ● vminsert に Prometheus から Remote Write ● vmstorage には PersistentVolume

Slide 18

Slide 18 text

AbemaTV, Inc. All Rights Reserved
 2020 年の ABEMA の監視基盤構成 18 VictoriaMetrics region: asia-east1 VictoriaMetrics storage VictoriaMetrics insert VictoriaMetrics select Micro Services Grafana Prometheus ● Prometheus を利用した VictoriaMetrics の導入 ● VictoriaMetrics は Select , Insert , Storage の3層 ● VictoriaMetrics の Cluster 構成 ● vmselect を Grafana の datasource として追加 ● vminsert に Prometheus から Remote Write ● vmstorage には PersistentVolume 長期保存 & 負荷分散など容易に行える

Slide 19

Slide 19 text

マルチクラウドにおけるメトリクス管理 2a. Remote Write を用いたメトリクス集約

Slide 20

Slide 20 text

AbemaTV, Inc. All Rights Reserved
 Remote Write を用いたメトリクス集約 20 課題 ● マルチクラウド構成により、各プラットフォームごとにメトリクスの保存が隔離されている ● 1 つの Grafana ですべてのメトリクスを参照できるようにしたい 対応 ● Prometheus の Remote Write 機能を用いて VictoriaMetrics に集約 ● 1 つの Grafana ですべてのメトリクスの可視化を実現

Slide 21

Slide 21 text

AbemaTV, Inc. All Rights Reserved
 2021 年現在の ABEMA の監視基盤構成 21 region: asia-east1 region: asia-northeast1 region: ap-northeast1 Grafana VictoriaMetrics storage VictoriaMetrics insert VictoriaMetrics select Micro Services Micro Services Micro Services Grafana Grafana Remote Write Remote Write Prometheus Prometheus Prometheus

Slide 22

Slide 22 text

AbemaTV, Inc. All Rights Reserved
 ● Managed NAT (Cloud NAT) ○ Private NodePool 配置 + 送信元 IP 固定 2021 年現在の ABEMA の監視基盤構成 22 GCP region: asia-northeast1 Micro Services Grafana Remote Write Cloud NAT Prometheus

Slide 23

Slide 23 text

AbemaTV, Inc. All Rights Reserved
 2021 年現在の ABEMA の監視基盤構成 23 AWS ● NAT Gateway ○ Private Subnet に配置 + 送信元 IP 固定 region: ap-northeast1 Micro Services Grafana Remote Write Prometheus NAT Gateway

Slide 24

Slide 24 text

AbemaTV, Inc. All Rights Reserved
 ● VictoriaMetrics + Cloud Armor (アクセス制限) 2021 年現在の ABEMA の監視基盤構成 24 Prometheus Remote Write Reciver region: asia-east1 Grafana VictoriaMetrics storage VictoriaMetrics insert VictoriaMetrics select Micro Services Prometheus Cloud Armor

Slide 25

Slide 25 text

AbemaTV, Inc. All Rights Reserved
 Cloud Armor 2021 年現在の ABEMA の監視基盤構成 25

Slide 26

Slide 26 text

AbemaTV, Inc. All Rights Reserved
 Cloud Armor 2021 年現在の ABEMA の監視基盤構成 26

Slide 27

Slide 27 text

AbemaTV, Inc. All Rights Reserved
 Cloud Armor 2021 年現在の ABEMA の監視基盤構成 27

Slide 28

Slide 28 text

マルチクラウドにおけるメトリクス管理 2b. Metrics Label の導入について

Slide 29

Slide 29 text

AbemaTV, Inc. All Rights Reserved
 Metrics Label の導入について 29 ● ● 元々新規のマイクロサービスを構築するたびにメトリクスを収集させるには Prometheus 側の設定を操作する必要があった ○ 設定ミスによるトラブルをなるべく最小化したい ● Prometheus の設定をいじらなくても、サービス側の設定だけで完結するように自動的にメトリク スが収集できるように変更を行った 課題 対応

Slide 30

Slide 30 text

AbemaTV, Inc. All Rights Reserved
 ● PrometheusOperator で CustomResouce 作成 ● ServiceMonitor を利用して、Kubernetes 上の ServiceResource を参照 Metrics Label の導入について 30 ServiceMonitor

Slide 31

Slide 31 text

AbemaTV, Inc. All Rights Reserved
 ● Service Resource に取得したいメトリクスの 指定された label を付与 ● HTTP 関連のメトリクスが取得したい場合 ABEMA 独自の label を付与する Metrics Label の導入について 31 apiVersion: v1 kind: Service metadata: name: abema namespace: abema labels: enableHttpMetrics: 'true' 開発者

Slide 32

Slide 32 text

AbemaTV, Inc. All Rights Reserved
 ● ServiceMonitor を利用して Prometheus が scraping するルールを記述 ● Prometheus と紐付ける label を設定 ● ServiceResource と一致する label を対象 ● メトリクスの endpoints などを記述 Metrics Label の導入について 32 apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: http-port-metrics labels: prometheus: http spec: selector: matchLabels: enableHttpMetrics: 'true' namespaceSelector: any: true endpoints: - port: http-metrics path: /http-metrics interval: 20s 管理者

Slide 33

Slide 33 text

AbemaTV, Inc. All Rights Reserved
 ● Prometheus 側で紐付ける ServiceMonitor を設定 ○ ServiceMonitor で設定した label を用いる ● Scraping の対象の変更が容易 ○ Prometheus が複数存在している場合に、 label 変更し、 scraping の対象が変更できる Metrics Label の導入について 33 apiVersion:monitoring.coreos.com/v1 kind: Prometheus metadata: labels: prometheus: http namespace: monitoring spec: serviceMonitorSelector: matchLabels: prometheus: http 管理者

Slide 34

Slide 34 text

マルチクラウド統合監視基盤 3a. Grafana

Slide 35

Slide 35 text

AbemaTV, Inc. All Rights Reserved
 Grafana 35 Grafana 構成 ● Google IAP を用いたユーザ認証 ● DB を外出しすることによる Grafana の冗長化

Slide 36

Slide 36 text

AbemaTV, Inc. All Rights Reserved
 Grafana 36 旧・マルチクラウド Grafana

Slide 37

Slide 37 text

AbemaTV, Inc. All Rights Reserved
 Grafana 37 旧・マルチクラウド Grafana

Slide 38

Slide 38 text

AbemaTV, Inc. All Rights Reserved
 Grafana 38 旧・マルチクラウド Grafana

Slide 39

Slide 39 text

AbemaTV, Inc. All Rights Reserved
 Grafana 39 旧・マルチクラウド Grafana

Slide 40

Slide 40 text

AbemaTV, Inc. All Rights Reserved
 Grafana dashboard 40 新・マルチクラウド Grafana

Slide 41

Slide 41 text

AbemaTV, Inc. All Rights Reserved
 Grafana dashboard 41 新・マルチクラウド Grafana

Slide 42

Slide 42 text

マルチクラウド統合監視基盤 3b. Grafana dashboard

Slide 43

Slide 43 text

AbemaTV, Inc. All Rights Reserved
 Grafana dashboard 43 Grafana マルチクラウドダッシュボード

Slide 44

Slide 44 text

AbemaTV, Inc. All Rights Reserved
 Grafana dashboard 44 Grafana ダッシュボード変数 external_labels: platform: gcp platform_id: gcp-abema-xxx Prometheus external_labels

Slide 45

Slide 45 text

AbemaTV, Inc. All Rights Reserved
 Grafana dashboard 45 Grafana ダッシュボード変数 platform ラベル platform_id ラベル label_values(go_gorutines, platform) label_values( go_goroutines{platform="$platform"}, platform_id)

Slide 46

Slide 46 text

マルチクラウド統合監視基盤 3c. Grafana unified_alert

Slide 47

Slide 47 text

AbemaTV, Inc. All Rights Reserved
 ● 対象のメトリクスを保持している Prometheus に対してアラートルールを設定する必要 Grafana unified_alert 47 Prometheus Alertmanager の課題点 サービス開発者がインフラ構成を把握する必要がある

Slide 48

Slide 48 text

AbemaTV, Inc. All Rights Reserved
 Grafana unified_alert 48 unified_alert ● Grafana 8 系から導入されたアラートシステム ● Victoria Metrics へクエリが可能 ● アラートがダッシュボードに紐付かない ● 通知メッセージやポリシーが柔軟に設定可能

Slide 49

Slide 49 text

AbemaTV, Inc. All Rights Reserved
 Grafana unified_alert 49 external-dns のCPU使用率が80%を超えたときに warning を発火する例 Predefined Alert ● 頻繁に使われるアラートを事前定義 ○ 開発者はいくつかの項目だけ設定 ● GitOps で管理 ○ GitHub に push するだけで設定完了

Slide 50

Slide 50 text

AbemaTV, Inc. All Rights Reserved
 ● クラスタを組むインスタンスの DNS を設定ファイルに記述する必要 ○ Kubernetes StatefulSet を用いることで解決 Grafana unified_alert unified_alert の課題点 Deployment における Pod DNS 名 例: grafana-<ランダム文字列>-<ランダム文字列> ランダムな文字列が Pod に割り当てられる StatefulSet における Pod DNS 名 例: grafana-0, grafana-1 Suffix が順番に割り当てられる

Slide 51

Slide 51 text

AbemaTV, Inc. All Rights Reserved
 ● クラスタを組むインスタンスの DNS を設定ファイルに記述する必要 ○ Kubernetes StatefulSet を用いることで解決 Grafana unified_alert unified_alert の課題点 Deployment における Pod DNS 名 例: grafana-<ランダム文字列>-<ランダム文字列> ランダムな文字列が Pod に割り当てられる StatefulSet における Pod DNS 名 例: grafana-0, grafana-1 Suffix が順番に割り当てられる

Slide 52

Slide 52 text

マルチクラウド統合監視基盤 3d. 監視基盤におけるコード管理

Slide 53

Slide 53 text

AbemaTV, Inc. All Rights Reserved
 監視基盤におけるコード管理 53 Single Source of Truth として GitHub を利用 Dashboard sidecar の導入 unified_alert を 管理する仕組みの導入 コード管理のモチベーション ● GCP / GKE の障害や手動での操作でデータが消えてしまった場合の復元 ● 一度適用した設定を別環境でも展開

Slide 54

Slide 54 text

AbemaTV, Inc. All Rights Reserved
 監視基盤におけるコード管理 54 ConfigMap Single Source of Truth として GitHub を利用

Slide 55

Slide 55 text

AbemaTV, Inc. All Rights Reserved
 監視基盤におけるコード管理 55 ConfigMap Grafana pod Dashboard sidecar の導入 ● GitHub の変更をトリガーに PipeCD で ConfigMap を生成 ● 生成された ConfigMap の内容を動的に反映

Slide 56

Slide 56 text

AbemaTV, Inc. All Rights Reserved
 ● GitHub の変更をトリガーに PipeCD で ConfigMap を生成 ● 生成された ConfigMap の内容を unified_alert へ登録 監視基盤におけるコード管理 56 ConfigMap Grafana Alert Manager Grafana unified_alert を管理する仕組みの導入

Slide 57

Slide 57 text

AbemaTV, Inc. All Rights Reserved
 ● Single Source of Truth として GitHub を利用 ● Dashboard sidecar の導入 ● unified_alert を管理するサービスの導入 監視基盤におけるコード管理 57 コード管理方法 ● 開発者は GitHub への PR を投げるだけで設定を変更することが可能に ● 複数環境への設定展開も容易に ● 汎用性の高いアラートを数行で追加することが可能に ●

Slide 58

Slide 58 text

4. まとめ

Slide 59

Slide 59 text

AbemaTV, Inc. All Rights Reserved
 まとめ 59 統合監視基盤に対する取り組み 今後の展望 ● マルチクラウド・マルチリージョンに対応するための監視基盤の刷新 ● 利用者が簡単に安心して使える基盤の構築 ● Grafana unified_alert への完全移行 ● Loki & Grafana Tempo によるロギング・トレーシングを含めた統合監視基盤

Slide 60

Slide 60 text

No content