监控云中的服务

通过技巧、诀窍和工具发现监控云服务的秘密

监控云服务是一个重要的云计算基石。通过监控云服务,您可以确定您是否在最大限度地利用资源。在本文中,作者通过专门审视 IBM® 云环境中的监控定义了监控,并讨论了在 IBM 云环境中进行监控的基本选项。他们仔细解说两个场景,该场景旨在说明监控云服务的技术流程,演示 IBM Tivoli® Monitoring (ITM) Autonomous Agent 和 RESTful APIs,用于监控服务的两种工具,然后教您在 IBM 云中逐步设置和使用 IBM Tivoli Monitoring Autonomous Agent。

Dominique Vernier, IT 架构师, IBM

/developerworks/i/p-dvernier.jpg最近几年,Dominique Vernier 主要致力于 Java 技术与云架构的相关工作。他还曾在相关公司工作过很久,在那里,他积累了关于消息传递、数据库、SOA、EAI、客户端/服务器、C/C++、以及现有框架等方面广博的知识。Dominique 还对电信、CRM、物流、以及保险等行业领域的知识有深入了解。他是 4 个有关状态引擎和资源管理的专利的拥有者或共同拥有者。目前,Dominique 正在 South-West Europe Cloud Center of Excellence 管理着用于私有或公有解决方案的智慧业务开发与测试云计算。


developerWorks 投稿作者

Alex Amies, 高级软件工程师, IBM

/developerworks/i/p-aamies.jpgAlex Amies 是 IBM GTS 中国开发实验室的一名高级软件工程师。他目前是致力于设计 IBM Smart Business Development and Test on the IBM Cloud 的一名架构师。此前他在 IBM 其他部门担任过云计算和安全性产品方面的架构师和开发人员。



John Sanchez, 架构师, IBM

/developerworks/i/p-jsanchez.jpgJohn Sanchez 是 IBM Tivoli 监控团队的一名架构师。他为 IBM Tivoli Monitoring 开发了映像,用于 IBM Smart Business Development and Test on the IBM Cloud。



Xu Dong Zheng, 资深软件工程师, IBM

/developerworks/i/p-xdzheng.jpgXu Dong Zheng 是 IBM GTS 中国开发实验室的一名资深软件工程师,致力于 IBM Smart Business Development and Test on the IBM Cloud,专门研究性能方面。



2011 年 5 月 30 日

我们都知道为何云计算概念让我们兴奋。我们希望能够利用云功能提供对资源的最优利用。监控云服务的能力是最大限度地使用每个资源并从中获得最大价值的重要组成部分。

IBM Smart Business Development and Test on the IBM Cloud 是托管在 Development and Test Cloud 上的基础架构即服务(IaaS)公共云。IBM 的独特之处在于,它提供适用于企业的公共云产品。IBM 的优势包括广泛的服务和产品、启用协作的委托管理模式、适合企业的业务支持服务,以及由产品团队预先配置的受支持开源和商业软件映像的大型目录,可随时按需运行。系统监控是支持企业通过卓越的服务水平交付可靠服务的一个重要需求。

有很多需要监控云服务的业务场景。本文侧重于开发和测试公共云的用户可能会遇到的场景。第一个场景展示如何监控虚拟机实例生命周期中的关键事件。云环境比传统的物理环境更适合于监控和自动化响应。IBM Smart Business Development and Test on the IBM Cloud 的优点之一是,您可以直接利用由 IBM Tivoli Monitoring 产品团队建立的配置。第二个场景利用虚拟 LAN (VLAN) 功能的优势,该功能允许您从公共互联网上迁移云上的资源,并通过一个完全加密的 VPN 将它们连接到组织的专用网络,进而将资源分配到最需要它们的地方。

监控包括可用性和性能监控。通常一个外部程序监控虚拟机的核心或运行在虚拟机上的应用程序,以检查可用性。即一个外部程序对系统进行 ping 测试,如果系统不响应 ping 测试,就会触发警报。性能监控涉及到跟踪系统性能的关键指标。对于操作系统,这些指标通常是 CPU、内存、硬盘和网络使用率。应用程序性能监控通常包括事务响应时间、搜索、页面生成,或维持应用程序的负载的其他操作和相关措施。

监控的一个重要应用是及时预测和响应问题。例如,一个监控系统可能会让您在磁盘利用率达到某个值时设置触发器。当磁盘利用率达到 80% 时,您可能希望向系统管理员发送一个警报。在传统的计算环境中,在收到警报后,系统管理员可以挂载新磁盘,并避免因磁盘空间不足而引起的可用性问题。

传统的监控要求在云计算中同样适用。但是,在云环境中有一些区别。

  • 云环境比传统环境更易于自动化操作。例如,IBM Smart Business Development and Test on the IBM Cloud 提供一个 REST API 来管理云资源。REST API 用于响应监控通知。
  • 云资源根据使用情况付费。因此,监控有助于最经济高效地利用资源。
  • 可比传统计算资源更动态地创建云资源,从而导致资源激增。如果不有效加以监控和管理,这会使虚拟资源的扩张一发不可收拾。

