配置DIS Agent
DIS Agent配置文件格式为“YAML”,各配置项与值之间必须以英文格式的“冒号+空格”形式分隔。
agent.yml文件模板可从“dis-agent”压缩包中获取,内容示例如下。具体配置项说明请参见表1。
--- # cloud region id region: myregion ## The plaintext storage of the AK and SK used for authentication has great security risks ## You are advised to use the /bin/dis-encrypt.sh script to encrypt the AK and SK before storing them # you ak (get from 'My Credential') ak: YOU_AK # you sk (get from 'My Credential') sk: YOU_SK # you_key(encry you ak or sk) encrypt.key: abc # you project id (get from 'My Credential') projectId: YOU_PROJECTID # the dis endpoint endpoint: https://dis.myregion.cloud.com # config each flow to monitor file. flows: ### DIS Stream - DISStream: YOU_DIS_STREAM_1 ## only support specified directory, filename can use * to match some files. eg. * means match all file, test*.log means match test1.log or test-12.log and so on. filePattern: /tmp/*.log ## from where to start: 'START_OF_FILE' or 'END_OF_FILE' initialPosition: START_OF_FILE ## upload max interval(ms) maxBufferAgeMillis: 5000 ### If there are other monitor files, continue to follow the above configuration ### another dis stream monitor config, uncomment # if you want to use this feature #- DISStream: YOU_DIS_STREAM_2 # filePattern: /opt/*.log # initialPosition: START_OF_FILE # maxBufferAgeMillis: 5000 ### OBS Stream: Upload the matching file to OBS and send the file name to DIS, uncomment # if you want to use this feature #- OBSStream: YOU_DIS_STREAM_3 # filePattern: /opt/*.log # initialPosition: START_OF_FILE # ## bucket name # OBSBucket: YOU_OBS_BUCKET_NAME # ## OBS endpoint # OBSEndpoint: https://obs.myregion.cloud.com # ## the directory(using / separated) where the files are stored under the bucket, automatically created if it does not exist # dumpDirectory: example/dis/
配置完成之后,请将agent.yml中flows下面无用的示例配置删除或者使用#注释(比如只配置了一个DISStream,则将下面的CustomFileStream与另外的DISStream模块删除或者注释)。
Linux服务器上配置DIS Agent
- 使用PuTTY 工具登录日志所在服务器。
- 执行cd /opt/dis-agent-X.X.X/命令,进入“dis-agent-X.X.X”文件夹。
- 执行vim conf/agent.yml命令,打开DIS Agent配置文件“agent.yml”,根据实际情况修改各配置项的值并保存,配置项说明请参见表1。
表1 agent.yml配置文件说明 配置项
是否必填
说明
默认值
region
是
DIS服务所在区域。
说明:获取DIS区域请参见地区和终端节点。
-
AK
是
用户的Access Key。
说明:支持用户自己加密AK以保证安全,也可以使用明文的AK,如若需要对AK加密,请查看表格下关于AK/SK加密的使用说明。
获取方式请参见检查认证信息。
请根据实际情况配置
SK
是
用户的Secret Key。
说明:支持用户自己加密SK以保证安全,也可以使用明文的SK,如若需要对SK加密,请查看表格下关于AK/SK加密的使用说明。
获取方式请参见检查认证信息。
请根据实际情况配置
encrypt.key
否
用户加密时使用key值。
说明:如果用户需要使用加密的AK或者SK,则必须配置该参数(自己在agent.yml文件中添加),请务必保证加密时使用的key值和此处写的encrypt.key保持一致,否则将会解密失败。
请根据实际情况配置
projectId
是
用户所属区域的项目ID。
获取方式请参见检查认证信息。
请根据实际情况配置
endpoint
是
DIS数据网关地址。
格式:https://DIS终端节点。
说明:获取DIS终端节点请参见地区和终端节点。
-
body.serialize.type
否
DIS数据包上传格式。(非原始数据格式)- json:DIS数据包封装为json格式,满足普通使用。
- protobuf:DIS数据包封装为二进制格式,可以减少体积约1/3,在数据量较大的情况下推荐使用此格式。
json
body.compress.enabled
否
是否开启传输数据压缩。
false
body.compress.type
否
开启压缩时选择的数据压缩格式,目前支持的压缩格式如下:
lz4:综合来看效率最高的压缩算法,更加侧重压缩解压速度,压缩比并不是第一。
zstd:一种新的无损压缩算法,旨在提供快速压缩,并实现高压缩比。
lz4
PROXY_HOST
否
配置代理IP,请求走代理服务器的需要配置。
请根据实际情况配置
PROXY_PORT
否
配置代理端口。
80
PROXY_PROTOCOL
否
配置代理协议。支持http和https。
http
PROXY_USERNAME
否
配置代理用户名。
请根据实际情况配置
PROXY_PASSWORD
否
配置代理密码。
请根据实际情况配置
[flows]
监控的文件信息,可同时配置多个监控文件信息。
当前支持如下模式上传:
DISStream:持续监控文本文件,实时收集增量数据按分隔符解析并上传到DIS通道(通道源数据类型为BLOB/JSON/CSV),配置项说明请参见表2。
具体配置格式可以参见版本包中的“agent.yml”的样例。
关于AK/SK加密的使用说明:
参照安装DIS Agent下载安装dis-agent,利用dis-agent包中bin目录下的脚本对AK和SK进行加密,按照如下所示步骤进行操作(windows环境下):
- 进入到dis-agent的bin目录中,右键git bash here运行脚本,示例: ./dis-encrypt.sh {key} {ak},即可得到加密后的AK,将其配置在“agent.yml“配置文件中,SK同理。
- 按上述操作将AK和SK加密之后,将加密后的AK/SK,key全部配置到"agent.yml”即可。
图1 加密示例
表2 DISStream配置项说明 配置项
是否必填
说明
默认值
DISStream
是
DIS 通道名称。
将“filePattern”所匹配到的文件内容按分隔符解析并上传到此通道。
请根据实际情况配置
filePattern
是
文件监控路径,只能监控一个目录下的文件,无法递归目录监控。
如果要监控多个目录,可以在flows下面配置多个“DISStream”,文件名可使用“*”进行匹配。- “/tmp/*.log”表示匹配“/tmp”目录下所有以“.log”结尾的文件。
- “/tmp/access-*.log”表示匹配“/tmp”目录下所有以“access-”开头,以“.log”结尾的文件。
- Windows上路径范例为“D:\logs\*.log”。
请根据实际情况配置
directoryRecursionEnabled
否
是否查找子目录
- false:不递归查找子目录,只匹配根目录下的文件
- true: 递归查找所有子目录。如filePattern配置为/tmp/*.log,此时可以匹配到/tmp/one.log,/tmp/child/two.log,/tmp/child/child/three.log
false
initialPosition
否
监控起始位置。
- END_OF_FILE:开始启动时不解析当前匹配的文件,而是从新增文件或新增的内容开始按分隔符解析并上传。
- START_OF_FILE:将“filePattern”配置的所有匹配文件按照修改时间,从旧到新按分隔符解析并上传到DIS服务。
START_OF_FILE
maxBufferAgeMillis
否
最长上传等待时间。
单位:毫秒
- 记录队列满则立即上传。
- 记录队列未满,等待此配置项配置的时间后上传到DIS服务。
5000
maxBufferSizeRecords
否
记录队列缓存的最大记录数,如果队列达到此值则立刻上传这批数据。
500
partitionKeyOption
否
每条记录会携带一个PartitionKey,相同PartitionKey的记录会分配到同一个分区。此配置项可设置每条记录的PartitionKey值,取值如下:- RANDOM_INT:PartitionKey的值为随机数字的字符串,记录均匀分布在每个分区。
- FILE_NAME:PartitionKey的值为文件名称字符串,记录分布在特定的一个分区中。
- FILE_NAME,RANDOM_INT:PartitionKey的值为文件名称字符串与随机数字字符串的组合体,以英文逗号分隔,记录携带所属的文件名并均匀分布在所有分区。
RANDOM_INT
recordDelimiter
否
每条记录之间的分隔符。
取值范围:任意一个字符,且包含在双引号内。
取值不可为空,即该配置项不可配置为“”。
说明:如果取值为特殊字符,使用反斜杠(\)转义,如分隔符为引号("),可配置为"\"",如果为反斜杠(\),可配置为"\\"。
如果为控制字符如STX(正文开始),可配置为"\u0002"。
"\n"
isRemainRecordDelimiter
否
上传记录时,是否携带分隔符。- true:携带分隔符。
- false:不携带分隔符。
false
isFileAppendable
否
文件是否有追加内容的可能。
- true:文件可能会追加内容。Agent持续监控文件,若文件追加了内容则根据recordDelimiter解析后上传记录。此时要保证文件以recordDelimiter结尾,否则Agent会认为文件追加未完成,继续等待recordDelimiter写入。
- false:文件不会追加内容。文件最后一行不以recordDelimiter结尾,Agent仍会当做最后一条记录上传,上传完成后根据“deletePolicy”和“fileSuffix”的配置执行文件删除或重命名操作。
true
maxFileCheckingMillis
否
最长文件变动检查时间,如果文件在此时间内“大小”、“修改时间”和“文件ID”都没有变化,则认为文件已经完成并开始上传。
请根据实际文件变动的频率配置此值,避免文件未完成已开始上传的情况。
若文件上传后有变动,则会重新全量上传。
单位:毫秒
说明:“isFileAppendable”配置为“false”时该配置项生效。
5000
deletePolicy
否
文件内容上传完成之后的删除策略。- never:文件内容上传完毕后不删除文件。
- immediate:文件内容上传完毕后删除文件 。
说明:
“isFileAppendable”配置为“false”时该配置项生效。
never
fileSuffix
否
文件内容上传完成之后添加的文件名后缀。
例如:原文件名为“x.txt”,“fileSuffix”配置为“.COMPLETED”,则文件上传后的命名为“x.txt.COMPLETED”。
说明:“isFileAppendable”配置为“false”,同时“deletePolicy”配置为“never”,该配置项生效。
.COMPLETED
sendingThreadSize
否
发送线程数。默认单线程发送。
须知:使用多线程会导致如下问题:
- 数据发送不保证顺序。
- 程序异常停止并重新启动时会丢失部分数据。
1
fileEncoding
否
文件编码格式,支持UTF8, GBK, GB2312, ISO-8859-1等
UTF8
resultLogLevel
否
每次调用DIS数据发送接口后的结果日志级别。
- OFF:日志中不输出每次接口调用的结果。
- INFO:每次接口调用的结果以INFO级别输出到日志。
- WARN:每次接口调用的结果以WARN级别输出到日志。
- ERROR:每次接口调用的结果以ERROR级别输出到日志。
INFO
Windows服务器上配置DIS Agent
- 使用文件管理器进入安装包解压后的目录,例如“C:\dis-agent-X.X.X”。
- 使用编辑器打开“agent.yml”文件,根据实际情况修改各配置项的值并保存。
“agent.yml”文件为linux格式,建议使用通用文本编辑器工具编辑文件。
关于日志文件的补充说明:
在dis-agent程序的安装路径下,logs目录中存放程序运行产生的日志文件,其中dis-agent.log文件记录程序运行状况,dis-agent-2022-10-28.log等带日期的log文件记录文件上传记录,每天生成一个日志文件。
为此,用户也可以在dis-agent程序安装路径下的conf文件夹修改log4j2.xml文件,自定义log文件的存放位置(如下图红框所示位置修改)。
图2 log4j2