本教程将一步步演示怎么使用BMC Atrium Orchestrator (BAO) Vmware Infrastructure Event Monitor来监控VSphere Webservice的事件消息,通过匹配定制的事件,实现对vcenter事件的实时监控,并根据监控到的信息采取一定行动。你也可以根据此教程来调用其他monitor类型的adapter,并根据monitor到的信息进行进一步操作。我这里主要对vcenter虚拟机的开关机事件进行监控。

0) 概述

  BAO monitoring涉及4个组件:

  • The Monitor Adapter--用于monitor的配置
  • The Adapter Event--事件生成
  • The Rules--规则创建
  • The Process (Workflow)--工作流的定制

整个工作流程是这样的:Monitor Adapter监听VSphere Webservice发出的事件消息,当Monitor Adapter接收到消息后,把它传送到Adapter Manager,并自动创建Monitor Event。Rules 根据条件匹配相应的事件,如果命中则进入Workflow process(可以将事件信息传送到workflow中)。如果没有匹配上则直接pass。以上所有的组件都通过XML进行管理,组件之间可以直接通过xml的形式进行talk。

分下面几步进行介绍:

  1. Adapter Configuration(s) - Monitor Adapter:配置Adapter
  2. Adapter Operation Verification: 在vcenter进行开关机操作,并在BAO中生成相应的Adapter Event
  3. Workflow - Process & Rules:创建规则和工作流

1) Adapter Configuration(s) - Monitor Adapter

 1.1 配置 VIS event monitor adapter,具体配置参考如下文档:

https://docs.bmc.com/docs/display/public/baoc201401/Configuring+the+VIS+event+monitor+adapter

我配置完后的信息如下,由于我只监控虚拟机开关机事件,所以我添加的event type包括:VmStartingEvent、VmPoweredOffEvent

<config>
  <soap-url>https://10.200.108.67:443/sdk/vim</soap-url>
  <transport>https-rpc</transport>
  <user-name>[email protected]</user-name>
  <password>P@ssw0rd</password>
  <use-ssl-certificate>false</use-ssl-certificate>
  <install-certificate>true</install-certificate>
  <passphrase>changeit</passphrase>
  <allow-unsigned-certificate>false</allow-unsigned-certificate>
  <return-history>false</return-history>
  <suppress-version-info>false</suppress-version-info>
  <event-types>
    <event-type>VmStartingEvent</event-type>
    <event-type>VmPoweredOffEvent</event-type>
  </event-types>
</config>

注意:此处monitor adapter的名字为:"monitor67",后面会用到这个名字

1.2 激活Adapter

登录BAO CDP grid,激活新增的monitor67。

2) Adapter Operation Verification生成Adapter Event

2.1 Logging

设置logging模式,登录BAO CDP→Manage→GRID→Logging Level(=DEEBUG),通过log,可以获取monitor到的事件xml,并可根据XML进行解析出有用的信息

Log的位置默认为/u01/bmc/ao-platform/cdp/tomcat/logs/grid.log,关键字可使用"adapter-event"

2.2 登录vcenter,对虚拟机进行开关机,生成开关机消息

一旦生成了开关机的消息,便会生成adapter event

2.3 分析grid.log,获取对应的Adapter-event

我获取的event如下:

<adapter-event>
    <source-adapter>monitor67</source-adapter>
    <event>VMware Events Monitor adapter:</event>
    <data>
        <vmware-monitor-event>
            <returnval>
                <version>13</version>
                <changeSet>
                    <name>latestPage[284873]</name>
                    <op>remove</op>
                </changeSet>
                <changeSet>
                    <name>latestPage[286219]</name>
                    <op>add</op>
                    <VmPoweredOffEvent>
                        <key>286219</key>
                        <chainId>286219</chainId>
                        <createdTime>2016-08-17T01:16:55.895456Z</createdTime>
                        <userName/>
                        <datacenter>
                            <name>CEBBANK</name>
                            <Datacenter>datacenter-2</Datacenter>
                        </datacenter>
                        <computeResource>
                            <name>Cluster2</name>
                            <ClusterComputeResource>domain-c385</ClusterComputeResource>
                        </computeResource>
                        <host>
                            <name>10.200.236.15</name>
                            <HostSystem>host-417</HostSystem>
                        </host>
                        <vm>
                            <name>luobo2</name>
                            <VirtualMachine>vm-3251</VirtualMachine>
                            <uuid>422984fe-31ee-0261-e0f8-21f53cb614bf</uuid>
                        </vm>
                        <fullFormattedMessage>CEBBANK 中 10.200.236.15 上的 luobo2 已关闭电源</fullFormattedMessage>
                        <changeTag/>
                        <template>false</template>
                        <virtualCenter>10.200.108.67</virtualCenter>
                    </VmPoweredOffEvent>
                </changeSet>
            </returnval>
        </vmware-monitor-event>
    </data>
</adapter-event>

注意:adapter event 就是后面workflow rules (below)将要用作判断条件,去运行workflow中process的。

通过上面的event,我们可以获取到关机的//vm/name和//CreateTime信息,这些信息我们后面会用file记录下来,验证monitor效果。