本文详细介绍如何通过两个场景监控云服务:

  • 监控虚拟机实例生命周期中的关键事件。
  • 通过一个加密的 VPN 管理云(您的企业网络的扩展)中的资源。

在 IBM 云中进行监控的基本选项

在探究场景之前,让我们看一下对 IBM Smart Business Development and Test on the IBM Cloud 进行监控的基本选项。对每个选项都加以详述,且如果您有数据,信息可帮助您确定哪种方法会使您从 IBM 云中获得最大收益。

  • IBM Smart Business Development and Test on the IBM Cloud 支持 Linux® 和 Windows™ 操作系统以及许多软件产品。操作系统本身包括一些好的开箱即用监控选项,比如 Linux 上的 top 和 Windows 上的 Task Monitor。这两个示例包含的信息有进程或任务的 CPU 和内存使用率,以及网络指标。其他本机工具提供更高级的指标。本机工具缺少的功能包括:触发事件、发送通知、在一个仪表板中集中管理来自多个系统的大量数据,或通过编程便捷地访问信息。对本机监控系统最好的使用方式就是将其用于临时监控,或详细调查从一个监控系统触发的性能事件。
  • 第二个选项是 do-it-yourself 脚本,用于关键生命周期事件的可用性监控。例如,您可以编写一个 Java™ 程序,使用一个 SSH 库对虚拟机执行 ping 测试并在系统启动或停机时创建事件。这成为一个流行策略,其中 SSH 成为访问云中的虚拟机的首选。相同的策略可应用于通过网络服务提供的其他服务,比如数据库、web 服务器、LDAP 服务器,等等。例如,您可以编写一个 Java 程序,为 HTTP 服务使用开源 Ganymed SSH 库或 Apache HttpClient 库。更复杂的程序可能使用操作系统信号和简单网络管理协议(Simple Network Management Protocol,SNMP)管理可用性。IBM Systems Director 是基于这些准则的一个商业产品,提供大量可用性监控、通知和集中管理功能。
  • 第三个选项是编写您自己的程序来收集和分析来自本地监控源的信息。例如,您可以编写您自己的 Perl 程序来解析 Linux top 工具中的输出。但是,您会发现为监控和通知场景这么做很有挑战。例如,假定某个进程的 CPU 使用率突然达到 100%,然后又同样快地落回原位。提供有意义的监控通知会很难。
  • 第四个监控选项是使用特定用途的监控系统,比如 IBM Tivoli Monitoring。这些产品是专为处理您自己难以应对的场景而构建的,包括移动均线和其他统计方法,并提供一组强大的通知和集中管理选项,包括 IBM Tivoli Enterprise Portal。Tivoli Live 是来自 IBM 的一种新的云产品,允许您使用完整的 IBM Tivoli Monitoring Server,包括 IBM 托管的一个 IBM Tivoli Enterprise Portal 安装。这将允许您在企业中进行监控,而无需安装或维护 IBM Tivoli Enterprise Portal 监控控制台。

本文关注于使用 IBM Tivoli Monitoring 代理,包括一个强大而轻量级的解决方案的自主代理功能。本文通过一些屏幕截图来演示这个功能。IBM Tivoli Monitoring 还提供一个 Agent Builder,允许您便捷地为您自己的应用程序创建一个自定义代理。还有一个支持轻量级监控解决方案的自主模式。这将在下面详细介绍。

企业 IT 系统的特征之一是,在经过一段时间之后需要加以维护,即使许多系统是由完成项目后就离开或转往别处的人员开发的。因此拥有一个在多种系统上标准化的集中监控方法尤为重要。在生产环境中,监控不太可能由专门的人员执行。重要的是向该人员提供工具,以便有效地监控许多系统。在开发和测试环境中,监控是让开发人员的生活更复杂的又一方面。但是,云的好处在于,您可以比在传统环境中更轻松地使用他人创建的资产。这使得监控解决方案在开发和测试团队力所能及的范围之内。另外,考虑到开发和测试工作的费用,让开发人员和测试人员使用他们所依赖的系统高效工作非常重要。

监控选项的优缺点
选项优点缺点
本机工具
  • 随操作系统和许多软件产品提供,开箱即用;可能是惟一可用的东西
  • 可用于基于更一般的监控事件执行进一步调查
  • 缺少事件触发、通知、集中管理
  • 每种监控工具以不同的方式运作,使其常规使用极其昂贵
基于核心的 Do-it-yourself 脚本
  • 需要开发
  • 难以实现一组强大的功能
基于本机监控的 Do-it-yourself 脚本
  • 需要开发
  • 难以实现一组强大的功能
IBM Tivoli® Monitoring
  • 集中的
  • 强大功能集
  • 以标准方式管理许多系统

场景 1:监视虚拟机实例生命周期中的关键事件

本节描述虚拟机实例生命周期中的关键活动监控。示例事件包括操作系统的启动和对 CPU、内存和硬盘的高度使用。了解这些事件,就可以让管理软件启动其他实例来共享负载、挂载其他存储或向系统管理员发送警告。本节逐步介绍使用 IBM Tivoli Monitoring 创建简单示例的流程。

