initial commit

This commit is contained in:
kawsik
2026-06-02 10:37:57 +05:30
commit b4acb8d1df
49 changed files with 15350 additions and 0 deletions

165
03_remote_node_setup.md Normal file
View File

@@ -0,0 +1,165 @@
# 03 - Remote Node Setup
_Follow these instructions on **every remote computer/server** you want to monitor. These machines will run lightweight exporters that gather hardware metrics, waiting for the Central Server to pull the data._
---
## 1. INSTALLING NODE EXPORTER (For standard hardware data)
_Node Exporter tracks CPU, RAM, Disk Space, and Network speeds._
**1. Download Node Exporter**
```bash
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
```
**2. Extract Node Exporter**
```bash
tar -xvf node_exporter-1.7.0.linux-amd64.tar.gz
```
**3. Create a restricted system user for security**
```bash
sudo useradd --no-create-home --shell /bin/false node_exporter
```
**4. Copy the main engine to the secure Linux bin folder**
```bash
sudo cp node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
```
**5. Hand ownership of the executable to the new user**
```bash
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
```
**6. Create the background service file**
```bash
sudo nano /etc/systemd/system/node_exporter.service
```
_Paste this exact code into the file and save:_
```ini
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
```
**7. Turn Node Exporter on forever**
```bash
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
```
_(The Node Exporter is now running on port `9100`)._
---
## 2. INSTALLING NVIDIA GPU EXPORTER (Only for servers with GPUs)
_Note: The server must already have Nvidia drivers installed so the `nvidia-smi` command works in the terminal. Node Exporter does NOT monitor GPUs._
**1. Download the Exporter**
```bash
wget https://github.com/utkuozdemir/nvidia_gpu_exporter/releases/download/v1.4.1/nvidia_gpu_exporter_1.4.1_linux_x86_64.tar.gz
```
> **[WARNING] Panic `[ms]` Error:** Always use version `v1.4.1` or newer. Older versions crash on modern drivers because they output a unit called `[ms]`, which breaks Prometheus's strict naming rules.
**2. Extract it**
```bash
tar -xvf nvidia_gpu_exporter_1.4.1_linux_x86_64.tar.gz
```
**3. Create a restricted system user**
```bash
sudo useradd --no-create-home --shell /bin/false nvidia_exporter
```
**4. Copy the engine to the secure bin folder**
```bash
sudo cp nvidia_gpu_exporter /usr/local/bin/
```
**5. Hand ownership to the new user**
```bash
sudo chown nvidia_exporter:nvidia_exporter /usr/local/bin/nvidia_gpu_exporter
```
**6. Create the background service file**
```bash
sudo nano /etc/systemd/system/nvidia_gpu_exporter.service
```
_Paste this exact code into the file and save:_
```ini
[Unit]
Description=Nvidia GPU Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=nvidia_exporter
Group=nvidia_exporter
Type=simple
ExecStart=/usr/local/bin/nvidia_gpu_exporter
[Install]
WantedBy=multi-user.target
```
**7. Turn it on forever**
```bash
sudo systemctl daemon-reload
sudo systemctl start nvidia_gpu_exporter
sudo systemctl enable nvidia_gpu_exporter
```
_(The GPU Exporter is now running on port `9835`)._
---
## 3. ADDING THE REMOTE TARGET TO PROMETHEUS
Once your remote servers have their exporters running, you must configure the **Central Server** to scrape them.
### If the remote server is on the SAME network:
Simply use its Local IP Address. Go to your **Central Server** and edit `prometheus.yml`:
```yaml
- job_name: "office_desktop_1"
static_configs:
- targets: ["192.168.1.150:9100"] # For Node Exporter
- job_name: "office_desktop_1_gpu"
static_configs:
- targets: ["192.168.1.150:9835"] # For GPU Exporter
```
### If the remote server is across the internet (Ngrok/Cloudflare Tunnels):
If the server is remote and behind a firewall, you must expose the ports securely using a tunnel like Ngrok or Cloudflare.
For example, if you run Ngrok on the remote server pointing to port 9100:
```bash
ngrok http 9100
```
It gives you a URL: `https://my-custom-tunnel.ngrok-free.dev`.
Go to your **Central Server** and add it to `prometheus.yml` using `scheme: https`:
```yaml
- job_name: "remote_gpu_server"
scheme: https
static_configs:
- targets: ["my-custom-tunnel.ngrok-free.dev"]
```
> **IMPORTANT:** After editing `prometheus.yml`, always restart the Prometheus service on the Central Server: `sudo systemctl restart prometheus`.