SRE NEXTで「AIOps研究録」講演を終えて

5月14-15日に開催されたSREの国内カンファレンス SRE NEXT 2022 ONLINEにて、「AIOps研究録―SREのためのシステム障害の自動原因診断」と題して、ITシステムに障害が発生した際に、機械学習・統計解析の手法を用いて、障害の原因を自動で診断するための研究について講演しました。

講演に用いたスライド資料を以下に公開しています。

当日に配信された講演動画は、Youtubeに公開されています。

なお、この記事では、AIOpsという用語を、機械学習や統計解析をはじめとするAI(人工知能)と呼ばれる技術を用いて、ITオペレーターのオペレーション作業を自動化あるいは支援する技術の総称として使っています。

なぜAIOpsに着目したのか

自分が、統計や機械学習をはじめとするAIと呼ばれる技術をSRE分野に適用することを漠然と考えはじめたのは、2017年ごろでした。当時、今後のSREの未来の展望を考える機会に恵まれ、IPSJ-ONE 2017という情報処理学会全国大会の併設イベントで5分のトークをすることがありました。その際に、現在の情報システムがあまりにも複雑化し、熟練のエンジニアでも、認知負荷の高い状況に対して、いかに立ち向かっていくか、システムの運用者はどうありたいのかを考えました。そこで、人間の理解の範疇を超えると仮定して、システムの異常を自然現象とみたてて、実験により現象を再現させて現象の理解につとめていく様を自然科学のアプローチから類推しました。 当時は、あえてAIや機械学習といった用語は登場させなかったものの、故意に異常を発生させるChaos Engineeringのアプローチに着目し、その異常のデータを教師として、学習を繰り返すようなシステムを妄想していました。

このようなシステム運用の展望を実現するために、いつかはAIを手段として活用したいという思いが5年前からありました。

講演内容について

SRE NEXT 2022は「SRE DIVERSITY」をテーマに掲げています。そこで、自分の発表では、国内でまだ認知が低いAIOpsと、ITエンジニアが主体のカンファレンスで学術研究の話をする、という2つの意味でのDIVERSITYを念頭に置きました。

そのため、AIOps全体の「木」から、自分が研究で試行錯誤している「枝」に至るような流れとなるように、「AIOpsの概観」「先行研究と我々の研究の問題設定」「統計解析を用いた試行錯誤の紹介」「AIOpsを研究することの所感」の4本立てで講演を構成しました。

「研究録」というタイトルには、研究としての提案内容や評価結果そのものではなく、研究の考え方や試行錯誤が途中であってもそれを記録し、伝えたかったという思いが込められています。

AIOpsの概観

AIOpsが担う領域を学術研究のサーベイ論文を交えて紹介します。AIOpsは大領域として、障害(Failure)の予測・予防・検知・原因分析・回復のタスクに関わる「障害管理(Failure Management)」と、コンピューティングやストレージのリソース使用の最適化に関わる「リソースプロビジョニング(Resource Provisioning)」に分けられます。発表者は、SREの信頼性に直接の影響を与えることから、障害管理に着目しています。その中で未だSREsの直感に頼りやすいタスクとして、障害対応中の原因分析が挙げられます。

先行研究と我々の研究の問題設定

運用の現場では、障害発生時にアラートストームが発生し、多数のアラート通知を認知する負荷が高い課題がありました。この課題が生まれる要因として、 症状と原因のそれぞれを同時に検知する狙いで、多数のメトリクスにアラート条件を設定しているからではないかと考えました。

そこで、2020年に思いついたアイディアは、バーンレートなどの症状の悪化を示すメトリクスに対してのみアラートを通知することにした上で、アラートを起因として、メトリクスを統計解析することにより原因を推定する、というものでした。原因を推定するには、発表者の別の研究として進めているTCP/UDP通信の依存関係のデータとメトリクス間の相関分析を組み合わせれば、疑似相関を排除しながらメトリクス間の因果関係を推論できるのではないかと考えました。

ところが、先行研究の調査を進めているうちに、このアイデアをより洗練させた手法が、CauseInferと題された論文で、症状と原因の分離を前提としたアプローチを2014年に提案していたことにも気づきました。さらに、Microscopeでは、統計的因果探索と呼ばれる分野のアプローチを採用していました。その分野では、疑似相関をいかに排除し、データから因果構造を導くかについて、研究が進んでいることを知りました。

これらの先行研究を深堀りしていくと、事前に解析に用いるメトリクスをコンポーネントごとに選ばなければならないといった制約があることに気づきました。また、先行研究によっては、全コンポーネント共通に取得可能なメトリクスのみ指定可能であるケースもあります。メトリクスを選択するための知識や手間があったり、また原因推定の結果で示せる範囲にも制約がかかるはずです。 現実にはこれらの制約を満たすことが難しいこともあるのでないかと考えました。

統計解析・機械学習を用いた試行錯誤の紹介

