custom-metrics.js 985 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. const io = require('@pm2/io')
  2. // Straight Metric
  3. var user_count = 10
  4. const users = io.metric({
  5. name: 'CM: Realtime user',
  6. value: () => {
  7. return user_count
  8. }
  9. })
  10. // or users.set(user_count)
  11. // Counter (.inc() .dec())
  12. const currentReq = io.counter({
  13. name: 'CM: Current Processing',
  14. type: 'counter'
  15. })
  16. setInterval(() => {
  17. currentReq.inc()
  18. }, 1000)
  19. // Meter
  20. const reqsec = io.meter({
  21. name: 'CM: req/sec'
  22. })
  23. setInterval(() => {
  24. reqsec.mark()
  25. }, 100)
  26. // Histogram
  27. const latency = io.histogram({
  28. name: 'CM: latency'
  29. });
  30. var latencyValue = 0;
  31. setInterval(() => {
  32. latencyValue = Math.round(Math.random() * 100);
  33. latency.update(latencyValue);
  34. }, 100)
  35. ////////////////////
  36. // Custom Actions //
  37. ////////////////////
  38. io.action('add user', (done) => {
  39. user_count++
  40. done({success:true})
  41. })
  42. io.action('remove user', (done) => {
  43. user_count++
  44. done({success:true})
  45. })
  46. io.action('with params', (arg, done) => {
  47. console.log(arg)
  48. done({success:arg})
  49. })