创建虚拟机实例

  1. 登录到 Development and Test Cloud 并转至控制面板的 Instances 区域(见图 1)。这显示您拥有的任何虚拟机实例。
    图 1. 查看虚拟机实例
    查看虚拟机实例
  2. 单击 Add Instance。列出可用软件映像。
    图 2. 添加实例和查看软件选项
    添加实例和查看软件选项
  3. 选择 IBM Tivoli Monitoring 6.2.2.1 并单击 Next
  4. 在 Configure Image 面板上选择 Bronze 32 bit 的服务器大小和系统生成的 IP 地址。如果您还没有创建密钥,现在可以创建并保存一个密钥,而不中断 Add Instance 向导的流程。不要忘记保存生成的私钥;否则,在尝试通过 SSH 客户端连接到虚拟机时就没那么走运了。您可以稍后从 Profile 下的 Account 选项卡中下载公钥,但是 Development and Test Cloud 不会保存您的私钥。单击 Next
  5. 其他配置参数面板包括特定于 IBM Tivoli Monitoring 的参数。输入 TivoliMonitoring 获取 CTIRA 主机名参数,即出现在 IBM Tivoli Enterprise Portal 中的主机的名称。输入系统管理员密码。单击 Next
  6. Verify configuration 面板显示一个参数摘要视图。单击 Next
  7. 在 Service agreement 面板上,单击单选按钮接受协议,然后单击 Submit。创建虚拟机实例的请求被提交。

Development and Test Cloud 控制面板显示请求的状态,在虚拟机可以使用时状态为 “Active”。控制面板显示配置参数,包括连接到实例的 IP 地址。有了 Linux 操作系统映像,您通常通过 SSH 连接到虚拟机。另外,在本例中,映像经过配置可与 web 浏览器一同使用,以连接到使用端口 1920 的 IBM Tivoli Enterprise Portal。

使用第 5 步中提供的用户 ID sysadmin 和密码登录到 IBM Tivoli Enterprise Portal。在 IBM Tivoli Enterprise Portal 中,您应当会看到一个无代理的监控器和一个操作系统代理。您还应当看到为无代理系统接收的 SNMP 数据,以及磁盘、CPU、内存和网络使用率。

图 3. 内存使用
内存使用

监控无代理服务器

监控资源最简单的方式之一是使用 IBM Tivoli Monitoring 无代理监控功能。无代理方法基于使用远程协议的数据收集。一般而言,当可以在无代理方法和代理方法之间做出选择时,那么最好选择无代理方法,因为没有软件要安装或维护。然而,当仅能通过无法远程提供的方法收集所需的监控信息时,代理就是必要的。此外,代理还提供自主代理功能。

要监控无代理服务器,首先创建一个服务器作为虚拟机实例,在本文中称为“受监控的服务器”,配置 SNMP,并更新防火墙让来自 IBM Tivoli Enterprise Portal 的 SNMP 请求进入该服务器。

  1. 创建一个服务器,然后使用 iduser 打开它上面的 ssh 会话。创建服务器有两种方式:使用 Development and Test Cloud 控制台界面命令行
  2. 从命令提示符中,输入 sudo bash 获取根访问。

    在使用以下步骤进行配置之前,您可能需要安装 net-snmp,因为 SNMP 不是 SUSE Linux Enterprise Server 11 中的一个默认软件包。为此,打开命令行上的 yast,选择 Software Manager,搜索 snmp 并安装 net-snmp

  3. 编辑 /etc/snmp/snmp.conf 文件并将 IP 地址替换为您的 IBM Tivoli Enterprise Portal IP 地址来更改 rocommunity public 127.0.0.1 行(参见图 4 中的示例)。
    图 4. IP 地址替换
    IP 地址替换
  4. 使用命令 service snmpd restart 重启 SNMP 守护进程。
  5. 打开防火墙,允许 User Datagram Protocol (UDP) 从 IBM Tivoli Enterprise Portal 服务器访问您的服务器。为此,启动 yast2 并选择 Security and Users
    图 5. 打开防火墙以支持 UDP 访问
    打开防火墙以支持 UDP 访问
  6. 选择 FirewallCustom Rules
    图 6. 防火墙配置
    防火墙配置
  7. 选择 Add 并输入您的 IBM Tivoli Enterprise Portal IP 地址作为源,添加 UDP,然后输入 161 作为目标地址。
    图 7. 添加 IBM Tivoli Enterprise Portal IP 地址、UDP 和目标地址
    添加 IBM Tivoli Enterprise Portal IP 地址、UDP 和目标地址
  8. 单击 NextFinishQuit

作为 root 用户 sudo bash 登录到 IBM Tivoli Monitoring 服务器, 进而测试您的 SNMP 连接:

snmpwalk -v 1 -c public <Monitored Server IP Address>

