Graylog: 使用 Node.js
如何将 Node.js 日志发送到 Graylog
👋 欢迎使用 Stackhero 文档!
Stackhero 提供即用型 Graylog 云 解决方案,具有众多优势,包括:
- 包含无限制和专用的 SMTP 电子邮件服务器。
- 只需点击即可轻松完成更新。
- 使用 HTTPS 保护的可定制域名(例如,https://logs.your-company.com)。
- 由专用私有 VM提供的最佳性能和强大安全性。
节省时间并简化您的生活:只需 5 分钟即可试用 Stackhero 的 Graylog 云托管 解决方案!
使用 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, // 毫秒
responseCode: 200,
ipHash,
userIdHash
}
);
// 记录 Node.js 中未捕获的异常
process.on(
'uncaughtException',
err => {
logger.log(
err,
{ type: 'uncaughtException' }
);
}
);
有关更多示例,您可以访问此 GitHub 仓库。
warning 别忘了配置您的 Graylog 输入(详情如下)。
使用 Winston GELF 包将 Node.js 日志发送到 Graylog
warning 除非 Winston 已经是您项目的一部分,否则最好使用
graylog2包。如果是这种情况,您可以用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" 的新输入,并点击 "启动新输入"。在出现的模态窗口中,勾选 "Global",添加一个标题,并在不修改其他设置的情况下确认。
就是这样!您的 Graylog 现在已设置为接收来自您的 Node.js 应用程序的日志。
为了增强安全性,请考虑过滤允许发送数据到端口 12201 的 IP。您可以通过访问 Stackhero 仪表板,选择您的 Graylog 服务,并配置 "防火墙" 以仅允许您的 IP。