Sis intergration monitor

Step by Step description of our problem :


1. We import Measurements via SiteScope Logfile Integration to BAC :

Logfile looks like this :
30.03.2009;00:49:01;ATDEV1;MAINFRAME;100;MF-SLA3
30.03.2009;00:49:01;AIL1;MAINFRAME;100;MF-SLA3
30.03.2009;01:47:01;ATDEV1;MAINFRAME;80;MF-SLA3
30.03.2009;01:47:01;AIL1;MAINFRAME;80;MF-SLA3
30.03.2009;02:48:01;ATDEV1;MAINFRAME;66.666667;MF-SLA3
30.03.2009;02:48:01;AIL1;MAINFRAME;66.666667;MF-SLA3
30.03.2009;03:49:01;ATDEV1;MAINFRAME;100;MF-SLA3
30.03.2009;03:49:01;AIL1;MAINFRAME;100;MF-SLA3
30.03.2009;04:47:01;ATDEV1;MAINFRAME;80;MF-SLA3
30.03.2009;04:47:01;AIL1;MAINFRAME;80;MF-SLA3
30.03.2009;05:48:01;ATDEV1;MAINFRAME;66.666667;MF-SLA3
30.03.2009;05:48:01;AIL1;MAINFRAME;66.666667;MF-SLA3
30.03.2009;06:49:01;ATDEV1;MAINFRAME;100;MF-SLA3
30.03.2009;06:49:01;AIL1;MAINFRAME;100;MF-SLA3
30.03.2009;07:47:01;ATDEV1;MAINFRAME;80;MF-SLA3
30.03.2009;07:47:01;AIL1;MAINFRAME;80;MF-SLA3
30.03.2009;08:48:01;ATDEV1;MAINFRAME;66.666667;MF-SLA3
30.03.2009;08:48:01;AIL1;MAINFRAME;66.666667;MF-SLA3
30.03.2009;09:49:01;ATDEV1;MAINFRAME;100;MF-SLA3
30.03.2009;09:49:01;AIL1;MAINFRAME;100;MF-SLA3
30.03.2009;10:47:01;ATDEV1;MAINFRAME;80;MF-SLA3
30.03.2009;10:47:01;AIL1;MAINFRAME;80;MF-SLA3
30.03.2009;11:48:01;ATDEV1;MAINFRAME;66.666667;MF-SLA3
30.03.2009;11:48:01;AIL1;MAINFRAME;66.666667;MF-SLA3
30.03.2009;12:49:01;ATDEV1;MAINFRAME;100;MF-SLA3
30.03.2009;12:49:01;AIL1;MAINFRAME;100;MF-SLA3




regular Expression : /(\d+\.\d+\.\d+\;\d+:\d+:\d+);(\w+);(\w+);(\d+|\d+\.\d+);(.*)/

Field mapping Script :

#####################################################################
# EMS Integration metrics config file #
# Use this file to send metrics to Business Availability Center #
# #
# Refer to "Integration Monitor Configuration Files" in SiteScope #
# documentation for more information. #
#####################################################################

[$DEFAULT_PARAMETERS$]
# Time stamp in seconds since Jan 1st 1970 format.
# Use time() to get the sitescope host time or str_to_seconds() to read a value from the input event
TimeStamp:DOUBLE=str_to_seconds($group0, "dd.MM.yyyy;HH:mm:ss")

# Quailty in SiteScope terms: QUALITY_ERROR, QUALITY_WARNING, QUALITY_GOOD
#Quality:INT="1".equals($group3) ? QUALITY_GOOD : ("0".equals($group3) ? QUALITY_ERROR : QUALITY_GOOD)
Quality:INT=QUALITY_GOOD

# Logical monitor name (e.g. "Whatsup Gold log integration")
MonitorName= "LPAR_Availability_" + $group1

# The name of the host / device that caused this event. If the name cannot be determined an IP address can be used instead
TargetName=$group1
target_name=$group1

# The status string of the monitor (e.g: "Log file read, 3 matches found")
MonitorState="LPAR Availability for " + $group1 + " = " + $group3 + " - " + $group4

subject="system"

# The monitor type (e.g. "Log Monitor", "CPU Monitor" )
MonitorType="LPAR"
data_source="LPAR"
host_type="lpar"
target_ip="127.0.0.1"
host_os="0.0.0.0.0.0"
host_description="LPAR"


# Measurement name (e.g. "matches per minute", "CPU Utilization")
MeasurementName(1)="LPAR_Availability"
# Value as double
Value(1):DOUBLE=$group3

############################################################
# In order to send more than one measurement #
# per DB row / Log file line add pairs #
# MeasurementName(*)= #
# Value(*):DOUBLE= #
# where * = 1,2,.,n #
# ##########################################################


[allR]
$MATCH=true
$ACTION=TOPAZ_BUS_POST(ss_t)


Topology Script :


# Please write your script here...
import logger
import common_lib
import ems_lib
import system_lib


# Java imports
from java.lang import *
from java.util import *
from appilog.common.system.types.vectors import ObjectStateHolderVector
from appilog.common.system.types import ObjectStateHolder
from appilog.common.system.types import AttributeStateHolder

def DiscoveryMain(Framework):
global OSHVResult
OSHVResult = ObjectStateHolderVector()

monitorSource = Framework.getDestinationAttribute("data_source")

########## Custom

host_name = Framework.getDestinationAttribute("target_name")
short_host_name = Framework.getDestinationAttribute("target_name")
host_ip = Framework.getDestinationAttribute("target_ip")

default_domain = Framework.getDestinationAttribute("domain_name")
#host_domain = DomainScopeManager.getDomainByIp(host_ip, default_domain)
domainName = DomainScopeManager.getDomainByIp(host_ip, default_domain)

