使用探测器监控

介绍

Cloudify使用probesgroovy块来提供监控应用程序服务配置以及可用性和性能的功能

Probes是配方中的groovy闭包程序,probes放在配方的生命周期部分

使用details probes监控配置过程

Cloudify可以使用不同的应用程序apiJMXJDBCRESTCLI等等来监控配置过程。你只需要实现details块并返回一个和配置属性相同的字符串类型的键和数值型的值的Map对象

使用JMX probe来监控JBoss属性:

 

details{

builder = new JmxBuilder()

key = "Bind Address"

beanName = "jboss.system:type=ServerConfig"

attribute = "BindAddress"

RMIConnector client = builder.clientConnector( port: 1099)

client.connect()

connection = client.getMBeanServerConnection();

value = connection.getAttribute(beanName, attribute);

client.close()

return [key:value]

}

使用probes度量监控性能

Cloudify可以使用不同的应用程序apiJMXJDBCRESTCLI等等来监控配置过程。你只需要实现details块并返回一个和配置属性相同的字符串类型的键和数值型的值的Map对象。

使用JMX probe监控Tomcat指标:

monitors{

builder = new JmxBuilder()

key = "Active Sessions"

key1 = "Backlog"

beanName = "Catalina:type=Manager,context=/travel,host=localhost"

attribute = "activeSessions"

attribute1 = "backlog"

RMIConnector client = builder.clientConnector( port: 1099)

client.connect()

connection = client.getMBeanServerConnection();

value = connection.getAttribute(beanName, attribute);

value1 = connection.getAttribute(beanName, attribute1);

client.close()

return [key:value,key1:value1]

}

使用启动和关闭检测probes监控可用性

Cloudify在安装依赖服务前需要检测你的服务可用性,相似地,Cloudify需要检测挂掉的层来维持SLA服务(服务等级协议),出于这些目的,Cloudify提供startDetectionstopDetection Probes.

你可以在平台或应用层同时实现这个两种方式来检测你的应用或基础设施的非功能性部分

The start detection probe

startDetection块返回一个boolean类型的值,它会在生命周期启动成功后紧接着被USM重复调用几次,如果返回true服务实例将被声明为正在运行,如果几次重复调用都返回fail这个服务实例将会被卸载。下面的例子是检测服务实例监听端口36683667来标识启动和运行,一旦返回true这个服务就被认为是启动的。

startDetection {

ServiceUtils.isPortsOccupied([3668,3667], "127.0.0.1")

}

下面的例子是检测MySQL在应用模式里有一个特定的表来标识数据库已经安装并准备好为应用业务逻辑服务。

def sql = Sql.newInstance("jdbc:mysql://localhost:3306/${dbName}", "${dbUsder}",

"${dbPassword}", "com.mysql.jdbc.Driver")

rows = sql.rows("SELECT table_name FROM information_schema.tables "+

"WHERE table_schema = '${dbName}' AND table_name = '${tablename}'");

return (rows.length > 0)

The stop detection probe

stopDetection probe会在服务声明为运行后被定期调用。它会检查每一个服务实例是否还活着。如果probe返回true,实例会被声明为死亡并且USM会尝试重新启动或安装一个新的实例。

注意:如果你实现了restart事件,那么Cloudify将调用restart事件而start事件只是一个备份事件

下面的例子是监听服务实例7777端口来检测服务启动和运行。一旦返回false这个服务实例将被认为是死亡的。

stopDetection {

ServiceUtils.isPortOccupied([7777])

}


你可能感兴趣的:(使用探测器监控)