- PVSM.RU - https://www.pvsm.ru -
Доброго дня (вечера, ночи, утра — нужное подчеркнуть) всем хаброжителям!
Этот пост посвящен мониторингу инстанса Caché с помощью SNMP [1]. Наверняка, многие пользователи Caché этим в той или иной степени уже пользуются. Мониторинг через SNMP поддерживается в стандартной инсталляции Caché уже давно, однако далеко не все интересующие параметры доступны из «коробки». Например, хотелось бы видеть мониторинг количества CSP-сессий, более подробные сведения по использованию лицензии, частные KPI эксплуатируемой системы и т.п.
В этой статье вы узнаете, как добавить свои параметры для мониторинга Caché с помощью SNMP.
Что уже имеем
Caché возможно мониторить с помощью SNMP. Cписок того, что уже поддерживается, можно увидеть в файлах каталога <Install_dir>/SNMP. Обычно там лежат 2 файла: ISC-CACHE.mib и ISC-ENSEMBLE.mib. Нас интересует файл для Caché — ISC-CACHE.mib. Например интересует, что мы можем получить относительно лицензий и сессий. В таблице приведены соответствующие OID’ы с учетом того, что иерархия берется от корня для Intersystems — 1.3.6.1.4.1.16563
OID | Название | Описание | Тип данных |
---|---|---|---|
.1.1.1.1.10 | cacheSysLicenseUsed | The current number of licenses used on this Caché instance | INTEGER |
.1.1.1.1.11 | cacheSysLicenseHigh | The high-water mark for licenses used on this Caché instance | INTEGER |
.1.2.16 | cacheLicenseExceed | A request for a license has exceeded the licenses available or allowed | Trap message |
.1.1.1.1.6 | cacheSysCurUser | Current number of users on this Caché instance | INTEGER |
В поставке отсутствуют многие важные показатели, например, количество CSP-сессий, не полна информация о лицензиях и, понятно, отсутствует мониторинг показателей, специфичных для приложений.
Пример того, что мы хотели бы знать:
Добавим также пару параметров для оценки производительности. Сами по себе параметры есть в поставке, но мы хотим знать их прирост за минуту, например:
Как добавить «свои» параметры
Опираться можно на документ «Monitoring Caché using SNMP [2]».
Наш тестовый инстанс (TEST) имеет версию Caché 2013.1.3. Операционная система — Linux CentOS release 6.5 (Final). Инсталляция Cache на Linux ОС описана на хабре [3]. Полезной будет и родная документация от InterSystems [4].
Вот краткий план работ:
А теперь выполняем план по пунктам.
1. Создаем класс для сбора метрик
Класс сбора метрик наследуется от %Monitor.Adaptor [9]. В студии переходим в область %SYS. Экспортируем пакет Monitor. Пакет содержит закрытый класс Sample, который из Студии не виден, но при экспорте в xml доступен.
Допустим, что наша рабочая область — это область TEST. Переходим в нее. Импортируем сюда класс Monitor.Sample. Создаем класс, в котором описываем реализацию снятия 6-ти метрик, указанных выше в разделе «Что уже имеем».
Проверяем, что нужные нам данные вызовом метода GetSample() выгружаются:
TEST>d x.GetSample()
TEST>zw x
x=<OBJECT REFERENCE>[2@metrics.snmp.Metrics]
+----------------- general information — | oref value: 2
| class name: metrics.snmp.Metrics
| reference count: 2
+----------------- attribute values — | ExecutedSpeed = 1155679
| GloRefSpeed = 171316
| KeyExpirationDate = «2014-10-11»
| KeyLicenseUnits = 100
| RoutineLoadSpeed = 186
| Sessions = 1
2. Регистрируем и активируем новый класс в Caché с помощью ^%SYSMONMGR
Открываем терминал и переходим в область TEST:
TEST>d ^%SYSMONMGR
1. Выбираем пункт 5, Manage Application Monitor.
2. Выбираем пункт 2, Manage Monitor Classes.
3. Выбираем пункт 3, Register Monitor System Classes. Наблюдаем за компиляцией:
Экспорт в XML начался в 08/18/2014 16:00:51
Экспортируемый класс: Monitor.Sample
Экспорт успешно завершен.
Загрузка началась в 08/18/2014 16:00:51
Загрузка файла /opt/intersystems/ensemble/mgr/Temp/45DDB3FppRHCuw.stream как xml
Импорт класса: Monitor.Sample
Компиляция класса: Monitor.Sample
Компиляция программы:: Monitor.Sample.G1.MAC
Компиляция таблицы: Monitor.Sample
Компиляция программы: Monitor.Sample.1
Загрузка успешно завершена.
4. Выбираем пункт 1, Activate/Deactivate Monitor Class
Class??
Num MetricsClassName Activated
1) %Monitor.System.AuditCount N
…
15) metrics.snmp.Metrics N
Class? 15 metrics.snmp.Metrics
Activate class? Yes => Yes
5. Выбираем пункт 6, Exit
6. Еще раз выбираем пункт 6, Exit
7. Выбираем пункт 1, Start/Stop System Monitor
8. Выбираем пункт 2, Stop System Monitor
Stopping System Monitor… System Monitor not running!
9. Выбираем пункт 1, Start System Monitor
Starting System Monitor… System Monitor started
10. Выбираем пункт 3, Exit
11. Выбираем пункт 4, View System Monitor State
Component State
System Monitor OK
%SYS.Monitor.AppMonSensor
3. Создаем пользовательский MIB
Пользовательский MIB создается с помощью методов класса MonitorTools.SNMP [5]. Для примера PEN (Private Enterprise Number) возьмем фиктивныЙ, 99990, впоследствии PEN нужно зарегистрировать в IANA [10]. Посмотреть уже зарегистрированные номера можно здесь [11]. Например, PEN InterSystems имеет номер 16563.
16563
InterSystems
Robert Davis
rdavis&intersystems.com
Для создания MIB-файла мы будем использовать класс MonitorTools.SNMP [5], в частности, метод CreateMIB() [12]. Этот метод принимает на вход 10 аргументов:
Имя и тип аргумента | Описание | Что подставляем |
---|---|---|
AppName As %String [13] | Имя приложения | Значение параметра APPLICATION класса metrics.snmp.Metrics — Monitoring |
Namespace As %String [13] | Наша область | TEST |
EntID As %Integer [14] | PEN компании | 99990 (Fiction) |
AppID As %Integer [14] | OID приложения внутри компании | 42 |
Company As %String [13] | имя компании (прописными) | fiction |
Prefix As %String [13] | префикс всех создаваемых нами SNMP-объектов | fiction |
CompanyShort As %String [13] | краткий префикс компании (прописными) | fict |
MIBname As %String [13] | имя MIB-файла | ISC-TEST |
Contact As %String [13] | контактная информация (в частности, адрес) | Оставляем значение по умолчанию: Earth, Russia, Somewhere in the forests, Subject: ISC-TEST.mib |
List As %Boolean [15] | Аналог verbose. Показывать прогресс задания по созданию MIB-файла | 1 |
Собственно, создание MIB-файла:
Create MIB file for Monitoring
Generate table Metrics
Add object ExecutedSpeed, Type = Integer
Add object GloRefSpeed, Type = Integer
Add object KeyExpirationDate, Type = String
Add object KeyLicenseUnits, Type = Integer
Add object RoutineLoadSpeed, Type = Integer
Add object Sessions, Type = Integer
MIB done.
В каталоге <Install_dir>/mgr/TEST появился новый MIB ISC-TEST.mib.
4. Запускаем сервис мониторинга с подключенным субагентом Caché
Открываем панель управления System Administration -> Security -> Services -> %Service_Monitor (нажать) -> Service Enabled (отметить).
Также указываем, что хотим стартовать SNMP-субагента при старте Caché (нажимаем Configure Monitor Settings):
В Linux CentOS для SNMP мониторинга мы используем пакет net-snmp. Ставим его, конфигурируем на использование субагентов и на то, что общение мастер-агента и субагентов будет осуществляться через стандартный для этого порт 705.
[root@server ~]# grep -i agentx /etc/services
agentx 705/tcp # AgentX
agentx 705/udp # AgentX
Маленькую статью по конфигурационному файлу snmpd.conf в дополнение к ману [16]можно посмотреть на cyberciti [17]. Вот наша конечная настройка:
Рестартуем в Linux демонов snmpd и snmptrapd. Стартуем ^SNMP сервис для начала работы SNMP-субагента от Caché:
%SYS>d start^SNMP
5. Проверяем, что наши, только что созданные, пользовательские OID’ы доступны.
Это можно сделать с помощью snmpwalk — покажем OID, отображающий количество CSP-сессий:
[root@server mgr]# snmpwalk -On -v 2c -c public localhost 1.3.6.1.4.1.99990
.1.3.6.1.4.1.99990.42.1.1.1.1.4.84.69.83.84 = INTEGER: 448035
.1.3.6.1.4.1.99990.42.1.1.1.2.4.84.69.83.84 = INTEGER: 64190
.1.3.6.1.4.1.99990.42.1.1.1.3.4.84.69.83.84 = STRING: «2014-10-11»
.1.3.6.1.4.1.99990.42.1.1.1.4.4.84.69.83.84 = INTEGER: 200
.1.3.6.1.4.1.99990.42.1.1.1.5.4.84.69.83.84 = INTEGER: 93
.1.3.6.1.4.1.99990.42.1.1.1.6.4.84.69.83.84 = INTEGER: 1
В файле ISC-TEST.mib указана последовательность наших OID:
FictMetricsR ::=
SEQUENCE {
fictExecutedSpeed Integer32,
fictGloRefSpeed Integer32,
fictKeyExpirationDate DisplayString,
fictKeyLicenseUnits Integer32,
fictRoutineLoadSpeed Integer32,
fictSessions Integer32
}
Соответственно, например, число сессий — это последний OID 1.3.6.1.4.1.99990.42.1.1.1.6. Можно сравнить с количеством сессий, показываемых SMP-дашбордом:
6. Добавляем наши OID’ы в стороннюю систему мониторинга.
Например, возьмем Zabbix [6]. Документацию по Zabbix можно найти здесь [7]. По инсталляции и настройке Zabbix конкретно на CentOS можно посмотреть здесь [8]. Zabbix был выбран как система, позволяющая не только рисовать графики, но и мониторить Plain Text (в нашем случае, это срок действия лицензии и мощность лицензии по пользователям). После добавления наших 6-ти метрик к Items [18]нашего локального хоста и создания 4-х графиков [19]и 2-х PlainText параметров (как элементов screen [20]) видим такую картину (приведен пример небольшой «живой» системы):
Вверху — информация о том, когда лицензия заканчивается, и сколько мы имеем лицензионных слотов. Графики говорят сами за себя.
7. Добавляем запуск системного монитора в нашей области TEST при старте системы
Есть неплохой документ [21]об использовании пользовательских рутин, срабатывающих при старте и остановке Caché. Называются они соответственно %ZSTART и %ZSTOP.
Что нас во всем этом интересует, так это чтобы при старте поднимать в пользовательской области TEST системный монитор (^%SYSMONMGR). По умолчанию этот монитор стартует только в области %SYS. Соответственно, рассматривать будем только программу ^%ZSTART. Исходник %ZSTART.mac (создаем и сохраняем ее в области %SYS).
Рестартуем (по возможности) Caché, чтобы убедиться, что сбор SNMP-статистики после рестарта Caché продолжается.
На этом все. Возможно, у кого-то будут замечания по выбору параметров мониторинга или коду, но задача ставилась показать возможность такого мониторинга в принципе, а добавить нужный параметр или отрефакторить код всегда можно в дальнейшем.
Спасибо за внимание!
Автор: myardyas
Источник [22]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/zabbix/72763
Ссылки в тексте:
[1] SNMP: https://ru.wikipedia.org/wiki/SNMP
[2] Monitoring Caché using SNMP: http://docs.intersystems.com/cache20131/csp/docbook/DocBook.UI.Page.cls?KEY=GCM_snmp
[3] хабре: http://habrahabr.ru/company/intersystems/blog/217567/
[4] документация от InterSystems: http://docs.intersystems.com/cache_latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCI_unix
[5] MonitorTools.SNMP.: http://docs.intersystems.com/cache20131/csp/documatic/%25CSP.Documatic.cls?APP=1&LIBRARY=%25SYS&CLASSNAME=MonitorTools.SNMP
[6] Zabbix: http://www.zabbix.com/download.php
[7] здесь: http://www.zabbix.com/documentation.php
[8] здесь: https://www.zabbix.com/documentation/ru/2.0/manual/installation/install_from_packages
[9] %Monitor.Adaptor: http://docs.intersystems.com/cache20131/csp/docbook/DocBook.UI.Page.cls?KEY=GCM_healthmon#GCM_healthmon_appmon_user_classes
[10] IANA: http://pen.iana.org/pen/PenApplication.page
[11] здесь: http://www.iana.org/assignments/enterprise-numbers/enterprise-numbers
[12] CreateMIB(): http://docs.intersystems.com/cache20131/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=MonitorTools.SNMP#CreateMIB
[13] %String: http://docs.intersystems.com/cache20131/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=%25Library.String
[14] %Integer: http://docs.intersystems.com/cache20131/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=%25Library.Integer
[15] %Boolean: http://docs.intersystems.com/cache20131/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=%25Library.Boolean
[16] ману : http://www.net-snmp.org/docs/man/snmpd.conf.html
[17] cyberciti: http://www.cyberciti.biz/nixcraft/linux/docs/uniqlinuxfeatures/mrtg/mrtg_config_step_3.php
[18] Items : https://www.zabbix.com/documentation/ru/2.0/manual/config/items/item
[19] графиков : https://www.zabbix.com/documentation/ru/2.0/manual/config/visualisation/graphs/custom
[20] screen: https://www.zabbix.com/documentation/2.0/manual/config/visualisation/screens
[21] документ : http://docs.intersystems.com/documentation/cache/cache51/PDFS/AZSS_ZStartZStop.pdf
[22] Источник: http://habrahabr.ru/post/241271/
Нажмите здесь для печати.