在我的应用程序中,我希望同时监控各种服务,最多只能以单一方式监控。
该应用程序使用NodeJS作为Web服务器,以及WebPack观察程序。还有一个应用程序的PHP部分使用了Workerman和其他rmodules - 我想从所有这些中获取统计数据。
对于较小的视图,我们假设我有两个脚本:app.js
和backend.php
。 JS文件是一个小型的Web服务器,它使用React和东西来提供页面,PHP脚本用作通过AJAX访问数据库的方法,并做其他更好的PHP内容。
我现在要做的是收集统计数据。就像有人连接到nodejs服务器一样,我想提出一个名为" request"一个,当通过PHP访问数据库中的特定内容时,我也想推送一个计数器。
哪些系统可以让我跨语言收集统计数据?我的软件堆栈是:Redis,MySQL,PHP,NodeJS。
答案 0 :(得分:1)
您可以尝试使用Axibase Time-Series Database社区版。免费。它集成了用于警报的规则引擎和用于可视化的图形。有一个PHP客户端和statsd storage driver
披露:我为Axibase工作。
答案 1 :(得分:0)
两个选项 - 使用数据库(MySQL?)或使用监控/分析工具。
第一个选项会为您提供灵活性,但需要您的一些开发工作。
第二个选项需要部署监控工具和实施事件。为此,您可以使用网络分析工具(很好,因为您可以使用它来监控后端流程,客户端事件和产品相关事件,如果需要,以及所有在同一个地方),例如Google Analytics或http://piwik.org/ ..或者你可以使用像Graphite http://graphite.wikidot.com/这样的东西(石墨与其他分析工具相比非常奇怪,但是它可以达到目的),同时也应该使用libs来推送统计数据,比如statsd:{{3 }}
任何提到的内容都可以让你很好地监控...
如果使用javascript API进行网站分析,您应该在节点中构建包装器,并为PHP提供ping路由并发送事件名称... VOILA
答案 2 :(得分:0)
您始终可以实施一些自定义跟踪并将数据保存到现有数据存储中。但适当的仪器并不容易。
我不建议将MySql用作存储。插入的MySql性能不太好,因此可能会降低应用程序的速度并引入大量开销。
对于时间事件和系列而言,Redis速度快但结构不佳。
有一些特殊的时间序列数据库可以定制用于处理日志,指标和时间序列:https://influxdb.com,http://graphite.wikidot.com/,http://elastic.co,...
但是,实际上,有一些工具可以满足您的开箱即用需求。此外,您可以为日志和指标选择一些SAAS服务。 有些服务可以为nodejs / php提供良好的lib,并提供托管堆栈的适当工具来存储数据并对其进行分析。 虽然每天少于10k的请求应该便宜/免费。
对于opensource instrumentation lib和托管的Influxdb + grafana或ELK堆栈,请查看http://devmetrics.io/logslib和日志/指标指南:http://www.devmetrics.io/blog/post/logs-vs-metrics-best-practices
对于专有工具,请查看http://datadoghq.com,http://newrelic.com,http://boundary.com