はじめに

本記事では、Verticaで発生したイベント(エラーや警告など)をOSのsyslogに出力する方法を紹介します。
この設定を行う事で、syslog監視の仕組みを使ってVerticaの監視をする事ができようになりますので、
監視方法の選択肢が増えるというメリットがあります。

Verticaのsyslog設定

Verticaのイベントをsyslogに通知するにあたり、Verticaで必要となる3つのステップを以下に記載します。

1. syslog通知の有効化と無効化の設定
2. syslogに通知するイベントの種類の選択
3. syslogに通知するファシリティの選択

syslog通知の有効化と無効化の設定

syslog通知設定の有効化、無効化、設定内容の確認を行うコマンドを以下に記載します。

有効化


無効化


設定の確認


syslogに通知するイベントの種類の選択

syslogに通知するイベントの種類を選択し、設定します。
Verticaで通知できるイベントを以下の表に記載します。

イベント名説明対処
Low Disk Spaceデータベースのディスク領域が不足しているか、ディスクが故障しているか、またはI/O関連のハードウェアに障害があります。ディスクスペースを追加したり、故障したディスクやハードウェアを交換します。
Read Only File Systemデータベースのデータ領域やカタログ領域が割当たっているファイルシステムに書き込みができない状態。ファイルシステムに対する権限を変更して、データベースが書き込みできる状態にします。
Loss Of K SafetyK safe(冗長性)が失われて、データベースがシャットダウンした状態。データベースの復旧が必要です。
Current Fault Tolerance at Critical Levelクラスタ内のノードの1台以上で障害が発生した状態。障害またはシャットダウンされたノードを復旧します。
Too Many ROS Containers大量のデータロードによって、ROSコンテナが大量に作成された状態。
これはマージアウト処理をするタプルムーバが遅延した場合に発生します。
その結果、余分なROSがコンテナ数によってシステムリソースを使い果たす事を防ぐために
Verticaはタプルムーバが追いつくまでの間、すべてのデータロードのトランザクションを自動的にロールバックします。
頻繁に発生する場合、タプルムーバのパラメータを調整する必要があります。
タプルムーバーが動作してもエラーが解消されない場合は、RAMを拡張する必要がある可能性があります。
RAMサイズ(MB)を最大のテーブル数が持つ列数の6で割った値が10よりも大きい必要があります。
必要なRAMサイズ(MB)>10 × 6 × 列数

(例)
最も大きいテーブルの列数が100列の場合
10 × 6 × 100 = 6000

6000MB(5.8GB)以上のRAMが必要です。
WOS Over FlowロードしようとするデータのすべてをWOSに格納する事ができない状態。
この場合、COPY処理は失敗しトランザクションはロールバックされます。
メモリー(WOS)の代わりにディスク(ROS)にデータをロードするか、ファクト表のロード・ファイルを分割し、複数のロードを順番に実行することを検討してください。
Node State Change ノードのステータスが変更になった状態。ノードの状態を確認します。
Recovery Failureハードウェアまたはソフトウェアに関連した問題によって、データベースがリストアされなかった状態。様々な原因が考えられます。
詳細については、ログの確認が必要です。
Recovery Errorデータベースのリカバリ中にエラーが発生した状態。
最大の試行回数に達すると通知されます。
リカバリ中のエラーは様々な原因が考えられます。
詳細については、ログの確認が必要です。
Recovery Lock Errorリカバリ中のノードがテーブルのSロックを取得できない状態。
進行中のCOPYのコマンドが連続している場合、発生する可能性があります。
ロード処理を一旦停止し、システムの負荷の低い時にノードを再起動してリカバリを進めてください。
Recovery Projection Retrieval Errorプロジェクションに関する情報をVerticaが取得できない状態。様々な原因が考えられます。
詳細については、ログの確認が必要です。
Refresh Errorリフレッシュ中にデータベースでエラーが発生した状態。様々な原因が考えられます。
詳細については、ログの確認が必要です。
Refresh Lock Errorリフレッシュ中にデータベースでロックエラーが発生した状態様々な原因が考えられます。
詳細については、ログの確認が必要です。
Tuple Mover ErrorWOSからROSにコンテンツを移動している最中にデータベースでエラーが発生した状態。様々な原因が考えられます。
詳細については、ログの確認が必要です。
Timer Service Task Error内部的なスケジュールタスクでエラーが発生した状態。内部でのみの処理のため対処は不要。
Stale CheckpointタイムリーにWOS内のデータが完全に移動されていない状態。ムーブアウト処理が正常にされている事を確認してください。
vertica.logファイル内にムーブアウトに関連するエラーを確認してください。


通知するイベントを選択したら、以下のコマンドで設定します。
複数のイベントを設定する場合は、,(カンマ)区切りで連ねて指定します。



設定した内容を確認するには、以下のコマンドを実行します。


なお、イベントを設定する際の注意点として、コマンドを実行すると既存設定が上書きされます。
(既存の設定に追加されません)
そのため、通知するイベントを追加する場合は、既存に設定されたイベントに足し加えた形で設定します。
以下に例を記載します。


syslogに通知するファシリティの選択

syslogに通知するファシリティの種類を選択し、設定します。
Verticaで通知できるファシリティを以下に記載します。

auth
authpriv
cron
daemon
ftp
lpr
mail
news
user(デフォルト)
uucp
local0
local1
local2
local3
local4
local5
local6
local7

デフォルトのファシリティは「user」です。
これを変更する場合は、以下のようなコマンドで変更します。


設定内容を確認するには、以下のコマンドを実行します。


(例)
mydbデータベースのファシリティを「local0」に変更する例を記載します。


syslog通知の出力例

以下は、「Too Many ROS Containers」が発生した場合にsyslogに通知されるメッセージの例を示しています。

[syslog]


[vertica.log]


検証バージョンについて

この記事の内容はVertica 9.0で確認しています。


以上