Je propose un modèle prêt à l'emploi pour Zabbix et un script Python pour détecter automatiquement les nouveaux numéros de fournisseur Zadarma (nouveaux, dans le sens des numéros que vous avez achetés).
Le modèle contient plusieurs déclencheurs et informations de base sur les pièces. Le script fonctionne avec l'API Zadarma ou la base de données MySQL.
Pour travailler avec MySQL, il est nécessaire de mettre les données à l'avance sur la couronne ou directement à partir du plan de numérotation à l'aide d'un script séparé.
Les deux scripts sous la coupe.
zadarma_number.pyLe script doit être placé dans le répertoire avec les scripts de l'agent zabbiz, je l'ai
/etc/zabbix/scripts/
Aussi, donnez-lui le droit de s'exécuter et au cas où, changez le propriétaire et le groupe de zabbix:
chmod +x /etc/zabbix/scripts/zadarma_number.py chown zabbix:zabbix /etc/zabbix/scripts/zadarma_number.py
Théoriquement, travailler avec une base de données donnée peut s'avérer plus pertinent, puisqu'un script pour y ajouter des informations peut être exécuté après chaque appel. Ainsi, les informations dans la base de données peuvent s'avérer un peu plus pertinentes que le travail direct avec l'API directement depuis Zabbix.
Dans le modèle Zabbix, la macro {$ FORCE_API} force le script à fonctionner avec l'API Zadarma.
La macro {$ CUT} est utilisée pour diviser la chaîne de requête SIP-URI en parties avant "@" et après.
Le script a plusieurs clés à exécuter.
Sans les clés ou avec l'option -l, le script renverra une liste de nombres au format json, qui convient à la détection automatique des nombres dans zabbix.
Aide pour les clés de script:utilisation: Zadarma pour Zabbix [-h] [-l] [-n numéro de téléphone] [-S] [-g] [-e] [-d] [-s]
[-m] [-a] [-b] [-f] [-c [0,1,2] ou aucun]
Ce programme est conçu pour surveiller les numéros du fournisseur Zadarma et
conçu à l'origine comme un script pour l'agent zabbiz.
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 "@"
Les touches "-S, -s, -g, -e, -d, -a" sont utilisées uniquement en combinaison avec un nombre
Le commutateur -m peut être utilisé avec ou sans nombre
Clé -b, uniquement sans numéro
Le commutateur -c uniquement avec le commutateur -s
Le commutateur -f force l'utilisation de l'API, sans lui, une demande est envoyée à la base de données et peut être utilisée avec n'importe quel commutateur.
Deuxième script:
Script API_to_MySqlAlors donnez-lui le droit de courir:
chmod +x ./main.py
Comment appeler le script et où le mettre, décidez par vous-même.
Pour désactiver la sortie d'informations sur la console, décommentez la ligne
debug = false
Pour que les deux scripts fonctionnent, vous devrez probablement installer des «requêtes»
pip install requests
Tableau des nombres 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;
Table d'équilibre 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;
Référentiel avec modèle mysql, scripts et vidages.