AWSの自動スケーリングを設定しています。スケーリングポリシーの設定中にこの問題に遭遇しました。
メモリをパラメータとして使用したかったので、以下のリンクからメモリ監視用のCLoudwatchのスクリプトをインストールしました。
http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/mon-scripts.html
単純なインスタンスで使用すると、問題なく動作します。しかし、上記のドキュメントで提案されているように、以下のコマンドで自動保存するためにそれを行うと、エラーが発生します
コマンド
./mon-put-instance-data.pl --mem-util --mem-used --mem-avail --auto-scaling = only
エラー:
警告:Auto Scalingメトリックは今回報告されません。
インターネットでこのエラーを確認したところ、/ var/tmp/aws-monのinstance-idのエラーの可能性があると言った人はほとんどいませんでしたが、問題ではありません。
どんな助けでもありがたいです。
さて、私はこのシナリオで可能な限り最も愚かなことをしました、私はこれを答えとして投稿していますので、他の人を助けることができます。自動スケーリンググループのメンバーではないインスタンスでテストしていました。
ここ は同じ質問のAWSサポートへのリンクです。
ここ は、Perlスクリプトのソースコードへのリンクです。ここで公開できるかどうかわからないので、Zipファイルを開いてmon-put-instance-data.pl
に移動し、reported
を検索します。それからifsまで、verify
も自動スケーリンググループ名も指定しなかった場合、エラーが発生するようです。最初はテスト用なので、勝者がいます。自動スケーリンググループ名パラメーターを指定してください...
まあ、そのパラメーターはありませんが、よく見ると、findからのreported
の前のいくつかの行にクエリがあることがわかります。だから...あなたのインスタンスはアクセスできません。
CloudWatchClient::get_auto_scaling_group
でグーグルすると、これが result になります。そこから、インスタンスにCloudWatchにデータを発行する権限を付与する必要があることを確認できます...
他に質問がある場合は、質問してください。私はこの回答を編集するので、私だけではなく、多かれ少なかれ完全なものになります。
インスタンスが自動スケーリンググループに属している場合の実用的なソリューション。
rm -rf /var/tmp/aws-mon/
次に実行します
./mon-put-instance-data.pl --mem-util --auto-scaling=only
監視スクリプトを実行すると、instance_idが/var/tmp/aws-mon
の下にキャッシュされます。
自動スケーリンググループ名を取得するときに使用するフィルターの1つがインスタンスIDです。 TTLは6時間なので、AMIにこのキャッシュがある場合、クエリはインスタンスの作成後最大6時間、誤ったインスタンスIDを使用するため、取得に失敗します。自動スケーリンググループ名。
REF: https://forums.aws.Amazon.com/thread.jspa?threadID=11778
私は同じ課題に直面していましたが、この質問に対する正しい答えは、次の場所に記載されている前提条件を満たしていない可能性があることです。
https://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/mon-scripts.html#mon-scripts- Perl_prereq
このコンパイルエラーは、実際には、Perlスクリプトを実行するために必要ないくつかのパッケージが欠落していることを示しています。
EC2 Linuxインスタンスを使用してこれらのスクリプトを実行している場合は、次のコマンドの実行に失敗している可能性があります。
Sudo yum install -y Perl-Switch Perl-DateTime Perl-Sys-Syslog Perl-LWP-Protocol-https Perl-Digest-SHA.x86_64
このコマンドを実行すると、スクリプトはエラーなしで問題なく実行されるはずです。
お役に立てば幸いです。 :)