Qlik Logging Service – 構成および統合

このトピックでは、Qlik Logging Service で利用可能な構成および統合の機能を説明します。ここで取り上げる機能は、Qlik テクニカル サポートの支援を得ながら問題を解決するような状況で使用される「高度な機能」と考えられます。

動的構成

Qlik Logging Service が提供する機能のほとんどは、次の構成ファイルによって制御されています。QlikCentralizedLogging.config は通常、C:\ProgramData\Qlik\Sense\Log にあります。このファイルには、Qlik Logging Service が認識するすべての設定を XML 形式で格納されています。通常、コマンド ラインの起動中、update コマンドまたは setup を実行すると Qlik Logging Service によって直接修正されます。

この「動的構成」機能では、次の新しい設定、CentralizedLoggingConfigurationNotificationEnabled が採用されています。この設定の既定値は「False」です。この設定は常に動的です。つまり、構成ファイルを直接修正し、ファイルを保存することで値が変更され、それにともなって Qlik Logging Service が新しい値を読み取り、使用します。この設定を既定値の「False」に設定している場合、構成ファイル内の他の設定に加えた変更は Qlik Logging Service では検出されないため、変更を反映させるためにはサービスの再起動が必要になります。この設定が「True」に設定されている場合、以下に示す設定に対する変更は、構成ファイルを保存すると Qlik Logging Service がただちに検出し、適用します。

キー 説明 範囲
CentralizedLoggingLogMaxFileSizeMb ログ サービスが、ログをファイルに記録します。この設定は、ロール オーバーされる前のログ ファイルの最大サイズを MB 単位で制御します。 1 ~
CentralizedLoggingLogEnabled ログ サービスによるファイルへのログ記録の有効、無効を切り替えます。 True、False
CentralizedLoggingEnabled ログ サービス機能を有効または無効にします。True の場合、受信するログ エントリを受け付けて記録します。False の場合、ログ サービスは実行されたままですが、ログを記録する機能は無効となります。 True、False
CentralizedLoggingServerBufferSize 内部バッファのログ エントリのサイズを設定します。内部バッファが一杯になると、データベースへの書き込みが実行されます。たとえば、10 に設定すると、10 個のログ エントリを受信した時点でデータベースへの書き込みが行われます。 1 ~
CentralizedLoggingServerTimeoutSeconds データベースへの書き込みを実行するタイムアウト期限を秒単位で設定します。アイドル システムの場合、ログ エントリが一杯になることは頻繁にはありません。このしきい値を設定することで、内部バッファが一杯でない場合でもデータベースへの書き込みを実行します。 1 ~
CentralizedLoggingLogLevel ログの冗長性レベルを制御します。 Off、Fatal、Error、Warn、Info、Debug、All
MaximumDatabaseSizeInGB

データベースの最大サイズを GB 単位で設定します。データベース サイズがこの値を超えると、設定した最大値をデータベース サイズが下回るまで、データベースからエントリを削除します。

注: 2 未満の値を設定すると、この機能は無効になります。
0 ~
CentralizedLoggingConfigurationNotificationEnabled 動的構成の設定を有効または無効にします。True に設定した場合、動的構成の設定に加えた変更は、サービスを再起動しなくてもただちに反映されます。False に設定した場合、新しい設定値を反映させるには再起動が必要です。この設定自体は常に動的で、ただちに反映されます。 True、False
CentralizedLoggingDBSizeCheckPeriod

データベースのサイズを確認する頻度を設定します。値は、ミリ秒単位で指定します。

注: 値がゼロ (0) の場合、この機能を無効にします。600,000 (10 分) が、この機能を使用する場合の最小値です。この値より小さい数値は自動的にこの最小値に設定され、2,147,483,646 (596 時間) が設定可能な最大値です。
0、600,000 ~ 2,147,483,646
CentralizedLoggingDBArchiveCheckPeriod

ログ エントリをアーカイブする必要の有無を確認する頻度を設定します。値は、ミリ秒単位で指定します。

注: 値がゼロ (0) の場合、この機能を無効にします。600,000 (10 分) が、この機能を使用する場合の最小値です。この値より小さい数値は自動的にこの最小値に設定され、2,147,483,646 (596 時間) が設定可能な最大値です。
0、600,000 ~ 2,147,483,646
CentralizedLoggingDBPurgeCheckPeriod

