提交 79a0b386 编写于 作者: G Ganlin Zhao

[TD-6452]<feature>: taoskeeper add HTTP status codes

上级 67c02299
......@@ -242,6 +242,9 @@ SDnodeStatisInfo dnodeGetStatisInfo() {
if (dnodeGetRunStatus() == TSDB_RUN_STATUS_RUNING) {
#ifdef HTTP_EMBEDDED
info.httpReqNum = httpGetReqCount();
for (int i = 0; i < MAX_HTTP_STATUS_CODE_NUM; ++i) {
info.httpStatusCodeErrs[i] = httpGetStatusCodeCount(i);
}
#endif
info.queryReqNum = atomic_load_32(&tsQueryReqNum);
info.submitReqNum = atomic_load_32(&tsSubmitReqNum);
......@@ -254,6 +257,9 @@ void dnodeClearStatisInfo() {
if (dnodeGetRunStatus() == TSDB_RUN_STATUS_RUNING) {
#ifdef HTTP_EMBEDDED
httpClearReqCount();
for (int i = 0; i < MAX_HTTP_STATUS_CODE_NUM; ++i) {
httpClearStatusCodeCount(i);
}
#endif
atomic_exchange_32(&tsQueryReqNum, 0);
atomic_exchange_32(&tsSubmitReqNum, 0);
......
......@@ -23,10 +23,12 @@ extern "C" {
#include "trpc.h"
#include "taosmsg.h"
#define MAX_HTTP_STATUS_CODE_NUM 63
typedef struct {
int32_t queryReqNum;
int32_t submitReqNum;
int32_t httpReqNum;
int32_t httpStatusCodeErrs[MAX_HTTP_STATUS_CODE_NUM];
} SDnodeStatisInfo;
SDnodeStatisInfo dnodeGetStatisInfo();
......
......@@ -24,6 +24,8 @@ extern "C" {
int32_t httpGetReqCount();
int32_t httpClearReqCount();
int32_t httpGetStatusCodeCount(int index);
int32_t httpClearStatusCodeCount(int index);
int32_t httpInitSystem();
int32_t httpStartSystem();
void httpStopSystem();
......
......@@ -122,3 +122,9 @@ void httpCleanUpSystem() {
int32_t httpGetReqCount() { return atomic_load_32(&tsHttpServer.requestNum); }
int32_t httpClearReqCount() { return atomic_exchange_32(&tsHttpServer.requestNum, 0); }
int32_t httpGetStatusCodeCount(int index) {
return atomic_load_32(&tsHttpServer.statusCodeErrs[index]);
}
int32_t httpClearStatusCodeCount(int index) {
return atomic_exchange_32(&tsHttpServer.statusCodeErrs[index], 0);
}
......@@ -163,6 +163,7 @@ static void monSaveVgroupsInfo();
static void monSaveSlowQueryInfo();
static void monSaveDisksInfo();
static void monSaveGrantsInfo();
static void monSaveHttpReqInfo();
static void *monThreadFunc(void *param);
static void monBuildMonitorSql(char *sql, int32_t cmd);
static void monInitHttpStatusHashTable();
......@@ -310,6 +311,7 @@ static void *monThreadFunc(void *param) {
monSaveSlowQueryInfo();
monSaveDisksInfo();
monSaveGrantsInfo();
monSaveHttpReqInfo();
monSaveSystemInfo();
}
}
......@@ -1202,6 +1204,32 @@ static void monSaveGrantsInfo() {
}
static void monSaveHttpReqInfo() {
int64_t ts = taosGetTimestampUs();
char * sql = tsMonitor.sql;
int32_t pos = snprintf(sql, SQL_LENGTH, "insert into %s.dnode_%d values(%" PRId64, tsMonitorDbName, dnodeGetDnodeId(), ts);
SDnodeStatisInfo info = dnodeGetStatisInfo();
for (int32_t i = 0; i < tListLen(monHttpStatusTable); ++i) {
int32_t status = info.httpStatusCodeErrs[i];
pos += snprintf(sql, SQL_LENGTH, ", %d", status);
}
pos += snprintf(sql, SQL_LENGTH, ")");
monError("sql:%s", sql);
void *res = taos_query(tsMonitor.conn, tsMonitor.sql);
int32_t code = taos_errno(res);
taos_free_result(res);
if (code != 0) {
monError("failed to save restful_%d info, reason:%s, sql:%s", dnodeGetDnodeId(), tstrerror(code), tsMonitor.sql);
} else {
monIncSubmitReqCnt();
monDebug("successfully to save restful_%d info, sql:%s", dnodeGetDnodeId(), tsMonitor.sql);
}
}
static void monExecSqlCb(void *param, TAOS_RES *result, int32_t code) {
int32_t c = taos_errno(result);
if (c != TSDB_CODE_SUCCESS) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册