JP2022045680A - 障害原因特定プログラムおよび障害原因特定方法 - Google Patents

障害原因特定プログラムおよび障害原因特定方法 Download PDF

Info

Publication number
JP2022045680A
JP2022045680A JP2020151392A JP2020151392A JP2022045680A JP 2022045680 A JP2022045680 A JP 2022045680A JP 2020151392 A JP2020151392 A JP 2020151392A JP 2020151392 A JP2020151392 A JP 2020151392A JP 2022045680 A JP2022045680 A JP 2022045680A
Authority
JP
Japan
Prior art keywords
container
information
program
function
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2020151392A
Other languages
English (en)
Inventor
昌生 山本
Masao Yamamoto
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2020151392A priority Critical patent/JP2022045680A/ja
Priority to US17/368,899 priority patent/US11734098B2/en
Publication of JP2022045680A publication Critical patent/JP2022045680A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】クラウドコンピューティングシステムのコンテナ環境において、異常が発生した場合に、コンテナ内の動作アプリケーションに問題が発生しているのか、ホストOS側などの環境基盤側の問題なのかを切り分けることを課題とする。【解決手段】管理システムは、コンテナ環境で動作する各プロセスに関するプロセス情報を収集し、プロセス情報に基づき、コンテナごとにプロセスの派生関係を取得する。管理システムは、コンテナごとのプロセスの派生関係にしたがって、各プロセスの関数と各プロセスが動作するコンテナとを対応付けたシンボル情報を生成する。管理システムは、シンボル情報にしたがって、関数の頻度を集計した集計結果を生成し、集計結果に基づき、障害発生時の原因を特定する。【選択図】図2

Description

