上一主题: 监控组件

下一主题: 交换机

MON:应用监控组件

最新版本:3.0.3-1

MON:应用监控组件

概览

目录

系统

类别

监控

用户卷

yes

最小 内存

288 MB

操作系统

Linux

约束

no

功能概述

MON 是一个应用监控组件,可从应用中的其他组件收集性能和资源使用统计信息(即计数器)。 组件通过 mon 终端将其计数器报告给 MON。

MON 提供了一个可视界面,使用户可以通过 Web 浏览器访问和查看组件计数器。 通过该可视界面,用户可以创建包含一个或多个图表的视图。 每个图表都显示了一个或多个组件计数器。 可通过下列方法访问该可视界面:

有关访问和使用该可视界面的更多详细信息,请参阅《用户界面参考指南》。

MON 还支持对组件计数器进行后台监控。 MON 将在后台监控 alarm_view 属性指定的单个视图中的所有计数器。 每当其中的某一个计数器低于或超过指定的阈值时,MON 都会在 CA 3Tera AppLogic 网格控制器上生成警报(即在显示板上发布消息)。 无需打开 MON 可视界面的浏览器就能使 MON 在后台监控组件计数器。

边界

资源

资源

最小值

最大值

默认值

CPU

0.05

4

0.10

内存

288 MB

2 GB

288 MB

带宽

1 Mbps

500 Mbps

100 Mbps

终端

名称

目录

协议

说明

mon

in

CCE

接收性能和资源使用统计信息的终端。

web

in

HTTP

用于访问和查看组件计数器的终端。

aux

in

Any

用于以编程方式收集计数器信息的输入。

默认接口已启用。 组件使用默认接口向 CA 3Tera AppLogic 报告它已成功启动。 还可以使用该接口以安全 shell 方式从 CA 3Tera AppLogic 控制器登录到组件(主要是为了诊断和故障排除)。 CA 3Tera AppLogic GUI 使用默认接口来访问 MON 组件的可视界面。

用户卷

说明

data

读/写,为 MON 的持续状态提供存储(例如:视图及图表)。

属性

属性名

类型

说明

title

字符串

要在 MON 的可视界面的浏览器窗口中显示的标题。 如果为空,则使用应用名称。 默认值为空。

用户

字符串

进行基于 Web 的身份验证所用的用户名。 只有在通过 web 终端(即通过网关)访问 MON 时,才使用身份验证。 在通过 CA 3Tera AppLogic GUI 访问 MON 的可视界面时没有身份验证。 如果为空,则不进行身份验证。 默认值为空。

password

字符串

进行基于 Web 的身份验证所用的密码。 如果 user 为空,则不使用该属性。 默认值为空。

alarm_view

字符串

包含要在后台监控的组件计数器的视图的名称。 只能指定一个视图名称。 如果为空,则禁用后台监控。 默认值为空。

错误消息

当组件无法启动时,网格控制器的组件日志文件或系统日志中可能会出现下列消息:

httpd 未启动

计数器组和计数器

为所有组件定义了下列计数器组:

有关如何在组件中创建并监控自定义计数器的信息,请参阅创建自定义计数器。

典型用法

通过 CA 3Tera AppLogic GUI 监控应用

下图显示将 MON 用于简单应用的典型用法。 在该应用中,只能通过 CA 3Tera AppLogic GUI 访问监控器。

简单应用的 MON 的典型用法

正在使用的组件:

所有组件的 mon 终端都连接到 mon 的 mon 终端。

通过端口 80 上的 CA 3Tera AppLogic GUI 和 IP 地址监控应用

下图显示如何使用 MON 通过 CA 3Tera AppLogic GUI 或 IP 地址来访问 Application 监控器。

示例:如何使用 MON 来通过 AppLogic GUI 或 IP 地址访问 Application 监控器

正在使用的组件:

所有组件的 mon 终端都连接到 mon 的 mon 终端。

admin 的 out 终端连接到 mon 的 Web 终端,因此用户可以通过在 admin 中的 ip_addr 属性指定的 IP 地址来访问监控器。

