機械学習・AI

AIOpsとは?用途とメリット、代表的なAIOpsツール、導入方法

AIOpsは、ログ監視、テスト、本番環境への適用などのIT運用業務に機械学習などの人工知能(AI)技術をとりいれ、より高速な開発や安定したシステム稼働を実現する概念です。ビッグデータを取り込みAIに学習させることで、IT運用業務の自動化、効率化が期待されています。

今回の記事では、そんなAIOps(エーアイオプス)のメリット、適用対象となる業務、代表的なAIOpsツール、導入方法などを紹介します。

AIOpsとは

AIOps(Artificial Intelligence for IT Operations)とは、AIを活用したIT運用管理のことです。日本語でエーアイオプスと読みます。コンピュータシステムやWebアプリケーションの保守・運用には人手で行なっている様々な作業が存在します。その中で定型業務であるバックアップやOSのアップデートなどについて自動化が進んでいますが、トラブル対応やインフラ整備、開発などの不定形な業務は、人手による企画・設計・対応が欠かせない状況にあります。

2019年現在では、インターネットを活用した24時間稼働のサービスも多くなり、システム運用においてもノンストップでの監視が必要となっています。障害やトラブルが発生したときは素早い対応が求められます。また、複雑化するシステム運用にヒューマンエラーが発生する可能性も高くなってきています。そこで注目されているのがAIによる運用管理(AIOps)です。機械学習やデータ解析を運用業務に取り込むことにより、開発と運用のための反復的なタスクを自動化できます。AIOpsでは高速性や正確性の点から人間による作業よりも効率的な運用が期待されています。

AIOpsの基本

AIOpsの基本的な考え方は、AIによる高速かつ正確なIT運用業務を行なうことです。例えばインフラ整備の中でも複雑化・巨大化する一方のネットワーク管理は、人手で行なうことが現実的ではなくなってきています。このような部分に機械学習モデルによる最適化や自動化を導入することで効率的な運用を行うことができます。また、稼働中のシステムに対する変更作業はミスが許されませんが、人手による作業でミスを無くすことは不可能です。そこで、開発管理を学習したAIに修正作業を行なわせることで、人為的なミスをなくすことができます。

ヒューマンエラーを防ぎ、テスト、ビルド、デプロイを自動化し高速化するという考え方は「DevOps」という概念としてすでに提唱されており、アジャイル開発などの手法とともにDevOpsツールは多くの現場でとりいれられています。AIを前提としていない点でAIOpsと異なりますが、「AIOpsはDevOpsの進化形」という人もいます。

AIOpsを理解するうえでも、ここからは開発チームと運用チームをつなぐ「DevOps」の考え方やそれを実現するための「継続的インテグレーション(Continuous Integration, CI)」「継続的デリバリー(Continuous Delivery, CD)」について紹介します。

DevOps

DevOps(デブオプス)は開発(Development)と運用(Operations)が同じ開発手法とツールを使うことで密接に連携し、効率的にシステムを構築する手法です。2009年にDevOpsを発表したチームはFlickrというコミュニティサイトの開発・運用を行なっていて、この時点で1日に10回以上のシステムアップデートのリリースを可能にしていました。

DevOpsには3つのメリットがあります。1つ目は信頼性の向上です。システムに修正を加えるとき、運用者は改善によるメリットと改善作業で起きる不具合の可能性を常に秤にかける必要があります。DevOpsはシステムアップデートに必要なテストから修正適用に至る作業の大半を自動化することができます。適用後に何か問題があったときも自動的に元のシステムに戻すことができます。従来の人手による作業より高速で正確に作業を行なうことができるので、システムアップデート作業の信頼性が向上します。

2つ目は生産性の向上です。システム開発では複数のメンバーが一緒に作業を行なうため、ソースの修正履歴やバージョン管理、リリース手順の検討、テスト環境の整備といった細々とした管理作業があり、これらが間違っていると作業の手戻りが発生します。DevOpsはこのような各種資源管理を行なうためのツールが用意されており、管理作業に煩わされずに開発に集中することができます。

メンバーの進捗管理やスケジュール管理も備えており、進捗が遅れているメンバーのチェックやボトルネック発生によるスケジュール遅延を防ぐこともできます。このようにツールアシストによる効率的な作業が行なえるため生産性が飛躍的に向上します。3つ目は柔軟性です。最近のシステム開発はアジャイル開発に代表されるように、全部を作ってからリリースするのではなく、必要な部分ができたら逐次リリースしていくというやり方が増えています。

DevOpsはこうした逐次リリースに必要な「継続的インテグレーション/継続的デリバリー(CI/CD)」の機能があるので、新規作成部分や改修部分のテストや稼働システムへの反映を自動化することができ、開発と運用の隙間をなくし、柔軟なシステム構築や改修を可能にします。

CI/CD

