3.稳定性
????? logagent是业务部署在一起的,考虑稳定性做如下限制
- ?一台线上实体机同时允许的单用户最大访问文件数100
- 一台线上实体机同时允许的最大链接数200
- ? 一台线上实体机允许单用户单次拉取日志的最大大小为20M
?? 拉取日志的速度赶不上打日志速度时,须提高限制大小或并发度
?? 如果logagent意外down掉,支持恢复后从上次位点继续获取数据
?
4.性能方案
??? 因为agnt是java编写的,主要考虑满负荷运行下进程gc对宿主业务系统带来的各指标影响,具体以测试为准
?
5.安全策略
- 访问文件的权限
- 请求中验证用户和授权密码
- 连接agent的收集机器白名单授权
6.日志模块设计
- 编码:统一采用utf-8
- 内容截取
???? 普通的日志文件是一条条的纪录,以换行符进行分隔,在进行截取时应获取一条完整的日志,即
???? 当前位点+ 单次最大支持传递量= 换行符,按正常截取
???? 当前位点 + 单次最大支持传递量!= 换行符,往前找最近一个换行符截取
???? 当前位点 + 单次最大支持传递量> 文件end,直接截取到文件end
???? 扩展考虑支持用户指定分隔符进行切割
?
- 位点存取
??????? 按用户存储文件的位点信息,一个文件可以支持多个用户同时拉取数据,即该文件会分别保留这些用户的位点信息,保留路径由logagent默认指定,采用拉取成功后异步更新的策略
?
- 支持日志滚动
??????? 支持当日志文件发生滚动时,可以定位到未拉取完的旧文件。保留文件的句柄(inode),在每次拉取数据时获取当前文件大小,直到该句柄文件内容被拉取完成
?
7.运维支持
- 权限:包括机器、文件、白名单
- 提供获取某应用的所有ip地址等基础服务
- 装机部署&远程控制?
?附件focus.zip为提供的logagent源码,供参考~