Linux 検出ツールの使用

Migrate for Anthos and GKE には、Linux VM ワークロードで実行できるセルフサービス ツールが用意されています。このツールを使用すると、コンテナに移行するワークロードの適合性を判定できます。

このツールは、VM の分析結果を説明するレポートを出力します。このレポートには、移行前に解決する必要のある問題と、次のいずれかの全体的な適合性評価が記載されています。

  • 非常に適した用途。
  • 適合性良好、ただし手動作業が必要。
  • 移行前に軽微な作業が必要。
  • 移行前に中程度の作業が必要。
  • 移行前に大量の作業が必要。
  • 適合していない。

ツールによる VM の全体的な適合性評価の決定方法については、適合性評価の算出をご覧ください。

ツールの仕組み

Linux 検出ツールは、次の 2 つのフェーズで動作します。

  • 収集フェーズ - m4a-fit-collect.sh という名前の bash スクリプトによって移行対象の Linux VM に関する情報が収集され、収集されたデータが tar ファイルに書き込まれます。後日移行する際に使用するために、データのコピーが VM ファイル システムに残ります。

  • 分析フェーズ - m4a-fit-analysis 収集フェーズの出力結果を解析し、一連のルールを適用します。適合性と結果に関する詳細なレポートを生成します。レポートは HTML ファイルまたは JSON ファイルとして表示できます。

データ収集ツールと分析ツールは同じ VM 上で実行できます。ただし、複数の VM がある場合は、それぞれの VM で個別に収集ツールを実行し、各 VM で生成された tar ファイルを 1 台のマシンにアップロードして分析を行うこともできます。m4a-fit-analysis ツールを使用すると、複数の tar ファイルを同時に処理し、各 VM の評価と分析結果を出力できます。

ワークロード移行との統合

収集フェーズで Linux 検出ツールによって取得されたソース VM に関するデータは、Migrate for Anthos and GKE による VM の移行計画の生成に使用できます。

たとえば、Linux 検出ツールによって収集されたデータは、移行後の VM によって公開される Service エンドポイントの情報を検出するために使用されます。したがって、Service エンドポイントの情報を自動的に入力する場合は、ソース VM でツールを実行する必要があります。詳細については、Service エンドポイントのカスタマイズをご覧ください。

適合性評価レポートの表示

m4a-fit-analysis ツールで詳細なレポート出力を表示するには、次のいずれかを行います。

  • ブラウザで HTML ファイルを開く
  • JSON ファイルを Google Cloud Console にアップロードする

HTML 出力の表示

ブラウザで HTML ファイルを開いて、レポートを表示します。次の画像は、my-vm という VM 評価ツールの HTML 出力を示しています。

LDT の HTML 出力。

ここで

  • この表では、分析対象の VM ごとに 1 行が割り当てられ、VM の詳細情報へのリンクが表示されています。

  • [Data collection date]、[Identified OS]、[M4A fit score]、[Workload type] の各列には、VM と分析の結果についての概要情報が表示されています。

  • [Additional info] 列には、リスニング ポート、マウント ポイント、NFS マウント ポイントなど、各 VM の詳細情報へのリンクが表示されています。

  • 各ルールの列には、ルールの ID と説明(A1-STO-1: サポートされていないネットワーク マウントなど)と、VM に対するルールの適用結果が表示されます。値の意味:

    • Not Detected は、移行に伴う問題が検出されなかったことを意味します。
    • Detected は、VM の移行に伴う問題が検出されたことを意味します。ルール出力の詳細を表示するには、[Detected] をクリックします。

JSON ファイルを Google Cloud Console にアップロードする

