すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:PostgreSQLクエリ結果の収集

最終更新日:Aug 21, 2024

このトピックでは、Simple Log ServiceコンソールでLogtail設定を作成してPostgreSQLクエリ結果を収集する方法について説明します。

前提条件

  • Logtail V0.16.0以降がLinuxサーバーにインストールされるか、Logtail V1.0.0.8以降がWindowsサーバーにインストールされます。 詳細については、「LinuxサーバーにLogtailをインストールする」または「WindowsサーバーにLogtailをインストールする」をご参照ください。

    重要

    Logtailがインストールされているサーバーが、PostgreSQLクエリ結果を収集するデータベースに接続できることを確認します。

  • LogtailがインストールされているサーバーのIPアドレスは、PostgreSQLクエリ結果を収集するPostgreSQLデータベースのホワイトリストに追加されます。

    ApsaraDB RDS For PostgreSQLインスタンスのIPアドレスホワイトリストを設定する方法の詳細については、「IPアドレスホワイトリストの設定」をご参照ください。

原則

Logtailは、Logtail設定で指定されたSELECTステートメントを定期的に実行し、クエリ結果をSimple Log Serviceにアップロードします。

Logtailがクエリ結果を取得した後、Logtailは結果のCheckPointフィールドの値をLogtailサーバーに保存します。 次回LogtailがSELECTステートメントを実行するとき、LogtailはCheckPointフィールドの値をSELECTステートメントに追加します。 これにより、Logtailは増分データを収集できます。

重要

データ収集中にチェックポイントを使用する場合は、SELECTステートメントのCheckPointフィールドの値を並べ替える必要があります。 そうしないと、データの重複やその他の問題が発生します。

image

特徴

  • PostgreSQLデータベースからクエリ結果を収集できます。

  • ページ化されたクエリ設定を構成できます。

  • タイムゾーンを指定できます。

  • タイムアウト期間を指定できます。

  • CheckPointフィールドの値を保存できます。

  • 一度に収集できるログの最大数を指定できます。

シナリオ

  • 自動インクリメントIDや時点などのマークに基づいて増分データを収集します。

  • フィルター条件に基づいてデータを同期します。

