Slide 1

Slide 1 text

EKSのメトリクスをMackerelに簡 単に送るためにOpenTelemetry CollectorのHelm Chartを作った 株式会社はてな id:rskmm0chang 2025/07/30 Hatena Engineer Seminar #34 1

Slide 2

Slide 2 text

自己紹介 ● id:rskmm0chang ● プラットフォーム部システムプラットフォー ム Productivityチーム ○ 全社的な生産性の改善への関わり 2

Slide 3

Slide 3 text

MackerelとEKSメトリクス 3 MackerelにKubernetes のメトリクスを送る

Slide 4

Slide 4 text

はてなにおけるEKS ● ECSを使っているサービスが多いが、EKSも使っ ている ○ https://developer.hatenastaff.com/entry/2024/02/2 9/112729 ○ https://developer.hatenastaff.com/entry/2024/11/2 6/151801 4

Slide 5

Slide 5 text

MackerelのKubernetes対応 ● Kubernetesにmackerel-container-agentをセットアッ プする ○ https://mackerel.io/ja/docs/entry/howto/install -agent/container/kubernetes ■ Pod単体には対応 ● MackerelにはKubernetes インテグレーションがない ● Mackerel自体の機能だけではKubernetes全体のメトリ クスは見れない 5

Slide 6

Slide 6 text

MackerelとEKSメトリクス 6 OpenTelemetry Collector

Slide 7

Slide 7 text

● Kubernetesのメトリクスのほとんどに対応している ○ Kubeletstats ○ Kubernetes Cluster ○ Kubernetes Objects ○ Host Metrics ● メトリクスのattributeにKubernetesのAttributeの付与 ○ Kubernetes Attributes ■ Pod名などをメトリクスに付与 7 OpenTelemetry CollectorのKubernetes 対 応

Slide 8

Slide 8 text

● なぜ Mackerel は OpenTelemetry のラベル付きメトリックをサ ポートするのか ● 2024年11月、Mackerelのメトリックがオブザーバビリティ標準で あるOpenTelemetryに正式対応し、あわせて価格体系を全面的に 改定します ● つまり、OpenTelemetry Collectorで収集したメトリクスを Mackerelに送ればKubernetesのモニタリングが可能 8 MackerelのOpen Telemetry対応

Slide 9

Slide 9 text

OpenTelemetryでMackerelに送る 9 App1 App2 OpenTelemetry Collector

Slide 10

Slide 10 text

OpenTelemetry Collectorの概念 10

Slide 11

Slide 11 text

OpenTelemetry Collectorの概念 11 Receivers: メトリクスを集める

Slide 12

Slide 12 text

OpenTelemetry Collectorの概念 12 Processors: メトリクスを加工する

Slide 13

Slide 13 text

OpenTelemetry Collectorの概念 13 Exporters: メトリクスを送る

Slide 14

Slide 14 text

OpenTelemetry Collectorの概念 14 Pipelines: Receivers, Processors, Exportersを繋げる

Slide 15

Slide 15 text

OpenTelemetryでMackerelに送る 15 App1 App2 OpenTelemetry Collector Receivers: メトリクスを集める

Slide 16

Slide 16 text

OpenTelemetryでMackerelに送る 16 App1 App2 OpenTelemetry Collector Processors: メトリクスを加工する

Slide 17

Slide 17 text

OpenTelemetryでMackerelに送る 17 App1 App2 OpenTelemetry Collector Exporters: メトリクスを送る

Slide 18

Slide 18 text

MackerelとEKSメトリクス 18 Helm Chart

Slide 19

Slide 19 text

Helm Chartとは ● Kubernetesアプリケーションのパッケージング ○ マニフェストのテンプレート集 ● シンプルなデプロイと管理が可能になる ○ Helmコマンドで管理する場合 ● 再利用性と共有性 ○ テンプレートなので配りやすい ○ 一部の変数だけでカスタマイズできる 19

Slide 20

Slide 20 text

OpenTelemetry CollectorのHelm Chart ● OpenTelemetry Collector ○ Daemonset, Deploymentを直接デプロイする ○ メトリクスの設定用にpresetsとしてよく使うもの(Kubeletstatsなど)が用意さ れています ■ https://github.com/open-telemetry/opentelemetry-helm-charts/ blob/main/charts/opentelemetry-collector/values.yaml#L23 ○ log, trace, metricsに対応 ● OpenTelemetry Operator ○ Operatorをデプロイ ○ Custom Resource経由でcollectorをデプロイ 20

Slide 21

Slide 21 text

OpenTelemetry Collector Helm Chartの 微妙なところ 21 ● presetsに追加や上書きなどができるが、書き方がとてもわ かりにくい ○ Helm Chartのテンプレートを読まないとわからない ● presetsを使わないこともできるが、そうするとすべてを自 分で記載することになり長くなる ● つまり、presetsはほしいが簡単なカスタマイズ性がほしい ● “公式”なので、使わない設定(log, traceなど)が多い

Slide 22

Slide 22 text

使いやすいHelm Chartを作った 22

Slide 23

Slide 23 text

Mackerelに送る 23

Slide 24

Slide 24 text

工夫したところ 24 presetは用意する

Slide 25

Slide 25 text

工夫したところ 25 presetの一部に追加・上書きできる

Slide 26

Slide 26 text

こんなことができる1 26 preset node_conditions_to_reportに追加

Slide 27

Slide 27 text

こんなことができる2 27 service.pipeline.exportersにprometheusを追加

Slide 28

Slide 28 text

Mackerel Dashboard 28

Slide 29

Slide 29 text

まとめ ● OpenTelemetry Collectorを使えばMackerelに Kubernetesのメトリクスは送れる ● Helm Chartを作って自分たちで使いやすいようにした ○ 作成したChartはPublicにする予定 29

Slide 30

Slide 30 text

Appendix:Helm Chart Tips ● Helm Chartを作るときはとりあえずhelm create ○ 基本的な内容は作ってくれる ● Chart Development Tips and Tricks を読む ○ https://helm.sh/docs/howto/charts_tips_and_tricks/ ○ tplは便利(だけど壊れやすいので注意) ○ annotationの設定 ■ automatically-roll-deployments ● Useful template functions for Go templates : sprig 30

Slide 31

Slide 31 text

Appendix:Helm Chart 公開 ● 少し前はGithub Pagesでの公開が多かった ○ 前からあるHelm Chartレポジトリはこれが多い ○ 準備がやや面倒 ● Helm ChartはOCIに対応 ○ コンテナレジストリに置ける ○ 今回作成したHelm ChartはまずはECRで社内に公開 ○ https://helm.sh/docs/topics/registries/ 31

Slide 32

Slide 32 text

おわり