本発明は、障害原因特定プログラムおよび障害原因特定方法に関する。
クラウドコンピューティングシステムにおいて、コンテナ環境が利用されている。コンテナ環境はクラウドコンピューティングシステムにおいて使用される計算機基盤環境である。コンテナとは、ホストOS(Operating System)上に論理的な区画を作り、そこでアプリケーションを動作させるために必要なランタイム(ライブラリやミドルウェア)をアプリケーションと1つにパッケージ化した実行環境である。
コンテナによる仮想化は、ハイパーバイザー型仮想化のようなゲストOSを持たない。そこで、プロセススケジューリングなど、コンテナ内のアプリプロセスのプロセス管理機能の一部はホストOSが担っている。このため、ハイパーバイザー型仮想化とは違い、コンテナ内のアプリケーションは、コンテナ内でのPID(Process ID)とは別の値のホストOS上のPIDを持ち、ホストOS上のPIDのプロセス情報にはホストOS情報として直接アクセスできる。なお、ホストOS上からコンテナ内を隔離するために、コンテナ内のアプリケーションは、ホストOS上のPIDとは別にコンテナ内のPIDも有している。
ここで、コンピューティングシステムにおいて異常が発生した場合、異常の原因を特定する技術として、トレース手段が知られている。例えば、コンテナ、CPU(Central Processing Unit)、メモリ、仮想スイッチなど毎にリソース使用状況やデータの流れなどを採取し、どのコンポーネントで問題が発生しているかを切り分ける。
特表2018-518762号公報
しかし、トレース手段では問題発生箇所がコンテナ内の動作アプリケーションなのか、ホストOSなどの環境基盤側の問題なのかを切り分けることは困難である。
例えば、既存のOS情報(プロセス情報)だけでは、コンテナ内のプロセスとホストOS上プロセスの区別がつかず、ホストOS上からアクセスして得られるプロセス情報は、あくまでもホストOS上でのプロセス情報である。このため、ホストOS上で見えているプロセスがコンテナ内のプロセスかどうか、またどのコンテナ内のプロセスかどうか識別できない。
一つの側面では、クラウドコンピューティングシステムのコンテナ環境において、異常が発生した場合に、コンテナ内の動作アプリケーションに問題が発生しているのか、ホストOS側などの環境基盤側の問題なのかを切り分けることが可能な障害原因特定プログラムおよび障害原因特定方法を提供することを目的とする。
第1の案では、障害原因特定プログラムは、コンピュータに、コンテナ環境で動作する各プロセスに関するプロセス情報を収集する処理を実行させる。障害原因特定プログラムは、コンピュータに、前記プロセス情報に基づき、コンテナごとにプロセスの派生関係を取得する処理を実行させる。障害原因特定プログラムは、コンピュータに、前記コンテナごとの前記プロセスの派生関係にしたがって、前記各プロセスの関数と前記各プロセスが動作するコンテナとを対応付けたシンボル情報を生成する処理を実行させる。障害原因特定プログラムは、コンピュータに、前記シンボル情報にしたがって、前記関数の頻度を集計した集計結果を生成し、前記集計結果に基づき、障害発生時の原因を特定する処理を実行させる。
一側面において、クラウドコンピューティングシステムのコンテナ環境において、異常が発生した場合に、コンテナ内の動作アプリケーションに問題が発生しているのか、ホストOS側などの環境基盤側の問題なのかを切り分けることが可能な障害原因特定プログラムおよび障害原因特定方法を提供することができる。
図1は、本開示に係る発明が適用される計算機システムの模式図である。 図2は、本開示に係る管理システムの機能ブロック図である。 図3は、サンプリング部が取得するサンプリングデータを示す図である。 図4は、サンプリングデータ間の親子関係を説明する説明図である。 図5は、プロセス間の親子関係を説明する説明図である。 図6は、コンテナ管理構造体を示す図である。 図7は、コンテナ名‐PIDマップ情報を示す図である。 図8は、コンテナ管理構造体/マップ情報作成の作成手順を説明するフローチャートである。 図9は、コンテナ管理構造体/マップ情報作成のプログラムの処理手順を説明するフローチャートである。 図10は、オブジェクトファイル動的回収部の処理を説明するフローチャートである。 図11は、コンテナコンテキストを説明する説明図である。 図12は、コンテナコンテキスト毎シンボル解決部の処理を説明するフローチャートである。 図13は、サンプリング対象の仮想環境を示す模式図である。 図14は、ホストの解析結果の頻度出力部の出力を示す図である。 図15は、ゲストの解析結果の頻度出力部の出力を示す図である。 図16は、コンテナコンテキスト毎頻度出力部の出力を示す図である。 図17は、問題発生箇所判定部の処理の手順を説明するフローチャートである。 図18は、ハードウェア構成例を説明する図である。
以下に、本願の開示する障害原因特定プログラムおよび障害原因特定方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
[計算機システムについて]
図1は、本開示に係る発明が適用される計算機システムの模式図である。図1に示すように、計算機システム100は、一つ以上のサーバ装置110、一つ以上のクライアント端末160、管理システム200、及びそれらを相互に接続するネットワーク180から構成される。なお、クライアント装置160Aとクライアント装置160Bのいずれかを特定せずに指し示す場合は、符号を160とし、他の符号も同じ形式で表す。
サーバ装置110では、アプリケーションが稼働し、計算機システム100の利用者に対して情報サービスを提供する。ユーザは、クライアント端末160を介して、サーバ装置110を利用する。サーバ装置110はアプリケーションを稼働させるための必要なハードウェアを備える。サーバ装置110の構成は同一である必要はなく、それぞれの用途に応じて異なる構成を備えてもよい。
サーバ装置110は、アプリケーションとOSが利用する論理的なシステム構成を動的に分割あるいは多重化する目的で、コンテナを稼働させるサーバ装置である。図1に示すようにサーバ装置110は、コンテナ120、コンテナ管理ソフト130、ホストOS140、ハードウェア150、を備える。コンテナ120は、コンテナ管理ソフト130を通して、ホストOS140のカーネルを共有することで、ハードウェア150に含まれるCPUやメモリなどのリソースを隔離して作られた仮想的な空間である。なお、サーバ装置110のハードウェア150のCPUは、後述するPMC(Peformance Monitoring Counter)と呼ばれるレジスタを備える。本開示に係る障害原因特定プログラムは、PMCのカウンタが設定された上限値を超えた際に発生するオーバーフロー割り込みに伴って、OSカーネル中のドライバに後述するプロセスに関する情報の取得を指示する。本開示に係る障害原因特定プログラムは、サーバ装置110に実装されてサーバ装置110において実行されてもよいし、後述する管理システム200に実装されて、サーバ装置110の外部からサーバ装置110の情報を取得し、障害原因の解析を管理システム200において実行してもよい。
コンテナ120の内部には、アプリケーション122、ミドルウェア124、ライブラリ126が含まれる。アプリケーション122は、コンテナ120の内部で実行されるプログラムである。ミドルウェア124は、アプリケーション122を実行するために必要なソフトウェアである。ミドルウェア124は、ホストOS140とアプリケーション122の中間に位置し、様々なソフトウェアから共通して利用される機能を提供する。ライブラリ126は、汎用性が高い複数のプログラムを再利用可能な形でひとまとまりにしたものである。
コンテナが仮想化技術と異なる点は、仮想マシンのような従来の仮想化技術では、仮想マシン上でゲストOSを起動させる必要があったが、コンテナではゲストOSを起動させることなく、アプリケーション実行環境を構築することができる。つまり、仮想マシンに比べて少ないリソースでのアプリケーションの実行が可能であるため、メモリやCPUリソースを余分に使用することがない。
ネットワーク180は、有線通信、または、無線通信を介して通信する装置をそれぞれ相互に直結する。ネットワーク180には、複数の通信経路を構成するために、一つ以上の図示を省略したネットワークスイッチ、または、ルータを含んでもよい。また役割や伝送されるデータの特性に合わせて物理的、論理的に分割されていても良く、その分割は従来技術において一般的なものが利用されてもよい。このために、VLAN(Virtual Local Area Network)のように論理的にネットワーク空間を分割し多重化する技術が用いられてもよい。
なお、アプリケーション(サーバ装置110)と利用者(クライアント端末160)との通信をサービスネットワークとして設け、管理システム200とサーバ装置110の通信を管理ネットワークとして設けるなど、利用目的に合わせて別々に図示を省略したネットワークが構成されていてもよい。
一般にクラウドサービスでは、これらのシステム領域自体や、システム領域内に構築されたアプリケーション環境、さらにはアプリケーションが提供するITサービスの利用に対して、従量課金を行う方式が採用されている。
管理システム200は、サーバ装置110の構成や稼働状況を集中的に管理するためのものであり、計算機システム100の運用管理を担当する管理者が主に利用する。管理システム200は、サーバ装置110の運用状態を監視する少なくとも一つのコンピュータを備える。また、管理システム200は、KVMスイッチを備えもよい。KVMスイッチは、複数のサーバ装置のコンソール(キーボード、マウス、モニタ)ポートに、KVMスイッチ本体を接続することで限られたコンソールで操作対象を切り替え、サーバ装置の操作管理を行う装置である。また、管理システム200は、サーバ装置のコンソールを延長することができるKVMエクステンダーを備えてもよい。KVMエクステンダーを用いることで、サーバ装置のマシンルームと運用管理室を空間的に分離することができる。また、管理システム200は、サーバ装置やKVMスイッチのコンソールの機能をラック1Uサイズに集約したデバイスであるコンソールドロワーを備えてもよい。コンソールドロワーを用いることで、コンソールの使用スペースをラック1Uサイズに集約することができ、省スペース化が可能となる。また、ラックに収納できることから作業員の安全性が確保される。
クライアント端末160は、ネットワーク180に接続されることによって、サーバ装置110との相互通信が可能となる。クライアント端末160を使用するユーザは、クライアント端末160を操作することで、サーバ装置110が提供するITサービスを使用できる。すなわち、サーバ装置110は、クライアント端末160に入力されたユーザの要求に基づいて、アプリケーションの実行などの処理を行い、処理の結果をクライアント端末160に出力する。
[第一実施形態]
図2は、本開示に係る管理システムの機能ブロック図である。本開示に係る障害原因特定プログラムは、図1に示す管理システム200に実装されて実行されるものであってもよいし、計算機システム100のサーバ装置110に実装されて実行されてもよい。図2に示すように、本開示に係る管理システム200は、制御部210と、記憶部220と、データ収集部230と、解析処理部240と、出力生成部250と、を備える。
制御部210は、管理システム200全体を司る処理部であり、例えばCPUなどのプロセッサにより実現される。CPUは、PMC(Peformance Monitoring Counter)と呼ばれるレジスタを有する。PMCは、計算機システム100におけるハードウェアに関係する活動をカウントし、蓄積するレジスタである。また、CPUは、PMCで監視するイベントの種類および、カウンタ上限値を設定するレジスタを有する。
PMCのカウンタが設定された上限値を超えるとオーバーフロー割り込みが発生する。オーバーフロー割り込みによって、OSカーネル中のドライバ(sampling driver)が起動される。その為、ドライバは、起動されたタイミングで種々の情報、例えば、実行中のプロセスのID(以下、PID値)、実行中のプロセスの親プロセスのID(以下、PPID値)、実行中の命令のメモリアドレス(以下、命令アドレス)であるプログラムカウンタ(PC)、その他のレジスタの値等を採取できる。PMCを用いることで、プログラムカウンタ(PC)による問題箇所と共に、その問題を引き起こした原因に関連する可能性のあるイベントの種類を特定することができる。
記憶部220は、制御部210が実行するプログラム、あるいは、制御部210が処理するデータを記憶し、主記憶装置や外部記憶装置などによって実現される。主記憶装置は、例えば、RAMと、ROMのようなメモリなどによって実現され、外部記憶装置は、ハードディスクやSSD(Solid State Drive)によって実現される。
なお、記憶部220には、後述する問題発生箇所判定部258が判定に使用するためのデータとして、サーバ装置110の通常時の性能プロファイルの結果を予め記憶しておく。
[データ収集部について]
データ収集部230は、サンプリング部231、OS情報/環境情報収集部232、オブジェクトファイル静的回収部233、コンテナ管理構造体/マップ情報作成部234、オブジェクトファイル動的回収部235と、を備える。
サンプリング部231は、サーバ装置110が備えるCPUのPMCのカウンタが設定された上限値を超えた際のオーバーフロー割り込みを利用して、サンプリングデータとして、割り込み毎にその時点の動作プログラムを特定可能な情報であるPID値、PPID値、命令アドレスを取得する。図3は、サンプリング部231が取得するサンプリングデータを示す図である。図3に示すように、サンプリング部231は、サンプリングデータとして、PID値、PPID値、命令アドレスを取得する。サンプリング部231が、サンプリングする間隔である収集周期、および、サンプリングを継続する時間である収集時間は、任意に設定可能である。例えば、収集周期1ms、収集時間30秒と設定することができる。サンプリング部231は、取得した情報を記憶部220に記憶する。
OS情報/環境情報収集部232は、ホストOS140からOS情報として、PID値:プログラム名:プログラムのオブジェクトファイルのファイルパス、を対応付けて取得する。したがって、取得したPID値からプログラム名を特定することができる。また、PID値に対してプログラムのオブジェクトファイルのファイルパスが対応付けられている為、取得したPID値からオブジェクトファイルのファイルパス、すなわち、オブジェクトファイルのファイルシステム上の存在場所を特定することができる。
オブジェクトファイル静的回収部233は、OS情報/環境情報収集部232が、ホストOS140からOS情報として取得したPID値:プログラム名:プログラムのオブジェクトファイルのファイルパス、の組情報から、当該PID値に対応するプログラムのオブジェクトファイルのファイルパスを特定し、オブジェクトファイルをコピーして回収する。
[コンテナ管理構造体/マップ情報作成部]
コンテナ管理構造体/マップ情報作成部234は、サンプリング部231が取得した動作プログラムを特定可能な情報であるPID値、PPID値、命令アドレスに基づいて、プロセス派生の親子関係(派生関係)のツリーを作成する。図4は、サンプリングデータ間の親子関係を説明する説明図である。図4に示すように、サンプリングデータの内のPID値(図4の例の場合は3061)と、他のサンプリングデータの内のPPID値(図4の例の場合は3061)が一致する場合は、各サンプリングデータが示すプロセスの間に親子関係が存在する。
図5は、プロセス間の親子関係を説明する説明図である。コンテナ環境では、コンテナ管理ソフトをルートプロセスに持つプロセス間の親子関係のツリー構造が存在する。図5に示す通り、コンテナ管理プログラムの子プロセスがコンテナ本体に当たり、孫プロセス以降がコンテナで実行されるアプリケーションプログラムである。コンテナ管理構造体/マップ情報作成部234は、コンテナ管理プログラム名とそのPID値に基づいて後述して説明する「コンテナ管理構造体」、および、「コンテナ名‐PIDマップ情報」を生成する。
図6は、コンテナ管理構造体を示す図である。図6に示すように、「コンテナ管理構造体」は、コンテナに関する情報を集約した情報である。具体的には、コンテナ管理構造体は、コンテナ管理プログラムのPID、および、起動中のコンテナ数、に対して、コンテナ1個分(1コンテナコンテキスト)のコンテナ本体PID、コンテナ名、当該コンテナ内のプロセス数、マップへのポインタ、を全てのコンテナの数分、集約した情報である。
図7は、コンテナ名‐PIDマップ情報を示す図である。図7に示すように、「コンテナ名‐PIDマップ情報」は、特定のプロセスのPID値と一致するPPID値を持つプロセスに関する情報を一組にして、全てのコンテナにわたって集約した情報である。図7を用いて「コンテナ名‐PIDマップ情報」について説明する。例えば、コンテナ名test1で動作するプロセス/bin/bashは、PID値が18898である。他方、同じコンテナtest1で動作するプロセスhimeno.exeのPPID値は、18898であり、プロセス/bin/bashのPID値である18898と一致する。このように、「コンテナ名‐PIDマップ情報」には、特定のプロセスのPID値と一致するPPID値を持つプロセスを一組にして、プロセスに関する情報が集約されている。
図8は、コンテナ管理構造体/マップ情報作成の作成手順を説明するフローチャートである。図8を用いて、コンテナ管理構造体の作成手順を説明する。サンプリング部231が動作プログラムを特定可能な情報であるサンプリングデータ(PID値、PPID値、命令アドレス)を取得する(ステップS100)。
ホストOS140が管理しているプロセス情報、および、サンプリング部231が取得した動作プログラムを特定可能な情報を入力データとして、これらの中から、コンテナ管理プログラムのPID値をPPID値に持つサンプリングデータAi(i=1,2,...,n)を抽出する(ステップS110)。各サンプリングデータAiのPID値を図6に示す「コンテナ管理構造体」の中の「コンテナ本体PID」として記憶部220に記憶する(ステップS120)。なお、本ステップにおいては、ホストOS140が管理しているプロセス情報がメイン入力であり、サンプリング部231が取得した動作プログラムを特定可能な情報は、補助入力となる。これは、プロセスの中に、データ収集中には存在していたが、プロセス情報の回収時には既に終了していて存在しないプロセスがあり、そのようなプロセスの為の入力情報とする為である。なお、動作プログラムを特定可能な情報は、プログラム動作情報の一例である。
次に、各サンプリングデータAiに対し、図7に示す「コンテナ名‐PIDマップ情報」の為のメモリ領域(すなわち、データBij領域(j=1,2,...,m))を確保する(ステップS130)。ポインタを「コンテナ管理構造体」の中の該当するAiの「マップへのポインタ」に記録保持する(ステップS140)。なお、ポインタはプログラムからメモリに自在にアクセスする為のものである。
そして、入力データの中からPPID値にAiのPID値を持つデータBij(j=1,2,...,m)を抽出する(ステップS150)。「PID値、PPID値、コンテナ名」の組情報を必須として「コンテナ名‐PIDマップ情報」に記録保持する(ステップS160)。なお、ここで、コンテナ名の情報はコンテナ管理ソフトから取得する。また、図7に示す「コンテナ名‐PIDマップ情報」に含まれるプロセス名は、後述するシンボル解決処理時に追記する。
以降は、ステップS150からステップS160を繰り返すことによって、コンテナ管理プログラムをルートとしたプロセスの親子関係のツリー構造を「コンテナ管理構造体」、および、「コンテナ名‐PID値マップ情報」として生成する(ステップS170)。この内、少なくとも後処理に必要な「コンテナ名‐PIDマップ情報」は、記憶部220の主記憶装置か外部記憶装置に記憶しておく(ステップS180)。
図9は、コンテナ管理構造体/マップ情報作成のプログラムの処理手順を説明するフローチャートである。図9を用いて、コンテナ管理構造体/マップ情報作成部234を実現するプログラムの処理手順を説明する。プロセス情報を取得する(ステップS200)。動作プログラム情報を取得する(ステップS210)。
PPID値がコンテナ管理プログラムのPID値か判定する(ステップS220)。プロセスのPPID値がコンテナ管理プログラムのPID値の場合(ステップS220;YES)、コンテナ管理プログラムのPID値をPPID値に持つデータをデータAi(i=1,2,...)とする(ステップS230)。当該PID値をコンテナ管理構造体の「コンテナ本体PID」に記録する(ステップS240)。当該PID値を一時プロセスリストpに追加する(ステップS250)。取得した全てのPID値に対して、ステップS220からステップS250までを繰り返して実行する。
ステップS220において、PPID値がコンテナ管理プログラムのPID値ではないと判定された場合(ステップS220;NO)、ステップS230からステップS250までを実行せずに、次のPID値に対してステップS220からステップS250を実行する。
取得した全てのPID値に対してステップS220からステップS250までの処理の実行が完了したら、各データAi(i=1,2,...)に対して、マップ情報用のメモリ領域を確保し、確保したメモリ領域に対応するポインタをコンテナ管理構造体に記録する(ステップS260)。
一時プロセスリストpにPPID値があるか判定する(ステップS270)。一時プロセスリストpにPPID値がある場合(ステップS270;YES)、当該PID、PPID、コンテナ名を一組の情報として、当該データのポインタ先である「コンテナ名‐PIDマップ情報」に記録する(ステップS280)。当該PIDを一時プロセスリストqに追加する(ステップS290)。取得した全てのPIDに対して、ステップS270からステップS290までを繰り返して実行する。
取得した全てのPIDに対して、ステップS270からステップS290までの処理の実行が完了したら、一時リストqの中身が空か判定する(ステップS300)。一時リストqの中身が空の場合(ステップS300;YES)、処理を終了する。一時リストqの中身が空ではない場合(ステップS300;NO)、一時リストqの中身を一時リストpに上書きした後に、一時リストqを削除する(ステップS310)。一時リストqの中身が空になるまで、ステップS270からステップS300を繰り返す。
[オブジェクトファイル動的回収部]
オブジェクトファイル動的回収部235は、コンテナ消滅のタイミングで、オブジェクトファイルの回収を行う。コンテナ消滅自体のタイミングを捉えることは、消滅状態への遷移がファイル削除であることから、コンテナ管理ソフトの外部から捉えることは難しい。その為、オブジェクトファイル動的回収部235は、図10に示す手順でオブジェクトファイルを回収する。
図10は、オブジェクトファイル動的回収部の処理を説明するフローチャートである。図10を用いて、オブジェクトファイル動的回収部235の処理を説明する。ホストOS140のプロセス終結処理をフックする(ステップS400)。なお、フックとはプログラムのプロセス、もしくは、プロセスで発生したイベントを奪い取ることである。ホストOS140のプロセス終結処理をフックしたら、終結プロセスのPID値がコンテナ管理ソフトのプロセス管理構造体に登録されているコンテナ本体のPID値かどうか判定する(ステップS410)。終結プロセスのPID値がコンテナ管理ソフトのプロセス管理構造体に登録されているコンテナ本体のPID値の場合(ステップS410;YES)、コンテナ内プロセスのプロセス情報からオブジェクトファイルの場所を特定し、オブジェクトファイルを回収する(ステップS420)。なお、回収はコンテナ管理ソフトの機能を利用してコンテナ内からホストOS上に回収する。終結プロセスのPID値がコンテナ管理ソフトのプロセス管理構造体に登録されているコンテナ本体のPID値ではない場合(ステップS410;NO)、プロセス情報のみ収集する(ステップS430)。
このようにオブジェクトファイル動的回収部235によれば、サンプリングデータの取得時に消滅コンテナがあった場合でも、プロセス終結処理をフックすることで、コンテナ内に存在していたオブジェクトファイルを回収することができる。その為、サンプリングデータの取得時に消滅コンテナがあった場合にも、コンテナコンテキスト毎の性能プロファイリングが可能となる。したがって、異常の発生箇所の特定をしやすくすることができる。
[解析処理部について]
図2に示すように、解析処理部240は、シンボル解決部242と、頻度集計部244と、を備える。そして、シンボル解決部242は、コンテナコンテキスト毎シンボル解決部243を備え、頻度集計部244は、コンテナコンテキスト毎頻度集計部245を備える。
シンボル解決部242は、データ収集部230が収集したデータに基づいてシンボル解決を実施する。ここで、シンボルとは、プロセス名、あるいは、プロセスで実行されるプログラム名、プログラム内の関数名、変数名等の名前識別子である。シンボル解決とは、CPU、あるいは、OS等が処理対象を特定する為の識別情報(例えば、PID、レジスタ値、命令アドレスなど)をプロセス名、あるいは、プログラム内の名前識別子に対応付けること、あるいは、変換することなどをいう。すなわち、シンボル解決を実行することによって、サンプリングデータをプロセス名、あるいは、プログラム内の名前識別子に対応付けることが可能となる。
サンプリングしたデータのシンボル解決を実行することで、ユーザはサンプリングしたデータの解析結果から、どこに異常があるか判断できる。ただし、シンボル解決は、例えば、命令アドレスとシンボルとの対応関係を検索する処理を含むため、時間を要する。
コンテナコンテキスト毎シンボル解決部243は、コンテナコンテキスト毎にシンボル解決を実施する。なお、コンテナコンテキストとはコンテナ空間(ホストOSから見ると通常のユーザープロセスと同じ)から呼び出され実行される一連の処理を意味する。コンテナコンテキストには、コンテナ上で実行されるアプリケーションの処理の延長で実行されるホストOS内の処理(システムコール処理など)も含む。同じコンテナに属する複数の処理(コンテキスト)は、同じコンテナコンテキストとする。
図11は、コンテナコンテキストを説明する説明図である。図11に示すように、コンテナコンテキストとは、コンテナの上で実行されるアプリケーションに関連して実行される一連の処理である。例えば、図11に示す処理Cは、アプリケーションから、ライブラリが呼び出されて、ライブラリからOSが呼び出されて処理が実行される。同じコンテナに属する複数の処理は同じコンテナコンテキストであるから、図11に示す処理A、B、Cは、同一のコンテナコンテキストである。
図12は、コンテナコンテキスト毎シンボル解決部の処理を説明するフローチャートである。図12を用いて、コンテナコンテキスト毎シンボル解決部243の処理について説明する。なお、主体がコンテナコンテキスト毎シンボル解決部243ではない処理についてもフローチャートに記載して説明している。主体がコンテナコンテキスト毎シンボル解決部243ではない処理をコンテナコンテキスト毎シンボル解決部243の処理として含めてもよい。
サンプリング部231が、PID、PPID、命令アドレスを取得する(ステップS500)。OS情報/環境情報収集部232が、ホストOS140からOS情報として、PID:プログラム名:プログラムのオブジェクトファイルのファイルパス、の組情報を取得する(ステップS510)。したがって、これらの情報を参照することで、コンテナコンテキスト毎シンボル解決部243は、PIDから、プログラム名を特定することができる。
コンテナコンテキスト毎シンボル解決部243は、OS情報からオブジェクトファイルのファイルパス、すなわち、ファイルシステム上の存在場所を特定する(ステップS520)。コンテナコンテキスト毎シンボル解決部243は、「コンテナ名‐PIDマップ情報」を参照して、処理対象のPIDが「コンテナ名‐PIDマップ情報」に含まれるか判定する(ステップS530)。
コンテナコンテキスト毎シンボル解決部243は、処理対象のPIDが「コンテナ名‐PIDマップ情報」に含まれる場合(ステップS530;YES)、処理対象のPIDに対応する該当オブジェクトファイルを「コンテナ名‐PIDマップ情報」から得られる当該PIDが動作していたコンテナ上から回収する(ステップS540)。コンテナコンテキスト毎シンボル解決部243は、オブジェクトファイルが回収されたら、シンボル名の前に当該マップ情報から得られる当該PIDのコンテナ名を当該シンボル(関数)が動作していたコンテナ名として付与する(ステップS550)。例えば、コンテナ名がctn1、関数名がfooの場合は、「ctn1::foo」というシンボルとして出力する。コンテナコンテキスト毎シンボル解決部243は、シンボル名の前に、コンテナ名が付与されたら、収集データをコンテナ名でグルーピングする(ステップS560)。
コンテナコンテキスト毎シンボル解決部243は、処理対象のPIDが「コンテナ名‐PIDマップ情報」に含まれない場合(ステップS530;NO)、ステップS520においてOS情報から特定された場所から、オブジェクトファイルを回収する(ステップS570)。
以上から、コンテナコンテキスト毎シンボル解決部243は、各サンプリングデータ中の命令アドレスに関数名を対応付けることができる。また、コンテナコンテキスト毎シンボル解決部243は、コンテナ名でグルーピングしてデータを出力する為、コンテナコンテキスト毎の分析が可能となる。
頻度集計部244は、シンボル解決部242が命令アドレスに対応付けた関数名に基づいて、関数単位で頻度集計する。これにより、カウントに使用した性能イベントが、プログラム中のどの処理で多く発生したかを知ることができる。例えば、プログラム中のどの処理でCPU時間の多くを消費しているか、どの処理の命令が多く実行されたか、について知ることができる。
コンテナコンテキスト毎頻度集計部245は、コンテナコンテキスト毎シンボル解決部243がコンテナコンテキスト毎にシンボル解決を実施した結果に対して頻度集計を実施する。したがって、コンテナコンテキスト毎頻度集計部245によれば、コンテナ上で動作した処理の延長上で動作した一連の処理についても、その処理の頻度を把握することができる。
[出力生成部について]
図2に示すように、出力生成部250は、頻度出力部252と、コンテナコンテキスト毎頻度出力部254と、時間分割頻度順出力部256と、問題発生箇所判定部258と、を備える。
頻度出力部252は、シンボル解決部242が、サンプリングデータに基づいて、命令アドレスに関数名を対応付けたデータに対して、頻度集計部244が頻度集計した集計結果を、頻度順に出力する。
頻度出力部252の出力について具体例を用いて説明する。図13は、サンプリング対象の仮想環境を示す模式図である。図13に示すように、仮想環境は、ホスト400に4つの物理CPU(pCPU0_410、pCPU1_420、pCPU2_430、pCPU3_440)を備える。仮想マシン500には、ホスト400の物理CPU(pCPU0_410)を用いて、仮想CPU(vCPU0_510)が割り当てられ、物理CPU(pCPU1_420)を用いて、仮想CPU(vCPU1_520)が割り当てられている。また、仮想CPU(vCPU0_510)を用いて、コンテナ(ctn1_610)が構築され、物理CPU(pCPU2_430)を用いて、コンテナ(ctn2_620)が構築されている。図13に示すように、アプリケーション(himeno_700)は、次の4つの実行環境にバインドして実行される。(1)物理CPU(pCPU0_410)上で動作する仮想CPU(vCPU0_510)に構築されるコンテナ(ctn1_610)、(2)物理CPU(pCPU1_420)上で動作する仮想CPU(vCPU1_520)、(3)物理CPU(pCPU2_430)に構築されるコンテナ(ctn2_620)、(4)物理CPU(pCPU3_430)。
図14は、ホストの解析結果の頻度出力部の出力を示す図である。図14を用いて、頻度出力部252の出力を説明する。図14は、サンプリング部231が、収集周期1ms、収集時間30秒で、サンプリングを行ったデータに対して、シンボル解決、および、頻度集計が行われた結果を高頻度順に表示している。図14においてTotalの下に表示されている数字は、図14の右端に表示されている各関数のホスト全体でのデータサンプリング数を示している。図14においてratioの下に表示されている数字は、図14の右端に表示されている各関数のホスト全体における動作比率を示している。図14においてpCPU0、pCPU1、pCPU2、pCPU3の文字の下に表示される数字は、図14の右端に表示されている各関数のpCPU0、pCPU1、pCPU2、pCPU3の各物理CPUにおけるデータサンプリング数を示している。
図14を参照すると、例えば、[ctn2]:usr/bin/himeno::jacobiの左側に表示される数字から、コンテナ(ctn2)の上で実行されるhimenoは、ホスト全体において21.66%の動作比率であることがわかる。また、コンテナ(ctn2)の上で実行されるhimenoは、ホスト400が備える4つの物理CPUの内、pCPU2のみで処理が実行され、pCPU2でのデータサンプリング数は26007であることがわかる。
このようにホストの解析結果の頻度出力部252の出力を確認することで、ホスト全体において、どの関数に最も処理が集中しているかを把握することができる。
図15は、ゲストの解析結果の頻度出力部の出力を示す図である。図15は、図14と同じく、収集周期1ms、収集時間30秒で、サンプリングを行ったデータに対して、シンボル解決、および、頻度集計が行われた結果を高頻度順に表示している。図15においてTotalの下に表示されている数字は、図15の右端に表示されている各関数のゲスト全体でのデータサンプリング数を示している。図15においてratioの下に表示されている数字は、図15の右端に表示されている各関数のゲスト全体における動作比率を示している。図15において、vCPU0、vCPU1の下に表示される数字は、図15の右端に表示されている各関数のvCPU0、vCPU1の各仮想CPUでのデータサンプリング数を示している。
図15を参照すると、例えば、[ctn1]:usr/bin/himeno::jacobiの左側に表示される数字から、コンテナ(ctn1)の上で実行されるhimenoは、ゲスト全体において42.94%の動作比率であることがわかる。
このようにゲストの解析結果の頻度出力部252の出力を確認することで、ゲスト全体において、どの関数に最も処理が集中しているかを把握することができる。
コンテナコンテキスト毎頻度出力部254は、コンテナコンテキスト毎シンボル解決部243が、コンテナコンテキスト毎にシンボル解決を行った結果に対して、コンテナコンテキスト毎頻度集計部245がコンテナコンテキスト毎に頻度集計した結果を、頻度順に出力する。
図16は、コンテナ(ctn2)のコンテナコンテキスト毎の頻度集計の頻度出力を示す図である。図16の右端に表示されている関数名の前にコンテナ名が付与された[ctn2]:usr/bin/himeno::jacobi、および、[ctn2]:usr/lib64/libc-2.28.so::memcpyは、コンテナ上で実行されるアプリケーションの関数である。また、図16の右端に表示されているコンテナ上で実行されるアプリケーションの関数の下方に表示されているprepare_exite_to_usermodeから、native_sched_clockまでに表示されている関数は、コンテナの処理延長上で動作したホストOSのカーネル関数である。また、図16の右端の下端に表示されているusr/bin/docker-containerd-shimは、コンテナ本体プログラムである。
このように、コンテナコンテキスト毎頻度集計部245の集計結果をコンテナコンテキスト毎頻度出力部254が出力した結果を確認することで、コンテナ上で動作した処理の延長上で動作した一連の処理についても、その処理の頻度を把握することができる。
図14、図15、図16を用いて説明したように、頻度出力部252は、サンプリンデータを取得したホスト毎、ゲスト毎、コンテナ毎に頻度集計した結果を出力することができる。したがって、頻度出力部252の出力を確認することで、異常が発生した場合に、異常が発生した箇所の絞り込み作業を効率的に実施することができる。
時間分割頻度順出力部256は、サンプリング部231がサンプリングデータを収集する収集時間全体を所定の時間間隔で区切り、所定の時間間隔で頻度集計した結果を時系列で出力する。
時間分割頻度順出力部256が出力した時系列データを確認することで、一時的に発生した性能の変化、あるいは、異常が検知可能となる。
問題発生箇所判定部258は、頻度出力部252、又は、コンテナコンテキスト毎頻度出力部254の出力結果と、通常時の性能プロファイルの結果と、を比較して異常について判定する。
図17は、問題発生箇所判定部の処理の手順を説明するフローチャートである。図17を用いて問題発生箇所判定部258の処理を説明する。頻度集計部244が集計したコンテナコンテキスト毎の各関数の頻度の集計結果を取得する(ステップS600)。取得した各関数の頻度の集計結果に記憶部220に記憶された通常時の性能プロファイルの結果に登場しない関数が登場しているか判定する(ステップS610)。通常時の性能プロファイルの結果に登場しない関数が登場する場合(ステップS610;YES)、当該関数が登場するコンテナを抽出する(ステップS620)。次に、取得した各関数の頻度の集計結果と、通常時の性能プロファイルの結果とを比較して、関数比率が異なるコンテナがあるか判定する(ステップS630)。ここで、関数比率が異なるコンテナがあるか否かは、コンテナで実行される関数の中に、通常時と比較して所定の動作比率の差がある関数が存在するか否かを基準に判定してよい。例えば、通常時と比較して動作比率が15points以上異なる関数が存在するコンテナがある場合に、当該コンテナは関数比率が異なるコンテナであると判定してよい。関数比率が異なるコンテナがある場合(ステップS630;YES)、関数比率が異なるコンテナを抽出する(ステップS640)。関数比率が異なるコンテナが抽出されたら、抽出されたコンテナの全コンテナに対する割合が所定の閾値以上か判定する(ステップS650)。ここで、ステップS650における抽出されたコンテナの全コンテナに対する割合の所定の閾値は、例えば、90%以上としてよい。抽出されたコンテナの全コンテナに対する割合が所定の閾値以上の場合(ステップS650;YES)、異常が発生した原因はインフラ側の問題と判定する(ステップS660)。
通常時の性能プロファイルの結果に登場しない関数は登場しない場合(ステップS610;NO)、取得した各関数の頻度の集計結果と、通常時の性能プロファイルの結果とを比較して、関数比率が異なるコンテナがあるか判定する(ステップS670)。関数比率が異なるコンテナがある場合(ステップS670;YES)、関数比率が異なるコンテナを抽出する(ステップS640)。
ステップS670において、関数比率が異なるコンテナがない場合(ステップS670;NO)、正常と判定する(ステップS700)。
ステップS650において、抽出されたコンテナの全コンテナに対する割合が所定の閾値以上ではない場合(ステップS650;NO)、抽出されたコンテナの全コンテナに対する割合が所定の閾値以下か判定する(ステップS680)。ここで、ステップS680における抽出されたコンテナの全コンテナに対する割合の所定の閾値は、例えば、10%以下としてよい。抽出されたコンテナの全コンテナに対する割合が所定の閾値以下の場合(ステップS680;YES)、異常が発生した箇所はコンテナ側であると判定する(ステップS690)。
ステップS680において、抽出されたコンテナの全コンテナに対する割合が所定の閾値以下ではない場合(ステップS680;NO)、異常が発生した箇所は不明であると判定する(ステップS710)。
このように問題発生箇所判定部258は、コンテナコンテキスト毎の性能プロファイリングの結果と、通常時の性能プロファイルの結果を比較することによって、異常が発生しているか否か、および、異常が発生している場合は、異常が発生している箇所はインフラ側かコンテナ側か、又は、異常の発生している箇所は不明かを判定する。したがって、クラウドコンピューティングシステムのコンテナ環境において、コンテナ内の動作アプリケーションに問題が発生しているのか、ホストOS側などの問題なのかを切り分けることが可能となる。
次に、本開示に係る障害原因特定プログラムを実装した管理システム200の処理について、以下の順序で説明する。
1.サンプリングデータの取得
2.コンテナ管理構造体、コンテナ名‐PID値マップ情報の作成
3.オブジェクトファイルの動的回収
4.コンテナコンテキスト毎のシンボル解決
5.コンテナコンテキスト毎の頻度集計
6.コンテナコンテキスト毎の頻度出力
7.問題発生箇所の判定
1.サンプリングデータの取得
管理システム200は、サンプリング部231を介して、サーバ装置110からサンプリングデータを取得する。サンプリングデータを取得したら、OS情報/環境情報収集部232が、ホストOS140からOS情報として、PID:プログラム名:プログラムのオブジェクトファイルのファイルパス、の組情報を取得する。OS情報を取得したら、オブジェクトファイル静的回収部233は、OS情報として取得したPID値から、当該PID値に対応するプログラムのオブジェクトファイルのファイルパスを特定し、オブジェクトファイルをコピーして回収する。
2.コンテナ管理構造体、コンテナ名‐PID値マップ情報の作成
管理システム200は、サンプリングデータの取得が完了したら、コンテナ管理構造体、および、コンテナ名‐PIDマップ情報を作成する。コンテナ管理構造体、および、コンテナ名‐PIDマップ情報の作成手順は、前述の通りであるから説明を省略する。
3.オブジェクトファイルの動的回収
管理システム200は、オブジェクトファイル動的回収部235を介して、コンテナ消滅のタイミングで消滅コンテナのオブジェクトファイルを回収する。
4.コンテナコンテキスト毎のシンボル解決
管理システム200は、データ収集部230が収集したサンプリングデータ、オブジェクトファイルを用いて、コンテナコンテキスト毎シンボル解決部243を介して、コンテナコンテキスト毎にシンボル解決を実行する。コンテナコンテキスト毎のシンボル解決は、前述の通りであるから説明を省略する。
5.コンテナコンテキスト毎の頻度集計
管理システム200は、コンテナコンテキスト毎のシンボル解決が完了したら、コンテナコンテキスト毎頻度集計部245を介して、コンテナコンテキスト毎に頻度集計を行う。コンテナコンテキスト毎の頻度集計は、前述の通りであるから説明を省略する。
6.コンテナコンテキスト毎の頻度出力
管理システム200は、コンテナコンテキスト毎の頻度集計が完了したら、コンテナコンテキスト毎頻度出力部254を介して、コンテナコンテキスト毎の頻度集計の結果を頻度順に出力する。
7.問題発生箇所の判定
管理システム200は、コンテナコンテキスト毎の頻度出力が完了したら、問題発生箇所判定部258を介して、コンテナコンテキスト毎の頻度出力の結果と、記憶部220に記憶された通常時の性能プロファイルの結果と、を比較して問題発生箇所について判定する。問題発生箇所の判定については前述の通りであるから、説明を省略する。
以上説明したように、本開示に係る障害原因特定プログラムを実装した管理システム200によれば、クラウドコンピューティングシステムのコンテナ環境において、コンテナ内の動作アプリケーションに問題が発生しているのか、ホストOS側などの環境基盤側の問題なのかを切り分けることが可能となる。
[数値等]
上記実施例で用いたサーバ台数、等は、あくまで一例であり、任意に変更することができる。
[システム]
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
[ハードウェア構成]
図18は、ハードウェア構成例を説明する図である。図18に示すように、情報処理装置800は、通信装置810、HDD(Hard Disk Drive)820、メモリ830、プロセッサ840を有する。また、図18に示した各部は、バス等で相互に接続される。
通信装置810は、ネットワークインタフェースカードなどであり、他の装置との通信を行う。HDD820は、図2に示した機能を動作させるプログラムやDBを記憶する。
プロセッサ840は、図2に示した各処理部と同様の処理を実行するプログラムをHDD820等から読み出してメモリ830に展開することで、図2等で説明した各機能を実行するプロセスを動作させる。例えば、このプロセスは、情報処理装置800が有する各処理部と同様の機能を実行する。具体的には、プロセッサ840は、データ収集部230、解析処理部240、出力生成部250等と同様の機能を有するプログラムをHDD820等から読み出す。そして、プロセッサ840は、データ収集部230、解析処理部240、出力生成部250等と同様の処理を実行するプロセスを実行する。
このように、情報処理装置800は、プログラムを読み出して実行することで障害原因特定方法を実行する情報処理装置として動作する。また、情報処理装置800は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、情報処理装置800によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD-ROM、MO(Magneto-Optical disk)、DVD(Digital Versatile Disc)などのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
200 管理システム
210 制御部
220 記憶部
230 データ収集部
231 サンプリング部
232 OS情報/環境情報収集部
233 オブジェクトファイル静的回収部
234 コンテナ管理構造体/マップ情報作成部
235 オブジェクトファイル動的回収部
240 解析処理部
242 シンボル解決部
244 頻度集計部
245 コンテナコンテキスト毎頻度集計部
250 出力生成部
252 頻度出力部
254 コンテナコンテキスト毎頻度出力部
256 時間分割頻度順出力部
258 問題発生箇所判定部

