当前位置: 首页 > news >正文

SkeyeVSS开发日志: Skeyevss日志采集方案落地实践

试用安装包下载 | SMS | 试用安装包下载 | 在线演示

项目源码地址https://github.com/openskeye/go-vss


1. 背景与目标

在生产环境中,日志采集的核心价值不只是把日志存下来,而是:

  • 故障时能快速定位
  • 能按服务、设备、请求链路检索
  • 能做错误告警和趋势分析
  • 满足审计与留存要求

对于 Skeyevss,这一点尤其关键:系统涉及DB RPCVSSBackend APICronWebMediaServer多服务协同,且包含 SIP 信令链路。


2. 本项目日志来源有哪些

2.1 应用日志(各服务)

各服务配置文件都包含统一日志段(示例见etc/.vss.yamletc/.base.yaml):

  • Log.Path: "${SKEYEVSS_SERVER_LOG_PATH}/${ServiceName}"
  • Log.Mode: "${SKEYEVSS_LOG_MODE}"
  • Log.Encoding: "${SKEYEVSS_LOG_ENCODING}"
  • Log.Level: "${SKEYEVSS_LOG_LEVEL}"

结论:应用日志采集根路径通常是
$SKEYEVSS_SERVER_LOG_PATH/

2.2 SIP 专项日志(VSS)

etc/.vss.yaml中明确:

  • UseSipLogToFile: ${SKEYEVSS_PRINT_SAVE_SIP_LOG_FILE}
  • SipLogPath: "${SKEYEVSS_SERVER_LOG_PATH}/${SKEYEVSS_VSS_NAME}/sip"

只有当SKEYEVSS_PRINT_SAVE_SIP_LOG_FILE=true时,SIP 报文才会落盘。
后台“日志 -> SIP日志”文件视图也是读取该目录(backend/internal/logic/logs/siploglogic.go)。

2.3 容器启动日志(Docker 场景)

docker-compose.yml里多个服务以命令重定向方式写入:

  • /app/logs/<ServiceName>.<YYYY.MM.DD>.log

