タグ付けされた質問 Amazon CloudWatch
コンテンツの言語: 日本語
並べ替え 最新
以下に記載されている質問と回答を閲覧したり、フィルタリングして並べ替えて結果を絞り込んだりできます。
const Result = await ssm.sendCommand(~).promise();
上記コマンドを実行するとResultにCommandId,DocumentName,InstanceIds,Status: 'Pending',StatusDetails: 'Pending'等が表示されます。
この後Statusを監視して終了次第情報を受け取りたいのですが、(sendCommandResult.status)等でログを見てみても「INFO undefined」と表示されてしまいます。
どのようにしてStatusを受け取ればよいでしょうか、どなたかご助力をお願いします
処理の後続をwhileで回してfulfilledが出たら処理を終わらせることを想定しています
pending(保留): まだ非同期処理は終わっていない
fulfilled(成功): 非同期処理が正常に終了した
rejected(拒否): 非同期処理が失敗した
EC2インスタンス(Windows)にあるbatファイルを、Lambdaで、Systems Manager Run Commandを利用して実行させています。
CloudWatchログにバッチの戻り値(EXIT値)である「9」を出力させたいのですが、現状では、「START RequestId:」と、「END RequestId:」 しか出力されません。
どうコードを修正していけば、状況が改善されますでしょうか。
ご支援をいただけますと幸いに存じます、何卒宜しくお願い致します。
以下コード全文です。
```
exit /b 9
```
```
'use strict';
const AWS = require('aws-sdk')
const ssm = new (require('aws-sdk/clients/ssm'))();
module.exports.handler = async event => {
try {
let params = {
DocumentName: 'AWS-RunPowerShellScript',
InstanceIds: ['対象のインスタンスID'],
Parameters: {
commands: ['chcp 65001; Start-Process -wait test_win.bat'],
workingDirectory:['C:\\Users\\administrator\\temp'],
},
// タイムアウト設定
TimeoutSeconds: 3600 // 1 hour
}
const sendCommandResult = await ssm.sendCommand(params).promise();
} catch(e){
console.log(e);
}
};
```
以上
EC2インスタンス(Linux)にあるshファイルを、Lambdaから EC2 Run Command で、実行させています。
現在実装しているコードは下記になります。
現状非同期呼出が行われており、shファイルの処理結果に関わらず、ClowdWatchに、正常終了のログが出力されています。
この処理を同期呼出に変更して、shファイルの処理結果を返してもらうコードにしたいです。
下記ドキュメントを参考しているのですが、非同期処理でしか現状実現出来ておりません。
どうコードを修正していけば、状況が改善されますでしょうか。 ご協力をお願いします。
同期呼び出し(AWS公式ドキュメント)
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/invocation-sync.html
そのLambdaの実行…同期?非同期?(Qiita)
https://qiita.com/is_ryo/items/009220083e179272cbda
```
'use strict';
const AWS = require('aws-sdk')
const ssm = new (require('aws-sdk/clients/ssm'))();
module.exports.handler = async event => {
try {
let params = {
DocumentName: 'AWS-RunShellScript',
InstanceIds: ['対象のインスタンスID'],
Parameters: {
commands: ['chcp 65001; sh test_Linux.sh'],
workingDirectory:['/home/user/batch_execution']
},
TimeoutSeconds: 3600 // 1 hour
}
const sendCommandResult = await ssm.sendCommand(params).promise();
} catch(e){
console.log(e);
}
};
```
特定のCloudWatchアラームがアラーム状態になったことを契機に発火するLambdaを実装したいと考えています。
下記の通り、EventBridgeのルールのイベントパターンを入力し、対象のアラームをアラーム状態に遷移させたのですが、ターゲットに設定したLambdaが実行しませんでした。
恐らく、"resouces" の指定の仕方に問題があると考えているのですが、参考情報が見つからず苦慮しています。
修正方法についてご回答いただけますと幸いです。
イベントパターン
```
{
"source": ["aws.cloudwatch"],
"detail-type": ["CloudWatch Alarm State Change"],
"resources": ["arn:aws:cloudwatch:ap-northeast-1:<AWSアカウントID>:alarm:<アラーム名>"],
"detail": {
"state": {
"value": ["ALARM"]
}
}
}
```
以上、よろしくお願いいたします。
CloudWatchのロググループでメトリクスフィルタ―を作成するときに、メトリクス名前空間を新規作成するように設定しても名前空間が作成されません。
アラームの作成をしようとしてメトリクスの選択画面に行っても、カスタム名前空間の欄に新規作成したメトリクス名前空間が表示されません。
メトリクスフィルターを作成するときに名前空間新規作成の設定をするだけでは名前空間は作成されず、実際に名前空間が作成されるためには別の条件やトリガがあるのでしょうか。
お世話になります。
**【状況】**
EC2インスタンス(i-0808ac1ec16589137)にてウェブサービスを稼働していました(現在はサービスホストをほかのインスタンスへ切り替え済みです)。
ほかのアカウントにて3/15にHealth Checkを設定しました。このインスタンス以外にも別アカウントの2つのウェブサービスへ同様にHealth Checkを設定しました。
その後、このサービスに対するアラームが通知されるようになりました。ほかの2つのサービスについてのアラームはありません。
以下はアラームの時間帯に該当するApacheのアクセスログを確認して、ログが記録されていない期間をピックアップしました。
平常時は、Health Checkがまんべんなくアクセスしますので、間隔が空いても10秒程度です。それ以上空いている場合を抜き出しました。
ログ無記録期間(時刻はJSTです)
03/20 01:17:06~01:22:20(約5分)
03/22 01:21:55~01:25:10(約3分)
03/25 00:57:40~00:58:08(約30秒)、00:58:08~00:58:45(約30秒)
03/28 13:06:10~13:07:25(約1分)、13:07:25~13:09:49(約2分)
03/28 22:10:58~22:11:27(約30秒)、22:12:48~22:14:16(約1分)
04/02 00:55:16~00:59:17(約4分)
04/04 01:19:12~01:22:43(約3分)、01:22:50~01:25:29(約2分)
04/07 01:17:36~01:21:31(約4分)、01:21:31~01:22:01(約30秒)、01:22:02~01:27:33(約5分)
04/08 01:16:47~01:18:46(約2分)、01:18:51~01:20:01(約1分)、01:20:01~01:25:42(約6分)
04/09 01:17:06~01:24:20(約7分)、01:25:59~01:26:18(約20秒)、01:26:18~01:28:23(約2分)
04/10 01:13:25~01:17:19(約4分)、01:17:20~01:28:21(約11分)、01:28:21~01:29:05(約40秒)、01:29:05~01:30:32(約30秒)
04/11 01:18:22~01:24:36(約6分)、01:25:38~01:26:14(約30秒)
04/12 01:22:18~01:23:36(約1分)、01:24:16~01:25:02(約40秒)
本日まで13回発生し、そのうち8回は1:20ころに発生しています。
また、Health Checkだけでなく、ほかアカウントのEC2インスタンスから、wgetによるアクセスを毎分行なうようにし、状況を確認しています。wgetはリトライを繰り返し、上記のログ無記録期間後にまとめてアクセスが記録されるような挙動が見られます。
一度だけ、アラーム通知直後にブラウザからアクセスしたところ、ERR_CONNECTION_TIMED_OUTとなり、ウェブサービスに接続できないことを確認しました。
このほか、Cloud Watchの「ステータスチェックに失敗(インスタンス)」と「ステータスチェックに失敗(システム)」を監視しています。システムは失敗カウントされません。インスタンスは上記のログ無記録期間に失敗カウントされます。なお、失敗カウントの前後や中にサンプリングできない(プロットされない)期間があったり、失敗も記録されずにすべてがサンプリングできない現象があり、不思議に思っています。
ステータスチェックに失敗したインスタンスのトラブルシューティング
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html
の手順は確認しました。システムログには上記に該当する期間の記録がなく、トラブルシュートできません。
Apacheのエラーログには関連するような記録はありません。/var/log/messagesも同じです。
インスタンス内のログを見る限り、ウェブサービスがリクエスト受付を停止するようなことが起きているようには見えません。
**【質問】**
原因についてのアドバイスをいただけましたら幸いです。
また、トラブルシューティングのために、ほかにチェックすべき事柄があればご指摘ください。
どうぞよろしくお願いします。
Edited by: sakaguchi on Apr 13, 2017 11:14 PM