Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
adfcd98e
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1187
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
adfcd98e
编写于
11月 02, 2021
作者:
G
Ganlin Zhao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[TD-6452]<feature>: taoskeeper add HTTP status codes
上级
eef0de8a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
109 addition
and
70 deletion
+109
-70
src/inc/monitor.h
src/inc/monitor.h
+7
-0
src/plugins/http/inc/httpInt.h
src/plugins/http/inc/httpInt.h
+2
-0
src/plugins/monitor/src/monMain.c
src/plugins/monitor/src/monMain.c
+100
-70
未找到文件。
src/inc/monitor.h
浏览文件 @
adfcd98e
...
...
@@ -27,6 +27,11 @@ extern "C" {
monSaveDnodeLog(level, __VA_ARGS__); \
}
typedef
struct
{
const
char
*
name
;
int32_t
code
;
int32_t
index
;
}
SMonHttpStatus
;
typedef
struct
{
char
*
acctId
;
...
...
@@ -67,6 +72,8 @@ void monIncQueryReqCnt();
void
monIncSubmitReqCnt
();
int32_t
monFetchQueryReqCnt
();
int32_t
monFetchSubmitReqCnt
();
SMonHttpStatus
*
monGetHttpStatusHashTableEntry
(
int32_t
code
);
#ifdef __cplusplus
}
#endif
...
...
src/plugins/http/inc/httpInt.h
浏览文件 @
adfcd98e
...
...
@@ -42,6 +42,7 @@
#define HTTP_WRITE_WAIT_TIME_MS 5
#define HTTP_PASSWORD_LEN TSDB_UNI_LEN
#define HTTP_SESSION_ID_LEN (TSDB_USER_LEN + HTTP_PASSWORD_LEN)
#define HTTP_STATUS_CODE_NUM 63
typedef
enum
HttpReqType
{
HTTP_REQTYPE_OTHERS
=
0
,
...
...
@@ -189,6 +190,7 @@ typedef struct HttpServer {
int32_t
methodScannerLen
;
int32_t
requestNum
;
int32_t
status
;
int32_t
statusCodeErrs
[
HTTP_STATUS_CODE_NUM
];
pthread_t
thread
;
HttpThread
*
pThreads
;
void
*
contextCache
;
...
...
src/plugins/monitor/src/monMain.c
浏览文件 @
adfcd98e
...
...
@@ -45,72 +45,70 @@
#define MAX_TIMESERIES_LEN 30
#define CHECK_INTERVAL 1000
#define MON_MAX_HTTP_CODE 63
static
const
char
*
monHttpStatusCodeTable
[
MON_MAX_HTTP_CODE
][
2
]
=
{
{
"HTTP_CODE_CONTINUE"
,
"100"
},
{
"HTTP_CODE_SWITCHING_PROTOCOL"
,
"101"
},
{
"HTTP_CODE_PROCESSING"
,
"102"
},
{
"HTTP_CODE_EARLY_HINTS"
,
"103"
},
{
"HTTP_CODE_OK"
,
"200"
},
{
"HTTP_CODE_CREATED"
,
"201"
},
{
"HTTP_CODE_ACCEPTED"
,
"202"
},
{
"HTTP_CODE_NON_AUTHORITATIVE_INFO"
,
"203"
},
{
"HTTP_CODE_NO_CONTENT"
,
"204"
},
{
"HTTP_CODE_RESET_CONTENT"
,
"205"
},
{
"HTTP_CODE_PARTIAL_CONTENT"
,
"206"
},
{
"HTTP_CODE_MULTI_STATUS"
,
"207"
},
{
"HTTP_CODE_ALREADY_REPORTED"
,
"208"
},
{
"HTTP_CODE_IM_USED"
,
"226"
},
{
"HTTP_CODE_MULTIPLE_CHOICE"
,
"300"
},
{
"HTTP_CODE_MOVED_PERMANENTLY"
,
"301"
},
{
"HTTP_CODE_FOUND"
,
"302"
},
{
"HTTP_CODE_SEE_OTHER"
,
"303"
},
{
"HTTP_CODE_NOT_MODIFIED"
,
"304"
},
{
"HTTP_CODE_USE_PROXY"
,
"305"
},
{
"HTTP_CODE_UNUSED"
,
"306"
},
{
"HTTP_CODE_TEMPORARY_REDIRECT"
,
"307"
},
{
"HTTP_CODE_PERMANENT_REDIRECT"
,
"308"
},
{
"HTTP_CODE_BAD_REQUEST"
,
"400"
},
{
"HTTP_CODE_UNAUTHORIZED"
,
"401"
},
{
"HTTP_CODE_PAYMENT_REQUIRED"
,
"402"
},
{
"HTTP_CODE_FORBIDDEN"
,
"403"
},
{
"HTTP_CODE_NOT_FOUND"
,
"404"
},
{
"HTTP_CODE_METHOD_NOT_ALLOWED"
,
"405"
},
{
"HTTP_CODE_NOT_ACCEPTABLE"
,
"406"
},
{
"HTTP_CODE_PROXY_AUTH_REQUIRED"
,
"407"
},
{
"HTTP_CODE_REQUEST_TIMEOUT"
,
"408"
},
{
"HTTP_CODE_CONFLICT"
,
"409"
},
{
"HTTP_CODE_GONE"
,
"410"
},
{
"HTTP_CODE_LENGTH_REQUIRED"
,
"411"
},
{
"HTTP_CODE_PRECONDITION_FAILED"
,
"412"
},
{
"HTTP_CODE_PAYLOAD_TOO_LARGE"
,
"413"
},
{
"HTTP_CODE_URI_TOO_LARGE"
,
"414"
},
{
"HTTP_CODE_UNSUPPORTED_MEDIA_TYPE"
,
"415"
},
{
"HTTP_CODE_RANGE_NOT_SATISFIABLE"
,
"416"
},
{
"HTTP_CODE_EXPECTATION_FAILED"
,
"417"
},
{
"HTTP_CODE_IM_A_TEAPOT"
,
"418"
},
{
"HTTP_CODE_MISDIRECTED_REQUEST"
,
"421"
},
{
"HTTP_CODE_UNPROCESSABLE_ENTITY"
,
"422"
},
{
"HTTP_CODE_LOCKED"
,
"423"
},
{
"HTTP_CODE_FAILED_DEPENDENCY"
,
"424"
},
{
"HTTP_CODE_TOO_EARLY"
,
"425"
},
{
"HTTP_CODE_UPGRADE_REQUIRED"
,
"426"
},
{
"HTTP_CODE_PRECONDITION_REQUIRED"
,
"428"
},
{
"HTTP_CODE_TOO_MANY_REQUESTS"
,
"429"
},
{
"HTTP_CODE_REQ_HDR_FIELDS_TOO_LARGE"
,
"431"
},
{
"HTTP_CODE_UNAVAIL_4_LEGAL_REASONS"
,
"451"
},
{
"HTTP_CODE_INTERNAL_SERVER_ERROR"
,
"500"
},
{
"HTTP_CODE_NOT_IMPLEMENTED"
,
"501"
},
{
"HTTP_CODE_BAD_GATEWAY"
,
"502"
},
{
"HTTP_CODE_SERVICE_UNAVAILABLE"
,
"503"
},
{
"HTTP_CODE_GATEWAY_TIMEOUT"
,
"504"
},
{
"HTTP_CODE_HTTP_VER_NOT_SUPPORTED"
,
"505"
},
{
"HTTP_CODE_VARIANT_ALSO_NEGOTIATES"
,
"506"
},
{
"HTTP_CODE_INSUFFICIENT_STORAGE"
,
"507"
},
{
"HTTP_CODE_LOOP_DETECTED"
,
"508"
},
{
"HTTP_CODE_NOT_EXTENDED"
,
"510"
},
{
"HTTP_CODE_NETWORK_AUTH_REQUIRED"
,
"511"
},
static
SMonHttpStatus
monHttpStatusTable
[]
=
{
{
"HTTP_CODE_CONTINUE"
,
100
},
{
"HTTP_CODE_SWITCHING_PROTOCOL"
,
101
},
{
"HTTP_CODE_PROCESSING"
,
102
},
{
"HTTP_CODE_EARLY_HINTS"
,
103
},
{
"HTTP_CODE_OK"
,
200
},
{
"HTTP_CODE_CREATED"
,
201
},
{
"HTTP_CODE_ACCEPTED"
,
202
},
{
"HTTP_CODE_NON_AUTHORITATIVE_INFO"
,
203
},
{
"HTTP_CODE_NO_CONTENT"
,
204
},
{
"HTTP_CODE_RESET_CONTENT"
,
205
},
{
"HTTP_CODE_PARTIAL_CONTENT"
,
206
},
{
"HTTP_CODE_MULTI_STATUS"
,
207
},
{
"HTTP_CODE_ALREADY_REPORTED"
,
208
},
{
"HTTP_CODE_IM_USED"
,
226
},
{
"HTTP_CODE_MULTIPLE_CHOICE"
,
300
},
{
"HTTP_CODE_MOVED_PERMANENTLY"
,
301
},
{
"HTTP_CODE_FOUND"
,
302
},
{
"HTTP_CODE_SEE_OTHER"
,
303
},
{
"HTTP_CODE_NOT_MODIFIED"
,
304
},
{
"HTTP_CODE_USE_PROXY"
,
305
},
{
"HTTP_CODE_UNUSED"
,
306
},
{
"HTTP_CODE_TEMPORARY_REDIRECT"
,
307
},
{
"HTTP_CODE_PERMANENT_REDIRECT"
,
308
},
{
"HTTP_CODE_BAD_REQUEST"
,
400
},
{
"HTTP_CODE_UNAUTHORIZED"
,
401
},
{
"HTTP_CODE_PAYMENT_REQUIRED"
,
402
},
{
"HTTP_CODE_FORBIDDEN"
,
403
},
{
"HTTP_CODE_NOT_FOUND"
,
404
},
{
"HTTP_CODE_METHOD_NOT_ALLOWED"
,
405
},
{
"HTTP_CODE_NOT_ACCEPTABLE"
,
406
},
{
"HTTP_CODE_PROXY_AUTH_REQUIRED"
,
407
},
{
"HTTP_CODE_REQUEST_TIMEOUT"
,
408
},
{
"HTTP_CODE_CONFLICT"
,
409
},
{
"HTTP_CODE_GONE"
,
410
},
{
"HTTP_CODE_LENGTH_REQUIRED"
,
411
},
{
"HTTP_CODE_PRECONDITION_FAILED"
,
412
},
{
"HTTP_CODE_PAYLOAD_TOO_LARGE"
,
413
},
{
"HTTP_CODE_URI_TOO_LARGE"
,
414
},
{
"HTTP_CODE_UNSUPPORTED_MEDIA_TYPE"
,
415
},
{
"HTTP_CODE_RANGE_NOT_SATISFIABLE"
,
416
},
{
"HTTP_CODE_EXPECTATION_FAILED"
,
417
},
{
"HTTP_CODE_IM_A_TEAPOT"
,
418
},
{
"HTTP_CODE_MISDIRECTED_REQUEST"
,
421
},
{
"HTTP_CODE_UNPROCESSABLE_ENTITY"
,
422
},
{
"HTTP_CODE_LOCKED"
,
423
},
{
"HTTP_CODE_FAILED_DEPENDENCY"
,
424
},
{
"HTTP_CODE_TOO_EARLY"
,
425
},
{
"HTTP_CODE_UPGRADE_REQUIRED"
,
426
},
{
"HTTP_CODE_PRECONDITION_REQUIRED"
,
428
},
{
"HTTP_CODE_TOO_MANY_REQUESTS"
,
429
},
{
"HTTP_CODE_REQ_HDR_FIELDS_TOO_LARGE"
,
431
},
{
"HTTP_CODE_UNAVAIL_4_LEGAL_REASONS"
,
451
},
{
"HTTP_CODE_INTERNAL_SERVER_ERROR"
,
500
},
{
"HTTP_CODE_NOT_IMPLEMENTED"
,
501
},
{
"HTTP_CODE_BAD_GATEWAY"
,
502
},
{
"HTTP_CODE_SERVICE_UNAVAILABLE"
,
503
},
{
"HTTP_CODE_GATEWAY_TIMEOUT"
,
504
},
{
"HTTP_CODE_HTTP_VER_NOT_SUPPORTED"
,
505
},
{
"HTTP_CODE_VARIANT_ALSO_NEGOTIATES"
,
506
},
{
"HTTP_CODE_INSUFFICIENT_STORAGE"
,
507
},
{
"HTTP_CODE_LOOP_DETECTED"
,
508
},
{
"HTTP_CODE_NOT_EXTENDED"
,
510
},
{
"HTTP_CODE_NETWORK_AUTH_REQUIRED"
,
511
}
};
typedef
enum
{
...
...
@@ -152,6 +150,8 @@ typedef struct {
char
sql
[
SQL_LENGTH
+
1
];
}
SMonConn
;
static
void
*
monHttpStatusHashTable
;
static
SMonConn
tsMonitor
=
{
0
};
static
int32_t
monQueryReqNum
=
0
,
monSubmitReqNum
=
0
;
static
bool
monHasMnodeMaster
=
false
;
...
...
@@ -165,6 +165,9 @@ static void monSaveDisksInfo();
static
void
monSaveGrantsInfo
();
static
void
*
monThreadFunc
(
void
*
param
);
static
void
monBuildMonitorSql
(
char
*
sql
,
int32_t
cmd
);
static
void
monInitHttpStatusHashTable
();
static
void
monCleanupHttpStatusHashTable
();
extern
int32_t
(
*
monStartSystemFp
)();
extern
void
(
*
monStopSystemFp
)();
extern
void
(
*
monExecuteSQLFp
)(
char
*
sql
);
...
...
@@ -180,6 +183,7 @@ int32_t monInitSystem() {
tsMonitor
.
ep
[
i
]
=
'_'
;
}
}
monInitHttpStatusHashTable
();
pthread_attr_t
thAttr
;
pthread_attr_init
(
&
thAttr
);
...
...
@@ -208,6 +212,31 @@ int32_t monStartSystem() {
return
0
;
}
static
void
monInitHttpStatusHashTable
()
{
int32_t
numOfEntries
=
tListLen
(
monHttpStatusTable
);
monHttpStatusHashTable
=
taosHashInit
(
numOfEntries
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_INT
),
true
,
false
);
for
(
int32_t
i
=
0
;
i
<
numOfEntries
;
++
i
)
{
monHttpStatusTable
[
i
].
index
=
i
;
SMonHttpStatus
*
pEntry
=
&
monHttpStatusTable
[
i
];
taosHashPut
(
monHttpStatusHashTable
,
&
monHttpStatusTable
[
i
].
code
,
sizeof
(
int32_t
),
&
pEntry
,
POINTER_BYTES
);
}
}
static
void
monCleanupHttpStatusHashTable
()
{
void
*
m
=
monHttpStatusHashTable
;
if
(
m
!=
NULL
&&
atomic_val_compare_exchange_ptr
(
&
monHttpStatusHashTable
,
m
,
0
)
==
m
)
{
taosHashCleanup
(
m
);
}
}
SMonHttpStatus
*
monGetHttpStatusHashTableEntry
(
int32_t
code
)
{
if
(
monHttpStatusHashTable
==
NULL
)
{
return
NULL
;
}
return
(
SMonHttpStatus
*
)
taosHashGet
(
monHttpStatusHashTable
,
&
code
,
sizeof
(
int32_t
));
}
static
void
*
monThreadFunc
(
void
*
param
)
{
monDebug
(
"starting to initialize monitor module ..."
);
setThreadName
(
"monitor"
);
...
...
@@ -419,10 +448,10 @@ static void monBuildMonitorSql(char *sql, int32_t cmd) {
"create table if not exists %s.restful_info(ts timestamp"
", total_req float"
,
tsMonitorDbName
);
for
(
int
i
=
0
;
i
<
MON_MAX_HTTP_CODE
;
++
i
)
{
pos
+=
snprintf
(
sql
+
pos
,
SQL_LENGTH
,
", `%s(%
s
)` int"
,
monHttpStatus
CodeTable
[
i
][
0
]
,
monHttpStatus
CodeTable
[
i
][
1
]
);
for
(
int
i
=
0
;
i
<
tListLen
(
monHttpStatusTable
)
;
++
i
)
{
pos
+=
snprintf
(
sql
+
pos
,
SQL_LENGTH
,
", `%s(%
d
)` int"
,
monHttpStatus
Table
[
i
].
name
,
monHttpStatus
Table
[
i
].
code
);
}
snprintf
(
sql
+
pos
,
SQL_LENGTH
,
") tags (dnode_id int, dnode_ep binary(%d))"
,
...
...
@@ -453,6 +482,7 @@ void monCleanupSystem() {
taos_close
(
tsMonitor
.
conn
);
tsMonitor
.
conn
=
NULL
;
}
monCleanupHttpStatusHashTable
();
monInfo
(
"monitor module is cleaned up"
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录