本文介绍如何通过日志服务控制台创建Logtail采集配置来采集SQL Server查询结果。
前提条件
-
已在服务器上安装Linux Logtail 0.16.0及以上版本或Windows Logtail 1.0.0.8及以上版本。具体操作,请参见 安装Logtail(Linux系统) 或 安装Logtail(Windows系统) 。
重要请确保用于安装Logtail的服务器可连接目标数据库。
-
在SQL Server数据库中,设置白名单为Logtail所在服务器的IP地址。
例如RDS SQL Server数据库的白名单设置,请参见 设置白名单 。
原理
Logtail根据Logtail采集配置定期执行指定的SELECT语句,将查询结果作为数据上传到日志服务。
Logtail获取到查询结果时,会将结果中的CheckPoint字段保存到本地。当下次执行SELECT语句时,会将上一次保存的CheckPoint带入到SELECT语句中,以此实现增量数据采集。
开启CheckPoint时,需要在SELECT语句中对CheckPoint字段进行排序,否则会造成数据重复或其他问题。
功能
-
支持采集SQL Server数据库的查询结果。
-
支持分页设置。
-
支持时区设置。
-
支持超时设置。
-
支持保存CheckPoint状态。
-
支持限制每次最大采集数量。
应用场景
-
根据数据中的自增ID或时间等标识采集增量数据。
-
根据筛选条件自定义同步。
操作步骤
-
登录 日志服务控制台 。
-
在 接入数据 区域,选择 自定义数据插件 。
- 选择目标Project和Logstore,单击 下一步 。
-
在 机器组配置 页面,配置机器组。
-
根据实际需求,选择使用场景和安装环境。
重要无论是否已有机器组,都必须根据实际需求正确选择使用场景和安装环境,这将影响后续的页面配置。
-
确认目标机器组已在 应用机器组 区域,单击 下一步 。
已有机器组
从 源机器组 列表选择目标机器组。
没有可用机器组
单击 创建机器组 ,在 创建机器组 面板设置相关参数。机器组标识分为 IP地址 和 用户自定义标识 ,更多信息请参见 创建用户自定义标识机器组(推荐) 或 创建IP地址机器组 。
重要创建机器组后立刻应用,可能因为连接未生效,导致心跳为 FAIL ,您可单击 重试 。如果还未解决,请参见 Logtail机器组无心跳 进行排查。
-
-
在 数据源设置 页签中,设置 配置名称 和 插件配置 ,单击 下一步 。
-
inputs 为数据源配置,必选项。
重要一个 inputs 中只允许配置一个类型的数据源。
-
processors 为处理配置,用于解析数据。可选项,您可以配置一种或多种处理方式。
如果当前的 inputs 配置无法满足日志解析需求,您可以在 插件配置 中添加processors配置,即添加Logtail插件处理数据。例如提取字段、提取日志时间、脱敏数据、过滤日志等。更多信息,请参见 使用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
否
用于登录SQL Server数据库的账号密码。不配置时,默认为空。
如果安全需求较高,建议将用户名和密码配置为
xxx
,待采集配置同步至本地机器后,在本地文件 /usr/local/ilogtail/user_log_config.json 找到对应配置进行修改。具体操作,请参见 修改本地配置 。重要如果您在控制台上修改了此参数,同步至本地后会覆盖当前本地的配置。
DataBase
string
否
SQL Server数据库名称。
DialTimeOutMs
int
否
连接SQL Server数据库的超时时间,单位:ms。
不配置时,默认使用5000 ms。
ReadTimeOutMs
int
否
读取SQL Server查询结果的超时时间,单位:ms。
不配置时,默认使用5000 ms。
StateMent
string
否
SELECT语句。
设置 CheckPoint 为 true 时, StateMent 中SELECT语句的where条件中必须包含CheckPoint列( CheckPointColumn 参数),并将该列的值设置为 ? 。例如:设置 CheckPointColumn 为 id ,设置 StateMent 为
SELECT * from ... where id > ?
。Limit
boolean
否
是否使用Limit分页。
不配置时,默认使用 false ,表示不使用Limit分页。
建议使用 Limit 进行分页。设置 Limit 为 true 后,进行SQL查询时,会自动在 StateMent 中追加LIMIT语句。
PageSize
int
否
分页大小, Limit 为 true 时必须配置。
MaxSyncSize
int
否
每次同步最大记录数。
不配置时,默认使用 0 ,表示无限制。
CheckPoint
boolean
否
是否使用CheckPoint。
不配置时,默认使用 false ,表示不使用CheckPoint。
CheckPointColumn
string
否
CheckPoint列名称。
CheckPoint 为 true 时必须配置。
警告该列的值必须递增,否则可能会出现数据漏采集问题(每次查询结果中的最大值将作为下次查询的输入)。
CheckPointColumnType
string
否
CheckPoint列类型,支持int和time两种类型。int类型的内部存储为int64,time类型支持SQL Server的date、datetime、time。
CheckPoint 为 true 时必须配置。
CheckPointStart
string
否
CheckPoint列的初始值。
CheckPoint 为 true 时必须配置。
CheckPointSavePerPage
boolean
否
是否每次分页时保存一次CheckPoint。
-
true :每次分页时保存一次CheckPoint。
-
false :每次同步完成后保存一次CheckPoint。
IntervalMs
int
是
同步间隔,单位:ms。
-
-
创建索引 和 预览数据 ,然后单击 下一步 。日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击 自动生成索引 ,日志服务将自动生成字段索引。更多信息,请参见 创建索引 。
重要如果需要查询日志中的所有字段,建议使用全文索引。如果只需查询部分字段、建议使用字段索引,减少索引流量。如果需要对字段进行分析(SELECT语句),必须创建字段索引。
-
单击
查询日志
,系统将跳转至Logstore查询分析页面。
您需要等待1分钟左右,待索引生效后,才能在 原始日志 页签中,查看已采集到的日志。更多信息,请参见 查询和分析日志 。
修改本地配置
如果您没有在 插件配置 中输入真实的Address、User、Password等信息,可以在采集配置下发到本地后进行手动修改。
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 等字段。
Windows 64位操作系统和Windows 32位操作系统文件位置不同,具体请参见 文件路径 。
-
执行以下命令重启Logtail。
-
选择
。 -
在 服务 对话框中,选择对应的服务。
-
如果是0.x.x.x版本,选择LogtailWorker服务。
-
如果是1.0.0.0及以上版本,选择LogtailDaemon服务。
-
-
右键选择对应的操作,包括 启动 、 停止 或 重新启动 。
-
问题排查
使用Logtail采集日志后,如果预览页面或查询页面无数据,您可以参见 Logtail采集日志失败的排查思路 进行排查。
数据库表和日志样例
SQL Server数据库表结构样例和Logtail采集到的日志样例如下所示。
-
表结构样例
IF NOT EXISTS(SELECT * FROM sys.databases WHERE name = 'LogtailTest') BEGIN CREATE DATABASE [LogtailTest] USE [LogtailTest] 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 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
-
日志样例