
# 配置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/
```
![](https://support.huaweicloud.com/usermanual-dis/public_sys-resources/note_3.0-zh-cn.png)
配置完成之后，请将agent.yml中flows下面无用的示例配置删除或者使用#注释（比如只配置了一个DISStream，则将下面的CustomFileStream与另外的DISStream模块删除或者注释）。
#### Linux服务器上配置DIS Agent
1. 使用PuTTY 工具登录日志所在服务器。
2. 执行cd /opt/dis-agent-X.X.X/命令，进入"dis-agent-X.X.X"文件夹。
3. 执行vim conf/agent.yml命令，打开DIS Agent配置文件"agent.yml"，根据实际情况修改各配置项的值并保存，配置项说明请参见[表1]。
   
    表1agent.yml配置文件说明 
   | 配置项                   | 是否必填 | 说明                                                                                                                                                                                                                                                                               | 默认值                                      |
   |:---|:---|:---|:---|
   | region                | 是    | DIS服务所在区域。 说明： 获取DIS区域请参见[终端节点及区域说明](https://developer.huaweicloud.com/endpoint?DIS)。                                                                                                                               | cn-north-1                               |
   | AK                    | 是    | 用户的Access Key。 说明： 支持用户自己加密AK以保证安全，也可以使用明文的AK，如若需要对AK加密，请查看表格下关于AK/SK加密的使用说明。 获取方式请参见[检查认证信息](https://support.huaweicloud.com/usermanual-dis/dis_01_0022.html#dis_01_0022__s929153773cb54e1b801a8399b2ef9b2f)。        | 请根据实际情况配置                                |
   | SK                    | 是    | 用户的Secret Key。 说明： 支持用户自己加密SK以保证安全，也可以使用明文的SK，如若需要对SK加密，请查看表格下关于AK/SK加密的使用说明。 获取方式请参见[检查认证信息](https://support.huaweicloud.com/usermanual-dis/dis_01_0022.html#dis_01_0022__s929153773cb54e1b801a8399b2ef9b2f)。        | 请根据实际情况配置                                |
   | encrypt.key           | 否    | 用户加密时使用key值。 说明： 如果用户需要使用加密的AK或者SK，则必须配置该参数(自己在agent.yml文件中添加），请务必保证加密时使用的key值和此处写的encrypt.key保持一致，否则将会解密失败。                                                                                                       | 请根据实际情况配置                                |
   | projectId             | 是    | 用户所属区域的项目ID。 获取方式请参见[检查认证信息](https://support.huaweicloud.com/usermanual-dis/dis_01_0022.html#dis_01_0022__s929153773cb54e1b801a8399b2ef9b2f)。                                                                                                       | 请根据实际情况配置                                |
   | endpoint              | 是    | DIS数据网关地址。 格式：https://DIS终端节点。 说明： 获取DIS终端节点请参见[终端节点及区域说明](https://developer.huaweicloud.com/endpoint?DIS)。                                                                               | https://dis.cn-north-1.myhuaweicloud.com |
   | 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](https://support.huaweicloud.com/usermanual-dis/dis_01_0023.html)下载安装dis-agent，利用dis-agent包中bin目录下的脚本对AK和SK进行加密，按照如下所示步骤进行操作（windows环境下）： 1. 进入到dis-agent的bin目录中，右键git bash here运行脚本，示例：./dis-encrypt.sh {key} {ak}，即可得到加密后的AK，将其配置在"agent.yml"配置文件中，SK同理。  2. 按上述操作将AK和SK加密之后，将加密后的AK/SK，key全部配置到"agent.yml"即可。 图1加密示例 ![](https://support.huaweicloud.com/usermanual-dis/zh-cn_image_0000001439734925.png "点击放大")    ||||
      
    表2DISStream配置项说明 
   | 配置项                       | 是否必填 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 默认值           |
   |:---|:---|:---|:---|
   | 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
1. 使用文件管理器进入安装包解压后的目录，例如"C:\\dis-agent-X.X.X"。
2. 使用编辑器打开"agent.yml"文件，根据实际情况修改各配置项的值并保存。 
   ![](https://support.huaweicloud.com/usermanual-dis/public_sys-resources/note_3.0-zh-cn.png)
   "agent.yml"文件为linux格式，建议使用通用文本编辑器工具编辑文件。
   
   关于日志文件的补充说明：
   在dis-agent程序的安装路径下，logs目录中存放程序运行产生的日志文件，其中dis-agent.log文件记录程序运行状况，dis-agent-2022-10-28.log等带日期的log文件记录文件上传记录，每天生成一个日志文件。
   为此，用户也可以在dis-agent程序安装路径下的conf文件夹修改log4j2.xml文件，自定义log文件的存放位置（如下图红框所示位置修改）。
   图2log4j2   
   ![](https://support.huaweicloud.com/usermanual-dis/zh-cn_image_0000001439722029.png "点击放大")
   
   
 
