Slide 1

Slide 1 text

New Relicで実践する外形監視 イオンスマートテクノロジー株式会社 荒木 雅斗

Slide 2

Slide 2 text

自己紹介

Slide 3

Slide 3 text

• イオンスマートテクノロジー(通称AST) • DevSecOpsディビジョン所属 • 2024年7月にSREとしてJoin • 前職は「ふるさとチョイス」のSRE • 最近の趣味はキャンプ、旅行、自宅NW(弱) • その他は butadora.me 荒木 雅斗 自己紹介

Slide 4

Slide 4 text

会社紹介

Slide 5

Slide 5 text

• イオンのデジタルシフト戦略を担う会社の位置付けで2020年10月に設立 • お客様のお買い物体験向上と店舗DXを進める イオンスマートテクノロジーについて 会社紹介

Slide 6

Slide 6 text

イオンスマートテクノロジーのミッション 会社紹介

Slide 7

Slide 7 text

膨大なIDと購買データを集約したアプリ「iAEON」 会社紹介 iAEONはイオングループが提供する決済機能やポイントプログラムを1つにまとめたアプリです。 イオングループ内の多数の事業会社がもつ顧客IDを一つのアプリに統合しています。 提供開始から約3年で、iAEONは500万人以上の会員を抱え、独自のコード決済サービス「イオンペイ」は836万人 (23年5月時点)が利用しています。

Slide 8

Slide 8 text

今回の背景

Slide 9

Slide 9 text

ASTにおける外形監視 今回の背景 1. 死活監視 • 対象URIに対してリクエストを送り、レスポンスをチェック • ステータスコードが200であることを確認 • リダイレクト先は追跡 2. 証明書監視 • 対象ドメインのSSL証明書の有効期限をチェック • 有効期限までの残日数が30日以上あることを確認 既存外形監視をNew Relicへリプレイス

Slide 10

Slide 10 text

New Relicによる外形監視

Slide 11

Slide 11 text

アーキテクチャ New Relicにおける外形監視 監視先の設定〜アラート発報までに登場するNew Relic機能は大きく以下の4つ 1. Synthetics Monitor 2. Alert Condition / Policy 3. Workflow 4. Destination

Slide 12

Slide 12 text

Synthetic Monitor New Relicにおける外形監視 • New Relicにおける外形監視のソリューションはSynthetic Monitor • Selenium(Chromium)によるモニタリング • JavaScriptを記述すればシナリオベースの監視を行うことも可能 • 今回は死活監視にSimple(Ping) Monitor、証明書監視にCertificate Checkを使用

Slide 13

Slide 13 text

Alert Condition / Policy New Relicにおける外形監視 • Alert Condition機能では、インシデント検出の条件やCritical/Warningの発生条件などの詳細を設定 • NRQL(New Relic Query Language)で集計対象データを取得 • Conditionの設定は一筋縄でいかなかったので後述 • Alert Policy機能では、Conditionで検出されたインシデントを束ねる役割 • Issueの発行をCondition毎 or Policy毎なのかを設定

Slide 14

Slide 14 text

Workflow New Relicにおける外形監視 • Policyによって発行されたIssueを拾ってDestinationに渡す機能 • 拾い上げるIssueの条件を発行元PolicyやIssueのPriority、 Tagなどでフィルタが可能 • 別Destinationで設定されていれば同一通知先サービスであっても設定可能 • (Slackの「#channel-A」と「#channel-B」など)

Slide 15

Slide 15 text

Destination New Relicにおける外形監視 • 通知先サービスを定義する機能 • SlackやTeamsなどのチャットツールをはじめ、多くのサービスと連携可能 • 弊社では主にPagerDutyにインシデントを集約し、一部個別にSlack通知を行っている

Slide 16

Slide 16 text

Alert Conditionハマりポイント 3選

Slide 17

Slide 17 text

Aggregation Window Alert Conditionハマりポイント • Alert Conditionではデータを集約する単位をAggregation Windowと呼ぶ • 30秒〜6時間までの範囲で設定可能 • 通常は設定したWindow Durationごとに評価を行い、Incidentの判断を行う(左図) • Sliding Windowオプションを設定すると指定Intervalで評価が行われ、早期検出が可能となる(右図) 出典: New Relic公式ブログ「アラート条件を正しく設定するための詳細ガイド」

Slide 18

Slide 18 text

Streaming Method Alert Conditionハマりポイント • データ集計方法をStreaming methodと呼ぶ • Event Flowは定期的に到着するメトリクスに対して利用(左図) • Event Timerは不定期に到着するメトリクスに対して利用(右図) 出典: New Relic公式ブログ「アラート条件を正しく設定するための詳細ガイド」

Slide 19

Slide 19 text

Loss of Signal Detection Alert Conditionハマりポイント • 前述のCondition設定と別軸で実行されるIncident検出機能 • NRQLで以下のようなクエリでcountが0であると、NULL=Loss of Signalと判定される • Loss of Signalとなった際、Incident発生 or 解決として扱う設定が可能 • アラートレベルはCriticalのみ(Warningはできない ) 出典: New Relic公式ブログ「アラート条件を正しく設定するための詳細ガイド」

Slide 20

Slide 20 text

採用した監視仕様

Slide 21

Slide 21 text

死活監視 採用した監視仕様 • Synthetic monitor周期: 5min • NRQL: →最後のチェックから10分間経過でアラート

Slide 22

Slide 22 text

証明書監視 採用した監視仕様 • Synthetic monitor周期: 1日 • NRQL: →最後のチェックから1日経過でアラート

Slide 23

Slide 23 text

まとめ

Slide 24

Slide 24 text

まとめ まとめ • 外形監視として死活監視と証明書監視をNew Relicで実践 • New Relicで外形監視する場合は4つの機能を使う • Synthetics Monitor、Alert Condition / Policy、Workflow、Destination • Alert Conditionはハマりポイントはある一方で、細やかな監視設定が可能 (以下おまけ) • 実は昨年の弊社アドベントカレンダーでTocyukiも戦っていたのでこちらもどうぞ • https://zenn.dev/aeonpeople/articles/introduction-to-newrelic-alert-threshold-settings • AWS環境なひとは「さくらのシンプル監視」も一つの手かもしれない • https://tech.trustbank.co.jp/entry/2023/12/18/160000

Slide 25

Slide 25 text

参考一覧 まとめ • New Relic公式ブログ「アラート条件を正しく設定するための詳細ガイド」 https://newrelic.com/jp/blog/how- to-relic/understand-nrql-alert-condition (2024/08/22参照) • New Relic公式ブログ「 NRQLアラート条件に追加された新しい集計方法とどれを選ぶべきかの指針」 https://newrelic.com/jp/blog/nerdlog/new-aggregation-methods-for-nrql-alert-conditions (2024/08/22参照) • New Relic公式ブログ「シグナル消失の発生と回復のタイミング」https://newrelic.com/jp/blog/how-to- relic/details-of-loss-of-signal (2024/08/22参照)

Slide 26

Slide 26 text

幅広いポジションでエンジニアを募集中です!! We are hiring

Slide 27

Slide 27 text

おしまい