Мониторинг лицензий · 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


GBi

14.6.2010 EOM

Просто скопируйте этот скрипт в директорию cgi-bin вашего веб-сервера ( /usr/lib/cgi-bin в моем случае), сделайте его доступным для чтения и выполнения для всех, не забудьте загрузить модуль CGI вашего веб-сервера (если он у него есть, или он не загружен уже), и вы готовы к работе. Вывод выглядит так:

Состояние лицензии

Этот скрипт вызывается в вашем веб-браузере по URL, подобному:

http://server/cgi-bin/licstate.cgi?prod2

Таким образом, вы можете выбрать один из нескольких продуктов, просто указав “параметр командной строки” для CGI-скрипта.

Предоставляя такой скрипт пользователям продуктов, где доступные лицензии, как правило, почти исчерпаны, пользователи могут легко решать свои проблемы, связанные с использованием лицензий, между собой, и администратору не нужно вмешиваться ;-).

7. URL

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.