このトピックでは、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 データベースのホワイトリストに追加します。
たとえば、ApsaraDB RDS for SQL Server インスタンスのホワイトリストを設定するには、「IP アドレスホワイトリストの設定」をご参照ください。
機能
-
SQL Server データベースからのクエリ結果の収集
-
ページネーションの設定
-
タイムゾーンの設定
-
タイムアウトの設定
-
チェックポイント状態の保存
-
同期ごとの収集レコード数の制限
操作手順
Simple Log Service コンソールにログインします。
-
データのインポート セクションで、カスタムデータプラグイン をクリックします。
-
送信先プロジェクトと Logstore を選択し、次へ をクリックします。
[マシングループ設定] ステップでは、マシングループを設定します。
必要に応じて、[シナリオ] と [インストール環境] のパラメーターを設定します。
重要マシングループが利用可能かどうかにかかわらず、[シナリオ] と [インストール環境] のパラメーターを設定する必要があります。このパラメーター設定は、後続の設定に影響します。
マシングループが [適用サーバーグループ] セクションに表示されていることを確認し、[次へ] をクリックします。
利用可能なマシングループがある場合
[ソースマシングループ] セクションからマシングループを選択します。

利用可能なマシングループがない場合
[マシングループの作成] をクリックします。 [マシングループの作成] パネルで、パラメーターを設定します。 マシングループ識別子パラメーターを [IP アドレス] または [カスタム識別子] に設定できます。 詳細については、「カスタム識別子ベースのマシングループを作成する」または「IP アドレスベースのマシングループを作成する」をご参照ください。
重要マシングループを作成した直後に適用すると、マシングループのハートビートステータスが [FAIL] になる場合があります。この問題は、マシングループが Simple Log Service に接続されていないことが原因で発生します。この問題を解決するには、[自動リトライ] をクリックします。問題が解決しない場合は、「Logtail でハートビート接続が検出されない場合の対処方法」をご参照ください。
-
データソースの設定 タブで、設定名 と プラグイン設定 を設定し、次へ をクリックします。
-
inputs は必須であり、Logtail 構成のデータソース設定に使用されます。
重要inputs では、1 種類のデータソースしか指定できません。
-
processors はオプションであり、データを解析するための Logtail 構成のデータ処理設定に使用されます。1 つ以上の処理メソッドを指定できます。
inputs の設定のみに基づいてログを解析できない場合は、[プラグイン設定] フィールドでプロセッサを設定して、データ処理用のプラグインを追加できます。 たとえば、フィールドの抽出、ログ時間の抽出、データのマスク、ログのフィルタリングなどです。 詳細については、「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 } } ] }パラメーター
型
必須
説明
type
string
はい
データソースの型は service_mssql に設定されます。
Address
string
いいえ
SQL Server のアドレス。例:
rm-****.sqlserver.rds.aliyuncs.com。このパラメーターが設定されていない場合、デフォルトは 127.0.0.1:1433 です。
User
string
いいえ
SQL Server データベースにログインするためのユーザー名。
設定されていない場合、デフォルトで root が使用されます。
Password
string
いいえ
ユーザーのパスワード。このパラメーターはデフォルトで空です。
セキュリティ要件が高い場合は、ユーザー名とパスワードを
xxxに設定することを推奨します。Logtail 構成がローカルマシンに同期された後、/usr/local/ilogtail/user_log_config.json ファイルで対応する構成を見つけて変更します。詳細については、「ローカル設定の変更」をご参照ください。重要コンソールでこのパラメーターを変更すると、同期時にコンソールがローカル設定を上書きします。
DataBase
string
いいえ
SQL Server データベースの名前。
DialTimeOutMs
int
いいえ
SQL Server データベースへの接続タイムアウト。単位:ミリ秒 (ms)。
デフォルト値:5000。
ReadTimeOutMs
int
いいえ
SQL Server データベースからのクエリ結果の読み取りタイムアウト。単位:ms。
デフォルト値:5000。
StateMent
string
いいえ
SELECT 文。
CheckPoint を true に設定する場合、StateMent の
SELECT文のWHERE句には、CheckPointColumn パラメーターで指定された列を含める必要があり、この列の値は ? に設定する必要があります。例:CheckPointColumn を id に、StateMent をSELECT * from ... where id > ?に設定します。Limit
boolean
いいえ
LIMIT 句を使用したページネーションを使用するかどうかを指定します。
このパラメーターが指定されていない場合、デフォルト値は false であり、Limit ベースのページネーションが使用されないことを示します。
ページネーションには Limit を使用することを推奨します。Limit を true に設定すると、SQL クエリを実行するときに LIMIT 文が自動的に Statement に追加されます。
PageSize
int
いいえ
ページサイズ。このパラメーターは、Limit が true に設定されている場合に必須です。
MaxSyncSize
int
いいえ
一度に同期するレコードの最大数。
このパラメーターを設定しない場合、デフォルト値は 0 であり、制限がないことを示します。
CheckPoint
boolean
いいえ
増分収集にチェックポイントを使用するかどうかを指定します。
設定されていない場合、デフォルト値は false であり、チェックポイントが使用されないことを示します。
CheckPointColumn
string
いいえ
チェックポイント列の名前。
CheckPoint が true に設定されている場合は必須です。
警告チェックポイント列の値は増分である必要があります。そうでない場合、Logtail は前回のクエリの最大値を次回の開始点として使用するため、データ損失が発生する可能性があります。
CheckPointColumnType
string
いいえ
チェックポイント列のデータの型。有効な値:
intおよびtime。Logtail はint型を int64 として保存します。time型は SQL Server のdate、datetime、およびtime型をサポートします。このパラメーターは、CheckPoint が true に設定されている場合に必須です。
CheckPointStart
string
いいえ
チェックポイント列の初期値。
このパラメーターは、CheckPoint が true に設定されている場合に必須です。
CheckPointSavePerPage
boolean
いいえ
各ページを収集した後にチェックポイントを保存するかどうかを指定します。
-
true:ページネーションが発生するたびにチェックポイントを保存します。
-
false:各同期が完了した後にチェックポイントを保存します。
IntervalMs
int
はい
同期間隔 (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 -
サンプルログ
