>  기사  >  웹 프론트엔드  >  Node.js와 MongoDB는 간단한 로그 분석을 구현합니다.

Node.js와 MongoDB는 간단한 로그 분석을 구현합니다.

WBOY
WBOY원래의
2016-05-16 16:02:231590검색

최근 프로젝트에서는 쉽게 분석할 수 있도록 프로젝트 로그를 JSON 형식으로 저장했습니다. 이전에는 로그를 파일에 바로 저장했는데, MongoDB가 적절한 시기에 눈에 띄어서 MongoDB에 로그를 저장하게 되었습니다. 단순히 로그를 저장하는 것은 의미가 없습니다. 가장 중요한 것은 로그에서 비즈니스 동향과 시스템 성능 허점을 발견하는 것입니다. 이전에는 Java로 작성되고 Tomcat에서 실행되는 분석 모듈이 있었습니다. 구현이 상당히 무겁고, 새로운 지표를 추가하는 과정도 번거롭고, NFS로 인해 분석이 실패합니다. 항상 다시 작성하고 싶었고 처음에는 Ruby On Rails를 사용하고 싶었지만 배우고 개발할 시간이 없었습니다(핑계를 찾고 있습니다!). 저는 항저우에서 열린 QCon 2011에서 Node.js를 다시 만났습니다. 이전에 Node.js에 대해 들어본 적은 있었지만 깊이 연구하지는 않았습니다. Taobao Su Qian의 연설을 듣고 바로 Node.js를 사용해야겠다는 생각이 들었습니다. 이 로그 분석 시스템을 구현하십시오. 프론트엔드는 JS를 사용하고, 서버도 JS를 사용하고, 심지어 데이터베이스 쉘도 JS를 사용한다고 생각하면 멋지죠. 물론 가장 중요한 것은 코드 크기가 작다는 것입니다.

1. Node.js를 사용하여 서버 측 코드 구현

좋은 스타일과 빠른 코드 작성을 위해서는 간단한 프레임워크를 채택하는 것이 불가피합니다. Express는 대부분의 기능을 구현하지만 익숙해지는 데 시간이 걸리고 이 프로젝트에는 다소 무거운 것 같습니다. Node.js 공식 웹사이트에 Chat Demo가 있습니다. 이 코드는 단순히 URL 처리와 JSON 반환을 캡슐화하고 이동한 것입니다. 그래서 fu.js를 직접 사용하고 server.js를 다시 작성했습니다.

코드 복사 코드는 다음과 같습니다.

호스트 = null; // 로컬호스트
포트 = 8001;

var fu = require("./fu"),
sys = require("util"),
url = require("url"),
몽고 = require("./request_handler");

fu.listen(번호(process.env.PORT || PORT), HOST);

fu.get("/", fu.staticHandler("index.html"));

너무 단순하지 않나요? ! 하지만 실제로 서버가 구축되었습니다.
요청을 처리하는 request_handler.js 코드를 살펴보겠습니다.

코드 복사 코드는 다음과 같습니다.

var mongodb = require("mongodb");
var fu = require("./fu");


// TOP 10 사용자 액션
fu.get("/userActionTop10", function(req, res){
mongodb.connect('mongodb://localhost:27017/log', function(err, conn){
conn.collection('action_count', function(err, coll){
coll.find({"value.action":{$in:user_action}}).sort({"value.count":-1}).limit(10).toArray(function(err, docs){
          if(!err){
          var action = [];
          var 개수 = [];
for(var i = 0; i < docs.length; i ){
​​​​​​ //console.log(docs[i]);
            action.push(docs[i].value.action);
Count.push(docs[i].value.count);
          }
              res.simpleJSON(200, {action:action, count:count});
                                 
​​​​​ //데이터베이스 연결을 닫는 것을 잊지 마세요
            conn.close();
}
});
});
});
});

2. 고객

로그 시스템에서 가장 중요한 것은 시각적 표시입니다. 여기서는 JQuery jqPlot Chart 플러그인이 사용됩니다. 먼저 정적 HTML 페이지를 그래픽 표시용 컨테이너로 사용하세요.

코드 복사 코드는 다음과 같습니다.



 
   
   

랑데부 모니터 시스템
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 
 
 
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.