はじめに
このエントリーはKubernetes Advent Calendar 2016の6日目の投稿になります。Kubernetes上にログ収集と監視の仕組みを構築します。
事前準備
事前にfabric8を使ってKubernetes環境をローカルに構築するに従って、ローカルにminikube環境が構築できているものとします。
Loggingの構築
fabric8ではログ収集の仕組みとしてLoggingというマニフェストを公開しており、簡単にKubernetes上にデプロイすることができます。Loggingは内部的には、Elasticsearch、Fluentd、Kibanaによって構成されています(残念ながら、Elasticseaarch、Kibanaは最新版のVer.5ではありません)。
LogstashではなくFluentdなのは、FluentdがDockerのlogging driverに対応しており、logging driverを使ってdockerコンテナのstdoutをそのまま流せる仕組みがあるためのようです。
手順
fabric8のマニフェストが公開されているページから、loggingのyamlを確認し、次のようにコマンドを実行します。
kubectl apply -f http://central.maven.org/maven2/io/fabric8/platform/packages/logging/2.4.5/logging-2.4.5-kubernetes.yml
elasticsearchはpersisent volumeが必要になるので、次のコマンドを実行し、persisent volumeを生成します。
gofabric8 volumes
これで手順は完了で、各pod、serviceの起動が完了したら、Kibanaのサービスにアクセスしてください。
Metricsの構築
fabric8で監視の仕組みとしてMetricsというマニフェストを公開しており、簡単にKubernetes上にデプロイすることができます。Metricsは内部的には、Prometheus.io、Grafanaによって構成されています。
fabric8-maven-pluginによってspring-boot アプリケーションをデプロイしている場合はJolokiaによりJMX Metricsをとれるようになります。
手順
fabric8のマニフェストが公開されているページから、metricsのyamlを確認し、次のようにコマンドを実行します。
kubectl apply -f http://central.maven.org/maven2/io/fabric8/platform/packages/metrics/2.4.5/metrics-2.4.5-kubernetes.yml
Prometheusもpersisent volumeが必要になるので、次のコマンドを実行し、persisent volumeを生成します。
gofabric8 volumes
これで手順は完了で、各pod、serviceの起動が完了したら、Grafanaのサービスにアクセスしてください。
おわりに
というわけで、fabric8を使ってKubernetes上にElaasticseaarch-Fluentd-KibanaによるLogging環境の構築とPrometheus-GrafanaによるMetrics環境を構築することが簡単にできました。このエントリーでは単に触れる環境を構築しただけですが、まずは触ってみて、実際の運用にどのように使えるか、また足りない部分は何なのかを検証することができると準備は整いました。この環境をもとにあれこれ検証してみます。