このトピックでは、Simple Log Service コンソールで Logtail 設定を作成し、SQL Server クエリ結果を収集する方法について説明します。
前提条件
-
Logtail がインストールされていること。Linux の場合はバージョン 0.16.0 以降、Windows の場合はバージョン 1.0.0.8 以降を使用してください。詳細については、「Linux サーバーへの Logtail のインストール」または「Windows サーバーへの Logtail のインストール」をご参照ください。
重要Logtail サーバーがターゲットデータベースに接続できることを確認してください。
-
Logtail サーバーの IP アドレスを SQL Server データベースの IP アドレスホワイトリストに追加してください。
例えば、ApsaraDB RDS for SQL Server インスタンスの IP アドレスホワイトリストを設定するには、「IP アドレスホワイトリストの設定」をご参照ください。
機能
-
SQL Server データベースからのクエリ結果の収集
-
ページネーションの設定
-
タイムゾーンの設定
-
タイムアウトの設定
-
チェックポイント状態の保存
-
1 回の同期で収集するレコード数の制限
手順
Log Serviceコンソールにログインします。
-
データのインポート セクションで、カスタムデータプラグイン をクリックします。
-
宛先プロジェクトと Logstore を選択し、次へ をクリックします。
マシングループの設定ステップで、マシングループを設定します。
ビジネス要件に基づいて、シナリオとインストール環境のパラメーターを設定します。
重要マシングループが使用可能かどうかに関係なく、シナリオパラメーターとインストール環境パラメーターを設定する必要があります。 パラメーター設定は、以降の設定に影響します。
[応用サーバーグループ] セクションにマシングループが表示されていることを確認し、[次へ] をクリックします。
マシングループ利用可能
[ソースマシングループ] セクションからマシングループを選択します。

