Files
2021-01-12 22:04:24 +08:00

254 lines
8.4 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<Package>
<Function name="PreWarning"><!--将告警信息插入发布信息并SMS/Email发布-->
<Input>ALM_ID|ALM_TM|ACT_ID|SND_STS|FAL_CNT|ACT_TYP|SEND_OBJ|ALM_MSG
</Input>
<Output>Rsp_CD|RSP_MSG</Output>
<DynSentence name="UpdSmsSndSts">
<Sentence>
update MONTSNDLST set SND_STS=?,FAL_CNT=? WHERE ALM_ID=?
</Sentence>
<Fields>SND_STS|FAL_CNT|ALM_ID</Fields>
</DynSentence>
<Process>
<Exec func="PUB:InsertRecord" error="IGNORE">
<Arg name="TblNam" value="MONTSNDLST" />
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:GWAAddMsg">
<!-- @msg {1},请稍后再试! -->
<Arg name="MsgCd" value="MON10001" />
<Arg name="MsgDat" value="数据库系统正在维护中" />
</Exec>
<Return />
</If>
<Set>Type=$ACT_TYP</Set>
<If condition="STRCMP($Type,S)=0"><!--动作类型为SMS-->
<Set>SendObj=$SEND_OBJ</Set>
<Set>ALMMsg=$ALM_MSG</Set>
<Exec func="MON:SendSMS" error="IGNORE">
<Arg name="Sendto" value="$SendObj" />
<Arg name="MESSAGE" value="$ALMMsg" />
</Exec>
<If condition="~RetCod=0">
<Set>SND_STS=2</Set>
<Set>FAL_CNT=0</Set>
</If>
<Else>
<Set>SND_STS=3</Set>
<Set>FAL_CNT=ADD($FAL_CNT,1)</Set>
</Else>
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="UpdSmsSndSts" />
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:GWAAddMsg">
<!-- @msg {1},请稍后再试! -->
<Arg name="MsgCd" value="MON10001" />
<Arg name="MsgDat" value="数据库系统正在维护中" />
</Exec>
<Return />
</If>
</If>
<If condition="STRCMP($Type,M)=0"><!--动作类型为EMAIL-->
<Set>SendObj=$SEND_OBJ</Set>
<Set>ALM_TM=$ALM_TM</Set>
<Set>ALM_VALUE=$ALM_MSG</Set>
<Set>GRP_1.ALM_TM=$ALM_TM</Set>
<Set>GRP_1.ALM_VALUE=$ALM_MSG</Set>
<Exec func="PUB:DumpETF" />
<Set>from="hisuntech@163.com"</Set>
<Exec func="MON:SendMailImpl" error="IGNORE">
<Arg name="receiver" value="$SendObj" /> <!--接收人-->
<Arg name="subject" value="告警信息" /> <!--主题-->
<Arg name="template"
value="STRCAT(GETENV(HWORKDIR),/app/mon/template/send_list.html)" /> <!--发送邮件模板-->
<Arg name="host" value="SMTP.163.com" /> <!--发送服务器IP-->
<Arg name="port" value="25" />
<Arg name="user" value="$from" /> <!--发送人-->
<Arg name="passwd" value="techhisun" />
<Arg name="from" value="$from" /> <!--发送人-->
<Arg name="name" value="$from" />
</Exec>
<If condition="~RetCod=0">
<Set>SND_STS=2</Set>
<Set>FAL_CNT=0</Set>
</If>
<Else>
<Set>SND_STS=3</Set>
<Set>FAL_CNT=ADD($FAL_CNT,1)</Set>
</Else>
<Exec func="PUB:ExecSql" error="IGNORE">
<Arg name="SqlCmd" value="UpdSmsSndSts" />
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:GWAAddMsg">
<!-- @msg {1},请稍后再试! -->
<Arg name="MsgCd" value="MON10001" />
<Arg name="MsgDat" value="数据库系统正在维护中" />
</Exec>
<Return />
</If>
</If>
</Process>
</Function>
<!-- add by banpaia 7.29 -->
<Function name="AcceptReEvtInfo"><!--探针采集事件信息入流水表-->
<Set>EVTRECORD_COUNT=$MNT_DATA.EVTRECORD_COUNT</Set>
<Set>CNT1=$EVTRECORD_COUNT</Set>
<Set>Num1=1</Set>
<While condition="INTCMP($Num1,2,$CNT1)">
<Set>BUS_CNL=$MNT_DATA.EVTRECORD[$Num1].BUSCNL</Set>
<Set>SYS_CNL=$MNT_DATA.EVTRECORD[$Num1].SYSCNL</Set>
<Set>MSG_ID=$MNT_DATA.EVTRECORD[$Num1].MSGID</Set>
<Set>MOD_NM=$MNT_DATA.EVTRECORD[$Num1].MODNM</Set>
<Set>SRV_NM=$MNT_DATA.EVTRECORD[$Num1].SVRNM</Set>
<Set>TXN_CD=$MNT_DATA.EVTRECORD[$Num1].TXNCD</Set>
<Set>SYS_TM=$MNT_DATA.EVTRECORD[$Num1].SYSTM</Set>
<Set>SYS_DT=$MNT_DATA.EVTRECORD[$Num1].SYSDT</Set>
<Set>EVT_LVL=$MNT_DATA.EVTRECORD[$Num1].MSGLVL</Set>
<Set>EVT_TYP=$MNT_DATA.EVTRECORD[$Num1].EVTTYP</Set>
<Set>EVT_CTT=$MNT_DATA.EVTRECORD[$Num1].EVTCTT</Set>
<Set>INP_DAT.AC_TYP=1</Set>
<Exec func="MON:getCurMil">
<Arg name="_I_INP_DAT" value="INP_DAT" />
<Arg name="_O_OUT_DAT" value="OUT_DAT" />
</Exec>
<Set>Cur_Mil=@O.OUT_DAT.CUR_MIL</Set>
<Set>CUR_TM=$Cur_Mil</Set><!--得到当前日期的毫秒数 -->
<Set>REC_TM=$CUR_TM</Set>
<!-- get Evt ID -->
<Exec func="PUB:GetUniqueNo">
<Arg name="Len" value="18" />
</Exec>
<Set>LOG_NO=$ID</Set>
<!--插入探针流水表-->
<Exec func="PUB:InsertRecord" error="IGNORE">
<Arg name="TblNam" value="MONTEVTJNL" />
</Exec>
<If condition="~RetCod!=0">
<Exec func="PUB:GWAAddMsg">
<!-- @msg {1},请稍后再试! -->
<Arg name="MsgCd" value="MON10001" />
<Arg name="MsgDat" value="数据库系统正在维护中" />
</Exec>
<Return />
</If>
<Delete>BUS_CNL</Delete>
<Delete>SYS_CNL</Delete>
<Delete>MSG_ID</Delete>
<Delete>MOD_NM</Delete>
<Delete>SRV_NM</Delete>
<Delete>TXN_CD</Delete>
<Delete>SYS_TM</Delete>
<Delete>SYS_DT</Delete>
<Delete>EVT_LVL</Delete>
<Delete>EVT_TYP</Delete>
<Delete>EVT_CTT</Delete>
<Delete>LOG_NO</Delete>
<Set>Num1=ADD($Num1,1)</Set>
</While>
</Function>
<Function name="AnalyzeToAlarm"><!--分析数据入告警表-->
<DynSentence name="queryattrnm">
<Sentence>
Select ATTR_NM FROM MNGTMNTATTR WHERE MNT_ID=? and
RES_TYP=?
</Sentence>
<Fields>MNT_ID|RES_TYP|</Fields>
</DynSentence>
<Process>
<!-- 资源数据数目 -->
<Exec func="PUB:GetValue" error="IGNORE">
<Arg name="SourName" value="STRCAT(MNT_DATA.,$RES_TYP,_COUNT)" />
<Arg name="DestName" value="CNT" />
</Exec>
<Set>cccc=$CNT</Set>
<If condition="STRCMP($FLG,1)=0">
<Set>Num1=1</Set>
<Exec func="PUB:QueryInGroup" error="IGNORE">
<Arg name="SqlCmd" value="queryattrnm" />
<Arg name="RecordName" value="GROUP" />
</Exec>
<If condition="~RetCod=2">
<Exec func="PUB:GWAAddMsg">
<!-- @msg {1},请稍后再试! -->
<Arg name="MsgCd" value="MON20001" />
<Arg name="MsgDat" value="无该探针的告警信息" />
</Exec>
<Return />
</If>
<ElseIf condition="~RetCod!=0">
<Exec func="PUB:GWAAddMsg">
<!-- @msg {1},请稍后再试! -->
<Arg name="MsgCd" value="MON10001" />
<Arg name="MsgDat" value="数据库系统正在维护中" />
</Exec>
<Return />
</ElseIf>
<Set>ATTR_CNT=$GROUP_NUM</Set>
<While condition="INTCMP($Num1,2,$CNT)">
<Set>ATTR_Num=1</Set>
<!-- 根据资源属性名和属性值拼接传入参数 -->
<While condition="INTCMP($ATTR_Num,2,$ATTR_CNT)">
<Set>ATTR_NM=$GROUP[$ATTR_Num].ATTR_NM</Set>
<Exec func="PUB:GetValue" error="IGNORE">
<Arg name="SourName" value="STRCAT(MNT_DATA.,$RES_TYP,_,$Num1,.,$ATTR_NM)" />
<Arg name="DestName" value="ATTR_VALUE" /><!--对于属性名采集的数值-->
</Exec>
<Set>bbbb=$ATTR_VALUE</Set>
<Set>multi_check=STRCAT($multi_check,|,$ATTR_NM,=,$ATTR_VALUE)
</Set>
<Set>ATTR_Num=ADD($ATTR_Num,1)</Set>
</While>
<Exec func="MON:CheckDataByRule">
<Arg name="MONT_ID" value="$MNT_ID" />
<Arg name="REGION" value="$REGION" />
<Arg name="NOD_NM" value="$NOD_NM" />
<Arg name="MULTI_CHECK" value="$multi_check" />
</Exec>
<Delete>ATTR_Num</Delete>
<Delete>multi_check</Delete>
<Set>Num1=ADD($Num1,1)</Set>
</While>
</If>
<ElseIf condition="STRCMP($FLG,4)=0">
<Set>Num1=1</Set>
<Set>ALM_LVL=3</Set><!--告警级别-->
<Set>ALARMFLAG=$FLG</Set><!--告警方式-->
<Set>ALM_RES=$RES_TYP</Set><!--告警资源-->
<Set>ALM_RMK=</Set><!--备注-->
<While condition="INTCMP($Num1,2,$CNT)">
<Exec func="PUB:GetValue" error="IGNORE">
<Arg name="SourName" value="STRCAT(MNT_DATA.,$RES_TYP,_,$Num1,.ALMMSG)" />
<Arg name="DestName" value="ALM_VALUE" /><!--告警值-->
</Exec>
<Set>aaaaa=$ALM_VALUE</Set>
<Set>attrName=STRCAT(ALM_RES=,$ALM_RES,|ALM_VALUE=,$ALM_VALUE,|ALM_LVL=,$ALM_LVL)
</Set>
<Exec func="MON:CheckDataByRule"><!--调用组件插入告警表 -->
<Arg name="MONT_ID" value="$MNT_ID" />
<Arg name="REGION" value="$REGION" />
<Arg name="NOD_NM" value="$NOD_NM" />
<Arg name="CHECK_FLAG" value="$FLG" />
<Arg name="MULTI_CHECK" value="$attrName" />
</Exec>
<Set>Num1=ADD($Num1,1)</Set>
</While>
</ElseIf>
</Process>
</Function>
</Package>