提交 bdafe0ef 编写于 作者: G Ganlin Zhao

[TD-6452]<feature>: taoskeeper metrics collector phase 1 taosd implementation

上级 52cb5b44
...@@ -54,6 +54,7 @@ typedef enum { ...@@ -54,6 +54,7 @@ typedef enum {
MON_CMD_CREATE_MT_DNODES, MON_CMD_CREATE_MT_DNODES,
MON_CMD_CREATE_TB_DNODE, MON_CMD_CREATE_TB_DNODE,
MON_CMD_CREATE_MT_DISKS, MON_CMD_CREATE_MT_DISKS,
MON_CMD_CREATE_TB_DISKS,
MON_CMD_CREATE_MT_VGROUPS, MON_CMD_CREATE_MT_VGROUPS,
MON_CMD_CREATE_MT_LOGS, MON_CMD_CREATE_MT_LOGS,
MON_CMD_CREATE_TB_DNODE_LOG, MON_CMD_CREATE_TB_DNODE_LOG,
...@@ -195,11 +196,12 @@ static void *monThreadFunc(void *param) { ...@@ -195,11 +196,12 @@ static void *monThreadFunc(void *param) {
monSaveSystemInfo(); monSaveSystemInfo();
monSaveDnodesInfo(); monSaveDnodesInfo();
if (monHasMnodeMaster) { if (monHasMnodeMaster) {
//taosd only has mnode master will write cluster info //only mnode master will write cluster info
monSaveClusterInfo(); monSaveClusterInfo();
} }
monSaveVgroupsInfo(); monSaveVgroupsInfo();
monSaveSlowQueryInfo(); monSaveSlowQueryInfo();
monSaveDisksInfo();
} }
} }
} }
...@@ -305,6 +307,9 @@ static void monBuildMonitorSql(char *sql, int32_t cmd) { ...@@ -305,6 +307,9 @@ static void monBuildMonitorSql(char *sql, int32_t cmd) {
", datadir_l2_used float, datadir_l2_total float" ", datadir_l2_used float, datadir_l2_total float"
") tags (dnode_id int, dnode_ep binary(%d))", ") tags (dnode_id int, dnode_ep binary(%d))",
tsMonitorDbName, TSDB_EP_LEN); tsMonitorDbName, TSDB_EP_LEN);
} else if (cmd == MON_CMD_CREATE_TB_DISKS) {
snprintf(sql, SQL_LENGTH, "create table if not exists %s.disks_%d using %s.disks_info tags(%d, '%s')", tsMonitorDbName,
dnodeGetDnodeId(), tsMonitorDbName, dnodeGetDnodeId(), tsLocalEp);
} else if (cmd == MON_CMD_CREATE_MT_VGROUPS) { } else if (cmd == MON_CMD_CREATE_MT_VGROUPS) {
snprintf(sql, SQL_LENGTH, snprintf(sql, SQL_LENGTH,
"create table if not exists %s.vgroups_info(ts timestamp" "create table if not exists %s.vgroups_info(ts timestamp"
...@@ -762,6 +767,27 @@ static int32_t monBuildDnodeDiskSql(char *sql) { ...@@ -762,6 +767,27 @@ static int32_t monBuildDnodeDiskSql(char *sql) {
return sprintf(sql, ", %f, %f, %f", taosdDataDirGB, tsUsedDataDirGB, tsTotalDataDirGB); return sprintf(sql, ", %f, %f, %f", taosdDataDirGB, tsUsedDataDirGB, tsTotalDataDirGB);
} }
static int32_t monBuildDiskTierSql(char *sql) {
const int8_t numTiers = 3;
SFSMeta fsMeta;
STierMeta* tierMetas = calloc(numTiers, sizeof(STierMeta));
tfsUpdateInfo(&fsMeta, tierMetas, numTiers);
int32_t pos = 0;
for (int i = 0; i < numTiers; ++i) {
pos += sprintf(sql + pos, ", datadir_l%d_used %f, %f, %f", taosdDataDirGB, tsUsedDataDirGB, tsTotalDataDirGB);
char* keyDataDirLevelUsed = "datadir_used";
char* keyDataDirLevelTotal = "datadir_total";
httpJsonPairInt64Val(jsonBuf, keyDataDirLevelUsed, (int32_t)strlen(keyDataDirLevelUsed), tierMetas[i].used);
httpJsonPairInt64Val(jsonBuf, keyDataDirLevelTotal, (int32_t)strlen(keyDataDirLevelTotal), tierMetas[i].size);
}
free(tierMetas);
return sprintf(sql, ", %f, %f, %f", taosdDataDirGB, tsUsedDataDirGB, tsTotalDataDirGB);
}
static void monSaveClusterInfo() { static void monSaveClusterInfo() {
int64_t ts = taosGetTimestampUs(); int64_t ts = taosGetTimestampUs();
char * sql = tsMonitor.sql; char * sql = tsMonitor.sql;
...@@ -981,6 +1007,27 @@ static void monSaveSlowQueryInfo() { ...@@ -981,6 +1007,27 @@ static void monSaveSlowQueryInfo() {
} }
static void monSaveDisksInfo() {
int64_t ts = taosGetTimestampUs();
char * sql = tsMonitor.sql;
int32_t pos = snprintf(sql, SQL_LENGTH, "insert into %s.disks_%d values(%" PRId64, tsMonitorDbName, dnodeGetDnodeId(), ts);
monBuildDiskTierSql(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 disks_%d info, reason:%s, sql:%s", dnodeGetDnodeId(), tstrerror(code), tsMonitor.sql);
} else {
monIncSubmitReqCnt();
monDebug("successfully to save disks_%d info, sql:%s", dnodeGetDnodeId(), 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.
先完成此消息的编辑!
想要评论请 注册