现在可以在 IBM Tivoli Enterprise Portal 中添加该服务器了(参见图 8)。

  1. 打开浏览器 http://<TEP IP address>:1920///cnp/kdh/lib/cnp.html(三个 “/” 不是书写错误)。
    图 8. 登录到 IBM Tivoli Enteprise Portal
    登录到 Tivoli Enterprise Portal
  2. 扩展 Linux SystemTivoliMonitoring,并右键单击 Linux System
    图 9. Linux System 显示
    Linux System 显示
  3. 单击 Take Action > Select
    图 10. Take Action
    Take Action
  4. 对于 Action Name,选择 LinuxSnmpMonitorStart
    图 11. 选择 LinuxSnmpMonitorStart
    选择 LinuxSnmpMonitorStart

    提供您想要监控的服务器的名称和 IP 地址。在社区字段中输入 public。单击 OK,再次单击 OK

    图 12. Action Status
    Action Status
  5. 再一次单击 OK
  6. 刷新 Navigator(图标任务栏中红色项目符号旁边的相对箭头)。在导航树中选择您受监控的服务器。您现在可以在不同的图之间导航了。
    图 13. 导航图
    导航图

可以使用 SSH 部署操作系统代理。要部署 Linux 操作系统代理,使用命令行进行登录。如果您在 Windows 客户端上,请使用 Putty。如果您在 Linux 客户端上,请使用已经提供的 SSH 客户端,使用控制面板上给定的 IP 地址连接到虚拟机。使用用户 ID idcuser 和您在上一步中保存的私钥进行登录。

  1. 使用 /opt/IBM/ITM/bin/tacmd login -s localhost 登录到 tacmd
  2. 输入 sysadmin 作为用户名和密码。
  3. 成功登录后,执行:
    /opt/IBM/ITM/bin/tacmd createNode -h <destination IP address> -d /opt/IBM/ITM -p 
    PROTOCOL=IP.PIPE PORT=1918 SERVER=<your instance IP address>

  4. 输入目标服务器的用户名和密码。
  5. 请求将排队进行部署。要检查部署状态,输入 /opt/IBM/ITM/bin/tacmd getdeploystatus
  6. 成功部署之后,使用 /opt/IBM/ITM/bin/tacmd logout 登出 tacmd

您可以阅读了解如何在 Development and Test Cloud 目录中设置映像。您可能希望阅读 IBM Tivoli Monitoring 映像和 32 位基础操作系统 SUSE Linux Enterprise Server 11 映像的入门文档。另外还有介绍每个映像的简短视频可在线观看。IBM Tivoli Monitoring 映像包括:

  • IBM Tivoli Enterprise Monitoring Server V06.22.01.00
  • IBM Tivoli Enterprise Portal Server V06.22.01.00
  • IBM Tivoli Enterprise Portal Desktop Client V06.22.01.00
  • IBM Tivoli Monitoring Linux Operating Systems Agent V06.22.01.00
  • IBM Tivoli Agentless Monitoring for Linux Operating Systems V06.22.01.00

该映像有很多功能未在本文介绍,比如使用 IBM Tivoli Enterprise Portal 创建情景和生成通知、事件数据仓库和详细的数据监控报告,监控操作系统以外的系统,以及使用 Agent Builder 创建自定义代理。本文其余部分重点介绍如何使用 IBM Tivoli Monitor Linux Operating Systems Agent 开始集成 IBM Tivoli Monitoring 和 Development and Cloud APIs。操作系统监控是任何监控解决方案的重要基础。

能够执行操作系统监控的一些益处是:

  • 了解如何使用无代理和基于代理的方法监控 IBM Tivoli Enterprise Portal 中的云资源。
  • 利用已经由 IBM Tivoli Monitoring 专家设置的系统。
  • 在有了设置有 IBM Tivoli Monitoring 的工作系统之后,进行您自己的定制并保存映像。然后您可以随时按需启动该映像的任何虚拟机实例。使用 Development and Test Cloud 的新企业社区特性,您可以与您组织中的其他人共享您的映像。
  • 使用 Development and Test Cloud 外部存储来保存可从其他 IBM Tivoli Enterprise Portal 安装中重用的监控和配置数据。

场景 2:通过一个到云的加密 VPN 连接管理资源

假定您发现您在公共互联网上的计算资源没有得到充分利用,您组织的内部网络上的资源过载。IBM Development and Test Cloud 允许每个企业有自己的虚拟局域网(VLAN),将其实例与公共互联网隔离开来,并通过 VPN 连接将它们连接到企业的专用网络。本节描述如何使用 Development and Test Cloud 命令行工具从公共互联网管理云上的资源,并通过完全加密的 VPN 连接将它们添加到您组织的专用网络。

VLAN 是对局域网(LAN)的传统概念的一个抽象。它允许您对其网络上的计算资源进行分组和隔离,无需像在传统 IT 网络中一样耗用以太网电缆和物理网络设备。这很好,因为如果在公共云中您的资源在公共互联网上。使用加密的虚拟专用网(VPN)连接到您的 VLAN。

上一节描述的场景与管理云资源有关。VLAN/VPN 技术的意义在于,您可以将云解决方案连接到您自己的企业 IT 基础架构,包括监控和资源平衡。在早期,您通过在不同的计算机和网络设备之间串起以太网来创建网络。目前,您可以请求不同网络区域的大量 IP 地址,并通过为不同的虚拟机分配地址构建网络。

