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

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

最終更新日:Aug 21, 2024

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

前提条件

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

    重要

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

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

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

原則

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

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

重要

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

image

特徴

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

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

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

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

  • 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_mssql",
          "detail": {
            "Address": "rm-****.sqlserver.rds.aliyuncs.com",
            "User": "****",
            "Password": "*******",
            "DataBase": "****",
            "Limit": true,
            "PageSize": 100,
            "StateMent": "select * from LogtailTestTable where id > ? order by id",
            "CheckPoint": true,
            "CheckPointColumn": "id",
            "CheckPointStart": "0",
            "CheckPointSavePerPage": true,
            "CheckPointColumnType": "int",
            "IntervalMs": 1000
          }
        }
      ]
    }

    パラメーター

    データ型

    必須

    説明

    タイプ

    String

    課金されます

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

    アドレス

    String

    課金されません

    SQL Serverデータベースのアドレス。 例: rm-**** .sqlserver.rds.aliyuncs.com

    デフォルト値: 127.0.0.1:1433

    ユーザー

    String

    課金されません

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

    デフォルト値: root

    Password

    String

    課金されません

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

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

    重要

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

    データベース

    String

    課金されません

    SQL Serverデータベースの名前。

    DialTimeOutMs

    int

    課金されません

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

    デフォルト値: 5000。

    ReadTimeOutMs

    int

    課金されません

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

    デフォルト値: 5000。

    StateMent

    String

    課金されません

    SELECTステートメント。

    CheckPointパラメーターをtrueに設定した場合、statementパラメーターに指定したSELECTステートメントのWHERE句に、CheckPointColumnパラメーターに指定した列を含める必要があります。 また、列の値を疑問符 (?) に設定する必要があります。 たとえば、CheckPointColumnパラメーターをidの値を指定する必要があります。StateMentパラメータのSELECT * from... どこid > ? 形式でエンコードする必要があります。

    制限事項

    Boolean

    課金されません

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

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

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

    PageSize

    int

    課金されません

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

    MaxSyncSize

    int

    課金されません

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

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

    チェックポイント

    Boolean

    課金されません

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

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

    CheckPointColumn

    String

    課金されません

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

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

    警告

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

    CheckPointColumnType

    String

    課金されません

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

    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設定を作成したときに、[プラグイン設定] フィールドに [アドレス] 、[ユーザー] 、[パスワード] などのパラメーターの実際の値を入力しなかった場合、Logtail設定がLogtailサーバーに配信された後にパラメーターを変更できます。

Linux

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

  2. を検索するFind theservice_mssqlキーワードの/usr/local/ilogtail/user_log_config.jsonファイルのようなパラメータを変更します。住所,ユーザー、およびパスワード.

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

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

Windows

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

  2. を検索するFind theservice_mssqlキーワードのC:\Program Files\Alibaba\Logtail\user_log_config.jsonファイルのようなパラメータを変更します。住所,ユーザー、およびパスワード.

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

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

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

    2. [サービス] ダイアログボックスで、管理するサービスを選択します。

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

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

    3. サービスを右クリックし、[開始][停止] 、または [再起動] を選択します。

トラブルシューティング

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

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

このセクションでは、SQL Serverデータベースのサンプルテーブルと、Logtailによって収集されるサンプルログについて説明します。

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

    IF NOT EXISTS(SELECT * FROM sys.databases WHERE name = 'LogtailTest')
    BEGIN
    CREATE DATABASE [LogtailTest]
    END
    GO
    USE [LogtailTest]
    GO
    
    IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='LogtailTestTable' and xtype='U')
    BEGIN
    CREATE TABLE LogtailTestTable (
          id INT PRIMARY KEY IDENTITY (1, 1),
          name NVARCHAR(50),
          quantity INT
        )
    END
    GO
    
    INSERT INTO LogtailTestTable (name, quantity) values('banana', 1);
    INSERT INTO LogtailTestTable (name, quantity) values('banana', 2);
    INSERT INTO LogtailTestTable (name, quantity) values('banana', 3);
    INSERT INTO LogtailTestTable (name, quantity) values('banana', 4);
    SELECT * FROM LogtailTestTable;
    GO
  • サンプルログ 日志样例