字符云监控通过将被监控系统划分成应用和模块从而实现分布式日志功能,部署时可按应用将日志服务部署到不同的机器,日志读写路由使用一致性哈希算法。

    使用 api 接口上报日志流程说明:

  1. 使用 agent 方式上报时,slog_mtreport_client agent 启动后从接入服务 slog_mtreport_server 拉取到用户相关的日志配置信息(对于开源版则是拉取所有相关的日志配置),包括日志的应用模块,日志级别、日志频率控制,以及应用对应的日志服务器等配置信息。
  2. 被监控业务程序通过调用监控系统提供的上报api 接口,将日志写入共享内存的环形数组,日志最长支持1024个字节,写入日志时日志如果超过特定长度则会使用 vmem 存储超长部分,api 接口支持多进程多线程。
  3. slog_mtreport_client agent定时读取日志的共享内存,并将日志根据不同应用分发到不同的日志服务器,实现分布式日志功能。
  4. 日志服务端 slog_server 服务在接收到 agent client 发送的日志后,经过用户属主校验、签名校验,分发校验等上报验证后将日志快速的写入到服务器端的共享内存中,服务器端再次使用共享内存目的是为了实现日志处理的快慢分离以及实时日志的高性能展示,slog_server 支持多进程部署。
  5. 写日志服务 slog_write 负责将日志从服务器端的共享内存中读取并写入到磁盘中,写入时每次写入100条或者读取完应用的日志后一次将日志刷写到磁盘。slog_write 支持多进程部署,多进程部署时每个应用的写日志工作被单独分派到不同的进程,各进程通过日志产生情况实现写日志的负载均衡(实现方式:每次分派应用时选择写入最少的进程,如果某应用超过一定时间无日志产生,则会被重新分派)。

    使用 http 接口上报日志流程说明:

  1. 被监控业务程序按 http 上报协议组好日志上报请求包,将 http 请求通过域名上报到 http 日志服务器
  2. slog_http_server 日志服务器收到 http 上报请求后,验证并解析请求包,将日志按应用分发到 slog_server 服务,此后的逻辑同 api 上报一样。

本文系本站原创,转载请注明出处:http://xrkmonitor.com/a/dislog_logic.html