こんにちは、アキバです。
前回に引き続き、Azure Kubernetes Service(AKS)を用いて作成した Kubernetes(k8s)クラスタを ElasticStack で監視する方法について解説します。
第2回の今回は、k8s でデプロイしたコンテナ上で動くミドルウェアの監視を行う方法についてです。
※今回の記事の内容は、ほぼ AKS に依存しません。 kubectl が使える環境なら、どの k8s クラスタでも適用できるでしょう
1.監視対象の構成
監視対象である AKS の Vote サンプルアプリケーションは、以下のような構成で動いています。
Metricbeat には、Redis などのメトリックを監視するためのモジュールが用意されているため、 k8s クラスタでも同じように監視したいと思います。
2.AutoDiscover機能を使う
k8s のように動的にコンテナが起動・終了するようなシステムの場合、起動したコンテナに追従して Filebeat/Metricbeat を設定する必要があります。
前回の記事で、 k8s クラスタの Pod の監視には、DaemonSet という k8s の仕組みで実現できることを学びました。
しかしながら、DaemonSet で起動した Filebeat/Metricbeat は、自分の監視する Pod 上でどのツールが動いているかを知らなければモジュールを適用することができません。
Filebeat/Metricbeat には、 Autodiscover という機能があり、これを利用することで動的に増減するコンテナに追従可能になります。
例として、 Redis が動く azure-vote-back のコンテナに対して Metricbeat の redis モジュールを適用します。
前回 DaemonSet として登録する際に使用した、 metricbeat-kubernetes.yaml ファイルに、コメントアウトされた状態の記述があるので、このコメントを外して設定を追記します。
■設定前:
# To enable hints based autodiscover uncomment this: #metricbeat.autodiscover: # providers: # - type: kubernetes # host: ${NODE_NAME} # hints.enabled: true
■設定後:
# To enable hints based autodiscover uncomment this: metricbeat.autodiscover: providers: - type: kubernetes host: ${NODE_NAME} #hints.enabled: true templates: - condition.equals: kubernetes.labels.app: azure-vote-back config: - module: redis metricsets: ["info", "keyspace"] period: 10s hosts: ["${data.host}:6379"]
上記の例では、「kubernetes.labels.app」という k8s のメトリックで得られるフィールドを見て、「azure-vote-back」だったら redis モジュールを適用するようにしています。 この「condition.equals」をシステムに合わせて設定すれば、その他のモジュールやコンテナへの適用にも応用できるわけです。
3.適用=DaemonSet を更新する
それでは、変更した設定を k8s の DaemonSet に適用します。
既に適用されている DaemonSet がある場合は、削除してから再度適用します。
$ kubectl delete -f metricbeat-kubernetes.yaml $ kubectl create -f metricbeat-kubernetes.yaml
適用されました。
余談ですが、このダッシュボードは、 Metricbeat からセットアップしたものです。
構築した Kibana サーバに Metricbeat をインストールし、設定後に以下のコマンドで投入しています。(※SSHコンソール上で操作)
$ metricbeat setup --dashboards
まとめ
以上の内容で、 k8s クラスタ上で動的に作成/削除されるコンテナに対して、その種類を見ながら必要なモジュールを適用できることがわかりました。
今回は Redis のみを対象にしましたが、 nginx のメトリックや、あるいは Filebeat を使ってアプリケーション独自のログを監視するといったことも可能になりますので、興味のある方はチャレンジしてみてはいかがでしょうか?
次回は、最後に Elastic APM をアプリケーションに適用してみます。
それでは。
参考文献
- Autodiscover - Metricbeat Reference
https://www.elastic.co/guide/en/beats/metricbeat/current/configuration-autodiscover.html - Setup Kibana dashboards
https://www.elastic.co/guide/en/beats/metricbeat/current/load-kibana-dashboards.html
Acroquest Technologyでは、キャリア採用を行っています。
- ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
- Elasticsearch等を使ったデータ収集/分析/可視化
- マイクロサービス、DevOps、最新のOSSを利用する開発プロジェクト
- 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
世界初のElastic認定エンジニアと一緒に働きたい人Wanted! - Acroquest Technology株式会社のエンジニア中途・インターンシップの求人 - Wantedlywww.wantedly.com