アーカイブされたエントリをパージする必要の有無を確認する頻度を設定します。値は、ミリ秒単位で指定します。

注: 値がゼロ (0) の場合、この機能を無効にします。600,000 (10 分) が、この機能を使用する場合の最小値です。この値より小さい数値は自動的にこの最小値に設定され、2,147,483,646 (596 時間) が設定可能な最大値です。
0、600,000 ~ 2,147,483,646
CentralizedLoggingDBStatsCheckPeriod

データベースの統計を取得する頻度を設定します。値は、ミリ秒単位で指定します。

注: 値がゼロ (0) の場合、この機能を無効にします。300,000 (5 分) が、この機能を使用する場合の最小値です。この値より小さい数値は自動的にこの最小値に設定され、2,147,483,646 (596 時間) が設定可能な最大値です。
0、300,000 ~ 2,147,483,646
CentralizedLoggingPlatformPerformanceCheckPeriod

プラットフォームのパフォーマンス指標を取得する頻度を設定します。値は、ミリ秒単位で指定します。

注: 値がゼロ (0) の場合、この機能を無効にします。1,000 (1 秒) が、この機能を使用する場合の最小値です。この値より小さい数値は自動的にこの最小値に設定され、2,147,483,646 (596 時間) が設定可能な最大値です。
0、1,000 ~ 2,147,483,646
CentralizedLoggingProcessPerformanceCheckPeriod

プロセスのパフォーマンス指標を取得する頻度を設定します。値は、ミリ秒単位で指定します。

注: 値がゼロ (0) の場合、この機能を無効にします。1,000 (1 秒) が、この機能を使用する場合の最小値です。この値より小さい数値は自動的にこの最小値に設定され、2,147,483,646 (596 時間) が設定可能な最大値です。
0、1,000 ~ 2,147,483,646
CentralizedLoggingPlatformPerformanceCounters

CentralizedLoggingPlatformPerformanceCheckPeriod の期間ごとに収集する、プラットフォームのパフォーマンス カウンタを設定します。次の書式を使用します。

Database payload key; Counter Category; Counter Name [;] [カウンタ インスタンス] |

Database payload key...

 
CentralizedLoggingProcessPerformance

CentralizedLoggingProcessPerformanceCheckPeriod の期間ごとにパフォーマンス カウンタを収集するプロセスを設定します。

次の書式を使用します。

Process Name | Process Name | ...

「Process Name」はプロセスを表すシンプルな名前です。たとえば、この設定の既定値は、「engine|proxy|repository|scheduler」となります。

 
CentralizedLoggingPlatformEvents

監視するプラットフォーム イベントを設定します。書式は次のとおりです。

EventLogX, [EventSourceX]:EventID0, EventID1, ..., EventIDn|

EventLogY, [EventSourceY]:EventID0, ..., EventIDn

 

Qlogs の統計

Qlik Logging Service は定期的に Qlogs データベースに関する統計を収集します。このデータベースは、すべてのログ エントリで使用されています。この統計を収集する頻度は CentralizedLoggingDBStatsCheckPeriod の設定で制御します。値をゼロ (0) に設定すると収集を実行しません。値は単位ミリ秒で指定し、既定値は 10 分 (10 * 60 * 1000 = 600000 ミリ秒) です。収集された情報にはレコード カウント数とサイズ情報が含まれ、次のクエリで閲覧できます。

SELECT * FROM public.view_db_stats;

Windows イベント ログの統合

Windows イベント ログとの統合は新機能で、構成済み Windows イベントに関する情報を Qlik Logging Service が収集できます。Qlik Logging Service が監視するイベントのセットは、CentralizedLoggingPlatformEvents 設定で設定します。値をクリアすると、この機能が無効になります。既定値は次のとおりです。

<add key="CentralizedLoggingPlatformEvents" value="System:1074,6013,36888,36874,2013,7031,4202|Application, Engine:300|Application, .NET Runtime:1026|Application, PostgreSQL:0" />

これは、既定で構成されたイベントの説明です。

