2025-03-29 01:38:28 +01:00

103 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 ✅
![SMART Sensor in PRTG](assets/screenshot_1.png)
> ❗ **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
![SMART Sensor in PRTG](assets/screenshot_2.png)
## 📁 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)