跳转至

脚本开发 / 连接器对象 DFF.CONN / 阿里云日志服务 SLS

阿里云日志服务 SLS 连接器操作对象用于列出 Project 和 Logstore,并查询日志。

DFF.CONN(...) 参数如下:

参数 类型 必须 / 默认值 说明
connector_id str 必须 连接器 ID

AccessKey 凭据来自连接器配置,不需要也不应在脚本代码中传入。

.list_projects()

返回当前凭据有权访问的 Project 名称,格式为 list[str]

示例
1
2
sls = DFF.CONN('aliyun_sls_connector_id')
projects = sls.list_projects()

此方法使用 SDK 的默认分页参数,单次最多返回 100 个 Project,且不支持传入分页参数。

.list_logstores(...)

列出指定 Project 下的 Logstore,参数如下:

参数 类型 必须 / 默认值 说明
project str 必须 Project 名称

返回值格式为 list[str]

示例
1
logstores = sls.list_logstores('example-project')

此方法使用 SDK 的默认分页参数,单次最多返回 100 个 Logstore,且不支持传入分页参数。

.query(...)

查询指定 Project 和 Logstore 中的日志。参数会直接传给 aliyun-log-python-sdk 的日志查询接口:

参数 类型 必须 / 默认值 说明
project str 必须 Project 名称
logstore str 必须 Logstore 名称
from_time int/str 必须 查询开始时间,可传入 Unix 秒时间戳或 SLS 支持的可读时间字符串
to_time int/str 必须 查询结束时间,可传入 Unix 秒时间戳或 SLS 支持的可读时间字符串
topic str None 限定日志主题
query str None SLS 查询语句
reverse bool False 是否优先返回较新的日志
offset int 0 返回结果的起始偏移量
size int 100 最大返回条数;-1 表示请求全部结果
power_sql bool False 是否使用增强 SQL 模式
scan bool False 是否使用 Scan 查询模式
forward bool True Scan 查询的翻页方向,True 表示下一页,False 表示上一页
accurate_query bool True 是否使用精确查询模式
from_time_nano_part int 0 查询开始时间的纳秒部分
to_time_nano_part int 0 查询结束时间的纳秒部分
示例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
sls = DFF.CONN('aliyun_sls_connector_id')

query_args = {
    'project'  : 'example-project',
    'logstore' : 'application',
    'from_time': _DFF_TRIGGER_TIME - 3600,
    'to_time'  : _DFF_TRIGGER_TIME,
    'query'    : 'error',
    'size'     : 100,
}
logs = sls.query(**query_args)

返回值格式为 list[dict],每条日志包含以下字段:

字段 类型 说明
contents dict 日志内容
timestamp int 日志时间,Unix 秒时间戳

SDK 查询失败时,其异常会直接向上抛出。

限制查询范围和返回数量

大范围日志查询可能产生较高开销。定时任务应使用 _DFF_TRIGGER_TIME 构造稳定的查询窗口,并根据实际需求限制时间范围和 size