Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
0e3fc7ed
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
0e3fc7ed
编写于
9月 23, 2021
作者:
G
Ganlin Zhao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[TD-6452]<feature>: taoskeeper metrics collector phase 1 taosd implementation
上级
5fd6c455
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
112 addition
and
2 deletion
+112
-2
src/plugins/monitor/src/monMain.c
src/plugins/monitor/src/monMain.c
+112
-2
未找到文件。
src/plugins/monitor/src/monMain.c
浏览文件 @
0e3fc7ed
...
@@ -68,12 +68,13 @@ typedef struct {
...
@@ -68,12 +68,13 @@ typedef struct {
int8_t
cmdIndex
;
int8_t
cmdIndex
;
int8_t
state
;
int8_t
state
;
int8_t
start
;
// enable/disable by mnode
int8_t
start
;
// enable/disable by mnode
int8_t
quiting
;
// taosd is quiting
int8_t
quiting
;
// taosd is quiting
char
sql
[
SQL_LENGTH
+
1
];
char
sql
[
SQL_LENGTH
+
1
];
}
SMonConn
;
}
SMonConn
;
static
SMonConn
tsMonitor
=
{
0
};
static
SMonConn
tsMonitor
=
{
0
};
static
void
monSaveSystemInfo
();
static
void
monSaveSystemInfo
();
static
void
monSaveClusterInfo
();
static
void
*
monThreadFunc
(
void
*
param
);
static
void
*
monThreadFunc
(
void
*
param
);
static
void
monBuildMonitorSql
(
char
*
sql
,
int32_t
cmd
);
static
void
monBuildMonitorSql
(
char
*
sql
,
int32_t
cmd
);
extern
int32_t
(
*
monStartSystemFp
)();
extern
int32_t
(
*
monStartSystemFp
)();
...
@@ -139,7 +140,7 @@ static void *monThreadFunc(void *param) {
...
@@ -139,7 +140,7 @@ static void *monThreadFunc(void *param) {
if
(
tsMonitor
.
start
==
0
)
{
if
(
tsMonitor
.
start
==
0
)
{
continue
;
continue
;
}
}
if
(
dnodeGetDnodeId
()
<=
0
)
{
if
(
dnodeGetDnodeId
()
<=
0
)
{
monDebug
(
"dnode not initialized, waiting for 3000 ms to start monitor module"
);
monDebug
(
"dnode not initialized, waiting for 3000 ms to start monitor module"
);
continue
;
continue
;
...
@@ -181,6 +182,7 @@ static void *monThreadFunc(void *param) {
...
@@ -181,6 +182,7 @@ static void *monThreadFunc(void *param) {
if
(
tsMonitor
.
state
==
MON_STATE_INITED
)
{
if
(
tsMonitor
.
state
==
MON_STATE_INITED
)
{
if
(
accessTimes
%
tsMonitorInterval
==
0
)
{
if
(
accessTimes
%
tsMonitorInterval
==
0
)
{
monSaveSystemInfo
();
monSaveSystemInfo
();
monSaveClusterInfo
();
}
}
}
}
}
}
...
@@ -405,6 +407,114 @@ static void monSaveSystemInfo() {
...
@@ -405,6 +407,114 @@ static void monSaveSystemInfo() {
}
}
}
}
static
int32_t
monBuildFirstEpSql
(
char
*
sql
)
{
return
sprintf
(
sql
,
",
\"
%s
\"
"
,
tsFirst
);
}
static
int32_t
monBuildVersionSql
(
char
*
sql
)
{
return
sprintf
(
sql
,
",
\"
%s
\"
"
,
version
);
}
static
int32_t
monBuildMasterUptimeSql
(
char
*
sql
)
{
return
sprintf
(
sql
,
", %d"
,
0
);
}
static
int32_t
monBuildMonIntervalSql
(
char
*
sql
)
{
return
sprintf
(
sql
,
", %d"
,
tsMonitorInterval
);
}
static
int32_t
monBuildDnodesTotalSql
(
char
*
sql
)
{
int32_t
totalDnodes
=
0
,
totalDnodesAlive
=
0
;
TAOS_RES
*
result
=
taos_query
(
tsMonitor
.
conn
,
"show dnodes"
);
TAOS_ROW
row
;
int32_t
num_fields
=
taos_num_fields
(
result
);
TAOS_FIELD
*
fields
=
taos_fetch_fields
(
result
);
// fetch the records row by row
while
((
row
=
taos_fetch_row
(
result
)))
{
totalDnodes
++
;
for
(
int
i
=
0
;
i
<
num_fields
;
++
i
)
{
if
(
strcmp
(
fields
[
i
].
name
,
"status"
)
==
0
)
{
int32_t
charLen
=
varDataLen
((
char
*
)
row
[
i
]
-
VARSTR_HEADER_SIZE
);
if
(
fields
[
i
].
type
==
TSDB_DATA_TYPE_BINARY
)
{
assert
(
charLen
<=
fields
[
i
].
bytes
&&
charLen
>=
0
);
}
else
{
assert
(
charLen
<=
fields
[
i
].
bytes
*
TSDB_NCHAR_SIZE
&&
charLen
>=
0
);
}
if
(
strncmp
((
char
*
)
row
[
i
],
"ready"
,
charLen
)
==
0
)
{
totalDnodesAlive
++
;
printf
(
"Gavin0- row:%s, charLen:%d
\n
"
,
(
char
*
)
row
[
i
],
charLen
);
}
}
printf
(
"Gavin- name:%s, type:%u
\n
"
,
fields
[
i
].
name
,
fields
[
i
].
type
);
}
}
taos_free_result
(
result
);
return
sprintf
(
sql
,
", %d, %d"
,
totalDnodes
,
totalDnodesAlive
);
}
static
int32_t
monBuildMnodesTotalSql
(
char
*
sql
)
{
return
sprintf
(
sql
,
", %d"
,
0
);
}
static
int32_t
monBuildMnodesAliveSql
(
char
*
sql
)
{
return
sprintf
(
sql
,
", %d"
,
0
);
}
static
int32_t
monBuildVgroupsTotalSql
(
char
*
sql
)
{
return
sprintf
(
sql
,
", %d"
,
0
);
}
static
int32_t
monBuildVgroupsAliveSql
(
char
*
sql
)
{
return
sprintf
(
sql
,
", %d"
,
0
);
}
static
int32_t
monBuildVnodesTotalSql
(
char
*
sql
)
{
return
sprintf
(
sql
,
", %d"
,
0
);
}
static
int32_t
monBuildVnodesAliveSql
(
char
*
sql
)
{
return
sprintf
(
sql
,
", %d"
,
0
);
}
static
int32_t
monBuildConnsTotalSql
(
char
*
sql
)
{
return
sprintf
(
sql
,
", %d)"
,
0
);
}
static
void
monSaveClusterInfo
()
{
int64_t
ts
=
taosGetTimestampUs
();
char
*
sql
=
tsMonitor
.
sql
;
int32_t
pos
=
snprintf
(
sql
,
SQL_LENGTH
,
"insert into %s.cluster_info values(%"
PRId64
,
tsMonitorDbName
,
ts
);
pos
+=
monBuildFirstEpSql
(
sql
+
pos
);
pos
+=
monBuildVersionSql
(
sql
+
pos
);
pos
+=
monBuildMasterUptimeSql
(
sql
+
pos
);
pos
+=
monBuildMonIntervalSql
(
sql
+
pos
);
pos
+=
monBuildDnodesTotalSql
(
sql
+
pos
);
pos
+=
monBuildMnodesTotalSql
(
sql
+
pos
);
pos
+=
monBuildMnodesAliveSql
(
sql
+
pos
);
pos
+=
monBuildVgroupsTotalSql
(
sql
+
pos
);
pos
+=
monBuildVgroupsAliveSql
(
sql
+
pos
);
pos
+=
monBuildVnodesTotalSql
(
sql
+
pos
);
pos
+=
monBuildVnodesAliveSql
(
sql
+
pos
);
pos
+=
monBuildConnsTotalSql
(
sql
+
pos
);
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 cluster info, reason:%s, sql:%s"
,
tstrerror
(
code
),
tsMonitor
.
sql
);
}
else
{
monDebug
(
"successfully to save cluster info, sql:%s"
,
tsMonitor
.
sql
);
}
}
static
void
monExecSqlCb
(
void
*
param
,
TAOS_RES
*
result
,
int32_t
code
)
{
static
void
monExecSqlCb
(
void
*
param
,
TAOS_RES
*
result
,
int32_t
code
)
{
int32_t
c
=
taos_errno
(
result
);
int32_t
c
=
taos_errno
(
result
);
if
(
c
!=
TSDB_CODE_SUCCESS
)
{
if
(
c
!=
TSDB_CODE_SUCCESS
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录