はじめに
この記事ではvertica.log ファイルの出力フォーマットについてご紹介します。
vertica.logファイルとは?
vertica.logファイルは、トランザクションの詳細内容や、Moveout/Mergeoutの実行、エラーなどデータベース起動中に発生した様々な動作を記録するファイルです。
<参考>
Verticaの各種ログファイル
https://www.ashisuto.co.jp/cm/analytics-database/logfiles.html
ログファイルのフォーマット
vertica.logは以下のフォーマット規則に従って稼働状況が記録されます。
▽フォーマット
タイムスタンプ サービス名:スレッドID [コンポーネント] <ログレベル> メッセージ▽対象のログの内容
2019-03-27 13:56:59.796 Init Session:7fc85a516700-a0000000005ab5 [Session] <INFO> [Query] TX:a0000000005ab5(v_test_node0001-1877:0x1a839) select * from table1;フィールド | 意味 | 出力例 |
|---|---|---|
Timestamp | 発生時刻 | 2019-03-27 13:56:59.796 |
Service_Name | サービス名 | Init Session |
Thread_Id | スレッドID | 7fc85a516700-a0000000005ab5 |
Component | 構成要素 | Session |
Log_Type | ログレベル | INFO |
Actual_Log_Message | ログ内容 | [Query] TX:a0000000005ab5(v_test_node0001-1877:0x1a839) select * from table1; |
ログレベルの詳細
vertica.logには記録されるアクティビティに応じて以下の様なレベルに分類されます。
ログレベル | 内容 |
|---|---|
PANIC | ノードの突然のシャットダウンやパニック状態の発生 |
FATAL | 致命的な状態の時の情報 |
ERROR | システム内で発生したすべてのエラー |
WARNING | 注意すべき情報 |
通常、データベースの監視を行う場合には、ログ監視を組み込むケースが多いかと思います。vertica.logに出力されるこれらログレベルのうち、以下のログレベルを監視対象の文字列とすることを推奨します。
「PANIC」
「FATAL」
「ERROR」
また、以下のようなメッセージが出力された際には、稼働状況に問題が発生していることが考えられます。定常監視に組み込むことを推奨いたします。
メッセージ | 内容 |
|---|---|
Insufficient | メモリ不足や権限がないなど、何らかの処理に不足が発生した場合の情報 |
left the | クラスタからノードが切り離された場合の情報 |
timeout | ロックによって何らかのタイムアウトが発生した場合の情報 |
ログ監視実行時の注意点
ログレベルのうち、ERRORではコマンド入力時の記述ミスの場合にもログに出力されてしまいます。例えば、以下のように「FROM」を「FORM」と入力ミスしてしまった場合にもERRORメッセージが出力されます。
【SQL実行時の入力ミスの例】
dbadmin=> select * form table1;
ERROR 4856: Syntax error at or near "form" at character 10
LINE 1: select * form table1;
【vertica.logの出力例】
2019-03-27 16:16:57.710 Init Session:7fc85a516700-a0000000005ab5 [Session] <INFO> [Query] TX:a0000000005ab5(v_test_node0001-1877:0x1a839) select * form table1;
2019-03-27 16:16:57.711 Init Session:7fc85a516700-a0000000005ab5 <ERROR> @v_test_node0001: 42601/4856: Syntax error at or near "form" at character 10上記のようなケースでは、「Syntax error」が出力されている場合には監視対象から除外するといった運用を取ることをおすすめします。
対象処理を確認するには
ERRORなど文字列が出力された際に、対象セッションの処理内容を確認するには以下手順を実行します。
【SQL実行例】
dbadmin=> \x
dbadmin=> select * from query_requests where transaction_id = hex_to_integer('a000000006174d');
※a000000006174d にvertica.logファイルで確認したtransaction_idを指定します。
【出力例】
-[ RECORD 2 ]-------+----------------------------------------------------------------
node_name | v_test_node0001
user_name | dbadmin
session_id | v_test_node0001-1877:0x1a839
request_id | 2
transaction_id | 45035996273728181
statement_id | 2
request_type | QUERY
request | select * from table1;
request_label |
search_path | "$user", public, v_catalog, v_monitor, v_internal, v_func
memory_acquired_mb | 100
success | t
error_count | 3
start_timestamp | 2019-03-27 13:56:59.798267+09
end_timestamp | 2019-03-27 13:56:59.807656+09
request_duration | 00:00:00.009389
request_duration_ms | 9
is_executing | f検証バージョンについて
この記事の内容はVertica 9.2で確認しています。
更新履歴
2019/3/27 検証バージョンを9.2に変更
2015/9/18 本記事を公開