本文介绍如何创建 Logtail 采集配置来采集 MySQL 查询结果。
前提条件
-
已在服务器上安装 Linux Logtail 0.16.0 及以上版本或 Windows Logtail 1.0.0.8 及以上版本。具体操作,请参见 安装、运行、升级、卸载 Logtail 。
重要请确保用于安装 Logtail 的服务器可连接目标 MySQL 数据库。
-
在 MySQL 数据库中,设置白名单为 Logtail 所在服务器的 IP 地址。
例如 RDS MySQL 数据库的白名单设置,请参见 设置 IP 白名单 。
-
使用 CRD-AliyunPipelineConfig 采集 MySQL 查询结果,需要确保集群已经安装 Logtail 组件。
具体操作,请参见 安装 Logtail 组件 。
操作步骤
日志服务控制台
-
登录 日志服务控制台 。
-
单击控制台页面右侧的 快速接入数据 卡片。
-
在 接入数据 页面,选择 MySQL 查询结果-插件 。
-
选择目标 Project 和 Logstore,单击 下一步 。
-
在 机器组配置 页面,配置机器组。
-
根据实际需求,选择使用场景和安装环境。
重要无论是否已有机器组,都必须根据实际需求正确选择使用场景和安装环境,这将影响后续的页面配置。
-
确认目标机器组已在 应用机器组 区域,单击 下一步 。
已有机器组
从 源机器组 列表选择目标机器组。
没有可用机器组
单击 创建机器组 ,在 创建机器组 面板设置相关参数。机器组标识分为 IP 地址 和 用户自定义标识 ,更多信息请参见 创建用户自定义标识机器组(推荐) 或 创建 IP 地址机器组 。
重要创建机器组后立刻应用,可能因为连接未生效,导致心跳为 FAIL ,您可单击 自动重试 。如果还未解决,请参见 Logtail 机器组无心跳 进行排查。
-
-
在 数据源设置 页签中,设置 配置名称 和 插件配置 ,然后单击 下一步 。
您可以通过表单配置方式或编辑器配置(JSON 配置)方式完成数据源设置。详细配置,请参见 MySQL 输入插件 。
-
创建索引和预览数据,然后单击 下一步 。日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击 自动生成索引 ,日志服务将自动生成字段索引。更多信息,请参见 创建索引 。
重要如果需要查询日志中的所有字段,建议使用全文索引。如果只需查询部分字段、建议使用字段索引,减少索引流量。如果需要对字段进行分析(SELECT 语句),必须创建字段索引。
-
单击
查询日志
,系统将跳转至
Logstore
查询分析页面。
您需要等待 1 分钟左右,待索引生效后,才能在 原始日志 页签中,查看已采集到的日志。更多信息,请参见 查询与分析快速指引 。
CRD-AliyunPipelineConfig
本文以 ACK 集群为例,介绍如何创建采集配置。
-
登录 容器服务管理控制台 ,在左侧导航栏选择 集群列表 。
-
在 集群列表 页面中,单击目标集群 操作 列下的 更多 ,然后单击 管理集群 。
-
创建名为 example-k8s-file.yaml 的文件。
参数说明
示例
apiVersion: telemetry.alibabacloud.com/v1alpha1 # 创建一个 ClusterAliyunPipelineConfig kind: ClusterAliyunPipelineConfig metadata: # 设置资源名,在当前Kubernetes集群内唯一。该名称也是创建出的iLogtail采集配置名 name: example-crd-mysql spec: # 指定目标project project: name: k8s-log-clusterid # 创建用于存储日志的 Logstore logstores: - name: crd-mysql-test # 定义iLogtail采集配置 config: # 日志样例(可不填写) sample: '' inputs: - Type: service_mysql Address: "rm-*.mysql.rds.aliyuncs.com" CheckPoint: true CheckPointColumn: id CheckPointColumnType: int CheckPointSavePerPage: true CheckPointStart: "0" Database: **** IntervalMs: 1000 Limit: true MaxSyncSize: 100 PageSize: 100 User: **** Password: ******* StateMent: "select * from test where id > ? order by id" # 定义输出插件 flushers: # 使用flusher_sls插件输出到指定Logstore。 - Type: flusher_sls Logstore: crd-mysql-test Endpoint: cn-hangzhou.log.aliyuncs.com Region: cn-hangzhou TelemetryType: logs
Type
string
(必选)数据源类型,固定为 service_mysql 。
Address
string
(可选)MySQL 地址,例如
rm-****.mysql.rds.aliyuncs.com
。默认值为 127.0.0.1:3306 。
地址类型:
-
内网(专有网络):仅用于 同 VPC 下的实例(ECS、ACK 等阿里云实例)内网访问。
-
外网地址:业务部署在其他 VPC 或本地机器上,需要通过外网地址访问实例,但您需提前手动申请外网地址。具体操作,请参见 申请或释放外网地址 。
说明由于外网网络易波动,建议在业务中使用内网地址进行连接。
User
string
(可选)用于登录 MySQL 数据库的用户名称。默认值为 root 。
Password
string
(可选)登录 MySQL 数据库的用户密码。
如果安全需求较高,建议将用户名称和密码配置为
xxx
,待采集配置同步至本地机器后,在本地文件 /usr/local/ilogtail/user_log_config.json 中找到对应配置进行修改。具体操作,请参见 采集 MySQL 查询结果 。重要如果您在控制台上修改了此参数,同步至本地后会覆盖本地的配置。
DataBase
string
(可选)MySQL 数据库名称。
DialTimeOutMs
int
(可选)连接 MySQL 数据库超时时间,默认值为 5000,单位:ms。
ReadTimeOutMs
int
(可选)读取 MySQL 查询结果的超时时间,默认值为 5000,单位:ms。
StateMent
string
(可选)SELECT 语句。
设置 CheckPoint 为 true 时, Statement 中 SELECT 语句的 where 条件中必须包含 CheckPoint 列( CheckPointColumn )。支持使用半角问号(?)表示替换符,与 CheckPoint 列配合使用。
例如设置 CheckPointColumn 为 id ,设置 CheckPointStart 为 0 ,设置 StateMent 为
SELECT * from ... where id > ?
。则每次采集后,系统会保存最后一条数据的 ID 作为 Checkpoint,下次采集时查询语句中的半角问号(?)将被替换为该 Checkpoint 对应的 ID。Limit
boolean
(可选)是否使用 Limit 分页。
-
true :使用。
-
false (默认值):不使用。
建议使用 Limit 进行分页。设置 Limit 为 true 后,进行 SQL 查询时,系统将自动在 SELECT 语句中追加 LIMIT 语句。
PageSize
int
(可选)分页大小,Limit 为 true 时必须配置。
MaxSyncSize
int
(可选)每次同步最大记录数。默认值为 0,表示无限制。
CheckPoint
boolean
(可选)是否使用 CheckPoint。
-
true:使用。
-
false(默认值):不使用。
CheckPoint 可作为下次采集数据的起点,实现数据增量采集。
CheckPointColumn
string
(可选)CheckPoint 列名称。
设置 CheckPoint 为 true 时,需要配置。
警告该列的值必须递增,否则可能会出现数据漏采集问题(每次查询结果中的最大值将作为下次查询的输入)。
CheckPointColumnType
string
(可选)设置 CheckPoint 为 true 时,需要配置。
CheckPoint 列的数据类型,支持 int 和 time。int 类型的内部存储为 int64,time 类型支持 MySQL 的 date、datetime、time 类型。
CheckPointStart
string
(可选)设置 CheckPoint 为 true 时,需要配置。
CheckPoint 列的初始值。
CheckPointSavePerPage
boolean
(可选)设置 CheckPoint 为 true 时,需要配置。
是否每次分页时保存一次 CheckPoint。
-
true (默认值):每次分页时保存一次 CheckPoint。
-
false :每次同步完成后保存一次 CheckPoint。
IntervalMs
int
(必选)同步间隔,默认值为 60000,单位:ms。
-
-
执行
kubectl apply -f example-k8s-file.yaml
,Logtail 开始采集 MySQL 数据。 -
登录 日志服务控制台 ,在 Project 列表 ,单击打开目标 Project。
-
在对应的日志库右侧的
图标,选择 查询分析 ,查看查询日志。