はじめに
VMware Tanzuが発表され、世界的な潮流はOSからアプリケーションに変動しつつあります。
日本においても、vSphere7.0が安定稼働されることが確認されれば、
VMware Tanzuを導入・使用し、Kubernetesを利用した開発がより活性化していくことが予想されます。
そうなった場合に、運用・保守・監視の仕組みは激変することが予想されます。
静的なOS・NWではなく、動的なアプリケーションの監視の重要性が高くなっていく……。
定常手順書を利用した監視運用の一部は通用しなくなり、運用が非常に高度化することが予想されます。
※AWSのオートスケールやDockerの登場以降、避けられない流れでしたが。
ここではそんな時代に対応すべく、監視の仕組みをZabbixを通して考えていきます。
Zabbixの役割
Zabbixは様々な企業や現場においてOSやNWの監視を担ってきました。
その実績は本物ですが、パブリッククラウド環境の監視では大きく出遅れており、
CloudWatchやAzure Monitorにそのお株を取られつつあります。
しかし、Zabbixはレガシーになった訳ではありません。
依然としてOS監視ではカスタマイズ性が高く、取得できる情報も多いので、監視システムとしての優位を保っています。
私はKubernetesを監視してやることで、動的なアプリケーションの監視でも
Zabbixは十分な能力を発揮することができると考えます。
VMware Tanzuは、パブリッククラウドが独走していたサーバーレスの開発領域を
オンプレのvSphere環境でも実現させ、促進させると予想できます。
オンプレ環境で稼働している監視システムはZabbixのシェアが高いですし、
この時に必要とされる監視システムとして名前があがるのはZabbixだと思います。Zabbixにとってもチャンスです。
Kubernetesとは
https://kubernetes.io/ja/docs/concepts/overview/components/
実際に利用したことがないので不正確な部分もあるかと思いますが、
Kubernetesは「マスターノード」と「ワーカーノード」によって構成されています。
マスターノードは、ワーカーノードの集合である「クラスタ」を管理します。
各ワーカーノードではDockerが稼働しており、アプリケーションが格納されています。
そして、Podという単位になってコンテナが稼働され、クラスタ内で管理・実行されます。
Kubernetesの「マスターノード」の監視することで、開発環境の監視が実現できそうです。
Kubernetes監視の検討
1.監視方式
Kubernetesの「マスターノード」にZabbixエージェントをインストールすることを前提にしています。
現在想定しているのは、system.runを使用して、kubectlコマンドの実行による監視です。
2.監視対象
①マスターノード
②ワーカーノード
③Pod
④アプリケーション
Kubernetesでは、上記4点が監視対象とされると十分でしょう。
3.実行コマンド
①マスターノード
通常のエージェント監視を設定。
②ワーカーノード
下記のようなコマンドから取得できる情報を監視想定。
kubectl get node -o wide
kubectl describe node 【node-name】
kubectl top node
③Pod
下記のようなコマンドから取得できる情報を監視想定。
kubectl get pod -o wide
kubectl describe pod 【pod-name】
kubectl logs 【pod-name】 -c 【init-container-2】
kubectl top pod
kubectl get events
④アプリケーション
下記のようなコマンドから取得できる情報を監視想定。
kubectl get service -o wide
kubectl describe service 【service-name】
kubectl logs 【your-pod-name】
※可能そうであれば、LLD監視化を検討。
おわりに
現在はまだまだ検討段階です。実際にTanzu Kubernetesを触れる機会が来たら、検証しようと思います。
・参考
Kubernetesで監視を行う際の注意点
https://qiita.com/FY0323/items/82eeca93d00cbb4682e7
k8sの運用ってどうなの?
https://qiita.com/boono/items/0d8703cdff5a9513e679