1) テストベッド 図3に示すように、マイクロサービスアプリケーションであるSock-shop 1を、クラウド上の複数のVMにKubernetesでデプロイしています。kuberneteクラスタでは、マスターノード1台とワーカーノード3台を用意しました。その構成は、Ubuntu 18.04、4vCPU、16G RAM Memory、80G Diskです。マスターノードには、Prometheus2、Grafana3などの監視ツールを導入し、システム全体の監視とアプリケーションレベルおよびリソースレベルのデータ収集を継続的に行っています。また、マスターノードには、マイクロサービスアプリケーションのワークロードをシミュレートするための負荷生成ツール「Locust」4 を導入しています。ワーカーノードには、Sock-shopアプリケーションの13サービスを展開し、Kubernetesによって自動的に異なるVMに割り当てられます。 2) 異常の注入 マイクロサービスアプリケーションに3種類の異常を注入します。CPU hog、メモリリーク、ネットワーク遅延の3種類で、一般的に使用されているものです[15] [33]。CPU hogは、CPUリソースの不足である。各サービスのCPU資源を消費することで、CPUホグを注入する。メモリリークでは、各サービスに継続的にメモリを割り当てる。ネットワーク遅延は,トラフィック制御によりネットワークパケットを遅延させる.ネットワーク障害やDockerコンテナのリソース(CPU、メモリ)のストレステストをエミュレートできるツールpumba5を使用して、異常注入を実装しています。各サービスの異常は5分間継続し、次の注入の前にアプリケーションはコールドダウンします。 3) データ収集 マイクロサービスアプリケーションを監視するために[[Prometheus]]を導入し、リアルタイムで監視データを収集します。Prometheusは、5秒ごとにデータを収集するように設定されています。サービスレベルのデータとリソースレベルのデータの両方を収集します。サービスレベルでは、各サービスのレイテンシーを収集します。リソースレベルでは,CPU使用率,メモリ使用率,ディスクの読み書き,ネットワークの受信および送信バイトの合計など,コンテナリソース関連のメトリクスを収集します. 4) ベースライン手法 セクション II の関連研究から、因果推論に基づく根本原因の特定研究では、異なる因果構造学習法が使用されていることがわかる。我々のCausalRCAは、勾配に基づく因果構造学習法に基づいて開発されている。そこで、我々のCausalRCAの局所化性能を評価するために、異なる因果構造学習手法とPageRankを組み合わせたベースラインメソッドを設計した。その結果、制約に基づく手法PC、スコアに基づく手法GES、関数に基づく手法LiNGAMを選択した。