Graylog: Node.jsでの使用
Node.jsからGraylogへのログ送信方法
👋 Stackheroのドキュメントへようこそ!
Stackheroは、数多くの利点を提供する、すぐに使えるGraylogクラウドソリューションを提供しています。
- 無制限で専用のSMTP メールサーバーが含まれています。
- ワンクリックで簡単にアップデート。
- HTTPSで保護されたカスタマイズ可能なドメイン名(例: https://logs.your-company.com)。
- プライベートで専用のVMによる最適なパフォーマンスと強力なセキュリティ。
時間を節約し、生活を簡素化:StackheroのGraylogクラウドホスティングソリューションを試すのに5分しかかかりません!
graylog2パッケージを使用してNode.jsのログをGraylogに送信する方法(推奨)
Node.jsからGraylogにログを送信するのは非常に簡単です。この例では、graylog2パッケージを使用してこのプロセスをスムーズに行う方法を紹介します。
まず、次のコマンドを実行してパッケージをインストールします。
npm install graylog2
メッセージをログに記録する方法は以下の通りです。
const graylog2 = require('graylog2');
const crypto = require('crypto');
const logger = new graylog2.graylog({
servers: [{ host: '<XXXXXX>.stackhero-network.com', port: 12201 }] // "host"をGraylogのドメインに置き換えてください
});
// Graylogにシンプルなメッセージを送信
logger.log('シンプルなメッセージの例');
// メッセージにデータを添付
logger.log(
'パスワード回復メール', // メッセージ
// 追加の詳細を含むJSONオブジェクト
{
subject: 'パスワード回復',
language: 'en_US',
domain: 'gmail.com'
}
);
// 高度な例
const ip = '1.2.3.4';
const ipHash = crypto.createHash('md5').update(ip).digest('hex');
const userId = '1234';
const userIdHash = crypto.createHash('md5').update(userId).digest('hex');
logger.log(
'APIリクエスト', // メッセージ
// さらに詳細なJSONオブジェクト
{
route: '/v1/messages/1234/',
method: 'POST',
responseTime: 12, // ms
responseCode: 200,
ipHash,
userIdHash
}
);
// Node.jsでキャッチされない例外をログに記録
process.on(
'uncaughtException',
err => {
logger.log(
err,
{ type: 'uncaughtException' }
);
}
);
さらに例を見たい場合は、このGitHubリポジトリを訪問してください。
warning Graylogの入力を設定するのを忘れないでください(詳細は以下)。
Winston GELFパッケージを使用してNode.jsのログをGraylogに送信する方法
warning
graylog2パッケージを使用するのが最善ですが、Winstonがすでにプロジェクトの一部である場合は、winston-gelfに置き換えることができます。
Winston GELFパッケージをインストールするには、次を実行します。
npm install winston-gelf
Winstonがプロジェクトにない場合は、次で追加できます。
npm install winston
基本的なセットアップは以下の通りです。
const winston = require('winston');
const winstonGelf = require('winston-gelf');
const process = require('process');
const logger = winston.createLogger({
transports: [
new winston.transports.Console(),
new winstonGelf({
// gelfProのすべてのオプションはこちらで確認: https://www.npmjs.com/package/gelf-pro
gelfPro: {
fields: {
env: process.env.NODE_ENV || 'development'
},
adapterName: 'udp',
adapterOptions: {
host: '<XXXXXX>.stackhero-network.com', // Graylogのドメインに置き換えてください
port: 12201,
}
}
})
]
});
// 情報ログの例
logger.info('これはログ情報です');
// エラーログの例
try {
throw Error('これは例のエラーです');
}
catch(error) {
logger.warn({ message: 'エラーが発生しました', error });
}
Graylogの入力を設定するのを忘れないでください(詳細は以下)。
Graylog入力の設定
Graylogインターフェースで、System/Inputsに移動し、「GELF UDP」タイプの新しい入力を作成し、「新しい入力を開始」をクリックします。表示されるモーダルで「グローバル」をチェックし、タイトルを追加し、他の設定を変更せずに確認します。
これで完了です!GraylogはNode.jsアプリケーションからのログを受信するように設定されました。
セキュリティを強化するために、ポート12201にデータを送信することを許可するIPをフィルタリングすることを検討してください。これを行うには、Stackheroダッシュボードにアクセスし、Graylogサービスを選択し、「ファイアウォール」を設定して自分のIPのみを許可します。