快速业务通道

Java运行时监控,第3部分: 监控应用程序生态系统的性能与可用性(1) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
集监控,就一定要调用一个 shell。它可以是 bash、csh、ksh 或其他任何允许调用目标脚本或命令并可以检索输出的、受支持的 shell。最通常的选择包括:

本地 shell:如果目标主机上运行着 JVM 的话,那么线程可以通过调用 java.lang.Process 来访问这种 shell。

远程 Telnet 或 rsh :这两个服务都允许调用 shell 和 shell 命令,但由于它们的安全性相对较低,所以很少使用它们。它们在大多数现代发行版上的默认状态为禁用。

安全 Shell(SSH):SSH 是最为常用的远程 shell。它提供了对 Linux shell 的完全访问,而且被公认是安全的。在文中基于 Shell 的例子里,我将主要使用该机制。大多数 OS 都提供 SSH 服务,包括所有 UNIX 系列、Microsoft® Windows®、OS/400 及 z/OS。

Java运行时监控,第3部分: 监控应用程序生态系统的性能与可用性(1)(3)

时间:2011-02-13 IBM Nicholas Whitehead

图 1 展示了本地 shell 与远程 shell 的基本差异:

图 1. 本地 shell 与远程 shell

Java运行时监控,第3部分: 监控应用程序生态系统的性能与可用性(1) - 编程入门网

要用服务器启动一个无人值守的对话需要进行一些设置。首先必须要创建一个由私钥和公钥组成的 SSH 密匙对。然后将公钥置于目标服务器,私钥置于远程监控服务器 —— 数据收集器可以在此获取该私钥。完成上述操作之后,数据收集器便能够提供私钥及其密码短语(passphrase),并能够访问目标服务器上的安全远程 shell 了。使用了密匙对之后,目标帐户的密码就是多余的了,根本不需要它。具体设置步骤如下:

确保目标主机在本地的已知主机的文件中有入口。这个文件列出了已知 IP 地址或名称以及为每一个已知 IP 地址或名称验证的相关 SSH 公钥。在用户级别,该文件通常为用户主目录中的 ~/.ssh/known_hosts 文件。

用监控帐户(例如,monitoruser)连接到目标服务器。

在主目录中创建一个名为 .ssh 的子目录。

将目录改为 e .ssh 目录并发布 ssh-keygen -t dsa 命令。该命令提示密钥名和密码短语。然后会生成两个叫做 monitoruser_dsa(私钥)和 monitoruser._dsa.pub(公钥)的文件。

将私钥复制到一个安全的可访问的位置,数据收集器将从这个位置运行。

用 cat monitoruser_dsa.pub >> authorized_keys 命令将私钥内容追加到 .ssh 目录中名为 authorized_keys 的文件中。

清单 1 展示了我刚才所描述的过程:

清单 1. 创建一个 SSH 密匙对

whitehen@whitehen-desktop:~$ mkdir .ssh whitehen@whitehen-desktop:~$ cd .ssh whitehen@whitehen-desktop:~/.ssh$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/whitehen/.ssh/id_dsa): whitehen_dsa Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in whitehen_dsa. Your public key has been saved in whitehen_dsa.pub. The key fingerprint is: 46:cd:d4:e4:b1:28:d0:41:f3:ea:3b:8a:74:cb:57:e5 whitehen@whitehen-desktop whitehen@whitehen-desktop:~/.ssh$ cat whitehen_dsa.pub >> authorized_keys whitehen@whitehen-desktop:~/.ssh$

现在数据收集器已经能够使用 SSH 连接到目标 Linux 主机,该 SSH 连接名为 whitehen-desktop,它运行着 Ubuntu Linux。

这个例子的数据收集器将使用一个名为 org.runtimemonitoring.spring.collectors.shell.ShellCollector 的通用收集器类来实现。该类的一个实例将以 UbuntuDesktopRemoteShellCollector 这个名称部署在一个 Spring 上下文中。但要完成整个过程还需要一些其他的依赖项:

需要有一个调度器来每分钟调用一次收集器。该调度器由 java.util.concurrent.ScheduledThreadPoolExeut

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号