I have installed and tested this on Monterey Beta 12.3 & Catalina 10.15.7. The default configuration only shows: CPU Usage, Load Average and Network Traffic. I am sure there is a way to extend this, but I will post that later when I have time.
Install and configure node_exporter
# Install node_exporter $ brew install node_exporter # Start node_exporter and make it persistent $ sudo cp -n homebrew.mxcl.node_exporter.plist /Library/LaunchDaemons/ $ sudo launchctl bootstrap system/ /Library/LaunchDaemons/homebrew.mxcl.node_exporter.plist # Check it's running sudo launchctl list | grep node_exporter # See full process state sudo launchctl print system/homebrew.mxcl.node_exporter # View logs sudo tail /usr/local/var/log/node_exporter.err.log
Configure Firewall to allow connections
- Open System Preferences
- Go to Security & Privacy
- Click on Firewall and locate node_exporter. You should see it blocked per image below

- Click on node_exporter and Allow Incoming Connections

Configure Prometheus on your Grafana server
Next, we are going to add the MacOS server in Prometheus and restart
- vi /etc/prometheus/prometheus.yml
# Global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. scrape_timeout: 15s # scrape_timeout is set to the global default (10s). # A scrape configuration containing exactly one endpoint to scrape:# Here it's Prometheus itself. # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. # metrics_path defaults to '/metrics' # scheme defaults to 'http'. scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node_exporter' static_configs: - targets: ['localhost:9100'] # Macs - job_name: macsrv static_configs: - targets: ['10.0.1.164:9100'] labels: alias: macsrv - job_name: formula2 static_configs: - targets: ['10.0.1.155:9100'] labels: alias: formula2
- Restart Prometheus
- sudo systemctl restart prometheus
- sudo systemctl status prometheus
● prometheus.service - Prometheus Time Series Collection and Processing Server
Loaded: loaded (/etc/systemd/system/prometheus.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2022-03-10 07:57:29 EST; 2h 11min ago
Main PID: 54216 (prometheus)
Tasks: 10 (limit: 48277)
Memory: 168.3M
CGroup: /system.slice/prometheus.service
└─54216 /usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path
Verify Data is being sent to Grafana
The easiest way is to check your dashboard. Refer here for adding servers to Prometheus: Grafana Linux Install
- Login into your Grafana via your browser and go to your dashboard.
- Above in the “host” dropdown you will see a list of hosts. You should see your new host if you added it and restart Prometheus.