3) Workflow - Process & Rules

使用BAO Development Studio创建workflow,这个workflow将监视monitor Adapter的事件,解析出有用的数据(//vm/name和//CreateTime),并把数据写到服务器的某个文件里。主要步骤包括:创建project、添加file append process、创建rules

3.1 创建project,命名为test_monitor

3.2 创建process,,命名为UpdateStatus

必须先创建process,然后创建rules,因为创建rules的时候需要指定process

这个process包括3个activities:Start、Append、Stop。Append Activity位于 "AutoPilot-AD-Utilities" adapter module→Terminal → File→Append,如下图

一步步使用BMC Atrium Orchestrator Vmware Infrastructure Event Monitor-LMLPHP

分别说说这前两个activities

START ACTIVITY 

  在Start上你需要创建一个输入参数,名字为"inputevent",这个参数是用于Adapter Manager传递符合rules规则的Adapter Events的,它传送的是<data>节点的数据,所以这个参数非常重要,并且只能命名为"inputevent"。"inputevent"可以是局部的也可以全局的context item。

APPEND ACTIVITY

Append activity包括3个输入,分别是: adapter name, file name, and line 1。

adapter name 要填写ro-adapter-file的名字,我这里是"File Adapter"。

File Name: /tmp/montor.txt (BAO server上的文件,输出内容将写到这里)

Line 1 就是要写入文件的具体信息. 这里我要写入的是vm name,由于vm name需要通过解析XML来获取,所以这里需要通过Advanced transformation editor把它的实际值获取出来。XPath transformation如下:

string(//vmware-monitor-event/returnval/changeSet/VmPoweredOffEvent/vm/name)

它将把下文XML中vm 的name解析出来,运行测试你的process,在Job Input Parameters输入下面的xml

    <data>
        <vmware-monitor-event>
            <returnval>
                <version>13</version>
                <changeSet>
                    <name>latestPage[284873]</name>
                    <op>remove</op>
                </changeSet>
                <changeSet>
                    <name>latestPage[286219]</name>
                    <op>add</op>
                    <VmPoweredOffEvent>
                        <key>286219</key>
                        <chainId>286219</chainId>
                        <createdTime>2016-08-17T01:16:55.895456Z</createdTime>
                        <userName/>
                        <datacenter>
                            <name>CEBBANK</name>
                            <Datacenter>datacenter-2</Datacenter>
                        </datacenter>
                        <computeResource>
                            <name>Cluster2</name>
                            <ClusterComputeResource>domain-c385</ClusterComputeResource>
                        </computeResource>
                        <host>
                            <name>10.200.236.15</name>
                            <HostSystem>host-417</HostSystem>
                        </host>
                        <vm>
                            <name>luobo2</name>
                            <VirtualMachine>vm-3251</VirtualMachine>
                            <uuid>422984fe-31ee-0261-e0f8-21f53cb614bf</uuid>
                        </vm>
                        <fullFormattedMessage>CEBBANK 中 10.200.236.15 上的 luobo2 已关闭电源</fullFormattedMessage>
                        <changeTag/>
                        <template>false</template>
                        <virtualCenter>10.200.108.67</virtualCenter>
                    </VmPoweredOffEvent>
                </changeSet>
            </returnval>
        </vmware-monitor-event>
    </data>

一步步使用BMC Atrium Orchestrator Vmware Infrastructure Event Monitor-LMLPHP

到BAO服务器/tmp/montor.txt文件中,查看是否增加了一行内容:luobo2

 3.3 创建Rules

Rules只有if条件,一旦满足条件,它就会把monitor Adapter event中的<data>节点的信息全部传递给"inputevent"参数。如果不满足条件则自动忽略当前event。一个rules只能执行一个process。当然你可以创建多个Rules来调用不同的process。

配置Rules:

填写Rule的名字,指定我们上面创建的process "UpdateStatus", 定义XML条件用于匹配指定的事件消息。下面是我的配置:

rule name:MonitorVmStatus

rule要执行的process::test_monitor:UpdateStatus

Match:ALL(满足所有条件)

Source: string(//source-adapter)

Comparitor: =

Value: "monitor67" (一定要带双引号)

说明:XML Xpath Query将搜索我们上面配置的monitor Adapter ,并把"monitor67"的事件消息移交给Adapter Manager作为Adapter event。最终配置如图:

一步步使用BMC Atrium Orchestrator Vmware Infrastructure Event Monitor-LMLPHP

保存整个module并上传到CDP repository。

所有的创建完成,只需要等vcenter发生虚拟机开关机事件,便可以把vm的name写入到BAO 服务器的/tmp/montor.txt 文件中。

注意:如果你在window环境下打开了/tmp/montor.txt 文件,那么文件将阻止写入,必须关掉才行。

参考:

基本是下面的中文版

Tutorial - BMC Atrium Orchestrator JMS Monitor Adapter with Apache ActiveMQ

VMware Infrastructure Object Model Overview可以通过此参考订阅事件的类型,Data Object Types-VmEvent

05-06 19:35