@intlgadmin/skywalking-nodejs-prisma-plugin

1.0.0 • Public • Published

Prisma plugin of SkyWalking NodeJS Agent

This plugin relies on skywalking nodejs agent. As a supplement to skywalking nodejs agent, it adds the detection of PRISMA accessing the database.

Install SkyWalking NodeJS package from npmjs

$ npm install --save @tencent/skywalking-nodejs-prisma-plugin

Set up Plugin

Like SkyWalking NodeJS SDK , this plugin requires SkyWalking backend (OAP) 8.0+ and NodeJS >= 10.

import prismaPlugin from '@tencent/skywalking-nodejs-prisma-plugin';
// or 
const { default: prismaPlugin } = require('@tencent/skywalking-nodejs-prisma-plugin');

// SkyWalking NodeJS Agent start(),
prismaPlugin.install({
  prisma, // PrismaClient instance
  databaseInfo: {
    dbType: 'Mysql',
    peer: 'ip:3306',
    dbName: 'db_name',
  },
});

For example:

const { default : axios } = require('axios');

const Koa = require('koa');
const app = new Koa();

const { default: agent } = require('skywalking-backend-js');
const { PrismaClient } = require('@prisma/client');
const { default: prismaPlugin } = require('@tencent/skywalking-nodejs-prisma-plugin');

const prisma = new PrismaClient();

agent.start({
  serviceName: 'my-service-name', 
  serviceInstance: 'my-service-instance-name', 
  collectorAddress: '127.0.0.1:11800',
});
prismaPlugin.install({
  prisma,
  databaseInfo: {
    dbType: 'Mysql',
    peer: 'ip:3306',
    dbName: 'db_name',
  }
});

// logger
app.use(async (ctx, next) => {
  await next();
  const rt = ctx.response.get('X-Response-Time');
  console.log(`${ctx.method} ${ctx.url} - ${rt}`);
});

// x-response-time
app.use(async (ctx, next) => {
  const start = Date.now();
  await next();
  const ms = Date.now() - start;
  ctx.set('X-Response-Time', `${ms}ms`);
});

// response
app.use(async ctx => {
  const table1 = await prisma.table1.findMany();
  console.log('share:',allShare);
  
  let httpContent = await axios.get('http://www.baidu.com');
  console.log('httpContent:', httpContent.data.length);

  const table2 = await prisma.table2.findMany();
  console.log('appointment:', appointment);
  
  httpContent = await axios.get('http://127.0.0.1:10000/');
  console.log('httpContent:', httpContent.data.length);
  
  ctx.body = 'OK.';
});

app.listen(3000,'::');

Readme

Keywords

none

Package Sidebar

Install

npm i @intlgadmin/skywalking-nodejs-prisma-plugin

Weekly Downloads

0

Version

1.0.0

License

ISC

Unpacked Size

10.8 kB

Total Files

4

Last publish

Collaborators

  • g_gadmin