CI/CD(Continuous Integration/Continuous Delivery)は、DevOpsにおける継続的インテグレーション/継続的デリバリーを実現する開発手法です。CI/CDでは開発/修正したソースを自動的にビルド-テスト-デプロイ可能状態にします。これはテストの自動化と組み込みの自動化という2つの部分に分かれます。テストは全て自動化できるのではなく、テスト方法とテスト項目は開発者が設定する必要があります。自動化できるのはテストをして結果を出力する部分です。実はここにAIを適用することで類似性のあるプログラムをテストする場合にテスト方式や項目設定を自動化するという試みもあります。AIの開発をAIでテストすることもありえるので興味深い話です。

次に稼働システムへの組み込みですが、テストを合格したものはいつでも反映(デプロイ)可能になっているので、自動適用することもできますし、タイミングを決めて適用することもできます。不具合がでたらロールバック(元に戻す)するのも自動化しています。これによりシステムの改修作業が素早く行なえるようになり、開発効率とスピードを上げることができます。

AIOpsの用途

ここでは、AIOpsが使われる主な用途について以下に説明します。

パフォーマンス監視

AIが得意とするビッグデータからの収集・分析処理によりITシステムのパフォーマンスの監視と分析が可能です。システムで発生する大量のイベントデータを収集し、AIに学習させた分析機能により、パフォーマンスが正常な値を保っているのか、問題があるとしたら原因はどこにあるのかといった分析を行ないます。

システムログの監視や分析について既存のツールも存在しますが、分析手法や出力内容が決まっているため、日々変化していくシステムに追随することが難しくなっています。その点AIは学習機能があるので、常に自分たちが求める視点での最新の分析データを得ることができます。

異常検知

システムの異常検知は意外と自動化が難しい部分です。ハードウェアは各ハードがエラーを報告する機能を持っているので、大部分が自動化可能なのですが、ソフトウェアの異常はシステムダウンなどの明らかなものはともかく、スローダウン(システムの応答が遅くなる)のようなシステムの動きとしては正常でも使っている人間にとっては挙動がおかしいといったものは、簡単に自動検知することはできません。

その場合はシステムの様々なデータから「この部分がこういう値を示しているときは異常」という定義を人間が行なう必要があります。AIOpsでは様々なシステムデータからAIが異常のしきい値となるKPIを学習します。または、機械学習モデルによる予測値と実際のKPIを比較することで異常を判断させます。

根本原因の分析

根本原因の分析はイベントが発生した場合に、なぜ発生したのかを分析する機能です。イベント発生やシステムログの監視からエラーを検知した場合や障害発生時には、そのトラブルがなぜ発生したのかという根本の原因が分からないと対応ができません。

AIOpsでは関連する大量のイベント情報を解析し、類似性と重要性に基づいて分類します。発生しても対処しなくてよいイベントは無視することができ、対処が必要な重要イベントは類似性に基づいて処理を検索します。イベント処理はルールベースで学習し、必要な処理をルールに基づいて行ないます。

IT サービス管理

ITサービス管理 (ITSM) は、社内ユーザーが使うITサービスを管理するものです。設計、構築、サポートなど社内ITサービスに関する全てを管理します。AIOpsではビッグデータ分析による問題解決をAIが学習することで、社内ユーザーがトラブルにあったときに、原因の特定・対処を行ない、ユーザーの作業効率と生産性を向上させます。

自動化

ツールによる自動化は、該当する自動化に関する情報を複数のソースにまたがって調べる必要があり、人手だと時間がかかります。AIOpsでは最初から複数のソースによる大量データを元にAIが学習を行なうので、自動化できる対象について広く効率的に情報収集することができます。例えば社内システムの監視では各種ログを参照してアラートを出す必要がありますが、監視ツールが一定のしきい値に基づくアラートしか出せないのに比べて、AIOpsは過去の蓄積データから特定の日に稼働状況が変化することを学習するので一定のしきい値ではなく動的にしきい値を変更できるようになります。

また、重複アラートはまとめて出力したり、警告不要なイベントはアラートを出さないなどのルールを学習していくことで、より効率的な自動システム監視を実現できます。

AIOps のメリット

AIOpsを使った場合のメリットについて以下に説明します。

処理の速さと正確さを IT 運用に取り入れられる

人手による運用と違いAIOpsではコンピューターによる処理になるため、迅速で正確な処理が期待できます。AIは学習によって処理範囲を広げていけるので、時間をかければかなりの部分をAIでの運用に任せることができるようになります。

手作業を自動化して生産性が高まる

従来トラブル発生時の対応やシステムアップデートなどは人手によるものがほとんどでした。トラブルについては機知のもので対応方法まで分かっていればAIによる自動化は比較的簡単です。システムアップデートもアップデート自体は自動化していることが多く、アップデート後の確認方法がルール化できればAIが学習してアップデート-確認-問題があればロールバックという形で自動化が可能になります。このようにAIの学習機能を利用することで従来は自動化できなかった作業を自動化できるようになり、人間はAIが対応できない部分に集中することで生産性が高まります。

問題修復のスピードが向上する

AIはパターンを沢山憶えるほど対応能力が増していきます。問題発生の検知から解決までのスピードは経験を重ねるたびに速くなります。また修復に時間がかかるトラブルも一度解決法をAIが学習してしまえば、人手によらず高速に修復することが可能になります。このように学習経験が多くなるの比例してAIによる問題解決と修復のスピードが向上します。