イベント ログ イベント ソース イベント ID 説明
システム   1074 ユーザーがシステムの再起動を開始
システム   6013 システムのアップタイム
システム   36888 Schannel (TLS プロトコル) エラー
システム   36874 Schannel (TLS プロトコル) エラー
システム   2013 空きディスク領域不足
システム   7031 予期しないサービス終了
システム   4202 TCP/IP ネットワーク構成の問題
アプリケーション エンジン 300 予期しない例外がエンジンで発生
アプリケーション PostgreSQL 0 PostgreSQL エラー
アプリケーション .NET ランタイム 1026 .NET プロセスが終了

CentralizedLoggingPlatformEvents 設定の値を以下のように修正することで、他のイベントを監視できます。

前述のとおり、イベント ログが 1、イベント ソースが 2、イベント ID が 3 です。上記で強調したイベントをキャプチャするには、以下に示すように、値 "Application, Perflib: 1008" を CentralizedLoggingPlatformEvents 設定に付加する必要があります。

<add key="CentralizedLoggingPlatformEvents" value="System:1074,6013,36888,36874,2013,7031,4202|Application, Engine:300|Application, .NET Runtime:1026|Application, PostgreSQL:0|Application, Perflib: 1008" />

 

イベント ソースは任意ですが、複数のイベント ソースが同一のイベント ID を使用する可能性のある場合は有用です。上記の例の場合、イベント ソース "Perflib" を省略すると、すべてのアプリケーションについて イベント ID 1008 を監視します。複数のイベント ID を同じイベント ログとイベント ソースについて監視することができ、これらのイベント ID はカンマ「,」で区切られます。複数のイベント ログとイベント ソースを監視することができ、これらはパイプ文字「|」で区切られます。

Qlik Logging Service がキャプチャする Windows イベントは、Qlogs データベースに対し以下のクエリを実行することで閲覧できます。

SELECT * FROM public.view_platform_events;

Windows パフォーマンス モニターの統合

Qlik Logging Service は Windows パフォーマンス モニターと統合されており、システムに対し構成済みの指標について定期的にクエリを実行します。この統合は、構成済みのプラットフォーム指標の監視と構成済みプロセスの監視の 2 つのセクションに分かれます。

プラットフォーム指標

プラットフォーム指標の監視に使用する期間は CentralizedLoggingPlatformPerformanceCheckPeriod 設定で制御します。値をゼロ (0) にするとこの機能が無効になります。既定値は 5 分 (5 * 60 * 1000 = 300000 ミリ秒) です。

収集される指標またはパフォーマンス カウンタは、CentralizedLoggingPlatformPerformanceCounters の設定で構成され、既定値は次のとおりです。

<add key="CentralizedLoggingPlatformPerformanceCounters" value="CPUUtilizationPercent;Processor;% Processor Time;_Total|CPUUserUtilizationPercent;Processor;% User Time;_Total|CPUInterruptPercent;Processor;% Interrupt Time;_Total|CPUQueueLength;System;Processor Queue Length|DiskFreeSpacePercent;LogicalDisk;% Free Space;_Total|DiskIdleTimePercent;PhysicalDisk;% Idle Time;_Total|DiskTimePerReadSeconds;PhysicalDisk;Avg. Disk sec/Read;_Total|DiskTimePerWriteSeconds;PhysicalDisk;Avg. Disk sec/Write;_Total|DiskIOQueueLength;PhysicalDisk;Avg. Disk Queue Length;_Total|MemoryCacheBytes;Memory;Cache Bytes|MemoryCommittedBytesInUsePercent;Memory;% Committed Bytes In Use|MemoryAvailableMBytes;Memory;Available MBytes|MemoryFreePageEntries;Memory;Free System Page Table Entries|MemoryPoolNonPagedBytes;Memory;Pool Nonpaged Bytes|MemoryPoolPagedBytes;Memory;Pool Paged Bytes|MemoryPagesPerSecond;Memory;Pages/sec|NetworkBytesPerSecond;Network Interface;Bytes Total/sec;*|NetworkOutputQueueLength;Network Interface;Output Queue Length;*|" />

既定値の表

