Spickzettel: Telegraf installieren

$ sudo apt-get install apt-transport-https
...
$ wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
 OK
$ source /etc/lsb-release

$ echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
 deb https://repos.influxdata.com/ubuntu focal stable

$ sudo apt-get update && sudo apt-get install telegraf
...
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following NEW packages will be installed:
   telegraf
0 upgraded, 1 newly installed, 0 to remove and 13 not upgraded.
...
Preparing to unpack …/telegraf_1.19.1-1_arm64.deb …
Unpacking telegraf (1.19.1-1) …
Setting up telegraf (1.19.1-1) …
Created symlink /etc/systemd/system/multi-user.target.wants/telegraf.service → /lib/systemd/system/telegraf.service.
  • Dienst starten
$ systemctl start telegraf
  • Statusabfrage
$ systemctl status telegraf
  telegraf.service - The plugin-driven server agent for reporting metrics into InfluxDB
      Loaded: loaded (/lib/systemd/system/telegraf.service; enabled; vendor preset: enabled)
      Active: active (running) since Tue 2021-07-20 22:23:30 CEST; 32min ago
        Docs: https://github.com/influxdata/telegraf
    Main PID: 1686 (telegraf)
       Tasks: 10 (limit: 973)
      CGroup: /system.slice/telegraf.service
              └─1686 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d
  • Telegraf konfigurieren:
    Konfigurationsdatei: /etc/telegraf/telegraf.conf (zunächst als default durch Installation angelegt)
    Anzeige der Konfiguration und schreiben in eine Kopie im aktuellen Verzeichnis
$ telegraf config | tee telegraf.conf

Spickzettel: InfluxDB installieren

Stichpunkte zur Installation InfluxDB V2.0.7 auf Raspberry Pi mit Ubuntu (arm64)

  • Download des entsprechenden Paketes in das aktuelle Verzeichnis
$ wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.0.7-arm64.deb
 ...
 HTTP request sent, awaiting response… 200 OK
 Length: 112830606 (108M) [application/octet-stream]
 Saving to: ‘influxdb2-2.0.7-arm64.deb’
 ...
$ ls -l
  -rw-rw-r-- 1 ubuntu ubuntu 112830606 Jun  4 21:40 influxdb2-2.0.7-arm64.deb
  • Installieren des Package und Erzeugen der Symlinks für systemd
$ sudo dpkg -i influxdb2-2.0.7-arm64.deb
 Selecting previously unselected package influxdb2.
 (Reading database … 118966 files and directories currently installed.)
 Preparing to unpack influxdb2-2.0.7-arm64.deb …
 Unpacking influxdb2 (2.0.7) …
 Setting up influxdb2 (2.0.7) …
 Created symlink /etc/systemd/system/influxd.service → /lib/systemd/system/influxdb.service.
 Created symlink /etc/systemd/system/multi-user.target.wants/influxdb.service → /lib/systemd/system/influxdb.service.
  • Prüfen ob der influxdb Dienst läuft (ggf. nach reboot)
$ systemctl status influxdb
 ● influxdb.service - InfluxDB is an open-source, distributed, time series database
      Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor preset: enabled)
      Active: active (running) since Sun 2021-07-18 12:54:56 CEST; 3min ago
        Docs: https://docs.influxdata.com/influxdb/
    Main PID: 1663 (influxd)
       Tasks: 9 (limit: 973)
      CGroup: /system.slice/influxdb.service
              └─1663 /usr/bin/influxd 
  • Konfigurationsdatei für den Dienst ist /lib/systemd/system/influxdb.service:
