Docker監視 〜基礎の基礎を解説〜

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/d89e4d25-2ce9-4d84-2c8b-4bbf68bfcd80.png)


#はじめに
私たちはコンピューティングの世界で長い道のりを歩んできました。 比較的基本的なアクションを実行しながら部屋や建物全体を埋め尽くすコンピューターから、文字通りポケットや手のひらに収まる複雑なマシンまで、この進歩は息を呑むほどのものでした。 速度と効率に重点を置いて、コンピューターとこれらのコンピューターで実行されるアプリケーションは、これらのリソースがハードウェアリソースであれソフトウェアリソースであれ、リソースの最適な使用を保証するように調整されています。 これらの最適化の取り組みは、時間の経過とともに、現在の最先端テクノロジーに徐々に移行してきました。これは、時間の経過に伴うコンピューターハードウェアの移行でより物理的に明らかですが、最新のソフトウェア開発方法論に完全に反映されています。

コンテナは、この最新のソフトウェア開発方法論の実施形態です。 それらの自己完結型の性質により、リソースの最適化が簡単になり、アプリケーションの一部またはアプリケーション全体を単一のホスト上で互いに独立して共存させることができます。 また、ホストに依存しないため、コンテナ化されたアプリケーションに比類のない柔軟性がもたらされます。これは、「コンテナ」で実行されているアプリケーションを、あるホストから文字通り「ピックアップ」して、基盤となるオペレーティングシステムが異なる別のホストにドロップでき、完璧に動作し続けます。 ただし、コンテナは革新的なテクノロジーですが、パフォーマンスをより適切に微調整したり、エラーが発生する前または発生したときにトラブルシューティングしたりするために、コンテナ内で実行されているアプリケーションを監視する必要があります。

この記事では、Dockerコンテナがコンテナエコシステムの大部分を占めることから、特にDockerモニタリングに焦点を当ててコンテナモニタリングを紹介します。 この記事はあくまで入門レベルの記事です。詳細については、[Dockerモニタリングツール](https://www.metricfire.com/blog/docker-monitoring-tools/)、[cAdvisorを使用したDockerコンテナのモニタリング](https://qiita.com/TomoEndo/items/4aa2d9889c49148a3d7f)をご覧ください。

[MetricFire](https://www.metricfire.com/japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=What%20is%20Docker%20Monitoring%3F)は、オープンソースのPrometheus、Graphite、およびGrafanaをベースとして構築された監視ソフトウェアです。 Dockerコンテナの監視を毎日直接行っています。 Dockerコンテナーの監視を支援するツールを探している場合は、[MetricFire](https://www.metricfire.com/japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=What%20is%20Docker%20Monitoring%3F)チームに[デモを予約](https://www.metricfire.com/demo-japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=What%20is%20Docker%20Monitoring%3F)してください。 きっと、あなたのサポートをしてくれるはずです。

#コンテナとDocker
コンテナは、アプリケーションコードとそのすべての依存関係を単一のユニットとして格納する独立したソフトウェアを表します。 この単一ユニットは、軽量で分離された自己完結型の環境です。つまり、アプリケーションは、それを収容するコンピューティング環境に関係なく、迅速かつ確実に実行できます。 コンテナ化されたソフトウェアは、アプリケーションの独立した部分、またはアプリケーション全体が、実行および正常な実行を維持するために必要なすべてのものとともに、自己完結型のユニット（「コンテナ」）にパッケージ化されたときに実現されます。

コンテナにはすでに必要なものがすべて含まれているため、これらのリソースをホストオペレーティングシステムに依存することはありません。 この抽象化により、コンテナエンジン/ランタイムが適切に配置されていれば、コンテナは事実上どこでも実行できます。

今日、選択できるコンテナランタイムは多種多様ですが、最も人気があり、最も広く採用されているのはDockerです。 Dockerは、簡単に言えば、コンテナーを開発、出荷、実行するためのオープンソースプラットフォームです。 Dockerを使用すると、開発者はアプリケーションコードとその依存関係を分離してコンテナーにパッケージ化し、Dockerエンジンが実行されている場所にこれらのコンテナーをデプロイできます。 これは、ローカル環境、クラウド、またはその間のあらゆるものにある可能性があります。

これらのコンテナーで実行できるアプリケーションは、単純な[マイクロサービス](https://www.metricfire.com/blog/microapps-vs-microservices/)から、アプリケーションの独立した部分、アプリケーション全体にまで及ぶ可能性があります。その可能性は文字通り無限です。

ただし、すべてのソフトウェアアプリケーションと同様に、コンテナ内で実行されているアプリケーションも監視する必要があります。 [ソフトウェアアプリケーションの監視](https://www.metricfire.com/blog/using-grafana-with-elasticsearch-tutorial/)は、これらのアプリケーションを正常に保ち、適切なリソースの最適化を確保し、全体的なパフォーマンスを向上させるために不可欠です。 これは、アプリケーションのパフォーマンスの良し悪しを示す[メトリックのコレクション](https://www.metricfire.com/blog/top-10-cadvisor-metrics-for-prometheus/)、または任意の時点でアプリケーションで発生しているすべての詳細を提供するアプリケーションログを通じて実行できます。

これは、従来のソフトウェアアプリケーションではかなり簡単ですが、コンテナに関連する余分な抽象化により、コンテナ化されたアプリケーションを監視することはより困難であると思われるかもしれません。

ただし、Dockerコンテナーの監視に関しては、この仮定は絶対に当てはまりません。 Dockerは、Docker Stats apiを使用するか、実行中のコンテナーに監視エージェントをインストールできるようにすることで、すぐに使用できるさまざまな監視オプションを提供しています。これらはすべて、最小限の労力で監視機能を提供します。 また、Dockerの絶大な人気により、ほとんどの主要な監視およびアラートソフトウェアとの統合作業が促進されています。

今日、Prometheus、cAdvisor、ScoutAPM、Datadog、Sysdig、MetricFireなどの主要な監視システムはすべてDockerとシームレスに統合され、Dockerコンテナーの監視が簡単になります。 そのため、前述の監視システムのいくつかの最良のものをマネージドサービスとして、単一のクラウドベースのアプリケーションに組み合わせて、監視機能をまったく新しい高みに引き上げます。

これらすべてのオプションは、別の問題、選択を引き起こします。 Dockerモニタリングのユースケースに最適なものをどのように選択しますか？ この記事は、DockerMonitoringの世界を紹介することを目的としています。 選択した問題に答えるには、[Docker監視ツール](https://www.metricfire.com/blog/docker-monitoring-tools/)の記事をご覧ください。

#まとめ
適切なツールを選択すれば、Dockerコンテナの監視は簡単になります。 [MetricFire](https://www.metricfire.com/japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=What%20is%20Docker%20Monitoring%3F)は[Dockerとの簡単な統合](https://www.metricfire.com/blog/top-10-cadvisor-metrics-for-prometheus/)を提供するため、Dockerコンテナーを管理できます。 Dockerの監視の詳細については、MetricFireチームの[デモに参加](https://www.metricfire.com/demo-japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=What%20is%20Docker%20Monitoring%3F)してください。Docker監視の設定を支援します。