データベース項目 カウンタ カテゴリ カウンタ名 カウンタ インスタンス
CPUInterruptPercent プロセッサ % Interrupt Time _Total
CPUQueueLength System Processor Queue Length  
CPUUserUtilizationPercent プロセッサ % User Time _Total
CPUUtilizationPercent プロセッサ % Processor Time _Total
DiskFreeSpacePercent LogicalDisk % Free Space _Total
DiskIdleTimePercent PhysicalDisk % Idle Time _Total
DiskIOQueueLength PhysicalDisk Avg. Disk Queue Length _Total
DiskTimePerReadSeconds PhysicalDisk Avg. Disk sec/Read _Total
DiskTimePerWriteSeconds PhysicalDisk Avg. Disk sec/Write _Total
MemoryAvailableMBytes メモリ Available MBytes  
MemoryCacheBytes メモリ Cache Bytes  
MemoryCommittedBytesInUsePercent メモリ % Committed Bytes In Use  
MemoryFreePageEntries メモリ Free System Page Table Entries  
MemoryPagesPerSecond メモリ Pages/sec  
MemoryPoolNonPagedBytes メモリ Pool Nonpaged Bytes  
NetworkBytesPerSecond Network Interface Bytes Total/sec *
NetworkOutputQueueLength Network Interface Output Queue Length *

設定値 CentralizedLoggingPlatformPerformanceCounters の書式は、以下に示すように Windows パフォーマンス モニターが使用する命名規則と構造に従っています。

CentralizedLoggingPlatformPerformanceCounters の設定値を修正することで、パフォーマンス カウンタを追加することもできます。設定値は以下の書式を使用します。

  • パフォーマンス カウンタはそれぞれ、パイプ文字「|」で区切られます。
  • 1 つのパフォーマンス カウンタはセミコロン「;」で区切られた 4つの項目で構成されており、空白文字を追加して読みやすくすることもできます。
    • 最初の項目は任意で、データベースへのパフォーマンス カウンタの格納に使用する名前に対応します。項目が指定されない場合は、カウンタの名前が代わりに使用されます。
    • 2 つめの項目はカウンタ カテゴリで、上の画像の 1 に対応しています。
    • 3 つめの項目はカウンタで、上の画像の 2 に対応しています。
    • 4 つめの項目はカウンタ インスタンスで、上の画像の 3 に対応しています。この項目は任意で、ワイルドカード文字「*」を設定するか、または何も指定しないと利用可能なすべてのインスタンスが収集されます。

上に示したカウンタを追加するには、設定 CentralizedLoggingPlatformPerformanceCounters に「| Test1 ; ICMP ; Messages/sec ; *」を追加する必要があります。これでパフォーマンス カウンタは CentralizedLoggingPlatformPerformanceCheckPeriod 設定で設定した期間に基づいて収集され、Qlogs データベースに対して以下のクエリを使用することでデータベースからパフォーマンス カウンタを取得できます。

SELECT BTRIM(e.payload->>'Test1', '"')::INTEGER AS icmp_msg_per_sec FROM public.log_entries e WHERE e.logger = 'Qlik.Logging.Service.Platform.Performance'

プラットフォーム指標は、Qlogs データベースに対して以下のクエリを実行することで閲覧できます。

SELECT * FROM public.view_platform_metrics;

プロセス指標

プロセス指標の監視に使用する期間は CentralizedLoggingProcessPerformanceCheckPeriod 設定で制御します。値をゼロ (0) にするとこの機能が無効になります。既定値は 5 分 (5 * 60 * 1000 = 300000 ミリ秒) です。

パフォーマンス指標は、CentralizedLoggingProcessPerformance 設定によって構成されたプロセスについて収集され、既定値は次のとおりです。

<add key="CentralizedLoggingProcessPerformance" value="engine|proxy|repository|scheduler" />

この設定の書式も、以下に示すように Windows パフォーマンス モニターが使用する命名規則と構造に従っています。

リストに含まれるプロセスそれぞれについて、利用可能なすべてのパフォーマンス カウンタが収集されます。リストのプロセスはそれぞれパイプ文字「|」で区切ります。追加のプロセスについて指標を収集するには、「シンプルな名前」を CentralizedLoggingProcessPerformance 設定に付加する必要があります。たとえば、上記のように chrome を追加するには、「| chrome」という文字列を CentralizedLoggingProcessPerformance 設定に付加します。

プロセス指標は、QLogs データベースに対して以下のクエリを実行することで閲覧できます。