Google Cloud Console でレポートを表示するには:

  1. Google Cloud Console で [Migrate for Anthos and GKE] ページを開きます。

    [コンテナへの移行] ページに移動

  2. [適合性評価] タブを選択します。

  3. [参照] を選択し、アップロードする JSON ファイルを選択します。

  4. [開く] を選択してレポートを表示します。

    レポートには次の情報が表示されます。

    • [作成者]、[評価日]、[適合性評価ツール] の各フィールドには、レポートに関する概要情報が表示されます。
    • [移行の工程の詳細] には次の情報が表示されます。
      • 分析された VM の合計数。
      • 移行またはコンテナ化の準備が完了している VM の数。
      • 移行の準備ができていない VM の数。
    • 分析した VM ごとに 1 行(VM の適合性評価を含む)。
  5. [評価した VM] テーブルで、VM の名前を選択して、VM の詳細(リスニング ポート、マウント ポイント、NFS マウント ポイントなど)を表示します。

    選択した VM について、各ルールの説明とルール ID が表示されます。また、VM にルールを適用した結果も表示されます。

    LDT の Console 出力。

前提条件

Linux 検出ツールには次の前提条件があります。

  • 評価対象のターゲット VM が実行され、アプリケーション、プロセス、オープンポートが検出可能であること。

  • 分析ツール m4a-fit-analysis, を使用するマシンで Linux カーネル バージョン 2.6.23 以降が実行されていること。

  • 収集スクリプトを sudo として実行する必要があります。

ツールのインストールと実行

収集スクリプトと分析ツールをダウンロードする必要があります。次のいずれかを行います。

  • 両方のツールを 1 つの VM にダウンロードする。
  • 複数の VM がある場合は、収集スクリプトを各ワークロード VM にダウンロードしてから、収集したデータを 1 台のマシンにアップロードして、分析ツールを実行する。

VM を評価するには:

  1. VM にログインします。

  2. 収集スクリプトと分析ツールのディレクトリを作成します。

    mkdir m4a
    cd m4a
  3. 収集スクリプトを VM にダウンロードして実行可能にします。

    wget https://anthos-migrate-release.storage.googleapis.com/v1.9.0/linux/amd64/m4a-fit-collect.sh
    chmod +x m4a-fit-collect.sh
  4. 分析ツールを VM にダウンロードして実行可能にします。

    wget https://anthos-migrate-release.storage.googleapis.com/v1.9.0/linux/amd64/m4a-fit-analysis
    chmod +x m4a-fit-analysis
  5. VM で収集スクリプトを実行します。

    sudo ./m4a-fit-collect.sh

    このスクリプトは、m4a-collect-machinename-timestamp.tar という名前の tar ファイルを現在のディレクトリと /var/m4a/m4a-collect-timestamp.tar に出力します。

    タイムスタンプの形式は YYYY-MM-DD-hh-mm です。tar ファイル形式の詳細については、収集スクリプトの処理をご覧ください。

    : 1 台のマシンに分析ツールをインストールした場合は、そのマシンに tar ファイルをアップロードします。

  6. tar ファイルに分析ツールを実行します。

    ./m4a-fit-analysis m4a-collect-machinename-timestamp.tar

    このツールは、現在のディレクトリに次の 2 つのファイルを出力します。

    • analysis-report-timestamp.html という名前の HTML ファイル。タイムスタンプの形式は YYYY-MM-DD-hh-mm です。このファイルをブラウザで開いてレポートを確認します。

    • analysis-report-timestamp.json という名前の JSON ファイル。JSON 形式の出力が含まれています。このファイルは Google Cloud Console への入力として使用できます。

    出力ファイルには、分析に関する情報(適合性評価など)が含まれています。詳しくは、レポートのファイル形式をご覧ください。

    複数の tar ファイルに対して分析ツールを実行するには、次のコマンドを使用します。

    $ ./m4a-fit-analysis tarFile1 tarFile2 tarFile3 ...

    このツールは、各 tar 入力ファイルについて 1 行を出力ファイルに出力します。レポートでは、各 VM をホスト名で識別できます。これは、VM で hostname コマンドを実行して戻された値です。

    ツールの出力を制御するには、--verbosity オプションを使用します。panicfatalerror(デフォルト)、warninginfodebugtrace を使用できます。

  7. レポートを表示するには、ブラウザで analysis-report-timestamp.html を開きます。ファイル形式の詳細については、分析ツールの処理をご覧ください。

収集スクリプトの処理

収集スクリプトは、一連の Linux コマンドを実行して移行元の VM に関する情報を収集します。また、VM 上の複数のファイルからも情報を収集します。

