Package com.jitlogic.zorka.core.integ

Source Code of com.jitlogic.zorka.core.integ.ZabbixActiveTask

/**
* Copyright 2014 Daniel Makoto Iguchi <daniel.iguchi@gmail.com>
* Copyright 2012-2014 Rafal Lewczuk <rafal.lewczuk@jitlogic.com>
* <p/>
* This is free software. You can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
* <p/>
* This software is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
* <p/>
* You should have received a copy of the GNU General Public License
* along with this software. If not, see <http://www.gnu.org/licenses/>.
*/

package com.jitlogic.zorka.core.integ;

import java.io.IOException;
import java.util.Date;
import java.util.concurrent.ConcurrentLinkedQueue;

import com.jitlogic.zorka.common.zabbix.ActiveCheckQueryItem;
import com.jitlogic.zorka.common.zabbix.ActiveCheckResult;
import com.jitlogic.zorka.common.util.ZorkaLog;
import com.jitlogic.zorka.common.util.ZorkaLogger;
import com.jitlogic.zorka.core.ZorkaBshAgent;

public class ZabbixActiveTask implements Runnable, ZorkaRequestHandler {

  /* Logger */
  private final ZorkaLog log = ZorkaLogger.getLog(ZabbixActiveTask.class);
 
  private String agentHost;
  private ActiveCheckQueryItem item;
  private ZorkaBshAgent agent;
  private QueryTranslator translator;
  private ConcurrentLinkedQueue<ActiveCheckResult> responseQueue;
 
  private long clock;
 
  public ZabbixActiveTask(String agentHost, ActiveCheckQueryItem item, ZorkaBshAgent agent, QueryTranslator translator, ConcurrentLinkedQueue<ActiveCheckResult> responseQueue){
    this.agentHost = agentHost;
    this.item = item;
    this.agent = agent;
    this.translator = translator;
    this.responseQueue = responseQueue;
  }
 
  @Override
  public void run() {
    String key = item.getKey();
    log.debug(ZorkaLogger.ZAG_DEBUG, "Running task: " + key);
   
    String expr = translator.translate(key);
    log.debug(ZorkaLogger.ZAG_DEBUG, "Translated task: " + expr);
   
    clock = (new Date()).getTime() / 1000L;
    agent.exec(expr, this);
  }
 
  @Override
  public String getReq() throws IOException {
    return null;
  }
 
  @Override
  public void handleResult(Object rslt) {
    String key = item.getKey();
    String value = serialize(rslt);
    log.debug(ZorkaLogger.ZAG_DEBUG, "Task response: " + key + " -> " + value);
   
    if (!value.equals(ZabbixActiveRequest.ZBX_NOTSUPPORTED)) { // TODO  && !value.equals("{\"data\":[]}")
      ActiveCheckResult response = new ActiveCheckResult();
      response.setHost(agentHost);
      response.setKey(key);
      response.setValue(value);
      response.setLastlogsize(0);
      response.setClock(clock);
     
      responseQueue.offer(response);
      log.debug(ZorkaLogger.ZAG_DEBUG, "Cache size: " + responseQueue.size());
    }
  }
 
  private String serialize(Object obj) {
        return obj != null ? obj.toString() : ZabbixActiveRequest.ZBX_NOTSUPPORTED;
    }
 
  @Override
  public void handleError(Throwable e) {
    //
  }

}
TOP

Related Classes of com.jitlogic.zorka.core.integ.ZabbixActiveTask

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.