Kubernetes-monitoring
Kubernetes-監視
監視は、大規模なクラスターを管理するための重要なコンポーネントの1つです。 このために、多くのツールがあります。
Prometheusを使用した監視
これは、監視および警告システムです。 SoundCloudで構築され、2012年にオープンソース化されました。 多次元データを非常にうまく処理します。
プロメテウスには、監視に参加するための複数のコンポーネントがあります-
- プロメテウス-データをスクラップして保存するコアコンポーネントです。
- Prometheusノードexplore -ホストレベルのマトリックスを取得し、それらをPrometheusに公開します。
- Ranch-eye - haproxy であり、 cAdvisor 統計をPrometheusに公開します。
- Grafana -データの視覚化。
- InfuxDB -牧場主からのデータを保存するために特に使用される時系列データベース。
- Prom-ranch-exporter -これは単純なnode.jsアプリケーションであり、Rancherサーバーにサービスのスタックのステータスを照会するのに役立ちます。
セマテキストDockerエージェント
これは、最新のDocker対応メトリック、イベント、およびログ収集エージェントです。 すべてのDockerホストで小さなコンテナーとして実行され、すべてのクラスターノードとコンテナーのログ、メトリック、およびイベントを収集します。 コアサービスがDockerコンテナーに展開されている場合、Kubernetesコアサービスのコンテナーを含むすべてのコンテナー(1つのポッドに複数のコンテナーが含まれる場合があります)を検出します。 展開後、すべてのログとメトリックはすぐに使用できます。
ノードへのエージェントの展開
Kubernetesは、ポッドがクラスターに追加されることを保証するDeamonSetsを提供します。
SemaText Dockerエージェントの構成
環境変数を介して構成されます。
apps.sematext.comで無料アカウントを取得します(まだお持ちでない場合)。
タイプ「Docker」のSPMアプリを作成して、SPMアプリトークンを取得します。 SPMアプリはKubernetesのパフォーマンスメトリックとイベントを保持します。
Logseneアプリを作成して、Logseneアプリトークンを取得します。 LogseneアプリはKubernetesログを保持します。
以下に示すように、DaemonSet定義のLOGSENE_TOKENおよびSPM_TOKENの値を編集します。
- 最新のsematext-agent-daemonset.yml(生のプレーンテキスト)テンプレートを取得します(以下も参照)。
- ディスク上のどこかに保存します。
- SPM_TOKENおよびLOGSENE_TOKENプレースホルダーをSPMおよびLogsene Appトークンに置き換えます。
DaemonSetオブジェクトを作成する
kubectlを使用してSematext Agent Dockerを実行する
Kubernetesログ
Kubernetesコンテナーのログは、Dockerコンテナーのログと大差ありません。 ただし、Kubernetesユーザーは、展開されたポッドのログを表示する必要があります。 したがって、次のようにログ検索にKubernetes固有の情報を利用できるようにすることは非常に便利です-
- Kubernetes名前空間
- Kubernetesポッド名
- Kubernetesコンテナー名
- Dockerイメージ名
- Kubernetes UID
ELKスタックとLogSpoutの使用
ELKスタックには、Elasticsearch、Logstash、およびKibanaが含まれます。 ログを収集してログプラットフォームに転送するには、LogSpoutを使用します(FluentDなどの他のオプションがあります)。
次のコードは、KubernetesでELKクラスターをセットアップし、ElasticSearchのサービスを作成する方法を示しています-
複製コントローラーの作成
木花URL
Kibanaの場合、Elasticsearch URLを環境変数として提供します。
Kibana UIは、コンテナポート5601および対応するホスト/ノードポートの組み合わせで到達可能です。 開始時には、Kibanaにはデータがありません(データをプッシュしていないため、これは予想されます)。