CloudWatch Contributor Insightsを触ってみる
CloudWatch Contributor Insightsを触ってみる機会がありましたので、 備忘がてらブログに書きます。
機能概要
ドキュメントにも記載はありますが、もう少し噛み砕くと、
cloudwatch logsの特定箇所を抽出し、
トップN分析的に可視化することができます。
例えば下記をトップN分析的にランキング表示することが可能です。
- VPCフローログで、送信元 IP アドレスおよび送信先 IP アドレスごとのバイト転送量を出力する
- アプリログで、特定のエラーコードごとの機能IDを出力する
- ECSのコンテナログで、アウトバウンド通信している先のIPをランキング的に出力する
下記で具体的に設定してみました。
表示項目の選定
CloudWatch Contributor Insightsでは、
logsからどの項目を抽出し表示するかを設定します。
(結果的には裏でJSONが作成されます)
そのJSONを作成することをルール作成と呼んでいます。
今回は下記を作成するとします。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/ContributorInsights-Rule-Examples.html
例:VPC フローログを元に、送信元 IP アドレスおよび送信先 IP アドレスごとのバイト転送 を出力する
※VPCフローログは既に作成済みの前提です。
では設定画面を見ていきます。
上記設定をし、JSONをみると下記のようになっています。
※分かりやすくするためにコメント入れていますので、
設定原本は上記のドキュメントを参照ください。
{ "Schema": { "Name": "CloudWatchLogRule", "Version": 1 }, "LogGroupNames": [ "/aws/containerinsights/sample-cluster-name/flowlogs" ], "LogFormat": "CLF", "Fields": { "4": "srcaddr",#フィールドとしてTSV的に4番目の項目をsrcaddrとして扱う "5": "dstaddr",#フィールドとしてTSV的に5番目の項目をdstaddrとして扱う "10": "bytes"#フィールドとしてTSV的に10番目の項目をbytesとして扱う }, "Contribution": { "Keys": [ "srcaddr",#軸として利用する "dstaddr"#軸として利用する ], "ValueOf": "bytes",#AggregateOnがSumの場合に利用可。計算対象のフィールドがあれば指定する "Filters": [] }, "AggregateOn": "Sum" }
設定値の意味
上記の設定ファイルの意味を書いていきます。
Contribution
Contributionではログから抽出したい項目を指定します。
今回は「送信元 IP アドレスおよび送信先 IP アドレスごとのバイト転送 」を
出力したいため、 関連要素となる下記を指定します。
送信元 IP アドレス:srcaddr
送信先 IP アドレス:dstaddr
バイト転送:bytes
上記の項目をどのように表示するかにより、
さらに下記に分けて記載します。
Contribution.Keys
分類するディメンションを指定します。
具体的には、最終アウトプットの下記を見ると分かりやすいと思います。
Contribution.Keysで指定された、項目ごとに分類がされています。
今回の例では、「送信元IP」、「送信先IP」(赤枠)ごとに分類がされています。
Contribution.ValueOf
数値合計を算出する際、単に回数の合計でなく、
計算結果を表示させたい場合等に利用します。
今回の例では「bytes」を指定しており、
フロー中に転送されたバイト数の合計を算出しています。
Fields
Fieldsは、各項目のエイリアスを定義します。
今回の例ではVPCフローログの位置情報は
下記のVPCフローログのフォーマットを参照することで把握できます。
「srcaddr」が4つ目の位置に存在することが分かります。
そのため「srcaddr」を設定画面で「4」と指定しています。
ここでエイリアスを指定することで
srcaddrをContribution中でも記載可能になります。
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide//flow-logs.html
またその他の項目についてもcloudwatch insightで
検出されるフィールドが選択可能です。
参考でcloudwatch insightで検出されるフィールドを表示します。
例えば上記から「dstPort」等を利用することも可能です。
結果表示
上記のように設定し、ある程度時間が経過すると、
VPCフローログの結果が下記のように表示されていました。
(結構待たないと表示されませんでした。15分ぐらい)
上記のようにログ中の特定項目を抜き出し、
トップN的に分析することが可能となります。
アプリログも分析できるようなので、例えば、エラーが出ている場合の
機能IDを早く知りたいとかのケースに役に立ちそうだと思いました。
他にも有益な用途で利用されている方が入れば教えて頂けますと幸いです。
AWS 踏み台なしで接続 SSMセッションマネージャ
1)VPCエンドポイントを作成
AWS Autoscaling設定時に気をつけたいこと・アンチパターン
AWSのAutoscalingという機能があります。
これは便利な機能なのですが、アプリケーションもそれに対応した作りになっていた方が相性が良いです。
逆を言えば、AWSのベストプラクティスに従わないと途端に運用が大変になってしまいます。
検討時に気づいて欲しい・・・そんな願いを元にAutoscalingを設定する際に気をつけたいことをまとめてみました。
アプリケーションの作り
ライセンス関連
オートスケーリングにて増えたEC2内のライセンスが有効かどうかです。
起動して、特別な作業をしないとライセンス関連でエラーが出るケースがあります。
エラーにならなくても大人なのでライセンスはちゃんとしましょう。
AMIの運用
AMIとかをプログラムで世代管理している場合、設定したAMIが無くなることがあるため注意です。
AMIが削除されている場合はスケールアウトしてくれません。
Autoscalingの動きを認識しているか
稀に勘違いしている人がいるのですが、
Autoscalingは決められたAMIを元にEC2をスケールアウトします。
起動中のEC2をコピーして増えてくれると勘違いしている人がいるので
そのほか、AMIの更新運用をどうするか等の問題もありますが、
とりあえず上記は障害に繋がるので、まずは上記観点を気をつけると良いと思います。
誰かの参考になれば幸いです
GCP Professional Cloud Network Engineer に合格しました。
先日会社から要請があり、GCPの資格試験を受けました。
Professional Cloud Network Engineer になんとか合格できましたのでブログ書こうと思います。
勉強したこと
試験範囲は下記です。
基本的には、ここに出てくる用語を潰すようにドキュメントを読み理解しました。
あと、模試も受けておいた方が良いです。
解説にリンクが貼ってくれてあるので、それを見て勉強しました。
cloud.google.com
参考にした合格体験記
この辺が参考になりました。
github.com
medium.com
yomon.hatenablog.com
具体的にどこが出たかは規約により言えませんが、
今の所英語でしか受けれないようで、
もし受けられる方は知ってる用語の英語版を眺めておくと良いと思いました。
AWS Transcribe(Speech to text)が日本語対応したので試してみた!あとGoogleとも比べてみた!
AWSのTranscribeが待望の日本語対応をしてくれました!
早速どんなものか試してみたいと思います。
また同じSpeech To Textのサービスを持っているGCPでの動作比較もしてみました。
今回は電話の会話記録の音声データでスピーカが2人存在するデータを利用しました
AWS Transcribe
Transcribeのstart_transcription_jobを実行します。
スピーカは2人のため下記のパラメータを利用しました。
'ShowSpeakerLabels': True, 'MaxSpeakerLabels': 2,
AWSの方は勝手に形態素解析まで実施してくれているのか、
文章がかなり途切れ途切れになりました。
{ "jobName": "samplejob2", "accountId": "xxxxxxxxxxxxx", "results": { "transcripts": [ { "transcript": "もしもし はい あ お 願い し ます お 電話 ありがとう ござい ます か 解析 会社 さん xxxxxxxxxxx モバイル です ホーム ページ を 見 た 言わ せ て いただき まし た ありがとう ござい ます エネルギー 使い 放題 プラン に つい て 聞き たい わ こちら の 契約 期間 の 縛り は あり ます か? こちら は 最低 六 カ月 三 六 カ月 契約 いただく 必要 が ござい ます もちろん か月 より も 短い 期間 工 解約 さ れ た 場合 違約 金 が 発生 し ます 現金 は いくら です か 一 万 円 です 分かり まし た あと パケット 使い 放題 だ と 思い ます が 速度 制限 は あり まし た 正確 な 数字 を 公開 でき ない の です が が ある 一定 の 利用 料 を 超え ます と 翌日 に 速度 制限 が かかる こと が 報告 さ れ て い ます あ 分かり まし た ありがとう ござい ます その 他 ご 不明 な 点 は ござい ます か 大丈夫 です ありがとう ござい ます で は ありがとう ござい まし た 担当 鈴木 が 対応 さ せ て 頂き まし た お 電話 ありがとう ござい まし た ありがとう ござい まし た うん はい" } ], "speaker_labels": { "speakers": 2, "segments": [ ・・・・・・・・・・・・・・・・・・・・・・・・ 長いので省略します。 下記のようにスピーカ毎・単語毎のItemも出力されていました。 ・・・・・・・・・・・・・・・・・・・・・・・・ "items": [ { "start_time": "4.94", "end_time": "5.55", "alternatives": [ { "confidence": "1.0", "content": "もしもし" } ], "type": "pronunciation" }, { "start_time": "6.34", "end_time": "6.65", "alternatives": [ { "confidence": "0.99", "content": "はい" } ], "type": "pronunciation" }, { "start_time": "6.66", "end_time": "7.58", "alternatives": [ { "confidence": "0.974", "content": "あ" } ], "type": "pronunciation" }, { "start_time": "7.59", "end_time": "7.65", "alternatives": [ { "confidence": "0.906", "content": "お" } ], "type": "pronunciation" }, { "start_time": "7.66", "end_time": "8.09", "alternatives": [ { "confidence": "1.0", "content": "願い" } ], "type": "pronunciation" }, { "start_time": "8.1", "end_time": "8.24", "alternatives": [ { "confidence": "1.0", "content": "し" } ], "type": "pronunciation" }, { "start_time": "8.25", "end_time": "8.55", "alternatives": [ { "confidence": "1.0", "content": "ます" } ], "type": "pronunciation" }, { "start_time": "10.44", "end_time": "10.51", "alternatives": [ { "confidence": "0.972", "content": "お" } ], "type": "pronunciation" },
GCP
続いてGCPです。
AWSの方で利用したのと同じ音声ファイルを利用し
Cloud Speech-to-Textを実行してみます。
{ "conversation": [ { "transcript": "はい", "confidence": 0.9321745038032532 }, { "transcript": "お電話ありがとうございます株式会社xxxxxxxxxxxxxモバイルです", "confidence": 0.9289773106575012 }, { "transcript": "ありがとうございます", "confidence": 0.9539141654968262 }, { "transcript": "ホームページを見ると言わせていただきました良い使い放題プランについてお聞きしたいですかこちらは契約期間の縛りはありますか", "confidence": 0.891223669052124 }, { "transcript": "こちらは最低6ヶ月間6ヶ月契約いただく必要がございます", "confidence": 0.9191603064537048 }, { "transcript": "もし6ヶ月よりも短い期間でご解約された場合違約金が発生してます", "confidence": 0.9336251616477966 }, { "transcript": "違約金はいくらですか", "confidence": 0.9120486974716187 }, { "transcript": "1万円です", "confidence": 0.9227500557899475 }, { "transcript": "わかりました本当ポケット着たい放題だと思いますが速度制限はありますか", "confidence": 0.9032462239265442 }, { "transcript": "正確な数値は公開できないのですが", "confidence": 0.9470984935760498 }, { "transcript": "日課である一定の量を超えますと翌日に速度制限がかかることが報告されています", "confidence": 0.9332273602485657 }, { "transcript": "分かりましたありがとうございます", "confidence": 0.9206825494766235 }, { "transcript": "その他ご不明な点はございますか", "confidence": 0.952523410320282 }, { "transcript": "大丈夫ですありがとうございます", "confidence": 0.932539701461792 }, { "transcript": "ではありがとうございました担当鈴木が対応させていただきましたお電話ありがとうございました", "confidence": 0.9320775866508484 }, { "transcript": "ペロ寝ました", "confidence": 0.7940347790718079 } ] }
ペロ寝ましたって何だって思うかもしれませんが、「ありがとうございました」を言っています。
それはさておきGCPの方の方が制度が高そうです。
その他2,3個の音声ファイルで試してみたのですが
私の印象ではまだGCPの方が精度が高いように感じます。
精度に関してはAWSもこれから上がっていくのかと期待しています。
APIの使い方自体はAWSの方がシンプルで使いやすい印象を受けました。
またアウトプットファイルがS3に格納されるのですが、
S3のファイルputイベントと、他のサービスを組合せるなど
面白そうな使い方ができそうです。
(GCPの場合は音声ファイルのサイズによりオプションを変える等の面倒な点があります)
AWS cloudtrailの「ログファイルの検証を有効化」の機能を試してみる
cloudtrailの「ログファイルの検証を有効化」の有効化にはするのですが、
機能詳細を確認することがありませんでした。
先日触ってみたので備忘で残したいと思います。
cloudtrailの赤枠部分のファイルを書き換えてみました。
Validate-logsを試してみる
上記ファイルを修正し、validateすると書換が発生したログファイル分かります。
aws cloudtrail validate-logs --trail-arn arn:aws:cloudtrail:ap-northeast-1:xxxxxxxxxx:trail/aws217-test --start-time 20190113T19:00:00Z Validating log files for trail arn:aws:cloudtrail:ap-northeast-1:xxxxxxxxxx:trail/awsxxx-test between 2019-01-13T19:00:00Z and 2019-01-15T03:45:33Z Log file s3://awsxxx-test-cloudfront-in-test6/test-prefix/AWSLogs/xxxxxxxxxx/CloudTrail/ap-northeast-1/2019/01/15/xxxxxxxxxxx_CloudTrail_ap-northeast-1_20190115T0110Z_eKpIcz4LwCJIlM6d.json.gz INVALID: invalid format Results requested for 2019-01-13T19:00:00Z to 2019-01-15T03:45:33Z Results found for 2019-01-13T19:56:11Z to 2019-01-15T01:56:11Z: 31/31 digest files valid 192/193 log files valid, 1/193 log files INVALID
検出可能な項目は下記ドキュメントに一覧化されています。
docs.aws.amazon.com
変更内容までは追えないようなので、
このあたりを追うのであれば下記との組合せが必要そうです。
AWS lambdaからGCPのSDKを使うlambda layerを作成
先日、AWS LambdaからGCPのSDKを利用したいと思い、
Layerを固めることがありました。
その際エラーが出てしまい解決までにハマってしまったので、
ブログに書こうと思いました。
エラー内容
固めたzipをlambda Layerとしてアップしたところ
Runtimeエラーとなってしまいました。
実行環境はAmazonLinux2です。