そこで発表者とその共同研究者らは、対象システムに関係する全メトリクスのうち直近のデータに対して、(1)時系列単位で異常を含むものを検出し、(2)異常を含む時系列群からグラフの形状が類似するものをクラスタにまとめクラスタの中から代表時系列を選択する、2段階の次元削減を提案しています。次元削減後の時系列を用いて原因推定することにより、事前にメトリクスを選択することなく、データ量を削減した上で、原因推定が可能となります。

このアプローチでは、統計的機械学習による異常検知(ホテリング理論、近傍法、自己回帰モデル)、階層型クラスタリング、相互相関、統計的因果探索のPCアルゴリズムなどを組み合わせています。うまくいかなかった組み合わせも含めて、実験に使用しているデータもお見せしながら、手法の詳細を紹介しました。

試行錯誤の結果、講演動画を事前収録した時点では、未解決あるいはこれから検討する事項のいくつかは、この2ヶ月の間に研究が進捗し、解決できそうな手応えを感じています。

AIOpsを研究することの所感

  • データサイエンスの特定領域の知識だけでは完結しないため、学ぶことが大変
  • 恣意的なパラメータ設定なしでモデルの性能を高めることが難しい
  • 可視化しないと正しい結果を返しているかがわからない
  • 実験に使えるような実環境データが入手しづらい
  • 国内では、AIOpsに取り組んでいる人が少ないため、コミュニティで情報を共有しながらみんなで山を登ることが難しい

自分は理系の大学院に在籍しているわりに数学があまり得意ではない上に、データサイエンスの学習もしてこなかったにも関わらず、AIOpsの研究を開始できたのは、データサイエンスを専門とする共同研究者で同僚の@tsurubee3さんの力が大きいと考えています。大変感謝しています。

講演に対するフィードバック

講演終了後にツイートしたMeetyの雑談枠からカジュアル面談のご連絡をいただいたり、コミュニティ形成の話を最後にさせていただいたことから、一緒にやりたいねとお声がけいただいたりと、うれしいことに様々な反響がありました。

講演の内容については、前半の問題設定と問題の解き方の考え方までは理解できた、2014年でSLI/SLOを前提にした論文があることに驚いたといった感想をいただきました。一方で、後半のアルゴリズムの試行錯誤の話は難しかったようでした。統計や機械学習の分野の知識は、SREやクラウド、ソフトウェア工学の分野の体系とは離れているため、なかなか説明することに苦労しました。実際、講演者である自分が、2年前に聴いたとしても分からなかったでしょう。自分の説明がまだまだこなれていない、ということもありますし、長い目でみて徐々にコミュニティに知識を蓄積していければいいなと思います。

また、SRE LaungeのSlackワークスペース #topic-aiops チャンネルで、AIOpsのネタを共有していたりしています。

SRE NEXT 2022全体を通して

前回のSRE NEXT 2020の時点で、国内の先端企業では、すでにSREを理解するフェーズは超えており、現場の実践に入っている印象を持ちました。

今回のSRE NEXT 2022では、エンジニアがSREを実践することを超えて、規模や事業の種類が異なる多様な組織に対して、いかにSREを浸透させていくか、といった組織行動としてのSREに関する発表が多かったように思えます。@nari_exさんの基調講演は、まさに多様な組織に対するSRE実践のためのフレームワークを提示するようなお話でした。対照的に、@jp_miyamaさんの基調講演は、国内ではごく一部の企業を除いてあまり例のない、Shopifyでのハイパースケールの組織やシステムのなかで、個人がどう挑戦していくかを語られていました。

副業先のTopotal

昨年の8月より、副業でお仕事をさせていただいているTopotal@nari_exさんが基調講演、CTOの@rrreeeyyyくんがゲスト講演に招かれていました。大きな存在感を発揮されていたように思います。オンラインでは、他の参加者の方々と雑談する場所がなかったので、Topotalの企業ブースを拠点としてゆっくりさせていただきました。早期に参加者同士の交流用途のブースに移行されて、にぎやかで楽しかったです。

e34.fm

今回の講演をきっかけに、@deeeetくんと@rrreeeyyyによりホストされているPodcast番組のe34.fmにAIOpsトピックで出演させてもらいました。

18: AIOps with yuuki - e34.fm

@yuuk1tさんをゲストに迎えてメインのトピックとしてAIOpsについて,最近のニュースとしてRedis 7.0,AlloyDB,CloudFlare D1,eBPF for Service Mesh,「プロジェクト・ヘイル・メアリー」などについて話しました.

むすび

SRE NEXTは、初回の2020で基調講演に招いていただいたこともあり、すでに自分にとって思い出深いカンファレンスとなっています。 SRE NEXT基調講演を終えて - ゆううきブログ

前回に引き続き、今回のSRE NEXTもとても楽しめました。特にスタッフの皆さまは、当日の進行はもちろん、例えば、各講演の事前録画のチェックひとつとってみても、大変な苦労だったと思います。本当にありがとうございました。

カンファレンスで登壇し、成果や学びを世の中に提供するのももちろん大事ですが、コミュニティとしての「場」をつくっていくことは、それ以上に大事なことではないかと最近考えるようになっています。今後もSREのコミュニティとして活動されていく中で、自分もなにかお手伝いできることがもしあれば、お手伝いさせていただきたいと思っています。