Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2020/01/31 ログ勉強会 「WindowsのWEBサーバログをリアルタイム監視・可視化...

JunjiKoide
January 31, 2020

2020/01/31 ログ勉強会 「WindowsのWEBサーバログをリアルタイム監視・可視化してみた」

JunjiKoide

January 31, 2020
Tweet

More Decks by JunjiKoide

Other Decks in Technology

Transcript

  1. 2 Copyright © 2019 QUICK Corp. All Rights Reserved. 小出

    淳二 Junji Koide ・株式会社QUICK ・コンサルティング営業本部 SREチームリーダー リードエキスパート ・Fin-JAWS運営 ・AWS認定資格10冠 情報安全確保支援士 ・好きな音楽 EDM(ZEDD、Kruwella) ・趣味:海外旅行 行った国60カ国、毎年海外で年越し 2012年末 障害対応w 2013年末 リオデジャネイロ 2014年末 バルセロナ 2015年末 ダナン 2016年末 ルアンパバーン 2017年末 ジャカルタ 2018年末 スリランカの アーユルヴェーダ 2019年末 ガパリビーチ 自己紹介
  2. 3 Copyright © 2019 QUICK Corp. All Rights Reserved. アジェンダ

    ・はじめに ・Windows Webサーバ関連のログって? ・そのログで何がしたいの? ・オンプレ時代の課題は? ・AWSではどうしたの? ・現状のWEBサーバログ分析基盤 ・現状の課題って何? ・今後の対応は?
  3. 4 Copyright © 2019 QUICK Corp. All Rights Reserved. ・はじめに

    ・Windows Webサーバ関連のログって? ・そのログで何がしたいの? ・オンプレ時代の課題は? ・AWSではどうしたの? ・現状のWEBサーバログ分析基盤 ・現状の課題って何? ・今後の対応は?
  4. 5 Copyright © 2019 QUICK Corp. All Rights Reserved. 1000台規模のWindowsサーバベースの

    システムをAWSに移行しました。 (昨年末完了) SREチームとして実施してきたログに関 しての取り組みをご紹介します。 未だ試行錯誤の段階なので、是非皆さん といろいろ考えながら改善していき、その 結果を共有できればと思ってます。
  5. 6 Copyright © 2019 QUICK Corp. All Rights Reserved. ・はじめに

    ・Windows Webサーバ関連のログって? ・そのログで何がしたいの? ・オンプレ時代の課題は? ・AWSではどうしたの? ・現状のWEBサーバログ分析基盤 ・現状の課題って何? ・今後の対応は?
  6. 7 Copyright © 2019 QUICK Corp. All Rights Reserved. 全体構成図

    Corporate data center Direct Connect (TY2) Direct Connect (CC1) AWS Cloud Availability Zone Public subnet Private subnet Public subnet Instances(web) Private subnet Instances(db) Private subnet Instances(web) Private subnet Instances(db) VPC
  7. 9 Copyright © 2019 QUICK Corp. All Rights Reserved. ・Cloudfrontログ

    ・ALBログ ・WAFログ(BIG-IP ASM、AWS WAF) ・IISログ ・Windowsイベントログ等
  8. 10 Copyright © 2019 QUICK Corp. All Rights Reserved. ・Cloudfrontログ

    ・ALBログ ・WAFログ(BIG-IP ASM、AWS WAF) ・IISログ ・Windowsイベントログ等 今日はここのお話をします
  9. 11 Copyright © 2019 QUICK Corp. All Rights Reserved. ・はじめに

    ・Windows Webサーバ関連のログって? ・そのログで何がしたいの? ・オンプレ時代の課題は? ・AWSではどうしたの? ・現状のWEBサーバログ分析基盤 ・現状の課題って何? ・今後の対応は?
  10. 12 Copyright © 2019 QUICK Corp. All Rights Reserved. ・諸々のトラブルシューティング

    (AWSの障害、リリース時の諸々の ミス、システム外部接続系のトラブル など) ・システムの異常やDDoS攻撃などを 早期(リアルタイムに近い形)に検知 したい ・ユーザのアクセス分析、ユーザへの アクセス分析情報提供サービス
  11. 13 Copyright © 2019 QUICK Corp. All Rights Reserved. ・はじめに

    ・Windows Webサーバ関連のログって? ・そのログで何がしたいの? ・オンプレ時代の課題は? ・AWSではどうしたの? ・現状のWEBサーバログ分析基盤 ・現状の課題って何? ・今後の対応は?
  12. 14 Copyright © 2019 QUICK Corp. All Rights Reserved. ・1日1回、0時過ぎから数時間掛けて数百

    台のIISログを収集。集計サーバにて数時間 掛けて日次バッチ処理。 0:30ログ収集開始→11~12時台に完了 ・障害や何らかのインシデント発生時に、 リアルタイムに集計、検索ができない。都 度インフラ担当がWEBサーバからログを収 集・集計し調査(時間と工数かかる)
  13. 15 Copyright © 2019 QUICK Corp. All Rights Reserved. ・深夜のログ収集時に監視ネットワークの

    トラフィックが大量発生し、末端L2SWの Uplinkが詰まって監視のポーリングをこぼ して誤検知多発 ・UplinkをGiga化したりFE 2本でリンクア グリゲーションしたり、監視強化したり、 ログ担当に流量押さえて送信するよう改造 させたり、インフラ担当(当時私)大変
  14. 16 Copyright © 2019 QUICK Corp. All Rights Reserved. ・はじめに

    ・Windows Webサーバ関連のログって? ・そのログで何がしたいの? ・オンプレ時代の課題は? ・AWSではどうしたの? ・現状のWEBサーバログ分析基盤 ・現状の課題って何? ・今後の対応は?
  15. 17 Copyright © 2019 QUICK Corp. All Rights Reserved. レガシーなログ集計・分析システムは、

    そのままリフトw →担当者にAWSの知見ゼロ 協力会社にも AWS詳しい人いない 移行開始まで時間が 無い、などなど、、
  16. 18 Copyright © 2019 QUICK Corp. All Rights Reserved. 一応処理時間は短縮されたけど、、

    オンプレ 0:30ログ収集開始→11~12時台に完了 AWS 0:30ログ収集開始→8時頃には完了
  17. 21 Copyright © 2019 QUICK Corp. All Rights Reserved. エンドユーザはこれを求めています

    お気軽にスモールスタート出来 て、スケールが可能 大規模になっても費用がリーズ ナブルで手間いらず
  18. 23 Copyright © 2019 QUICK Corp. All Rights Reserved. Datadog

    Log Management ・お手軽に利用可能(使っただけ課金) ・でもWEBサーバ全台にDatadog Agent入れると ・Fluentd Aggregatorからプラグインで送れそう ・一旦全ログ送りつけてExclusion Filterで課金対 象をフィルタリングできる ・Alert condition 設定してログ監視も出来そう でも結局ログ量が多くなると高くね?
  19. 24 Copyright © 2019 QUICK Corp. All Rights Reserved. SumoLogic

    ・SaaS楽だし、Datadogよりログに特化してて いいかも え、契約が年間契約?? ・結局ログ量が多くなると高くね?
  20. 25 Copyright © 2019 QUICK Corp. All Rights Reserved. Amazon

    ES + Kibana ・良さそうだけど、一からお勉強する の大変そうかな ・サイジングではまってる人も見かけ るしな ・何か構築はそれなりに気合いがいり そうだな、どうしようかな・・・
  21. 26 Copyright © 2019 QUICK Corp. All Rights Reserved. Athena+QuickSight

    ・何かAWS最近この構成推してるな ・ログ監視もとりあえずFluentdの filterでなんとか出来そうだし お気軽に出来そうなので一旦これで やってみようかな
  22. 27 Copyright © 2019 QUICK Corp. All Rights Reserved. ・はじめに

    ・Windows Webサーバ関連のログって? ・そのログで何がしたいの? ・オンプレ時代の課題は? ・AWSではどうしたの? ・現状のWEBサーバログ分析基盤 ・現状の課題って何? ・今後の対応は?
  23. 29 Copyright © 2019 QUICK Corp. All Rights Reserved. 設計のポイント

    ・ログ分析用のアカウントを分離 いろんな人がAthena、Quicksightを使うので、 本番サービス用と分離した。
  24. 30 Copyright © 2019 QUICK Corp. All Rights Reserved. ・Fluentd

    Aggregatorを設置 Aggregatorはボトルネックや障害ポイントに なるので、WEBサーバ側でフィルターやパース 処理させて直接Firehoseに送信したかったが、 WindowsでのFluentd事例が少なく、ナレッジ がないので、WEBサーバ側で複雑な処理はあき らめてAggregatorへのログ送信に専念させた。 WEBサーバCPU使用率40%時にFluentdはだい たい1~2%を消費。
  25. 31 Copyright © 2019 QUICK Corp. All Rights Reserved. ・Aggregatorでログ監視

    あるフィールド(TimeTaken)の値をFluentdの filterを使って正規表現で引っかけて、ローカル ログに出力。そのログファイルをZabbixエー ジェントがログ監視しZabbixアラーム通知。
  26. 32 Copyright © 2019 QUICK Corp. All Rights Reserved. Aggregator

    td-agent.conf例(パース処理) IISのアクセスログをパース処理 <filter prod.iis.log> @type parser key_name message <parse> @type regexp keep_time_key true time_key time time_format %Y-%m-%d %H:%M:%S expression /^(?<time>[^ ]* [^ ]*) (?<ssitename>[^ ]*) (?<scomputername>[^ ]*) (?<sip>[^ ]*) (?<csmethod>[^ ]*) (?<csuristem>[^ ]*) (?<csuriquery>[^ ]*) (?<sport>[0-9]*) (?<csusername>[^ ]*) (?<cip>[^ ]*) (?<csversion>[^ ]*) (?<csua>[^ ]*) (?<cscokie>[^ ]*) (?<csreferer>[^ ]*) (?<cshost>[^ ]*) (?<scstatus>[^ ]*) (?<scsubstatus>[^ ]*) (?<scwin32status>[^ ]*) (?<scbytes>[^ ]*) (?<csbytes>[^ ]*) (?<timetaken>[^ ]*) (?<xfowardedfor>[^ ]*)$$/ </parse> </filter>
  27. 33 Copyright © 2019 QUICK Corp. All Rights Reserved. Aggregator

    td-agent.conf例(ヘルスチェックログ除外) # ヘルスチェックログを除外 <filter prod.iis.log> @type grep exclude1 csuristem ^(?=.*healthchk).*$ </filter>
  28. 34 Copyright © 2019 QUICK Corp. All Rights Reserved. Aggregator

    td-agent.conf例 (特定URLに関してTimeTaken値3000以上) # 条件フィルタ設定 <filter prod.iis.log> @type grep regexp1 csuristem ^/xxxx/xxxx/xxxx.asp$|^/xxxx/xxxx/xxxx.asp$|^/xxxx/xxxx/xxxx.asp$|^/xxxx/xxxx/xxxx.asp$|^/xxxx/xxxx/xxxx.asp$ </filter> # TimeTaken監視設定 <filter prod.iis.log> @type grep exclude1 timetaken ^0 </filter> <filter prod.iis.log> @type grep exclude1 timetaken ^[0-9]$ </filter> <filter prod.iis.log> @type grep exclude1 timetaken ^[0-9][0-9]$ </filter> <filter prod.iis.log> @type grep exclude1 timetaken ^[0-9][0-9][0-9]$ </filter> <filter prod.iis.log> @type grep exclude1 timetaken ^[1-2][0-9][0-9][0-9]$ </filter>
  29. 35 Copyright © 2019 QUICK Corp. All Rights Reserved. Aggregator

    td-agent.conf例(ログファイル名固定) # ファイル出力 <store> @type file buffer_path /var/log/td-agent/buffer/prod.timetaken.log.buf symlink_path /var/log/td-agent/logs_current/prod.timetaken.log path /var/log/td-agent/logs/prod.timetaken.log </store> /var/log/td-agent/logs_current/prod.timetaken.logを zabbixでログ監視
  30. 36 Copyright © 2019 QUICK Corp. All Rights Reserved. Aggregator

    td-agent.conf例(別アカウントのFirehose出力) <store> @type kinesis_firehose region ap-northeast-1 delivery_stream_name xxxxxxxxxxxxxxxxxx endpoint https://xxxxxxxxxxxx.firehose.ap-northeast-1.vpce.amazonaws.com <assume_role_credentials> role_arn arn:aws:iam::xxxxxxxxxx:role/xxxxxxxxxxxxxxxxxxxxxx role_session_name xxxxxxxxx external_id xxxxxxxxxxx sts_http_proxy http://xxxxxxxxxxxxxxxxxxx </assume_role_credentials> </store>
  31. 38 Copyright © 2019 QUICK Corp. All Rights Reserved. ・FirehoseにてParquet形式に変換しS3に出力

    Prefix設定は以下の通り。 Buffer size:128MB Buffer interval:60秒 IISログ 1日あたりS3フォルダ容量20~30GB(parquet) 1か月あたり約500~600GB
  32. 39 Copyright © 2019 QUICK Corp. All Rights Reserved. CloudwatchでLambdaを定時起動(ALTER

    TABLE) from datetime import datetime import boto3 import os def lambda_handler(event, context): dt = datetime.now().strftime("%Y-%m-%d") hour = datetime.now().strftime("%H") s3bucket = os.environ['s3bucket'] s3key = os.environ['s3key'] gluedb = os.environ['gluedb'] gluetable = os.environ['gluetable'] athena = boto3.client('athena') sql = "ALTER TABLE " + gluetable + " ADD IF NOT EXISTS PARTITION (dt='" + dt + "',hour='" + hour + "') location 's3://xxxxxx/firehose/IIS_logs_2/dt=" + dt + "/hour=" + hour + "'" print('sql:' + sql) athena.start_query_execution( QueryString= sql , QueryExecutionContext={ 'Database': gluedb }, ResultConfiguration={ 'OutputLocation': 's3://' + s3bucket + '/athena-output' } )
  33. 42 Copyright © 2019 QUICK Corp. All Rights Reserved. ・はじめに

    ・Windows Webサーバ関連のログって? ・そのログで何がしたいの? ・オンプレ時代の課題は? ・AWSではどうしたの? ・現状のWEBサーバログ分析基盤 ・現状の課題って何? ・今後の対応は?
  34. 43 Copyright © 2019 QUICK Corp. All Rights Reserved. ・複雑なログ監視要件への対応

    背景)インターネット経由の株価データ提供など、顧 客とのシステム外部接続案件が多く、トラブルが多い ので細かい監視が必要 現在)顧客Aのこの文字列が含まれるURLにて Timetaken値が3000以上の場合にSlack通知 今後)今まで出来なかった監視が出来るといろいろ追 加で要件が来ている。 ・何分間の間にxx件検知したら通知 ・Timetaken値3000~5000、5000~10000、 10000以上でSlack通知を分けたい など
  35. 44 Copyright © 2019 QUICK Corp. All Rights Reserved. ・エージェント正常稼働の監視

    WEBサーバ側のエージェントだんまりとか ・可用性設計 Aggregator障害時お祭り リカバリー手順書整備とか。。。 ・データ欠損はないのか? 一度確認が必要
  36. 45 Copyright © 2019 QUICK Corp. All Rights Reserved. ・はじめに

    ・Windows Webサーバ関連のログって? ・そのログで何がしたいの? ・オンプレ時代の課題は? ・AWSではどうしたの? ・現状のWEBサーバログ分析基盤 ・現状の課題って何? ・今後の対応は?
  37. 46 Copyright © 2019 QUICK Corp. All Rights Reserved. ・Amazon

    Elasticsearch Service検証・導入 複雑なログ監視要件に頭を抱えていたところ、 リクルートテクノロジーズ日比野さんが「もう この要件はESっしょ!」と。 Messangerでのやり取りが続く・・ 「Logstash、Filebeat軽そうで良さそうなんだけ ど、Windowsでさくさく動く?」 「 Logstash、Filebeat から直接ESに送って Aggregatorみたいな中間サーバなくせない?」
  38. 48 Copyright © 2019 QUICK Corp. All Rights Reserved. Fluentd

    Aggregator にElasticSerachプラグイン をインストール。現状のAthena構成は残したま ま、別アカウントのAmazonESにログを転送す る検証を来週から実施予定。 (AggregatorのCPU負荷を注視) 監視要件はESのアラート設定で要件を満たしそ う。
  39. 50 Copyright © 2019 QUICK Corp. All Rights Reserved. ・Kinesis

    Analystics 一応検証してみる??時間の無駄? 使ってる人どれぐらいいるのかな?