Linux 検出ツールの使用

Migrate for Anthos は、Linux 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 の評価と分析結果を出力できます。

HTML 出力

次の画像は、my-vm という VM 評価ツールの HTML 出力を示しています。

LDT の HTML 出力。

ここで

  • このテーブルには分析対象の VM ごとに 1 行が割り当てられ、それにはVM の詳細へのリンクが含まれています。

  • [データ収集日]、[確認済み OS]、[M4A 適合性スコア]、[ワークロードの種類] の各列には、VM と分析の結果についての概要情報が含まれています。

  • [追加情報] 列には、リスニング ポート、マウント ポイント、NFS マウント ポイントなどの情報を含む各 VM の詳細へのリンクが含まれます。

  • 各ルール列には、VM に対するルールの適用結果が表示されます。以下の値になります。

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

前提事項

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

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

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

  • collect スクリプトを 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.7.0/linux/amd64/m4a-fit-collect.sh
    chmod +x m4a-fit-collect.sh
  4. 分析ツールを VM にダウンロードして実行可能にします。

    wget https://anthos-migrate-release.storage.googleapis.com/v1.7.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 です。ブラウザでこのファイルを表示し、レポートを確認します。

    • JSON 形式の出力を含む analysis-report-timestamp.json という名前の JSON ファイル。このファイルは、データ可視化ツールへの入力として使用できます。

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

    複数の 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 情報(デフォルトでインストールされている場合)。

調査したディレクトリ

スクリプトは次のディレクトリを深さ 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 です。

  • JSON 形式の出力を含む analysis-report-timestamp.json という名前の JSON ファイル。JSON ファイルは、データ可視化ツールへの入力として使用できます。

適合性評価の計算

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

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

  • 重大度が「適合していない」という IFS01: incompatible filesystem ルールで、互換性のないファイル システムが検出され、

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

このツールは、2つのルールの重大度が大きい方に関連づけられた適合性評価のみを返します。したがって、「適合していない」が返されます。

HTML レポートのファイル形式

この HTML ファイルには、分析対象の VM を示す行と、VM にルールを適用した結果を示す一連の列が含まれています。各ルール列には次のいずれかが表示されます。

  • [Not Detected] は、ルールで移行に伴う問題が検出されなかったことを意味します。

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

レポートの列

csv ファイルには次の列が含まれます。

列名 説明 重大度
VM name VM の名前。
Data collection date 分析のタイムスタンプ。形式は次のとおりです。

YYYY-MM-DD-hh-mm

Identified OS オペレーティング システム。常に Linux です。
M4A fit assessment 適合性評価。 この評価の解釈に関する詳細をご覧ください。
Workload type

検出された場合は、IBM WebSphere を表示します。

Additional info

VM に関する情報の要約(以下を含む)。

  • VM で検出されたリスニング ポート。
  • 検出された VM のディスク マウント。
  • VM の NFS マウント ポイント。
NET01: Unsupported network mount /etc/fstab または /proc/self/mounts にネットワーク マウントがある場合は、CSI ボリュームを移行計画に手動で追加する必要があります。 適した用途 デプロイ YAML に NFS / CIFS ボリュームを接続する方法については、外部ボリュームのマウントをご覧ください。
IFS01: Incompatible filesystem 互換性のないファイル システム。 適合していない。 互換性のないファイル システムでワークロードを移行することはできません。
SEL01: SELinux enforced SELinux はネストされたコンテナで機能しません。移行前に無効にすることをおすすめします。 中程度の操作が必要。 移行前に SELinux を無効にするか、apparmor プロファイルを手動で適用します。
FSE*: NFS share exported

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

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

  • FSE01: NFS サーバーの検出: 中程度の操作が必要。
  • FSE02: NFS サーバーの検出、ワークロードの種類がウェブサーバー: 軽微な作業が必要。
説明をご覧ください。 NFS サーバーを Cloud Filestore に移行します。
LIP*: Found listener on non-0.0.0.0 IP address

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

3 つのルールが適用され、それぞれのルールで重大度が異なります。

  • LIP01: 1 個の IP が検出されました: 適合性良好。
  • LIP02: 2 つ以上の IP が検出されました: 軽微な作業が必要。
  • LIP03: 2 つ以上の IP が同じポートでリッスンしています。中程度の作業が必要。
説明をご覧ください。 Migrate for Anthos は NIC を 1 つだけサポートしているため、どの NIC でもリッスンするように VM を更新してください。
DBC01: Running DB inside container

移行に適していないデータベース アプリケーションを確認します。

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

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

Migrate for Anthos 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 マウント ポイントなどが含まれます。

次のステップ