|
|
Zeile 240: |
Zeile 240: |
| apt remove -y unattended-upgrades | | apt remove -y unattended-upgrades |
| ---- | | ---- |
| ===Benötigte Programme für Zabbix installieren===
| |
| Die nachfolgende Zeile installiert alles notwendige um alle Features eines Zabbix-Server zu nutzen. Als Datenbank wird MariaDB verwendet.<br>
| |
| Wer lieber MySQL verwenden will muss in der Zeile {{Key|mariadb-server}} durch {{Key|mysql-server}} ersetzen:<br>
| |
| apt install dnsutils htop make gcc libc6-dev libmysqlclient-dev libcurl4-openssl-dev libssh2-1-dev libsnmp-dev libiksemel-dev mariadb-server libopenipmi-dev fping php-gd snmp libsnmp-base openjdk-11-jdk unixodbc unixodbc-dev libxml2 libxml2-dev snmp-mibs-downloader snmpd snmptrapd snmptt sblim-wbemcli php-ldap traceroute ipmitool libldap2-dev php-bcmath php-mbstring php-xml fonts-dejavu-core libnet-snmp-perl libnet-ip-perl libnet-netmask-perl libnet-dns-perl libxml-writer-perl language-pack-en -y
| |
| {{Tipp| Zum kopieren der oberen Zeile mit der Maus vor das <code>apt</code> gehen und 3x Klicken. Ggf. mehrmals versuchen - bis die ganze Zeile markiert ist. Diese kann dann so in z.B. PuTTY eingefügt werden}}<br>
| |
| Mit der obigen Zeite werden gewiss einige Pakete zuviel installiert - unter anderem alles was nötig wäre um Zabbix auch direkt aus dem Quellcode zu kompilieren. Aber es sind dann auch definitiv alle notwendigen Voraussetzungen für jegliche Zabbix-Abfrage vorhanden, z.B. für den Empfang von SNMP-Traps - und anderem zum Beispiel die ganzen PHP-Pakete inklusive LDAP.<br>
| |
| <br>
| |
| <br>
| |
| ----
| |
|
| |
| ==Zabbix Server installieren==
| |
| Ich würde in einer Produktivumgebung immer eine der LTS-Varianten installieren. Auch wenn es einem in den Finger juckt wegen der neuen Features.<br>
| |
| Ihr müsstet spätestens nach 6 Monaten ein Upgrade auf die nächste Version durchführen!<br>
| |
| Ich persönlich nutze auch privat nur die LTS-Version. Die Zwischenversionen installiere ich separat zum Testen.<br>
| |
| ----
| |
| ===Zabbix Repository hinzufügen===
| |
| <div style="background:lightgreen"><u>'''Für die Version 6.0.x LTS (Support bis 28.02.2027)'''</u><br>
| |
| <nowiki>wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-3+ubuntu22.04_all.deb</nowiki>
| |
| dpkg -i zabbix-release_6.0-3+ubuntu22.04_all.deb
| |
| apt update && apt upgrade -y
| |
| rm zabbix-release_*
| |
| </div>
| |
| <div style="background:yellow"><u>'''Für die Version 6.2.x (Support bis 31.03.2023)'''</u><br>
| |
| <nowiki>wget https://repo.zabbix.com/zabbix/6.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.2-1+ubuntu22.04_all.deb</nowiki>
| |
| dpkg -i zabbix-release_6.2-1+ubuntu22.04_all.deb
| |
| apt update && apt upgrade -y
| |
| rm zabbix-release_*
| |
| </div>
| |
| <div style="background:lightblue"><u>'''Für die Version 6.4.x (Support bis 30.11.2023)'''</u><br>
| |
| <nowiki>wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb</nowiki>
| |
| dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
| |
| apt update && apt upgrade -y
| |
| rm zabbix-release_*
| |
| </div>
| |
| <!--
| |
| <div style="background:lightgreen"><u>'''Für die Version 5.0.x LTS (Support bis 31.05.2025)'''</u><br>
| |
| <nowiki>wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb</nowiki>
| |
| dpkg -i zabbix-release_5.0-1+focal_all.deb
| |
| apt update
| |
| rm zabbix-release_*
| |
| </div>
| |
| <div style="background:orange"><u>'''Für die Version 5.2.x (Support bis 30.04.2021)'''</u><br>
| |
| <nowiki>wget https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1+ubuntu20.04_all.deb</nowiki>
| |
| dpkg -i zabbix-release_5.2-1+ubuntu20.04_all.deb
| |
| apt update
| |
| rm zabbix-release_*
| |
| </div>
| |
| <div style="background:yellow"><u>'''Für die Version 5.4.x (Support bis 30.11.2021)'''</u><br>
| |
| <nowiki>wget https://repo.zabbix.com/zabbix/5.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.4-1+ubuntu20.04_all.deb</nowiki>
| |
| dpkg -i zabbix-release_5.4-1+ubuntu20.04_all.deb
| |
| apt update
| |
| rm zabbix-release_*
| |
| </div>
| |
| -->
| |
| {{Hinweis| Das <code>apt update && apt upgrade -y</code> ist notwendig da ich bemerkt habe das darüber auch das Zabbix-Repo selbst geupdatet wurde. (Kann sich wieder ändern, schadet aber auch nicht)}}
| |
| ----
| |
|
| |
| ===Zabbix installieren===
| |
| Die Installation der ausführbaren Dateien erfolgt bei allen Varianten nach <code>/sbin</code> !<br>
| |
| {{Warnung| Achtet nachfolgend immer darauf ob Ihr den '''''Zabbix Server''''' oder den '''''Zabbix Proxy''''' installieren wollt!}}
| |
| Fehlermeldungen zum '''''Zabbix Java Gateway''''' ignorieren!<br>
| |
| <br>
| |
| ----
| |
| ====[[Datei:Button_Zabbix_SERVER.png]] Als Server====
| |
| <u>'''Ab Version 6.0'''</u>
| |
| apt install -y zabbix-server-mysql zabbix-sql-scripts zabbix-frontend-php zabbix-apache-conf zabbix-agent2 zabbix-get zabbix-sender zabbix-java-gateway zabbix-web-service
| |
|
| |
| <br>
| |
| ----
| |
|
| |
| ====[[Datei:Button_Zabbix_PROXY.png]] Als Proxy====
| |
| <u>'''Ab Version 6.0'''</u>
| |
| apt install -y zabbix-proxy-mysql zabbix-sql-scripts zabbix-agent2 zabbix-get zabbix-sender zabbix-java-gateway
| |
| <br>
| |
| ----
| |
|
| |
| ====Java Gateway deaktivieren====
| |
| Die wenigsten werden es nutzen - doch diese Anleitung ist so gemacht das sich danach alle Features von Zabbix nutzen lassen.<br>
| |
| '''Wann braucht Ihr es?''' Wenn Ihr Java-Applikationen habt die Ihr aus dieser Applikation selbst monitoren wollt. Dazu müssen beim Start der Applikation extra Parameter hierfür übergeben werden (nämlich unter anderen die Daten des Java-Gateways).<br>
| |
| <br>
| |
| Wer es nicht braucht (und gerade nur Bahnhof verstanden hat) deaktiviert es mit<br>
| |
| systemctl stop zabbix-java-gateway.service
| |
| systemctl disable zabbix-java-gateway.service
| |
| Bei der Installation gab es ggf. Fehlermeldungen das der Dienst nicht gestartet werden konnte - das würde jetzt aber funktionieren.<br>
| |
| <br>
| |
| ----
| |
|
| |
| ====Zusätzliche Pakete nachinstallieren====
| |
| Zabbix denkt an fast alles (Die Abhängigkeiten wurden besser gepflegt), für den Empfang von SNMP-Traps (gemäß dieser Anleitung) und Tests (snmpwalk & Co) benötigen wird jedoch noch weitere Pakete - Falls Ihr nicht die Voraussetzungen installiert habt:<br>
| |
| apt install -y dnsutils snmp snmptt traceroute ipmitool snmpd snmp-mibs-downloader snmptrapd
| |
| <br>
| |
| ----
| |
|
| |
| ===MariaDB (MySQL) Datenbank optimieren===
| |
| {{Hinweis|Es funktioniert auch alles ohne diese Optimierungen! Diese kann man machen wenn der Server etwas größer wird weil wir hunderte von Servern und Geräten überwachen! In diesem Fall sollte auch der Festplattenplatz entsprechend dimensoniert sein! Für einen einfachen Server könnt Ihr das hier auch überspringen!}}
| |
| Die Einrichtung wird auch hier beschrieben - allerdings etwas knapp: https://www.zabbix.com/documentation/current/manual/appendix/install/db_scripts<br>
| |
| <br>
| |
| Die Zabbix-Datenbank kann recht groß werden und jeder Zugriff zählt. Ich habe mir deshalb mal aus diversen Quellen im Internet Tipps zusammengesucht um die Performance der Datenbank zu steigern.<br>
| |
| <br>
| |
| '''MariaDB''' Einstellungen bearbeiten (wer MySQL einsetzt findet die passende Datei unter {{Key|nano /etc/mysql/mysql.conf.d/mysqld.cnf}}):
| |
| nano /etc/mysql/mariadb.conf.d/50-server.cnf
| |
| und unterhalb von <br>
| |
| [mysqld]
| |
| Diese Zeilen einfügen ('''und die Kommentare lesen / beachten!!!)''':
| |
| # Größe der Logdatei statt 10MB
| |
| innodb_log_file_size = 512M
| |
| # Transaktionswerte nach Möglichkeit nicht in den Doublewritebuffer schreiben
| |
| innodb_doublewrite = 0
| |
| # Transaktionen schon bestätigen sobald diese im Cache stehen:
| |
| innodb_flush_log_at_trx_commit = 2
| |
| # Wieviel Hauptspeicher soll zum Puffern verwendet werden? Nehmt die Hälfte des vorhandenen Speichers (bei 4GB RAM also 2G, bei 1G also 512M)
| |
| innodb_buffer_pool_size = 1G
| |
| # Eigenes Fehlerprotokoll wieder aktivieren
| |
| log_error = /var/log/mysql/error.log
| |
|
| |
|
| |
| mit {{key|STRG}} + {{key|x}} den nano verlassen und speichern bestätigen {{key|j}} + {{key|Enter}})<br>
| |
| {{Warnung|Prüft unbedingt den Wert von '''''<Code>innodb_buffer_pool_size</Code>'''''!!! Dieser Wert darf nicht größer sein als der tatsächlich vorhandene RAM, sonst startet MySQL nicht}}
| |
| <br>
| |
| Prüft ggf. ob diese Zeilen dann nicht doppelt vorkommen!<br>
| |
| <br>
| |
| Wenn Ihr später immer mehr Poller, Pinger und andere Zabbix-Prozesse startet müsst Ihr auch die Anzahl der möglichen Verbindungen zu MySQL Datenbank erhöhen.<br>
| |
| Auch jeder Nutzer der auf dem Webinterface arbeitet verbraucht Verbindungen. Im {{Key|zabbix_server.log}} steht dann eine Meldung mit "too many connection".<br>
| |
| <br>
| |
| Sucht die Zeile<br>
| |
| #max_connections = 100
| |
| und ändert diese auf
| |
| max_connections = 300
| |
| <br>
| |
| Damit nach einen Upgrade das Fehlerlogging weiter funktioniert entfernt das Kommentarzeichen auch in der folgenden Zeile:
| |
| log_error = /var/log/mysql/error.log
| |
| also das <code>#</code> am Anfang entfernen
| |
| <br>
| |
| Nun müssen wir den mysql Server einmal neu starten:
| |
| systemctl restart mysql
| |
| <br>
| |
| Ob Ihr alles richtig gemacht habt könnt Ihr im Log kontrollieren:<br>
| |
| cat /var/log/mysql/error.log
| |
| Die Ausgabe sollte dann etwa so aussehen:<br>
| |
| 2023-03-20 11:10:12 0 [Note] Starting MariaDB 10.6.12-MariaDB-0ubuntu0.22.04.1 source revision as process 7163
| |
| 2023-03-20 11:10:12 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
| |
| 2023-03-20 11:10:12 0 [Note] InnoDB: Number of pools: 1
| |
| 2023-03-20 11:10:12 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
| |
| 2023-03-20 11:10:12 0 [Note] InnoDB: Initializing buffer pool, total size = 4294967296, chunk size = 134217728
| |
| 2023-03-20 11:10:12 0 [Note] InnoDB: Completed initialization of buffer pool
| |
| 2023-03-20 11:10:13 0 [Note] InnoDB: Resizing redo log from 100663296 to 536870912 bytes; LSN=42450
| |
| 2023-03-20 11:10:13 0 [Note] InnoDB: Starting to delete and rewrite log file.
| |
| 2023-03-20 11:10:13 0 [Note] InnoDB: Setting log file ./ib_logfile101 size to 536870912 bytes
| |
| 2023-03-20 11:10:13 0 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
| |
| 2023-03-20 11:10:13 0 [Note] InnoDB: New log file created, LSN=42450
| |
| 2023-03-20 11:10:13 0 [Note] InnoDB: 128 rollback segments are active.
| |
| 2023-03-20 11:10:13 0 [Note] InnoDB: Creating shared tablespace for temporary tables
| |
| 2023-03-20 11:10:13 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
| |
| 2023-03-20 11:10:13 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
| |
| 2023-03-20 11:10:13 0 [Note] InnoDB: 10.6.12 started; log sequence number 42438; transaction id 14
| |
| 2023-03-20 11:10:13 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
| |
| 2023-03-20 11:10:13 0 [Note] Plugin 'FEEDBACK' is disabled.
| |
| 2023-03-20 11:10:13 0 [Warning] You need to use --log-bin to make --expire-logs-days or --binlog-expire-logs-seconds work.
| |
| 2023-03-20 11:10:13 0 [Note] Server socket created on IP: '127.0.0.1'.
| |
| 2023-03-20 11:10:13 0 [Note] /usr/sbin/mariadbd: ready for connections.
| |
| Version: '10.6.12-MariaDB-0ubuntu0.22.04.1' socket: '/run/mysqld/mysqld.sock' port: 3306 Ubuntu 22.04
| |
| 2023-03-20 11:10:13 0 [Note] InnoDB: Buffer pool(s) load completed at 230320 11:10:13
| |
| Wichtig ist immer die Zeile mit dem Socket und Port (hier die vorletzte) - da muss der Port auftauchen auf dem der Server lauscht, in der Regel {{Key|3306}}<br>
| |
| <br>
| |
| <br>
| |
| ----
| |
|
| |
| ===MariaDB/MySQL Datenbank erstellen und einrichten===
| |
| * Zabbix Datenbank anlegen: (ab Zabbix 6.0)<br>
| |
| <!-- mysql -u root -e "create database zabbix character set utf8 collate utf8_bin" -->
| |
| mysql -u root -e "create database zabbix character set utf8mb4 collate utf8mb4_bin"
| |
| mysql -u root -e "create user 'zabbix'@'localhost' identified by 'zabbix'"
| |
| mysql -u root -e "grant all privileges on zabbix.* to 'zabbix'@'localhost'"
| |
| mysql -u root -e "SET GLOBAL log_bin_trust_function_creators = 1"
| |
| Die Datenbank heißt '''''zabbix''''', der Datenbankbenutzer "zabbix" mit dem Passwort "zabbix" - wenn er also nach einem Passwort fragt nun dieses eingeben. Falls das jemand für unsicher hält - nun der MySQL Server sollte - wenn man es nicht ändert - eh nur lokale Anfragen erlauben, sprich von extern komme ich gar nicht ran.<br>
| |
| '''Aber selbstverständlich könnt Ihr ein entsprechendes Passwort setzen, Ihr müsst dies nur im weiteren Verlauf der Anleitung beachten:'''<br>
| |
| * beim dem Anlegen des Benutzers setzt Ihr euer Passwort bei <code>identified by 'zabbix'"</code> ein (das '''''zabbix''''' durch euer Passwort ersetzen
| |
| * Nachfolgend immer wenn es <code>-pzabbix</code> wieder das Wort '''''zabbix''''' durch euer Passwort ersetzen oder aber einfach nur <code>-p</code> angeben - dann fragt er jedes mal nach
| |
| {{Hinweis| Hinschauen! Hier folgen 2 unterschiedliche Wege für Server oder Proxy!}}<br>
| |
| [[Datei:Button_Zabbix_SERVER.png]]<big>''' Bei einem Server:'''</big>
| |
| <br>
| |
| <u>'''Ab Version 6.0'''</u><br>
| |
| zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -pzabbix zabbix
| |
| <br>
| |
| [[Datei:Button_Zabbix_PROXY.png]]<big>''' Bei einem Proxy:'''</big>
| |
| Auf einem Proxy darf nur die <code>schema.sql</code> importiert werden!!!!<br>
| |
| Solltet Ihr aus versehen alle Schema importiert haben so löscht die Datenbank noch einmal und fangt von vorne an! Der Proxy funktioniert nicht wenn er alle Schemas hat!<br>
| |
| <br>
| |
| <u>'''Ab Version 6.0'''</u><br>
| |
| cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -pzabbix zabbix<br>
| |
| ----
| |
|
| |
| ===Konfigurationsdateien anpassen===
| |
| Nun die Konfigurationsdatei bearbeiten:<br>
| |
| <br>
| |
| [[Datei:Button_Zabbix_SERVER.png]] <big>'''für einen Server:'''</big>
| |
| nano /etc/zabbix/zabbix_server.conf
| |
| * folgende Zeilen finden und auf diese Werte ändern, ggf. den {{Key|#}} davor entfernen, {{key|STRG}} + {{key|W}} ist suchen!
| |
| DBHost=localhost
| |
| DBName=zabbix
| |
| DBUser=zabbix
| |
| DBPassword=zabbix
| |
|
| |
| LogSlowQueries=20000
| |
|
| |
| StartIPMIPollers=1
| |
| StartPollersUnreachable=5
| |
| StartPingers=10
| |
| StartVMwareCollectors=5
| |
|
| |
| #Die Cache Werte ggf. dem vorhandenen Arbeitsspeicher anpassen!
| |
| #Oder nicht ändern - Zabbix warnt euch wenn ein Wert ausgeschöpft ist und vergrößert werden muss - wenn das Template "Zabbix Server" zugeordnet wurde
| |
| VMwareCacheSize=64M
| |
| CacheSize=128M
| |
| HistoryCacheSize=64M
| |
| HistoryIndexCacheSize=16M
| |
| TrendCacheSize=64M
| |
| ValueCacheSize=64M
| |
|
| |
| Timeout=30
| |
|
| |
| # Problem mit fping6 beheben (ja, richtig, nichts hinter dem = Zeichen!)
| |
| Fping6Location=
| |
|
| |
| <div class="mw-customtoggle-Spoiler_2 znil-menu-button">Hier klicken (Toggle) für die ganze '''<big>zabbix_server.conf</big>'''</div>
| |
| <div id="mw-customcollapsible-Spoiler_2" class="wikitable mw-collapsible mw-collapsed">
| |
| <source>
| |
| # This is a configuration file for Zabbix server daemon
| |
| </source>
| |
| </div>
| |
| <br>
| |
| ----
| |
| [[Datei:Button_Zabbix_PROXY.png]] <big>'''Bei einem Proxy:'''</big>
| |
| nano /etc/zabbix/zabbix_proxy.conf
| |
| * folgende Zeilen finden und auf diese Werte ändern, ggf. den '''#''' davor entfernen, {{key|STRG}} + {{key|W}} ist suchen!
| |
| ProxyMode=0
| |
|
| |
| #IP oder DNS Name des Zabbix-Servers an den gemeldet werden soll. Falls der Port nicht 10051 ist dann mit : dahinter setzen
| |
| Server=123.123.123.123
| |
|
| |
| # Hostname -> unter diesem Namen müssen wir den Proxy auch auf dem Hauptserver anlegen!
| |
| Hostname=zabbixproxy
| |
|
| |
| DBHost=localhost
| |
| DBName=zabbix
| |
| DBUser=zabbix
| |
| DBPassword=zabbix
| |
|
| |
| EnableRemoteCommands=1
| |
|
| |
| Timeout=30
| |
|
| |
| StartVMwareCollectors=5
| |
| # Nachfolgend: Richtig, nichts darf hinter dem = stehen!
| |
| Fping6Location=
| |
|
| |
| <br>
| |
| ----
| |
| {{Hinweis|Unter Ubuntu 22.04 ist<code>fping</code> und <code>fping6</code> das gleiche Programm. Die 6er Variante ist nur ein symbolischer Link auf die normale Version. Auf meinem Proxy zickte er deswegen rum (der hat eine IPv6 konfiguriert). Wenn den Eintrag wie zuvor beschrieben abändert geht es ohne Probleme.<br>
| |
| Die Fehlermeldung die er bringt ist<br>
| |
| Cannot detect the minimum interval of /usr/bin/fping6
| |
| }}<br>
| |
| ----
| |
|
| |
| ===Automatischen Start beim Booten einrichten===
| |
| <!--
| |
| Dazu müssen wir die Start/Stop Scripte hinterlegen. Ubuntu 16.04.x nutzt [https://wiki.ubuntuusers.de/systemd/systemd] für das Starten und Stoppen von Diensten.<br>
| |
| Wenn wir schon auf 16.04. umsteigen dann richtig! Also legen wir passende Info-Dateien für Zabbix an.<br> Nebenbei lösen wir damit das Problem der Start-Reihenfolge, wir können angeben das der Zabbix-Server erst gestartet werden darf wenn MySQL schon läuft - und umgekehrt, erst Zabbix Server beenden, dann MySQL<br>
| |
| [[Datei:Button_Zabbix_SERVER.png]] <big>'''Auf einem Server'''</big>
| |
| <br>
| |
| nano /lib/systemd/system/zabbix-server.service
| |
| <u>Inhalt:</u><br>
| |
| [Unit]
| |
| Description=Zabbix Server
| |
| After=syslog.target network.target mysql.service
| |
|
| |
| [Service]
| |
| Type=oneshot
| |
| ExecStart=/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
| |
| ExecReload=/sbin/zabbix_server -R config_cache_reload
| |
| RemainAfterExit=yes
| |
| PIDFile=/tmp/zabbix_server.pid
| |
|
| |
| [Install]
| |
| WantedBy=multi-user.target
| |
| Danach müssen wir den Service noch aktivieren:<br>
| |
| systemctl enable zabbix-server.service
| |
| <br>
| |
| <br>
| |
| ----
| |
| [[Datei:Button_Zabbix_PROXY.png]] <big>'''Auf einem Proxy'''</big>
| |
| <br>
| |
| nano /lib/systemd/system/zabbix-proxy.service
| |
| <u>Inhalt:</u><br>
| |
| [Unit]
| |
| Description=Zabbix Proxy
| |
| After=syslog.target network.target mysql.service
| |
|
| |
| [Service]
| |
| Type=oneshot
| |
| ExecStart=/sbin/zabbix_proxy -c /etc/zabbix/zabbix_proxy.conf
| |
| ExecReload=/sbin/zabbix_proxy -R config_cache_reload
| |
| RemainAfterExit=yes
| |
| PIDFile=/tmp/zabbix_proxy.pid
| |
|
| |
| [Install]
| |
| WantedBy=multi-user.target
| |
| Danach müssen wir den Service noch aktivieren:<br>
| |
| systemctl enable zabbix-proxy.service
| |
| <br>
| |
| <br>
| |
| ----
| |
| [[Datei:Button_Zabbix_AGENT.png]] <big>'''und noch der Agent'''</big>
| |
| <br>
| |
| nano /lib/systemd/system/zabbix-agent.service
| |
| <u>Inhalt:</u><br>
| |
| [Unit]
| |
| Description=Zabbix Agent
| |
| After=syslog.target network.target
| |
|
| |
| [Service]
| |
| Type=oneshot
| |
| ExecStart=/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
| |
| RemainAfterExit=yes
| |
| PIDFile=/tmp/zabbix/zabbix_agentd.pid
| |
|
| |
| [Install]
| |
| WantedBy=multi-user.target
| |
| Danach müssen wir den Service noch aktivieren:<br>
| |
| systemctl enable zabbix-server.service
| |
| <br>
| |
| <br>
| |
| ----
| |
| -->
| |
| Die notwendigen Skripte werden bei der Installation aus den Repository direkt mit installiert, wir müssen diese nur noch aktivieren:<br>
| |
| [[Datei:Button_Zabbix_SERVER.png]] <big>'''Auf einem Server'''</big>
| |
| <br>
| |
| systemctl enable zabbix-server.service
| |
| <br>
| |
| <br>
| |
| ----
| |
| [[Datei:Button_Zabbix_PROXY.png]] <big>'''Auf einem Proxy'''</big>
| |
| <br>
| |
| systemctl enable zabbix-proxy.service
| |
| <br>
| |
| <br>
| |
| ----
| |
| [[Datei:Button_Zabbix_AGENT.png]] <big>'''und noch der Agent'''</big>
| |
| <br>
| |
| systemctl enable zabbix-agent2.service
| |
| <br>
| |
| <br>
| |
| ----
| |
|
| |
| ===Start von Zabbix testen===
| |
| Nun müsste man den Zabbix Server wie andere Dienste auch über {{Key|systemctl}} starten können
| |
| systemctl start zabbix-server
| |
| Wenn alles in Ordnung ist gibt es keine Rückmeldung durch '''''systemctl''''', also fragen wir nach dem Status:<br>
| |
| systemctl status zabbix-server
| |
| <u>Ausgabe:</u><br>
| |
| ● zabbix-server.service - Zabbix Server
| |
| Loaded: loaded (/lib/systemd/system/zabbix-server.service; enabled; vendor preset: enabled)
| |
| Active: active (running) since Thu 2020-05-21 17:47:54 CEST; 5s ago
| |
| Process: 18816 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
| |
| Main PID: 18830 (zabbix_server)
| |
| Tasks: 62 (limit: 4621)
| |
| Memory: 139.1M
| |
| CGroup: /system.slice/zabbix-server.service
| |
| ├─18830 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
| |
| ├─18831 /usr/sbin/zabbix_server: configuration syncer [synced configuration in 0.043149 sec, idle 60 sec]
| |
| ├─18833 /usr/sbin/zabbix_server: ipmi manager #1 [scheduled 0, polled 0 values, idle 5.016619 sec during 5.016881 sec]
| |
| ├─18834 /usr/sbin/zabbix_server: housekeeper [startup idle for 30 minutes]
| |
| ├─18835 /usr/sbin/zabbix_server: timer #1 [updated 0 hosts, suppressed 0 events in 0.001532 sec, idle 5 sec]
| |
| ├─18836 /usr/sbin/zabbix_server: http poller #1 [got 0 values in 0.000710 sec, idle 5 sec]
| |
| ├─18837 /usr/sbin/zabbix_server: discoverer #1 [processed 0 rules in 0.000605 sec, idle 60 sec]
| |
| ├─18838 /usr/sbin/zabbix_server: history syncer #1 [processed 0 values, 0 triggers in 0.000026 sec, idle 1 sec]
| |
| ├─18839 /usr/sbin/zabbix_server: history syncer #2 [processed 0 values, 0 triggers in 0.000028 sec, idle 1 sec]
| |
| ├─18840 /usr/sbin/zabbix_server: history syncer #3 [processed 0 values, 0 triggers in 0.000025 sec, idle 1 sec]
| |
| ├─18841 /usr/sbin/zabbix_server: history syncer #4 [processed 0 values, 0 triggers in 0.000024 sec, idle 1 sec]
| |
| ├─18842 /usr/sbin/zabbix_server: escalator #1 [processed 0 escalations in 0.001428 sec, idle 3 sec]
| |
| ├─18843 /usr/sbin/zabbix_server: ipmi poller #1 started
| |
| ├─18844 /usr/sbin/zabbix_server: ipmi poller #2 started
| |
| ├─18846 /usr/sbin/zabbix_server: ipmi poller #3 started
| |
| ├─18847 /usr/sbin/zabbix_server: ipmi poller #4 started
| |
| ├─18848 /usr/sbin/zabbix_server: ipmi poller #5 started
| |
| ├─18849 /usr/sbin/zabbix_server: proxy poller #1 [exchanged data with 0 proxies in 0.000024 sec, idle 5 sec]
| |
| ├─18850 /usr/sbin/zabbix_server: self-monitoring [processed data in 0.000024 sec, idle 1 sec]
| |
| ├─18851 /usr/sbin/zabbix_server: vmware collector #1 [updated 0, removed 0 VMware services in 0.000019 sec, idle 5 sec]
| |
| ├─18852 /usr/sbin/zabbix_server: vmware collector #2 [updated 0, removed 0 VMware services in 0.000020 sec, idle 5 sec]
| |
| ├─18860 /usr/sbin/zabbix_server: vmware collector #3 [updated 0, removed 0 VMware services in 0.000020 sec, idle 5 sec]
| |
| ├─18861 /usr/sbin/zabbix_server: vmware collector #4 [updated 0, removed 0 VMware services in 0.000019 sec, idle 5 sec]
| |
| ├─18862 /usr/sbin/zabbix_server: vmware collector #5 [updated 0, removed 0 VMware services in 0.000017 sec, idle 5 sec]
| |
| ├─18863 /usr/sbin/zabbix_server: task manager [processed 0 task(s) in 0.001796 sec, idle 5 sec]
| |
| ├─18864 /usr/sbin/zabbix_server: poller #1 [got 1 values in 0.000133 sec, idle 3 sec]
| |
| ├─18866 /usr/sbin/zabbix_server: poller #2 [got 0 values in 0.000044 sec, idle 3 sec]
| |
| ├─18867 /usr/sbin/zabbix_server: poller #3 [got 0 values in 0.000047 sec, idle 3 sec]
| |
| ├─18868 /usr/sbin/zabbix_server: poller #4 [got 0 values in 0.000045 sec, idle 3 sec]
| |
| ├─18869 /usr/sbin/zabbix_server: poller #5 [got 0 values in 0.000065 sec, idle 3 sec]
| |
| ├─18870 /usr/sbin/zabbix_server: unreachable poller #1 [got 0 values in 0.000057 sec, idle 5 sec]
| |
| ├─18872 /usr/sbin/zabbix_server: unreachable poller #2 [got 0 values in 0.000051 sec, idle 5 sec]
| |
| ├─18876 /usr/sbin/zabbix_server: unreachable poller #3 [got 0 values in 0.000044 sec, idle 5 sec]
| |
| ├─18877 /usr/sbin/zabbix_server: unreachable poller #4 [got 0 values in 0.000054 sec, idle 5 sec]
| |
| ├─18878 /usr/sbin/zabbix_server: unreachable poller #5 [got 0 values in 0.000078 sec, idle 5 sec]
| |
| ├─18879 /usr/sbin/zabbix_server: trapper #1 [processed data in 0.000000 sec, waiting for connection]
| |
| ├─18880 /usr/sbin/zabbix_server: trapper #2 [processed data in 0.000000 sec, waiting for connection]
| |
| ├─18881 /usr/sbin/zabbix_server: trapper #3 [processed data in 0.000000 sec, waiting for connection]
| |
| ├─18882 /usr/sbin/zabbix_server: trapper #4 [processed data in 0.000000 sec, waiting for connection]
| |
| ├─18883 /usr/sbin/zabbix_server: trapper #5 [processed data in 0.000000 sec, waiting for connection]
| |
| ├─18884 /usr/sbin/zabbix_server: icmp pinger #1 [got 0 values in 0.000038 sec, idle 5 sec]
| |
| ├─18885 /usr/sbin/zabbix_server: icmp pinger #2 [got 0 values in 0.000041 sec, idle 5 sec]
| |
| ├─18886 /usr/sbin/zabbix_server: icmp pinger #3 [got 0 values in 0.000043 sec, idle 5 sec]
| |
| ├─18887 /usr/sbin/zabbix_server: icmp pinger #4 [got 0 values in 0.000040 sec, idle 5 sec]
| |
| Zum Verlassen {{Key|q}} drücken.<br>
| |
| Genaueres können wir uns auch noch einmal im Log-File ansehen:<br>
| |
| tail -fn 1000 /var/log/zabbix/zabbix_server.log
| |
| <u>Ausgabe:</u><br>
| |
| 17748:20220721:153654.849 Starting Zabbix Server. Zabbix 6.0.6 (revision 3f7597e3ea3).
| |
| 17748:20220721:153654.849 ****** Enabled features ******
| |
| 17748:20220721:153654.849 SNMP monitoring: YES
| |
| 17748:20220721:153654.849 IPMI monitoring: YES
| |
| 17748:20220721:153654.849 Web monitoring: YES
| |
| 17748:20220721:153654.849 VMware monitoring: YES
| |
| 17748:20220721:153654.849 SMTP authentication: YES
| |
| 17748:20220721:153654.849 ODBC: YES
| |
| 17748:20220721:153654.849 SSH support: YES
| |
| 17748:20220721:153654.849 IPv6 support: YES
| |
| 17748:20220721:153654.849 TLS support: YES
| |
| 17748:20220721:153654.849 ******************************
| |
| 17748:20220721:153654.849 using configuration file: /etc/zabbix/zabbix_server.conf
| |
| 17748:20220721:153654.874 current database version (mandatory/optional): 06000000/06000004
| |
| 17748:20220721:153654.874 required mandatory version: 06000000
| |
| 17750:20220721:153654.880 starting HA manager
| |
| 17750:20220721:153654.884 HA manager started in active mode
| |
| 17748:20220721:153654.885 server #0 started [main process]
| |
| 17751:20220721:153654.886 server #1 started [service manager #1]
| |
| 17752:20220721:153654.886 server #2 started [configuration syncer #1]
| |
| 17756:20220721:153655.131 server #3 started [alert manager #1]
| |
| 17758:20220721:153655.132 server #5 started [alerter #2]
| |
| 17759:20220721:153655.132 server #6 started [alerter #3]
| |
| 17760:20220721:153655.133 server #7 started [preprocessing manager #1]
| |
| 17761:20220721:153655.134 server #8 started [preprocessing worker #1]
| |
| 17763:20220721:153655.135 server #10 started [preprocessing worker #3]
| |
| 17766:20220721:153655.136 server #13 started [lld worker #2]
| |
| 17767:20220721:153655.136 server #14 started [ipmi manager #1]
| |
| 17768:20220721:153655.141 server #15 started [housekeeper #1]
| |
| 17776:20220721:153655.141 server #23 started [escalator #1]
| |
| 17762:20220721:153655.143 server #9 started [preprocessing worker #2]
| |
| 17765:20220721:153655.143 server #12 started [lld worker #1]
| |
| 17764:20220721:153655.145 server #11 started [lld manager #1]
| |
| 17771:20220721:153655.146 server #18 started [discoverer #1]
| |
| 17777:20220721:153655.147 server #24 started [ipmi poller #1]
| |
| 17772:20220721:153655.149 server #19 started [history syncer #1]
| |
| 17770:20220721:153655.150 server #17 started [http poller #1]
| |
| 17769:20220721:153655.150 server #16 started [timer #1]
| |
| 17773:20220721:153655.151 server #20 started [history syncer #2]
| |
| 17774:20220721:153655.151 server #21 started [history syncer #3]
| |
| 17775:20220721:153655.152 server #22 started [history syncer #4]
| |
| 17757:20220721:153655.152 server #4 started [alerter #1]
| |
| 17778:20220721:153655.153 server #25 started [proxy poller #1]
| |
| 17784:20220721:153655.154 server #26 started [self-monitoring #1]
| |
| 17790:20220721:153655.163 server #28 started [task manager #1]
| |
| 17791:20220721:153655.164 server #29 started [poller #1]
| |
| 17792:20220721:153655.167 server #30 started [poller #2]
| |
| 17793:20220721:153655.172 server #31 started [poller #3]
| |
| 17799:20220721:153655.174 server #37 started [unreachable poller #4]
| |
| 17795:20220721:153655.175 server #33 started [poller #5]
| |
| 17798:20220721:153655.178 server #36 started [unreachable poller #3]
| |
| 17803:20220721:153655.178 server #41 started [trapper #3]
| |
| 17800:20220721:153655.181 server #38 started [unreachable poller #5]
| |
| 17794:20220721:153655.181 server #32 started [poller #4]
| |
| 17801:20220721:153655.182 server #39 started [trapper #1]
| |
| 17804:20220721:153655.185 server #42 started [trapper #4]
| |
| 17802:20220721:153655.186 server #40 started [trapper #2]
| |
| 17789:20220721:153655.186 server #27 started [vmware collector #1]
| |
| 17797:20220721:153655.189 server #35 started [unreachable poller #2]
| |
| 17796:20220721:153655.192 server #34 started [unreachable poller #1]
| |
| 17808:20220721:153655.194 server #44 started [icmp pinger #1]
| |
| 17809:20220721:153655.194 server #45 started [icmp pinger #2]
| |
| 17807:20220721:153655.195 server #43 started [trapper #5]
| |
| 17810:20220721:153655.196 server #46 started [icmp pinger #3]
| |
| 17811:20220721:153655.200 server #47 started [icmp pinger #4]
| |
| 17812:20220721:153655.201 server #48 started [icmp pinger #5]
| |
| 17822:20220721:153655.203 server #54 started [alert syncer #1]
| |
| 17818:20220721:153655.203 server #50 started [icmp pinger #7]
| |
| 17823:20220721:153655.204 server #55 started [history poller #1]
| |
| 17819:20220721:153655.204 server #51 started [icmp pinger #8]
| |
| 17820:20220721:153655.204 server #52 started [icmp pinger #9]
| |
| 17817:20220721:153655.205 server #49 started [icmp pinger #6]
| |
| 17821:20220721:153655.205 server #53 started [icmp pinger #10]
| |
| 17824:20220721:153655.206 server #56 started [history poller #2]
| |
| 17825:20220721:153655.208 server #57 started [history poller #3]
| |
| 17829:20220721:153655.209 server #59 started [history poller #5]
| |
| 17826:20220721:153655.210 server #58 started [history poller #4]
| |
| 17830:20220721:153655.216 server #60 started [availability manager #1]
| |
| 17831:20220721:153655.218 server #61 started [trigger housekeeper #1]
| |
| 17832:20220721:153655.219 server #62 started [odbc poller #1]
| |
| 17792:20220721:153656.171 enabling Zabbix agent checks on host "Zabbix server": interface became available
| |
| Wie Ihr seht ist der erste Host schon im Monitoring - Der Server selbst (der Agent startet automatisch bei der Installation).<br>
| |
| <br>
| |
| Bei einem Proxy kann es noch folgende Fehlermeldung geben:<br>
| |
| :<code>failed to update local proxy configuration copy: Can't open JSON object or array ""failed"}"</code><br>
| |
| <br>
| |
| Naja, wir müssen den Proxy auf unserem Zabbix-Server unter
| |
| Administration - Proxies
| |
| noch anlegen - und zwar bitte genau mit dem gleichen Namen wie in der <code>zabbix_proxy.conf</code> unter <code>Hostname=</code> angegeben - dann ist der Fehler weg.<br>
| |
| <br>
| |
| Bei Erfolg sollte das dann so aussehen:<br>
| |
| :[[Datei:Zabbix_General_Proxys.png]]<br>
| |
| An den Sekunden unter ''''Last seen (age)'''' sehen wir die letzte Kontaktaufnahme.<br>
| |
| Wenn da überhaupt etwas steht hatten wir Erfolg!
| |
| <br>
| |
| ----
| |
|
| |
| ==Sprachdateien für Zabbix 6.0 installieren==
| |
| Zabbix 6.0 braucht noch ein paar zusätzliche Sprachdateien, die installieren wir sonst ist das Webinterface voll mit Fehlermeldungen:<br>
| |
| apt install -y language-pack-en && locale-gen en_US.UTF-8 && update-locale
| |
| <br>
| |
| <br>
| |
| ----
| |
|
| |
| ==Webinterface installieren (nur Server)==
| |
| * Schon jetzt findet Ihr die Weboberfläche unter '''<nowiki>http://servername/zabbix</nowiki>''' (nach einem Neustart, aber mit falscher Zeitzone)
| |
| * Wenn es aber ein exklusiver Server für Zabbix ist möchte ich auf die Eingabe von /zabbix verzichten - das wird nachfolgend beschrieben.
| |
| * Ich installiere hier also so das man den Server später nur mit '''<nowiki>http://servername</nowiki>''' aufrufen kann
| |
| ===Konfigurationsdatei bearbeiten===
| |
| [[Datei:Button_Zabbix_SERVER.png]]<br>
| |
| nano /etc/apache2/sites-available/000-default.conf
| |
| und den gesamten Inhalt durch den folgenden ersetzen: ({{Key|F9}} löscht eine Zeile)<br>
| |
| <big><u>'''Ab Zabbix 6.0'''</u></big>
| |
| <source lang="XML">
| |
| <VirtualHost *:80>
| |
| ServerAdmin webmaster@localhost
| |
| DocumentRoot /usr/share/zabbix
| |
| ErrorLog ${APACHE_LOG_DIR}/error.log
| |
| CustomLog ${APACHE_LOG_DIR}/access.log combined
| |
|
| |
| <Directory "/usr/share/zabbix">
| |
| Options FollowSymLinks
| |
| AllowOverride None
| |
| Order allow,deny
| |
| Allow from all
| |
| <IfModule mod_php.c>
| |
| php_value max_execution_time 300
| |
| php_value memory_limit 128M
| |
| php_value post_max_size 16M
| |
| php_value upload_max_filesize 2M
| |
| php_value max_input_time 300
| |
| php_value max_input_vars 10000
| |
| php_value always_populate_raw_post_data -1
| |
| php_value date.timezone Europe/Berlin
| |
| </IfModule>
| |
| </Directory>
| |
| <Directory "/usr/share/zabbix/conf">
| |
| Order deny,allow
| |
| Deny from all
| |
| <files *.php>
| |
| Order deny,allow
| |
| Deny from all
| |
| </files>
| |
| </Directory>
| |
| <Directory "/usr/share/zabbix/app">
| |
| Order deny,allow
| |
| Deny from all
| |
| <files *.php>
| |
| Order deny,allow
| |
| Deny from all
| |
| </files>
| |
| </Directory>
| |
| <Directory "/usr/share/zabbix/include">
| |
| Order deny,allow
| |
| Deny from all
| |
| <files *.php>
| |
| Order deny,allow
| |
| Deny from all
| |
| </files>
| |
| </Directory>
| |
| <Directory "/usr/share/zabbix/local">
| |
| Order deny,allow
| |
| Deny from all
| |
| <files *.php>
| |
| Order deny,allow
| |
| Deny from all
| |
| </files>
| |
| </Directory>
| |
| <Directory "/usr/share/zabbix/vendor">
| |
| Order deny,allow
| |
| Deny from all
| |
| <files *.php>
| |
| Order deny,allow
| |
| Deny from all
| |
| </files>
| |
| </Directory>
| |
| </VirtualHost>
| |
| </source>
| |
| ----
| |
| Danach Webserver neu starten:
| |
| systemctl restart apache2.service
| |
| <br>
| |
| Nun auf die Weboberfläche gehen, die sollte unter '''<nowiki>http://IP-Adresse</nowiki>''' oder '''<nowiki>http://DNS-Name</nowiki>''' verfügbar sein.<br>
| |
| Anmerkung: So ein Linux trägt sich nicht von allein in den DNS Server ein, ggf. müsst Ihr den da von Hand nachtragen.<br>
| |
| <br>
| |
| <br>
| |
| ----
| |
|
| |
| ===Webinterface konfigurieren===
| |
| Ihr ruft den Zabbix-Server im Browser auf:<br>
| |
| :[[Datei:ClipCapIt-220721-154507.PNG]]<br>
| |
| <br>
| |
| Wenn Ihr den Inhalt der <code>000-default.conf</code> wie zuvor beschrieben geändert habt sollte hier alles grün sein:<br>
| |
| :[[Datei:ClipCapIt-220721-154541.PNG]]<br>
| |
| <br>
| |
| Die Datenbankkonfiguration, in die letzten 3 Felder muss überall "zabbix" stehen:<br>
| |
| :[[Datei:ClipCapIt-220721-154625.PNG]]<br>
| |
| <br>
| |
| In dem leeren Feld könnt Ihr den Namen des Servers angeben. Dieser wird oben rechts und auf den Web-Tabs angezeigt:<br>
| |
| :[[Datei:ClipCapIt-220721-154719.PNG]]<br>
| |
| <br>
| |
| Noch eben die Zusammenfassung bestätigen:<br>
| |
| :[[Datei:ClipCapIt-220721-154904.PNG]]<br>
| |
| <br>
| |
| Geschafft!<br>
| |
| :[[Datei:ClipCapIt-220721-154944.PNG]]<br>
| |
| <br>
| |
| :[[Datei:ClipCapIt-220721-155019.PNG]]<br>
| |
| Benutzername: Admin
| |
| Passwort: zabbix
| |
| {{Hinweis| '''Admin''' mit großem '''A'''!}}<br>
| |
| <br>
| |
| <br>
| |
| ----
| |
|
| |
| ==Zeitserver setzen==
| |
| <!--{{Hinweis| '''ntp''' soll man in zukünftigen Ubuntu Versionen nicht mehr verwenden. Zumindest unter 18.04. funktioniert der aber noch wunderbar}}<br>-->
| |
| Damit die Uhrzeit des Zabbix-Servers auch immer genau ist kann dieser die Uhrzeit mit dem Internet abgleichen.<br>
| |
| Dazu benötigten wir das Paket {{Key|ntp}}:<br>
| |
| apt install ntp -y
| |
| systemctl enable ntp.service
| |
| <br>
| |
| Wer die voreingestellten Zeitserver nutzen will muss nichts mehr tun.<br>
| |
| Wer eigene Zeitserver für die Abfrage nutzen will muss die Konfigurationsdatei bearbeiten:<br>
| |
| nano /etc/ntp.conf
| |
| # Specify one or more NTP servers.
| |
| server IP-oder-DNS iburst
| |
| Für jeden Server eine Zeile, die Poolserver solltet Ihr dann auskommentieren
| |
| und danach den Service neu starten:<br>
| |
| systemctl restart ntp.service
| |
| <br>
| |
| Die Synchronisation lässt sich per Befehl kontrollieren:<br>
| |
| ntpq -p
| |
| <u>'''Ausgabe:'''</u><br>
| |
| remote refid st t when poll reach delay offset jitter
| |
| ==============================================================================
| |
| beastie.deuza.n 195.83.222.27 2 u 24 64 1 0.501 9.552 0.000
| |
| ns1.kashra.com .PPS. 1 u 23 64 1 29.484 9.128 0.000
| |
| fr1.tomhek.net 163.172.41.83 3 u 22 64 1 0.685 12.810 0.000
| |
| ip139.ip-5-196- 10.21.137.1 2 u 21 64 1 0.581 8.332 0.000
| |
| golem.canonical 193.79.237.14 2 u 20 64 1 8.674 13.075 0.000
| |
| <br>
| |
| <br>
| |
| ----
| |
|
| |
| ==Empfang von SNMP-Traps einrichten==
| |
| {{Hinweis|Neue Methode! Statt '''''snmptt''''' wird ein Perl-Script von Zabbix.com verwendet. '''''snmptt''''' machte bei mir unter Ubuntu 22.04 jede menge Ärger<br>Die Lösung stammt in Teilen von https://sbcode.net/zabbix/snmp-traps/<br>}}
| |
| [[Datei:Button_Zabbix_SERVER.png]] und [[Datei:Button_Zabbix_PROXY.png]]<br>
| |
| ===fehlende Pakete nachinstallieren===
| |
| Wir Installieren ggf. die benötigten Pakete nach (sollten schon vorhanden sein):<br>
| |
| apt install -y snmp snmpd snmp-mibs-downloader snmptrapd libnet-snmp-perl libnet-ip-perl libnet-netmask-perl libnet-dns-perl libxml-writer-perl
| |
| <br>
| |
| <br>
| |
| ----
| |
|
| |
| ===snmptrapd aktivieren und konfigurieren===
| |
| snmpd deaktivieren:
| |
| systemctl stop snmpd.service && systemctl disable snmpd.service
| |
| snmptrapd reparieren:
| |
| nano /lib/systemd/system/snmptrapd.service
| |
| und ganz unten folgenden Text anhängen (sofern noch nicht vorhanden:)
| |
| [Install]
| |
| WantedBy=multi-user.target
| |
| snmptrapd aktivieren:
| |
| systemctl enable snmptrapd.service
| |
| snmptrapd konfigurieren:
| |
| nano /etc/snmp/snmptrapd.conf
| |
| und fügen die folgenden Zeilen ans Ende:<br>
| |
| perl do "/usr/bin/zabbix_trap_receiver.pl";
| |
| disableAuthorization yes
| |
| und starten den Dienst:<br>
| |
| systemctl restart snmptrapd.service
| |
| <!--
| |
| Wir bearbeiten die Datei
| |
| nano /etc/default/snmpd
| |
| und ändern die Zeile
| |
| SNMPDRUN=yes
| |
| in
| |
| SNMPDRUN=no
| |
| <br>
| |
| <br>
| |
| Dann die Datei
| |
| nano /etc/default/snmptrapd
| |
| und ändern die Zeile
| |
| TRAPDRUN=no
| |
| in
| |
| TRAPDRUN=yes
| |
| <br>
| |
| <br>
| |
| Nun Konfigurieren wir den Dienst noch:<br>
| |
| <br>
| |
| nano /etc/snmp/snmptrapd.conf
| |
| und fügen die folgenden Zeilen ans Ende:<br>
| |
| traphandle default /usr/sbin/snmptt
| |
| disableAuthorization yes
| |
| <br>
| |
| <br>
| |
| -->
| |
| ----
| |
|
| |
| ===zabbix_trap_receiver.pl einrichten===
| |
| Aktuelles Skript herunterladen - der Download ist von meiner Webseite, das original findet Ihr unter https://git.zabbix.com/projects/ZBX/repos/zabbix/raw/misc/snmptrap/zabbix_trap_receiver.pl<br>
| |
| Der direkte Download von dort funktioniert aber nicht:<br>
| |
| <nowiki>wget https://znil.net/images/zabbix_trap_receiver.pl -O /usr/bin/zabbix_trap_receiver.pl</nowiki>
| |
| und ausführbar machen
| |
| chmod a+x /usr/bin/zabbix_trap_receiver.pl
| |
| <br>
| |
| Für den Fall das der Download nicht zur Verfügung steht hier der Inhalt der Datei:
| |
| <source lang="perl">
| |
| #!/usr/bin/env perl
| |
|
| |
| #
| |
| # Zabbix
| |
| # Copyright (C) 2001-2023 Zabbix SIA
| |
| #
| |
| # This program is free software; you can redistribute it and/or modify
| |
| # it under the terms of the GNU General Public License as published by
| |
| # the Free Software Foundation; either version 2 of the License, or
| |
| # (at your option) any later version.
| |
| #
| |
| # This program is distributed in the hope that it will be useful,
| |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of
| |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
| |
| # GNU General Public License for more details.
| |
| #
| |
| # You should have received a copy of the GNU General Public License
| |
| # along with this program; if not, write to the Free Software
| |
| # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
| |
| #
| |
|
| |
| #########################################
| |
| #### ABOUT ZABBIX SNMP TRAP RECEIVER ####
| |
| #########################################
| |
|
| |
| # This is an embedded perl SNMP trapper receiver designed for sending data to the server.
| |
| # The receiver will pass the received SNMP traps to Zabbix server or proxy running on the
| |
| # same machine. Please configure the server/proxy accordingly.
| |
| #
| |
| # Read more about using embedded perl with Net-SNMP:
| |
| # http://net-snmp.sourceforge.net/wiki/index.php/Tut:Extending_snmpd_using_perl
| |
|
| |
| #################################################
| |
| #### ZABBIX SNMP TRAP RECEIVER CONFIGURATION ####
| |
| #################################################
| |
|
| |
| ### Option: SNMPTrapperFile
| |
| # Temporary file used for passing data to the server (or proxy). Must be the same
| |
| # as in the server (or proxy) configuration file.
| |
| #
| |
| # Mandatory: yes
| |
| # Default:
| |
| $SNMPTrapperFile = '/tmp/zabbix_traps.tmp';
| |
|
| |
| ### Option: DateTimeFormat
| |
| # The date time format in strftime() format. Please make sure to have a corresponding
| |
| # log time format for the SNMP trap items.
| |
| #
| |
| # Mandatory: yes
| |
| # Default:
| |
| $DateTimeFormat = '%H:%M:%S %Y/%m/%d';
| |
|
| |
| ###################################
| |
| #### ZABBIX SNMP TRAP RECEIVER ####
| |
| ###################################
| |
|
| |
| use Fcntl qw(O_WRONLY O_APPEND O_CREAT);
| |
| use POSIX qw(strftime);
| |
|
| |
| sub zabbix_receiver
| |
| {
| |
| my (%pdu_info) = %{$_[0]};
| |
| my (@varbinds) = @{$_[1]};
| |
|
| |
| # open the output file
| |
| unless (sysopen(OUTPUT_FILE, $SNMPTrapperFile, O_WRONLY|O_APPEND|O_CREAT, 0666))
| |
| {
| |
| print STDERR "Cannot open [$SNMPTrapperFile]: $!\n";
| |
| return NETSNMPTRAPD_HANDLER_FAIL;
| |
| }
| |
|
| |
| # get the host name
| |
| my $hostname = $pdu_info{'receivedfrom'} || 'unknown';
| |
| if ($hostname ne 'unknown')
| |
| {
| |
| $hostname =~ /\[(.*?)\].*/; # format: "UDP: [127.0.0.1]:41070->[127.0.0.1]"
| |
| $hostname = $1 || 'unknown';
| |
| }
| |
|
| |
| # print trap header
| |
| # timestamp must be placed at the beginning of the first line (can be omitted)
| |
| # the first line must include the header "ZBXTRAP [IP/DNS address] "
| |
| # * IP/DNS address is the used to find the corresponding SNMP trap items
| |
| # * this header will be cut during processing (will not appear in the item value)
| |
| printf OUTPUT_FILE "%s ZBXTRAP %s\n", strftime($DateTimeFormat, localtime), $hostname;
| |
|
| |
| # print the PDU info
| |
| print OUTPUT_FILE "PDU INFO:\n";
| |
| foreach my $key(keys(%pdu_info))
| |
| {
| |
| if ($pdu_info{$key} !~ /^[[:print:]]*$/)
| |
| {
| |
| my $OctetAsHex = unpack('H*', $pdu_info{$key}); # convert octet string to hex
| |
| $pdu_info{$key} = "0x$OctetAsHex"; # apply 0x prefix for consistency
| |
| }
| |
|
| |
| printf OUTPUT_FILE " %-30s %s\n", $key, $pdu_info{$key};
| |
| }
| |
|
| |
| # print the variable bindings:
| |
| print OUTPUT_FILE "VARBINDS:\n";
| |
| foreach my $x (@varbinds)
| |
| {
| |
| printf OUTPUT_FILE " %-30s type=%-2d value=%s\n", $x->[0], $x->[2], $x->[1];
| |
| }
| |
|
| |
| close (OUTPUT_FILE);
| |
|
| |
| return NETSNMPTRAPD_HANDLER_OK;
| |
| }
| |
|
| |
| NetSNMP::TrapReceiver::register("all", \&zabbix_receiver) or
| |
| die "failed to register Zabbix SNMP trap receiver\n";
| |
|
| |
| print STDOUT "Loaded Zabbix SNMP trap receiver\n";
| |
| </source>
| |
|
| |
| ----
| |
|
| |
| ===MIBS nutzen===
| |
| Die MIBS übersetzen die OID in lesbare Namen. Um diese zu nutzen:
| |
| nano /etc/snmp/snmp.conf
| |
| und dort aus
| |
| mibs :
| |
| ein
| |
| #mibs :
| |
| machen. Dann den dienst neu starten:<br>
| |
| systemctl restart snmptrapd.service
| |
| ----
| |
|
| |
| ===logrotate für /tmp/zabbix_traps.tmp erstellen===
| |
| Gerade wenn viele Einträge in der Datei
| |
| /tmp/zabbix_traps.tmp
| |
| landen kann das schon mal einigen Platz kosten.<br>
| |
| Deshalb nutzen wir '''''logrotate''''' an um die Größe der Datei zu begrenzen.<br>
| |
| nano /etc/logrotate.d/zabbix_traps
| |
| und folgenden Inhalt einfügen / anpassen:<br>
| |
| /tmp/zabbix_traps.tmp {
| |
| '''su snmptt Debian-snmp'''
| |
| '''create 666 snmptt Debian-snmp'''
| |
| missingok
| |
| notifempty
| |
| '''daily'''
| |
| rotate 4
| |
| '''size 1M'''
| |
| compress
| |
| sharedscripts
| |
| '''maxage 365'''
| |
| }
| |
| <br>
| |
| <br>
| |
| ----
| |
|
| |
| ===Zabbix Server oder Proxy konfigurieren===
| |
| Die Konfigurationsdatei zum bearbeiten öffnen:
| |
| nano /etc/zabbix/zabbix_server.conf
| |
| oder
| |
| nano /etc/zabbix/zabbix_proxy.conf
| |
| und folgende Zeilen suchen und ändern bzw. Kommentarzeichen davor entfernen:<br>
| |
| SNMPTrapperFile=/tmp/zabbix_traps.tmp
| |
| StartSNMPTrapper=1
| |
| <br>
| |
| Danach müssen wir den Zabbix Server oder Proxy Dienst neu starten:<br>
| |
| systemctl restart zabbix-server.service
| |
| oder
| |
| systemctl restart zabbix-proxy.service
| |
| <br>
| |
| <br>
| |
| ----
| |
|
| |
| ===Trapper-Datei anlegen / Testen===
| |
| Die Datei <code>/tmp/zabbix_traps.tmp</code> gibt es noch nicht.<br>
| |
| Die wird aber ggf. erst beim ersten eintreffenden Trap erstellt. Deshalb:<br>
| |
| snmptrap -v 1 -c public localhost 1.3.6.1.4.1.2.3 "" 6 3 0000 s s "Zabbix-SNMP-Traps"
| |
| Damit senden wir einen Test-Trap an uns selbst.<br>
| |
| Nun sollte es die Datei geben:<br>
| |
| ls -l /tmp/zabbix_traps.tmp
| |
| Ausgabe:
| |
| -rw-r--r-- 1 root root 158 Sep 6 09:55 /tmp/zabbix_traps.tmp
| |
| Der Inhalt sollte wie folgt sein:
| |
| cat /tmp/zabbix_traps.tmp
| |
|
| |
| 12:03:21 2023/03/20 ZBXTRAP 127.0.0.1
| |
| PDU INFO:
| |
| community public
| |
| requestid 0
| |
| transactionid 1
| |
| receivedfrom UDP: [127.0.0.1]:48627->[127.0.0.1]:162
| |
| errorindex 0
| |
| notificationtype TRAP
| |
| version 0
| |
| errorstatus 0
| |
| messageid 0
| |
| VARBINDS:
| |
| DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (0) 0:00:00.00
| |
| SNMPv2-MIB::snmpTrapOID.0 type=6 value=OID: SNMPv2-SMI::enterprises.2.3.0.3
| |
| SNMPv2-SMI::snmpV2 type=4 value=STRING: "Zabbix-SNMP-Traps"
| |
| SNMP-COMMUNITY-MIB::snmpTrapAddress.0 type=64 value=IpAddress: 10.88.1.88
| |
| SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 type=4 value=STRING: "public"
| |
| SNMPv2-MIB::snmpTrapEnterprise.0 type=6 value=OID: SNMPv2-SMI::enterprises.2.3
| |
| Nach einem Reboot ist Datei weg bis der erste Trap eintrifft - was Zabbix aber nicht zu stören scheint.<br>
| |
| ----
| |
| <!--==VMware Tools installieren==
| |
| Wenn euer Zabbix-Server auch eine virtuelle Maschine ist installiert Ubuntu 16.04.x automatische die Open-VM-Tools.<br>
| |
| <br>
| |
| {{Hinweis| Die '''Open-VM-Tools''' sind bereits installiert! Nachfolgendes müsst Ihr nur ausführen wenn es denn unbedingt die Original VMware-Tools sein müssen!}}<br>
| |
| Wollt Ihr - Warum auch immer - die VMware-Tools von vSphere installieren so geht wie folgt vor:
| |
| * Open-VM-Tools deinstallieren:<br>
| |
| apt remove open-vm-tools
| |
| apt purge open-vm-tools
| |
| * VMware Tools installieren im vSphere Client auswählen
| |
| * CD Mounten:
| |
| mkdir /mnt/cdrom
| |
| mount /dev/cdrom /mnt/cdrom
| |
| * Entpacken (Versionsnnummer eurer Tools anpassen)
| |
| tar xzvf /mnt/cdrom/VMwareTools-10.0.0-3000743.tar.gz -C /tmp/
| |
| * Installieren
| |
| cd /tmp/vmware-tools-distrib/
| |
| ./vmware-install.pl -d
| |
| * Schalter -d heisst er gleich durchrauscht ohne nachzufragen und die Standard-Verzeichnisse nimmt.
| |
| * Falls er hier mit den Hinweis auf die Open-VM-Tools abbricht:
| |
| ./vmware-install.pl
| |
| :und von Hand weiter machen. Alle Fragen ggf. einfach nur mit {{key|Enter}} bzw, {{key|Return}} bestätigen.<br>
| |
| * netter weise wirft er die CD auch gleich wieder raus
| |
| * Fertig!
| |
| <br>
| |
| <br>
| |
| ----
| |
| -->
| |
|
| |
| ==Agent konfigurieren (nur Proxy)==
| |
| Wir wollen natürlich unseren ''''Zabbix Proxy'''' gleich mit überwachen!<br>
| |
| Wenn es ein Server ist, ist dieser gleich automatisch mit drin (ist der erste Host der schon in der Liste steht, ist sogar schon aktiv!)
| |
| Bearbeiten wir zunächst die Konfigurationsdatei:<br>
| |
| nano /etc/zabbix/zabbix_agent2.conf
| |
| und ändert folgende Zeile:<br>
| |
| Hostname=zabbixproxy.domain.local
| |
| Den Namen passt Ihr natürlich an eure Bedürfnisse an - wichtig ist nur das Ihr den Host auf dem Zabbix-Server unter exakt dem gleichen Namen anlegt!<br>
| |
| {{Hinweis| Ihr wollt die zabbix_agent<big>'''d'''</big>.conf ändern, NICHT die zabbix_agent.conf - man beachte den feinen Unterschied!}}<br>
| |
| <br>
| |
| Das Start-Skript haben wir vorhin schon aktiviert.
| |
| <br>
| |
| Am besten bootet Ihr euren Zabbix Proxy nun einmal durch und prüft hinterher ob die Prozesse für den Agenten und den Server laufen.<br>
| |
| ----
| |
|
| |
| ==Windows-Freigabe für Agenten-Dateien einrichten==
| |
| In meinen früheren Anleitungen wurde in diesem Abschnitt beschrieben wie man eine Samba-Freigabe erstellt in welcher der Zabbix-Agent abgelegt wird.<br>
| |
| Das mache ich in der Praxis nicht mehr - neuere Windows-Versionen finden es unvorstellbar das man auf eine Freigabe ohne Passwort zugreifen möchte.<br>
| |
| Man könnte den Zabbix-Server zwar dazu zum Mitglied in der Domäne machen ... aber inzwischen erstelle ich einfach eine passende Freigabe auf einen der Windows-Server, in der Regel einer der Domänencontroller.<br>
| |
| Das Installationspaket hat nur ein paar MByte, da findet sich ein Plätzchen.<br>
| |
| ----
| |
| <!--
| |
| ===Vorwort===
| |
| Die Dateien für die Verteilung des Agenten lege ich regelmäßig auf dem Zabbix-Server bzw. Zabbix-Proxy ab.<br>
| |
| Ja, ich richte hier eine "Jeder Vollzugriff" - Freigabe ein - meinen '''''AgentAutoUpdate''''' lasse ich am liebsten mit '''SYSTEM''' Rechten laufen (wegen UAC-Kontrolle) - und so gibt es kein Problem mit den Zugriffsberechtigungen.<br>
| |
| Wenn Bedenken bestehen (zu recht) kann die Freigabe auch auf "readonly" gesetzt werden. Dann kann das Installationsskript aber auch kein Log dorthin schreiben.<br>
| |
| Die einfachste Lösung aus meiner Sicht ist:<br>
| |
| * Zunächst wie hier beschrieben mit Vollzugriff enrichten
| |
| * Von einem Windows-Rechner aus kann auf die Freigabe zugegriffen und die notwendigen Dateien dorthin kopiert werden
| |
| * Wenn nach Tests alles läuft können die Rechte im Ordner per <code>chmod</code> auf "Nur Lesen" gesetzt werden, "Schreiben" dann nur noch für den Log-Ordner so fern vorhanden.<br>
| |
| <br>
| |
| ----
| |
| ===Voraussetzungen===
| |
| Wenn die Installation nachträglich erfolgt - erst einmal Updaten!
| |
| apt update
| |
| apt upgrade
| |
| <br>
| |
| Nun installieren wir Samba - damit erstellt man Windows-Freigaben unter Linux:<br>
| |
| apt install samba samba-common-bin
| |
| das dauert einen Moment - und danach können wir Samba konfigurieren.
| |
| <br>
| |
| Konfiguration erfolgt über ein zentrale Datei:<br>
| |
| nano /etc/samba/smb.conf
| |
| In dieser ändern wie folgende Zeilen (wie immer: mit {{Key|STRG}} + {{Key|W}} kann man in '''''nano''''' suchen)<br>
| |
| workgroup = ZNIL ; NetBIOS Domänenname in euerer Umgebung, könnt Ihr auch auf WORKGROUP lassen
| |
| wins support = no
| |
| wins server = 192.168.1.1 ; Falls es einen WINS-Server bei euch im Netzwerk gibt, geben wir diesen hier an
| |
| Jetzt geht es mit der eigentlichen Freigabe weiter:<br>
| |
| <br>
| |
| ----
| |
| ===='''Einrichtung Freigabe (simple Version)'''====
| |
| Bei der "simplen Version" wird einfach eine Freigabe erstellt auf die jeder Vollzugriff hat. Die Installationsdateien für den Agenten könnt Ihr von jedem Windows Rechner aus einfach in der Freigabe ablegen.<br>
| |
| Logdateien können ebenfalls einfach hinein geschrieben werden.<br>
| |
| Die Nachteile könnten sein:<br>
| |
| * Jeder(!) kann die Dateien manipulieren
| |
| * Ein Trojaner könne die .exe Dateien in der Freigabe befallen und würde (Falls das automatische Update eingesetzt wird) ggf. auf jedem überwachten System verteilt werden
| |
| * ...
| |
| <br>
| |
| Wir bearbeiten weiter die
| |
| nano /etc/samba/smb.conf
| |
| ganz am Schluss fügen wir folgende Zeilen hinzu:<br>
| |
| [agent]
| |
| comment = Zabbix Agents
| |
| path = /share/zabbix/agent
| |
| guest ok = yes
| |
| read only = no
| |
|
| |
| dann speichern und verlassen.<br>
| |
| Nun müssen wir den Ordner noch anlegen:<br>
| |
| mkdir -p /share/zabbix/agent
| |
| chmod 777 /share/zabbix/agent
| |
| und den Dienst von Samba neu starten:<br>
| |
| systemctl restart smbd
| |
| <br>
| |
| Ab jetzt können wir über
| |
| \\IP-Adresse-Zabbix-Proxy\agent
| |
| von Windows aus auf die Freigabe zugreifen und die Dateien dort ablegen.<br>
| |
| {{Hinweis| Wenn Ihr statt der IP-Adresse einen Namen verwenden wollt müsst Ihr diesen Namen auf euren DNS Server anlegen}}<br>
| |
| <br>
| |
| ----
| |
|
| |
| ===='''Einrichtung Freigabe (sichere Version)'''====
| |
| Bei der "sicheren Version" wird die gleiche Freigabe erstellt auf die jeder nur lesenden Zugriff hat. Das Setup des Agenten kann so weiterhin von jedem Rechner aus aufgerufen werden.<br>
| |
| Für die Logdateien wir deine separate Freigabe erstellt in die jeder Schreiben kann.<br>
| |
| Der Ordner mit den Installationsdateien wird 2x Freigegeben, die zweite Freigabe ist versteckt und mit Benutzername und Passwort geschützt. Der Admin kann so weiterhin die Dateien bequem aktualisieren.<br>
| |
| <br>
| |
| Wir bearbeiten weiter die
| |
| nano /etc/samba/smb.conf
| |
| ganz am Schluss fügen wir folgende Zeilen hinzu:<br>
| |
| [agent]
| |
| comment = Zabbix Agents
| |
| path = /share/zabbix/agent
| |
| guest ok = yes
| |
| read only = yes
| |
|
| |
| [agent$]
| |
| comment = Zabbix Agents Management
| |
| path = /share/zabbix/agent
| |
| guest ok = no
| |
| read only = no
| |
| valid users = agent
| |
| browsable = no
| |
|
| |
| [logging]
| |
| comment = Logging of agent installations
| |
| path = /share/zabbix/logging
| |
| guest ok = yes
| |
| read only = no
| |
|
| |
| dann speichern und verlassen.<br>
| |
| Nun müssen wir die Ordner noch anlegen:<br>
| |
| mkdir -p /share/zabbix/agent
| |
| mkdir -p /share/zabbix/logging
| |
| chmod 777 /share/zabbix/agent
| |
| chmod 777 /share/zabbix/logging
| |
| Jetzt müssen wir noch den Benutzer für den Zugriff auf <code>agent$</code> anlegen.<br>
| |
| Den Namen des Benutzer haben wir oben schon mit '''agent''' festegelegt, in der Zeile mit <code>valid users = agent</code>
| |
| Angelegt wird dieser wie folgt:<br>
| |
| useradd -M -s /sbin/nologin '''agent'''
| |
| passwd '''agent'''
| |
| und das gewünschte Passwort 2x eingeben.<br>
| |
| Jetzt noch der Samba Teil:
| |
| smbpasswd -a agent
| |
| smbpasswd -e agent
| |
| Da musstet Ihr das gleiche Passwort noch einmal zweimal eingeben.<br>
| |
| Jetzt den Dienst von Samba neu starten:<br>
| |
| systemctl restart smbd
| |
| <br>
| |
| Ab jetzt können wir über
| |
| \\IP-Adresse-Zabbix-Proxy\agent
| |
| von Windows aus auf die Freigabe zugreifen.<br>
| |
| Ruft Ihr statt dessen
| |
| \\IP-Adresse-Zabbix-Proxy\agent'''$'''
| |
| auf sollte sich ein Fenster mit der Abfrage nach Benutzername und Passwort öffnen. Gebt die zuvor festgelegten Daten ein (Benutzer '''agent''' und euer festgelegtes Passwort) und ihr kommt wiederum auf die gleiche Freigabe.<br>
| |
| Nur habt Ihr in dieser nun auch Schreibrechte und könnt die Dateien ablegen.<br>
| |
| Auf<br>
| |
| \\IP-Adresse-Zabbix-Proxy\logging
| |
| hat jeder Schreibrechte, hier sollten aber ja nur Textdateien landen.<br>
| |
| {{Hinweis| Wenn Ihr statt der IP-Adresse einen Namen verwenden wollt müsst Ihr diesen Namen auf euren DNS Server anlegen}}<br>
| |
| {{Hinweis| Genaueres zum Schutz der Verzeichnisse mit Benutzername und Passwort (Standalone Samba Server, nicht in der Domäne) findet Ihr hier: https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Standalone_Server#Creating_a_Local_User_Account}}<br>
| |
| <br>
| |
| ----
| |
|
| |
| ===Probleme beim Zugriff auf die Freigabe - Windows 10 / Windows Server 2016===
| |
| Die Freigabe <code>\\IP-Adresse-Zabbix-Proxy\agent</code> erlaubt nun eigentlich den Zugriff ohne Benutzername und Passwort.<br>
| |
| Als erstes testet ob Ihr weiter kommt wenn Ihr beim Benutzernamen einfach einen Buchstaben eingebt und das Passwort leer lasst. Wenn nicht:<br>
| |
| Windows 10 kann sich einfach nicht mehr einen Zugriff ohne Anmeldung vorstellen und will unbedingt ein Passwort nutzen.<br>
| |
| Dazu [https://support.microsoft.com/de-ch/help/4046019/guest-access-smb2-disabled-by-default-in-windows-10-server-2016 hier der Microsoft-Artikel]<br>
| |
| <br>
| |
| <u>'''Lösung 1:'''</u><br>
| |
| Ihr legt einen extra Benutzer für den Zugriff an, in diesem Beispiel heißt der Benutzer '''''installagent''''':
| |
| useradd -M -s /sbin/nologin '''installagent'''
| |
| passwd '''installagent'''
| |
| smbpasswd -a '''installagent'''
| |
| smbpasswd -e '''installagent'''
| |
| Das Passwort dann nach Wahl. Gerne auch das gleiche wie der Benutzername '''installagent''' falls Ihr oben schon den Benutzer '''agent''' angelegt habt. Denn der kann trotzdem nur lesen auf die Freigabe des Agenten zugreifen.<br>
| |
| <br>
| |
| <br>
| |
| <u>'''Lösung 2:'''</u><br>
| |
| Ihr richtet die Gruppenrichtlinie entsprechend des obigen Microsoft-Artikel ein.<br>
| |
| Lokal geht das mit<br>
| |
| gpedit.msc
| |
| und ändert die folgende Richtlinie:<br>
| |
| Computerkonfiguration => Administrative Vorlagen => Netzwerk => LanMan-Arbeitsstation => Unsichere Gastanmeldungen aktivieren
| |
| :[[Datei:ClipCapIt-180201-104636.PNG]]<br>
| |
| Die Passwortabfrage poppt dann immer noch auf - aber einfach einen beliebigen Buchstaben als Benutzernamen angeben, Passwort leer lassen und es klappt.<br>
| |
| Skripte können dann wieder ohne Abfrage direkt auf die Freigabe zugreifen.<br>
| |
| <br>
| |
| ----
| |
| -->
| |
| <!--
| |
| ===Proxy/Server mit in Windows-Domäne aufnehmen===
| |
| In manchen Domänen hatte ich nun das "Problem" das immer ein Fenster mit Benutzername / Passwort aufgeht - es ist dabei völlig egal was man eintippt, man kommt an die Freigabe.
| |
| War aber nervig.<br>
| |
| <u>'''Lösung:'''</u> Wir nehmen den ZabbixProxy mit in die Domäne auf und Ruhe ist!<br>
| |
| {{Hinweis| Ich hatte es jetzt bei einem Kunden da war es genau umgekehrt! Macht diesen Tipp nur wenn ihr das beschriebene Problem habt!}}<br>
| |
| Also noch mal<br>
| |
| nano /etc/samba/smb.conf
| |
| und dann wie folgt ändern:<br>
| |
| security = domain
| |
| workgroup = ZNIL
| |
| Workgroup MUSS dabei euren NetBIOS Domänen-Namen entsprechen.<br>
| |
| Dann Speichern und die Dienste neu starten:<br>
| |
| service smbd restart && service nmbd restart
| |
| und mit folgendem Befehl der Domäne beitreten:<br>
| |
| net rpc join -S <Domänencontroller> -U Administrator
| |
| '''''<Domänencontroller>''''' ersetzt ihr dabei durch den Namen eures primärem Dömencontroller, also dem Rolleninhaber<br>
| |
| Er fragt dann nach dem Kennwort und ist dann Domänenmitglied - was Ihr gerne im AD kontrollieren könnt (landet unter '''''Computers''''')<br>
| |
| Ab nun "rauscht" der Zugriff auf die Freigabe immer durch.<br>
| |
| <br>
| |
| <br>
| |
| <br>
| |
| ----
| |
| -->
| |
|
| |
| ==Zabbix 6.0 Reporting-Services installieren / aktivieren==
| |
| Installiert sollte es schon sein, falls nicht:
| |
| apt install zabbix-web-service
| |
| Dann aktivieren und starten:
| |
| systemctl enable zabbix-web-service.service
| |
| systemctl start zabbix-web-service.service
| |
| Der Dienst lauscht per Default auf Port 10053 was in der <code>/etc/zabbix/zabbix_web_service.conf</code> konfiguriert wird.<br>
| |
| Anfragen nimmt er nur von lokal entgegen (127.0.0.1 / ::1)<br>
| |
| Nun den Dienst auch noch im Zabbix-Server bekannt machen:<br>
| |
| nano /etc/zabbix/zabbix_server.conf
| |
| und die folgenden Zeilen ändern:<br>
| |
| StartReportWriters=3
| |
| WebServiceURL=<nowiki>http://localhost:10053/report</nowiki>
| |
| Im Anschluß Zabbix einmal neu starten:<br>
| |
| systemctl restart zabbix-server.service
| |
| <br>
| |
| Im Webinterface müsst ihr nun einmal hinterlegen wir die Reporting-Services das Zabbix-Frontend erreichen können:<br>
| |
| Unter {{Key|Administration}} . {{Key|General}} - {{Key|Other}} bei '''''Frontend URL''''' folgendes setzen:
| |
| http://localhost/
| |
| <br>
| |
| Jetzt muss noch Google-Chromium installiert werden, den braucht der Dienst zum erstellen der PDFs. Da wir keine GUI auf dem Zabbix-Server haben laden wir den Browser einfach direkt als Paket herunter und installieren diesen:<br>
| |
| wget <nowiki>https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb</nowiki>
| |
| dpkg -i google-chrome-stable_current_amd64.deb
| |
| apt install -f
| |
| dpkg --configure -a
| |
| Ja, das ist etwas umständlich, wir installieren Chrome, er meckert über fehlende Abhängigkeiten, die beheben wir dann und lassen das Konfigurieren noch mal laufen.<br>
| |
| Dafür ist der dann installiert ohne das wir eine grafische Oberfläche auf dem Server installieren mussten.<br>
| |
| <br>
| |
| ----
| |
|
| |
| ==Datensicherung des Zabbix-Servers==
| |
| Bevorzugt installiere ich Zabbix-Server als Virtuelle Maschinen / VM.<br>
| |
| Die Backup-Software sichert am besten einfach die gesamte VM.<br>
| |
| Eigentlich macht quasi jede Backup-Software hierzu während der Sicherung einen Snapshot, sichert die Festplattendaten und löst dann den Snapshot wieder auf.<br>
| |
| Wer dabei sicher gehen will das die Datenbank in einem konsistenten Zustand gesichert wird kann folgendes tun:<br>
| |
| ----
| |
| ===Methode 1: Cold Backup - Zabbix und Datenbank anhalten===
| |
| Bei dieser Methode passiert folgendes:
| |
| * Die Zabbix-Server und die Datenbank werden vor einem Snapshot angehalten
| |
| * Der Snapshot wird erstellt
| |
| * Die Datenbank und der Zabbix-Server werden wieder gestartet
| |
| <br>
| |
| Unter VMware funktioniert das mit 2 Skripten die wir wie folgt anlegen:<br>
| |
| nano /usr/sbin/pre-freeze-script
| |
| mit folgendem Inhalt:<br>
| |
| <source lang="bash">
| |
| #!/bin/sh
| |
| echo "$(date) pre-freeze start" >> /tmp/snapshot.log
| |
| systemctl stop zabbix-server.service
| |
| systemctl stop mysql.service
| |
| echo "$(date) pre-freeze stop" >> /tmp/snapshot.log
| |
| </source>
| |
| <br>
| |
| und<br>
| |
| nano /usr/sbin/post-thaw-script
| |
| <source lang="bash">
| |
| #!/bin/sh
| |
| echo "$(date) post-thaw start" >> /tmp/snapshot.log
| |
| systemctl start mysql.service
| |
| systemctl start zabbix-server.service
| |
| echo "$(date) post-thaw stop" >> /tmp/snapshot.log
| |
| </source>
| |
| <br>
| |
| Jetzt müssen wir die beiden Skripte noch ausführbar machen und dem root zuordnen:<br>
| |
| chmod 0700 /usr/sbin/pre-freeze-script
| |
| chmod 0700 /usr/sbin/post-thaw-script
| |
| chown root:root /usr/sbin/pre-freeze-script
| |
| chown root:root /usr/sbin/post-thaw-script
| |
| <br>
| |
| Voraussetzung ist das die VMware-Tools installiert sind!<br>
| |
| Dabei ist es egal ob es sich um die Original VMware-Tools oder um die Open-VM-Tools aus den Repositories handelt.<br>
| |
| Nun können wir die Skripts testen indem wir einen Snapshot mit den folgenden Einstellungen erstellen:<br>
| |
| :[[Datei:ClipCapIt-200521-204401.PNG]]<br>
| |
| <br>
| |
| Wenn wir uns die Logs ansehen sollte
| |
| * Ein Eintrag in die Datei {{Key|/tmp/snapshot.log}} vorgenommen
| |
| * Der Zabbix-Server gestoppt
| |
| * Der MySQL-Server gestoppt
| |
| * Wieder ein Eintrag in die Datei {{Key|/tmp/snapshot.log}} geschrieben
| |
| * Der MySQL-Server wieder gestartet
| |
| * Der Zabbix-Server wieder gestartet
| |
| werden.<br>
| |
| <br>
| |
| {{Hinweis| Das ganze funktioniert sowohl mit den original VMware-Tools als auch den Open-VM-Tools!}}<br>
| |
| <br>
| |
| <br>
| |
| ----
| |
|
| |
| ===Methode 2: Hot Backup - Datenbank einfrieren===
| |
| Bei dieser Methode passiert folgendes:
| |
| * Die Datenbank wird vor einem Snapshot auf "READ ONLY" gesetzt - zuvor werden noch alle Daten geschrieben ("FLUSH TABLES")
| |
| * Der Snapshot wird erstellt
| |
| * Die Datenbank wird wieder für Schreibzugriffe freigegeben
| |
| <br>
| |
| Unter VMware funktioniert das mit 2 Skripten die wir wie folgt anlegen:<br>
| |
| nano /usr/sbin/pre-freeze-script
| |
| mit folgendem Inhalt:<br>
| |
| {{Warnung|Vergesst nicht das Passwort in Zeile 9 zu setzen (steht auf Leer was per Default passen sollte)}}
| |
| <source lang="bash">
| |
| #!/bin/sh
| |
| # 2018-04-20 Bernhard Linz
| |
| # Original script by Pascal Di Marco, check https://www.veeam.com/wp-consistent-protection-mysql-mariadb.html for more information
| |
| # Log will be write to syslog and(!) to /tmp/snapshot.log
| |
| echo "$0 pre-freeze start" | logger
| |
| echo "-------------------------------------------------------------------------------------" >> /tmp/snapshot.log
| |
| echo "$0 $(date '+%Y-%m-%d %H:%M:%S') pre-freeze start" >> /tmp/snapshot.log
| |
| # Set Username and Passwort for MySQL Access. Set mysql_password="" if no password needed
| |
| mysql_username="root"
| |
| mysql_password=""
| |
| timeout=300
| |
|
| |
| # ************************************************************************************************
| |
| # No Changes behind this line!
| |
| # ************************************************************************************************
| |
| # Check if username + password is used
| |
| if [ -n "$mysql_password" ]; then
| |
| use_credentials="-u$mysql_username -p$mysql_password"
| |
| else
| |
| use_credentials=""
| |
| fi
| |
|
| |
| # Name of the Lockfile
| |
| lock_file=/tmp/mysql_tables_read_lock
| |
|
| |
| sleep_time=$((timeout+10))
| |
| rm -f $lock_file
| |
| echo "$0 executing FLUSH TABLES WITH READ LOCK" | logger
| |
| echo "$0 $(date '+%Y-%m-%d %H:%M:%S') executing FLUSH TABLES WITH READ LOCK" >> /tmp/snapshot.log
| |
|
| |
| # Start READ LOCK - Process will send to background (and will still run after script is completed. Lock will stop if process is stopped
| |
| # After READ ONLY mode is entered the lockfile will be created. Process will stop when getting stop signal from post-thaw-script or timeout reached
| |
| mysql $use_credentials -e "FLUSH TABLES WITH READ LOCK; system touch $lock_file; system nohup sleep $sleep_time; system echo lock released|logger; " > /dev/null &
| |
| # get the PID of the mysql process
| |
| mysql_pid=$!
| |
|
| |
| echo "$0 child pid $mysql_pid" | logger
| |
| echo "$0 $(date '+%Y-%m-%d %H:%M:%S') child pid $mysql_pid" >> /tmp/snapshot.log
| |
|
| |
| # Waiting for the lockfile ...
| |
| c=0
| |
| while [ ! -f $lock_file ]
| |
| do
| |
| # check if mysql is running
| |
| if ! ps -p $mysql_pid 1>/dev/null ; then
| |
| echo "$0 mysql command has failed (bad credentials?)" | logger
| |
| echo "$0 $(date '+%Y-%m-%d %H:%M:%S') mysql command has failed (bad credentials?)" >> /tmp/snapshot.log
| |
| exit 1
| |
| fi
| |
| sleep 1
| |
| c=$((c+1))
| |
| # check if the script run into timeout
| |
| if [ $c -gt $timeout ]; then
| |
| echo "$0 timed out waiting for lock" | logger
| |
| echo "$0 $(date '+%Y-%m-%d %H:%M:%S') timed out waiting for lock" >> /tmp/snapshot.log
| |
| touch $lock_file
| |
| kill $mysql_pid
| |
| fi
| |
| done
| |
| # write PID into the lockfile
| |
| echo $mysql_pid > $lock_file
| |
|
| |
| echo "$0 pre-freeze stop" | logger
| |
| echo "$0 $(date '+%Y-%m-%d %H:%M:%S') pre-freeze stop" >> /tmp/snapshot.log
| |
|
| |
| exit 0
| |
| </source>
| |
| <br>
| |
| und<br>
| |
| nano /usr/sbin/post-thaw-script
| |
| <source lang="bash">
| |
| #!/bin/sh
| |
| # 2018-04-20 Bernhard Linz
| |
| # Original script by Pascal Di Marco, check https://www.veeam.com/wp-consistent-protection-mysql-mariadb.html for more information
| |
| # Log will be write to syslog and(!) to /tmp/snapshot.log
| |
| echo "$0 post-thaw start" | logger
| |
| echo "$0 $(date '+%Y-%m-%d %H:%M:%S') post-thaw start" >> /tmp/snapshot.log
| |
|
| |
| lock_file=/tmp/mysql_tables_read_lock
| |
|
| |
| # get PID from lockfile
| |
| mysql_pid=$(cat $lock_file)
| |
| echo "$0 sending sigterm to $mysql_pid" | logger
| |
| echo "$0 $(date '+%Y-%m-%d %H:%M:%S') sending sigterm to $mysql_pid" >> /tmp/snapshot.log
| |
| # and send stop to process
| |
| pkill -9 -P $mysql_pid
| |
| rm -f $lock_file
| |
|
| |
| echo "$0 post-thaw stop" | logger
| |
| echo "$0 $(date '+%Y-%m-%d %H:%M:%S') post-thaw stop" >> /tmp/snapshot.log
| |
|
| |
| exit 0
| |
| </source>
| |
| <br>
| |
| Jetzt müssen wir die beiden Skripte noch ausführbar machen und dem root zuordnen:<br>
| |
| chmod 0700 /usr/sbin/pre-freeze-script
| |
| chmod 0700 /usr/sbin/post-thaw-script
| |
| chown root:root /usr/sbin/pre-freeze-script
| |
| chown root:root /usr/sbin/post-thaw-script
| |
| <br>
| |
| Voraussetzung ist das die VMware-Tools installiert sind!<br>
| |
| Dabei ist es egal ob es sich um die Original VMware-Tools oder um die Open-VM-Tools aus den Repositories handelt.<br>
| |
| Nun können wir die Skripts testen indem wir einen Snapshot mit den folgenden Einstellungen erstellen:<br>
| |
| :[[Datei:ClipCapIt-200521-204401.PNG]]<br>
| |
| <br>
| |
| Beispielausgabe aus der
| |
| cat /tmp/snapshot.log
| |
|
| |
| -------------------------------------------------------------------------------------
| |
| /usr/sbin/pre-freeze-script 2023-03-20 12:49:14 pre-freeze start
| |
| /usr/sbin/pre-freeze-script 2023-03-20 12:49:14 executing FLUSH TABLES WITH READ LOCK
| |
| /usr/sbin/pre-freeze-script 2023-03-20 12:49:14 child pid 11824
| |
| /usr/sbin/pre-freeze-script 2023-03-20 12:49:15 pre-freeze stop
| |
| /usr/sbin/post-thaw-script 2023-03-20 12:49:18 post-thaw start
| |
| /usr/sbin/post-thaw-script 2023-03-20 12:49:18 sending sigterm to 11824
| |
| /usr/sbin/post-thaw-script 2023-03-20 12:49:18 post-thaw stop
| |
| <br>
| |
| Falls es mit dem Passwort mal hakt so müsste das auch dort stehen:
| |
| /usr/sbin/pre-freeze-script 2018-06-13 12:01:04 mysql command has failed (bad credentials?)
| |
| Mehr Details stehen ggf. im '''''syslog'''''
| |
| tail -f -n 500 /var/log/syslog
| |
| Zabbix selbst nimmt den Vorgang relativ locker und meldet maximal einige '''''slow query''''' bei '''''inserts'''''.<br>
| |
| In den meisten Umgebungen geht das so schnell das nicht einmal diese kommen (4 bis 5 Sekunden).<br>
| |
| {{Hinweis| Das ganze funktioniert sowohl mit den original VMware-Tools als auch den Open-VM-Tools!}}<br>
| |
| <br>
| |
| <br>
| |
| ----
| |
|
| |
| ==Festplatte im laufenden Betrieb vergrößern==
| |
| Ihr habt den Zabbix-Server nach dieser Anleitung hier als VM installiert (und ohne LVM) und nun geht euch der Platz aus?<br>
| |
| Kein Problem, Ihr könnt die Festplatte im laufenden Betrieb vergößern!<br>
| |
| ===Schritt 1: Platz an die Festplatte anhängen===
| |
| * Stellt sicher das auf der VM zur zeit kein Snapshot aktiv ist!
| |
| * Vergrößert die Festplatten um den benötigten Speicherplatz
| |
| in dem Beispiel hier wird der Platz von 50 auf 80GB vergrößert.<br>
| |
| ===Schritt 2: Betriebssystem die neue Größe erkennen lassen===
| |
| <big>'''Die einfachste und sicherste Methode ist den Server neu zu starten.'''</big><br>
| |
| Wer will kann es aber auch im laufenden Betrieb durchführen, und das geht so:<br>
| |
| Wählt bitte eine der beiden Methoden, im Moment empfehle ich Methode 2!<br>
| |
| ----
| |
| <u>'''Methode 1: (Führt neuerdings zu Problemen)'''</u><br>
| |
| apt install scsitools -y
| |
| rescan-scsi-bus --forcerescan
| |
| Da kommen dann reichlich Meldungen.<br>
| |
| {{Warnung| Ich hatte nun schon zweimal das die VM danach hing, Ubuntu schrieb bei allen Befehlen "nicht gefunden", nach einem Reste ging es wieder. Vorher hatte es aber schon duzende Male ohne Probleme geklappt. Ich suche nach einer Lösung}}<br>
| |
| <br>
| |
| ----
| |
| <u>'''Methode 2: (Umständlicher, aber scheinbar sicherer)'''</u><br>
| |
| Wir müssen die Festplattenkontroller-Adapternummer ermitteln:
| |
| grep mpt /sys/class/scsi_host/host*/proc_name
| |
| Beispielausgabe:
| |
| /sys/class/scsi_host/'''host32'''/proc_name:mptspi
| |
| Die Nummer ist in diesem Fall <code>host32</code>! Die brauchen wir für den nächsten Befehl:<br>
| |
| find /sys -name rescan | grep host32
| |
| Beispielausgabe:
| |
| /sys/devices/pci0000:00/0000:00:10.0/host32/target32:0:0/32:0:0:0/rescan
| |
| Ok, dahin schicken wir jetzt eine <code>1</code> um den Rescan auszulösen:
| |
| echo 1 > /sys/devices/pci0000:00/0000:00:10.0/host32/target32:0:0/32:0:0:0/rescan
| |
| Fertig!<br>
| |
| <br>
| |
|
| |
| ----
| |
| Im Anschluß zur Kontrolle ein
| |
| fdisk -l
| |
| Die Ausgabe sollte ähnlich wie diese sein:<br>
| |
| Festplatte /dev/loop0: 54,98 MiB, 57626624 Bytes, 112552 Sektoren
| |
| Einheiten: Sektoren von 1 * 512 = 512 Bytes
| |
| Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
| |
| E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
| |
|
| |
| Festplatte /dev/loop1: 71,28 MiB, 74735616 Bytes, 145968 Sektoren
| |
| Einheiten: Sektoren von 1 * 512 = 512 Bytes
| |
| Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
| |
| E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
| |
|
| |
| Festplatte /dev/loop2: 29,9 MiB, 31334400 Bytes, 61200 Sektoren
| |
| Einheiten: Sektoren von 1 * 512 = 512 Bytes
| |
| Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
| |
| E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
| |
|
| |
| <span style="color:red">GPT-PMBR-Größenunterschied (104857599 != 167772159) wird durch »write« korrigiert.
| |
| Die Sicherungs-GPT-Tabelle befindet sich nicht am Ende des Gerätes. Das Problem wird durch »write« korrigiert.</span>
| |
| <span style="background:lightgreen">Festplatte /dev/sda: 80 GiB, 85899345920 Bytes, 167772160 Sektoren</span>
| |
| Festplattenmodell: Virtual disk
| |
| Einheiten: Sektoren von 1 * 512 = 512 Bytes
| |
| Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
| |
| E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
| |
| Festplattenbezeichnungstyp: gpt
| |
| Festplattenbezeichner: D205F6E7-853F-4CCC-83BE-67262A1827C8
| |
| Er meckert also schon das die Platte ungenutzten Platz hat (weshalb die GPT nicht mehr am Ende steht), zudem können wir in der Zeile
| |
| Festplatte /dev/sda: 80 GiB, 85899345920 Bytes, 167772160 Sektoren
| |
| sehen das es nun 80GB sind und nicht mehr 50GB
| |
|
| |
| ===Schritt 3: Partition vergrößern===
| |
| Das <code>/</code> Verzeichnis, auch root-Verzeichnis genannt befindet sich auf dem Gerät
| |
| /dev/sda2
| |
| wenn Ihr nach dieser Anleitung installiert hattet. Kontrollieren könnte Ihr das z.B. mit
| |
| df -h
| |
| und dann schauen was links vom Verzeichnis <code>/</code> steht:<br>
| |
| Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
| |
| udev 448M 0 448M 0% /dev
| |
| tmpfs 99M 1,1M 98M 2% /run
| |
| <span style="background:yellow">/dev/sda2 49G 5,5G 40G 8% /</span>
| |
| Die nächsten Befehle gehen von {{Key|/dev/sda2}}, wenn der Pfad anderes ist müsst Ihr diesen anpassen!<br>
| |
| growpart /dev/sda 2
| |
| resize2fs /dev/sda2
| |
| Ja, beim ersten Befehl ist da ein Leerzeichen zwischen dem sda und der 2, beim zweiten Befehl nicht.<br>
| |
|
| |
| ===Schritt 4: Das war schon alles!===
| |
| Ihr könnt mit<br>
| |
| df -h
| |
| es einmal kontrollieren - aber das war schon alles:
| |
| Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
| |
| udev 448M 0 448M 0% /dev
| |
| tmpfs 99M 1,1M 98M 2% /run
| |
| <span style="background:lightgreen">/dev/sda2 79G 5,5G 70G 8% /</span>
| |
| tmpfs 491M 0 491M 0% /dev/shm
| |
| tmpfs 5,0M 0 5,0M 0% /run/lock
| |
| tmpfs 491M 0 491M 0% /sys/fs/cgroup
| |
| /dev/loop0 55M 55M 0 100% /snap/core18/1880
| |
| /dev/loop1 72M 72M 0 100% /snap/lxd/16099
| |
| /dev/loop2 30M 30M 0 100% /snap/snapd/8542
| |
| tmpfs 99M 0 99M 0% /run/user/0
| |
| /dev/loop3 32M 32M 0 100% /snap/snapd/10707
| |
| /dev/loop4 56M 56M 0 100% /snap/core18/1944
| |
| /dev/loop5 70M 70M 0 100% /snap/lxd/19032
| |
| ----
| |
|
| |
| ==Kommentare==
| |
| <comments />
| |