Claims (8)

  1. コンピュータに、
    コンテナ環境で動作する各プロセスに関するプロセス情報を収集し、
    前記プロセス情報に基づき、コンテナごとにプロセスの派生関係を取得し、
    前記コンテナごとの前記プロセスの派生関係にしたがって、前記各プロセスの関数と前記各プロセスが動作するコンテナとを対応付けたシンボル情報を生成し、
    前記シンボル情報にしたがって、前記関数の頻度を集計した集計結果を生成し、
    前記集計結果に基づき、障害発生時の原因を特定する処理を実行させることを特徴とする障害原因特定プログラム。
  2. 前記収集する処理は、
    一定間隔で、コンテナ内で動作する各動作プログラムに関する、前記各動作プログラムを起動した親プログラムに関する情報を含むプログラム動作情報を収集する処理を含み、
    前記取得する処理は、
    前記プロセス情報と前記プログラム動作情報とに基づき、前記プロセスの派生関係を取得し、
    前記生成する処理は、1つのコンテナから呼び出されて実行される一連の処理であるコンテナコンテキストごとに、前記集計結果を生成する、処理を含むことを特徴とする請求項1に記載の障害原因特定プログラム。
  3. 前記生成する処理は、
    前記プロセスの派生関係に含まれるプロセスについては、当該プロセスを実行するコンテナからオブジェクトファイルを回収し、前記プロセスの派生関係に含まれないプロセスについては、オペレーティングシステムからオブジェクトファイルを回収し、
    前記各プロセスの前記オブジェクトファイルを用いて前記各プロセスの関数を特定し、特定した関数を用いて前記シンボル情報を生成する、処理を含むことを特徴とする請求項2に記載の障害原因特定プログラム。
  4. 前記コンテナが消滅するタイミングで、前記コンテナ内で動作する各プロセスに関する各オブジェクトファイルを取得する、処理を前記コンピュータに実行させることを特徴とする請求項3に記載の障害原因特定プログラム。
  5. 前記取得する処理は、
    オペレーティングシステムのプロセス実行状況を監視し、
    前記オペレーティングシステムが実行を完了させる終結プロセスをフックし、
    前記終結プロセスの実行が終了する前に、前記終結プロセスのオブジェクトファイルを取得する、処理を含むことを特徴とする請求項4に記載の障害原因特定プログラム。
  6. 前記生成する処理は、
    前記コンテナ環境の通常運転時の前記コンテナコンテキストごとの前記関数の頻度である通常時の集計結果と、前記コンテナ環境の障害発生時の前記コンテナコンテキストごとの前記関数の頻度である異常時の集計結果とを生成する処理を含み、
    前記特定する処理は、
    前記通常時の集計結果と前記異常時の集計結果とを比較し、前記障害発生時の原因を特定する処理を含む、
    ことを特徴とする請求項2から4のいずれか一つに記載の障害原因特定プログラム。
  7. 前記特定する処理は、
    前記通常時の集計結果と前記異常時の集計結果とを比較し、登場する関数が異なるコンテナ、または、登場する関数比率が異なるコンテナを抽出し、
    抽出されたコンテナが全コンテナに占める割合を算出し、
    前記割合が閾値未満の場合は、コンテナ側の障害と特定し、前記割合が前記閾値以上の場合は、前記コンテナ環境を提供する基盤側の障害と特定する、
    処理を含むことを特徴とする請求項6に記載の障害原因特定プログラム。
  8. コンピュータが、
    コンテナ環境で動作する各プロセスに関するプロセス情報を収集し、
    前記プロセス情報に基づき、コンテナごとにプロセスの派生関係を取得し、
    前記コンテナごとの前記プロセスの派生関係にしたがって、前記各プロセスの関数と前記各プロセスが動作するコンテナとを対応付けたシンボル情報を生成し、
    前記シンボル情報にしたがって、前記関数の頻度を集計した集計結果を生成し、
    前記集計結果に基づき、障害発生時の原因を特定する
    処理を実行することを特徴とする障害原因特定方法。