手順

  1. にログインします。Simple Log Serviceコンソール.

  2. [データのインポート] セクションで、[カスタムデータプラグイン] を選択します。

  3. プロジェクトとLogstoreを選択します。 そして、[次へ] をクリックします。

  4. マシングループの設定ステップで、マシングループを設定します。

    1. ビジネス要件に基づいて、シナリオとインストール環境のパラメーターを設定します。

      重要

      マシングループが使用可能かどうかに関係なく、シナリオパラメーターとインストール環境パラメーターを設定する必要があります。 パラメーター設定は、以降の設定に影響します。

    2. [応用サーバーグループ] セクションにマシングループが表示されていることを確認し、[次へ] をクリックします。

      マシングループ利用可能

      [ソースマシングループ] セクションからマシングループを選択します。

      image

      マシングループがありません

      [マシングループの作成] をクリックします。 マシングループの作成パネルで、パラメーターを設定します。 マシングループ識別子パラメーターをIPアドレスまたはカスタム識別子に設定できます。 詳細については、「カスタム識別子ベースのマシングループの作成」または「IPアドレスベースのマシングループの作成」をご参照ください。

      重要

      マシングループを作成した直後にマシングループを適用すると、マシングループのハートビートステータスがFAILになる可能性があります。 この問題は、マシングループがSimple Log Serviceに接続されていないために発生します。 この問題を解決するには、[再試行] をクリックします。 問題が解決しない場合は、Logtailでハートビート接続が検出されない場合はどうすればよいですか?

  5. [データソースの設定] ステップで、[設定名] および [プラグイン設定] パラメーターを設定し、[次へ] をクリックします。

    • 入力は必須であり、Logtail構成のデータソース設定を構成するために使用されます。

      重要

      inputsに指定できるデータソースの種類は1つだけです。

    • processorsはオプションで、データを解析するLogtail設定のデータ処理設定を設定するために使用されます。 1つ以上の処理方法を指定できます。

      入力の設定のみに基づいてログを解析できない場合は、[プラグイン設定] フィールドでプロセッサを設定して、データ処理用のプラグインを追加できます。 たとえば、フィールドの抽出、ログ時間の抽出、データのマスク、ログのフィルタリングができます。 詳細については、「Logtailプラグインを使用したデータ処理」をご参照ください。

    {
      "inputs": [
        {
          "type": "service_pgsql",
          "detail": {
            "Address": "pgm-****.pg.rds.aliyuncs.com",
            "User": "****",
            "Password": "*******",
            "DataBase": "****",
            "Limit": true,
            "PageSize": 100,
            "StateMent": "select * from specialalarmtest where id > $1 order by id",
            "CheckPoint": true,
            "CheckPointColumn": "id",
            "CheckPointStart": "0",
            "CheckPointSavePerPage": true,
            "CheckPointColumnType": "int",
            "IntervalMs": 1000
          }
        }
      ]
    }

    パラメーター

    データ型

    必須

    説明

    タイプ

    String

    課金されます

    データソースのタイプ。 値をservice_pgsqlに設定します。

    アドレス

    String

    課金されません

    PostgreSQLデータベースのアドレス。 例: pgm-**** .pg.rds.aliyuncs.com

    デフォルト値: 127.0.0.1:5432

    ユーザー

    String

    課金されません

    PostgreSQLデータベースへのログインに使用されるアカウントのユーザー名。

    デフォルト値: root

    Password

    String

    課金されません

    PostgreSQLデータベースへのログインに使用されるアカウントのパスワード。 このパラメーターはデフォルトで空となります。

    データセキュリティの要件が高い場合は、ユーザー名とパスワードをxxxに設定することを推奨します。 設定がLogtailサーバーに同期されたら、/usr/local/ilogtail/user_log_config.jsonファイルでUserおよびPasswordパラメーターを見つけ、ビジネス要件に基づいて値を変更します。 詳細については、「LogtailサーバーのLogtail設定の変更」をご参照ください。

    重要

    Simple Log Serviceコンソールでこのパラメーターを変更すると、変更がサーバーに同期された後、LogtailサーバーのLogtail設定のパラメーター設定が上書きされます。

    データベース

    String

    課金されません

    PostgreSQLデータベースの名前。

    DialTimeOutMs

    int

    課金されません

    PostgreSQLデータベースへの接続のタイムアウト期間。 単位:ミリ秒。

    デフォルト値: 5000。

    ReadTimeOutMs

    int

    課金されません

    PostgreSQLデータベースからの読み取りのタイムアウト期間。 単位:ミリ秒。

    デフォルト値: 5000。

    StateMent

    String

    課金されません

    SELECTステートメント。

    CheckPointパラメーターをtrueに設定した場合、statementパラメーターに指定するSELECTステートメントのWHERE句に、CheckPointColumnパラメーターで指定された列を含める必要があります。 また、列の値を $1に設定する必要があります。 たとえば、CheckPointColumnパラメーターをidの値を指定する必要があります。StateMentパラメータのSELECT * from... ここでid > $1形式を指定します。

    制限事項

    Boolean

    課金されません

    LIMIT句を使用してクエリ結果をページ分割するかどうかを指定します。

    デフォルト値: "false" この値は、LIMIT句が使用されていないことを示します。

    Limitパラメーターをtrueに設定することを推奨します。 Limitパラメーターをtrueに設定すると、LogtailがSQLステートメントを実行するときにstatementパラメーターに指定するSQLステートメントにLIMIT句が自動的に追加されます。

    PageSize

    int

    課金されません

    各ページで返すことができるログの最大数。 Limitパラメーターをtrueに設定した場合、このパラメーターを設定する必要があります。

    MaxSyncSize

    int

    課金されません

    一度に同期できるログの最大数。

    デフォルト値:0。 この値は、数が無制限であることを示します。

    チェックポイント

    Boolean

    課金されません

    データ収集時にチェックポイントを使用するかどうかを指定します。

    デフォルト値: "false" この値は、チェックポイントが使用されていないことを示します。

    CheckPointColumn

    String

    課金されません

    チェックポイントを格納する列の名前。 この列は、チェックポイント列とも呼ばれる。

    CheckPointパラメーターをtrueに設定した場合、このパラメーターを設定する必要があります。

    警告

    チェックポイント列の値は増分である必要があります。 そうでなければ、一部のデータは収集されない。 クエリ操作の結果の最大値は、次のクエリ操作の入力として使用されます。

    CheckPointColumnType

    String

    課金されません

    チェックポイント列のタイプ。 有効な値: intとtime。 このパラメーターをintに設定すると、チェックポイント列の値はint64型になります。 このパラメーターをtimeに設定した場合、チェックポイント列の値は、PostgreSQLでサポートされている時間型にすることができます。

    CheckPointパラメーターをtrueに設定した場合、このパラメーターを設定する必要があります。

    CheckPointStart

    String

    課金されません

    チェックポイント列の初期値。

    CheckPointパラメーターをtrueに設定した場合、このパラメーターを設定する必要があります。

    CheckPointSavePerPage

    Boolean

    課金されません

    クエリ結果がページ分割されるたびにチェックポイントを保存するかどうかを指定します。 有効な値:

    • true: クエリ結果がページ付けされるたびにチェックポイントが保存されます。

    • false: クエリ結果が同期されるたびにチェックポイントが保存されます。

    IntervalMs

    int

    課金されます

    同期間隔。 単位:ミリ秒。

  6. インデックスの作成プレビュー 次に、[次へ] をクリックします。 デフォルトでは、Simple Log Serviceでフルテキストインデックスが有効になっています。 収集したログのフィールドインデックスを手動で作成するか、[自動インデックス生成] をクリックすることもできます。 その後、Simple Log Serviceはフィールドインデックスを生成します。 詳細については、「インデックスの作成」をご参照ください。

    重要

    ログのすべてのフィールドをクエリする場合は、フルテキストインデックスを使用することを推奨します。 特定のフィールドのみをクエリする場合は、フィールドインデックスを使用することを推奨します。 これは、インデックストラフィックを減らすのに役立ちます。 フィールドを分析する場合は、フィールドインデックスを作成する必要があります。 分析のために、クエリ文にSELECT文を含める必要があります。

  7. [ログクエリ] をクリックします。 Logstoreのクエリと分析ページにリダイレクトされます。

    インデックスが有効になるまで約1分待つ必要があります。 次に、収集したログを [生ログ] タブで表示できます。 詳細については、「ログの照会と分析」をご参照ください。

