[OpsJAWS: やってみようシリーズ] Sumologicの検索(VPC Flow Logsの解析)
こんにちは、Partner SA酒徳です。海の日はゆっくりできましたでしょうか。本日のやってみようシリーズは、sumologic 早くも第3弾になります、sumologicを使ったサーチ方法についてご紹介頂きます。前回はCloudTrailのログ活用についてご紹介頂きましたが、今回はVPC Flow Logsの可視化、ダッシュボードの作成についてご紹介頂きます。
オージス総研の新谷泰平です。クラウド環境の監視・監査環境の提案、構築を行っています。第二回に引き続き、ログ解析、可視化についてご紹介させて頂きます。今回はVPC Flow Logsを使い、sumologicの基本的な検索の使い方をご説明します。
サービス・製品の説明と特徴
sumologicは完全SaaS型のログ分析ツールで、OS、ミドルウェアのログからCloudTrailに代表されるようなAWSのログを取り込んで分析することができます。
サービス・製品の特徴
主要なOS、ミドルウェア、クラウドのログを分析するためのテンプレートが用意されています。テンプレートの利用すると、取り込みからダッシュボードの利用まで短時間で可能です。 また最近なにかと話題となる機械学習に利用する機能も用意されています。
- LogReduce機能(大量ログからノイズを除去)
- SummarizeDelta機能(過去のある時点のログと比較)
- Outlier機能(ログの傾向から異常値を検索)
- Predict機能(ログの傾向から将来の値を予測)
設定(構築)する内容
本日は、下記の流れでご説明していきます。
- VPC Flow Logsのログを取り込む方法
- VPC Flow Logsのログを使ってチャートを作成する方法
*sumologicの基本的な検索方法(第二回目を参照ください)
1. まずVPC Flow Logsの取り込みについて説明します。アーキテクチャとしては下記のようになります。EC2に、アップロードするためのエージェント、スクリプトを導入し、VPC Flow Logsのログをsumologicへアップロードします。
1.1. VPC Flow Logsの設定を行います。VPC Flow Logsの設定ですが、こちらを参照し設定してください。ロググループを後ほど使うのでコピーしておいてください。
1.2. CloudWatch LogsへアクセスするIAMユーザを作成します。IAMユーザのカスタムポリシーとして下記のポリシーを適用してください。作成されたAccessIDとAccessKeyを後ほど使うのでコピーしておいてください。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "1", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:DescribeMetricFilters", "logs:FilterLogEvents", "logs:GetLogEvents" ], "Resource": [ "*" ] } ] } |
1.3. EC2を作成し、エージェントの導入とsumologicにホストの登録をしていきます。sumologicのサービスから[Manage]→[Collection]と選択します。
1.4. [Add Collector]を押下します。
1.5. [Installed Collector]を押下します。
1.6. OSに合ったエージェントを押下します。ここではAmazon LinuxのEC2なので[Linux RPM(64-bit/x86_64/amd64)]を押下します。
1.7. EC2上でエージェントの設定ファイルを作成します。/etc/sumo.confを作成し下記の内容を記載します。nameはサービス画面に表示されるホスト名になります。emailとpasswordはsumologicにログインするためのメールアドレスとパスワードになります。
name=VPCFlowLogsCollector email=*********** password=*********** |
1.8. 取得したRPMパッケージをインストールします。
# sudo yum localinstall SumoCollector-19.155-3.x86_64.rpm |
導入がうまくいくと下記のようにサービス画面から確認出来るようになります。
1.9. VPC Flow Logs取得用のスクリプトをEC2上のsumologicCollectorがインストールされている所にVPCというディレクトリを作成し設置します。下記Webページの[Download and Deploy the scripts to the Collector system]セクションにある、[(Linux)SumoVPCCollector.sh]、[Sumo-Java-APIIntegrationClient-1.1.1.jar]と[vpc_cwl.properties]を取得し、この例では[/opt/SumoCollector/VPC/]に設置します。
https://help.sumologic.com/Apps/05_Amazon_VPC_Flow_Logs_App/01_Collect_Amazon_VPC_Flow_Logs
1.10. 取得したファイルのうち、[vpc_cwl.properties]を修正します。修正箇所は下記ハイライトの[AccessID]、[AccessKey]、[LogGroup]、[region]箇所になります。手順3.1.、3.2.でコピーしたロググループ、AccessID、AccessKey、リージョンを修正してください。
[generic] path = . AWSAccessID = <Your AWS AccessID> AWSAccessKey = <Your AWS AccessKey> # The following section configures one VPC log group. Create one section for each log group, also use a unique timstamp value for each section. [aws_cloudwatch] # Type of processor, built-in basic type will work like curl, specific types will be more specific and having more features. type = aws_cwl AccessID = ${AWSAccessID} AccessKey = ${AWSAccessKey} LogGroup = <LogGroupName> # optional, comma separated list of log streams #LogStream = eni-11c6a94a-all,eni-19f34c43-all # file to keep track of last queried timestamp. Must be unique per section. timestamp = ${path}/timestamp.txt # start of window to query logs, in epoch milliseconds. This is only used if no past record was saved. #startTime = 1436377600000 # end of window to query logs, in epoch milliseconds. Use this for a fixed query window, or retrieve archived logs. #endTime = 1436550400000 # delay time in milliseconds if there is no data delayDuration = 1000 # region, default is us-east-1. Note CWL is supported in: ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-central-1, eu-west-1, us-east-1, us-west-1, and us-west-2 region = us-east-1 |
1.11. sumologicのWebコンソールに戻ります。[Manage]→[Collection]から図の[Add...]→[Add Source]と押下します。
1.12. [Platform Sources]の[Script]を押下します。
1.13. [Name]は、任意の名称。[Source Category]は、ここでは「VPC」と指定します。[Frequency]は、スクリプトの実行時間になります。「Every 5 Minutes」でいいでしょう。[Script]と[Working Directory]は、それぞれ、「/opt/SumoCollector/VPC/SumoVPCCollector.sh」、「/optSumoCollector/VPC/」を指定します。
1.14. この後自動的にログの収集が始まります。始まると下記図のように[Messages]に取り込んだログの行数が表示されます。すぐに取り込まれなくても時間を置いて何度か押下してみてください。
1.15. VPC Flow Logsの内容を可視化するために、sumologicが用意しているVPC Flow Logsのテンプレートを適用していきます。[Library]→[Apps]→[Amazon VPC Flow Logs]から[Install]を押下します。
1.16. [Select from _sourceCategory values]に3.13.で入力したsourceCategoryを選択し、[Install]を押下します。
1.17. [Go]を押下するとVPC Flow Logs用のテンプレートが適用されます。
1.18. 上段のメニューより[Library]→[Personal]の中に[Amazon VPC Flow Logs]が作成されているので、[Amazon VPC Flow Logs –Live - Overview]を選択すると下記のようなDashboardが表示されます。他にもパケット転送量のチャートをDashboardにしたものやRejectしたログを元に作成したチャートなど色々用意されていますので、こちらもご参照ください。
以上がVPC Flow Logsのログをsumologic上に取り込んで可視化するまでの手順になります。
2. 続いてVPC Flow Logsのログを使って検索し、結果をチャートにして可視化してみたいと思います。可視化する内容は、VPCに入ってくるデータの宛先IPアドレスを1時間単位でカウントし、積み上げチャートにしたいと思います。
2.1. まずは[Manage]→[Collection]を押下し、Collectionの一覧ページに移動します。
2.2. VPC Flow LogsのVPCFlowLogsCollectorの中からVPCの虫めがねを押下します。虫めがねアイコンはマウスオーバーすると表示されます。
2.3. 検索クエリを入力するところに[_sourceCategory=”VPC”]と入力された状態で検索が行われます。検索結果に[[pool-2-thread-6] INFO com.amazonaws.internal.DefaultServiceEndpointBuilder]のようにでるかもしれませんが、問題ありません。
2.4. 可視化するために、検索クエリを指定します。画面右側の時間を入力するところから[Last 24 Hours]を選択し、[Start]を押下してください。[json “message”, “logStream”, “logGroup”]というのはログの中から”message”、”logStream””logGroup”を持つjson形式のものを取り出すという意味になります。次の[parse field=message “* * …” as version, accountID,…]はスペース区切りの[message]を1つずつ分割するという意味になります。
_sourceCategory="VPC" | json "message","logStream","logGroup" | parse field=message "* * * * * * * * * * * * * *" as version,accountID,interfaceID,src_ip,dest_ip,src_port,dest_port,Protocol,Packets,bytes,StartSample,EndSample,Action,status |
2.5. [Start]を押下すると検索が始まりページ下部に検索結果が表示されます。宛先IPアドレスは[dest_ip]になりますので、こちらをカウントしていきます。
2.6. 1時間ごとの宛先IPアドレスをカウントするために、[timeslice]と[count]クエリを使います。結果をソートするには[sort]を使います。入力し終わったら[Start]を押下します。
_sourceCategory="VPC" | json "message","logStream","logGroup" | parse field=message "* * * * * * * * * * * * * *" as version,accountID,interfaceID,src_ip,dest_ip,src_port,dest_port,Protocol,Packets,bytes,StartSample,EndSample,Action,status | timeslice 1h | count by dest_ip,_timeslice | sort by _count |
2.7. 1時間単位でカウントしたものをチャートにしていきたいと思います。図のようにクエリを変更します。[transpose row _timeslice column dest_ip]と入力することで、チャート化した時にX軸に時間、Y軸にIPアドレスでカウントした結果が入るようになります。
_sourceCategory="VPC" | json "message","logStream","logGroup" | parse field=message "* * * * * * * * * * * * * *" as version,accountID,interfaceID,src_ip,dest_ip,src_port,dest_port,Protocol,Packets,bytes,StartSample,EndSample,Action,status | timeslice 1h | count by dest_ip,_timeslice | transpose row _timeslice column dest_ip |
2.8. Columnチャートにするために図の[Column Chart]を押下します。押下するとColumnチャートが表示されます。これをStackedチャートに変更してみたいと思います。
2.9. 歯車のマークから[Change Properties...]を押下します。
2.10. [Stacking]セクションを[None]から[Normal]へ変更し[Save]を押下します。
2.11. すると結果のチャートが1時間ごとにIPアドレスをカウントしたものをStackedチャートにしたものが表示されます。
以上がVPC Flow Logsのログを使ったログの検索、可視化になります。このように自身でチャートを作成することができます。また、複数のチャートを作成し、それらを1つのDashboardにすることができます。Dashboardの作成方法についても、いずれご紹介したいと思います。
まとめ
第3弾の今回は、
- VPC Flow Logsのログをsumologicの標準テンプレートを使った可視化
- VPC Flow Logsのログからチャートを作成し、目的に合わせて自身でチャートの作成
についてご紹介しました。いかがだったでしょうか。是非次回もお楽しみに!
ライセンス体系とコスト
オージス総研にてsumologicのライセンス費用と運用をセットにしてサービス提供しています。
- 初期費用:\100,000
- 月額費用:\98,000~(1GB/30日保管)
- 質問や詳細なご要望はお気軽にお問合せください。
お問い合わせ先
株式会社オージス総研
- URL: http://www.ogis-ri.co.jp/
- E-mail: [email protected]
- TEL: 03-6712-1201(東京)、052-209-9390(名古屋)、06-6871-8054(大阪)
****
OpsJAWS メインページはこちら。
クラウド運用にご興味ある方は、こちらからOpsJAWSに登録ください。
コメント