以降のセクションでは、スクリプトの処理について説明します。また、スクリプトをテキスト エディタで開くと、処理の詳細を確認できます。

スクリプト コマンド

このスクリプトは、次の Linux コマンドを実行します。

コマンド 説明
netstat -tlnp アクティブなリスニング ポートの一覧を取得する
ps -o pid,user,%mem,comm,args -e 実行中のユーザー プロセスの一覧を取得する
dpkg -l インストール済みパッケージの一覧を取得する(debian ベース)
rpm -qa インストール済みパッケージの一覧を取得する(rpm ベース)
sestatus SELinux のステータスを取得する
lsmod 読み込まれているカーネル モジュールを取得する
systemctl 実行中のサービスの一覧を取得する(SystemD baseD)
service --status-all 実行中のサービスの一覧を取得する(Init.d /Upstart ベース)
lsof /dev / ファイルとハードウェア デバイスに対するオープン ハンドルの一覧を取得する
docker ps 実行中の Docker コンテナの一覧を取得する
ip addr NIC に割り当てられた IP アドレスの一覧を取得する
ifconfig NIC 構成ファイルと割り当て済みの IP を表示する
blkid ブロック デバイス属性の一覧を取得する
lsblk --json -p --output NAME,PARTFLAGS,PARTTYPE,UUID,LABEL,FSTYPE" ブロック デバイスの一覧を取得する

収集されるファイル

このスクリプトが生成した tar ファイルには次のファイルがコピーされています。

パス 説明
/etc/fstab 起動時にマウントされるマウントのリスト
/etc/hosts

/etc/resolv.conf

/etc/hostname

/etc/HOSTNAME

/proc/sys/kernel/hostname

ホストのエイリアスと DNS データ
/etc/issue

