监控是运维中必不可少的一环,收集每个服务器的各项指标也是必不可少的一部分。那么如何获取各项指标呢?最简单的就是通过各种协议去获取指标,比如JDBC,SSH协议就可以获取到数据库和LINUX主机的指标。通过采集配置+命令+协议,就可以获取到资源的各项数据,这是最简单直接的想法了。如果有100台主机/数据库等待去获取指标,那么简单的方法就是FOR循环100次,用采集配置和各项命令去获取指标,但是会比较慢,如果我们起多个线程去获取,那应该会更快。所以今天我就简单的介绍一下我写的不成熟的一段代码,java写的。SSH协议用了jsch-0.1.54.jar,数据库就是JDBC。
先写一个简单的主线程注册多个线程,实现了Runnable接口,里面是采集配置+命令+结果。
public class JobThread implements Runnable {
private ConnectConfig config;// 采集配置
private String commandList;// 命令
private String result = "";// 采集结果
public JobThread(ConnectConfig config, String command) throws Exception {
this.config = config;
this.commandList = command;
}
@Override
public void run() {
// 此处写自己的业务逻辑
// JSONObject param = this.config.getTrueConfigParam();
// this.result = JDBCUtil.executeSQLJDBCresult(this.commandList,this.config); //执行JDBC命令
// this.result = SSHUtil.executeCom