You need to enable JavaScript to run this app.
导航
Agent接入
最近更新时间:2024.03.20 14:06:34首次发布时间:2023.10.31 18:06:08

一、简介

火山引擎DataSail提供数据上报Agent,用户在开通DataSail服务之后,可以通过Agent将数据上报到火山云DataSail。

二、前置准备

服务开通

请确保您已开通了您需要访问的服务。您可前往火山引擎控制台开通全域数据集成服务,详见服务开通

获取安全凭证

Access Key(访问密钥)是访问火山引擎服务的安全凭证,包含Access Key ID(简称为AK)和Secret Access Key(简称为SK)两部分。您可登录火山引擎控制台,前往访问控制访问密钥中创建及管理您的Access Key。更多信息可参考访问密钥帮助文档

产品接入

  1. 申请Topic
    路径:数据采集-topic管理-新建Topic
  2. 申请数据采集
    路径:数据采集-采集管理-新建采集任务

说明

  1. 采集任务与topic为一对一映射,即一个采集任务只能有一个topic。
  2. 采集任务与Topic建议根据数据的实际种类与采集路径进行创建。
  3. 如果希望将所有采集路径下的时间发送至同一个topic内,则可以只创建一个采集任务,然后在Agent配置中只配置这一个采集任务的Id即可。
  4. 如果希望将不同采集路径下的数据发生至不同的topic,则需要为每一个采集路径创建一个采集任务。

三、准备Agent配置文件

单pipeline采集任务

  1. 如果只有一个采集任务,且任务下只有一个采集路径,可以直接在采集任务列表处下载配置文件即可。
  2. 单个采集任务的配置文件内容如下:
{
    "tasks":
    [
        {
            "task_key": "abc1234",  //采集任务id
            "sources":
            {
                "type": "file",
                "path":
                [
                    "/data/logs/test-*.log" //要采集的路径,支持正则简单的表达式
                ],
                "ignore_path":
                [], //采集路径下要忽略的路径,支持简单的正则表达式
                "recursive": true,  // 是否开启递归扫描,如果为true,遇到path中出现**的写法,则递归扫描匹配的目录下的所有文件
                "scan_batch_size": 100,
                "scan_end_timeout": 100
            },
            "operator":
            {},
            "queue":
            {
                "flush_min_events": 20,   // 数据批量上报的最小批大小
                "flush_timeout": 5000,    // 数据批量上报触发间隔,如果未攒够flush_min_events的条数,遇到此处配置的时间间隔,同样触发上报,单位ms
                "events": 1000          // Agent中内置消息队列缓存数据条数
            },
            "sinks":
            {
                "type": "http",
                "url": //DataSail的上报域名
                [
                    "${DATASAIL_COLLECT_DOMAIN}" // 从读取环境变量DATASAIL_COLLECT_DOMAIN
                ],
                "http_timeout": 500, //HTTP请求超时时间,单位ms
                "downgrade":
                {
                    "enable": true,  //是否开启降级,开启后,发送失败,则Agent发送降级
                    "max_downgrade_time": 10000 //降级最大sleep时间,单位ms
                    // 降级策略:遇到发送失败,则阻塞发送,线程sleep一段时间后,继续尝试发送
                    // sleep的时间 = 500ms * 尝试发送的次数 , 举例:
                    // 第一次发送失败,则sleep 500ms,第二次仍然失败,则sleep 1000ms,
                    // 第三次仍然失败,则sleep 1500ms,第四次仍然失败,则sleep 2000ms,
                    // 直到打到max_downgrade_time后,sleep不再增长。
                    // 中间重试过程中遇到任何一次成功则sleep降为0,恢复采集与发送。
                }
            }
        }
    ]
}

图片

