前言
SigNoz 是一个专注于分布式系统监控与追踪的开源工具,能够直观展示服务的响应时间、错误率等核心性能指标,帮助开发和运维人员快速定位性能瓶颈和故障源头。
作为一名运维工程师,我认为 SigNoz 实用性强:界面清晰明了,问题排查效率高,且完全免费开源,特别适合资源有限的中小企业。在过去处理线上服务异常时,正是依靠它理清复杂的调用链路,大幅缩短了诊断周期。
过去只能在公司内网访问 SigNoz,出差期间无法实时查看系统状态。通过引入 cpolar 内网穿透技术,成功生成公网可访问地址,实现了远程监控。某次周末在家,我通过手机端及时发现了一个潜在性能隐患,并提前修复,避免了工作日可能出现的服务中断。如今工作更加安心,不再受限于办公地点。
本文将详细介绍如何在 Ubuntu 系统中利用 Docker 快速部署 SigNoz 这款强大的应用性能监控平台,并结合 cpolar 实现外网远程访问,提升运维灵活性。
1. SigNoz 简介
SigNoz 是一款开源的应用性能管理(APM)与可观测性平台,集成了监控、追踪和数据分析能力,助力开发者全面掌握应用程序运行状况。
主要特性:
- 开源免费:项目完全开放源代码,用户可自由使用,无需支付授权费用,也不存在合规或数据安全方面的隐忧。
- 操作界面友好:UI 设计现代流畅,交互简洁,即便是初次使用者也能迅速上手。
- 强大的数据聚合与过滤功能:支持对追踪数据和指标进行精细化筛选与汇总,便于精准定位问题根源。
- 更高的灵活性与数据自主权:作为自托管解决方案,用户可完全掌控自身数据,保障隐私并满足合规要求。
- 日志、指标与追踪一体化整合:将 Logs、Metrics 和 Tracing 统一在一个平台中,提供一致的操作体验,减少工具切换成本。
典型应用场景:
- 微服务架构监控:适用于多服务环境下的性能监测,快速识别异常节点。
- 无服务器架构监控:可用于追踪 Serverless 函数执行情况,确保运行稳定性。
- 日志集中分析:集中采集并分析应用日志,挖掘潜在风险点。
- 性能调优:基于详尽的性能数据优化系统表现,提升最终用户体验。
2. 在本地部署 SigNoz
本教程采用 Docker 方式进行安装部署。若尚未配置 Docker 环境,建议先参考相关文档完成基础安装。
打开终端,执行以下命令克隆 SigNoz 项目仓库并进入部署目录:
git clone -b main https://github.com/SigNoz/signoz.git && cd signoz/deploy/
随后运行部署脚本:
./install.sh
系统会提示输入邮箱地址,按要求填写即可继续。
部署完成后,在浏览器中访问 localhost:3301,即可进入 SigNoz 的 Web 界面。
3. SigNoz 基础功能使用说明
首次登录时需创建管理员账户,也可选择跳过新功能引导或以匿名方式体验。
应用性能监控(APM)
SigNoz 提供开箱即用的应用性能监控功能,内置关键指标图表,如 p99 延迟、错误率、Apdex 分数及每秒请求数,帮助用户实时掌握服务健康状态。
日志管理
平台支持集中式日志管理,后端采用 ClickHouse 存储——该数据库被 Uber、Cloudflare 等大型企业广泛使用,具备极高的查询速度和存储优化能力。用户可通过快速过滤器和可视化查询构建器,即时检索全部日志信息。
分布式追踪
针对微服务架构中的复杂调用关系,SigNoz 支持基于 OpenTelemetry 标准的分布式追踪。可跨多个服务跟踪单个用户请求路径,有效识别延迟热点。
借助 Flamegraphs(火焰图)和 Gantt 图表,用户可在详细视图中观察请求流转过程。点击任意时间段可展开完整调用链,清晰呈现问题发生的具体环节。
指标监控与仪表板
支持从基础设施或应用程序中采集各类指标数据,并创建个性化仪表盘进行可视化展示。提供多种图表类型,包括时间序列图、饼图、柱状图等,灵活适配不同监控需求。
内置简易的指标查询生成器,支持组合多个查询语句及数学公式,轻松构建复杂监控逻辑。
告警机制
当系统出现异常时,可通过告警功能及时获得通知。用户可针对日志、指标或追踪数据设置触发条件,定义阈值规则,并配置通知渠道(如邮件、Webhook 等)。
此外,还提供告警历史记录与异常检测等高级功能,助力构建更智能、更精准的预警体系,实现问题前置发现。
异常监控
支持在 Python、Java、Ruby 和 JavaScript 中自动捕获异常。对于其他编程语言,仅需添加少量代码即可启用异常监控功能,显著提升问题响应速度。
查看应用程序捕获的所有异常时,建议详细分析其堆栈跟踪信息。此外,可通过添加自定义属性为异常提供更多上下文支持。例如,可加入用户标识属性,以便快速定位异常发生的使用者。
关于SigNoz的更多功能详情,可访问其GitHub主页了解:
SigNoz/signoz:一个基于OpenTelemetry的开源可观测性平台,集成日志、追踪和指标三大核心功能,提供一体化的应用性能监控(APM)解决方案。作为DataDog、NewRelic等商业工具的开源替代方案,SigNoz具备完整的可观测能力。
4. 部署内网穿透服务
当前,仅局域网内的设备(如手机或电脑)能够访问通过Docker部署的SigNoz服务。若希望让异地用户也能使用该服务,则需要配置远程访问能力。解决方法是安装cpolar内网穿透工具,实现公网对本地主机服务的安全访问。以下是具体安装步骤:
访问Cpolar官网:
https://www.cpolar.com
执行一键安装脚本命令:
sudo curl https://get.cpolar.sh | sh
安装完成后,运行以下命令检查cpolar服务状态,确认是否正常启动(显示running表示已启动):
sudo systemctl status cpolar
服务启动成功后,在浏览器中输入Ubuntu主机IP地址并加上9200端口,即:
http://localhost:9200
即可打开cpolar管理界面。使用在cpolar官网注册的账号登录后,进入Web配置页面,后续操作可在图形界面完成。
5. 设置SigNoz的公网访问地址
登录cpolar Web UI后,点击左侧菜单中的“隧道管理” → “创建隧道”,进行如下配置:
- 隧道名称:可自定义,本例设置为:SigNoz(需确保不与已有隧道重名)
- 协议类型:http
- 本地地址:3301
- 域名类型:随机域名
- 地区:China Top
创建完成后,返回“在线隧道列表”页面,即可看到系统生成的两个公网访问地址。此时,任意一台外网设备均可通过复制任一公网地址,在浏览器中访问本地部署的SigNoz服务。
如下图所示,已成功通过公网地址实现异地远程访问本地SigNoz实例。
使用账户登录后即可正常使用各项功能。
小结
本文演示过程中采用的是cpolar提供的随机HTTP公网地址。这类地址的优势在于开通迅速、即时可用;但其缺点也明显——地址由系统随机生成,并会在24小时内变更,因此更适合临时测试场景。
如果计划长期使用SigNoz,或有持续对外提供本地服务的需求,且希望拥有稳定、易记的公网链接以及更优的带宽体验,推荐升级至固定二级子域名方式来配置公网访问路径。
6. 配置固定公网访问地址
由于前文所用的隧道使用的是临时随机地址,存在周期性变化的问题,不利于长期远程访问。为此,建议配置固定的二级子域名以获得稳定的公网入口。
注意:此功能需将cpolar账户套餐升级至基础版或更高版本,不同套餐对应不同的带宽和服务权限。【cpolar.cn已完成ICP备案】
操作步骤如下:
进入cpolar Web界面,点击左侧“预留”选项,选择“保留二级子域名”。地区选择“China VIP”,填写期望的子域名名称(例如:signoz),并添加备注,确认保留。
保留成功后,请复制生成的二级子域名地址。
随后进入cpolar Web UI的“隧道管理” → “隧道列表”,找到之前创建的SigNoz隧道,点击右侧编辑按钮。
编辑
修改隧道配置,填入已保留的二级子域名信息:
- 域名类型:二级子域名
- Sub Domain:填写已保留的子域名(如:signoz)
- 地区:China VIP
保存更新后,再次打开“在线隧道列表”,可见原先的随机地址已被替换为固定的二级子域名地址。
最后,尝试使用新的固定公网地址访问SigNoz服务,验证访问成功。至此,一个永久不变的公网访问链接已配置完成。
现在,您可以通过这个固定的公网URL与他人共享您的SigNoz平台。无论是团队协作还是个人分享,都可以轻松实现跨地域访问。
以上即是在Linux Ubuntu系统中通过Docker部署SigNoz,并借助cpolar实现远程访问的完整流程。整个过程简洁明了,易于上手。
总结:通过使用 cpolar,SigNoz 不再局限于局域网环境,实现了跨地域的远程监控能力。这种灵活的部署方式为分布式系统的持续稳定运行提供了有力支持。
不妨亲自尝试一下,或许还能挖掘出更多实用且有趣的功能。在操作过程中如遇到疑问或问题,欢迎随时留言交流,我将尽力提供帮助。愿这篇教程助你迈出文档管理高效化的重要一步,共同迈向更智能、更便捷的技术实践之路!


雷达卡


京公网安备 11010802022788号







