Мониторинг лицензий · 3 min read · Jan 13, 2026
Мониторинг лицензий Flexnet с помощью rrdtool - Страница 2
4. Создание графиков
Графики можно легко создать с помощью программы rrdcgi, которая входит в пакет rrdtool. Создание выполняется только по запросу, чтобы сэкономить циклы ЦП, вам нужно создать несколько CGI-скриптов с особыми тегами RRD::, которые интерпретируются rrdcgi.
Мой CGI-скрипт выглядит так:
#!/usr/bin/rrdcgi
Использование лицензии Prod1
Использование лицензии Prod1 на
'
-s -24hours -w 600 -h 200 -W gbi@localhost@localdomain
-v "Используемые лицензии" --lazy
--title "Пользователи CL"
-l 0 -Y
DEF:value=/var/rrd/CL.rrd:value:MAX
DEF:total=/var/rrd/CL.rrd:total:MAX
AREA:value#660000
LINE3:total#FF00FF>
Для получения подробной информации смотрите страницы man rrdcgi и rrdgraph.
Это пример известного графика в стиле MRTG:

Здесь не так много происходит.
Скрипт выше был моим первым, простым подходом. Идея заключалась в том, чтобы реализовать набор скриптов для каждого продукта и для разных периодов: один для ежедневного, один для еженедельного, один для ежемесячного и один для годового обзоров. Но это приводит к потоку скриптов, которые почти идентичны. После еще одного взгляда на документацию rrdcgi была найдена другая возможность, что привело к решению с одним скриптом на продукт и радиокнопками для интерактивного выбора интересующего периода времени. Скрипт выглядит так:
#!/usr/bin/rrdcgi
Использование лицензии Prod1
Использование лицензии Prod1 на
Период времени
.png
--imginfo '
'
-s - -w 600 -h 200
-W [email protected]
-v "Используемые лицензии" --lazy
--title "Пользователи CL"
-l 0 -Y
DEF:value=/var/rrd/CL.rrd:value:MAX
DEF:total=/var/rrd/CL.rrd:total:MAX
AREA:value#660000
LINE3:total#FF00FF>
Радиокнопки над графиками для выбора периода времени выглядят так:

5. Создание баз данных rrd
Есть одна тема, которую я еще не упоминал, как создаются базы данных rrd. Я использовал, вы это почувствовали, другой скрипт. Он выглядит так:
#!/usr/bin/python
# Скрипт для создания всех баз данных rrd для всех экземпляров лицензий
# в совместимом с mrtg формате
import sys, string, rrdtool
search = [ { 'term':"Пользователи CL:", 'val':10, 'max':5, 'db':'CL' },
{ 'term':"Пользователи xyzabc:", 'val':10, 'max':5, 'db':'xyzabc' },
{ 'term':"Пользователи qwerty:", 'val':10, 'max':5, 'db':'qwerty' } ]
for x in search:
rrdtool.create( '/var/rrd/' + x[ 'db' ] + '.rrd', '-s 300', \
'DS:value:GAUGE:600:U:U', 'DS:total:GAUGE:600:U:U', \
'RRA:MAX:0.5:1:600', 'RRA:MAX:0.5:6:700', 'RRA:MAX:0.5:24:775', \
'RRA:MAX:0.5:288:797' )Конечно, вам нужно настроить это под ваши нужды.
6. Еще один CGI-скрипт
Чтобы еще больше упростить работу с системой Flexnet и пользователями, которым необходимо арендовать лицензию для выполнения своей работы, был создан еще один CGI-скрипт. Он используется для отображения того, кто арендовал сколько лицензий, это всего лишь вывод “lmutil lmstat -a”, но без входа в систему, где установлен lmutil. Но будьте осторожны, это может столкнуться с защитой конфиденциальности в вашей компании, поскольку личная информация доступна. Поэтому вам, возможно, придется защитить выполнение этого скрипта с помощью какого-либо механизма аутентификации, но эта тема не охватывается в этом руководстве.
Скрипт снова является скриптом dash, как тот, что в главе 2, вы можете запрашивать более одного продукта на более чем одном сервере, если это реализовано соответствующим образом. Это также так называемый here-скрипт, который является специальным, редко используемым видом shell-скрипта. Снова не стесняйтесь настраивать его под ваши нужды:
#!/bin/dash
case $1 in
prod1) PORT=27000; PROD="Prod1";;
prod2) PORT=27002; PROD="Prod2";;
prod3) PORT=27042; PROD="Prod3";;
*|prod4) PORT=27001; PROD="Prod4";;
esac
echo Content-type: text/html
echo ""
/bin/cat << EOM
Состояние лицензии $PROD
Состояние лицензии $PROD
EOM
/usr/local/bin/lmutil lmstat -c $PORT@LICENSESERVER -a
/bin/cat << EOM
14.6.2010
EOM
Просто скопируйте этот скрипт в директорию cgi-bin вашего веб-сервера ( /usr/lib/cgi-bin в моем случае), сделайте его доступным для чтения и выполнения для всех, не забудьте загрузить модуль CGI вашего веб-сервера (если он у него есть, или он не загружен уже), и вы готовы к работе. Вывод выглядит так:

Этот скрипт вызывается в вашем веб-браузере по URL, подобному:
http://server/cgi-bin/licstate.cgi?prod2Таким образом, вы можете выбрать один из нескольких продуктов, просто указав “параметр командной строки” для CGI-скрипта.
Предоставляя такой скрипт пользователям продуктов, где доступные лицензии, как правило, почти исчерпаны, пользователи могут легко решать свои проблемы, связанные с использованием лицензий, между собой, и администратору не нужно вмешиваться ;-).
7. URL
- MRTG: http://oss.oetiker.ch/mrtg/
- RRDTOOL: http://oss.oetiker.ch/rrdtool/
- Apache: http://httpd.apache.org/
- THTTPD: http://www.acme.com/software/thttpd/
- DASH: http://gondor.apana.org.au/~herbert/dash/
- Python: http://www.python.org/
- Мое устройство мониторинга сети: https://www.howtoforge.com/network-monitoring-appliance
Get new posts in your inbox
No spam. Unsubscribe anytime.