# Prometheus - Raspberry PI Node Exporter Install

This is to install the node exporter on a raspberry pi for Prometheus to scrap.

#### Step1: Download

Install the node exporter for Prometheus on your Raspberry Pi

You will need to look at here for the current version of the node exporter from github

```bash
https://github.com/prometheus/node_exporter/releases
```

#### Step2: Install

Log into your raspberry pi

Once you have the latest located from step 1 then right click on it to get the link copied in your clipboard, for this example we are using 1.91 version

```bash
wget https://github.com/prometheus/node_exporter/releases/download/v1.9.1/node_exporter-1.9.1.linux-armv7.tar.gz
```

Now un-tar the release using this command.

```bash
tar -xvzf node_exporter-1.9.1.linux-armv7.tar.gz
```

This will un-tar the files into a sub-directory that looks like this.

<table border="1" id="bkmrk-node_exporter-1.9.1." style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>node\_exporter-1.9.1.linux-armv7/  
node\_exporter-1.9.1.linux-armv7/node\_exporter  
node\_exporter-1.9.1.linux-armv7/NOTICE  
node\_exporter-1.9.1.linux-armv7/LICENSE</td></tr></tbody></table>

The only file we need out of the expanded tarball is the `node_exporter` binary. Copy that file to `/usr/local/bin`.

```bash
sudo cp node_exporter-1.9.1.linux-armv7/node_exporter /usr/local/bin
```

Use the chmod command to make the node\_exporter binary executable.

```bash
sudo chmod +x /usr/local/bin/node_exporter
```

#### Step 3 – Setup systemd unit file

Next step, setting up the unit file. The unit file will allow us to control the service via the `systemctl` command. Additionally it will ensure node\_exporter starts on boot.

Create a file called `node_exporter.service` in the `/etc/sytemd/system` directory. The full path to the file should be:

```bash
sudo nano /etc/systemd/system/node_exporter.service
```

Put the following contents into the file:

```bash
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
#User=pi  # Or the user you want to run it as, or leave commented out for default
ExecStart=/usr/local/bin/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target
```

Now lets reload systemd, enable and start the service.

```bash
sudo systemctl daemon-reload 
sudo systemctl enable node_exporter.service
sudo systemctl start node_exporter.service
sudo systemctl status node_exporter
```

#### Step4: Test

You can test if the setup works this way as well

```bash
curl http://localhost:9100
```

#### Next steps on Prometheus

Now you should add the metrics endpoint as a target to your Prometheus server. You can do this by editing the prometheus configuration file on your prometheus server. For reference mine looks like this.

```yaml
# my 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 is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
    - targets: ['localhost:9090']

  - job_name: 'raspberry_pi'
    scrape_interval: 5s
    static_configs:
    - targets: ['pi1.sflservicesllc.com::9100','pi2.sflservicesllc.com:9100']
```

This is the standard prometheus config file. However I added the following target at the end for my Raspberry Pi:

```yaml
- job_name: 'pi1'
    scrape_interval: 5s
    static_configs:
    - targets: ['pi1.sflservicesllc.com::9100']
```

The IP address of my Raspberry Pi is `10.1.100.2`. The Port `9100` corresponds is the port used by node\_exporter.

Restart Prometheus server to start scrapping