通过端口 8080 上的 CA 3Tera AppLogic GUI 和应用 IP 地址监控应用

下图显示如何使用 MON 通过端口 8080 上的 CA 3Tera AppLogic GUI 或通过应用 IP 地址来访问 Application 监控器。

示例:如何使用 MON 来通过 AppLogic GUI 或端口 8080 上的应用 IP 地址访问 Application 监控器

正在使用的组件:

所有组件的 mon 终端都连接到 mon 的 mon 终端。

INSSLR 配置为将 http 流量转发至 WEBx8,将其他所有 TCP 流量转发至 aux 终端。 PS8 配置为通过 out8 将端口 8080 上的所有流量转发至 mon 的 Web 终端。 这样,用户可以通过端口 8080 上的 INSSLR 中的 ip_addr 属性指定的应用 IP 地址来监控应用。

注意:MAIL 组件不随 CA 3Tera AppLogic 一起发布。

后台监控

该用例描述如何使用 MON 在后台监控组件计数器,并在组件计数器超出范围时让其生成警报。

  1. 将 MON 中的 alarm_view 属性设置为要监控的计数器所在视图的名称。
  2. 启动(重新启动)应用。
  3. 登录到 Application 监控器。
  4. 单击“新建”按钮创建新视图,并为其指定与 alarm_view 属性相同的名称。
  5. 单击“添加图表”按钮创建新图表并将其添加到该视图中。
  6. 选择要监控的计数器并将其添加到该图表中。
  7. 通过填充“警报”旁边的两个框来设置警报阈值。
    要设置最小阈值,请在左侧文本框中输入值。 如果将该文本框留空,则没有最小阈值。
    要设置最大阈值,请在右侧文本框中输入值。 如果将该文本框留空,则没有最大阈值。
  8. 重复步骤 5-7,以监控其他组件计数器。

只要组件计数器低于或超过指定的阈值,MON 都会向 CA 3Tera AppLogic 控制器中生成警报。 然后会向显示板记录一条消息,指定哪个组件的哪个计数器超出范围。 对于每个组件,CA 3Tera AppLogic 控制器只将最后一条警报记录到显示板,但如果收到针对该组件的多条警报,则会在显示板消息中指定。 所有警报都会记录到 CA 3Tera AppLogic 控制器上的 /var/log/messages 中。

注:无需打开 Application 监控器的浏览器就能使 MON 在后台监控组件计数器。

停止监控特定组件计数器:

要禁用后台监控,请执行以下操作之一:

清除 MON 上的 alarm_view 属性并重新启动 MON 实例(或重新启动应用)。

数据收集接口

从版本 1.1.3 开始,MON 组件会提供与 REST 服务类似的数据收集 API,它可以 XML、JSON 和 UDL 格式导出计数器配置和值。 有关该 API 的详细信息,请访问 MonDataCollectionInterface。

说明

已知限制

要通过 CA 3Tera AppLogic GUI 监控应用,应用中的 MON 组件名称应是 mon。

组件内所用的开源和第三方软件

软件

版本

已修改

许可

说明

CGI.pm

3.05

免费

CPAN 上的主页

perl-CGI-Session

4.03

Perl(Artistic 和 GPLv2)

CPAN 上的主页

perl-Carp-Assert

0.18

Perl(Artistic 和 GPLv2)

N/A

perl-Data-Dumper

2.121

Perl(Artistic 和 GPLv2)

N/A

perl-Error

0.15

Perl(Artistic 和 GPLv2)

N/A

perl-IPC-Run

0.80

Perl(Artistic 和 GPLv2)

N/A

cups-libs

1.1.22-0.rc1.8.9

带有例外的 LGPL。 阅读源中的 LICENSE.txt 文件。

N/A

file

4.10-2

BSD-like

N/A

freetype

2.1.9-8

FreeType 许可和 GPLv2

N/A

httpd

2.0.63

Apache 许可

N/A

perl-Error

0.15-1

Perl(Artistic 和 GPLv2)

CPAN 上的主页

samba

3.0.10-1.fc3

GPLv3

N/A

mod_perl

2.0.2-6.3

GPLv2

N/A

