/****************************************************************************** * * * Function: put_data_to_server * * * * Purpose: send data to server * * * * Parameters: * * * * Return value: SUCCESS - processed successfully * * FAIL - an error occurred * * * * Author: Alexander Vladishev * * * * Comments: * * * ******************************************************************************/ int put_data_to_server(zbx_sock_t *sock, struct zbx_json *j, char **error) { const char *__function_name = "put_data_to_server"; char *info = NULL, *err = NULL; int ret = FAIL; zabbix_log(LOG_LEVEL_DEBUG, "In %s() datalen:" ZBX_FS_SIZE_T, __function_name, (zbx_fs_size_t)j->buffer_size); if (SUCCEED != send_data_to_server(sock, j->buffer)) goto out; if (SUCCEED != zbx_recv_response(sock, &info, 0, &err)) { *error = zbx_dsprintf(*error, "error:\"%s\", info:\"%s\"", ZBX_NULL2EMPTY_STR(err), ZBX_NULL2EMPTY_STR(info)); goto out; } ret = SUCCEED; out: zbx_free(info); zbx_free(err); zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __function_name, zbx_result_string(ret)); return ret; }
/****************************************************************************** * * * Function: add_history_log * * * ******************************************************************************/ static void add_history_log(zbx_vector_ptr_t *history) { int i; zbx_db_insert_t *db_insert; db_insert = (zbx_db_insert_t *)zbx_malloc(NULL, sizeof(zbx_db_insert_t)); zbx_db_insert_prepare(db_insert, "history_log", "itemid", "clock", "ns", "timestamp", "source", "severity", "value", "logeventid", NULL); for (i = 0; i < history->values_num; i++) { const ZBX_DC_HISTORY *h = (ZBX_DC_HISTORY *)history->values[i]; const zbx_log_value_t *log; if (ITEM_VALUE_TYPE_LOG != h->value_type) continue; log = h->value.log; zbx_db_insert_add_values(db_insert, h->itemid, h->ts.sec, h->ts.ns, log->timestamp, ZBX_NULL2EMPTY_STR(log->source), log->severity, log->value, log->logeventid); } sql_writer_add_dbinsert(db_insert); }
/****************************************************************************** * * * Function: send_areg_data * * * * Purpose: send auto-registration data from proxy to a server * * * * Author: Alexander Vladishev * * * ******************************************************************************/ void send_areg_data(zbx_sock_t *sock) { const char *__function_name = "send_areg_data"; struct zbx_json j; zbx_uint64_t lastid; int records; char *info = NULL, *error = NULL; zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __function_name); zbx_json_init(&j, ZBX_JSON_STAT_BUF_LEN); zbx_json_addarray(&j, ZBX_PROTO_TAG_DATA); records = proxy_get_areg_data(&j, &lastid); zbx_json_close(&j); zbx_json_adduint64(&j, ZBX_PROTO_TAG_CLOCK, (int)time(NULL)); if (SUCCEED != zbx_tcp_send_to(sock, j.buffer, CONFIG_TIMEOUT)) { zabbix_log(LOG_LEVEL_WARNING, "error while sending auto-registration data to server: %s", zbx_tcp_strerror()); goto out; } if (SUCCEED != zbx_recv_response(sock, &info, CONFIG_TIMEOUT, &error)) { zabbix_log(LOG_LEVEL_WARNING, "sending auto-registration data to server: error:\"%s\", info:\"%s\"", ZBX_NULL2EMPTY_STR(error), ZBX_NULL2EMPTY_STR(info)); goto out; } if (0 != records) proxy_set_areg_lastid(lastid); out: zbx_json_free(&j); zbx_free(info); zbx_free(error); zabbix_log(LOG_LEVEL_DEBUG, "End of %s()", __function_name); }
int get_value_ssh(DC_ITEM *item, AGENT_RESULT *result) { AGENT_REQUEST request; int ret = NOTSUPPORTED; const char *port, *encoding, *dns; init_request(&request); if (SUCCEED != parse_item_key(item->key, &request)) { SET_MSG_RESULT(result, zbx_strdup(NULL, "Invalid item key format.")); goto out; } if (0 != strcmp(SSH_RUN_KEY, get_rkey(&request))) { SET_MSG_RESULT(result, zbx_strdup(NULL, "Unsupported item key for this item type.")); goto out; } if (4 < get_rparams_num(&request)) { SET_MSG_RESULT(result, zbx_strdup(NULL, "Too many parameters.")); goto out; } if (NULL != (dns = get_rparam(&request, 1)) && '\0' != *dns) { strscpy(item->interface.dns_orig, dns); item->interface.addr = item->interface.dns_orig; } if (NULL != (port = get_rparam(&request, 2)) && '\0' != *port) { if (FAIL == is_ushort(port, &item->interface.port)) { SET_MSG_RESULT(result, zbx_strdup(NULL, "Invalid third parameter.")); goto out; } } else item->interface.port = ZBX_DEFAULT_SSH_PORT; encoding = get_rparam(&request, 3); ret = ssh_run(item, result, ZBX_NULL2EMPTY_STR(encoding)); out: free_request(&request); return ret; }
/****************************************************************************** * * * Function: zbx_proc_get_matching_pids * * * * Purpose: get pids matching the specified process name, user name and * * command line * * * * Parameters: processes - [IN] the list of system processes * * procname - [IN] the process name, NULL - all * * username - [IN] the user name, NULL - all * * cmdline - [IN] the command line, NULL - all * * pids - [OUT] the vector of matching pids * * * * Return value: SUCCEED - the pids were read successfully * * -errno - failed to read pids * * * ******************************************************************************/ void zbx_proc_get_matching_pids(const zbx_vector_ptr_t *processes, const char *procname, const char *username, const char *cmdline, zbx_uint64_t flags, zbx_vector_uint64_t *pids) { const char *__function_name = "zbx_proc_get_matching_pids"; struct passwd *usrinfo; int i; zbx_sysinfo_proc_t *proc; zabbix_log(LOG_LEVEL_TRACE, "In %s() procname:%s username:%s cmdline:%s zone:%d", __function_name, ZBX_NULL2EMPTY_STR(procname), ZBX_NULL2EMPTY_STR(username), ZBX_NULL2EMPTY_STR(cmdline), flags); if (NULL != username) { /* in the case of invalid user there are no matching processes, return empty vector */ if (NULL == (usrinfo = getpwnam(username))) goto out; } else usrinfo = NULL; for (i = 0; i < processes->values_num; i++) { proc = (zbx_sysinfo_proc_t *)processes->values[i]; if (SUCCEED != proc_match_user(proc, usrinfo)) continue; if (SUCCEED != proc_match_name(proc, procname)) continue; if (SUCCEED != proc_match_cmdline(proc, cmdline)) continue; zbx_vector_uint64_append(pids, (zbx_uint64_t)proc->pid); } out: zabbix_log(LOG_LEVEL_TRACE, "End of %s()", __function_name); }