はじめに
本記事では、Verticaで発生したイベント(エラーや警告など)をOSのsyslogに出力する方法を紹介します。
この設定を行う事で、syslog監視の仕組みを使ってVerticaの監視をする事ができようになりますので、
監視方法の選択肢が増えるというメリットがあります。
Verticaのsyslog設定
Verticaのイベントをsyslogに通知するにあたり、Verticaで必要となる3つのステップを以下に記載します。
2. syslogに通知するイベントの種類の選択
3. syslogに通知するファシリティの選択
syslog通知の有効化と無効化の設定
syslog通知設定の有効化、無効化、設定内容の確認を行うコマンドを以下に記載します。
有効化
ALTER DATABASE mydb SET SyslogEnabled = 1;無効化
ALTER DATABASE mydb SET SyslogEnabled = 0;設定の確認
show current SyslogEnabled;syslogに通知するイベントの種類の選択
syslogに通知するイベントの種類を選択し、設定します。
Verticaで通知できるイベントを以下の表に記載します。
| イベント名 | 説明 | 対処 |
|---|---|---|
| Low Disk Space | データベースのディスク領域が不足しているか、ディスクが故障しているか、またはI/O関連のハードウェアに障害があります。 | ディスクスペースを追加したり、故障したディスクやハードウェアを交換します。 |
| Read Only File System | データベースのデータ領域やカタログ領域が割当たっているファイルシステムに書き込みができない状態。 | ファイルシステムに対する権限を変更して、データベースが書き込みできる状態にします。 |
| Loss Of K Safety | K safe(冗長性)が失われて、データベースがシャットダウンした状態。 | データベースの復旧が必要です。 |
| Current Fault Tolerance at Critical Level | クラスタ内のノードの1台以上で障害が発生した状態。 | 障害またはシャットダウンされたノードを復旧します。 |
| Too Many ROS Containers | 大量のデータロードによって、ROSコンテナが大量に作成された状態。 これはマージアウト処理をするタプルムーバが遅延した場合に発生します。 その結果、余分なROSがコンテナ数によってシステムリソースを使い果たす事を防ぐために Verticaはタプルムーバが追いつくまでの間、すべてのデータロードのトランザクションを自動的にロールバックします。 | 頻繁に発生する場合、状況に応じてパラメータなどを調整する必要があります。 |
| 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 Error | WOSからROSにコンテンツを移動している最中にデータベースでエラーが発生した状態。 | 様々な原因が考えられます。 詳細については、ログの確認が必要です。 |
| Timer Service Task Error | 内部的なスケジュールタスクでエラーが発生した状態。 | 内部でのみの処理のため対処は不要。 |
| Stale Checkpoint | タイムリーにWOS内のデータが完全に移動されていない状態。 | ムーブアウト処理が正常にされている事を確認してください。 vertica.logファイル内にムーブアウトに関連するエラーを確認してください。 |
通知するイベントを選択したら、以下のコマンドで設定します。
複数のイベントを設定する場合は、,(カンマ)区切りで連ねて指定します。
ALTER DATABASE mydb SET SyslogEvents = 'Event_Name, Event_Name';設定した内容を確認するには、以下のコマンドを実行します。
show current SyslogEvents;なお、イベントを設定する際の注意点として、コマンドを実行すると既存設定が上書きされます。
(既存の設定に追加されません)
そのため、通知するイベントを追加する場合は、既存に設定されたイベントに足し加えた形で設定します。
以下に例を記載します。
(例)
既にイベントAの通知が設定されている。
新たにイベントBの通知設定をしたい。
ALTER DATABASE mydb SET SyslogEvents = 'イベントB';
イベントAの設定が消えて、イベントBの通知設定だけが設定されます。
ALTER DATABASE mydb SET SyslogEvents = 'イベントA, イベントB';
イベントAとイベントBの通知が両方設定されます。syslogに通知するファシリティの選択
syslogに通知するファシリティの種類を選択し、設定します。
Verticaで通知できるファシリティを以下に記載します。
authpriv
cron
daemon
ftp
lpr
news
user(デフォルト)
uucp
local0
local1
local2
local3
local4
local5
local6
local7
デフォルトのファシリティは「user」です。
これを変更する場合は、以下のようなコマンドで変更します。
ALTER DATABASE mydb SET SyslogFacility = 'Facility_Name';設定内容を確認するには、以下のコマンドを実行します。
show current SyslogFacility;(例)
mydbデータベースのファシリティを「local0」に変更する例を記載します。
ALTER DATABASE mydb SET SyslogFacility = 'local0';syslog通知の出力例
以下は、「Too Many ROS Containers」が発生した場合にsyslogに通知されるメッセージの例を示しています。
[syslog]
Jan 23 11:08:03 host01 vertica: Event Cleared: Event Code:4 Event Id:0 Event Severity: Warning [4] PostedTimestamp: 2018-01-23 11:07:24.785316 ExpirationTimestamp: 2018-01-23 11:08:00.928288 EventCodeDescription: Too Many ROS Containers ProblemDescription: Too many ROS containers exist on this node for projections:#012public.t1_DBD_10_seg_comp01_b0 (limit = 13135, ROS files = 13134, DV files = 0, new files = 3) DatabaseName: MYDB Hostname: host01[vertica.log]
2018-01-23 11:08:03.024 AgeOutEvents:7f8d98dfa700 <LOG> @v_MYDB_node0002: 00000/3293: Event Cleared: Event Code:4 Event Id:0 Event Severity: Warning [4] PostedTimestamp: 2018-01-23 11:07:24.785316 ExpirationTimestamp: 2018-01-23 11:08:00.928288 EventCodeDescription: Too Many ROS Containers ProblemDescription: Too many ROS containers exist on this node for projections:検証バージョンについて
この記事の内容はVertica 9.1で確認しています。