Graylog: 使用 graylog2 套件將 Node.js 日誌傳送到 Graylog(推薦)

本文件是與 Node.js 搭配使用指南的一部分。請在此處查看完整指南:如何將 Node.js 的日誌傳送到 Graylog

👋 歡迎使用 Stackhero 文件

Stackhero 提供全代管的 Graylog cloud 解決方案,專為速度與簡易性設計。您可以:

  • 依賴隨服務附贈的無限制、專屬 SMTP 電子郵件伺服器
  • 只需一鍵即可輕鬆更新,無需手動操作。
  • 使用由 HTTPS 保護的自訂網域名稱(例如 https://logs.your-company.com),讓您的團隊能安全且直接地存取。
  • 專屬私有基礎架構上享有卓越的效能安全性,無需與他人共用資源,也沒有「吵雜鄰居」問題。

專注於您的資料,而非工具本身:只需幾分鐘,即可開始使用 Stackhero 的 Graylog cloud hosting 解決方案。

從 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('Simple message example');

// 在訊息中附加資料
logger.log(
  'Password recovery email', // 訊息
  // 附加更多細節的 JSON 物件
  {
    subject: 'Password recovery',
    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 request', // 訊息
  // 包含更多細節的 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 repository

warning 請勿忘記設定您的 Graylog Input(詳情請見下方)。