マシングループがありません
[マシングループの作成] をクリックします。 マシングループの作成パネルで、パラメーターを設定します。 マシングループ識別子パラメーターをIPアドレスまたはカスタム識別子に設定できます。 詳細については、「カスタム識別子ベースのマシングループの作成」または「IPアドレスベースのマシングループの作成」をご参照ください。
重要マシングループを作成した直後にマシングループを適用すると、マシングループのハートビートステータスがFAILになる可能性があります。 この問題は、マシングループがSimple Log Serviceに接続されていないために発生します。 この問題を解決するには、[再試行] をクリックします。 問題が解決しない場合は、Logtailでハートビート接続が検出されない場合はどうすればよいですか?
-
データソースの設定 タブで、設定名 と プラグイン設定 を設定し、次へ をクリックします。
入力は必須であり、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 } } ] }パラメータ
タイプ
必須
説明
typestring
はい
データソースタイプは service_mssql に設定されます。
Addressstring
いいえ
SQL Server アドレス。例:
rm-****.sqlserver.rds.aliyuncs.com。このパラメーターが設定されていない場合、デフォルトは 127.0.0.1:1433 です。
Userstring
いいえ
SQL Server データベースにログオンするためのユーザー名。
設定されていない場合、デフォルトで root が使用されます。
Passwordstring
いいえ
ユーザーのパスワード。デフォルト値は空です。
セキュリティ要件が高い場合は、ユーザー名とパスワードを
xxxに設定することをお勧めします。 Logtail の設定がローカルマシンに同期された後、/usr/local/ilogtail/user_log_config.json ファイルで対応する設定を見つけ、変更します。 詳細については、「ローカル設定の変更」をご参照ください。重要コンソールでこのパラメータを変更すると、同期時にコンソールがローカル設定を上書きします。
DataBasestring
いいえ
SQL Server のデータベース名。
DialTimeOutMsint
いいえ
SQL Server データベースへの接続タイムアウト。単位:ミリ秒 (ms)。
デフォルト値:5000。
ReadTimeOutMsint
いいえ
SQL Server データベースからクエリ結果を読み取るためのタイムアウト。単位:ms。
デフォルト値:5000。
StateMentstring
いいえ
SELECT ステートメント。
CheckPoint を true に設定する場合、StateMent の
SELECT文のWHERE句に CheckPointColumn パラメーターで指定された列を含め、この列の値を ? に設定する必要があります。 例: CheckPointColumn を id に、StateMent をSELECT * from ... where id > ?に設定します。Limitboolean
いいえ
LIMIT 句を使用したページネーションを使用するかどうかを指定します。
このパラメータを指定しない場合のデフォルト値は
falseで、LIMIT 句によるページネーションは使用されません。ページネーションには
Limitの使用を推奨します。Limitをtrueに設定すると、SQL クエリの実行時にStateMentに LIMIT 句が自動的に追加されます。PageSizeint
いいえ
ページサイズ。このパラメータは、
Limitがtrueに設定されている場合に必須です。MaxSyncSizeint
いいえ
1 回の同期で同期するレコードの最大数。
このパラメータを設定しない場合、デフォルト値は
0で、制限がないことを意味します。CheckPointboolean
いいえ
増分収集にチェックポイントを使用するかどうかを指定します。
設定されていない場合、デフォルト値は
falseで、チェックポイントは使用されません。CheckPointColumnstring
いいえ
チェックポイント列の名前。
CheckPointがtrueに設定されている場合は必須です。警告チェックポイント列の値は単調増加である必要があります。そうでない場合、Logtail は前回のクエリの最大値を次回の開始点として使用するため、データ損失が発生する可能性があります。
CheckPointColumnTypestring
いいえ
チェックポイント列のデータ型。有効な値:
intおよびtime。Logtail はint型を int64 として保存します。time型は、SQL Server のdate、datetime、およびtime型をサポートします。このパラメータは、
CheckPointがtrueに設定されている場合に必須です。CheckPointStartstring
いいえ
チェックポイント列の初期値。
このパラメータは、
CheckPointがtrueに設定されている場合に必須です。CheckPointSavePerPageboolean
いいえ
各ページの収集後にチェックポイントを保存するかどうかを指定します。
-
true:ページ分割のたびにチェックポイントを保存します。 -
false:同期が完了するたびにチェックポイントを保存します。
IntervalMsint
はい
同期間隔 (ms 単位)。
インデックスの作成とプレビュー 次に、[次へ] をクリックします。 デフォルトでは、Simple Log Serviceでフルテキストインデックスが有効になっています。 収集したログのフィールドインデックスを手動で作成するか、[自動インデックス生成] をクリックすることもできます。 その後、Simple Log Serviceはフィールドインデックスを生成します。 詳細については、「インデックスの作成」をご参照ください。
重要ログのすべてのフィールドをクエリする場合は、フルテキストインデックスを使用することを推奨します。 特定のフィールドのみをクエリする場合は、フィールドインデックスを使用することを推奨します。 これは、インデックストラフィックを減らすのに役立ちます。 フィールドを分析する場合は、フィールドインデックスを作成する必要があります。 分析のために、クエリ文にSELECT文を含める必要があります。
-
ログ照会 をクリックして、Logstore のクエリと分析ページに移動します。
インデックスが有効になるまで約 1 分かかる場合があります。その後、Rawデータ タブで収集されたログを表示できます。詳細については、「ログクエリと分析のクイックスタート」をご参照ください。
ローカル設定の変更
プラグイン設定 セクションで Address、User、および Password などのパラメーターに実際の値を入力しなかった場合、Logtail 設定が配信された後で手動で変更できます。
Linux
-
Logtail がインストールされているサーバーにログオンします。
-
/usr/local/ilogtail/user_log_config.jsonファイルを開き、service_mssqlの設定箇所を見つけて、Address、User、Passwordなどのフィールドを変更します。 -
次のコマンドを実行して、Logtail を再起動します。
sudo /etc/init.d/ilogtaild stop; sudo /etc/init.d/ilogtaild start
Windows
-
Logtail がインストールされているサーバーにログオンします。
-
C:\Program Files\Alibaba\Logtail\user_log_config.jsonファイルを開き、service_mssqlの設定箇所を見つけて、Address、User、Passwordフィールドを変更します。ファイルパスは、64 ビット版と 32 ビット版の Windows オペレーティングシステムで異なります。詳細については、「ファイルパス」をご参照ください。
-
Logtail を再起動します。
を選択します。
[サービス] ダイアログボックスで、管理するサービスを選択します。
Logtail V0.x.x.xの場合は、LogtailWorkerを選択します。
Logtail V1.0.0.0以降の場合は、LogtailDaemonを選択します。
サービスを右クリックし、[開始] 、[停止] 、または [再起動] を選択します。
トラブルシューティング
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 -
ログのサンプル
4 10-26 11:51:13 id :4 name :banana quantity :4 5 10-26 11:51:13 id :3 name :banana quantity :3 6 10-26 11:51:12 id :2 name :banana quantity :2 7 10-26 11:51:12 id :1 name :banana quantity :1