1.添加日志
This commit is contained in:
@@ -17,15 +17,14 @@
|
|||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
//#include "cJSON/cJSON.h"
|
|
||||||
#include "cJSON.h"
|
|
||||||
#include "MESA/MESA_prof_load.h"
|
|
||||||
#include "MESA/stream.h"
|
|
||||||
#include "MESA/MESA_prof_load.h"
|
|
||||||
#include "MESA/MESA_handle_logger.h"
|
|
||||||
#include "MESA/MESA_htable.h"
|
|
||||||
#include "MESA/MESA_list.h"
|
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
#include "cJSON.h"
|
||||||
|
#include "../../../opt/MESA/include/MESA/MESA_prof_load.h"
|
||||||
|
#include "../../../opt/MESA/include/MESA/stream.h"
|
||||||
|
#include "../../../opt/MESA/include/MESA/MESA_prof_load.h"
|
||||||
|
#include "../../../opt/MESA/include/MESA/MESA_handle_logger.h"
|
||||||
|
#include "../../../opt/MESA/include/MESA/MESA_htable.h"
|
||||||
|
#include "../../../opt/MESA/include/MESA/MESA_list.h"
|
||||||
|
|
||||||
#define BUFSIZE 8192
|
#define BUFSIZE 8192
|
||||||
#define MAX_STR_LEN 256
|
#define MAX_STR_LEN 256
|
||||||
@@ -36,6 +35,11 @@
|
|||||||
uint16_t g_http_port;
|
uint16_t g_http_port;
|
||||||
char g_http_address[MAX_STR_LEN]="";
|
char g_http_address[MAX_STR_LEN]="";
|
||||||
const char *http_check_conf_file = "./plug/business/http_check/http_check.conf";
|
const char *http_check_conf_file = "./plug/business/http_check/http_check.conf";
|
||||||
|
char http_check_log_path[MAX_STR_LEN] = "";
|
||||||
|
char http_check_error_log_path[MAX_STR_LEN] = "";
|
||||||
|
char module_name[MAX_STR_LEN] = "";
|
||||||
|
void *http_check_log_handler = NULL;
|
||||||
|
void *error_log_handler = NULL;
|
||||||
|
|
||||||
struct route_info
|
struct route_info
|
||||||
{
|
{
|
||||||
@@ -82,39 +86,38 @@ char *get_items_by_pos(char *buff, unsigned int numb)
|
|||||||
long get_pro_cpu_time(unsigned int pid)
|
long get_pro_cpu_time(unsigned int pid)
|
||||||
{
|
{
|
||||||
FILE *fp = NULL;
|
FILE *fp = NULL;
|
||||||
char *vpos, buff[MAX_BUF_LEN] = "";
|
char *vpos = NULL, buff[MAX_BUF_LEN] = "";
|
||||||
long utime, stime, cutime, cstime;
|
long utime, stime, cutime, cstime;
|
||||||
|
|
||||||
sprintf(buff, "/proc/%d/stat", pid);
|
sprintf(buff, "/proc/%d/stat", pid);
|
||||||
|
|
||||||
fp = fopen(buff, "r");
|
fp = fopen(buff, "r");
|
||||||
if(fp == NULL)
|
if(fp == NULL)
|
||||||
{
|
{
|
||||||
printf("file open /proc/self/stat error!");
|
MESA_handle_runtime_log(error_log_handler, RLOG_LV_FATAL, module_name, "open /proc/self/stat failed.");
|
||||||
|
printf("====line:%d,%s\n",__LINE__,"open /proc/self/stat failed.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
fgets(buff, sizeof(buff), fp);
|
fgets(buff, sizeof(buff), fp);
|
||||||
|
|
||||||
vpos = get_items_by_pos(buff, CPU_START_POS);
|
vpos = get_items_by_pos(buff, CPU_START_POS);
|
||||||
sscanf(vpos, "%ld %ld %ld %ld", &utime, &stime, &cutime, &cstime);
|
sscanf(vpos, "%ld %ld %ld %ld", &utime, &stime, &cutime, &cstime);
|
||||||
//printf("get_data_process:%ld %ld %ld %ld\n", utime, stime, cutime, cstime);
|
//printf("get_data_process:%ld %ld %ld %ld\n", utime, stime, cutime, cstime);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
||||||
return (utime + stime + cutime + cstime);
|
return (utime + stime + cutime + cstime);
|
||||||
//return (utime + stime);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//获取整个系统的CPU时间
|
//获取整个系统的CPU时间
|
||||||
long get_sys_cpu_time(void)
|
long get_sys_cpu_time(void)
|
||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
char name[MAX_NAME_LEN] = "", buff[MAX_BUF_LEN] = "";
|
char name[MAX_BUF_LEN] = "", buff[MAX_BUF_LEN] = "";
|
||||||
long user, nice, syst, idle;
|
long user, nice, syst, idle;
|
||||||
|
|
||||||
fp = fopen("/proc/stat", "r");
|
fp = fopen("/proc/stat", "r");
|
||||||
if(fp == NULL)
|
if(fp == NULL)
|
||||||
{
|
{
|
||||||
printf("file open /proc/stat error!");
|
MESA_handle_runtime_log(error_log_handler, RLOG_LV_FATAL, module_name, "open /proc/stat failed.");
|
||||||
|
printf("====line:%d,%s\n",__LINE__,"open /proc/stat failed.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
fgets(buff, sizeof(buff), fp);
|
fgets(buff, sizeof(buff), fp);
|
||||||
@@ -123,7 +126,6 @@ long get_sys_cpu_time(void)
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
||||||
return (user + nice + syst + idle);
|
return (user + nice + syst + idle);
|
||||||
//return (user + syst);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//获取进程的CPU使用率
|
//获取进程的CPU使用率
|
||||||
@@ -163,7 +165,7 @@ int readNlSock(int sockFd, char *bufPtr, int seqNum, int pId)
|
|||||||
//收到内核的应答
|
//收到内核的应答
|
||||||
if((readLen = recv(sockFd, bufPtr, BUFSIZE - msgLen, 0)) < 0)
|
if((readLen = recv(sockFd, bufPtr, BUFSIZE - msgLen, 0)) < 0)
|
||||||
{
|
{
|
||||||
perror("SOCK READ: ");
|
printf("sock read error!");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,7 +173,7 @@ int readNlSock(int sockFd, char *bufPtr, int seqNum, int pId)
|
|||||||
//检查header是否有效
|
//检查header是否有效
|
||||||
if((NLMSG_OK(nlHdr, readLen) == 0) || (nlHdr->nlmsg_type == NLMSG_ERROR))
|
if((NLMSG_OK(nlHdr, readLen) == 0) || (nlHdr->nlmsg_type == NLMSG_ERROR))
|
||||||
{
|
{
|
||||||
perror("Error in recieved packet");
|
printf("error in recieved packet!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,19 +197,19 @@ int readNlSock(int sockFd, char *bufPtr, int seqNum, int pId)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//分析返回的路由信息
|
//分析返回的路由信息
|
||||||
void parseRoutes(struct nlmsghdr *nlHdr, struct route_info *rtInfo,char *gateway)
|
void parseRoutes(struct nlmsghdr *nlHdr, struct route_info *rtInfo,char *gateway,unsigned int len)
|
||||||
{
|
{
|
||||||
struct rtmsg *rtMsg;
|
struct rtmsg *rtMsg = NULL;
|
||||||
struct rtattr *rtAttr;
|
struct rtattr *rtAttr = NULL;
|
||||||
int rtLen;
|
int rtLen;
|
||||||
struct in_addr dst;
|
char dst_address[MAX_STR_LEN] = "";
|
||||||
struct in_addr gate;
|
|
||||||
unsigned char *bytes = NULL;
|
|
||||||
rtMsg = (struct rtmsg *)NLMSG_DATA(nlHdr);
|
rtMsg = (struct rtmsg *)NLMSG_DATA(nlHdr);
|
||||||
// If the route is not for AF_INET or does not belong to main routing table
|
// If the route is not for AF_INET or does not belong to main routing table
|
||||||
//then return.
|
//then return.
|
||||||
if((rtMsg->rtm_family != AF_INET) || (rtMsg->rtm_table != RT_TABLE_MAIN))
|
if((rtMsg->rtm_family != AF_INET) || (rtMsg->rtm_table != RT_TABLE_MAIN))
|
||||||
return;
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
rtAttr = (struct rtattr *)RTM_RTA(rtMsg);
|
rtAttr = (struct rtattr *)RTM_RTA(rtMsg);
|
||||||
rtLen = RTM_PAYLOAD(nlHdr);
|
rtLen = RTM_PAYLOAD(nlHdr);
|
||||||
@@ -217,48 +219,39 @@ void parseRoutes(struct nlmsghdr *nlHdr, struct route_info *rtInfo,char *gateway
|
|||||||
switch(rtAttr->rta_type)
|
switch(rtAttr->rta_type)
|
||||||
{
|
{
|
||||||
case RTA_OIF:
|
case RTA_OIF:
|
||||||
if_indextoname(*(int *)RTA_DATA(rtAttr), rtInfo->ifName);
|
if_indextoname(*(int *)RTA_DATA(rtAttr), rtInfo->ifName);
|
||||||
break;
|
break;
|
||||||
case RTA_GATEWAY:
|
case RTA_GATEWAY:
|
||||||
rtInfo->gateWay = *(u_int *)RTA_DATA(rtAttr);
|
rtInfo->gateWay = *(u_int *)RTA_DATA(rtAttr);
|
||||||
break;
|
break;
|
||||||
case RTA_PREFSRC:
|
case RTA_PREFSRC:
|
||||||
rtInfo->srcAddr = *(u_int *)RTA_DATA(rtAttr);
|
rtInfo->srcAddr = *(u_int *)RTA_DATA(rtAttr);
|
||||||
break;
|
break;
|
||||||
case RTA_DST:
|
case RTA_DST:
|
||||||
rtInfo->dstAddr = *(u_int *)RTA_DATA(rtAttr);
|
rtInfo->dstAddr = *(u_int *)RTA_DATA(rtAttr);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dst.s_addr = rtInfo->dstAddr;
|
inet_ntop(AF_INET, &rtInfo->dstAddr, dst_address, MAX_STR_LEN);
|
||||||
//if (strstr((char *)inet_ntoa(dst), "0.0.0.0"))
|
if (strstr(dst_address, "0.0.0.0"))
|
||||||
if (dst.s_addr == 0)
|
{
|
||||||
{
|
inet_ntop(AF_INET, &rtInfo->gateWay, gateway, len);
|
||||||
//printf("oif:%s",rtInfo->ifName);
|
//printf("%s\n",gateway);
|
||||||
gate.s_addr = rtInfo->gateWay;
|
|
||||||
//sprintf(gateway, (char *)inet_ntoa(gate));
|
|
||||||
bytes = (unsigned char *) &gate.s_addr;
|
|
||||||
sprintf(gateway, "%d.%d.%d.%d", bytes[0], bytes[1], bytes[2], bytes[3] );
|
|
||||||
//printf("%s\n",gateway);
|
|
||||||
gate.s_addr = rtInfo->srcAddr;
|
|
||||||
//printf("src:%s\n",(char *)inet_ntoa(gate));
|
|
||||||
gate.s_addr = rtInfo->dstAddr;
|
|
||||||
//printf("dst:%s\n",(char *)inet_ntoa(gate));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int get_gateway(char *gateway)
|
int get_gateway(char *gateway, unsigned int length)//传入长度
|
||||||
{
|
{
|
||||||
struct nlmsghdr *nlMsg;
|
struct nlmsghdr *nlMsg = NULL;
|
||||||
struct route_info *rtInfo;
|
struct route_info *rtInfo = NULL;
|
||||||
char msgBuf[BUFSIZE];
|
char msgBuf[BUFSIZE] = "";
|
||||||
int sock, len, msgSeq = 0;
|
int sock, len, msgSeq = 0;
|
||||||
|
|
||||||
if((sock = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE)) < 0)
|
if((sock = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE)) < 0)
|
||||||
{
|
{
|
||||||
perror("Socket Creation: ");
|
printf("socket creation error!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -272,25 +265,26 @@ int get_gateway(char *gateway)
|
|||||||
|
|
||||||
if(send(sock, nlMsg, nlMsg->nlmsg_len, 0) < 0)
|
if(send(sock, nlMsg, nlMsg->nlmsg_len, 0) < 0)
|
||||||
{
|
{
|
||||||
printf("Write To Socket Failed…\n");
|
printf("Write To Socket Failed…\n");
|
||||||
return -1;
|
goto OUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((len = readNlSock(sock, msgBuf, msgSeq, getpid())) < 0)
|
if((len = readNlSock(sock, msgBuf, msgSeq, getpid())) < 0)
|
||||||
{
|
{
|
||||||
printf("Read From Socket Failed…\n");
|
printf("Read From Socket Failed…\n");
|
||||||
return -1;
|
goto OUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtInfo = (struct route_info *)malloc(sizeof(struct route_info));
|
rtInfo = (struct route_info *)malloc(sizeof(struct route_info));
|
||||||
for(;NLMSG_OK(nlMsg,len);nlMsg = NLMSG_NEXT(nlMsg,len))
|
for(;NLMSG_OK(nlMsg,len);nlMsg = NLMSG_NEXT(nlMsg,len))
|
||||||
{
|
{
|
||||||
memset(rtInfo, 0, sizeof(struct route_info));
|
memset(rtInfo, 0, sizeof(struct route_info));
|
||||||
parseRoutes(nlMsg, rtInfo,gateway);
|
parseRoutes(nlMsg, rtInfo,gateway, length);
|
||||||
}
|
}
|
||||||
free(rtInfo);
|
free(rtInfo);
|
||||||
|
|
||||||
|
OUT:
|
||||||
close(sock);
|
close(sock);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -304,10 +298,12 @@ void http_handler_status_msg(struct evhttp_request *req,void *arg)
|
|||||||
unsigned int run_days,run_hour,run_minute,run_second;
|
unsigned int run_days,run_hour,run_minute,run_second;
|
||||||
pid_t process_id;
|
pid_t process_id;
|
||||||
|
|
||||||
|
memset(&info, 0, sizeof(struct sysinfo));
|
||||||
//启动时间,启动时长
|
//启动时间,启动时长
|
||||||
if (sysinfo(&info))
|
if (sysinfo(&info))
|
||||||
{
|
{
|
||||||
printf("====line:%d,%s\n",__LINE__,"Failed to get sysinfo!");
|
MESA_handle_runtime_log(error_log_handler, RLOG_LV_FATAL, module_name, "failed to get sysinfo.");
|
||||||
|
printf("====line:%d,%s\n",__LINE__,"failed to get sysinfo!");
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
time(&cur_time);
|
time(&cur_time);
|
||||||
@@ -329,15 +325,15 @@ void http_handler_status_msg(struct evhttp_request *req,void *arg)
|
|||||||
|
|
||||||
//默认网关地址
|
//默认网关地址
|
||||||
char default_gateway_tmp[MAX_STR_LEN]="";
|
char default_gateway_tmp[MAX_STR_LEN]="";
|
||||||
get_gateway(default_gateway_tmp);
|
get_gateway(default_gateway_tmp ,MAX_STR_LEN);
|
||||||
//printf("gateway:%s\n",buff);
|
//printf("gateway:%s\n",buff);
|
||||||
|
|
||||||
//内存(虚存,实存)
|
//内存(虚存,实存)
|
||||||
unsigned int n_rss, n_resident, n_share, n_text, n_lib, n_data, n_dt;
|
unsigned int n_rss, n_resident, n_share, n_text, n_lib, n_data, n_dt;
|
||||||
char mem_buf_tmp[MAX_STR_LEN];
|
char mem_buf_tmp[MAX_STR_LEN] = "";
|
||||||
char boot_time_tmp[MAX_STR_LEN];
|
char boot_time_tmp[MAX_STR_LEN] = "";
|
||||||
char running_time_tmp[MAX_STR_LEN];
|
char running_time_tmp[MAX_STR_LEN] = "";
|
||||||
char cpu_usage_tmp[MAX_STR_LEN];
|
char cpu_usage_tmp[MAX_STR_LEN] = "";
|
||||||
FILE *fp = fopen("/proc/self/statm","r");
|
FILE *fp = fopen("/proc/self/statm","r");
|
||||||
|
|
||||||
if(fp)
|
if(fp)
|
||||||
@@ -347,7 +343,8 @@ void http_handler_status_msg(struct evhttp_request *req,void *arg)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("====line:%d,%s\n",__LINE__,"open /proc/self/statm failed!");
|
MESA_handle_runtime_log(error_log_handler, RLOG_LV_FATAL, module_name, "open /proc/self/statm failed.");
|
||||||
|
printf("====line:%d,%s\n",__LINE__,"open /proc/self/statm failed.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
n_rss = n_rss * (getpagesize()/1024);
|
n_rss = n_rss * (getpagesize()/1024);
|
||||||
@@ -366,7 +363,8 @@ void http_handler_status_msg(struct evhttp_request *req,void *arg)
|
|||||||
retbuff = evbuffer_new();
|
retbuff = evbuffer_new();
|
||||||
if(retbuff == NULL)
|
if(retbuff == NULL)
|
||||||
{
|
{
|
||||||
printf("====line:%d,%s\n",__LINE__,"retbuff is null.");
|
MESA_handle_runtime_log(error_log_handler, RLOG_LV_FATAL, module_name, "status evbuffer_new failed.");
|
||||||
|
printf("====line:%d,%s\n",__LINE__,"status evbuffer_new failed.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sprintf(boot_time_tmp, "%d-%-d-%d %d:%d:%d", ptm->tm_year + 1900,ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
|
sprintf(boot_time_tmp, "%d-%-d-%d %d:%d:%d", ptm->tm_year + 1900,ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
|
||||||
@@ -375,7 +373,8 @@ void http_handler_status_msg(struct evhttp_request *req,void *arg)
|
|||||||
cJSON * root = cJSON_CreateObject();
|
cJSON * root = cJSON_CreateObject();
|
||||||
if(!root)
|
if(!root)
|
||||||
{
|
{
|
||||||
printf("====line:%d,%s\n",__LINE__,"cJSON_CreateObject error!");
|
MESA_handle_runtime_log(error_log_handler, RLOG_LV_FATAL, module_name, "status cjson createObject error.");
|
||||||
|
printf("====line:%d,%s\n",__LINE__,"status cjson createObject error.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//根节点下添加
|
//根节点下添加
|
||||||
@@ -387,7 +386,7 @@ void http_handler_status_msg(struct evhttp_request *req,void *arg)
|
|||||||
cJSON_AddItemToObject(root, "memory info", cJSON_CreateString(mem_buf_tmp));
|
cJSON_AddItemToObject(root, "memory info", cJSON_CreateString(mem_buf_tmp));
|
||||||
cJSON_AddItemToObject(root, "cpu usage", cJSON_CreateString(cpu_usage_tmp));
|
cJSON_AddItemToObject(root, "cpu usage", cJSON_CreateString(cpu_usage_tmp));
|
||||||
printf("cjson_status_print:%s\n", cJSON_Print(root));
|
printf("cjson_status_print:%s\n", cJSON_Print(root));
|
||||||
|
MESA_handle_runtime_log(http_check_log_handler, RLOG_LV_INFO, module_name, cJSON_Print(root));
|
||||||
//evbuffer_add_printf(retbuff,"System boot time: %d-%-d-%d %d:%d:%d\r\nsystem running time:%dday %dhour %dminute %dsecond\r\nprocess id:%d\r\ngateway:%s\r\nmemory info:%s\r\ncpu% = %f\r\n",
|
//evbuffer_add_printf(retbuff,"System boot time: %d-%-d-%d %d:%d:%d\r\nsystem running time:%dday %dhour %dminute %dsecond\r\nprocess id:%d\r\ngateway:%s\r\nmemory info:%s\r\ncpu% = %f\r\n",
|
||||||
// ptm->tm_year + 1900,ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec, run_days,run_hour,run_minute,run_second,process_id,buff,buf,cpu_rate*cpu_num);
|
// ptm->tm_year + 1900,ptm->tm_mon + 1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec, run_days,run_hour,run_minute,run_second,process_id,buff,buf,cpu_rate*cpu_num);
|
||||||
evbuffer_add_printf(retbuff,cJSON_Print(root));
|
evbuffer_add_printf(retbuff,cJSON_Print(root));
|
||||||
@@ -413,19 +412,21 @@ void http_handler_keepalive_msg(struct evhttp_request *req,void *arg)
|
|||||||
retbuff = evbuffer_new();
|
retbuff = evbuffer_new();
|
||||||
if(retbuff == NULL)
|
if(retbuff == NULL)
|
||||||
{
|
{
|
||||||
printf("====line:%d,%s\n",__LINE__,"retbuff is null.");
|
MESA_handle_runtime_log(error_log_handler, RLOG_LV_FATAL, module_name, "keepalive evbuffer_new failed.");
|
||||||
|
printf("====line:%d,%s\n",__LINE__,"keepalive evbuffer_new failed.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
cJSON * root = cJSON_CreateObject();
|
cJSON * root = cJSON_CreateObject();
|
||||||
if(!root)
|
if(!root)
|
||||||
{
|
{
|
||||||
printf("====line:%d,%s\n",__LINE__,"cJSON_CreateObject error!");
|
MESA_handle_runtime_log(error_log_handler, RLOG_LV_FATAL, module_name, "keepalive cjson_createobject error.");
|
||||||
|
printf("====line:%d,%s\n",__LINE__,"keepalice cjson_createobject error.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
cJSON_AddItemToObject(root, "current time", cJSON_CreateString(asctime(local)));
|
cJSON_AddItemToObject(root, "current time", cJSON_CreateString(asctime(local)));
|
||||||
printf("cjson_keepalive_print:%s\n", cJSON_Print(root));
|
printf("cjson_keepalive_print:%s\n", cJSON_Print(root));
|
||||||
|
MESA_handle_runtime_log(http_check_log_handler, RLOG_LV_INFO, module_name, cJSON_Print(root));
|
||||||
evbuffer_add_printf(retbuff,cJSON_Print(root));
|
evbuffer_add_printf(retbuff,cJSON_Print(root));
|
||||||
evhttp_send_reply(req,HTTP_OK,"OK",retbuff);
|
evhttp_send_reply(req,HTTP_OK,"OK",retbuff);
|
||||||
evbuffer_free(retbuff);
|
evbuffer_free(retbuff);
|
||||||
@@ -437,33 +438,11 @@ void http_handler_keepalive_msg(struct evhttp_request *req,void *arg)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *pthread(void *arg)
|
void *http_check_dispatch(void *arg)
|
||||||
{
|
{
|
||||||
struct evhttp *http_server = NULL;
|
|
||||||
//short http_port = 10000;
|
|
||||||
//char *http_addr = "0.0.0.0";
|
|
||||||
|
|
||||||
MESA_load_profile_int_def(http_check_conf_file, "HTTP", "SERVER_PORT", (int *)(&g_http_port), 0);
|
|
||||||
MESA_load_profile_string_def(http_check_conf_file, "HTTP", "SERVER_IP", g_http_address, MAX_STR_LEN, NULL);
|
|
||||||
printf("*v2*******read_ip:%s,read_port:%d\n",g_http_address, g_http_port);
|
|
||||||
//初始化
|
|
||||||
event_init();
|
|
||||||
//启动http服务端
|
|
||||||
http_server = evhttp_start(g_http_address,g_http_port);
|
|
||||||
if(http_server == NULL)
|
|
||||||
{
|
|
||||||
printf("====line:%d,%s\n",__LINE__,"http server start failed.");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
//设置请求超时时间(s)
|
|
||||||
evhttp_set_timeout(http_server,HTTP_TIMEOUT);
|
|
||||||
//设置事件处理函数,针对每一个事件(请求)注册一个处理函数,为特定的URI指定callback
|
|
||||||
evhttp_set_cb(http_server,"/status",http_handler_status_msg,NULL);
|
|
||||||
evhttp_set_cb(http_server,"/keepalive",http_handler_keepalive_msg,NULL);
|
|
||||||
//循环监听
|
//循环监听
|
||||||
event_dispatch();
|
event_dispatch();
|
||||||
evhttp_free(http_server);
|
//evhttp_free(http_server);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -471,18 +450,63 @@ void *pthread(void *arg)
|
|||||||
int http_check_init()
|
int http_check_init()
|
||||||
{
|
{
|
||||||
pthread_t tidp;
|
pthread_t tidp;
|
||||||
|
struct evhttp *http_server = NULL;
|
||||||
|
int log_level = 30;
|
||||||
|
|
||||||
if ((pthread_create(&tidp, NULL, pthread, NULL)) == -1)
|
MESA_load_profile_int_def(http_check_conf_file, "HTTP", "SERVER_PORT", (int *)(&g_http_port), 10000);
|
||||||
{
|
MESA_load_profile_string_def(http_check_conf_file, "HTTP", "SERVER_IP", g_http_address, MAX_STR_LEN, "0.0.0.0");
|
||||||
printf("====line:%d,%s\n",__LINE__,"http_check thread create error!");
|
MESA_load_profile_string_def(http_check_conf_file, "HTTP", "HTTP_CHECK_LOG_PATH", http_check_log_path, MAX_STR_LEN, "");
|
||||||
return 0;
|
MESA_load_profile_string_def(http_check_conf_file, "HTTP", "HTTP_CHECK_ERR_LOG_PATH", http_check_error_log_path, MAX_STR_LEN, "");
|
||||||
}
|
MESA_load_profile_string_def(http_check_conf_file, "HTTP", "MODULE_NAME", module_name, MAX_STR_LEN, "");
|
||||||
|
MESA_load_profile_int_def(http_check_conf_file, "HTTP", "LOG_LEVEL", &log_level, 30);
|
||||||
|
printf("*v12*******read_ip:%s,read_port:%d\n",g_http_address, g_http_port);
|
||||||
|
|
||||||
|
http_check_log_handler = MESA_create_runtime_log_handle(http_check_log_path, RLOG_LV_INFO);
|
||||||
|
error_log_handler = MESA_create_runtime_log_handle(http_check_error_log_path, log_level);
|
||||||
|
if (http_check_log_handler == NULL || error_log_handler == NULL)
|
||||||
|
{
|
||||||
|
MESA_handle_runtime_log(error_log_handler, RLOG_LV_FATAL, module_name, "http check init error.");
|
||||||
|
printf("====line:%d,%s\n",__LINE__,"http check init error.");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
//初始化
|
||||||
|
event_init();
|
||||||
|
//启动http服务端
|
||||||
|
http_server = evhttp_start(g_http_address,g_http_port);
|
||||||
|
if(http_server == NULL)
|
||||||
|
{
|
||||||
|
MESA_handle_runtime_log(error_log_handler, RLOG_LV_FATAL, module_name, "evhttp_start failed.");
|
||||||
|
printf("====line:%d,%s\n",__LINE__,"evhttp_start failed.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//设置请求超时时间(s)
|
||||||
|
evhttp_set_timeout(http_server,HTTP_TIMEOUT);
|
||||||
|
//设置事件处理函数,针对每一个事件(请求)注册一个处理函数,为特定的URI指定callback
|
||||||
|
evhttp_set_cb(http_server,"/status",http_handler_status_msg,NULL);
|
||||||
|
evhttp_set_cb(http_server,"/keepalive",http_handler_keepalive_msg,NULL);
|
||||||
|
|
||||||
|
if ((pthread_create(&tidp, NULL, http_check_dispatch, NULL)) == -1)
|
||||||
|
{
|
||||||
|
MESA_handle_runtime_log(error_log_handler, RLOG_LV_FATAL, module_name, "http_check_dispatch thread create failed.");
|
||||||
|
printf("====line:%d,%s\n",__LINE__,"http_check_dispatch thread create failed.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void http_check_destory()
|
void http_check_destory()
|
||||||
{
|
{
|
||||||
|
if (http_check_log_handler)
|
||||||
|
{
|
||||||
|
MESA_destroy_runtime_log_handle(http_check_log_handler);
|
||||||
|
}
|
||||||
|
if (error_log_handler)
|
||||||
|
{
|
||||||
|
MESA_destroy_runtime_log_handle(error_log_handler);
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user