mirror of
https://github.com/Telecominfraproject/OpenNetworkLinux.git
synced 2025-11-01 02:38:15 +00:00
Redefine CpuAllPercentUtilization and CpuAllPercentIdle to be 100 times the percentage rounded to the nearest integer.
Use aim_time_monotonic. Add ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS.
This commit is contained in:
@@ -34,7 +34,7 @@ CpuAllPercentUtilization OBJECT-TYPE
|
|||||||
MAX-ACCESS read-only
|
MAX-ACCESS read-only
|
||||||
STATUS current
|
STATUS current
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
"The average CPU utilization (in percent). Provided by mpstat."
|
"The average CPU utilization in percent, multiplied by 100 and rounded to the nearest integer. Provided by mpstat."
|
||||||
::= { Basic 1 }
|
::= { Basic 1 }
|
||||||
|
|
||||||
CpuAllPercentIdle OBJECT-TYPE
|
CpuAllPercentIdle OBJECT-TYPE
|
||||||
@@ -42,7 +42,7 @@ CpuAllPercentIdle OBJECT-TYPE
|
|||||||
MAX-ACCESS read-only
|
MAX-ACCESS read-only
|
||||||
STATUS current
|
STATUS current
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
"The average CPU idle time (in percent). Provided by mpstat."
|
"The average CPU idle time in percent, multiplied by 100 and rounded to the nearest integer. Provided by mpstat."
|
||||||
::= { Basic 2 }
|
::= { Basic 2 }
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ for line in out.split('\n'):
|
|||||||
|
|
||||||
if "Average" in line:
|
if "Average" in line:
|
||||||
vals = line.split()[1:]
|
vals = line.split()[1:]
|
||||||
stats[vals[0]] = { k:int(round(float(v))) \
|
stats[vals[0]] = { k:int(round(100*float(v))) \
|
||||||
for (k,v) in zip(keys[1:],vals[1:]) }
|
for (k,v) in zip(keys[1:],vals[1:]) }
|
||||||
|
|
||||||
print json.dumps(stats)
|
print json.dumps(stats)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ include $(ONL)/make/any.mk
|
|||||||
MODULE := onlp-snmpd
|
MODULE := onlp-snmpd
|
||||||
include $(BUILDER)/standardinit.mk
|
include $(BUILDER)/standardinit.mk
|
||||||
|
|
||||||
DEPENDMODULES := onlp_snmp AIM OS snmp_subagent IOF onlplib OS cjson cjson_util
|
DEPENDMODULES := onlp_snmp AIM OS snmp_subagent IOF onlplib cjson cjson_util
|
||||||
DEPENDMODULE_HEADERS := onlp
|
DEPENDMODULE_HEADERS := onlp
|
||||||
|
|
||||||
include $(BUILDER)/dependmodules.mk
|
include $(BUILDER)/dependmodules.mk
|
||||||
|
|||||||
@@ -56,6 +56,9 @@ cdefs: &cdefs
|
|||||||
- ONLP_SNMP_CONFIG_AS_SUBAGENT:
|
- ONLP_SNMP_CONFIG_AS_SUBAGENT:
|
||||||
doc: "Configure as an snmp_subagent client."
|
doc: "Configure as an snmp_subagent client."
|
||||||
default: 0
|
default: 0
|
||||||
|
- ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS:
|
||||||
|
doc: "Resource object update period in seconds."
|
||||||
|
default: 5
|
||||||
|
|
||||||
definitions:
|
definitions:
|
||||||
cdefs:
|
cdefs:
|
||||||
|
|||||||
@@ -191,6 +191,16 @@
|
|||||||
#define ONLP_SNMP_CONFIG_AS_SUBAGENT 0
|
#define ONLP_SNMP_CONFIG_AS_SUBAGENT 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS
|
||||||
|
*
|
||||||
|
* Resource object update period in seconds. */
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS
|
||||||
|
#define ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS 5
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -94,6 +94,11 @@ onlp_snmp_config_settings_t onlp_snmp_config_settings[] =
|
|||||||
{ __onlp_snmp_config_STRINGIFY_NAME(ONLP_SNMP_CONFIG_AS_SUBAGENT), __onlp_snmp_config_STRINGIFY_VALUE(ONLP_SNMP_CONFIG_AS_SUBAGENT) },
|
{ __onlp_snmp_config_STRINGIFY_NAME(ONLP_SNMP_CONFIG_AS_SUBAGENT), __onlp_snmp_config_STRINGIFY_VALUE(ONLP_SNMP_CONFIG_AS_SUBAGENT) },
|
||||||
#else
|
#else
|
||||||
{ ONLP_SNMP_CONFIG_AS_SUBAGENT(__onlp_snmp_config_STRINGIFY_NAME), "__undefined__" },
|
{ ONLP_SNMP_CONFIG_AS_SUBAGENT(__onlp_snmp_config_STRINGIFY_NAME), "__undefined__" },
|
||||||
|
#endif
|
||||||
|
#ifdef ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS
|
||||||
|
{ __onlp_snmp_config_STRINGIFY_NAME(ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS), __onlp_snmp_config_STRINGIFY_VALUE(ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS) },
|
||||||
|
#else
|
||||||
|
{ ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS(__onlp_snmp_config_STRINGIFY_NAME), "__undefined__" },
|
||||||
#endif
|
#endif
|
||||||
{ NULL, NULL }
|
{ NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
#include <onlp_snmp/onlp_snmp_config.h>
|
#include <onlp_snmp/onlp_snmp_config.h>
|
||||||
#include "onlp_snmp_log.h"
|
#include "onlp_snmp_log.h"
|
||||||
|
|
||||||
#include <OS/os_time.h>
|
#include <AIM/aim_time.h>
|
||||||
#include <cjson/cJSON.h>
|
#include <cjson/cJSON.h>
|
||||||
#include <cjson_util/cjson_util.h>
|
#include <cjson_util/cjson_util.h>
|
||||||
#include <net-snmp/net-snmp-config.h>
|
#include <net-snmp/net-snmp-config.h>
|
||||||
@@ -89,9 +89,6 @@ resource_int_register(int index, const char* desc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* resource objects refreshed with this period; units in seconds */
|
|
||||||
#define RESOURCE_UPDATE_PERIOD 5
|
|
||||||
|
|
||||||
/* resource objects */
|
/* resource objects */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint32_t utilization_percent;
|
uint32_t utilization_percent;
|
||||||
@@ -103,8 +100,9 @@ static uint64_t resource_update_time;
|
|||||||
|
|
||||||
void resource_update(void)
|
void resource_update(void)
|
||||||
{
|
{
|
||||||
uint64_t now = os_time_monotonic();
|
uint64_t now = aim_time_monotonic();
|
||||||
if (now - resource_update_time > RESOURCE_UPDATE_PERIOD * 1000 * 1000) {
|
if (now - resource_update_time >
|
||||||
|
(ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS * 1000 * 1000)) {
|
||||||
resource_update_time = now;
|
resource_update_time = now;
|
||||||
AIM_LOG_INFO("update resource objects");
|
AIM_LOG_INFO("update resource objects");
|
||||||
|
|
||||||
@@ -124,7 +122,7 @@ void resource_update(void)
|
|||||||
if (rv == 0) {
|
if (rv == 0) {
|
||||||
/* save it */
|
/* save it */
|
||||||
resources.idle_percent = result;
|
resources.idle_percent = result;
|
||||||
resources.utilization_percent = 100 - result;
|
resources.utilization_percent = 100*100 - result;
|
||||||
}
|
}
|
||||||
cJSON_Delete(root);
|
cJSON_Delete(root);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user