自制单机日志解决方案 5. Talog 的应用(V.Talog.Server 的功能介绍)
在本项目立项之时,我的目标就是做一个单机日志解决方案,不仅要有日志存储、查询功能,还要能记录 PageView、Metrics。前面介绍的内容只是说明了日志存储、查询是如何运作的,并还未达到最终的目标,而 V.Talog.Server 就是基于 Talog 开发的最终项目成品。
V.Talog.Server
V.Talog.Server 的目标是希望做成一个接口平台,通过调用接口来保存日志、记录 PageView、记录 Metrics,同时还能集成一个后台管理页面,以供查询数据。
目前 V.Talog.Server 具有以下几个功能:
监听本地日志文件,该功能适用于将 Talog 与其他服务部署在同一台机器的情况
日志索引、日志查询
记录、查看 PageView
记录、查看 Metrics
监听本地日志文件
考虑到用户可能已经有一些服务日志存储在本地文件中,因此 V.Talog.Server 添加了一个监听本地日志文件的功能。要启用该功能,只需要在 appsettings.json 文件中添加以下配置。
Path 代表需要监听的目录;Filter 用于筛选出想要监听的文件,本质上为正则表达式,例如以上配置只监听了 access.log、error.log 两个文件,如果想要监听所有文件可以配置.*
;Tags 用于配置日志所对应的标签;Type 用于标识日志为单行或者多行,0 代表单行日志,1 代表多行日志;还有个 Head 字段,该字段用于指定多行日志的自定义头。
对于新加入监听列表的文件,V.Talog.Server 会将整个文件的日志都进行一次索引,并且记录下文件的末尾位置。当文件有发生变化时,V.Talog.Server 会从之前记录的位置继续读取日志,而不会从头开始读取,就算程序中断了也是如此,因为 V.Talog.Server 会将每个文件的已读位置记录在文件中。
日志索引、日志查询
V.Talog.Server 作为一个日志解决方案,提供了 API 接口以供其他程序上传日志,也提供了一个后台管理页面,以供用户在遇到问题时,可以快速查看日志。
POST /log/index
日志索引接口
POST /log/search?page=1&perPage=10
日志查询接口,支持分页,page 从 1 开始
后台页面查询日志

记录、查看 PageView
PageView 也是同样的,提供一个上传数据的 API 接口,以及一个后台查看页面。
GET /metric/pg/add?index=xxx&page=xxx&user=xxx
Page View 接口,index、page 都是必传参数,user 非必传,user 用于统计 UV
后台页面查看 PageView

记录、查看 Metrics
GET /metric/add?index=xxx&name=xxx&value=xxx
指标接口,name 为指标名称(如 cpu、memory),value 为指标值
后台页面查看 Metrics

最后
本文列举了 V.Talog.Server 的功能,功能较少但是对于我个人来说已经够用了,我一开始也提到过,我是在看到了其他项目功能特别简洁,才萌生自己做一个简易的日志解决方案。若是像 elasticsearch 那种功能强大的项目,我肯定是做不来分毫的。下一篇文章将会介绍一下 V.Talog.Server 的搭建过程。