代表的なAIOpsツール

以下に代表的なAIOpsツールを紹介します。

Splunk

SplunkはアメリカのSplunk Inc.が提供しているAIOpsツールです。ログ解析を得意としており、様々なシステムのログを基にビッグデータ分析を行い、運用管理の自動化、セキュリティモニターとネットワークアクセス分析、稼働データ分析によるパフォーマンスレポートやインシデントレポートなどシステム運用状況の可視化を行なうことができます。分析対象もサーバーを始めとして、ネットワークにつながるログ機能を持つほとんどの機器を対象にしているため、多種多様なログを統合管理して、同じ切り口や個々に必要な切り口など色々なレポート分析を可能にしています。

OpsRamp

OpsRampはアメリカのOpsRamp Inc.が提供しているAIOpsツールです。Saas(Software as a Service)型のソフトウェアでインターネット上のクラウドサービスとして提供されます。IT運用管理に必要な機能が一通り揃っており、企業は必要なものを選んで契約することができます。提供されている機能は、インフラ環境の運用・監視、セキュリティ対応(監視・追跡・対処の自動化)、各種運用管理機能(イベント管理、異常検知、システム監視など)です。マルチテナント・マルチレイヤ、プライベート/パブリッククラウドなど多種多様な環境に対応しており、小規模ユーザから大規模ユーザ、国をまたがるシステムまで幅広いユーザーに提供されています。

Watson OpenScale

Watson OpenScaleはアメリカのIBM社が提供しているAIOpsツールです。今まで紹介してきた製品とは少し異なり、「AIのブラックボックス問題」を解決するためのツールです。「AIのブラックボックス問題」とは、AIを運用管理に用いたときに、AIが正しい判断をしているかどうかは専門家しか分からず、実際に運用している人間には結果は正しくてもそこに至った経路が分からないため、本当に信じていいのか不安視される問題を指します。Watson OpenScaleはこれから使おうとするAIが正しいかどうかを判定するための環境です。

Watson OpenScale上でAIを動作させ、その振る舞いや入出力をモニタリングします。結果はAccuracy(判定精度)、Fairness(判定結果の公正さ)、 Explainability(説明可能性)の3つで評価されます。AccuracyはAIの判断が正しいかどうかを判定します。FairnessはAIの判定結果にバイアス(特定のデータに有利/不利が発生すること)がかかっていないかを判定します。Explainabilityは入力データと結果の間に正しい論理関係があるかどうかを判定します。

これらの3つ全てに合格すれば、そのAIは正しく動作していると言えます。2019年6月にはバイアス監視推奨機能が追加されました。これは事前に入力データにバイアスを誘発する可能性があるかどうかを判断し、あらかじめバイアスの監視を推奨する機能です。これによりFairnessの判定がより厳格にできるようになりました。

AIOpsを導入する方法

AIOpsの導入は段階的に行なうのがよいとされています。適用分野をデータソースごとに編成して、小さな範囲から始めていくのが最も推奨される始め方です。ある程度成果を得たら徐々に範囲を拡大するのがよいでしょう。

限定したデータを対象に開始する

AIOpsでは様々なデータソースを取り込むことが必要ですが、いきなり多くのデータを取り込むと結果が出るまでに時間がかかる上に、誤った学習をしてしまった場合、その時間が無駄になります。例えばシステム監視と対象を絞ったなら、システムログを取り込む事から始めるべきでしょう。システムログは実際のシステムの稼働状況を示すデータですから学習効率も良いですし、人間が見ても分かりやすいので、正しい結果を出しているかの判定もしやすいです。このようにAIの利用目的に沿った限定したデータから開始しましょう。

取り込むデータの範囲を拡大して分析する

最小データでの検証がうまくいったなら、次にデータソースを増やします。AIOpsの特徴は異なるデータソースから相関や類似性を発見して関連づけしていくことにあるので、同種のデータだけを学習させるのは効率的ではありません。もっともデータソースの種類についてはAIに何を期待するかによって検討する必要があります。例えばシステムの各資源の管理を行ないたいなら、それらの利用状況履歴やモニタリングデータなどを取り込むべきですし、ユーザーへのレスポンスを改善したいのならアプリケーションログやユーザーの使用履歴などを取り込みましょう。

範囲や規模を順序だてて拡大する

システム運用上の課題を順位付けして優先度の高い問題から対応しましょう。まずは問題の原因を調査します。次に問題を発見するためのデータ監視を行ないます。ここからがAIOpsの適用です。問題解決に最も役立つと考えられるAIOpsを導入します。問題発生のトリガーと原因は分かっているので、AIOpsにデータを取り込ませ、得られた学習結果からどの位の精度で問題を検知できるかを確認します。運用チームの介入が必要な問題であれば、AIOpsの検知によりどの程度問題修復時間を減らし、ユーザー業務への影響を縮小できるかを検討します。最後にAIによる根本原因の分析を行い、予測環境の確立と発生時の対処について決定し防止体制を作ります。

関連記事Related Posts