[Unit]
 Description=InfluxDB is an open-source, distributed, time series database
 Documentation=https://docs.influxdata.com/influxdb/
 After=network-online.target
 [Service]
 User=influxdb
 Group=influxdb
 LimitNOFILE=65536
 EnvironmentFile=-/etc/default/influxdb2
 ExecStart=/usr/bin/influxd
 KillMode=control-group
 Restart=on-failure
 [Install]
 WantedBy=multi-user.target
 Alias=influxd.service
  • Datenverzeichnis für die Zeitreihendaten (time series data) /var/lib/influxdb/engine/
  • Datei für die Schlüsselwerte ( key-value-data ) – /var/lib/influxdb/influxd.bolt
  • Ausführliche Installation mit optionale Varianten https://docs.influxdata.com/influxdb/v2.0/install/
  • Test CLI: Abfrage der Version über die Kommandozeile:
$ influx version
 Influx CLI 2.0.7 (git: 2a45f0c037) build_date: 2021-06-04T19:17:40Z
  • Test UI: Start des User-Interface (UI) mit http://localhost:8086

CentOS auf Raspberry Pi 3 B

Kurzanleitung / Merkzettel

  • Download von http://isoredirect.centos.org/altarch/7/isos/armhfp/ ..
  • Auswahl Mirror z.B. http://ftp.rz.uni-frankfurt.de/pub/mirrors/centos-altarch/7.9.2009/isos/armhfp/
  • ImageDatei: CentOS-Userland-7-armv7hl-RaspberryPI-GNOME-2009-sda.raw
  • SD-Karte mit Image beschreiben z.B mit Win32DiskImager, einstecken und booten
  • Via SSH remote zugreifen
    user: root
    password: centos
  • root-Passwort ändern mit passwd

Gnome – Desktop Session sperrt zu schnell, wie einstellen?

aktuellen Timeout-Wert auslesen:
$ gsettings get org.gnome.desktop.session idle-delay
90

Timeout für den Sperrbilschirm setzen (hier eine Stunde):
$ gsettings set org.gnome.desktop.session idle-delay 3600

Du möchtest, dass der Bildschirm niemals sperrt, so setze idle-delay=0
$ gsettings set org.gnome.desktop.session idle-delay 0

RaspberryPI: Temperatur und Taktüberwachung

Immer wieder wird behauptet, Raspberry-Modele kämen ohne Kühlung aus. Das ist aber nur die halbe Wahrheit. Schon bei Aufgaben wie Videowiedergabe oder umfangreichen Berechnungen steigt die IC/MC-Temperatur deutlich über 60°C an. Folge: Der Raspberry wird deutlich langsamer.

Um dem auf die Spur zu kommen, sollten Sie sich die aktuelle Taktfrequenz und die Temperatur permanent anzeigen lassen. Das geht ganz einfach: Öffnen Sie mit der Tastenkombination Strg,Alt +T ein Terminal-Fenster. In diesem Fenster geben Sie den folgenden Befehl ein (alles in eine Zeile!):

while true; do vcgencmd measure_clock arm; vcgencmd
measure_temp; sleep 10; done &

Die Messwerte werden im angegebenen Zeitintervall, hier 10 Sekunden, in einer Endlosschleife angezeigt.

Vi Editor: Anzeigen und Bearbeiten im hex-Mode mit xxd

Wenn man im vi-Editor arbeitet und die Datei Sonderzeichen enthält, ist die Arbeit im hexadezimal Modus oft sinnvoll und manchmal zwingend.

Es gibt die Möglichkeit in diesen Modus umzuschalten:

:%!xxd

Nun kann man im hex Modus editieren (und nur dort!).

00000000: 5765 6e6e 206d 616e 2069 6d20 7669 2d45 Wenn man im vi-E
00000010: 6469 746f 7220 6172 6265 6974 6574 2075 ditor arbeitet u
00000020: 6e64 2064 6965 2044 6174 6569 2053 6f6e nd die Datei Son
00000030: 6465 727a 6569 6368 656e 2065 6e74 68c3 derzeichen enth.
00000040: a46c 742c 2069 7374 2064 6965 2041 7262 .lt, ist die Arb
00000050: 6569 7420 696d 2068 6578 6164 657a 696d eit im hexadezim
00000060: 616c 204d 6f64 7573 206f 6674 2073 696e al Modus oft sin
00000070: 6e76 6f6c 6c20 756e 6420 6d61 6e63 686d nvoll und manchm
00000080: 616c 207a 7769 6e67 656e 642e 0a        al zwingend..


