我需要爲我的啓動設置日誌記錄服務。我和我的團隊沒有時間和資源(金錢)來部署日誌專用工具。不過,我需要對用戶行爲進行分析。雖然我要學習分析位並實現它,但我需要記錄用戶活動,以便稍後可以提取數據並進行數學計算。如何使用nodejs設置HTTP服務器進行日誌記錄?
我爲我的主應用程序(這是一個Web服務)使用基於SQL的(RDBMS)安裝程序並計劃在DynamoDB(AWS)中記錄用戶活動。我打算設置一個本地(在同一臺服務器上)的Node.Js服務器,它可以處理來自我的基於PHP的應用程序的日誌請求,以確保日誌記錄活動在另一個進程中運行並且可以正常處理。而不會崩潰或減慢主服務器代碼。這裏的想法是 - 當用戶發出請求時,PHP應用程序將調用NodeJS服務器。 NodeJS服務器將接受請求,立即返回,而排隊請求(如說200個其他請求),並且PHP應用程序將繼續爲請求提供服務。 NodeJS服務器將一個接一個地記錄隊列中的所有內容。
我計劃這樣做的原因是 - NodeJS在單線程上運行,並且基於事件循環 - 因此,如果突然出現流量高峯,日誌請求將排隊並將數據發送到Dynamo最終沒有讓PHP應用程序等待確認。
注意:當我說用戶活動,我的意思是應用級的日誌記錄,如:
- 從ABCD IP地址的用戶X試圖在2016年9月10日以編號123來訪問的文章14:21:22
- 用戶Y發表評論#234對文章#987在2016-09-10 18:30:02使用ABC應用程序。
- 用戶C從E.F.G.H IP地址登錄到Web界面。
當然,數據將採用JSON格式,服務器將調用AWS SDK。
在這裏,NodeJs服務器將基本上充當日誌代理。基於到目前爲止的想法/方案,我有以下問題:
- 是否決定使用DynamoDB進行日誌記錄請求還是出錯?該服務符合我的預算。
- 在這種情況下,NodeJS會受到什麼樣的限制? nodejs可以嗎?
- 我應該使用哪些節點模塊? HTTP服務器會做還是有模塊公開可用於這種情況?
- 如何確保此服務器僅偵聽來自同一臺計算機的請求(環回)?
您如何看待[Logstash](https://github.com/elastic/logstash)? – danilodeveloper
@danilodeveloper我認爲這是一個非常好的工具。但我沒有足夠的時間去完成。我也沒有足夠的資源來完成自己的任務,再加上維護它將成爲頭痛的問題。長遠來說,非常重要的是。現在,對我來說很難(不幸)。 –