Nodejs

The @fluent-org/logger library is used to post records from Node.js applications to Fluentd.

This article explains how to use it.

NOTE: The previous NPM package, fluent-logger has been deprecated in favor of @fluent-org/logger.

Prerequisites

  • Basic knowledge of Node.js and NPM

  • Basic knowledge of Fluentd

  • Node.js 12.0 or higher

Installing Fluentd

Please refer to the following documents to install fluentd:

Modifying the Config File

Configure Fluentd to use the forward input plugin as its data source:

<source>
  @type forward
  port 24224
</source>
<match fluentd.test.**>
  @type stdout
</match>

Restart agent after configuring.

# for rpm/deb only
$ sudo /etc/init.d/td-agent restart

# or systemd
$ sudo systemctl restart td-agent.service

Using @fluent-org/logger

Obtaining the Most Recent Version

The most recent version of @fluent-org/logger can be found here.

A Sample Application

Here is a sample Express app using @fluent-org/logger:

package.json

{
  "name": "node-example",
  "version": "0.0.1",
  "dependencies": {
    "express": "^4.16.0",
    "@fluent-org/logger": "^1.0.2"
  }
}

Use npm to install dependencies locally:

$ npm install

index.js

This is a simple web app:

const express = require('express');
const FluentClient = require('@fluent-org/logger').FluentClient;
const app = express();

// The 2nd argument can be omitted. Here is a default value for options.
const logger = new FluentClient('fluentd.test', {
  socket: {
    host: 'localhost',
    port: 24224,
    timeout: 3000, // 3 seconds
  }
});

app.get('/', function(request, response) {
  logger.emit('follow', {from: 'userA', to: 'userB'});
  response.send('Hello World!');
});
const port = process.env.PORT || 3000;
app.listen(port, function() {
  console.log("Listening on " + port);
});

Run the app and go to http://localhost:3000/ in your browser to send the logs to Fluentd:

$ node index.js

The logs should be output to /var/log/td-agent/td-agent.log or the standard output of the Fluentd process via stdout output plugin.

Production Deployments

Output Plugins

Various output plugins are available for writing records to other destinations:

High-Availability Configurations of Fluentd

For high-traffic websites (more than 5 application nodes), we recommend using the high-availability configuration for td-agent. This will improve the reliability of data transfer and query performance.

Monitoring

Monitoring Fluentd itself is also important. The article below describes the general monitoring methods for td-agent.

If this article is incorrect or outdated, or omits critical information, please let us know. Fluentd is an open-source project under Cloud Native Computing Foundation (CNCF). All components are available under the Apache 2 License.

Last updated