FAQ

PERFORCE

ナレッジベースからの転載記事

ID.KB3088

Q. 構造化サーバログ(Structured Server Logs)


原文: http://answers.perforce.com/articles/KB/3088

/


Version:Perforce Helix 2012.1以降

A.


問題

Helixサーバはバージョン2012.1以降、新しいロギング機能が追加され、サーバやユーザのアクティビティに関する追加情報を記録することが可能となりました。 サーバのトランザクションデータを構造化サーバログに記録することができ(コンマ区切りのCSV形式)、従来のHelixサーバログのフォーマットと比べ、より簡単に構文解析を行うことができます。

: 構造化サーバログは、きわめて情報が詳細なため、みるみるファイルサイズが肥大化します。 ログファイルを定期的にローテートまたは削除するか、serverlog.maxmb構成可能変数(以下で説明)を使用して、ログファイルのサイズを制限する必要があります。

: 構造化サーバログは、まだすべてのエラー条件を取得しないため(2012.1時点)、標準のHelixサーバログの代替にはなりません。

解決策

構造化サーバロギングを有効にするには、次の情報を用いてp4 configureコマンドを実行し、サーバに構成可能変数を設定します。

サーバログファイル名の指定(serverlog.file.N)

エラーイベントの追跡情報を出力するログの設定方法を、以下に例示します。

p4 configure set servername#serverlog.file.1=errors.csv

指定のファイルサイズに達した場合に、自動的にログファイルをローテートする回数の指定

ログファイルが100MBになった場合、自動的にそのファイルをローテートするコマンドを以下に例示します。

p4 configure set servername#serverlog.maxmb.1=100

: serverlog.maxmb.Nはオプション設定ですが、構造化サーバログのサイズを制御するためベストプラクティスとして推奨されます。

保持するログファイル数の指定(serverlog.retain.N)

最新のログファイルを10個保持するコマンドを以下に例示します。

p4 configure set servername#serverlog.retain.1=10

: serverlog.retain.Nはオプション設定ですが、ローテートされたログファイルをすべて保持すると、 膨大なディスクの空き少量を消費する可能性があるため、ベストプラクティスとして推奨されます。

p4 configureのログ設定は動的です。サーバはログを生成のうえ、これを使用して次のサーバコマンドの処理を開始します。

: p4 configureコマンドにサーバ名を指定しないと、このサーバ構成可能変数のデータを使用するすべてのサーバ(マスターおよびレプリカサーバ)に、 該当の構成可能変数が設定されます。サーバ構成可能変数を設定する場合は常に、サーバ名を指定することがベストプラクティスです。

サーバログファイル名

ログファイルに出力されるイベントは、使用されるログファイル名で管理されます。

ログファイル名 事前設定済みのイベントall.csv あらゆるイベントcommands.csv コマンドイベント(command-start, command-compute, command-end?)errors.csv エラーイベント(errors-failed, error-fatal)audit.csv 監査イベント(audit, purge)track.csv コマンド追跡イベント(track-usage, track-rpc, track-db)user.csv p4 logappendのユーザイベントevents.csv サーバイベント(startup, shutdown, checkpoint, journal rotation)integrity.csv データベースの整合性イベントauth.csv ログインイベントroute.csv ネットワークのルーティングイベント

2つ以上の構造化サーバログを保持することが可能です。各サーバログをセットアップするp4 configureコマンドを、以下に例示します。

p4 configure set servername#serverlog.file.1=all.csvp4 configure set servername#serverlog.file.2=commands.csvp4 configure set servername#serverlog.file.3=errors.csvp4 configure set servername#serverlog.file.4=events.csv

サーバログイベント

サーバログイベントはすべて、構造化サーバログのエントリの最初のフィールドにイベント番号が記述されます。

イベント名 イベント番号 詳細command-start 0 コマンドの開始command-compute 1 コマンドの取得command-end 2 コマンドの終了errors-all 3 すべてのエラーerrors-failed 4 失敗したエラーerrors-fatal 5 重要なエラーaudit 6 監査イベント(p4 sync/p4 archive)track-usage 7 再使用の追跡track-rpc 8 rpcの追跡track-db 9 データベースの追跡user 10 ユーザイベント(p4 logappend)trigger 11 トリガイベントevent 12 startup, shutdown, restart, jj, jcpurge 13 purge-rev(p4 obliterate)network-estimatesb 14 ネットワーク評価integrity 15 レプリカの整合性検証中に発生するイベント。詳細はp4 help journaldbchecksumsを参照auth 16 p4 loginの実行結果として生じるイベントroute 17 認証済みのクライアント接続における完全なネットワークのルート。net.mimcheck関連のエラーでは、関連するホップ数もログに記録

ログ管理

p4 logrotateコマンドを使用して、構造化サーバログファイルをローテートします。

p4 logrotate # ログファイルをすべてローテートp4 logrotate -l all # 特定のログファイル(all)をローテート

ログのローテートを自動的に行うオプションも用意されています。

p4 configure set servername#serverlog.maxmb.1=100

上記の例では、最初のログファイル(本ドキュメントの例では「all」)が100MBになった場合に、自動的にローテートするようサーバに指示しています。他の番号付きログに対して別の値を設定することも可能です。ログファイルは、チェックポイントやジャーナルローテーション処理時に自動的にローテートされます。このため、serverlog.retain.Nの値を覚えておいてください。

特定の数のログファイルのみを保持したい場合は、その数を指定することが可能です。

p4 configure set servername#serverlog.retain.1=10

新しいログファイルが生成されると、古いものはパージ(削除)されます。

ログファイルの分析

p4 logparseコマンドを用いることで、構造化サーバログファイルの解析を行うことができます。コマンドログから、p4 protectコマンドを実行したユーザを検索する例を、以下に示します。

p4 logparse -F 'f_func = user-protect' -T 'f_user f_host' commands... f_user bruno... f_host unknown... f_user bruno... f_host unknown

「all」ログでp4 verifyコマンドの実行ログを検索するには、次のようにコマンドを実行します。

p4 logparse -F "f_func=user-verify" all.cs... f_eventtype 9... f_timestamp 1329344312... f_timestamp2 372496000... f_date 2012/02/15 14:18:32 372496000... f_pid 73240... f_cmdno 1... f_user bruno... f_client mac-bruno... f_func user-verify... f_host 127.0.0.1... f_prog p4... f_version 2012.1/DARWIN90X86_64/417685... f_args -q://...... f_trackType db... f_dbName db.protect... f_pagesIn 2... f_pagesOut 0... f_pagesCached 1... f_reorderIntl 0... f_reorderLeaf 0... f_readLocks 1... f_writeLocks 0... f_gets 0... f_positions 1... f_scans 4... f_puts 0... f_deletes 0... f_offset 562095

ログファイルのフォーマット

特定のログレコードのフィールドは、イベントのタイプに基づきます。

すべてのログレコードのタイプの詳細を確認するには、p4 logschemaコマンドを使用します。ログに出力されるイベントレコードを、以下に例示します。

12,1329249658,338360000,2012/02/14 12:00:58 338360000,58914,5,restart

上記の場合、イベントタイプは12(1つめのフィールド)です。レコード内の特定のフィールドに関する情報を確かめる際にもp4 logschemaを使用します。

$ p4 logschema 12... f_recordType 12... f_field 0... f_name eventtype... f_recordType 12... f_field 1... f_name timestamp... f_recordType 12... f_field 2... f_name timestamp2... f_recordType 12... f_field 3... f_name date... f_recordType 12... f_field 4... f_name pid... f_recordType 12... f_field 5... f_name eventCode... f_recordType 12... f_field 6... f_name eventInfoフィールド 説明 イベントタイプeventtype イベントタイプ Alltimestamp Unixのタイムスタンプ Alltimestamp2 高精度のタイムスタンプ Alldate 日付 Allpid プロセスID Allcmdno コマンド番号 Alluser ユーザ Allclient クライアント Allfunc 機能(関数?) Allhost ホスト Allprog プログラム Allversion バージョン Allargs コマンド引数 command-start, command-compute, command-endseverity 重要度レベル errors-all, errors-failed, errors-fatalsubsys サブシステム errors-all, errors-failed, errors-fatalsubcode サブシステムコード errors-all, errors-failed, errors-fataltext エラーテキスト errors-all, errors-failed, errors-fatalaction 監査アクション auditfile ファイル auditrev リビジョン audittrackType 追跡タイプ track-usage, track-rpc, track-dbtimer タイマー track-usageutime ユーザ時刻 track-usagestime システム時刻 track-usageio_in I/O読み込み track-usageio_out I/O書き込み track-usagenet_in IPCイン track-usagenet_out IPCアウト track-usagemaxrss 最大物理メモリ track-usagepage_faults ページング失敗 track-usagerecvCount 受信数 track-rpcsendCount 送信数 track-rpcrecvBytes 受信バイト track-rpcsendBytes 送信バイト track-rpcrpc_hi_mark_fwd 最大転送 track-rpcrpc_hi_mark_rev 最大受信 track-rpcrecvTime 受信時刻 track-rpcsendTime 送信時刻 track-rpcdbName データベースのテーブル名 track-dbpagesIn ページイン track-dbpagesOut ページアウト track-dbpagesCached ページのキャッシュ track-dbreorderIntl 内部の再構築 track-dbreorderLeaf リーフノード再構築 track-dbreadLocks 読み取りロック track-dbwriteLocks 書き込みロック track-dbgets 取得 track-dbpositions ポジション track-dbscans スキャン track-dbputs 挿入 track-dbdeletes 削除 track-dbtriggerAction トリガアクション triggertriggerData トリガデータ triggereventCode イベントコード eventeventInfo イベント情報 eventaction アクション purgefile ファイル purgerev リビジョン purgeevent イベント default

カスタムイベントログ(ドキュメント未記載の機能)

構造化ログファイルに出力するイベントを定義するために、構成可能変数「serverlog.events.N」(ドキュメント未記載)にイベントリストをコンマ区切りで指定し、使用することが可能です。以下に例示します。

p4 configure set serverlog.file.8=custom.csvp4 configure set serverlog.events.8="command-start,command-end'

指定可能なイベントリストは次のとおりです。

command-startcommand-endcommand-computeerrors-failederrors-allerrorseventaudittracktriggersuserintegrityauthrouteall

: 上述の『サーバログファイル名』セクションに記載の標準ファイル名の1つを使用して、ファイル名のみを定義すると、サーバは「serverlog.events.N」構成可能変数の設定によって上書き可能なビルトインのデフォルト値を使用して、必要なイベントを処理します。


<< ナレッジベースからの転載記事に関するFAQ一覧へ戻る