parent
c3be7eafe2
commit
2529f04b66
|
@ -12,6 +12,10 @@ application:
|
||||||
system_info_refresh = 10; # 硬件信息监控刷新频率(秒)
|
system_info_refresh = 10; # 硬件信息监控刷新频率(秒)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
agent: {
|
||||||
|
iptv_report_url = "http://127.0.0.1:50012/vcpe/dhcp/info"; # IPTV 设备上报接口
|
||||||
|
};
|
||||||
|
|
||||||
# 硬件监控相关配置内容
|
# 硬件监控相关配置内容
|
||||||
watch_params:
|
watch_params:
|
||||||
{
|
{
|
||||||
|
|
|
@ -65,6 +65,8 @@ static CFG_ITEM g_cfgItem[] = {
|
||||||
DEF_CFG_ITEM(CFG_BANNER_SHOW, "system.show_banner", VAL_BOOL, "1", "Enable/Disable show banner"),
|
DEF_CFG_ITEM(CFG_BANNER_SHOW, "system.show_banner", VAL_BOOL, "1", "Enable/Disable show banner"),
|
||||||
DEF_CFG_ITEM(CFG_HARDWARE_WATCH, "system.system_info_watch", VAL_BOOL, "1", "Monitor cpu, memory, disk, fan, temperature ..."),
|
DEF_CFG_ITEM(CFG_HARDWARE_WATCH, "system.system_info_watch", VAL_BOOL, "1", "Monitor cpu, memory, disk, fan, temperature ..."),
|
||||||
DEF_CFG_ITEM(CFG_HARDWARE_REFRESH, "system.system_info_refresh", VAL_INT, "10", "Monitor hardware information upgrade frequency"),
|
DEF_CFG_ITEM(CFG_HARDWARE_REFRESH, "system.system_info_refresh", VAL_INT, "10", "Monitor hardware information upgrade frequency"),
|
||||||
|
// Agent 配置
|
||||||
|
DEF_CFG_ITEM(CFG_AGENT_IPTV_POST_URL, "agent.iptv_report_url", VAL_STR, "", "IPTV report URL"),
|
||||||
/* 系统监控设备相配置 */
|
/* 系统监控设备相配置 */
|
||||||
DEF_CFG_ITEM(CFG_WATCH_CPU, "watch_params.cpu", VAL_BOOL, "1", "Monitor cpu information"),
|
DEF_CFG_ITEM(CFG_WATCH_CPU, "watch_params.cpu", VAL_BOOL, "1", "Monitor cpu information"),
|
||||||
DEF_CFG_ITEM(CFG_WATCH_MEMORY, "watch_params.memory", VAL_BOOL, "1", "Monitor memory information"),
|
DEF_CFG_ITEM(CFG_WATCH_MEMORY, "watch_params.memory", VAL_BOOL, "1", "Monitor memory information"),
|
||||||
|
|
|
@ -33,6 +33,10 @@ c_vector config_get_dhcp_mac_filter() {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *config_get_agent_iptv_report_url() {
|
||||||
|
return cfg_get_string_value(CFG_AGENT_IPTV_POST_URL);
|
||||||
|
}
|
||||||
|
|
||||||
const char *config_get_http_server_addr() {
|
const char *config_get_http_server_addr() {
|
||||||
return cfg_get_string_value(CFG_HTTP_SVR_ADDR);
|
return cfg_get_string_value(CFG_HTTP_SVR_ADDR);
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,7 @@ typedef enum {
|
||||||
CFG_BANNER_SHOW,
|
CFG_BANNER_SHOW,
|
||||||
CFG_HARDWARE_WATCH,
|
CFG_HARDWARE_WATCH,
|
||||||
CFG_HARDWARE_REFRESH,
|
CFG_HARDWARE_REFRESH,
|
||||||
|
CFG_AGENT_IPTV_POST_URL,
|
||||||
CFG_WATCH_CPU,
|
CFG_WATCH_CPU,
|
||||||
CFG_WATCH_MEMORY,
|
CFG_WATCH_MEMORY,
|
||||||
CFG_WATCH_DISK,
|
CFG_WATCH_DISK,
|
||||||
|
@ -132,6 +133,7 @@ const char *config_get_vxlan_nic_name();
|
||||||
const char *config_get_vxlan_peer_mac();
|
const char *config_get_vxlan_peer_mac();
|
||||||
const char *config_get_vxlan_peer_ip();
|
const char *config_get_vxlan_peer_ip();
|
||||||
const char *config_get_vxlan_pkg_filter();
|
const char *config_get_vxlan_pkg_filter();
|
||||||
|
const char *config_get_agent_iptv_report_url();
|
||||||
const char *config_get_http_server_addr();
|
const char *config_get_http_server_addr();
|
||||||
unsigned int config_get_http_server_port();
|
unsigned int config_get_http_server_port();
|
||||||
int config_get_http_server_tcp_nodelay();
|
int config_get_http_server_tcp_nodelay();
|
||||||
|
|
|
@ -729,6 +729,7 @@ const char *inet_http_post_async(const char *pURL, const char *pPost, on_http_re
|
||||||
pParams->pCurl = pCurl;
|
pParams->pCurl = pCurl;
|
||||||
pParams->lastTm = 0;
|
pParams->lastTm = 0;
|
||||||
pParams->isCancel = FALSE;
|
pParams->isCancel = FALSE;
|
||||||
|
pParams->createTm = LIBUV_CURRENT_TIME_S();
|
||||||
|
|
||||||
memset(pParams->pReqUrl, 0, strlen(pURL) + 1);
|
memset(pParams->pReqUrl, 0, strlen(pURL) + 1);
|
||||||
strcpy(pParams->pReqUrl, pURL);
|
strcpy(pParams->pReqUrl, pURL);
|
||||||
|
|
|
@ -26,6 +26,7 @@ using namespace std;
|
||||||
#include "user_errno.h"
|
#include "user_errno.h"
|
||||||
#include "uthash/uthash.h"
|
#include "uthash/uthash.h"
|
||||||
#include "sds/sds.h"
|
#include "sds/sds.h"
|
||||||
|
#include "inet_misc.h"
|
||||||
|
|
||||||
extern data2 cfig;
|
extern data2 cfig;
|
||||||
extern bool kRunning;
|
extern bool kRunning;
|
||||||
|
@ -1173,8 +1174,27 @@ int opendhcp_add_listener() {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void on_http_response_cb(void *pData,
|
||||||
|
unsigned int size,
|
||||||
|
const char *pReqUrl,
|
||||||
|
const char *pDlPath,
|
||||||
|
const char *pTaskUuid,
|
||||||
|
int iFinished,
|
||||||
|
void *pUserData) {
|
||||||
|
if (iFinished == 0) {
|
||||||
|
dzlog_debug("Request(%s): [%s] Response: [%u] OK:\n", pTaskUuid, pReqUrl, size);
|
||||||
|
} else if (iFinished == 1) {
|
||||||
|
dzlog_error("Request(%s): [%s] Response: [%u] Error\n", pTaskUuid, pReqUrl, size);
|
||||||
|
} else {
|
||||||
|
dzlog_error("Download Error Code: %d\n", iFinished);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void iptvCacheCb(void *UNUSED(pArg)) {
|
void iptvCacheCb(void *UNUSED(pArg)) {
|
||||||
do {
|
do {
|
||||||
|
bool isReport = false;
|
||||||
|
const char *pUrl = config_get_agent_iptv_report_url();
|
||||||
|
PIPTV_DEV_SET report = nullptr;
|
||||||
PIPTV_DEV_SET pDev, pTmp = nullptr;
|
PIPTV_DEV_SET pDev, pTmp = nullptr;
|
||||||
uv_rwlock_wrlock(&g_uvCacheLock);
|
uv_rwlock_wrlock(&g_uvCacheLock);
|
||||||
HASH_ITER(hh, g_iptvNewDevs, pDev, pTmp) {
|
HASH_ITER(hh, g_iptvNewDevs, pDev, pTmp) {
|
||||||
|
@ -1185,8 +1205,9 @@ void iptvCacheCb(void *UNUSED(pArg)) {
|
||||||
if (!pTemp) {
|
if (!pTemp) {
|
||||||
auto pCacheDev = (PIPTV_DEV_SET)malloc(sizeof(IPTV_DEV_SET));
|
auto pCacheDev = (PIPTV_DEV_SET)malloc(sizeof(IPTV_DEV_SET));
|
||||||
memcpy(pCacheDev, pDev, sizeof(IPTV_DEV_SET));
|
memcpy(pCacheDev, pDev, sizeof(IPTV_DEV_SET));
|
||||||
// Report new IPTV device MAC
|
HASH_ADD_STR(report, iptvMAC, pCacheDev);
|
||||||
pCacheDev->isReport = 1;
|
|
||||||
|
isReport = true;
|
||||||
// 添加到缓存列表供后续查询
|
// 添加到缓存列表供后续查询
|
||||||
HASH_ADD_STR(g_iptvCacheDevs, iptvMAC, pCacheDev);
|
HASH_ADD_STR(g_iptvCacheDevs, iptvMAC, pCacheDev);
|
||||||
dzlog_debug("Add IPTV device %s vni %d to cache\n", pCacheDev->iptvMAC, pCacheDev->vni);
|
dzlog_debug("Add IPTV device %s vni %d to cache\n", pCacheDev->iptvMAC, pCacheDev->vni);
|
||||||
|
@ -1197,6 +1218,28 @@ void iptvCacheCb(void *UNUSED(pArg)) {
|
||||||
free((void *)pDevMac);
|
free((void *)pDevMac);
|
||||||
}
|
}
|
||||||
uv_rwlock_wrunlock(&g_uvCacheLock);
|
uv_rwlock_wrunlock(&g_uvCacheLock);
|
||||||
|
|
||||||
|
if (isReport && pUrl && strlen(pUrl) > 0) {
|
||||||
|
cJSON *pRspMsg = cJSON_CreateObject();
|
||||||
|
cJSON *pMsgArray = cJSON_CreateArray();
|
||||||
|
cJSON_AddItemToObject(pRspMsg, "iptvDevs", pMsgArray);
|
||||||
|
|
||||||
|
HASH_ITER(hh, report, pDev, pTmp) {
|
||||||
|
cJSON *pRspItem = cJSON_CreateObject();
|
||||||
|
cJSON_AddStringToObject(pRspItem, "mac", pDev->iptvMAC);
|
||||||
|
cJSON_AddNumberToObject(pRspItem, "vni", pDev->vni);
|
||||||
|
pDev->isReport = 1;
|
||||||
|
cJSON_AddItemToArray(pMsgArray, pRspItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *pStrPro = proto_create_new(pRspMsg, 200);
|
||||||
|
|
||||||
|
// Report new IPTV device MAC
|
||||||
|
inet_http_post_async(config_get_agent_iptv_report_url(), pStrPro, on_http_response_cb, nullptr);
|
||||||
|
|
||||||
|
free((void *)pStrPro);
|
||||||
|
}
|
||||||
|
|
||||||
uv_sleep(10);
|
uv_sleep(10);
|
||||||
} while (true);
|
} while (true);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue