103 lines
3.1 KiB
Markdown
103 lines
3.1 KiB
Markdown
# PRTG SMART Monitoring Script (`prtg-smart-health-check.v1.sh`)
|
||
|
||
Dieses Bash-Skript überwacht die S.M.A.R.T.-Werte einer physischen Festplatte oder SSD (SATA, SAS oder NVMe) und liefert die Daten im PRTG-kompatiblen XML-Format. Es wird über einen **SSH Script (erweitert)** Sensor eingebunden und kann automatisch erkennen, ob es sich um ein klassisches oder NVMe-Gerät handelt.
|
||
|
||
## 🔧 Voraussetzungen
|
||
|
||
- Ein Linux-System (z. B. Debian/Ubuntu/Proxmox)
|
||
- Das Paket `smartmontools` muss installiert sein:
|
||
```bash
|
||
sudo apt install smartmontools
|
||
```
|
||
- Das Skript muss mit `bash` ausgeführt werden
|
||
- PRTG benötigt SSH-Zugriff mit einem Benutzer, der das Skript ausführen darf
|
||
|
||
## 📁 Installation
|
||
|
||
1. Erstelle den Zielpfad für das Skript (von PRTG vorgegebenes Verzeichnis, kann sonst nicht gelesen werden):
|
||
```bash
|
||
sudo mkdir -p /var/prtg/scriptsxml/
|
||
```
|
||
|
||
2. Kopiere das Skript in dieses Verzeichnis und mache es ausführbar:
|
||
```bash
|
||
sudo cp prtg-smart-health-check.v1.sh /var/prtg/scriptsxml/
|
||
sudo chmod +x /var/prtg/scriptsxml/prtg-smart-health-check.v1.sh
|
||
```
|
||
|
||
3. Erlaube dem PRTG-SSH-Benutzer die Nutzung von `smartctl` ohne Passwort:
|
||
```bash
|
||
echo "prtguser ALL=(ALL) NOPASSWD: /usr/sbin/smartctl" | sudo tee /etc/sudoers.d/prtg-smart
|
||
```
|
||
> **Hinweis**: Ersetze `prtguser` durch den tatsächlichen Benutzer, den PRTG per SSH verwendet.
|
||
|
||
## 🧪 Testlauf
|
||
|
||
Vorab kann das Skript manuell getestet werden:
|
||
```bash
|
||
sudo /var/prtg/scriptsxml/prtg-smart-health-check.v1.sh /dev/nvme0n1
|
||
```
|
||
|
||
## ⚙️ PRTG-Einbindung
|
||
|
||
1. Öffne dein PRTG Webinterface
|
||
2. Wähle das gewünschte Gerät (der Linux-Host)
|
||
3. Klicke auf **„Sensor hinzufügen“ → „SSH Script (Erweitert)“**
|
||
4. Wähle im Dropdown das Skript `prtg-smart-health-check.v1.sh`
|
||
5. Als **Parameter** gibst du das physikalische Device an, z. B.:
|
||
```
|
||
/dev/sda
|
||
```
|
||
oder
|
||
```
|
||
/dev/nvme0n1
|
||
```
|
||
|
||
6. Lasse das Feld **„Mutex Name“** leer
|
||
7. Speichern – fertig ✅
|
||
|
||

|
||
|
||
> ❗ **Wichtig**:
|
||
> Der Benutzer, mit dem PRTG sich per SSH verbindet, muss das angegebene Device lesen dürfen (z. B. `/dev/nvme0n1`). Üblicherweise ist das nur per `sudo` mit `smartctl` möglich – genau deshalb ist die `sudoers`-Datei erforderlich.
|
||
|
||
## 📊 Was wird überwacht?
|
||
|
||
**SATA/SAS:**
|
||
- Temperatur
|
||
- Betriebsstunden
|
||
- Reallocated Sectors
|
||
- Pending Sectors
|
||
- Uncorrectable Sectors
|
||
- CRC-Fehler und mehr
|
||
|
||
**NVMe:**
|
||
- Temperatur
|
||
- Wear-Level (% Verbrauch)
|
||
- Datenmenge geschrieben/gelesen (TB)
|
||
- Unsafe Shutdowns
|
||
- Fehlerlogs
|
||
- Power-Cycles
|
||
- Verlauf des Verschleißes direkt im Sensortext
|
||
|
||

|
||
|
||
## 📁 Caching für Wear-Level-Verlauf
|
||
|
||
Das Skript speichert den letzten Wear-Level-Wert unter:
|
||
```
|
||
/var/prtg/scriptsxml/.smart_wear_dev_nvme0n1.cache
|
||
```
|
||
Daraus ergibt sich im Sensortext z. B.:
|
||
```
|
||
Wear: 9 % – +1 % seit 2025-03-27
|
||
```
|
||
|
||
---
|
||
|
||
🧠 Ideal für Admins, die Verschleiß frühzeitig erkennen und NVMe-Smartdaten sauber im Monitoring sehen wollen.
|
||
|
||
---
|
||
|
||
Autor: Patrick Asmus – [www.techniverse.net](https://www.techniverse.net)
|