创建虚拟机实例

使用 Development and Test Cloud 向导,创建连接到企业 VLAN 的虚拟机很容易。

  1. 在目录中选择 SUSE Linux Enterprise Server 11 for x86。
    图 14. 选择 SUSE Linux Enterprise Server 11 for x86
    选择 SUSE Linux Enterprise Server 11 for x86
  2. 为实例提供一个名称,选择 Bronze 32 位服务器大小,并选择 Private VLAN 选项。
    图 15. 配置您的实例
    配置您的实例
  3. 在控制面板上的 My Instances 中监控请求的配给状态。
    图 16. 监控请求的配给状态
    监控请求的配给状态
    实例激活后,IP 地址显示在实例详细信息面板上。
    图 17. 实例详细信息面板
    实例详细信息面板

要连接到这类实例,您需要建立 VLAN 连接。

VLAN 上的虚拟机仅对 VLAN 上的其他资源可见,但是它们可以看到公共互联网上的资源。这对于到 IBM Tivoli Enterprise Portal 控制台的连接很重要。如果 IBM Tivoli Enterprise Portal 控制台没有连接到 VLAN,它将不能看到 VLAN 上的资源。

现在您已经完成以下任务:

  • 您了解了在公共云计算中 VLANs 的使用。
  • 您知道如何配置虚拟机,使其仅可在您自己公司的 VLAN 上访问。

使用命令行脚本自动化资源管理

本节详细介绍如何使用 IBM Tivoli Monitoring Autonomous Agent 的云和监控命令行脚本集成云应用程序。IBM Smart Business Development and Test on the IBM Cloud 提供一个 REST、Java APIs 和一个用于自动化资源管理操作的命令行工具,该工具类似于自助服务用户界面中的功能。这些操作包括创建和管理虚拟机实例、存储卷和 IP 地址。本节解释如何使用命令行脚本自动化资源管理。

要下载 IBM Development and Test Cloud 客户端,单击云门户中的 Support 选项卡,参见 Command Line Tool Reference 详细了解可用的命令。

首先为您的命令行脚本创建一个目录。假设您使用的是 Windows 客户端。Linux 是类似的。

  1. 安装一个 IBM 版本 1.6 JDK(如果尚未安装的话)。
  2. 定义 JAVA_HOME
  3. 使用 CC_HOME 将命令行工具压缩包提取到您系统上的一个目录中,在路径中不要留空格。
  4. 如果您喜欢将命令存储在脚本文件中,使用 MY_HOME 为您的脚本创建一个目录。

为脚本创建了目录之后,使用密码文件初始化您的客户端。这是必需的,能够保护真正的 Development and Test Cloud 密码;无需将其存储在脚本或明文中。

  1. 输入以下命令来执行该任务:
    > set JAVA_HOME=D:\Program Files\IBM\SDP\jdk
    > set PATH=%JAVA_HOME%\bin;%PATH%
    > set CC_HOME=D:\dev_test_cloud\cmd
    > set MY_HOME=D:\myhome\script
    > cd %CC_HOME%
    > ic-create-password -u u@abc.com -p secret -w unlock -g %MY_HOME%/mykey.ext
  2. 命令扩展名应当是 .cmd.sh,具体视您在使用 Windows 还是 Linux。这些命令设置 Java 主目录、系统路径、脚本主目录, 转至脚本目录,并执行 ic-create-password 命令来创建密码文件。
  3. 解锁密码文件的口令是 unlock
  4. 用您自己设定的值替代用户 ID(u@abc.com)、密码(secret)和口令(unlock)。

实现资源迁移目标的一种方式是删除公共互联网上的实例,并在您公司的 VLAN 上创建另一个实例。在新包中,您将收到有关如何使用 VPN 连接连接到 VLAN 的信息。

  1. 要获取您拥有的实例列表,使用命令:
    > ic-describe-instances -u u@abc.com -w unlock -g %MY_HOME%/mykey.ext

    该命令给出要删除的实例的 ID 和其他细节。

  2. 使用要删除的实例的 ID,即 INSTANCE_ID,输入命令:
    > ic-delete-instance -u u@abc.com -w unlock -g %MY_HOME%/mykey.ext -l INSTANCE_ID

    u@abc.com 是一个虚构的用户名。

遵循这些步骤在您的 VLAN 上创建新实例。

  1. 选择您要为其创建虚拟机的映像。要获取映像列表,使用命令:
    > ic-describe-images -u u@abc.com -w unlock -g %MY_HOME%/mykey.ext > images.txt
  2. 由于映像列表太长,将其保存到文件 images.txt。下面需要映像 ID。
  3. 保存到文件中的命令输出类似于:
    ...
    ID : 20003206
    Name : IBM Lotus Web Content Management 6.1.5 - BYOL
    Visibility : PUBLIC
    State : AVAILABLE
    Owner : SYSTEM
    Platform : SUSE Linux Enterprise Server/11
    Location : 41
        ~~~~~
        InstanceType ID : BRZ32.1/2048/175
        Label : Bronze 32 bit
    ...