Allerdings sollte man vor dem Abspeichern, den Buffer wieder zurück (revers) umwandeln. Somit nach der Bearbeitung im hex-Bereich, diesen mit

:%!xxd -r 

verlassen und in den normalen Modus zurückkehren und ggf. speichern.

Was passiert hier? Der vi-Puffer wird durch das externe Kommando xxd gestreamt. Mit dem Parameter -r geht es wieder revers und danach abspeichern.

SCOM Monitor für externes String-Skript

Häufig bekommt man vorgefertigte Skripte, die in das SCOM-Monitoring eingebunden werden sollen. Ein Two-State-VBScript-Monitor erhält von einer Batch-Datei Statusmeldungen als String über StdOut übergeben.

Vorzugsweise sollte so eine Batch Datei den String „OK“ (Healthy) oder einen String mit Fehlermeldung „Fehler XYZ aufgetreten“ (Unhealthy) zurückgeben. Diese Rückgabe eines String über StdOut wird als Parameter status via PropertyBag des SCOM-Monitors zu einem Healthy/Unhealthy-Status verarbeitet und entsprechend eskaliert.
In diesem Beispiel-Script wird zusätzlich geprüft, ob die externe Datei existiert und im Fehlerfall eine entsprechende Nachricht an die PropertyBag übergeben.

Hier das im SCOM-Monitor eingebundene VBScript mit der PropertyBag:

'SCOM-Monitorscript fuer Aufruf externes String-Script
Dim oAPI, oBag, objShell, objExec, fso, line, s

Const FileName = "c:\meinebatch.bat“

