AWS Systems Manager の機能である Session Manager を使用して Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに接続しようとしました。しかし、“Plugin with name Standard_Stream not found” というエラーメッセージが表示されました。
簡単な説明
AWS Systems Manager Agent (SSM Agent) がセッションを確立するための必要なファイルを作成できない場合、次のエラーメッセージが表示されます。
"Your session has been terminated for the following reasons: Plugin with name Standard_Stream not found.Step name: Standard_Stream"
この問題は通常、インスタンスに十分なストレージ容量がない場合や、同時に開いているファイルが多すぎる場合に発生します。
問題の原因を特定するには、システムログで特定のエラーメッセージを確認してください。発生したエラーに応じて、次のトラブルシューティング手順を実行します。
解決策
"No space left on device" エラーのトラブルシューティング
SSM Agent がセッションを開始するために必要な一時データを作成するには、ルートパーティションに十分な容量が必要です。"No space left on device" というエラーメッセージが表示される場合は、ルートファイルシステムの空き容量を増やす必要があります。まず、ルートパーティションから未使用のファイルを削除します。それでも十分な容量がない場合は、Elastic Volumes を使用して Amazon Elastic Block Store (Amazon EBS) のボリュームを増やしてください。または、次のいずれかの方法を使用して、オペレーティングシステム (OS) レベルでルートファイルシステムを拡張します。
SSH または EC2 シリアルコンソールを使用してルートファイルシステムを拡張する
次の手順を実行します。
-
SSH または EC2 シリアルコンソールを使用してインスタンスに接続します。
注: EC2 シリアルコンソールを使用するには、EC2 シリアルコンソールへのアクセスを設定する必要があります。要件の詳細については、「EC2 シリアルコンソールの前提条件」を参照してください。
-
ルートパーティションの空き容量を確認するには、次のコマンドを実行します。
df -Th
出力例:
$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs tmpfs 1.6G 440K 1.6G 1% /run
/dev/nvme0n1p1 xfs 8.0G 2.0G 6.0G 25% /
tmpfs tmpfs 3.9G 0 3.9G 0% /tmp
/dev/nvme0n1p128 vfat 10M 1.3M 8.7M 13% /boot/efi
tmpfs tmpfs 782M 0 782M 0% /run/user/1000
-
ブロックデバイスとルートパーティションの詳細 (名前やファイルシステムタイプなど) を表示するには、次の lsblk コマンドを実行します。
lsblk -f
出力例:
$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
nvme0n1
├─nvme0n1p1 xfs / abcd123-abcd-1234-abcd-abcdef1234 /
└─nvme0n1p128
-
パーティションを拡張するには、次のコマンドを実行します。
sudo growpart /dev/nvme0n1 1
注: nvme0n1 をパーティション名に置き換えます。
-
パーティションが拡張されたことを確認するには、lsblk コマンドを再実行します。出力で、パーティションサイズがボリュームサイズと同じであることを確認します。
-
ファイルシステムを拡張するには、ファイルシステムのタイプに応じて以下のコマンドのいずれかを実行します。
ext4 ボリューム:
sudo resize2fs /dev/nvme0n1p1
注: nvme0n1p1 をパーティション名に置き換えます。
XFS ボリューム:
sudo xfs_growfs -d /
レスキューインスタンスを使用してルートファイルシステムを拡張する
SSH を使用して接続できない到達不能なインスタンスがある場合は、到達不能なインスタンスと同じアベイラビリティーゾーンにレスキューインスタンスを作成します。手順については、次のページの「"No space left on device" エラーのトラブルシューティング」を参照してください: 「リソースの過剰使用が原因で、EC2 Linux インスタンスがステータスチェックに合格できない場合のトラブルシューティング方法を教えてください」。ルートボリュームをレスキューインスタンスにマウントしたら、ファイルシステムを拡張します。
"Too many open files" エラーのトラブルシューティング
inotify リソースの最大数を超えると、SSM Agent はセッションの確立に必要な新しいファイル記述子を作成できません。この問題は、同時に開いているファイルまたはファイル記述子が多すぎる場合、またはカーネルの inotify サブシステムが最大インスタンス数や監視クォータを超えた場合に発生します。詳しい情報については、man7 ウェブサイトの「inotify」を参照してください。
この問題をトラブルシューティングするには、次の手順を実行します。
インスタンスを再起動、または停止して開始する
すべてのプロセスを再起動し、使用中の inotify リソースを解放するには、インスタンスを再起動または停止して開始します。
注: インスタンスを停止して開始する際、インスタンスのパブリック IP アドレスは変更されます。外部トラフィックをインスタンスにルーティングするには、パブリック IP アドレスではなく Elastic IP アドレスを使用することをおすすめします。Amazon Route 53 を使用している場合は、パブリック IP アドレスが変更された際、Route 53 の DNS レコードを更新する必要が生じる場合があります。
インスタンスを停止して開始する前に、次の手順を実行してください。
inotify クォータを増やす
再起動または停止して開始しても問題が解決しない場合は、次のステップを実行してインスタンスの inotify クォータを増やします。
- 以下のコマンドを実行して inotify クォータを確認します。
cat /proc/sys/fs/inotify/max_user_watches
cat /proc/sys/fs/inotify/max_user_instances
注: デフォルトでは、max_user_watches は 8192 で、max_user_instances は 128 です。
- 最大クォータ値を一時的に増やすには、次のコマンドを実行します。
sudo sysctl fs.inotify.max_user_watches=newwatchesquota
sudo sysctl fs.inotify.max_user_instances=newinstancesquota
注: newwatchesquota を max_user_watches の新しいクォータに、newinstancesquota を max_user_instances の新しいクォータに置き換えます。前述のコマンドは、次にインスタンスを再起動するまでクォータを更新します。まずは一時的な変更で更新された値をテストするのがベストプラクティスです。
- クォータの更新を永続的にするには、/etc/sysctl.conf ファイルに次のパラメータを追加します。
echo "fs.inotify.max_user_watches = newwatchesquota" >> /etc/sysctl.d/20-fs-inotify.conf
echo "fs.inotify.max_user_instances = newinstancesquota" >> /etc/sysctl.d/20-fs-inotify.conf
注: newwatchesquota を max_user_watches の新しいクォータに、newinstancesquota を max_user_instances の新しいクォータに置き換えます。
- インスタンスを再起動して変更を適用します。
注: インスタンスを変更した後にシステムパフォーマンスをモニタリングして、更新されたクォータがシステム要件と一致していることを確認するのがベストプラクティスです。
関連情報
Session Manager を使用して Amazon EC2 インスタンスに接続できない理由を知りたいです
EC2 インスタンスの EBS ボリュームを増やした後に Linux ファイルシステムを拡張する方法を教えてください