Ich biete eine vorgefertigte Vorlage für Zabbix und ein Python-Skript an, um automatisch neue Zadarma-Anbieternummern zu erkennen (neue im Sinne der von Ihnen gekauften Nummern).
Die Vorlage enthält mehrere Auslöser und grundlegende Informationen zu den Räumen. Das Skript funktioniert mit der Zadarma-API oder der MySQL-Datenbank.
Um mit MySQL arbeiten zu können, müssen die Daten dort vorab auf der Krone oder direkt aus dem Wählplan mit einem separaten Skript abgelegt werden.
Beide Skripte unter dem Schnitt.
zadarma_number.pyDas Skript muss in das Verzeichnis mit den Skripten für den Zabbiz-Agenten gestellt werden, ich habe es
/etc/zabbix/scripts/
Geben Sie ihm auch das Recht zum Ausführen und ändern Sie für alle Fälle den Eigentümer und die Gruppe von zabbix:
chmod +x /etc/zabbix/scripts/zadarma_number.py chown zabbix:zabbix /etc/zabbix/scripts/zadarma_number.py
Theoretisch kann sich die Arbeit mit einer bestimmten Datenbank als relevanter herausstellen, da nach jedem Aufruf ein Skript zum Hinzufügen von Informationen ausgeführt werden kann. Daher können sich die Informationen in der Datenbank als etwas relevanter herausstellen als die direkte Arbeit mit der API direkt von Zabbix.
In der Zabbix-Vorlage erzwingt das Makro {$ FORCE_API}, dass das Skript mit der Zadarma-API arbeitet.
Das Makro {$ CUT} wird verwendet, um die SIP-URI-Anforderungszeichenfolge vor und nach "@" in Teile aufzuteilen.
Das Skript muss mehrere Schlüssel ausführen.
Ohne die Schlüssel oder mit dem Schalter -l gibt das Skript eine Liste von Zahlen im JSON-Format zurück, die für die automatische Erkennung von Zahlen in Zabbix geeignet ist.
Hilfe für Skriptschlüssel:Verwendung: Zadarma für Zabbix [-h] [-l] [-n Telefonnummer] [-S] [-g] [-e] [-d] [-s]
[-m] [-a] [-b] [-f] [-c [0,1,2] oder keine]
Dieses Programm dient zur Überwachung der Anbieternummern von Zadarma und
ursprünglich als Skript für zabbiz agent konzipiert.
optional arguments: -h, --help show this help message and exit -l, --allnumbers "Show all found phone numbers in a format suitable for zabbix. Running a script without parameters (or with the -f option) leads to the same result." -n phone number, --number phone number "Phone number and -s or -S or -g or -e or -d or -m or -a " -S, --status -g, --start_date -e, --stop_date -d, --description -s, --sip "can be used in combination with "-c"" -m, --monthly_fee "The amount required to renew a phone number or all phone numbers" -a, --autorenew -b, --balance All balance numbers -f, --force_API "Force the use of api, the database is ignored" -c [0,1,2] or none, --cut [0,1,2] or none Used only in conjunction with "-s" 0 - The whole line, 1- Part of the string before "@", 2 - Part of the line after "@"
Die Tasten "-S, -s, -g, -e, -d, -a" werden nur in Kombination mit einer Zahl verwendet
Der Schalter -m kann mit oder ohne Nummer verwendet werden
Schlüssel -b, nur ohne Nummer
Der Schalter -c nur mit dem Schalter -s
Der Schalter -f erzwingt die Verwendung der API. Ohne diesen Schalter wird eine Anforderung an die Datenbank gesendet und kann mit jedem Schalter verwendet werden.
Zweites Skript:
Skript API_to_MySqlAlso gib ihm das Recht zu rennen:
chmod +x ./main.py
Wie Sie das Skript aufrufen und wo Sie es ablegen, entscheiden Sie selbst.
Um die Ausgabe von Informationen an die Konsole zu deaktivieren, müssen Sie die Zeile auskommentieren
debug = false
Damit beide Skripte funktionieren, müssen Sie höchstwahrscheinlich "Anforderungen" installieren.
pip install requests
Tabelle für Zahlen CREATE TABLE IF NOT EXISTS `zadarma_numbers` ( `id` int(10) NOT NULL, `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `number` varchar(12) DEFAULT NULL, `number_name` varchar(60) DEFAULT NULL, `description` varchar(60) NOT NULL DEFAULT '', `sip` varchar(80) DEFAULT NULL, `start_date` datetime NOT NULL, `stop_date` datetime NOT NULL, `monthly_fee` int(5) DEFAULT NULL, `status` int(1) DEFAULT NULL, `channels` int(3) DEFAULT NULL, `autorenew` int(1) DEFAULT NULL ) ENGINE=InnoDB AUTO_INCREMENT=205 DEFAULT CHARSET=utf8; ALTER TABLE `zadarma_numbers` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `number` (`number`), ADD KEY `calldate` (`date`), ADD KEY `accountcode` (`monthly_fee`); ALTER TABLE `zadarma_numbers` MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
Tabelle für Balance CREATE TABLE IF NOT EXISTS `zadarma_balance` ( `id` int(10) NOT NULL, `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `balance` int(10) DEFAULT NULL, `monthly_fee` int(10) DEFAULT NULL ) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8; ALTER TABLE `zadarma_balance` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `balance` (`balance`), ADD KEY `calldate` (`date`); ALTER TABLE `zadarma_balance` MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
Repository mit MySQL-Vorlage, Skripten und Dumps.