DIS Agent 常见客户问题

网友投稿 549 2022-05-29

1. 如何判断是否有数据发送

以下日志表示正在有数据发送到DIS:

c.h.d.a.t.DISSender Put 1 records to [stz_test_agent] spend 1454ms

2. 数据是否可能出现重传和漏传

单线程的情况下:

只可能出现重传。数据发送了,但是CheckPoint写成功之前进程挂了或者写失败了(比如磁盘满等),就有可能导致重传。

多线程的情况下:

可能出现重传和漏传。

数据发送了,但是CheckPoint写成功之前进程挂了,就有可能导致重传。

CheckPoint比较新的线程先提交CheckPoint成功,但是CheckPoint比较旧的线程发送成功前进程挂了,就有可能出现漏传。

(打个比方,sendingThreadSize配置的是2,也就是两个线程在发送,线程1读取了1到5行数据,线程2读取了6到10行数据,线程2发送成功而且记录了CheckPoint,但是线程1还没有发送同时Agent异常退出了,那么这个时候1到5行数据就会丢失。)

3. Agent单条记录是否有大小限制

Agent启动时会判断通道类型,对于普通通道,单条记录大于1M时会被切割;对于高级通道,单条记录大于5M时会被切割。

4. 日志滚动方式是xxx.log.*,会影响吗?

归档文件是什么格式不影响,不管匹配规则能不能匹配到,归档文件的inode都是已上传过的,不会出现重复上传。

5. 关于 Agent 的通配符

filePattern配置/agent/*和/agent/是一样的效果

6. DIS Agent 运行需要多少内存?

默认情况下读取缓存和发送队列需要缓存10W条记录,假如每条记录1KB,则最少需要100M的内存,计算方式:

每批数据数量 * 100 * 2 * 每条记录大小

Agent 的内存配置在start-dis-agent.sh中:

JAVACMD="java"

JAVA_START_HEAP="256m" # 默认xms为256m

DIS Agent 常见客户问题

JAVA_MAX_HEAP="512m" # 默认xmx为512m

7. DIS Agent 如何判断某个文件是否需要上传?

DIS Agent 是根据文件的inode来判断是否需要上传的,比如某个文件采集完成之后,将文件mv走,然后再mv回来,文件的inode没变化,那么就不会重新采集;但是如果将文件mv走,然后再cp回来,那么inode发生变化就会重新采集,使用stat命令可以查看文件inode信息:

$ stat logstash.stack

File: ‘logstash.stack’

Size: 513727      Blocks: 1008       IO Block: 4096   regular file

Device: fd01h/64769d    Inode: 932370      Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2020-03-25 11:57:14.058120270 +0800

Modify: 2020-03-25 11:57:14.076120599 +0800

Change: 2020-03-25 11:57:14.076120599 +0800

Birth: -

8. DIS Agent 如何配置无限重试?

修改重试配置项,可以配置无限重试:

records.retries: -1

exception.retries: -1

9. DIS Agent 配置文件格式有问题如何排查?

使用YAML、YML在线编辑器格式化校验下:https://www.bejson.com/validators/yaml_editor/

10. 如何判断 DIS Agent 已经成功启动?

2020-05-07 10:32:28.526+0800  [INFO ] (main) c.h.d.a.Agent Agent(dis-agent): Startup completed in 300061 ms.

数据接入服务 DIS 任务调度

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《HoloLens与混合现实开发》—1 什么是混合现实
下一篇:Linux之软连接和硬链接
相关文章