Предыстория: Однажды руководство компании поставило довольно простую задачу, подобрать корпоративные тарифные платы для двух абонентов на входящие и исходящие звонки только по Москве и московской области. В роли этих абонентов, как выяснилось чуть позже выступили сотрудники ЧОП на объектах. Так сказать обеспечение экстренной связью, проверка состояния из вне о работе центра. Почему же не использовать внутреннюю телефонию? – а вот это вообще не вариант, т. к. с недавних пор, будь проклят тот бывший якобы руководитель отдела IT который убедил перейти руководство со своего сервера телефонии на облачную, где идет полная зависимость от интернета и порой просто нестабильности работы облачного телефонного оператора. Не буду скрывать мы все в конторе ненавидим это Манго. Мало того, что они очень редко предупреждают когда у них какой то обвал, да и к тому же аппараты используемые нами не сразу соединяются, сбрасывают звонок и все в этом духе, вот когда использовалась локальная АТС (Asterisk+FreePBX) таких проблем не было. Ну да ладно, пусть руководство само делает выводы я же стараюсь работать с тем что есть, так вот: корпоративные SIM карты выданы, служба СБ успешно пользуется телефонами, но я ведь как системный администратор (Руководитель отдела IT) обязан следить за ихнем телефонным балансом чтобы вовремя его пополнять (да контора не хочет использовать безналичную оплату, приходится подписывать кучу бумаг и по новой напоминать почему мне нужно выдать деньги на руки чтобы я мог через офисы Megafon пополнить баланс). Так вот, как же узнавать когда пополнять баланс, да можно заходить в личный кабинет и вручную смотреть за ним, ставить напоминалки на этот счет — это геморрой, да и можно в просто напросто забыть. А потому я вспомнил, что на Megafon’е — к примеру у меня, я подключил себе услугу (бесплатную) Мультифон и с ее помощью можно через обычный bash скрипт проверять состоянии счета на телефоне.
И так подключаю услугу Мультифон – * 137 * 1 # потом отправляю по sms цифру 1 и в ответ приходит sms с логином в виде текущего телефона и пароля.
Двигаюсь дальше – скрипт для проверки баланса следующий:
aollo@srv-zabbix:~$curl -3 "https://sm.megafon.ru/sm/client/balance?login=7926XXXXXXX@multifon.ru&password=XXXXXX" | grep balance| cut -d "<" -f2 | cut -d ">" -f2 > /tmp/balance && cat /tmp/balance
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 156 100 156 0 0 337 0 –:–:– –:–:– –:–:– 400
179.31
, где полученное значение: 179.31 рубль на текущем балансе данного номера.
Вот это уже лучше, запуская таким образом скрипт можно в любой момент времени получать состояние баланса на телефоне, а значит если задействовать систему мониторинга Zabbix то это будет автоматизировано, да и к тому же можно настроить триггер на понижение состояния баланса.
Итого запускаю свой собственно ручно настроенный сервер мониторинга за инфраструктурой Zabbix и настраиваю новый шаблон: Template Balance
http://IP&DNS — user&pass — Configuration — Templates — Create template
- Template name: Template Balance
- New group: OHRANA
и нажимаю Save
затем в данном шаблоне создаю новый элемент данных:
http://IP&DNS — user&pass — Configuration — Templates — Template Balance — Items — Create Item
- Name: Balance Balashiha Ohrana Mobile
- Type: Zabbix agent
- Key: ohrana1
- Type of information: Numeric (float)
- Units: рубля
- Update interval (in sec): 600
- New application: Balance
- Enabled: Отмечаю галочкой
и нажимаю Save
Теперь нужно создать сам ключ ohrana1 на самом сервере Zabbix:
aollo@srv-zabbix:~$ sudo nano /usr/lib/zabbix/externalscripts/ohrana1
#!/bin/bash
curl -3 "https://sm.megafon.ru/sm/client/balance?login=7926XXXXXXX@multifon.ru&password=XXXXXX" | grep balance| cut -d "<" -f2 | cut -d ">" -f2 > /tmp/balance && cat /tmp/balance
exit
По окончании создания скрипта не забываем сохранить внесенные изменения.
aollo@srv-zabbix:~$ sudo chmod +x /usr/lib/zabbix/externalscripts/ohrana1
aollo@srv-zabbix:~$ sudo nano /etc/zabbix/zabbix_agentd.conf
UserParameter=ohrana1[*],/usr/lib/zabbix/externalscripts/ohrana1
Проверяю, как отрабатывает получение значения от выполнения скрипта:
aollo@srv-zabbix:~$ sudo service zabbix-agent restart
aollo@srv-zabbix:~$ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t ohrana1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 156 100 156 0 0 546 0 –:–:– –:–:– –:–:– 563
ohrana1 [t|897.77]
вот то что мне и нужно, скрипт через Zabbix успешно отрабатывается. Теперь когда основная часть проверки настроена можно создать шаблон составления графика изменения баланса:
http://IP&DNS — user&pass — Configuration — Templates — Template Balance — Graphs — Create graph:
- Name: Текущий баланс на телефонах охраны
- Items — Add — и выбираю созданный выше элемент данных: Balance Balashiha Ohrana Mobile и нажимаю Select, а после Save тем самым создается шаблон с элементом данных который опрашивает скриптом состояние счета мобильного телефона и строит график. В данный шаблон можно подключить несколько элементов данных нацеленный на мониторинг множества состояний телефонного баланса, как сделано собственно у меня.
После чего нацеливаю данный шаблон на хост:
http://IP&DNS — user&pass — Configuration — Hosts — Create host –
- Host name: oxbalance
- Groups: OHRANA
- Agent interfaces: оставляю значения дефолтными, т. е. IP address: 127.0.0.1 Port: 10050
во вкладке Templates нахожу и отмечаю созданный выше специально для этого хоста шаблон именуемый, как Template Balance
В конечном итоге, график же представляет из себя следующее, здесь я приведу пример своего графика уже за несколько дней:
http://IP&DNS — user&pass — Monitoring — Graphs: Group (OHRANA),Host (oxbalance), Graph (Текущий баланс на телефонах охраны)
Этот график уже наглядно демонстрирует состояние текущего баланса на текущий момент времени и можно для руководства компании представить как изменяется поведение работы использованных средств выданных мне на пополнение телефонного баланса корпоративных тарифных планов. А вот триггер для изменения «рубля» каждый пусть настроит сам опираясь на эту заметку, я же показал тот вариант решения своей задачи которую я переложил с ручного подхода на автоматизированный с использованием развернутого ранее сервера мониторинга Zabbix на релизе Ubuntu Precise который я использую где только возможно. Итого задача выполнена, на этом я прощаюсь с Вами читатели моего блога и до новых практически описанных задач на моем блоге реальных заметок, с уважением ekzorchik.