Set oAPI = CreateObject("MOM.ScriptAPI“)

Set fso = CreateObject("Scripting.FileSystemObject“)

If (fso.FileExists(FileName)) Then

    Set objShell = WScript.CreateObject("WScript.Shell“)

    Set objExec = objShell.Exec(FileName)

    Doline = objExec.StdOut.ReadLine()

        s = s & lineLoop While Not objExec.Stdout.atEndOfStream

Else

    s = "File “ & FileName & “ does not exist“

End If
Set oBag = oAPI.CreatePropertyBag()

Call oBag.AddValue("status“,s)

Call oAPI.Return(oBag)

 

Programmbeschreibung zeilenweise
1 Definition der Variablen
2 Definition Stringkonstante für das aufzurufende externe Programm. Es muss der absolute Pfad und Dateiname angegeben werden.
3 Zuweisen Objekt MOM.ScriptAPI für die PropertyBag zur Übergabe von Parametern an den SCOM-Monitor.
4 Zuweisen FileSystemObject für die Methode FileExists
5 Bedingung mit FileExists, wenn auszuführendes externes Programm existiert, dann …bis Zeile 12 folgenden Code ausführen.
6 Objektdefinition WScript.Shell
7 Auf das Objekt WScript.Shell die Methode Exec mit dem Parameter „externes Programm“ anwenden.
8 Loop, fußgesteuerte Schleife bis 11
9 Die aktuelle Zeile von StdOut wird gelesen und der Variable line zugewiesen.
10 Die aktuelle Zeile wird ohne(!) Zeilenvorschub der Variable s für den gesamten Output hinzugefügt.
11 Ende der fußgesteuerten Schleife wenn EndOfLine in StdOut erreicht ist.
12 Wenn externes Programm nicht vorhanden ist … bis Zeile 14
13 Fehlermeldung der Variable s zuweisen
14 End If
15 Erzeugen einer PropertyBag
16 Zuweisen (Add) des Ergebnis von s zum Parameter „status“ in der PropertyBag
17 Return zum SCOM mit PropertyBag im „Schlepptau“

TheCloudOnAWall

The Cloud will watch You! – Wand am S-Bahnhof „Düsseldorf-Derendorf“

 

 

 

 

 

 

 

 

 

 

 

 

UMTS-Webstick an einem Raspberry Pi installieren

Heutige USB-Geräte werden immer zunächst als Massenspeicher erkannt, damit z.B. im Windows die mitgelieferten Treiber installiert werden können und nicht als CD ausgeliefert werden müssen. Danach wird, initiert durch den nun installierten Treiber, in den jeweiligen Gerätemodus umgeschaltet.
Das funktioniert unter Linux so nicht und damit bleibt das Gerät im Modus Massenspeicher „hängen“ und funktioniert nicht, hier sichtbar in /var/log/messages:

kernel: [ 3118.534964] usb 1-1.3.2: new high-speed USB device number 7 using dwc_otg
kernel: [ 3118.637196] usb 1-1.3.2: New USB device found, idVendor=0e8d, idProduct=0002
kernel: [ 3118.637236] usb 1-1.3.2: New USB device strings: Mfr=2, Product=3, SerialNumber=4
kernel: [ 3118.637256] usb 1-1.3.2: Product: Product
kernel: [ 3118.637273] usb 1-1.3.2: Manufacturer: MediaTek Inc
kernel: [ 3118.637291] usb 1-1.3.2: SerialNumber: 683694200106600
kernel: [ 3118.648352] usb-storage 1-1.3.2:1.0: USB Mass Storage device detected
kernel: [ 3118.656676] scsi host2: usb-storage 1-1.3.2:1.0
kernel: [ 3119.656031] scsi 2:0:0:0: CD-ROM MEDIATEK FLASH DISK 6225 PQ: 0 ANSI: 0 CCS

Hier wird versucht, ein MEDION / ALDI TALK Webstick S4222 (MD 99079) am Raspberry Pi zu betreiben. Wir sehen idVendor=0e8d, idProduct=0002 des Chipherstellers MediaTek Inc..

Anmerkung und Vorbereitung
Der Medion Webstick, kann wie viele andere USB-Geräte nicht zuverlässig direkt am Raspberry Pi betrieben werden. Es ist ein USB-Hub mit eigener Stromversorgung notwendig. Ebenso sollte die SIM-Karte vorher in einem Handy so konfiguriert werden, dass keine SIM-PIN Eingabe erforderlich ist.
Weiteres Vorgehen nach ausführlicher und weitergehender Beschreibung auf http://www.draisberghof.de Dank an Josua Dietze!
Hier die für den Medion Webstick erforderlichen Schritte:

a) Laden und Entpacken
wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-2.2.5.tar.bz2
tar -xvjf usb-modeswitch-2.2.5.tar.bz2

wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-data-20150627.tar.bz2
tar -xvjf usb-modeswitch-data-20150627.tar.bz2

Es wurde in zwei neue Verzeichnisse entpackt. Die tar-Dateien können entfernt werden.

drwxr-xr-x 3 pi   4096 Jun 27 23:56 usb-modeswitch-data-20150627
-rw-r--r-- 1 pi  29918 Jun 27 23:58 usb-modeswitch-data-20150627.tar.bz2
drwxr-xr-x 3 pi   4096 Jul 16 23:37 usb-modeswitch-2.2.5
-rw-r--r-- 1 pi 263335 Jul 16 23:37 usb-modeswitch-2.2.5.tar.bz2

b) Installation von libusb
sudo apt-get install libusb-1.0-0-dev

c) Installieren von usb-modeswitch und usb-modeswitch-data

cd usb-modeswitch-2.2.5

pi@raspberrypi ~/usb-modeswitch-2.2.5 $ sudo make install
sed 's_!/usr/bin/tclsh_!'"/usr/bin/tclsh"'_' < usb_modeswitch.tcl > usb_modeswitch_dispatcher
install -D --mode=755 usb_modeswitch /usr/sbin/usb_modeswitch
install -D --mode=755 usb_modeswitch.sh /lib/udev/usb_modeswitch
install -D --mode=644 usb_modeswitch.conf /etc/usb_modeswitch.conf
install -D --mode=644 usb_modeswitch.1 /usr/share/man/man1/usb_modeswitch.1
install -D --mode=644 usb_modeswitch_dispatcher.1 /usr/share/man/man1/usb_modeswitch_dispatcher.1
install -D --mode=755 usb_modeswitch_dispatcher /usr/sbin/usb_modeswitch_dispatcher
install -d /var/lib/usb_modeswitch
test -d /etc/init -a -e /sbin/initctl && install --mode=644 usb-modeswitch-upstart.conf /etc/init || test 1
test -d /etc/systemd/system -a \( -e /usr/bin/systemctl -o -e /bin/systemctl \) && install --mode=644 usb_modeswitch@.service /etc/systemd/system || test 1

cd usb-modeswitch-data-20150627

pi@raspberrypi ~/usb-modeswitch-data-20150627 $ sudo make install
install -d /usr/share/usb_modeswitch
install -d /etc/usb_modeswitch.d
install -D --mode=644 40-usb_modeswitch.rules /lib/udev/rules.d/40-usb_modeswitch.rules
install --mode=644 -t /usr/share/usb_modeswitch ./usb_modeswitch.d/*

Nun kann man schauen, ob die für unseren Vendor und die Product-ID geforderten Daten vorhanden sind.
Config-Dateien:
$ ls -l /usr/share/usb_modeswitch/0e8d:0002*
-rw-r–r– 1 root root 165 Aug 21 22:18 /usr/share/usb_modeswitch/0e8d:0002:uPr=MT
-rw-r–r– 1 root root 179 Aug 21 22:18 /usr/share/usb_modeswitch/0e8d:0002:uPr=Product
Udev-Rules:
$ vi /lib/udev/rules.d/40-usb_modeswitch.rules und suche nach 0e8d
# MediaTek/Medion S4222 and probably others, MediaTek MT6276M and others
ATTR{idVendor}==“0e8d“, ATTR{idProduct}==“0002″, RUN+=“usb_modeswitch ‚%b/%k’“

Reboot des Raspberry Pi, aber den UMTS-Stick noch nicht einstecken!
Anmelden und sich mit tail -f /var/log/messages „an das Log hängen“ .
Stick einstecken …

tail -f /var/log/messages
kernel: [  121.213918] usb 1-1.3: new high-speed USB device number 4 using dwc_otg
kernel: [  121.314835] usb 1-1.3: New USB device found, idVendor=1a40, idProduct=0101
kernel: [  121.314875] usb 1-1.3: New USB device strings: Mfr=0, Product=1, SerialNumber=0
kernel: [  121.314895] usb 1-1.3: Product: USB 2.0 Hub
kernel: [  121.325893] hub 1-1.3:1.0: USB hub found
kernel: [  121.326862] hub 1-1.3:1.0: 4 ports detected
kernel: [  150.333925] usb 1-1.3.3: new high-speed USB device number 5 using dwc_otg
kernel: [  150.436066] usb 1-1.3.3: New USB device found, idVendor=0e8d, idProduct=0002
kernel: [  150.436107] usb 1-1.3.3: New USB device strings: Mfr=2, Product=3, SerialNumber=4
kernel: [  150.436131] usb 1-1.3.3: Product: Product
kernel: [  150.436150] usb 1-1.3.3: Manufacturer: MediaTek Inc
kernel: [  150.436167] usb 1-1.3.3: SerialNumber: 683694200106600
kernel: [  150.447454] usb-storage 1-1.3.3:1.0: USB Mass Storage device detected
kernel: [  150.456456] scsi host0: usb-storage 1-1.3.3:1.0
kernel: [  151.455108] scsi 0:0:0:0: CD-ROM MEDIATEK FLASH DISK 6225 PQ: 0 ANSI: 0 CCS
kernel: [  151.535748] sr 0:0:0:0: [sr0] scsi3-mmc drive: 0x/0x caddy
kernel: [  151.535792] cdrom: Uniform CD-ROM driver Revision: 3.20
usb_modeswitch: switch device 0e8d:0002 on 001/005
kernel: [  151.895582] usb 1-1.3.3: USB disconnect, device number 5
kernel: [  152.643968] usb 1-1.3.3: new high-speed USB device number 6 using dwc_otg
kernel: [  152.745374] usb 1-1.3.3: New USB device found, idVendor=0e8d, idProduct=00a5
kernel: [  152.745415] usb 1-1.3.3: New USB device strings: Mfr=9, Product=10, SerialNumber=0
kernel: [  152.745435] usb 1-1.3.3: Product: Product
kernel: [  152.745455] usb 1-1.3.3: Manufacturer: MediaTek Inc
kernel: [  152.760018] usb-storage 1-1.3.3:1.6: USB Mass Storage device detected
kernel: [  152.766154] scsi host1: usb-storage 1-1.3.3:1.6
kernel: [  152.955635] usbcore: registered new interface driver cdc_ncm
logger: usb_modeswitch: switched to 0e8d:00a5 on 001/006
kernel: [  152.994591] usbcore: registered new interface driver cdc_wdm
kernel: [  153.027917] usbcore: registered new interface driver usbserial
kernel: [  153.028085] usbcore: registered new interface driver usbserial_generic
kernel: [  153.028228] usbserial: USB Serial support registered for generic
kernel: [  153.045616] cdc_mbim 1-1.3.3:1.0: cdc-wdm0: USB WDM device
kernel: [  153.073849] cdc_mbim 1-1.3.3:1.0 wwan0: register 'cdc_mbim' at usb-bcm2708_usb-1.3.3, CDC MBIM, 62:0f:8f:c1:29:e8
kernel: [  153.075371] usbcore: registered new interface driver cdc_mbim
kernel: [  153.127876] usbcore: registered new interface driver option
kernel: [  153.128065] usbserial: USB Serial support registered for GSM modem (1-port)
kernel: [  153.129538] option 1-1.3.3:1.2: GSM modem (1-port) converter detected
kernel: [  153.157877] usb 1-1.3.3: GSM modem (1-port) converter now attached to ttyUSB0
kernel: [  153.161188] option 1-1.3.3:1.3: GSM modem (1-port) converter detected
kernel: [  153.166561] usb 1-1.3.3: GSM modem (1-port) converter now attached to ttyUSB1
kernel: [  153.167841] option 1-1.3.3:1.4: GSM modem (1-port) converter detected
kernel: [  153.194807] usb 1-1.3.3: GSM modem (1-port) converter now attached to ttyUSB2
kernel: [  153.195658] option 1-1.3.3:1 why not look here.5: GSM modem (1-port) converter detected
kernel: [  153.201407] usb 1-1.3.3: GSM modem (1-port) converter now attached to ttyUSB3
kernel: [  153.765075] scsi 1:0:0:0: Direct-Access     MEDIATEK  FLASH DISK      6225 PQ: 0 ANSI: 0 CCS
kernel: [  153.768166] sd 1:0:0:0: Attached scsi generic sg0 type 0
kernel: [  153.847826] sd 1:0:0:0: [sda] 3842048 512-byte logical blocks: (1.96 GB/1.83 GiB)
kernel: [  153.848819] sd 1:0:0:0: [sda] Write Protect is off
kernel: [  153.860054]  sda:
kernel: [  153.863441] sd 1:0:0:0: [sda] Attached SCSI removable disk

$ ifconfig
eth0 Link encap:Ethernet HWaddr b8:27:eb:c0:a5:67
inet addr:192.168.2.22 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3709 errors:0 dropped:174 overruns:0 frame:0
TX packets:1387 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:423132 (413.2 KiB) TX bytes:229988 (224.5 KiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1104 (1.0 KiB) TX bytes:1104 (1.0 KiB)

wwan0 Link encap:Ethernet HWaddr 62:0f:8f:c1:29:e8
UP BROADCAST RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:83 errors:44 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:4294965375 (3.9 GiB)

In einem nächsten Artikel wird die Aktivierung der Internetverbindung via UMTS-Modem-Stick beschrieben.