Предыстория: Однажды руководство компании поставило довольно простую задачу, подобрать корпоративные тарифные платы для двух абонентов на входящие и исходящие звонки только по Москве и московской области. В роли этих абонентов, как выяснилось чуть позже выступили сотрудники ЧОП на объектах. Так сказать обеспечение экстренной связью, проверка состояния из вне о работе центра. Почему же не использовать внутреннюю телефонию? – а вот это вообще не вариант, т. к. с недавних пор, будь проклят тот бывший якобы руководитель отдела 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: Текущий баланс на телефонах охраны
  • ItemsAdd — и выбираю созданный выше элемент данных: 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.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru