This pm2 module will help you to expose product's metrics from pm2 instances. It will automatically listen to all your commands like:
$ pm2 scale <pm2_id|name> <number>
$ pm2 stop <pm2_id|name>
$ pm2 start <pm2_id|name>And will generate target's list for each instance host:port
and then expose to your prometheus.
Install via npm
$ pm2 install pm2-service-discovery-promSet host and port for generate target. Later prometheus will take this host for scrapping
$ pm2 set pm2-service-discovery-prom:target_host <your host>
$ pm2 set pm2-service-discovery-prom:target_base_port <your port>The result port value for each instance will be (base_port + pm2_id)
For example if you set target_host = localhost and target_base_port = 9300
And if you have instances with pm2_id = 1 and pm2_id = 11 Prometheus will come for metrics to:
localhost:9301/metricslocalhost:9311/metrics
Set filter value for pm2 app names.
This module will give only apps which has status online and name starts with this config value
$ pm2 set pm2-service-discovery-prom:app_name_filter <instance name with metrics>Set port for service discovery
$ pm2 set pm2-service-discovery-prom:pm2_service_discovery_port <port>Then all you need is add several lines to prometheus.yml config and restart prometheus:
- job_name: "publishing"
scrape_interval: "5s"
consul_sd_configs:
- server: '<pm2 service discovery host>:<pm2_service_discovery_port>'
- services: ['pm2_service_discovery'] # it should be the same as config value service_name
