Skip to content

Commit

Permalink
sadf: PCP: Add support for A_NET_UDP6 activity
Browse files Browse the repository at this point in the history
Add metrics displayed by "sar -n UDP6" (UDPv6 network statistics) to PCP
archive.

Signed-off-by: Sebastien GODARD <sysstat@users.noreply.github.com>
  • Loading branch information
sysstat committed Mar 31, 2019
1 parent 04ba6bc commit 6fa6f84
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 0 deletions.
1 change: 1 addition & 0 deletions activity.c
Original file line number Diff line number Diff line change
Expand Up @@ -1387,6 +1387,7 @@ struct activity net_udp6_act = {
.f_json_print = json_print_net_udp6_stats,
.f_svg_print = svg_print_net_udp6_stats,
.f_raw_print = raw_print_net_udp6_stats,
.f_pcp_print = pcp_print_net_udp6_stats,
.f_count_new = NULL,
.item_list = NULL,
.desc = "UDPv6 traffic statistics",
Expand Down
26 changes: 26 additions & 0 deletions pcp_def_metrics.c
Original file line number Diff line number Diff line change
Expand Up @@ -1080,3 +1080,29 @@ void pcp_def_net_eip6_metrics(void)
pmiUnits(0, -1, 1, 0, PM_TIME_SEC, PM_COUNT_ONE));
#endif /* HAVE_PCP */
}

/*
***************************************************************************
* Define PCP metrics for UDPv6 network statistics.
***************************************************************************
*/
void pcp_def_net_udp6_metrics(void)
{
#ifdef HAVE_PCP
pmiAddMetric("network.snmp.udp6.udpInDatagrams",
PM_IN_NULL, PM_TYPE_FLOAT, PM_INDOM_NULL, PM_SEM_INSTANT,
pmiUnits(0, -1, 1, 0, PM_TIME_SEC, PM_COUNT_ONE));

pmiAddMetric("network.snmp.udp6.udpOutDatagrams",
PM_IN_NULL, PM_TYPE_FLOAT, PM_INDOM_NULL, PM_SEM_INSTANT,
pmiUnits(0, -1, 1, 0, PM_TIME_SEC, PM_COUNT_ONE));

pmiAddMetric("network.snmp.udp6.udpNoPorts",
PM_IN_NULL, PM_TYPE_FLOAT, PM_INDOM_NULL, PM_SEM_INSTANT,
pmiUnits(0, -1, 1, 0, PM_TIME_SEC, PM_COUNT_ONE));

pmiAddMetric("network.snmp.udp6.udpInErrors",
PM_IN_NULL, PM_TYPE_FLOAT, PM_INDOM_NULL, PM_SEM_INSTANT,
pmiUnits(0, -1, 1, 0, PM_TIME_SEC, PM_COUNT_ONE));
#endif /* HAVE_PCP */
}
1 change: 1 addition & 0 deletions pcp_def_metrics.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ void pcp_def_net_etcp_metrics(void);
void pcp_def_net_udp_metrics(void);
void pcp_def_net_ip6_metrics(void);
void pcp_def_net_eip6_metrics(void);
void pcp_def_net_udp6_metrics(void);

/* Define domains number */
#define PM_INDOM_CPU 0
Expand Down
38 changes: 38 additions & 0 deletions pcp_stats.c
Original file line number Diff line number Diff line change
Expand Up @@ -1407,3 +1407,41 @@ __print_funct_t pcp_print_net_eip6_stats(struct activity *a, int curr, unsigned
pmiPutValue("network.snmp.ip6.ipv6IfStatsInTruncatedPkts", NULL, buf);
#endif /* HAVE_PCP */
}

/*
***************************************************************************
* Display UDPv6 network statistics in PCP format.
*
* IN:
* @a Activity structure with statistics.
* @curr Index in array for current sample statistics.
* @itv Interval of time in 1/100th of a second.
* @record_hdr Record header for current sample.
***************************************************************************
*/
__print_funct_t pcp_print_net_udp6_stats(struct activity *a, int curr, unsigned long long itv,
struct record_header *record_hdr)
{
#ifdef HAVE_PCP
char buf[64];
struct stats_net_udp6
*snuc = (struct stats_net_udp6 *) a->buf[curr],
*snup = (struct stats_net_udp6 *) a->buf[!curr];

snprintf(buf, sizeof(buf), "%f",
S_VALUE(snup->InDatagrams6, snuc->InDatagrams6, itv));
pmiPutValue("network.snmp.udp6.udpInDatagrams", NULL, buf);

snprintf(buf, sizeof(buf), "%f",
S_VALUE(snup->OutDatagrams6, snuc->OutDatagrams6, itv));
pmiPutValue("network.snmp.udp6.udpOutDatagrams", NULL, buf);

snprintf(buf, sizeof(buf), "%f",
S_VALUE(snup->NoPorts6, snuc->NoPorts6, itv));
pmiPutValue("network.snmp.udp6.udpNoPorts", NULL, buf);

snprintf(buf, sizeof(buf), "%f",
S_VALUE(snup->InErrors6, snuc->InErrors6, itv));
pmiPutValue("network.snmp.udp6.udpInErrors", NULL, buf);
#endif /* HAVE_PCP */
}
2 changes: 2 additions & 0 deletions pcp_stats.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,5 +59,7 @@ __print_funct_t pcp_print_net_ip6_stats
(struct activity *, int, unsigned long long, struct record_header *);
__print_funct_t pcp_print_net_eip6_stats
(struct activity *, int, unsigned long long, struct record_header *);
__print_funct_t pcp_print_net_udp6_stats
(struct activity *, int, unsigned long long, struct record_header *);

#endif /* _PCP_STATS_H */
4 changes: 4 additions & 0 deletions sadf_misc.c
Original file line number Diff line number Diff line change
Expand Up @@ -588,6 +588,10 @@ __printf_funct_t print_pcp_statistics(int *tab, int action, struct activity *act
case A_NET_EIP6:
pcp_def_net_eip6_metrics();
break;

case A_NET_UDP6:
pcp_def_net_udp6_metrics();
break;
}
}
}
Expand Down

0 comments on commit 6fa6f84

Please sign in to comment.