Exemple #1
0
    # lock for reference base
    lock = Lock()

    # get hosts from zabbix
    analyzers = get_hosts()
    # prepare data for thread pool
    data_to_process = [(a["ip"], a["host"], lock, rb) for a in analyzers.values() if a.get("ip", None)]

    # init thread pool
    sencore_pool = ThreadPool(
        processes=len(data_to_process)
    ).map_async(sencore_start, data_to_process)

    # wait until all threads done
    counter = 0
    while not sencore_pool.ready() and counter < TIMEOUT:
        time.sleep(0.1)
        counter += 0.1
    if counter >= TIMEOUT:
        exit(1)

    # get results from thread pool
    data = sencore_pool.get()

    # # generate Zabbix metrics
    zabbix_metrics_all = [to_zabbix(d[0], d[1]) for d in data if d]

    # autodiscovery metrics
    zabbix_metrics_discovery = reduce(add, [zma["autodiscovery"] for zma in zabbix_metrics_all])
    zabbix_metrics_discovery = sorted(zabbix_metrics_discovery, key=lambda x: x[0])