Как контролировать смокинг через MIB
В настоящее время я пытаюсь написать программу для мониторинга смокинга. Из официальных документов я обнаружил, что MIB подходит для написания программ для его мониторинга. Я прочитал довольно много документов здесь http://docs.oracle.com/cd/E13203_01/tuxedo/tux90/rf5/rf5.htm. Хотя инструкций такого класса очень много, нет руководства, которое бы объясняло мне, как его использовать с самого начала. Я пытался искать на GitHub, но, к сожалению, нет никакого кода, касающегося смокинг MIB. У кого-нибудь есть хороший пример кода?
Большое спасибо.
3 ответа
Вот Shell-функция, которая читает время блока из Tuxedo:
get_blocktime() {
TmpErr=/tmp/ud32err_$$
rtc=0
ud32 -Ctpsysadm <<EOF 2>$TmpErr | grep TA_BLOCKTIME | cut -f2
SRVCNM .TMIB
TA_CLASS T_DOMAIN
TA_OPERATION GET
EOF
# ud32 has no good error-handling
if [ -s $TmpErr ]; then
echo "$PRG: Error calling ud32:"
cat $TmpErr 1>&2
rtc=1
fi
rm $TmpErr
exit $rtc
}
Есть несколько примеров доступа к MIB с помощью Python https://github.com/PacktPublishing/Modernizing-Oracle-Tuxedo-Applications-with-Python/tree/main/Chapter06. Например:
import tuxedo as t
t.tpinit(cltname="tpsysop")
machine = t.tpadmcall(
{
"TA_CLASS": "T_MACHINE",
"TA_OPERATION": "GET",
"TA_FLAGS": t.MIB_LOCAL,
}
).data
Пара замечаний:
- вам понадобится TA_FLAGS, установленный на MIB_LOCAL, чтобы возвращать статистику (по умолчанию не выполняется)
- вы можете использовать функцию tpadmcall() вместо вызова службы .TMIB. Эта функция намного легче в системе и не увеличивает статистику Tuxedo (количество обращений в службу поддержки). Основным ограничением tpadmcall является ограниченный размер ответа, поэтому вам нужно будет вызвать службу .TMIB для статистики сервера и очереди, если в вашем приложении их десятки.
Если примера кода недостаточно, вы можете проверить главу 6 книги « Модернизация приложений Oracle Tuxedo с помощью Python» .
У меня есть некоторый C-код для вызова.TMIB для мониторинга приложения Tuxedo здесь: https://github.com/TuxSQL/tuxmon Это должно помочь вам начать.