Pivotal Knowledge Base

フォローする

解析のための core ファイル取得方法

環境

製品 バージョン
Pivotal Greenplum(GPDB) 4.3.x
OS RHEL 6.x

目的

core ファイルを読み込むため、解析を行うクライアントシステムに問題発生環境と全く同一バージョンのライブラリーが存在する保証はないため、追加情報を収集する必要がある。

そのためには、エンジニアが core ファイル読み込み可能となるように、お客様と Pivotal サポートとの間で多くの情報のやり取りが必要であった。

この問題を解消するための手助けとして、core ファイルが読み込み可能となるよう、全ての必要なファイルを収集し、gdb を起動するスクリプトを生成するユーティリティースクリプト(packcore)が存在する。

このツールは GPDB 4.3.2.0 以降、$GPHOME/sbin 配下に存在する。4.3.2.0 より前のバージョンの場合、本ナレッジベースの添付ファイルが使用可能である。packcore ユーティリティーを同梱している gpmt を使用してもよい。

使用方法:

対象システムから packcore を取得するためには、現在 2 つの方法がある。

1. gpmt 経由:

この方法は、core ファイルが生成されたサーバー上で実施する必要があり、生成された tar アーカイブを、gp_log_collector ツールのアーカイブとともに Pivotal サポートへ送付する必要がある。 

[gpadmin@mdw ~]$./gpmt packcore --help
USAGE:
    ./gpmt packcore -cmd COMMAND -core COREFILE [ -binary BINARY ]
        [ -keep_tmp_dir ] [ -ignore_missing ]

DESCRIPTION:
    Packcore takes a corefile, extracts the name of the binary which generated
    the core, executes ldd (List Dynamic Dependencies) to get the required
    shared libraries and packages everything into a single tarball archive.

    Note: Packcore should be executed on the host where the core file was generated.
    The same PATH and LD_LIBRARY_PATH should also be set so that ldd can find the
    correct binary and shared libraries.

COMMANDS:
    collect               Collect core file and associated libraries

OPTIONS:
    -core                  Corefile
    -binary                Binary
    -keep_tmp_dir          Do not delete temp directory
    -ignore_missing        Ignore missing libraries

EXAMPLES:
    Collect core info for 'core.1234' with verbose logging (binary will be automatically detected).")
        ./gpmt packcore -cmd collect -core core.1234 -verbose\n", os.Args[0])

    Collect core info for 'core.1234' with binary '/usr/local/greenplum-db/postgres'.")
        ./gpmt packcore -cmd collect -core core.1234 -binary /usr/local/greenplum-db/postgres\n

 

2. 使用中のビルドに同梱・本ナレッジベース添付の packcore ツール経由:

ツールの使用方法:

    1. core ファイルが生成された対象システムに添付のスクリプト(packcore)をコピーするか、もし存在すれば $GPHOME/sbin/packcore を使用する。
    2. core ファイルを収集するため、"packcore <core_file>" コマンドを実行する。ただし、"<core_file>" には収集対象の core ファイルへのパスを指定する。
      $GPHOME/sbin/packcore corefile OR ./packcore corefile
      
    3. スクリプトを起動すると、core ファイルやライブラリー、他の必要な情報をローカルディレクトリーにコピーする。コピーが完了すると以下のような名前の tar ファイルをを生成する。
      packcore-<core_file>.tgz
    4. Pivotal サポートに圧縮された tar ファイルを送付する。
    5. Pivotal サポート側では、当該 core ファイルを読み込むため、任意の Linux システム上で当該ファイルを解凍し、packcore-<core_file> ディレクトに cd、"runGDB.sh" スクリプトを実行する。 

packcore の生成と収集される情報の例

[gpadmin@mdw ~]$ $GPHOME/sbin/packcore core.3326
Unable to find full path to binary for core file   <<<<<< In case of this issue we have to give binary path as shown below.

[gpadmin@mdw ~]$ ps -ef | grep silent gpadmin 3326 1 0 May10 ? 00:00:02 /usr/local/greenplum-db-4.3.8.0/bin/postgres -D /data/master/gpseg-1 -p 5432 -b 1 -z 8 --silent-mode=true -i -M master -C -1 -x 0 -E
[gpadmin@mdw ~]$ $GPHOME/sbin/packcore core.3326 -b /usr/local/greenplum-db-4.3.8.0/bin/postgres
[gpadmin@mdw ~]$ ls -lrth | tail -2 -rw-rw-r--. 1 gpadmin gpadmin 335M May 18 10:23 core.3326 -rw-rw-r--. 1 gpadmin gpadmin 148M May 18 10:25 packcore-core.3326.tgz
[gpadmin@mdw ~]$ tar -xzf packcore-core.3326.tgz
[gpadmin@mdw ~]$ cd packcore-core.3326
[gpadmin@mdw packcore-core.3326]$ ls -lrth total 386M -rw-rw-r--. 1 gpadmin gpadmin 22 May 18 10:24 uname.out -rw-r--r--. 1 gpadmin gpadmin 27 May 18 10:24 system-release -rw-r--r--. 1 gpadmin gpadmin 27 May 18 10:24 redhat-release -rwxr-xr-x. 1 gpadmin gpadmin 52M May 18 10:24 postgres -rw-rw-r--. 1 gpadmin gpadmin 335M May 18 10:24 core.3326 -rw-r--r--. 1 gpadmin gpadmin 27 May 18 10:24 centos-release drwxrwxr-x. 3 gpadmin gpadmin 4.0K May 18 10:24 usr -rwxr-xr-x. 1 gpadmin gpadmin 150 May 18 10:24 runGDB.sh drwxrwxr-x. 2 gpadmin gpadmin 4.0K May 18 10:24 lib64

お客様は packcore-core.3326.tgz を Pivotal サポートへ送付するのみとなる。

更新

  • 現バージョン: 0.4 beta
  • ワーキングディレクトリのクリーンアップ機能
  • より的確なエラーメッセージの出力
  • '-b' フラグ: core ファイルからバイナリ名を取得できない場合(SuSE の問題)のため、明示的にバイナリ名を指定

 

コメント

Powered by Zendesk