#host_type = Framework.getDestinationAttribute("host_type")
host_type = "lpar"

logger.info("OSHVector contains ", host_type)
logger.info("OSHVector contains ", host_ip)
logger.info("OSHVector contains XXXXXX", host_domain)
logger.info("OSHVector contains ", host_type)


hostType = "lpar"
logger.info("OSHVector contains", hostType)
host = ObjectStateHolder(hostType)

if host_ip != None:
host_id = host_ip + " " + domainName
else:
host_id = host_name + " " + domainName

host.setAttribute("host_key", host_id)
host.setAttribute("host_dnsname", host_name)
host.setAttribute("host_hostname", short_host_name)

host.setBoolAttribute("root_enableageing", "true")
host.setBoolAttribute("host_iscomplete","true")


###### #host_os = Framework.getDestinationAttribute("host_os")
host_os = "0.0.0.0.0.0"
if host_os != None:
host.setAttribute("host_os", host_os)

#host_description = Framework.getDestinationAttribute("host_description")
host_description = "LPAR"
if host_description != None:
host.setAttribute("data_description", host_description)


# creating the host
OSHVResult.add(host)

########
# creating the ems monitor (that monitors the host)
#monitorId = String.valueOf(host.getAttribute("host_dnsname").getValue())
monitorId = Framework.getDestinationAttribute("target_name")
monitorHost = ems_lib.createEMSMonitor(monitorId, monitorSource, "lpar")
OSHVResult.add(monitorHost)

# connecting the ems monitor to the host
linkHostMonitor = common_lib.createAgingLink("monitored_by", host, monitorHost)
OSHVResult.add(linkHostMonitor)

monitoredCIType = String.valueOf(monitorHost.getAttribute("monitored_ci_type").getValue())

Framework.setUserObject("result_object", monitoredCIType)

return OSHVResult


In BAC SAM we see the data :


Measurement Name = LPAR_Availabilty









Cloned KPI : Availability LPAR (ID = 2006)


New Business Rule (cloned from : SiteScope Measurement Rule) with ID = 2003








<condition cmdb-class="sitescope_monitor">
<property-condition name="monitor_type" operator="LIKE" value="%LPAR%"/>
<property-condition name="managed_by" operator="EQ" value="Discovery:SiteScope"/>
</condition>

<task-config>
<contextmenu id="ssMonitorMenu"/>
<kpis-config>
<kpi-config type="1">
<rule type="4"/>
<trinity-selector override-ci-selector="true">
<CompositeSelector logicalOp="OR">
<CompositeSelector logicalOp="AND">
<Selector key="sampleType" op="EQ" type="String" value="ss_monitor_t"/>
<Selector key="u_iConnectionId" op="EQ"
type="Long" value="RefProp:monitor_id"/>
<Selector key="u_iSessionId" op="EQ" type="Long" value="RefProp:session_id"/>
</CompositeSelector>
<CompositeSelector logicalOp="AND">
<Selector key="sampleType" op="EQ" type="String" value="ss_t"/>
<Selector key="u_iConnectionId" op="EQ"
type="Long" value="RefProp:monitor_id"/>
<Selector key="u_iSessionId" op="EQ" type="Long" value="RefProp:session_id"/>
</CompositeSelector>
</CompositeSelector>
</trinity-selector>
</kpi-config>
<kpi-config type="2006">
<rule type="2003">
<rule-parameter key="No data timeout" type="Long" value="86400"/>
</rule>
<trinity-selector>
<CompositeSelector logicalOp="AND">
<Selector key="sampleType" op="EQ" type="String" value="ss_t"/>
<Selector key="szCategoryName" op="EQ" type="String" value="lpar_availability"/>
<Selector key="u_iConnectionId" op="EQ" type="Long" value="RefProp:monitor_id"/>
<Selector key="u_iSessionId" op="EQ" type="Long" value="RefProp:session_id"/>
</CompositeSelector>
</trinity-selector>
</kpi-config>
</kpis-config>
</task-config>


2. Now we want to use these data also in SLM :

So, we created a CI based SLA :





Then we added the SiteScope Performance KPI to our SLA CIs ( in addition to the SiteScope Availability KPI, which was already there).


Business Rule = SiteScope Monitor Average Value



As Measurement Type we entered the Measurement Name = LPAR_Availability (see above),
which holds the required data.


In addition, we enabled the measurement type filtering, as mentioned in the docs :


Edit the XML File to Enable Measurement Type Filtering
a. Open the following file: <Data Processing server root directory>\conf\ ble_offline_dssampletype_adapters.xml.
b. Within the XML file, find the following parent tag:
<DSSampleAdapter Type="legacy" SampleType="ss_t">.
Within this tag, add the following text after the line </FilteringFields>:
<SelectingFields>
<Field Name="time_stamp"/>
<Field Name="start_time"/>
<Field Name="frequency"/>
<Field Name="cfg_frequency"/>
<Field Name="u_iSessionId "/>
<Field Name="u_iMeasurementId"/>
<Field Name="szCategoryName"/>
<Field Name="u_iMonitorId"/>
<Field Name="u_iTargetId"/>
<Field Name="u_iConnectionId"/>
<Field Name="u_iStatus"/>
<Field Name="u_iCategoryId"/>
<Field Name="u_iQuality"/>
<Field Name="instance_id"/>
<Field Name="u_iHasProperty"/>
<Field Name="iErrCode"/>
<Field Name="dValue"/>
<Field Name="monitor_curr_quality"/>
</SelectingFields>
c. Save the edited XML file and restart the offline engine.



 SLA works fine
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值