mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
add cpu stat
This commit is contained in:
parent
4c5aae7804
commit
117fd67950
7 changed files with 510 additions and 14 deletions
|
@ -34,6 +34,8 @@ using namespace std;
|
|||
#include <srs_app_socket.hpp>
|
||||
#include <srs_core_autofree.hpp>
|
||||
#include <srs_app_json.hpp>
|
||||
#include <srs_app_config.hpp>
|
||||
#include <srs_kernel_utility.hpp>
|
||||
|
||||
SrsApiRoot::SrsApiRoot()
|
||||
{
|
||||
|
@ -114,6 +116,8 @@ int SrsApiApi::do_process_request(SrsSocket* skt, SrsHttpMessage* req)
|
|||
SrsApiV1::SrsApiV1()
|
||||
{
|
||||
handlers.push_back(new SrsApiVersion());
|
||||
handlers.push_back(new SrsApiSummaries());
|
||||
handlers.push_back(new SrsApiRusages());
|
||||
handlers.push_back(new SrsApiAuthors());
|
||||
}
|
||||
|
||||
|
@ -134,6 +138,9 @@ int SrsApiV1::do_process_request(SrsSocket* skt, SrsHttpMessage* req)
|
|||
<< JFIELD_ERROR(ERROR_SUCCESS) << JFIELD_CONT
|
||||
<< JFIELD_ORG("urls", JOBJECT_START)
|
||||
<< JFIELD_STR("versions", "the version of SRS") << JFIELD_CONT
|
||||
<< JFIELD_STR("summaries", "the summary(pid, argv, pwd, cpu, mem) of SRS") << JFIELD_CONT
|
||||
<< JFIELD_STR("rusages", "the rusage of SRS") << JFIELD_CONT
|
||||
<< JFIELD_STR("proc_stats", "the /proc/self/stat of SRS") << JFIELD_CONT
|
||||
<< JFIELD_STR("authors", "the primary authors and contributors")
|
||||
<< JOBJECT_END
|
||||
<< JOBJECT_END;
|
||||
|
@ -171,6 +178,89 @@ int SrsApiVersion::do_process_request(SrsSocket* skt, SrsHttpMessage* req)
|
|||
return res_json(skt, req, ss.str());
|
||||
}
|
||||
|
||||
SrsApiSummaries::SrsApiSummaries()
|
||||
{
|
||||
}
|
||||
|
||||
SrsApiSummaries::~SrsApiSummaries()
|
||||
{
|
||||
}
|
||||
|
||||
bool SrsApiSummaries::can_handle(const char* path, int length, const char** /*pchild*/)
|
||||
{
|
||||
return srs_path_equals("/summaries", path, length);
|
||||
}
|
||||
|
||||
int SrsApiSummaries::do_process_request(SrsSocket* skt, SrsHttpMessage* req)
|
||||
{
|
||||
std::stringstream ss;
|
||||
|
||||
SrsRusage* r = srs_get_system_rusage();
|
||||
SrsCpuSelfStat* u = srs_get_self_cpu_stat();
|
||||
SrsCpuSystemStat* s = srs_get_system_cpu_stat();
|
||||
|
||||
ss << JOBJECT_START
|
||||
<< JFIELD_ERROR(ERROR_SUCCESS) << JFIELD_CONT
|
||||
<< JFIELD_ORG("data", JOBJECT_START)
|
||||
<< JFIELD_ORG("pid", getpid()) << JFIELD_CONT
|
||||
<< JFIELD_STR("argv", _srs_config->get_argv()) << JFIELD_CONT
|
||||
<< JFIELD_STR("cwd", _srs_config->get_cwd()) << JFIELD_CONT
|
||||
<< JFIELD_ORG("rusage_ok", (r->ok? "true":"false")) << JFIELD_CONT
|
||||
<< JFIELD_ORG("self_cpu_stat_ok", (u->ok? "true":"false")) << JFIELD_CONT
|
||||
<< JFIELD_ORG("system_cpu_stat_ok", (s->ok? "true":"false")) << JFIELD_CONT
|
||||
<< JFIELD_ORG("mem_kbyte", r->r.ru_maxrss) << JFIELD_CONT
|
||||
<< JFIELD_ORG("ppid", u->ppid)
|
||||
<< JOBJECT_END
|
||||
<< JOBJECT_END;
|
||||
|
||||
return res_json(skt, req, ss.str());
|
||||
}
|
||||
|
||||
SrsApiRusages::SrsApiRusages()
|
||||
{
|
||||
}
|
||||
|
||||
SrsApiRusages::~SrsApiRusages()
|
||||
{
|
||||
}
|
||||
|
||||
bool SrsApiRusages::can_handle(const char* path, int length, const char** /*pchild*/)
|
||||
{
|
||||
return srs_path_equals("/rusages", path, length);
|
||||
}
|
||||
|
||||
int SrsApiRusages::do_process_request(SrsSocket* skt, SrsHttpMessage* req)
|
||||
{
|
||||
std::stringstream ss;
|
||||
|
||||
SrsRusage* r = srs_get_system_rusage();
|
||||
|
||||
ss << JOBJECT_START
|
||||
<< JFIELD_ERROR(ERROR_SUCCESS) << JFIELD_CONT
|
||||
<< JFIELD_ORG("data", JOBJECT_START)
|
||||
<< JFIELD_ORG("rusage_ok", (r->ok? "true":"false")) << JFIELD_CONT
|
||||
<< JFIELD_ORG("ru_utime", r->r.ru_utime.tv_sec) << JFIELD_CONT
|
||||
<< JFIELD_ORG("ru_stime", r->r.ru_stime.tv_sec) << JFIELD_CONT
|
||||
<< JFIELD_ORG("ru_maxrss", r->r.ru_maxrss) << JFIELD_CONT
|
||||
<< JFIELD_ORG("ru_ixrss", r->r.ru_ixrss) << JFIELD_CONT
|
||||
<< JFIELD_ORG("ru_idrss", r->r.ru_idrss) << JFIELD_CONT
|
||||
<< JFIELD_ORG("ru_isrss", r->r.ru_isrss) << JFIELD_CONT
|
||||
<< JFIELD_ORG("ru_minflt", r->r.ru_minflt) << JFIELD_CONT
|
||||
<< JFIELD_ORG("ru_majflt", r->r.ru_majflt) << JFIELD_CONT
|
||||
<< JFIELD_ORG("ru_nswap", r->r.ru_nswap) << JFIELD_CONT
|
||||
<< JFIELD_ORG("ru_inblock", r->r.ru_inblock) << JFIELD_CONT
|
||||
<< JFIELD_ORG("ru_oublock", r->r.ru_oublock) << JFIELD_CONT
|
||||
<< JFIELD_ORG("ru_msgsnd", r->r.ru_msgsnd) << JFIELD_CONT
|
||||
<< JFIELD_ORG("ru_msgrcv", r->r.ru_msgrcv) << JFIELD_CONT
|
||||
<< JFIELD_ORG("ru_nsignals", r->r.ru_nsignals) << JFIELD_CONT
|
||||
<< JFIELD_ORG("ru_nvcsw", r->r.ru_nvcsw) << JFIELD_CONT
|
||||
<< JFIELD_ORG("ru_nivcsw", r->r.ru_nivcsw)
|
||||
<< JOBJECT_END
|
||||
<< JOBJECT_END;
|
||||
|
||||
return res_json(skt, req, ss.str());
|
||||
}
|
||||
|
||||
SrsApiAuthors::SrsApiAuthors()
|
||||
{
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue