1c_zabbix_template_ce icon indicating copy to clipboard operation
1c_zabbix_template_ce copied to clipboard

Не срабатывает триггер "Нет запущенных процессов"

Open pnosov opened this issue 1 year ago • 2 comments

Здравствуйте!

Сервер 1С Предприятие 8.3.23.1997 под управлением Ubuntu 22.04, пользуемся Zabbix Server 5.4.

Время от времени слетает рабочий процесс 1С rphost, надеялся поставить на эту ситуацию оповещение, столкнулся вот с такой проблемой.

image

Когда слетает рабочий процесс, в item количество процессов не определено (на графике видно пустое место, в понедельник в 9 утра обнаружили и перезапустили сервис).

При этом в логах сервера Zabbix сыпит такими сообщениями:

 52840:20240630:014114.536 error reason for "srv1c:1c.ws.rphost.memory" changed: Preprocessing failed for: rmngr: 1 250204160 .ragent: 1 16023552 1
1. Failed: cannot perform regular expression "rphost: \d+ (\d+) \d" match for value of type "string": pattern does not match

Если при работоспособном 1С запускаю скрипт 1c_work_server.sh, получаю такое:

zabbix@srv1c:/var/lib/zabbix/scripts$ bash -x 1c_work_server.sh memory
++ sed -r 's/\\/\//g; s/^(.{1}):/\/\1/'
++ dirname 1c_work_server.sh
+ WORK_DIR=.
+ shopt -q extglob
+ shopt -s extglob
+ source ./1c_common_module.sh
+ export DUMP_CODE_0=0
+ DUMP_CODE_0=0
+ export DUMP_CODE_1=1
+ DUMP_CODE_1=1
+ export DUMP_CODE_2=2
+ DUMP_CODE_2=2
+ export DUMP_CODE_3=3
+ DUMP_CODE_3=3
+ case ${1} in
+ get_memory_counts
+ RPHOST_PID_HASH=/tmp/1c_rphost_pid_hash
+ [[ -z '' ]]
+ sed -re 's/^([^ ]+) +([0-9]+) +([0-9]+) +/\1,\2,\3,/'
++ cat /tmp/1c_rphost_pid_hash
++ pgrep -d, 'ragent|rphost|rmngr'
+ awk -F, -v mem_in_kb=1024 -v pid_hash=bf5e5da7f56ee6ce53743c06c2c3d3e7 '/.*,[0-9]+,[0-9]+/ {
            proc_name[$1]=gensub(/[.].+/,"","g",$1)
            proc_pids[$1][$2]
            proc[$1,"memory"]+=$3
            } END {
                for ( pn in proc_name ) {
                    proc_flag=""; pid_list=""
                    switch (pn) {
                        case /ragent.*/:
                            if ($4 ~ /(\/|-)debug(\s|$)/ ) proc_flag=1; else proc_flag=0
                            break
                        case /rphost.*/:
                            for (i in proc_pids[pn]) pid_list=pid_list?pid_list","i:i
                            hash_command="echo "pid_list" | md5sum | sed \"s/ .*//\""
                            (hash_command | getline new_hash) > 0
                            close(hash_command)
                            if ( pid_hash == new_hash ) { proc_flag=0 } else { proc_flag=1 }
                            print new_hash > "/tmp/1c_rphost_pid_hash"
                            break
                    }
                    print proc_name[pn]":",length(proc_pids[pn]),proc[pn,"memory"]*mem_in_kb,proc_flag
                }
            }'
+ ps -hwwp 135567,4155283,4155299 -o comm,pid,rss,cmd -k pid
rphost: 1 6894641152 0
rmngr: 1 338317312
ragent: 1 47267840 1

То есть, насколько я понимаю, при отвалившемся rphost скрипт будет показывать две строчки, про rmngr и ragent.

rmngr: 1 246779904 .ragent: 1 16023552 1

И preprocessing в item [1С/Рабочий процесс] Число процессов не может вычислить значение.

image

Это как-то лечится? Заранее благодарю.

pnosov avatar Jul 03 '24 15:07 pnosov

Выглядит как ошибка, проверю

slothfk avatar Jul 04 '24 01:07 slothfk

Таки да, это ошибка, и я понял когда она появилась, постараюсь поправить в ближайшее время

slothfk avatar Jul 05 '24 11:07 slothfk