Skip to content

Instantly share code, notes, and snippets.

@YoshihitoAso
Created January 29, 2013 10:43
Show Gist options
  • Save YoshihitoAso/4663412 to your computer and use it in GitHub Desktop.
Save YoshihitoAso/4663412 to your computer and use it in GitHub Desktop.
Node.js のログを Fluentd を使って MongoDB に集約する方法
// install fluentd (td-agent)
# vi /etc/yum.repos.d/td.repo
---
[treasuredata]
name=TreasureData
baseurl=http://packages.treasure-data.com/redhat/$basearch
gpgcheck=0
---
# yum install td-agent -y
// start fluentd
#/etc/init.d/td-agent start
// install "MongoDB Output Plugin"
# fluent-gem install fluent-plugin-mongo
// setting fluent.conf
# Single MongoDB
<match mongo.**>
type mongo
host localhost
port 27017
database node
collection error
# for capped collection
capped
capped_size 1024m
# flush
flush_interval 10s
</match>
// install Logger
# express fluentd-sample
// setting package.json
{
"name": "application-name",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app"
},
"dependencies": {
"express": "3.0.3",
"fluent-logger": "latest",
"jade": "*"
}
}
// start node.js
$ npm start
// sample app (node.js) writtened by coffee script
>> app.coffee
'use strict'
###
Module dependencies.
###
express = require 'express'
routes = require './routes'
path = require 'path'
logger = require 'fluent-logger'
logger.configure 'mongo', {host: 'localhost', port: 24224}
app.configure ->
app.set 'port', process.env.PORT or 3000
app.set 'views', __dirname + '/views'
app.set 'view engine', 'jade'
app.use express.favicon()
app.use express.logger 'dev'
app.use express.bodyParser()
app.use express.methodOverride()
app.use app.router
app.use express.static path.join(__dirname, 'public')
app.use (err, req, res, next) ->
logger.emit 'test', {error: err.message}
res.render 'error', {status: 500, title: '500 Internal Server Error', err: err}
app.get '/', routes.index
app.listen process.env.PORT || 3000, ->
console.log 'Express server listening on port ' + app.get 'port'
>> status code 500
// error
# vi routes/index.coffee
'use strict'
###
Module dependencies.
###
exports.index = (req, res, next) ->
next new Error('fluentd test')
// start mongod
# sudo mongod
// start node.js
$ node app.js
$ curl localhost:3000/
$ mongo
$ use node
$ db.error.find()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment