Mackerelチームのコンテナ開発における戦略とこれから / 190722-cndt2019

87425b9ed1c97009802d66c6aebbfcdb?s=47 Hayato Imai
July 22, 2019
1.2k

Mackerelチームのコンテナ開発における戦略とこれから / 190722-cndt2019

87425b9ed1c97009802d66c6aebbfcdb?s=128

Hayato Imai

July 22, 2019
Tweet

Transcript

  1. 4.
  2. 5.
  3. 6.
  4. 10.
  5. 20.

    mackerel
 • Mackerelサービス本体 ◦ メトリックの保存 ◦ ダッシュボードの提供 ◦ メトリックの監視 ◦

    アラート管理 ◦ クラウドサービス(AWS, Azure)インテグレーション ◦ URL外形監視 • ウェブブラウザやAPIアクセス、mkrコマンドなどで利用する
  6. 29.

    サービス/ロール
 • サービス ◦ サービス単位でホストをグループ化 ◦ 「はてなブログ」「はてなブックマーク」 • ロール ◦

    サービスにおける役割単位でホストをグループ化 ◦ 「アプリケーションサーバ」「データベースサーバ」
  7. 37.

    ECSインテグレーション
 • Amazon ECSを監視するAWSインテグレーション ◦ エージェント不要。Mackerel本体が定期的にメトリックを取得。 • Amazon CloudWatchからメトリックを取得 •

    実行しているECSクラスタ/サービスのCPU使用率、メモリ使用量、タスク 数を監視 • 1 ECSクラスタ/ホスト(マイクロホスト)とし、カスタムメトリックとして登録
  8. 46.
  9. 49.

    やること
 • ECS Task/Kubernetes Podをホストとして扱う ◦ “Mackerelではシステムを構成する最小単位をホストとして扱う” • 既存のプラグインを利用可能とする •

    コンテナの基本的なメトリックをシステムメトリックとして登録する • ロールの割当を可能とする • Fargateのようなコンテナネイティブな開発・運用に対応する
  10. 51.
  11. 56.
  12. 62.

    ECSのAPI
 • ecs-agentが提供するAPI • Introspection API ◦ コンテナインスタンスやタスクのメタデータを提供 • Task

    Metadata Endpoint version2/3 ◦ タスクのメタデータやコンテナのメトリックを提供
  13. 63.

    MackerelコンテナエージェントとECSのAPI
 • パブリックベータ時は起動タイプ、ネットワークモードによってそれぞれ異な るAPIを利用していた ◦ EC2(bridge/host): Introspection API + Docker

    API + cgroupfs ◦ EC2(awsvpc): Task Metadata Endpoint version 3 ◦ Fargate(awsvpc): Task Metadata Endpoint version 2 • 正式リリースではTask Metadata Endpoint version3に統一 ◦ Amazon ECS コンテナエージェント バージョン1.26.1以降 ◦ AWS Fargate プラットフォームバージョン 1.3.0以降
  14. 69.

    e.g. RBAC設定例
 --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: mackerel-container-agent-clusterrole

    rules: - apiGroups: - "" resources: - nodes/proxy - nodes/stats - nodes/spec verbs: - get --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: sample-clusterrolebinding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: mackerel-container-agent-clusterrole subjects: - kind: ServiceAccount name: sample-serviceaccount namespace: default
  15. 72.

    デプロイ
 • Task/Podごとにコンテナエージェントの定義が 必要
 • CDKライブラリやMutatingAdmissionWebhookな ど、デプロイが楽になるようなツールの提供を検 討 Task/Pod Def

    FOO - App FOO - mackerel-container-agent Task/Pod App FOO Task/Pod App BAR Task/Pod App FOO Task/Pod App BAR Task/Pod Def BAR - App BAR - mackerel-container-agent
  16. 73.

    リソース消費
 • “観察者効果は気にしない ” Mike Julian. 入門 監視. 松浦隼人訳. オライリー・ジャパン,

    2019, 5p • とはいえTask/Podの高集積環境では小さなオー バーヘッドでも気になるかも • DaemonSet型エージェントの提供を検討 HOST
  17. 77.