SELECT * FROM public.view_process_metrics;

エクスポート

Qlik Logging Service は、管理しているログ データをエクスポートできます。この補完的な機能により、Qlik のテクニカル サポートとの間でログ データを共有しやすくなります。export コマンドは、Qlik Logging Service をコマンド ライン ツールとして使用している時に利用できます。

使用方法: Qlik.Logging.Service.exe <export> [[エクスポート_オプション]]

エクスポートされるデータは暗号化されていませんが、圧縮によりバイナリ形式となっていて、Qlik Logging Service 以外のツールでは読み取ることができません。

エクスポート

「export」コマンドは、Qlik Logging Service が管理するすべてのログ データをエクスポート先にコピーします。以下のコマンド オプションを使用して、エクスポート内容とエクスポート先を制御することができます。

--output_file または -o (必須): エクスポートしたデータを保存する場所を指定します。場所は、ディスク ファイル、またはエクスポートされたデータを待ち受ける Qlik Logging Service のアドレスです。ファイルを指定する場合、エクスポート プロセスによりターゲット ファイルが作成または置き換えられます。待機サービスを指定する場合の書式は <hostname または host ip address>[: port] です。ホストの名前またはホストの IP アドレスを指定し、コロン「:」(必要な場合)、待ち受けているホストが使用するポート番号の順に続けます。ポートが指定されない場合は、既定の 7081 が使用されます。

--hostname または -h: エクスポートされるデータを、指定したホストに由来するサブセットに限定します。比較では大文字と小文字は区別されません。

--level または -l: エクスポートされるデータを、指定したレベルと同等のサブセットに限定します。比較では大文字と小文字は区別されません。

--to_timestamp: エクスポートされるデータを、指定した日付より前に作成されたサブセットに限定します。詳細については、以下の「日付書式」セクションを参照してください。

--from_timestamp: エクスポートされるデータを、指定した日付より後に作成されたサブセットに限定します。詳細については、以下の「日付書式」セクションを参照してください。

--process_name: エクスポートされるデータを、指定したプロセスに由来するサブセットに限定します。比較では大文字と小文字は区別されません。

これらのコマンドは、管理者特権なしの「コマンド プロンプト」でテストしたものです。

すべての内容をファイルにエクスポートするには:

Qlik.Logging.Service export --output_file C:\Temp\qlogs.bin

ホスト「Node1」の 2018/09/01 から 2018/09/02 10:00PM の間の内容を、ポート 80 で待ち受ける待機ネットワークの到達可能なホストにエクスポートするには:

Qlik.Logging.Service export --from_timestamp "2018-09-01" --to_timestamp "2018-09-02 22:00:00" --hostname node1 --otuput_file somehost.domain.com:80

日付書式

日付の書式は、「YYYY-MM-DD [[HH:MM:SS]]」です。日付の部分は必須、時刻の部分は任意で、時刻を省略した場合の既定値は「00:00:00」です。

  • 日付
    • YYYY: 年、4 桁
    • MM: 月、2 桁、01 ~ 12
    • DD: 日、2 桁、01 ~ 31
  • Time
    • HH: 時、2 桁、00 ~ 23
    • MM: 分、2 桁、00 ~ 59
    • SS: 秒、2 桁、00 ~ 59

テクニカル ノート

Unicode の NULL 文字

Qlik Logging Service を使用するプロセスでは、ごくまれに Unicode 文字の NULL (\u0000) がログ エントリに含まれる場合があります。この文字は、文字列の終わりを表すために使用されることがほとんどであるため、多くのツールで問題の原因となります。QLogs データベースに Unicode 文字が挿入されると、次の PostgreSQL の場合のようなエラー メッセージが表示される可能性があります。

ERROR: unsupported Unicode escape sequence

DETAIL: \u0000 cannot be converted to text.