所以 Docker 场景至少需要采集两类目录:

  1. 应用主日志目录(按SKEYEVSS_SERVER_LOG_PATH
  2. /app/logs/*.log启动输出日志

3. 推荐采集架构(通用)

推荐分层:

  1. 采集层:Filebeat 或 Fluent Bit(部署在每台节点)
  2. 传输层:Kafka(可选,流量大建议加)
  3. 存储检索层:Elasticsearch / OpenSearch / Loki
  4. 展示告警层:Kibana / Grafana + Alertmanager

中小规模可先用简化架构:

  • Filebeat/Fluent Bit -> Elasticsearch -> Kibana

这部分没有继承进项目,目前只采用的是写文件的方式,可根据实际场景推展需求。


4. 日志采集范围

4.1 必采目录

  • ${SKEYEVSS_SERVER_LOG_PATH}/**/*.log(服务应用日志)
  • ${SKEYEVSS_SERVER_LOG_PATH}/${SKEYEVSS_VSS_NAME}/sip/*.log(SIP 报文)
  • /app/logs/*.log(容器启动日志,Docker 场景)

4.2 建议打标签字段

采集时建议补充以下 metadata:

  • project: skeyevss
  • env: prod/test
  • service: vss/backendapi/dbrpc/...
  • log_type: app/sip/startup
  • host_ip
  • container_name(容器场景)

有了这些字段,检索效率会明显提升。


5. 配置建议

5.1.env.prod日志开关

SKEYEVSS_LOG_MODE=file SKEYEVSS_LOG_ENCODING=json SKEYEVSS_LOG_LEVEL=info SKEYEVSS_SERVER_LOG_PATH=/app/logs/applications SKEYEVSS_PRINT_SAVE_SIP_LOG_FILE=true

说明:

  • 建议json,便于结构化采集
  • info适合初期观测;稳定后可评估降到error
  • SIP 排障强依赖文件日志,建议保持开启

6. 告警规则建议

  1. 服务级错误突增level=error5 分钟内超过阈值
  2. VSS SIP 异常REGISTER/INVITE失败比例升高
  3. 播放链路异常on_pub_start -> on_sub_start延迟超阈值
  4. DB 连接问题:连接超时、重试次数激增
  5. 日志中断:某服务超过 N 分钟无日志
  6. 磁盘告警:日志盘使用率超过 80%

7. 常见问题与排查

7.1 开了 SIP 页面实时日志,但检索平台里没有 SIP 数据

原因通常是只看了 SSE 实时流,未开启 SIP 文件落盘。
检查SKEYEVSS_PRINT_SAVE_SIP_LOG_FILE=trueSipLogPath

7.2 日志量太大导致成本高

优化建议:

  • 分级采集:app全量,sip关键字段抽取
  • 对 debug 日志做采样或短期保留
  • 热温冷分层存储(7天热 + 30天温 + 归档)

8. 落地步骤

  1. 统一.env.prod日志开关与路径规范
  2. 验证 3 类日志(app/sip/startup)都能检索
    3 增加核心字段(service/env/log_type)

9. 总结

日志采集在 Skeyevss 中本质是可观测性。
只要把下面三件事做好,故障定位效率会明显提升:

  • 路径统一(按服务 + SIP 专项)
  • 字段统一(service/env/log_type)
  • 告警统一(错误率、无日志、链路超时)
http://www.jsqmd.com/news/652582/

相关文章:

  • Win Docker ClickHouse 数据卷挂载方案:解决本地目录写入权限与Inode限制
  • 从FreeRTOS转战Zephyr:一个老嵌入式工程师的Ubuntu环境搭建与初体验笔记
  • DownKyi:5步掌握B站视频下载与管理的终极技巧
  • React Native Spinkit跨平台兼容性指南:iOS与Android差异处理
  • BLIP2实战:从零到一,手把手教你部署多模态视觉语言模型
  • LLM编排层事务断裂真相,深度拆解向量数据库与微服务协同中的Saga补偿盲区
  • 从“独上高楼”到“炸鸡啤酒”:Top_p参数如何让AI续写古诗时“跑偏”或“封神”?
  • 垃圾回收机制
  • Linux开发工具(gdb/cgdb篇)
  • 排序算法入门:冒泡、选择、插入排序详解
  • 如何打造无网络环境下的iScroll开发参考方案:完整离线文档指南
  • Python 爬虫实战:精准抓取母婴电商平台数据,深入分析用户评价洞察市场趋势
  • 如何快速上手Remmina:面向新手的10个简单设置技巧
  • 如何优化Mantine Checkbox组件交互体验:从默认到高级的完整指南
  • Davinci代码是如何实现Autosar-CanTsyn模块功能的
  • 如何使用ONNX Simplifier优化模型:生产环境部署的完整指南
  • 别再手动调亮度了!用Python+OpenCV直方图均衡化,5分钟让模糊图片变清晰(附完整代码)
  • 探索ComfyUI-WanVideoWrapper:解密AI视频生成的核心架构与实战应用
  • 避坑指南:ESP32连接多个I2C传感器(OLED、BH1750)的常见问题与解决方法
  • TongWeb应用部署实战:从单机到集群的路径选择与避坑指南
  • 别让Simulink生成的代码拖慢你的嵌入式系统:手把手教你配置这7个关键优化选项
  • OV5640摄像头模组选型与二次开发避坑指南:DVP vs MIPI接口到底怎么选?
  • 从时序到中断:手把手教你用C51单片机定时器实现一个精准的1秒LED闪烁
  • 如何利用Bootstrap实现高效用户体验监控:从行为收集到数据分析的完整指南
  • 别再问工厂要什么文件了!用Altium Designer 19生成Gerber文件,这份保姆级教程一次讲透
  • 微信小程序下载PDF的‘隐藏’路径揭秘:wx.env.USER_DATA_PATH到底存哪了?怎么删?
  • 手把手教你打造个性化动态彩色二维码生成工具(GUI版)
  • 别再死记硬背LTL公式了!用Python+Spot库5分钟搞定互斥锁与进程公平性验证
  • 终极指南:Mantine TypeScript集成实现类型安全组件开发全流程
  • 敬老院管理|基于springboot + vue敬老院管理系统(源码+数据库+文档)