我们使用名称 SUSE Linux Enterprise Server 11 for x86 和 ID 20001150 配置映像的一个实例。

  1. 在 Bronze 32 位系统上配置映像,该映像具有实例类型 ID BRZ32.1/2048/175。
  2. 由于您希望在公司网络上配置虚拟机,您还需要了解如何识别 VLAN。为此,输入命令:
    > ic-describe-vlans -u u@abc.com -w unlock -g %MY_HOME%/mykey.ext
  3. 输出类似于:
    Executing action: DescribeVLANs ...
    ----------------------------------
    ID : 1
    Name : Private VLAN Raleigh
    Location : 41
    ...

使用 Development and Test Cloud 用户界面或命令行,可以生成用于连接到虚拟机的 SSH 密钥。

  1. 要生成密钥 MyKey,输入命令:
    > ic-generate-keypair -u u@abc.com -w unlock -g %MY_HOME%/mykey.ext -c MyKey ?
  2. 剪切和粘贴返回到文本文件中的文本,以供在您的 SSH 客户端使用。

现在您有了配置虚拟机所需的所有信息。

  1. 使用返回的 VLAN ID 和上面 ic-create-instance 命令中的其他信息创建虚拟机。
  2. 返回的信息还包括与 VLAN 相关的一个数据中心 ID。您需要在与 VLAN 相同的数据中心配置虚拟机。要创建实例,输入命令:
    > ic-create-instance -u u@abc.com -w unlock -g %MY_HOME%/mykey.ext 
      -t BRZ32.1/2048/175 -n MySUSE -k 20001150 -c MyKey -d MyDescription 
      -L DATA_CENTER_ID -x VLAN_ID
  3. 在该命令中,DATA_CENTER_ID 变量应替换为 41VLAN_ID 应替换为值 1
  4. 虚拟机的 IP 地址由系统生成,且在给定的 VLAN 上。要找到 IP 地址,再次输入 describe instances 命令。
  5. 该命令还为您提供了实例状态,允许您查明实例是何时启动的。您应当看到对命令的如下响应:
    Executing action: CreateInstance ...
    The request has been submitted successfully.
    1 instances!
    ----------------------------------
    ID : 36519
    Name : MySUSE
    Hostname :
    InstanceType : BRZ32.1/2048/175
    IP :
    KeyName : MyKey
    Owner : u@abc.com
    RequestID : 36819
    RequestName : MySUSE
    Status : NEW
    Volume IDs :
    ----------------------------------
    Executing CreateInstance finished
  6. 您可以在 Developer and Test Cloud 控制面板中监视请求的状态,或使用上面的 ic-describe-instances 命令查出实例何时可用。输出应类似于:
    Executing action: DescribeInstances ...
    1 instances!
    ----------------------------------
    ID : 36519
    Name : MySUSE
    Hostname : 10.216.1.129
    InstanceType : BRZ32.1/2048/175
    IP : 10.216.1.129
    KeyName : MyKey
    Owner : u@abc.com
    RequestID : 36819
    RequestName : MySUSE
    Status : ACTIVE
    Location : 41
    Vlan ID : 1
    Vlan Name : Private VLAN Raleigh
    Vlan Location : 41
    Volume IDs :
    Disk Size : 175
    Root Only : null
  7. 注意,状态为 ACTIVE,且记住要连接到实例的 IP 地址。

在执行这些任务之后,您就了解了如何使用命令行脚本自动化云计算资源的管理。


分步设置自主代理

使用自主代理功能,一个 IBM Tivoli Enterprise Monitoring Agent 可独立于 Tivoli Enterprise Portal 而使用。一个 Tivoli system Monitoring Agent 是为不依赖于 IBM Tivoli Enterprise Portal 而安装和配置的操作系统代理。代理被默认配置为具有自主功能。在该模式下,代理独立运行、收集数据、运行情景和生成事件。它提供一个简单、独立的 HTML/XML 接口、REST API 和安全认证,并发出 SNMP 事件。

对于部署完整监控解决方案的成本考虑且开发技能可用的开发和测试环境来说,这是一个适当的解决方案。它还适合作为可集成到可重用云应用程序中的轻量级监控组件。例如,目前将产品作为虚拟设备(包含操作系统和配置的软件)提供变得很普遍,而在过去,软件安装映像是作为产品提供的。一个虚拟设备产品可包括一个轻量级监控解决方案。但是,在任务关键型应用中,比如银行、保险、电子商务、航运和运输等应用中,一个完整的监控解决方案是恰当的选择。

私有事件是在本地处理的事件,相比之下,企业事件是由监控服务器处理的事件。发出的事件可以是 SNMP 或 Event Integration Facility (EIF) 事件。XML 文件用于以类似于企业事件的方式配置私有事件的情景,该情景由 IBM Tivoli Enterprise Portal 情景编辑器创建。

可通过数据丢失或达到特定值的情景定义事件。下面是一个情景示例:

