如何收集NodeJS应用程序的日志(使用PM2),以便可以在Azure Monitor中查询它们?

ve7v8dk2  于 2023-04-20  发布在  Node.js
关注(0)|答案(1)|浏览(163)

由于Azure正在远离日志分析,我们希望直接使用Azure Monitor实现这一点。Linux版Azure Monitor代理已经到位,因此问题是如何使用现有的PM2日志(out和error),以便能够基于这些(例如,使用KQL)创建有意义的指标和警报。
ps:Azure新手
尝试使用Log Analytics代理实现此功能,但由于此功能很快将被弃用,因此我将切换到Azure Monitor。到目前为止,在此方向上实现的内容不多

gfttwv5a

gfttwv5a1#

我在Linux VM中部署了一个node.js应用程序,如下所示:
我的node.js代码:-

// app.js
const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello, world!');
});

const PORT = process.env.PORT || 3000;

server.listen(PORT, () => {
  console.log(`Server listening on port ${PORT}`);
});

创建了一个app.js文件,并在其中添加了以下代码:-

在Linux VM上启动了我的node.js应用程序,如下所示:

命令:-

node app.js

我安装了Pm2,并使用Pm2运行了我的nodejs应用程序,如下所示:

命令:-

sudo npm install -g pm2

使用pm2运行应用:-

pm2 start app.js

输出:-

得到如下Pm2日志:-

pm2 logs

输出:-

现在,访问我的日志分析工作区,并通过创建如下所示的数据收集规则将我的VM添加到监控代理中:

使用下面的代码添加数据源:-

\root\.pm2\logs\*.log

添加了Linux系统日志和性能计数器,如下所示:

Linux系统日志仅写入以下选项:

性能计数器用于获取Linux VM的指标,如下所示:

我还尝试在性能计数器中添加自定义pm2日志文件誓言,但它没有在日志分析表中写入pm2日志,请参阅以下内容:

这两个选项都不包含任何自定义方法来包含pm2日志。作为替代方案,您可以在Linux VM中打开日志文件,然后将其复制到本地计算机,并在日志分析中使用Pm2日志创建自定义表,如下所示:-

命令:-

nano app-error.log

输出:-

您还可以通过选择自定义作为平台来创建具有数据收集规则的自定义表,如下所示:-

相关问题