目次
簡単な説明
Docker は優れたコンテナ管理テクノロジとして多くの企業に支持されており、Docker コンテナのデプロイ サービスやアプリケーションを本番環境で使用するシナリオが増えています。したがって、ますます大規模化する Docker サービス グループ アプリケーションに直面して、ターゲットを絞った効果的な監視をどのように実行するかが、企業の運用および保守担当者の業務要件となっています。
コンテナ情報の収集と監視には、docker 独自の docker stats コマンド、Scout、Data Dog、Prometheus などを含む多くのソリューションがあります。今回は、2 つの古典的なオープンソース コンテナ監視の組み合わせソリューション、Cadvisor + InfluxDB + Grafana と Cadvisor を共有します。 +プロメテウス +グラファナ
アドバイザー +InfluxDB+ Grafan
Cadvisor、InfluxDB、Grafana は、コンテナーの監視と視覚化によく使用される 3 つの人気のあるオープン ソース ソフトウェア ツールです。
Cadvisor は、コンテナーのリソース使用状況を監視するツールであり、CPU、メモリ、ディスク、ネットワークに関するパフォーマンス指標を提供できます。
特徴:
- ホスト レベルとコンテナ レベルの両方で監視データを表示できます。
- 変更履歴データを表示できます。
- Google のオープンソース製品。
- 完全な監視インジケーター。
- デプロイは簡単で、公式の Docker イメージがあります。
- デフォルトでは、1 分間のデータのみがローカルに保存され、InfluxDB などのサードパーティのストレージと統合できます。
InfluxDB は、大量の時系列データを保存および管理するために使用される時系列データベースです。リアルタイム監視、運用および保守監視、モノのインターネットなどで広く使用されています。
主な機能
- 時系列に基づいて、時間関連の相関関数 (最大値、最小値、合計など) をサポートします。
- 測定可能性: 大量のデータの計算をリアルタイムで実行できます。
- イベントベース: 任意のイベント データをサポートします。
特徴
- 非構造化 (スキーマレス): 任意の数の列を指定できます。
- サポートの拡張。
- 統計を容易にするために、最小、最大、合計、カウント、平均、中央値などの一連の関数をサポートします。
- ネイティブ HTTP サポート、組み込み HTTP API。
- 強力な SQL のような構文。
- 使いやすい独自の管理インターフェイスが付属しています。
Grafana は、さまざまなデータ ソースからデータを抽出して視覚化できるリアルタイム データ監視ダッシュボードを作成および共有するためのツールです。InfluxDB データベースに接続し、コンテナーの実行時にさまざまなパフォーマンス指標や監視データを視覚的に表示できます。
したがって、コンテナ環境では、コンテナのパフォーマンス メトリクスと監視データを取得、保存、表示するために、Cadvisor、InfluxDB、Grafana の組み合わせがよく使用されます。
主な特徴
- 柔軟で豊富なグラフィックオプション。
- 複数のスタイルを組み合わせることができます。
- 昼夜モードをサポートします。
- 複数のデータソースをサポートします。
監視コンポーネントのアーキテクチャ図
モニタリング コンポーネント アーキテクチャの展開計画:
- 後続のコンテナがこのネットワークに参加できるように、カスタム ネットワーク モニター (カスタム ネットワーク名) を作成します。
- Influxdb コンテナを作成し、データ ユーザーとデータベースを作成します。
- Cadvisor コンテナを作成します。
- Grafana コンテナを作成し、grafana を構成します。
展開する
docker-ceをインストールする
環境:
ファイアウォールをオフにする
外部ネットワークへの接続を確認する
[root@localhost ~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo
【画像ダウンロード】
[root@localhost ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
[CentOS システムには、yum-utils、device-mapper-persistent-data、lvm2 の 3 つのソフトウェア パッケージがインストールされます。これらのパッケージは、yum コマンドの機能を強化し、デバイス マッパーの永続データと論理ボリューム管理をサポートする便利なツールとライブラリを提供します。】
[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[ウェアハウスソースを追加]
[root@localhost ~]# yum -y install docker-ce 【docker-ceのインストール】
[root@localhost ~]# systemctl start docker [開始]
[root@localhost ~]# systemctl enable docker [起動時に自動起動を設定する]
[root@localhost ~]# docker version [バージョン情報の表示]
Alibaba Cloud イメージ アクセラレータ
[root@localhost ~]# cat << END > /etc/docker/daemon.json
{
"レジストリミラー":[ "https://nyakyfun.mirror.aliyuncs.com" ]
}
終わり
[指定したイメージ アクセラレータ (Alibaba Cloud Image Accelerator) のアドレスが Docker 設定
/etc/docker/daemon.json
ファイルに追加されます]
[root@localhost ~]# systemctl daemon-reload
[systemdデーモン設定ファイルをリロード]
[root@localhost ~]# systemctl restart docker
【再起動】
コンポーネントイメージをダウンロードする
[root@localhost ~]# docker pull tutum/influxdb
[root@localhost ~]# docker pull google/cadvisor
[root@localhost ~]# docker pull grafana/grafana
[root@localhost ~]# 個の docker イメージ
[ダウンロードしたDockerイメージのリストと関連情報を表示する]
カスタムネットワークを作成する
後ほど作成した Cadvisor+InfluxDB+Grafana の 3 つのコンテナを自己定義のネットワークに追加し、わかりやすく管理しやすくするために、新しいカスタム ネットワークを作成しました。
[root@localhost ~]# docker network create モニター
[root@localhost ~]# docker network ls
influxdbコンテナを作成する
コンテナを開始します。tutum/influxdb イメージの指定されたバージョンはありません。デフォルトで、influxdb の最新バージョンがプルされます。
[root@localhost ~]# docker run -d --name influxdb --net Monitor -p 8083:8083 -p 8086:8086 tutum/influxdb
パラメータの説明:
- -d: このコンテナをバックグラウンドで実行します。
- --name: コンテナを起動し、influxdb という名前を割り当てます。
- --net: コンテナを新しいネットワーク モニターに追加します。
- -p: マッピング ポート。ポート 8083 は infuxdb バックグラウンド制御ポート、ポート 8086 は infuxdb のデータ ポートです。
- tutum/influxdb: このコンテナを通じて実行され、デフォルトで Docker 公式ウェアハウスから取得されます。
influxdbコンテナが起動しているか確認する
[root@localhost ~]# docker ps -l
influxdb コンソールhttp://192.168.200.111:8083にアクセスしてください。
上の図からわかるように、クエリ テンプレート オプションにはよく使用される操作テンプレートが提供されており、これらのテンプレートに従って Influxdb を管理できます。次に、データベースとデータベース ユーザーを作成します。
すべての特権を持つユーザー「root」をパスワード「123456」で作成します
Cadvisor データベース cadvisor とユーザー root を作成します。ユーザーとデータベースは、後の Grafana 設定のために自由に定義できます。
データベース「アドバイザー」を作成する
アドバイザーコンテナーの作成
[root@localhost ~]# docker run -d --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume =/var/lib/docker/:/var/lib/docker:ro --net モニター --publish=8080:8080 --name=cadvisor google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086
パラメータの説明:
- -d: このコンテナをバックグラウンドで実行します。
- --name: 起動コンテナーに割り当てられた名前 Cadvisor。
- --net: コンテナを新しいネットワーク モニターに追加します。
- -p: ポート 8080 をマップします。
- --mout: ホストの写真ディレクトリをコンテナにバインドします。これらのディレクトリは、Cadvisor が収集する必要があるディレクトリ ファイルおよび監視コンテンツです。
- -storage_driver: Cadvisor のストレージ ドライバー、データベース ホスト、およびデータベース名を指定する必要があります。
- google/Cadvisor: Cadvisor イメージを介してコンテナーを実行します。デフォルトでは、イメージは Docker 公式ウェアハウスからプルされます。
Cadvisor コンテナを表示します。
[root@localhost ~]# docker ps -l
ポートhttp://192.168.200.111:808 0にアクセスしてテストします。このページに初めてアクセスする場合は少し時間がかかります。
上の写真からもわかるように、実は Cadvisor には基本的なグラフィック表示機能も備わっており、ここでは主にデータ収集に使用しています。
テスト画像を用意する
[root@localhost ~]# docker run -itd --name nginx -p 8000:80 nginx
[root@localhost ~]# docker イメージ nginx
[root@localhost ~]# docker ps -l
グラナファコンテナの作成
[root@localhost ~]# docker run -d --name grafana --net Monitor -p 3000:3000 grafana/grafana
docker run
: コンテナーを実行するために使用される Docker コマンド。-d
: コンテナーがバックグラウンド モード (デタッチ モード) で実行されていることを示します。--name grafana
: コンテナ名に「grafana」を指定します。--net monitor
: コンテナを「monitor」という名前のネットワークに接続します。-p 3000:3000
: ホストのポート 3000 をコンテナのポート 3000 にマップし、ホストがポート 3000 を介してコンテナ内の Grafana サービスにアクセスできるようにします。grafana/grafana
: 「grafana/grafana」イメージを使用してコンテナを作成します。
実行結果を表示します。
[root@localhost ~]# docker ps -l
http://192.168.200.111:3000ポート経由で granfana にアクセスします。デフォルトのアカウントパスワードは (admin/admin) です。初回ログイン時にパスワードを更新する必要があります。
下へスクロール
以下に示すように、新しいダッシュボードを作成します。