多pipeline采集任务

  1. Agent支持多pipeline并行采集,即一个Agent可以同时采集多个路径,并且将不同路径下的数据发生到不同的采集任务对应的topic。
  2. 多个pipeline之间逻辑解耦,互不影响采集进度。即一个pipeline出现发送失败,或反压降级,其他pipeline不会受此影响。每个pipeline均内置一个消息队列,独立攒批次上报,逻辑隔离,互不影响。
  3. 采集路径的进度offset信息为采集路径粒度,故多个pipeline中不允许配置相同的采集路径,请保证多个pipeline之间的采集路径是互斥的。
  4. 配置文件下task为数组,其中每一个子元素为一个采集pipeline。每个pipeline的唯一Id为task_key,即采集任务Id,采集任务详见采集管理列表。
  5. 多pipeline的配置文件格式如下:
{
    "tasks":
    [
        {
            "task_key": "abc1234",  //采集任务id1
            "sources":  // pipeline1的文件扫描配置信息
            {
                "type": "file",
                "path":
                [
                    "/data/logs/test-*.log" //要采集的路径1
                ],
                "ignore_path":
                [], 
                "recursive": true, 
                "scan_batch_size": 100,
                "scan_end_timeout": 100
            },
            "operator":
            {},
            "queue": // pipeline1的内置队列配置信息
            {
                "flush_min_events": 20,  
                "flush_timeout": 5000, 
                "events": 1000          
            },
            "sinks": // pipeline1的消息发送配置信息
            {
                "type": "http",
                "url": //DataSail的上报域名
                [
                    "${DATASAIL_COLLECT_DOMAIN}" // 从读取环境变量DATASAIL_COLLECT_DOMAIN
                ],
                "http_timeout": 500, //HTTP请求超时时间,单位ms
                "downgrade":
                {
                    "enable": true,  //是否开启降级,开启后,发送失败,则Agent发送降级
                    "max_downgrade_time": 10000 //降级最大sleep时间,
                }
            }
        },
        {
            "task_key": "abc1234",  //采集任务id2
            "sources": // pipeline2的文件扫描配置信息
            {
                "type": "file",
                "path":
                [
                    "/data/logs/test-*.log" //要采集的路径2,请保证不同pipeline的路径互斥
                ],
                "ignore_path":
                [], 
                "recursive": true, 
                "scan_batch_size": 100,
                "scan_end_timeout": 100
            },
            "operator":
            {},
            "queue": // pipeline2的内置队列配置信息
            {
                "flush_min_events": 20,  
                "flush_timeout": 5000, 
                "events": 1000          
            },
            "sinks": // pipeline2的消息发送配置信息
            {
                "type": "http",
                "url": //DataSail的上报域名
                [
                    "${DATASAIL_COLLECT_DOMAIN}" // 从读取环境变量DATASAIL_COLLECT_DOMAIN
                ],
                "http_timeout": 500, //HTTP请求超时时间,单位ms
                "downgrade":
                {
                    "enable": true,  //是否开启降级,开启后,发送失败,则Agent发送降级
                    "max_downgrade_time": 10000 //降级最大sleep时间,
                }
            }
        }
    ]
}

四、上报示例

Linux(x86)运行包

datasail_agent.tar.gz
未知大小

Mac (M1芯片 Mac OS系统)运行包

datasail_agent.tar.gz
未知大小

Mac (M1芯片 Linux 系统)运行包

datasail_agent.tar.gz
未知大小

运行命令

// 下载运行包,并解压
tar zxvf datasail_agent.tar.gz

// 进入包内
cd datasail_agent

// 将下载的配置文件移动至当前目录下
cp ../agent_config_xxx.json conf/config.json

// 给当前用户赋执行权限
chmod a+x bin/agent_launcher bin/launcher 

// 声明配置文件中用到的环境变量
export DATASAIL_COLLECT_DOMAIN=https://xxx.com//运行agent


./bin/launcher \
--conf conf  \
--access_key your_ak  \
--secret_key your_sk  \
--agent_cluster your_cluster_name

全局环境变量

变量名

含义

示例

DATASAIL_COLLECT_DOMAIN

数据上报域名

datasail01-cn-beijing.volceapplog.com

运行参数

参数名

含义

默认值

--conf

要加载的配置文件路径,建议放置在解压后顶级conf内当conf路径下有且仅存在一个配置文件.json时,默认加载此文件;
如果存在多个.json配置文件,则需要通过--conf_file_name参数指定要加载的配置文件名

无默认,必填

--conf_file_name

当conf指定的目录下存在多个配置文件时,使用此参数指定配置文件名

非必填,无默认

--access_key

火山云 Access Key

无默认,必填

--secret_key

火山云 Secret Key

无默认,必填

--agent_cluster

自定义agent集群名,请保证同一个集群内IP唯一

无默认

--max_proces

最大使用CPU核心数,如果不设置则不做限制

无默认

--memory_limit

最大使用内存数,如果不设置则不做限制,单位MB

无默认

--qps_limit

最大上报流量QPS,如果不设置则不做限制。

无默认

--qps_limit_burst

最大令牌桶爆裂QPS,如果不设置则不做限制。

无默认

agent目录

agent_launcher
    | - bin   //启动命令
    | - conf  //建议的配置文件存储目录
    | - data  //建议的运行目录,如果不选择此目录,需把目录下core移动至运行目录下
        | - conf // agent内核中间状态配置文件,勿动
        | - data // Fliebeat 运行目录,勿动
        | - log // 运行日志
            | - agent_launch.log //Agent启动日志
            | - agent_run.log  //Agent运行日志

Agent运行日志

  1. 在conf目录下存在一个log.yaml配置文件,用于控制Agent的输出日志级别。
  2. 默认日志配置文件内容如下:
log:
  level: "info"      // 日志输出级别,trace、debug、info、notice、warn、error、fatal
  interval: "hour"  // 日志聚合粒度,hour、day
  console: false    // 是否在控制台输出
  file: true        // 是否输出到文件
  file_count:72    // 保留的日志文件数目,默认保存72个日志文件