JP2020151392A 2020-09-09 2020-09-09 障害原因特定プログラムおよび障害原因特定方法 Withdrawn JP2022045680A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020151392A JP2022045680A (ja) 2020-09-09 2020-09-09 障害原因特定プログラムおよび障害原因特定方法
US17/368,899 US11734098B2 (en) 2020-09-09 2021-07-07 Computer-readable recording medium storing failure cause identification program and method of identifying failure cause

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020151392A JP2022045680A (ja) 2020-09-09 2020-09-09 障害原因特定プログラムおよび障害原因特定方法

Publications (1)

Publication Number Publication Date
JP2022045680A true JP2022045680A (ja) 2022-03-22

Family

ID=80470282

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020151392A Withdrawn JP2022045680A (ja) 2020-09-09 2020-09-09 障害原因特定プログラムおよび障害原因特定方法

Country Status (2)

Country Link
US (1) US11734098B2 (ja)
JP (1) JP2022045680A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023518136A (ja) * 2021-02-20 2023-04-28 ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド ファイル処理方法、装置、電子デバイス、記憶媒体、及びプログラム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230042105A1 (en) * 2021-08-03 2023-02-09 Vertiv It Systems, Inc. System and method for optimizing computing resources and data flow in networks
CN114595198B (zh) * 2022-03-15 2023-09-05 抖音视界有限公司 崩溃解析方法、装置、电子设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8473922B2 (en) * 2001-09-19 2013-06-25 Hewlett-Packard Development Company, L.P. Runtime monitoring in component-based systems
US10042697B2 (en) 2015-05-28 2018-08-07 Oracle International Corporation Automatic anomaly detection and resolution system
CN105389243B (zh) * 2015-10-26 2018-06-05 华为技术有限公司 一种容器监控方法和装置
US10367711B2 (en) * 2017-09-05 2019-07-30 Vmware, Inc. Protecting virtual computing instances from network failures
US20200341833A1 (en) * 2019-04-23 2020-10-29 Vmware, Inc. Processes and systems that determine abnormal states of systems of a distributed computing system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023518136A (ja) * 2021-02-20 2023-04-28 ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド ファイル処理方法、装置、電子デバイス、記憶媒体、及びプログラム