/etc/*-release

Linux ディストリビューションの名前
/etc/network/interfaces

/etc/dhcp/dhclient-up-hooks

/etc/NetworkManager/conf.d/*

/etc/systemd/resolved.conf

/etc/sysconfig/network-scripts/*

/etc/sysconfig/network/*

構成済みのインターフェース
/proc/cpuinfo CPU 情報
/proc/meminfo VM の現在のメモリ使用量と合計量
/proc/self/mounts 現在マウントされているデバイス
/etc/exports NFS エクスポートのリスト
/opt/IBM/WebSphere/AppServer/properties/version/installed.xml WebSphere のバージョン(デフォルトでインストールされている場合)
/opt/IBM/WebSphere/AppServer/properties/version/WAS.product WebSphere 情報(デフォルトでインストールされている場合)
/sys/class/net/* NIC 情報

調査されるディレクトリ

スクリプトは、次のディレクトリを 2 つ下のレベルまで検索し、ユーティリティとソフトウェアがインストールされているディレクトリを特定します。

  • /opt/
  • /usr/share/
  • /etc/
  • /usr/sbin/
  • /usr/local/bin/

tar ファイル形式の収集

m4a-fit-collect.sh スクリプトは、m4a-collect-machinename-timestamp.tar という名前の tar ファイルを現在のディレクトリと /var/m4a/m4a-collect-timestamp.tar に出力します。

また、次のコマンドを使用して tar ファイルを展開することもできます(必須ではありません)。

tar xvf m4a-collect-machinename-timestamp.tar

tar ファイルの形式は次のとおりです。

collect.log # Log output of the script
files # Directory containing files with their full path from root. For example:
   |- etc/fstab
   |- etc/hostname
   |- etc/network/interfaces
   |- ...
commands # Output of commands run by the script:
   |- dpkg
   |- netstat
   |- ps
   |- ...
found_paths # Text file with the list of installation directories
machinename # Text file with machine name
ostype # Text file with operating system type (Linux)
timestamp # Text file with collection timestamp
version # Text file with version number of the script

分析ツールの処理

分析ツールは、VM から tar ファイルの内容を調べ、一連のルールを適用し、適合性評価の結果と分析結果を含む次のレポート ファイルを出力します。

  • analysis-report-timestamp.html という名前の HTML ファイルを現在のディレクトリに出力します。タイムスタンプの形式は YYYY-MM-DD-hh-mm です。

  • analysis-report-timestamp.json という名前の JSON ファイル。JSON 形式の出力が含まれています。JSON ファイルは、Google Cloud Console への入力として使用できます。

適合性評価の計算

ツールによって検出されたルール違反は、最終的な適合性評価に影響します。各ルールには、重大度が事前に定義されています。たとえば、ルール A1-STO-3: SELinux enforced により、VM で SELinux が有効になっているかどうか確認します。このルールの重大度は「移行前に中程度の操作が必要」であるため、ツールの最終的な適合性評価は「移行前に中程度作業が必要」となります。

複数のルールの違反が検出された場合、最も重大度が高いルールのみが最終的な適合性評価に適用されます。たとえば、次の 2 つのルール違反が検出されたとします。

  • 重大度が「適合していない」に設定されている A1-STO-2 ルールで、互換性のないファイル システムが検出され、

  • 重大度が「移行の前に中程度の操作が必要」のルールで、SELinux の有効化が検出されました。

このツールは 2 つの中で重大度が大きいほうのルールの適合性評価のみを返すため、「適合していない」という結果が返されます。

レポートの内容

レポートには、各 VM について次の情報が含まれます。

フィールド 説明
VM name VM の名前。
Data collection date 分析のタイムスタンプ。
Identified OS オペレーティング システム。常に Linux です。
Fit assessment 適合性評価。この評価の解釈に関する詳細をご覧ください。
Workload type

検出された場合、IBM WebSphere が表示されます。

Additional info

VM に関する情報の要約。以下のものが含まれます。

  • 検出された VM のリスニング ポート。
  • 検出された VM のディスク マウント。
  • VM の NFS マウント ポイント。

このレポートには、各ルールを VM に適用した結果も含まれます。

ルール ID 説明 重大度
A1-STO-1 サポートされていないネットワーク マウント。/etc/fstab または /proc/self/mounts にネットワーク マウントがある場合は、CSI ボリュームを移行計画に手動で追加する必要があります。 適した用途 デプロイ YAML に NFS / CIFS ボリュームをアタッチする方法については、外部ボリュームのマウントをご覧ください。
A1-STO-2 互換性のないファイル システム。 適合していない 互換性のないファイル システムでワークロードを移行することはできません。
A1-STO-3 VM に SELinux が適用されています。SELinux はネストされたコンテナで機能しません。移行前に無効にすることをおすすめします。 中程度の操作が必要 移行前に SELinux を無効にするか、apparmor プロファイルを手動で適用します。
A1-STO-4-5

NFS 共有がエクスポートされています。NFS エクスポート ファイルが検出されました。NFS サーバーのカーネル モジュールが読み込まれています。

次の 2 つのルールが適用され、それぞれが異なる重大度を返しています。

  • A1-STO-4: NFS サーバーの検出: 中程度の作業が必要
  • A1-STO-5: NFS サーバーが検出され、ワークロード タイプがウェブサーバーである: 軽微な作業が必要
説明を参照 NFS サーバーを Cloud Filestore に移行します。
A1-NET-1-3

0.0.0.0 以外の IP アドレスでリスナーが見つかりました。特定のネットワーク インターフェースへのバインディングが検出されました。特定の NIC でリッスンしているポートがある場合(0.0.0.0、* でないか、ループバック)は、通常、マルチ NIC の設定があることを意味します。

次の 3 つのルールが適用され、それぞれが異なる重大度を返しています。

  • A1-NET-1: 1 個の IP を検出: 適合性良好
  • A1-NET-2: 2 つ以上の IP を検出: 軽微な作業が必要
  • A1-NET-3: 2 つ以上の IP が同じポートでリッスンしている: 中程度の作業が必要
説明を参照 Migrate for Anthos and GKE は NIC を 1 つだけサポートしているため、どの NIC でもリッスンするように VM を更新してください。
A1-NET-4

複数の NIC が使用されています。このツールは、シンボリック リンクに対応する仮想デバイスと、/sys/class/net/DEVICE/operstate に基づいて停止しているデバイスを無視します。

レポートの詳細には、検出されたすべての NIC が含まれます。

中規模の作業が必要

ソース VM 上に複数の NIC が存在すると、VM が複数の IP アドレスを使用することになります。ただし、GKE と Anthos は複数の IP アドレスをサポートしていません。このため、複数の NIC に依存するソース VM は、移行後に機能しない可能性があります。

A1-APP-2

コンテナ内で動作している DB。移行に適していない次のデータベース アプリケーションを確認します。

  • Mysqld
  • Postgres
  • MongoDB
  • Redis-server
  • Cassandra
  • Elasticsearch
軽微な作業が必要 Cloud SQL への移行を検討してください。
A1-APP-3 VM 上で動作している Docker。コンテナ内での Docker のネストはサポートされていません。 dockerd が動作している場合: 適合性良好 Migrate for Compute Engine を使用するか、GKE / Anthos でコンテナを直接実行することを検討してください。
A1-NET-5 静的ホストの使用。/etc/hosts で静的ホスト定義が検出されました。 適した用途 静的ホストの変更については、HostAlias を使用した Pod /etc/hosts へのエントリの追加をご覧ください。
A1-STO-7 lsof でオープン ブロック デバイスが検出されました。 適合していない Migrate for Anthos and GKE と互換性がありません。

バージョン履歴

Migrate for Anthos and GKE 1.8.0 用ツールの変更点

Migrate for Anthos and GKE 1.8.0 リリースでは、ツールに新しい機能が追加され、既存の機能の変更が行われています。次の表で、これらの変更について説明します。

変更 説明
ルール A1-STO-2 の評価を変更しました 一時的なファイルシステムが検出されたときに、低い適合性スコアを割り当てなくなりました。

Migrate for Anthos and GKE 1.7.5 用ツールの変更点

Migrate for Anthos and GKE 1.7.5 リリースでは、ツールに新しい機能が追加され、既存の機能の変更が行われています。次の表で、これらの変更について説明します。

変更 説明
Google Cloud Console で適合性評価レポートを確認できるようになりました Google Cloud Console に JSON ファイルをアップロードして表示します。
列名の変更 生成されたレポートの列名が変更されました。
複数の NIC ルールを追加 ツールが複数の NIC をテストするようになりました。検出された場合、ツールは「中規模の作業が必要」の適性評価を適用します。
ルール A1-NET-3 の適合性評価を変更 同じポートをリッスンする複数の IP が検出された場合、最適な評価は「中程度の作業が必要」になります。

Migrate for Anthos and GKE 1.7 用ツールの変更点

Migrate for Anthos and GKE 1.7 リリースでは、ツールに新しい機能が追加され、既存の機能の変更が行われています。次の表で、これらの変更について説明します。

変更 説明
適合性スコアを削除しました。 以前のリリースでは、0(適合なし)から 10(最適)の範囲で適合性スコアが提示されました。前述のように、スコアは評価値に代わりました。
ルールのウェイトはすべて削除されました。 ルールのウェイトはすべて削除され、評価結果に代わりました。
CSV ファイル レポート形式が HTML ファイルと JSON ファイルに変更されました。 HTML ファイルを使用すると、ブラウザでレポートを表示できます。また、データ可視化ツールへの入力として JSON ファイルを使用できます。詳しくは、HTML レポート ファイル形式をご覧ください。
m4a-fit-collect.sh によって生成される tar ファイルの場所 スクリプトは、前のリリースと同様に tar ファイルを現在のディレクトリに書き込みますが、さらに /var/m4a/m4a-collect-timestamp.tar にも書き込むようになりました。
m4a-fit-collect.sh によって生成される tar ファイルにバージョン ファイルを追加 このファイルには、スクリプトのバージョン情報が含まれています。
検出されたワークロード タイプ用の列が追加されました。 検出された場合、IBM WebSphere が表示されます。
レポートで、各 VM に概要フィールドが追加されました。 このフィールドには、リスニング ポート、マウント ポイント、NFS マウント ポイントなどの情報が表示されます。

次のステップ