Eu ofereço um modelo pronto para o Zabbix e um script Python para detectar automaticamente novos números de provedores do Zadarma (novos, no sentido dos números que você comprou).
O modelo possui vários gatilhos e informações básicas sobre os quartos. O script funciona com a API Zadarma ou o banco de dados MySQL.
Para trabalhar com o MySQL, é necessário colocar os dados com antecedência na coroa ou diretamente do dialplan usando um script separado.
Ambos os scripts sob o corte.
zadarma_number.pyO script deve ser colocado no diretório com scripts para o agente zabbiz, eu tenho
/etc/zabbix/scripts/
Além disso, conceda o direito de executar e, apenas no caso, altere o proprietário e o grupo do zabbix:
chmod +x /etc/zabbix/scripts/zadarma_number.py chown zabbix:zabbix /etc/zabbix/scripts/zadarma_number.py
Teoricamente, trabalhar com um determinado banco de dados pode se mostrar mais relevante, pois um script para adicionar informações pode ser executado após cada chamada. Portanto, as informações no banco de dados podem se mostrar um pouco mais relevantes do que o trabalho direto com a API diretamente do Zabbix.
No modelo do Zabbix, a macro {$ FORCE_API} força o script a trabalhar com a API do Zadarma.
A macro {$ CUT} é usada para dividir a sequência de solicitação SIP-URI em partes antes de "@" e depois.
O script tem várias chaves para executar.
Sem as teclas ou com a opção -l, o script retornará uma lista de números no formato json, adequada para a detecção automática de números no zabbix.
Ajuda para chaves de script:uso: Zadarma para Zabbix [-h] [-l] [-n número de telefone] [-S] [-g] [-e] [-d] [-s]
[-m] [-a] [-b] [-f] [-c [0,1,2] ou nenhum]
Este programa foi desenvolvido para monitorar os números de provedores da Zadarma e
originalmente concebido como um script para o agente 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 "@"
As teclas "-S, -s, -g, -e, -d, -a" são usadas apenas em combinação com um número
A opção -m pode ser usada com ou sem um número
Tecla -b, apenas sem número
A opção -c apenas com a opção -s
A opção -f força o uso da API, sem ela, uma solicitação é enviada ao banco de dados e pode ser usada com qualquer opção.
Segundo script:
Script API_to_MySqlPortanto, dê o direito de executar:
chmod +x ./main.py
Como chamar o script e onde colocá-lo, decida por si mesmo.
Para desativar a saída de informações no console, é necessário descomentar a linha
debug = false
Para que ambos os scripts funcionem, você provavelmente precisará instalar "solicitações"
pip install requests
Tabela para números 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;
Mesa de equilíbrio 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;
Repositório com modelo mysql, scripts e dumps.