示例#1
0
void
output_multi_tcp(int have_collect)
{
    int        fd, flags, res;
    fd_set     fdr, fdw;
    struct     timeval timeout;
    struct     sockaddr_in db_addr;
    int           out_pipe[2];
    int           len;
    static char   data[LEN_10M] = {0};
    int         i;
    /* get st_array */
    if (get_st_array_from_file(have_collect)) {
        return;
    }
    /* only output from output_db_mod */
    reload_modules(conf.output_tcp_mod);

    if (!strcasecmp(conf.output_tcp_merge, "on") || !strcasecmp(conf.output_tcp_merge, "enable")) {
        conf.print_merge = MERGE_ITEM;
    } else {
        conf.print_merge = MERGE_NOT;
    }

    if (pipe(out_pipe) != 0) {
        return;
    }

    dup2(out_pipe[1], STDOUT_FILENO);
    close(out_pipe[1]);

    running_check(RUN_CHECK_NEW);

    fflush(stdout);
    len = read(out_pipe[0], data, LEN_10M);
    close(out_pipe[0]);
    /*now ,the data to send is gotten*/
    for(i = 0; i < conf.output_tcp_addr_num; i++){
        send_data_tcp(conf.output_tcp_addr[i], data, len);
    }
}
示例#2
0
/*
 * send check to remote
 */
void
send_tcp(int fd, int have_collect)
{
    int           out_pipe[2];
    int           len;
    static char   data[LEN_10M] = {0};

    /* get st_array */
    /*
    if (get_st_array_from_file(have_collect)) {
        return;
    }
    */

    /* only output from output_db_mod */
    reload_modules(conf.output_tcp_mod);

    if (!strcasecmp(conf.output_tcp_merge, "on") || !strcasecmp(conf.output_tcp_merge, "enable")) {
        conf.print_merge = MERGE_ITEM;
    } else {
        conf.print_merge = MERGE_NOT;
    }

    if (pipe(out_pipe) != 0) {
        return;
    }

    dup2(out_pipe[1], STDOUT_FILENO);
    close(out_pipe[1]);

    running_check(RUN_CHECK_NEW);

    fflush(stdout);
    len = read(out_pipe[0], data, LEN_10M);
    close(out_pipe[0]);

    if (len > 0 && write(fd, data, len) != len) {
        do_debug(LOG_ERR, "output_db write error:%s", strerror(errno));
    }
}
示例#3
0
文件: tsar.c 项目: 4Second2None/tsar
int
main(int argc, char **argv)
{
    parse_config_file(DEFAULT_CONF_FILE_PATH);

    load_modules();

    statis.cur_time = time(NULL);

    conf.print_day = -1;

    main_init(argc, argv);

    /*
     * enter running
     */
    switch (conf.running_mode) {
        case RUN_LIST:
            running_list();
            break;

        case RUN_CRON:
            conf.print_mode = DATA_DETAIL;
            running_cron();
            break;
#ifdef OLDTSAR
            /*for check option*/
        case RUN_CHECK:
            reload_check_modules();
            /* disable module when n_col is zero */
            running_check(RUN_CHECK);
            break;
            /*end*/
#endif
        case RUN_CHECK_NEW:
            if (reload_modules(conf.output_print_mod)) {
                conf.print_mode = DATA_DETAIL;
            };
            /* disable module when n_col is zero */
            disable_col_zero();
            running_check(RUN_CHECK_NEW);
            break;
        case RUN_PRINT:
            /* reload module by output_stdio_mod and output_print_mod*/
            reload_modules(conf.output_stdio_mod);
            reload_modules(conf.output_print_mod);

            /* disable module when n_col is zero */
            disable_col_zero();

            /* set conf.print_nline_interval */
            conf.print_nline_interval = conf.print_interval;

            running_print();
            break;

        case RUN_PRINT_LIVE:
            /* reload module by output_stdio_mod and output_print_mod*/
            reload_modules(conf.output_stdio_mod);
            reload_modules(conf.output_print_mod);

            /* disable module when n_col is zero */
            disable_col_zero();

            running_print_live();
            break;

        default:
            break;
    }

    shut_down();
    return 0;
}