CONTEXT: JSON data, line 1: {"Message":...

STATEMENT: fetch 200 in "SQL_CUR4"

Qlogs データベースに対し、以下のスクリプトを実行すると、Unicode の NULL 文字「\u0000」が「<UNICODE_NULL>」という文字列で置き換えられます。

SET statement_timeout = 0; SET lock_timeout = 0; SET client_encoding = 'UTF8'; SET standard_conforming_strings = on; SET check_function_bodies = false; SET client_min_messages = warning; CREATE OR REPLACE FUNCTION public.validate_payload(IN payload JSON) RETURNS TEXT AS $$ BEGIN RETURN payload->>'XXXXX'; EXCEPTION WHEN OTHERS THEN RETURN 'XXXXX'; END $$ LANGUAGE plpgsql; DO $$ BEGIN UPDATE public.log_entries SET payload = REGEXP_REPLACE(payload::TEXT, '\\u0000', '<UNICODE_NULL>', 'g')::JSON WHERE id IN ( SELECT d.id FROM ( SELECT id, validate_payload(payload) AS payload FROM public.log_entries ) AS d WHERE d.payload = 'XXXXX' ); UPDATE public.archive_entries SET payload = REGEXP_REPLACE(payload::TEXT, '\\u0000', '<UNICODE_NULL>', 'g')::JSON WHERE id IN ( SELECT d.id FROM ( SELECT id, validate_payload(payload) AS payload FROM public.archive_entries ) AS d WHERE d.payload = 'XXXXX' ); END $$ LANGUAGE plpgsql; DROP FUNCTION IF EXISTS public.validate_payload(IN payload JSON);

構成ファイルのリセット

何らかの理由で Qlik Logging Service 構成ファイルの QlikCentralizedLogging.config が破損または読み取り不能になった場合、このファイルを削除すると、次回サービスを起動したときに新しいファイルが既定値を使用して作成されます。同じことは個々の設定にも当てはまり、構成ファイルのある設定を削除すると、次回のサービス起動シーケンスの間にその値が既定値で置き換えられます。

マルチノードの構成

マルチノード環境では通常、すべてのノード上で実行されます。

マルチノード環境では通常、Qlik Logging Service はすべてのノード上で実行されます。既定の構成では、すべてのノードがデータベース管理機能を実行します。これは不具合ではありませんが、単一のノードをデータベースを保守する担当として指定する構成の方がより効率的です。たとえば、3 ノード展開の場合、各ノードで実行される Qlik Logging Service は次のように構成できます。

セントラル ノードおよびリム ノード 1

<!-- 一元化されたログ記録構成 -->

 

<!-- データベース サイズ管理を無効 -->

<add key="CentralizedLoggingDBSizeCheckPeriod" value="0" />

 

<!-- アーカイブ管理を無効 -->

<add key="CentralizedLoggingDBArchiveCheckPeriod" value="0" />

 

<!-- パージ管理を無効 -->

<add key="CentralizedLoggingDBPurgeCheckPeriod" value="0" />

 

<!-- データベース統計収集を無効 -->

<add key="CentralizedLoggingDBStatsCheckPeriod" value="0" />

 

<!-- プラットフォーム パフォーマンス指標収集を有効 (1 分) -->

<add key="CentralizedLoggingPlatformPerformanceCheckPeriod" value="60000" />

 

<!-- プロセス パフォーマンス指標収集を有効 (1 分) -->

<add key="CentralizedLoggingProcessPerformanceCheckPeriod" value="60000" />

リム ノード 2 (データベース管理)

<!-- 一元化されたログ記録構成 -->

 

<!-- データベース サイズ管理を有効 (5 分、最大サイズ 6 GB) -->

<add key="CentralizedLoggingDBSizeCheckPeriod" value="300000" />

<add key="MaximumDatabaseSizeInGB" value="6" />

 

<!-- アーカイブ管理を有効 (60 分) -->

<add key="CentralizedLoggingDBArchiveCheckPeriod" value="3600000" />

 

<!-- パージ管理を有効 (60 分) -->

<add key="CentralizedLoggingDBPurgeCheckPeriod" value="3600000" />

 

<!-- データベース統計収集を有効 (5 分) -->

<add key="CentralizedLoggingDBStatsCheckPeriod" value="300000" />

 

<!-- プラットフォーム パフォーマンス指標収集を有効 (1 分) -->

<add key="CentralizedLoggingPlatformPerformanceCheckPeriod" value="60000" />

 

<!-- プロセス パフォーマンス指標収集を有効 (1 分) -->

<add key="CentralizedLoggingProcessPerformanceCheckPeriod" value="60000" />