Also Published As

Publication number Publication date
US11734098B2 (en) 2023-08-22
US20220075678A1 (en) 2022-03-10

Similar Documents

Publication Publication Date Title
JP2022045680A (ja) 障害原因特定プログラムおよび障害原因特定方法
US8321863B2 (en) Security management device and method
US7496795B2 (en) Method, system, and computer program product for light weight memory leak detection
CN104360878B (zh) 一种应用软件部署的方法及装置
US10620877B2 (en) Managing a collection of data
US20160098390A1 (en) Command history analysis apparatus and command history analysis method
KR20080010341A (ko) 하드웨어 플랫폼 클래스들의 식별을 가속하기 위한 시스템및 방법
US8656225B2 (en) Network fault management in busy periods
CN112306802A (zh) 系统的数据获取方法、装置、介质和电子设备
JPWO2017110720A1 (ja) ログ分析システム、ログ分析方法及びプログラム
JP5740338B2 (ja) 仮想環境運用支援システム
US9021078B2 (en) Management method and management system
CN109189652A (zh) 一种封闭网络终端行为数据的采集方法及系统
JP7338246B2 (ja) 情報処理装置、ログ参照プログラム
US20170206143A1 (en) Management apparatus, management method, and computer-readable recording medium recorded with management program
WO2015049771A1 (ja) コンピュータシステム
JP2014174609A (ja) ハードウェア構成見積システム、ハードウェア構成見積方法及びハードウェア構成見積プログラム
Huffman Windows Performance Analysis Field Guide
JP5519436B2 (ja) システム安定度を分析する情報分析装置、情報分析方法、情報分析システムおよびプログラム
JPWO2018110327A1 (ja) 異常識別システム、方法及びプログラム
CN110928640A (zh) 一种云平台的虚拟机带内指标获取方法及系统
JP2015146148A (ja) 仮想マシン管理装置、仮想マシン管理方法、及び、仮想マシン管理プログラム
Halsey et al. Getting Advanced Information
JP7106979B2 (ja) 情報処理装置、情報処理プログラム及び情報処理方法
US20220318374A1 (en) Diagnosis apparatus, diagnosis method, and computer-readable recording medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230608

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20240129