<?xml version="1.0" encoding="UTF-8"?>
<PRIVATECONFIGURATION>
  <PRIVATESIT>
    <SITUATION NAME='High_CPU'/> 
    <CRITERIA> <![CDATA[  *VALUE Linux_CPU.Idle_CPU *LT 10  *AND  
	    *VALUE Linux_CPU.CPU_ID *EQ Aggregate ]]> </CRITERIA>
    <CMD><![CDATA[High CPU' > ~/cpulog.txt]]></CMD>
    <AUTOSOPT When='Y' Frequency='Y' />
    <INTERVAL>000100</INTERVAL> 
  </PRIVATESIT>
</PRIVATECONFIGURATION>
  • 这个 XML 片段包含一个私有情景。它通过计算超出虚拟机 CPU 平均值的方式检测高 CPU。间隔是一分钟(000100)。
  • 表达式使用 *VALUE*LT*AND*EQ 标准函数来测试 CPU 空闲时间过低的条件。
  • 如果该条件为真,那么将执行 <CMD> 元素中的命令。该命令是在日志中记录 cpulog.txt 文件某一行的示例。在实际实现中,这应当由上面介绍的 Development and Test Cloud 命令行脚本替代。
  • 当提供 <CMD> 元素指定多久执行一次命令时,就需要 <AUTOSPOPT> 元素。
  • YWhen 属性值表示应当为计算结果为真的每个项目执行该命令。
  • YFrequency 属性值表示应当在每次标准计算结果为真时执行该命令。
  • 要测试它是否合理运作,将 CPU 值从 10 改为 100,以便在每次采样情景时触发它。
  • 可用属性在文件中列出:
    /opt/IBM/ITM/tables/TEMS/ATTRLIB/klz.atr

Linux 代理报告的监控属性有成百个,包括登录参数、磁盘使用情况、网络使用率、CPU、进程、系统统计(交换及其他)、磁盘 IO 和 NFS。下面是帮助您入手的一些可用属性列表:

  • 登录变量:KLZ_User_Login.System_Name, KLZ_User_Login.Timestamp, KLZ_User_Login.User_Name, KLZ_User_Login.Login_PID, KLZ_User_Login.Line, KLZ_User_Login.Login_Time, KLZ_User_Login.Idle_Time, KLZ_User_Login.From_Hostname
  • 磁盘使用情况:KLZ_Disk.System_Name, KLZ_Disk.Timestamp, KLZ_Disk.Disk_Name, KLZ_Disk.Mount_Point, KLZ_Disk.FS_Type, KLZ_Disk.Size, KLZ_Disk.Disk_Used, KLZ_Disk.Disk_Free, Linux_Disk.Space_Available_Percent
  • 网络使用率:KLZ_Network.System_Name, KLZ_Network.Timestamp, KLZ_Network.Network_Interface_Name, KLZ_Network.Interface_IP_Address, KLZ_Network.Interface_Status, KLZ_Network.Transmission_Unit_Maximum, KLZ_Network.KBytes_Received_Count, KLZ_Network.Bytes_Received_per_sec, KLZ_Network.KBytes_Transmitted_Count, KLZ_Network.Bytes_Transmitted_per_sec
  • CPU:KLZ_CPU.System_Name, KLZ_CPU.Timestamp, KLZ_CPU.CPU_ID, KLZ_CPU.User_CPU, KLZ_CPU.User_Nice_CPU, KLZ_CPU.System_CPU, KLZ_CPU.Idle_CPU, KLZ_CPU.Busy_CPU, KLZ_CPU.Wait_IO_CPU, KLZ_CPU.User_Sys_Pct, KLZ_CPU_Averages.System_Name, KLZ_CPU_Averages.Timestamp, KLZ_CPU_Averages.Days_to_CPU_Upgrade, KLZ_CPU_Averages.CPU_Usage_Current_Average, KLZ_CPU_Averages.CPU_Usage_Moving_Average, Linux_CPU.Idle_CPU, Linux_CPU.CPU_ID, Linux_Process.Busy_CPU
  • 进程:KLZ_Process.System_Name, KLZ_Process.Timestamp, KLZ_Process.Process_ID, KLZ_Process.Parent_Process_ID, KLZ_Process.Process_Command_Name, KLZ_Process.Proc_CMD_Line, KLZ_Process.State, KLZ_Process.Proc_System_CPU, KLZ_Process.Total_Size_Memory, KLZ_Process.Threads
  • 系统统计:KLZ_System_Statistics.System_Name, KLZ_System_Statistics.Timestamp, KLZ_System_Statistics.Ctxt_Switches_per_sec, KLZ_System_Statistics.Pct_Change_Ctxt_Switches, KLZ_System_Statistics.System_Load_1min, KLZ_System_Statistics.System_Load_5min, KLZ_System_Statistics.System_Load_15min, KLZ_System_Statistics.Pages_paged_in, KLZ_System_Statistics.Pages_Swapped_in, KLZ_Swap_Rate.System_Name, Linux_System_Statistics.Pages_Swap_in_per_sec, Linux_System_Statistics.Pages_Swap_out_per_sec
  • 磁盘 IO:KLZ_Disk_IO.System_Name, KLZ_Disk_IO.Transfers_per_sec, KLZ_Disk_IO.Blk_Rds_per_sec, KLZ_Disk_IO.Blk_wrtn_per_sec
  • NFS:KLZ_NFS_Statistics.System_Name, KLZ_NFS_Statistics.NFS_lookups, KLZ_NFS_Statistics.NFS_Read_Calls , KLZ_NFS_Statistics.NFS_Writes

代理配置文件是 /opt/IBM/ITM/config/lz.ini。检查确保文件含有该行代码:IRA_AUTONOMOUS_MODE=Y.

尝试使用这个私有情景:

  1. 将上述 XML 剪切并粘贴到一个名为 lz_situations.xml 的文件中。
  2. 将文件放到目录 /opt/IBM/ITM/localconfig/lz 中。
  3. 在剪切和粘贴过程中确保不要包含任何非有效 XML 的字符。将文件加载到 web 浏览器中来检查这一点。
  4. 使用命令重启代理:
    sudo /etc/init.d/ITMAgents1 stop
    sudo /etc/init.d/ITMAgents1 start

您也可以定义参数,用于在本地收集历史监控数据。参见 IBM Tivoli Monitoring 6.2.2 Information Center 的 Agent Autonomy 部分,了解有关代理自主权的更多信息。Information Center 有很多私有场景示例配置文件。

使用代理服务接口来接收来自代理的信息,例如,代理信息、私有场景和历史。代理服务通过 IBM Tivoli Monitoring Index Service 设备予以访问,该设备作为一台 HTTP 服务器运作。

  1. 要启动代理服务接口,输入 URL http://<host name>:1920https://<host name>:3661/ 到您的浏览器中。
  2. 您应当会看到如图 18 所示的画面:
    图 18. IBM Tivoli Monitoring Service Index
    IBM Tivoli Monitoring Service Index
  3. 随着 IBM Tivoli LZ Agent Service Interface 链接查看 Agent Information、Situations、History、Queries 和 Agent Service Request。如果这样做有困难,使用 Yast(在 SUSE 上)检查和调整防火墙设置。
  4. 您需要打开 Agent Service Interface 的端口,每次代理启动时会随意设置该端口。为此,在命令行输入 yast 并转至 Security and Users > Firewall
  5. 选择 Allowed Service 下的 Advanced
  6. 将鼠标悬停于 LZ Agent Service Interface 上输入显示的 TCP 端口。Microsoft Internet Explorer 浏览器对于这些页面似乎运作地更好。
  7. 如果您有问题,检查 /opt/IBM/ITM/logs 中的代理日志。利用 grep 搜索日志,比如使用 > grep 'private situation' /opt/IBM/ITM/logs/*.* 命令检查错误。
  8. 您应当看到 Linux 代理服务接口界面:
    图 19. Linux 代理服务接口
    Linux 代理服务接口
  • Queries 链接允许您查看监控信息,比如进程列表:
    图 20. 进程列表
    进程列表
  • Situations 链接显示 XML 文件中定义的情景。Linux High CPU Overload 情景如图 21 所示,在前面的 XML 文件示例 中定义:
    图 21. Linux 高 CPU 负载情景
    Linux 高 CPU 负载情景
  • 要测试事件的执行,查找根用户的主目录中的 cpulog.txt 文件和 web 接口中 TRUESAMPLES 的非零值。

此刻,您拥有轻量级监控解决方案需要的所有部件。该解决方案的缺陷之一是,您需要在您监控的每个系统上部署 Development and Test Cloud 命令行包。这可由下面将提到的自主代理 REST 接口予以解决。

  • Agent Service Interface 中的 Service Request Interface 链接是 REST 接口,用于检索代理以 XML 格式收集的数据。
  • IBM Tivoli Monitoring Information Center 详细介绍了 REST 应用程序编程接口。
  • IBM Tivoli Monitoring Agent Service Interface Client(参见图 22)是允许您测试 REST 服务接口的一种不错的工具。
  • 私有情景控制允许您使用 <PVTCONTROL> 请求启动、停止或再循环监控代理上的私有场景。
    图 22. IBM Tivoli Monitoring Agent Service Interface Client
    IBM Tivoli Monitoring Agent Service Interface Client
  • 对于故障排除,要记住使用 Yast 检查防火墙设置,如上所述。
  • 对于远程访问,每个代理都要求一个出站端口 1918 打开。管理服务器需要端口 1918 和 1920。

结束语

现在您已经遍览了本文中的步骤,应当知道如何:

  • 使用 Development and Test on the IBM Cloud 创建一台虚拟机。
  • 在云中使用 IBM Tivoli Monitoring 来监控您的系统。
  • 使用 Development and Test on the IBM Cloud 命令行工具来自动创建和删除虚拟机。
  • 使用 IBM Tivoli Monitoring 自主代理功能实现轻量级监控解决方案。

您可以使用 Development and Test on the IBM Cloud 目录中的 IBM Tivoli Monitoring 映像自行试验。

参考资料

学习

获得产品和技术

  • 参见 IBM Smart Business Development and Test on the IBM Cloud 上可用的 产品映像

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing, Tivoli
ArticleID=664900
ArticleTitle=监控云中的服务
publish-date=05302011