1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

support report summaries in heartbeat. 0.9.132

This commit is contained in:
winlin 2014-06-23 15:44:49 +08:00
parent db253bc76b
commit f173345e15
10 changed files with 157 additions and 97 deletions

View file

@ -382,96 +382,7 @@ bool SrsApiSummaries::can_handle(const char* path, int length, const char** /*pc
int SrsApiSummaries::do_process_request(SrsSocket* skt, SrsHttpMessage* req)
{
std::stringstream ss;
SrsRusage* r = srs_get_system_rusage();
SrsProcSelfStat* u = srs_get_self_proc_stat();
SrsProcSystemStat* s = srs_get_system_proc_stat();
SrsCpuInfo* c = srs_get_cpuinfo();
SrsMemInfo* m = srs_get_meminfo();
SrsPlatformInfo* p = srs_get_platform_info();
SrsNetworkDevices* n = srs_get_network_devices();
SrsNetworkRtmpServer* nrs = srs_get_network_rtmp_server();
float self_mem_percent = 0;
if (m->MemTotal > 0) {
self_mem_percent = (float)(r->r.ru_maxrss / (double)m->MemTotal);
}
int64_t now = srs_get_system_time_ms();
double srs_uptime = (now - p->srs_startup_time) / 100 / 10.0;
bool n_ok = false;
int64_t n_sample_time = 0;
int64_t nr_bytes = 0;
int64_t ns_bytes = 0;
int nb_n = srs_get_network_devices_count();
for (int i = 0; i < nb_n; i++) {
SrsNetworkDevices& o = n[i];
// ignore the lo interface.
std::string inter = o.name;
if (!o.ok || inter == "lo") {
continue;
}
n_ok = true;
nr_bytes += o.rbytes;
ns_bytes += o.sbytes;
n_sample_time = o.sample_time;
}
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("self_cpu_stat_ok", (u->ok? "true":"false")) << JFIELD_CONT
<< JFIELD_ORG("system_cpu_stat_ok", (s->ok? "true":"false")) << JFIELD_CONT
<< JFIELD_ORG("cpuinfo_ok", (c->ok? "true":"false")) << JFIELD_CONT
<< JFIELD_ORG("meminfo_ok", (m->ok? "true":"false")) << JFIELD_CONT
<< JFIELD_ORG("platform_ok", (p->ok? "true":"false")) << JFIELD_CONT
<< JFIELD_ORG("network_ok", (n_ok? "true":"false")) << JFIELD_CONT
<< JFIELD_ORG("network_srs_ok", (nrs->ok? "true":"false")) << JFIELD_CONT
<< JFIELD_ORG("now_ms", now) << JFIELD_CONT
<< JFIELD_ORG("self", JOBJECT_START)
<< JFIELD_ORG("pid", getpid()) << JFIELD_CONT
<< JFIELD_ORG("ppid", u->ppid) << JFIELD_CONT
<< JFIELD_STR("argv", _srs_config->argv()) << JFIELD_CONT
<< JFIELD_STR("cwd", _srs_config->cwd()) << JFIELD_CONT
<< JFIELD_ORG("mem_kbyte", r->r.ru_maxrss) << JFIELD_CONT
<< JFIELD_ORG("mem_percent", self_mem_percent) << JFIELD_CONT
<< JFIELD_ORG("cpu_percent", u->percent) << JFIELD_CONT
<< JFIELD_ORG("srs_uptime", srs_uptime)
<< JOBJECT_END << JFIELD_CONT
<< JFIELD_ORG("system", JOBJECT_START)
<< JFIELD_ORG("cpu_percent", s->percent) << JFIELD_CONT
<< JFIELD_ORG("mem_ram_kbyte", m->MemTotal) << JFIELD_CONT
<< JFIELD_ORG("mem_ram_percent", m->percent_ram) << JFIELD_CONT
<< JFIELD_ORG("mem_swap_kbyte", m->SwapTotal) << JFIELD_CONT
<< JFIELD_ORG("mem_swap_percent", m->percent_swap) << JFIELD_CONT
<< JFIELD_ORG("cpus", c->nb_processors) << JFIELD_CONT
<< JFIELD_ORG("cpus_online", c->nb_processors_online) << JFIELD_CONT
<< JFIELD_ORG("uptime", p->os_uptime) << JFIELD_CONT
<< JFIELD_ORG("ilde_time", p->os_ilde_time) << JFIELD_CONT
<< JFIELD_ORG("load_1m", p->load_one_minutes) << JFIELD_CONT
<< JFIELD_ORG("load_5m", p->load_five_minutes) << JFIELD_CONT
<< JFIELD_ORG("load_15m", p->load_fifteen_minutes) << JFIELD_CONT
<< JFIELD_ORG("net_sample_time", n_sample_time) << JFIELD_CONT
<< JFIELD_ORG("net_recv_bytes", nr_bytes) << JFIELD_CONT
<< JFIELD_ORG("net_send_bytes", ns_bytes) << JFIELD_CONT
<< JFIELD_ORG("srs_sample_time", nrs->sample_time) << JFIELD_CONT
<< JFIELD_ORG("srs_recv_bytes", nrs->rbytes) << JFIELD_CONT
<< JFIELD_ORG("srs_recv_kbps", nrs->rkbps) << JFIELD_CONT
<< JFIELD_ORG("srs_send_bytes", nrs->sbytes) << JFIELD_CONT
<< JFIELD_ORG("srs_send_kbps", nrs->skbps) << JFIELD_CONT
<< JFIELD_ORG("conn_sys", nrs->nb_conn_sys) << JFIELD_CONT
<< JFIELD_ORG("conn_sys_et", nrs->nb_conn_sys_et) << JFIELD_CONT
<< JFIELD_ORG("conn_sys_tw", nrs->nb_conn_sys_tw) << JFIELD_CONT
<< JFIELD_ORG("conn_sys_ls", nrs->nb_conn_sys_ls) << JFIELD_CONT
<< JFIELD_ORG("conn_srs", nrs->nb_conn_srs)
<< JOBJECT_END
<< JOBJECT_END
<< JOBJECT_END;
srs_api_dump_summaries(ss);
return res_json(skt, req, ss.str());
}