添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

本文介绍如何通过日志服务控制台创建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字段进行排序,否则会造成数据重复或其他问题。

image

功能

  • 支持采集SQL Server数据库的查询结果。

  • 支持分页设置。

  • 支持时区设置。

  • 支持超时设置。

  • 支持保存CheckPoint状态。

  • 支持限制每次最大采集数量。

应用场景

  • 根据数据中的自增ID或时间等标识采集增量数据。

  • 根据筛选条件自定义同步。

操作步骤

  1. 登录 日志服务控制台

  2. 接入数据 区域,选择 自定义数据插件

  3. 选择目标Project和Logstore,单击 下一步
  4. 机器组配置 页面,配置机器组。

    1. 根据实际需求,选择使用场景和安装环境。

      重要

      无论是否已有机器组,都必须根据实际需求正确选择使用场景和安装环境,这将影响后续的页面配置。

    2. 确认目标机器组已在 应用机器组 区域,单击 下一步

      已有机器组

      源机器组 列表选择目标机器组。

      image

      没有可用机器组

      单击 创建机器组 ,在 创建机器组 面板设置相关参数。机器组标识分为 IP地址 用户自定义标识 ,更多信息请参见 创建用户自定义标识机器组(推荐) 创建IP地址机器组

      重要

      创建机器组后立刻应用,可能因为连接未生效,导致心跳为 FAIL ,您可单击 重试 。如果还未解决,请参见 Logtail机器组无心跳 进行排查。

  5. 数据源设置 页签中,设置 配置名称 插件配置 ,单击 下一步

    • 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。

  6. 创建索引 预览数据 ,然后单击 下一步 。日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击 自动生成索引 ,日志服务将自动生成字段索引。更多信息,请参见 创建索引

    重要

    如果需要查询日志中的所有字段,建议使用全文索引。如果只需查询部分字段、建议使用字段索引,减少索引流量。如果需要对字段进行分析(SELECT语句),必须创建字段索引。

  7. 单击 查询日志 ,系统将跳转至Logstore查询分析页面。
    您需要等待1分钟左右,待索引生效后,才能在 原始日志 页签中,查看已采集到的日志。更多信息,请参见 查询和分析日志

修改本地配置

如果您没有在 插件配置 中输入真实的Address、User、Password等信息,可以在采集配置下发到本地后进行手动修改。

Linux系统

  1. 登录Logtail所在服务器。

  2. 打开 /usr/local/ilogtail/user_log_config.json 文件,找到 service_mssql 关键字,修改 Address User Password 等字段。

  3. 执行以下命令重启Logtail。

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

Windows系统

  1. 登录Logtail所在服务器。

  2. 打开 C:\Program Files\Alibaba\Logtail\user_log_config.json 文件,找到 service_mssql 关键字,修改 Address User Password 等字段。

    Windows 64位操作系统和Windows 32位操作系统文件位置不同,具体请参见 文件路径

  3. 执行以下命令重启Logtail。

    1. 选择 开始 > 控制面板 > 管理工具 > 服务

    2. 服务 对话框中,选择对应的服务。

      • 如果是0.x.x.x版本,选择LogtailWorker服务。

      • 如果是1.0.0.0及以上版本,选择LogtailDaemon服务。

    3. 右键选择对应的操作,包括 启动 停止 重新启动

问题排查

使用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
  • 日志样例 日志样例