组件计数器

标准组件计数器列表

概览

本文档定义了 CCA 导出的所有标准计数器的列表。 CCA 是在所有 CA 3Tera AppLogic 组件中运行的计数器收集代理。 CCA 用于将计数器报告给 MON 组件公开的监控 GUI。 在某些支持的组件平台上,这些计数器的可用性可能有限制(如下面的计数器表中所述)。 如果组件操作系统支持某个给定的计数器,则当组件的 mon 输出终端连接到 MON 组件时,该计数器应该在 MON GUI 中可见。

CPU 摘要

计数器

Linux

Solaris

Windows

CPU I/O Wait

yes

yes

no

CPU Idle

yes

yes

yes

CPU Irq

yes

no

yes

CPU Nice

yes

no

no

CPU Soft Irq

yes

no

no

CPU System

yes

yes

yes

CPU Total

yes

yes

yes

CPU User

yes

yes

yes

文件系统

计数器

Linux

Solaris

Windows

Allocated File Handles

yes

yes

no

Block Devices

yes

yes

no

Block Devices Unique

yes

yes

no

Character Devices

yes

yes

no

Character Devices Unique

yes

yes

no

Directories

yes

yes

no

Directories Unique

yes

yes

no

Fifos

yes

yes

no

Fifos Unique

yes

yes

no

Free File Handles

yes

yes

no

Regular Files

yes

yes

no

Regular Files Unique

yes

yes

no

Sockets

yes

yes

no

Sockets Unique

yes

yes

no

Used File Handles

yes

yes

no

内存统计信息

计数器

Linux

Solaris

Windows

活动

yes

no

no

Buffers

yes

no

no

Cached

yes

no

yes

可用

yes

yes

yes

High Free

yes

no

no

High Total

yes

no

no

High Used

yes

no

no

Inactive

yes

no

no

Low Free

yes

no

no

Low Total

yes

no

no

Low Used

yes

no

no

Swap Cached

yes

no

no

Swap Free

yes

yes

no

Swap Pages IN

yes

yes

no

Swap Pages OUT

yes

yes

no

Swap Total

yes

yes

no

Swap Used

yes

yes

no

合计

yes

yes

no

已使用

yes

yes

no

排定程序

计数器

Linux

Solaris

Windows

Context switches

yes

yes

yes

Interrupts

yes

yes

yes

Jobs for 1 min

yes

yes

no

Jobs for 15 min

yes

yes

no

Jobs for 5 min

yes

yes

no

Pages IN

yes

yes

yes

Pages OUT

yes

yes

yes

Process startups

yes

yes

no

Processes blocked

yes

no

yes

Processes running

yes

no

yes

CPU#X

计数器

Linux

Solaris

Windows

CPU I/O Wait

yes

yes

no

CPU Idle

yes

yes

yes

CPU Irq

yes

no

yes

CPU Nice

yes

no

no

CPU Soft Irq

yes

no

yes

CPU System

yes

yes

yes

CPU Total

yes

yes

yes

CPU User

yes

yes

no

卷 X

计数器

Linux

Solaris

Windows

Bytes Read

yes

yes

yes

Bytes Written

yes

yes

yes

Disk Reads

yes

yes

yes

Disk Sectors Read

yes

yes

no

Disk Sectors Written

yes

yes

no

Disk Writes

yes

yes

yes

Free Files

yes

yes

no

可用空间

yes

yes

yes

Time Spent in Reads

yes

no

yes

Time Spent in Writes

yes

no

yes

Total Files

yes

yes

no

Total Space

yes

yes

no

Used Files

yes

yes

no

Used Space

yes

yes

no

终端 X

计数器

Linux

Solaris

Windows

Recvd bytes

yes

yes

yes

Recvd packets

yes

yes

yes

Sent bytes

yes

yes

yes

Sent packets

yes

yes

yes

自定义计数器

概览

每个运行 ccad(计数器收集代理)后台进程的组件允许第三方实用工具定义和收集自定义计数器。 此功能称为扩展接口,它使组件创建者可以选择通过标准 MON 用户界面来监控组件特定的计数器数据。

创建自定义计数器

要监控自定义计数器,您需要将计数器定义添加到 ccad 配置,并将实际计数器值馈送到 ccad

添加计数器定义

必须在可选的 /etc/ccad.conf 配置文件中定义自定义计数器(采用 UDL 格式)。 每次更改配置后,必须重新启动 ccad 后台进程,这样才能使更改生效。

下面是一个简单的示例配置:

counters Apache
   {
   pace = 1000
   pipe = /tmp/cca
   counter Total_Accesses
      {
      name        = "Total hits"
      desc        = "Total number of hits"
      units       = "#"
      type        = "MAX"
      }
   counter Total_kBytes
      {
      name        = "Total bytes"
      desc        = "Total number of bytes"
      units       = "bytes"
      type        = "MAX"
      }
   counter BusyWorkers
      {
      name        = "Active requests"
      desc        = "Number of active requests"
      units       = "#"
      type        = "MAX"
      }
   counter IdleWorkers
      {
      name        = "Idle servers"
      desc        = "Number of idle servers"
      units       = "#"
      type        = "MAX"
      }
   }

此示例定义了 4 个计数器。 每个计数器实体都支持以下属性:

稍后在 MON 中显示计数器时,根级计数器实体名称将用作实体名字。 另外,下列属性对此实体有意义:

除上面所述的计数器定义外,ccad.conf 允许对计数器进行统一分组。 可以通过将计数器放置在组实体中更深的一个级别来实现此目的,如下例中所示:

counters Plants
   {
   pace = 2000
   pipe = /my-pipe
   counter tree: desc = "Any tree" , units = "#"
   group Fruits
      {
      desc = "Delicious Fruits!!!"
      counter pears : desc = "Number of pears"   , units = "pears"
      counter apples: desc = "Number of apples"  , units = "apples"
      }
   group Vegetables
      {
      counter potato: desc = "Number of potatoes", units = "potatoes"
      counter tomato: desc = "Number of tomatoes", units = "tomatoes"
      }
   }

此配置在 MON 的 GUI 中生成 3 个自定义计数器实体-Plants、Delicious Fruits!!! 和 Vegetables,以及在它们之间分发的 5 个定义的计数器。 组支持 desc 属性(类似于计数器实体),与约束更强的组实体名称相比,该属性定义的组名称提供更丰富的信息。 计数器名称在配置文件中应当是唯一的,否则无法对重复的计数器名称执行计数器收集。

馈送计数器数据

让 ccad 使用适当的计数器定义运行后,需要馈送实际计数器值。 为此,请将计数器值写入 ccad 创建的命名管道(由 /etc/ccad.conf 中的管道属性指定,默认值为 /tmp/cca)。
正确格式为下列其中一项:

“计数器 = 值”(名称和值用 = 分开)

“计数器 : 值”(名称和值用 : 分开)
对于计数器集,应该通过在命名管道中 独行输出 . 或换页字符 (\f) 刷新(到 MON)。 计数器收集脚本(以 Bash 语言编写)可通过执行下列命令行将计数器馈送到 ccad:

echo "Total_Accesses = 31" > /tmp/cca
echo "Total_kBytes = 22241" > /tmp/cca
echo "BusyWorkers = 6" > /tmp/cca
echo "IdleWorkers = 34" > /tmp/cca
echo "." > /tmp/cca

应该按照 /etc/ccad.conf 中指定的每个 pace 毫秒值完成此操作

下面是一个可收集所需数据并将这些数据馈送到 ccad 的简单 bash 循环。 馈送的数据比所需数据要多,因为将所有收集的数据直接馈送到 ccad(这会忽略不是计数器值的行)比分析数据后再馈送到 ccad 要快一些:

while true; do
   curl -s http://in/server-status?auto | sed "s/^Total\ /Total_/g" > /tmp/cca # this parses the data so it matches out counter definitions
   sleep 1 || exit 4        
   echo "." > /tmp/cca

done

示例

Apache

注意:服务器启用“扩展状态”

#!/bin/bash

DEFAULT_PACE=1000
DEFAULT_PIPE=/tmp/cca
CCAD_CONF=/etc/ccad.conf
STATUS_URL='http://in/server-status?auto'
CURL=/usr/bin/curl
SED=/bin/sed
SLEEP=/bin/sleep
function get_value_from_config {
   CONF_VALUE=`grep -oE "$1[[:space:]]*=[[:space:]]*[^[:space:]]+" $CCAD_CONF |cut -d"=" -f 2|tr -d " "`
}
get_value_from_config "pace"
PACE=${CONF_VALUE:-$DEFAULT_PACE}
PACE=$(( $PACE / 1000 ))
get_value_from_config "pipe"
PIPE=${CONF_VALUE:-$DEFAULT_PIPE}
test -p $PIPE || exit 3
while true; do
   $CURL -s "$STATUS_URL" | $SED "s/^Total\ /Total_/g" > $PIPE
   sleep $PACE || exit 4
   echo "." > $PIPE
done

Mysql

#!/bin/bash

DEFAULT_PACE=1000
DEFAULT_PIPE=/tmp/cca
CCAD_CONF=/etc/ccad.conf
MYSQL='/usr/bin/mysql'
TR=/usr/bin/tr
SLEEP=/bin/sleep
function get_value_from_config {
   CONF_VALUE=`grep -oE "$1[[:space:]]*=[[:space:]]*[^[:space:]]+" $CCAD_CONF |cut -d"=" -f 2|tr -d " "`
}
get_value_from_config "pace"
PACE=${CONF_VALUE:-$DEFAULT_PACE}
PACE=$(( $PACE / 1000 ))
get_value_from_config "pipe"
PIPE=${CONF_VALUE:-$DEFAULT_PIPE}
test -p $PIPE || exit 3
while true; do
   $MYSQL -e 'show status'|$TR '[[:blank:]]' '=' > $PIPE
   $SLEEP $PACE || exit 4
   echo "." > $PIPE
done

计数器收集 Web 服务 API

监控 API 概述

MON 组件会导出在其辅助输出终端上连接的组件中收集的计数器数据和配置。 这是通过自定义的基于 REST 的协议(通过 HTTP 运行)完成的。 此协议定义 3 种资源类型:

每一个类型都嵌入到上一个类型的范围中。 也就是说,实体仅在组件范围中才有意义,而计数器仅在特定实体范围中才有意义。 数据收集 API 允许检索对 MON 已知的所有计数器配置和值。

MON 以下列任一结构化文本格式导出请求的数据配置与值:

JSON(专供支持 JavaScript 的浏览器客户端使用)

监控 API 协议

该协议仅使用 GET HTTP 方法,因为它仅提供读取功能。 因此,每个支持的协议请求类型都可通过 URI 和输出结构来定义。 URI 中被视作特殊的字符应使用标准 % 编码进行转义。 我们按其 XML 模式定义输出(主要输出格式为 XML)。 通过直接使用各自输出格式表示的结构和属性(例如 UDL 实体与 XML 实体、UDL 属性与 XML 属性、JSON 对象与 XML 实体、JSON 对象属性与 XML 属性)方法,可转换为其他输出格式(UDL、JSON)。

所有输出的根节点都包含时间戳属性,提供创建响应时的服务器时间。

遵守所有支持 URL(调用)的描述。

计数器配置调用

/monapi/desc[?fmt=] 

以指定的输出格式返回所有可用组件的列表( 为已知输出格式之一,例如 xml)。

输出:

<response timestamp="1194967464">
   <appliance name="main.web" />
   <appliance name="main.in" />
</response>

计数器值调用

/monapi/val/<apps>/<ents>/<cnts>[?fmt=] 

返回指定计数器的值。 如果忽略任何 app、ent 或 cnt 参数,则假定使用通配符值。 因此,例如,/monapi/val/main.web 将意味着“组件 main.web 所有实体的所有计数器的值”。

输出:

<response timestamp="1194967464">
   <appliance name="main.web">
      <entity name="Terminal in">
         <counter name="Sent bytes" value="23234" />
         <counter name="Received bytes" value="690432" />
      </entity>
   </appliance>
</response>