【发布时间】:2016-09-22 19:20:40
【问题描述】:
我需要为我的启动设置一个日志服务。我和我的团队没有时间和资源(金钱)来部署专用的日志工具。但是我需要对用户行为进行分析。虽然我要学习分析位并最终实现它,但我需要记录用户活动,以便稍后提取数据并进行数学计算。
我正在为我的主应用程序(这是一项 Web 服务)使用基于 SQL 的 (RDBMS) 设置,并计划在 DynamoDB (AWS) 中记录用户活动。
另外,我计划设置一个本地(在同一台服务器上)Node.Js 服务器,它可以处理来自我的基于 PHP 的应用程序的日志请求以确保日志记录活动在另一个进程中运行并得到妥善处理 不会导致主服务器代码崩溃或减慢速度。这里的想法是——当用户发出请求时,PHP 应用程序将调用 NodeJS 服务器。 NodeJS 服务器将接收请求并立即返回,同时排队请求(例如 200 个其他请求),PHP 应用程序将继续为请求提供服务。 NodeJS 服务器将继续记录队列中的所有内容。
我计划这样做的原因是 - NodeJS 在单线程上运行并且基于事件循环 - 因此,如果突然出现流量高峰,日志请求将排队,数据将发送到 Dynamo最终没有让 PHP 应用程序等待确认。
注意:当我说用户活动时,我指的是应用程序级别的日志记录,例如:
- A.B.C.D IP 地址的用户 X 在 2016-09-10 14:21:22 尝试访问 ID 为 123 的文章
- 用户 Y 在 2016-09-10 18:30:02 使用 ABC 应用在文章 #987 上发表了评论 #234。
- 用户 C 从 E.F.G.H IP 地址登录到 Web 界面。
当然,数据是 JSON 格式,服务器会调用 AWS SDK。
在这里,NodeJs 服务器基本上充当日志代理。基于到目前为止的想法/场景,我有以下问题:
- 使用 DynamoDB 记录请求的决定是否正确,还是我犯了一个错误?该服务符合我的预算。
- 在这种情况下,我使用 NodeJS 会有哪些限制? nodejs 可以吗?
- 我应该为此使用哪些节点模块? HTTP 服务器是否会提供或是否有针对此类场景公开可用的模块?
- 如何确保此服务器仅侦听来自同一台机器的请求(环回)?
【问题讨论】:
-
你觉得Logstash怎么样?
-
@danilodeveloper 我认为这是一个非常好的工具。但是我没有足够的时间去完成它。我也没有资源自己设置它,加上维护它会很头疼。从长远来看,非常肯定。现在,对我来说是一个很大的问题(不幸的是)。
标签: php node.js amazon-web-services