LogtailサーバーのLogtail設定の変更

Logtail設定の作成時にPlug-in Configにアドレス、ユーザー、パスワードなどのパラメーターの実際の情報を入力しない場合は、Logtail設定がLogtailサーバーに配信された後にパラメーターを変更できます。

Linux

  1. Logtailサーバーにログインします。

  2. /usr/local/ilogtail/user_log_config.jsonファイルでservice_pgsqlキーワードを見つけ、AddressUserPasswordなどのパラメーターを変更します。

  3. 次のコマンドを実行してLogtailを再起動します。

    sudo /etc/init.d/ilogtaild stop; sudo /etc/init.d/ilogtaild start

Windows

  1. Logtailサーバーにログインします。

  2. を検索するFind theservice_pgsqlキーワードをC:\Program Files\Alibaba\Logtail\user_log_config.jsonファイルに追加し、住所,ユーザー、およびパスワード.

    ファイルの場所は、Windows 64ビットオペレーティングシステムとWindows 32ビットオペレーティングシステムで異なります。 詳細については、「Logtail設定ファイルとレコードファイル」をご参照ください。

  3. Logtailを再起動します。

    1. [スタート]> [コントロールパネル]> [管理ツール]> [サービス] を選択します。

    • [サービス] ダイアログボックスで、対応するサービスを選択します。

      • Logtail V0.x.x.xの場合は、LogtailWorkerを選択します。

      • Logtail V1.0.0.0以降の場合は、LogtailDaemonを選択します。

    • 右クリックして、[開始][停止][再起動] などの操作を選択します。

トラブルシューティング

Logtailを使用してログを収集した後、プレビューページまたはクエリページにデータが表示されない場合は、Logtailを使用してログを収集するときにエラーが発生した場合はどうすればよいですか?

サンプルデータベース表とサンプルログ

このセクションでは、PostgreSQLデータベースのサンプルデータベーステーブルと、Logtailによって収集されるサンプルログを提供します。

  • サンプルデータベース表

    // Create a table. 
    CREATE TABLE IF NOT EXISTS specialalarmtest (
        id BIGSERIAL NOT NULL,
        time TIMESTAMP NOT NULL,
        alarmtype varchar(64) NOT NULL,
        ip varchar(16) NOT NULL,
        COUNT INT NOT NULL,
        PRIMARY KEY (id)
    );
    
    // Insert data. 
    insert into specialalarmtest (time, alarmtype, ip, count) values(now(), 'NO_ALARM', '10.10.***.***', 0);
    insert into specialalarmtest (time, alarmtype, ip, count) values(now(), 'NO_ALARM', '10.10.***.***', 1);
    insert into specialalarmtest (time, alarmtype, ip, count) values(now(), 'NO_ALARM', '10.10.***.***', 2);
    insert into specialalarmtest (time, alarmtype, ip, count) values(now(), 'NO_ALARM', '10.10.***.***', 3);
                            
  • サンプルログ Sample logs