2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
リンクをコピー
記事をブックマーク
勝田広樹氏(以下、勝田):では、ここからクラスタ監視についてお話しします。まず自分たちKubernetes as a Service(KaaS)チームがどういったことを監視したいかという点についてです。前半でもお話ししましたが、このKaaSチームは、すごくいろいろな領域を担当しています。
ここでは「machine」「KaaS」「Kubernetes Cluster」「container」、それから一部アプリケーションもデフォルトのアドオンとして提供しています。こちらで提供しているアドオン部分に関しては動作をしっかり担保して、サービス開発者はサービスの開発に注力できるような状態をつくりたいと思っています。
ということで、KaaSチームとしては、このKubernetes Clusterを払い出して終わりではありません。その払い出したクラスタがしっかり正常に稼働していて、かつ自分たちが提供しているデフォルトのアドオンたちが正常稼働していること、この両方をしっかりと担保できるように監視をしようとしています。
今回のイベントは「Kubernetes導入検討している方にもわかりやすく」ということでした。まず入り口の部分、このクラウドネイティブな監視に関しまして、3本の柱、オブザーバビリティの3本柱として「メトリクス」「トレース」「ログ」があります。
今回主に話すのはメトリクスの部分です。定量的な状態把握と、アラーティングに伝える部分・つなげる部分としてかなり有用に使える部分かなと思っています。内容としては、リソースの利用状況だったり、e2e監視によってサービスの健全性確認などに使われています。
このメトリクス監視によるアラーティングから何か異常を察知して、そこから他の2つの柱の部分、「トレース」でアプリケーション間の通信だったり、どこで何が、どこで問題が起きているかというようなのを検知して調べて、そして該当箇所のログを見ることによって問題を解決するような流れになるかなと思います。
繰り返しですが、KaaSチームとしては、全体として正常に動いているか、何か起きていたら知りたいので、このアラーティングに主に使える部分、メトリクスについて集約して監視をしています。すでにKubernetesを使っている方はご存じな方が多いのかなと思うのですが、Prometheusを使ってメトリクス監視を行なっています。
そういった利用用途としてもメトリクス監視がアラートにつなげられるという点で有用なのですが、ほかにも主に数値データを使いますので、保存データが少量で済むのが利点となっています。
このデータ量が少量で済むというのは、言い換えれば一定になるまで保存できる期間が長くなるということです。長期間のデータを溜め込むことによって過去の状態遷移が確認可能となります。
何かアラートが来たときにそのメトリクスの推移を確認することによって、「このタイミングから何かを起きてそうだぞ」というような過去の何がどのタイミングで発生したかというのも探る上でデータ量が少量で済むのは、かなり大きな利点かなと思っています。
残りの2本の柱は、先ほどお話ししたように、詳細調査の際に使用しています。
KaaSチームとしてはクラスタ全体を監視しているのですが、まずは単体のクラスタについてお話しします。Prometheusを使った監視としまして、まずすごく簡単にお話ししますと、主に2つのコンポーネントで成り立っています。
主にexporterとPrometheus自身に分かれておりまして、このexporter側で先ほどから話していますメトリクスの収集を行なっています。
いろいろな種類のexporterがありまして、実際にヤフーでもよく使っているexporterとして、ここでは「node_exporter」「blackbox_exporter」といったものがあります。
node_exporterによってノードの情報を収集したり、blackbox_exporterによってブラックボックスなアプリケーションの疎通確認したり、動作のリクエストに対するレスポンスの確認だったりをできます。そこでメトリクスを収集し、実際にPrometheusがそのメトリクスを見て何かあればアラートにつながるようになっています。
これによって、先ほどKaaSチームが行ないたいと言っていたクラスタの正常稼働、クラスタリソース、ノードの状態、etcdのメンバーとかリーダーがコロコロ切り替わっていないかとか、何か異常が起きていれば検知できるようになり、アドオンの正常稼働、これはアプリケーションとしての対象のPodの稼働状態を見たり、Ingressと疎通がちゃんとできていて利用者からしっかりアクセス可能かどうかをチェックするようにしています。
こうして簡単ですがクラスタの監視はできるようになりましたということで、これを大量クラスタの監視につなげます。ということで、今度はこの680以上の数百クラスタを監視することを考えます。
個別のクラスタは、利用者目線ではこういったPrometheusのメトリックス監視によって何か起きていないかと状況感知・検知できるようになったのですが、KaaSチームから目線ではなかなかこの数百クラスタを個別に見るのは大変です。
個人の能力を上げるだけでは、自分もちょっと腕立てとかではなかなか対応しきれなかったので、システム化しました。やっぱり人間では限界がありますのでシステムで集約して、それを人間が簡単に見られるようにしましょうということです。
集約システムとして何をやっているかというと、KaaS側にクラスタのリストを取りに行って、そのリストによって各クラスタのメトリクスを収集します。
この集約システム自身も実体としてはPrometheusとなっておりまして、Prometheusの機能であるfederateを使うことによって、メトリクスのデータを収集して、かつ個別に……先ほどメトリクスデータを長期間保存することが大切という話をしたのですが、個別のメトリクスデータ保存よりは、この集約したシステムによって保存できるような状態を作りました。
これによって、KaaSメンバーは自身のトレーニングを頑張らずに、集約システムだけ見れば大丈夫というようになっています。
ここでポイントとなるお話を少ししますと、メトリクスといえどもこの数百クラスタですべてのデータを保存するのはかなり大変でした。その保存量がやはり多くなってしまいますと期間が短くなってしまいますので、そうすると過去の何がどのタイミングで起きたというのがわかりづらくなってしまいます。
なので、現在では何か起きたよというタイミングで生まれるメトリクスであるアラートメトリクスのみを基本的に収集することによって、何か起きたタイミングというものがいつから発生していたのかを確認できるようにしています。
そしてプラスで運用改善に必要データを書いています。ただ何か正常に動いているかという監視だけではなくて、自分たちKaaSチームがよりユーザー側のクラスタの改善に使えるように、そういったデータを収集しています。
それは何かというと、すごく簡単な紹介ですが、例えばクラスタのCPUとかメモリとかの使用量のデータです。こういった表にすることによって、どこのクラスタでどれだけリソースが使われているかをパッと見ることが可能になります。
あまりにも少ない使用量ですと、どこかもっと必要としているクラスタに割り当てることが可能になったり、逆にかなり使いすぎているクラスタがあれば、アップデートすることによってもっとアプリケーションを動かせるようにするというような全体最適化にも使えるようにしています。
このように集約したメリットとしては、全クラスタをKaaSチームで見られるようになっただけではなくて、この永続化ストレージも1箇所にすることによって、リソースを効率よく使えるようになりました。
そして、全体の情報収集をできるようにすることで、全体のクラスタのアップデートだったり、自分たちが提供するアプリケーションによって何か起きていないかというようなチェックだったりも可能になりました。これによってユーザー側としては安定したクラスタを使って開発に集中できるようになります。
まとめです。前半ではKaaSを使って運用自動化をすることをお話ししました。イベントも紹介しましたので、詳しく知りたい方はぜひそちらをご参照ください。
また一般的な監視に関しまして、メトリクス・ログ・トレースを使って可観測性を高めるお話をしました。
そしてヤフーの仕組みとして、このメトリクスをすべてのクラスタ……数百クラスタのメトリクスを集約し、最小限のコストで全クラスタの稼働状態を担保するというようなシステムのお話をしました。
そして、これによって管理者が全体をしっかり把握することによって、リソースの最適化だったり提供するアプリケーションのより改善につなげたりと、全体最適化を図れるようにしました。
すみません、少し時間がオーバーしてしまいましたが、この発表は以上です。ありがとうございました。
司会者:発表ありがとうございました。質問が来ていますね。
相良幸範氏(以下、相良):はい。1つ目の質問ですね。「デプロイ作業をCIOpsで行なっている箇所もあるでしょうか?」という話ですが、ちょっとすみません、もう少し具体的に質問していただければ答えられたかもしれないですけど、ちょっとわからない感じです。ただ、厳密な意味のCIOpsだと、ちょっと違うかもしれないです。CI/CDと連携してデプロイしていますよ、というふうに捉えてもらえるといいと思います。
2つ目は勝田さんお願いします。
勝田:はい。「集約システム側では、全サービスのメトリクス値が見えてしまう気がするのですが、社内セキュリティルールとしては許容していらっしゃるのでしょうか?」という質問ですね。
メトリクス値として取得するものは限られたもの、今回ですとアラートメトリクスだったり自分たちで払い出したクラスタの自分たちのアプリケーションによる影響部分ということで、サービスの各開発者が持っているような他のチームに見せてはいけないようなデータは収集しないようにしています。という回答で大丈夫そうでしょうか?
司会者:はい。スピーカーのみなさん、ありがとうございました。
相良・勝田:ありがとうございました。
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略