mirror of
https://github.com/netdata/netdata.git
synced 2025-04-23 13:00:23 +00:00
Perf plugin (#6225)
* Add perf plugin skeleton * Initialize events * Collect data * Configure default counters * Add charts for hardware and software counters * Add charts for cache counters * Don't show zeroes for non-existent metrics * Reinit events when stalled * Do not reinit disabled events * Update the documentation * Scale values when multiplexing is happening
This commit is contained in:
parent
fe8279c31d
commit
21cd00c84a
15 changed files with 1515 additions and 15 deletions
.gitignoreCMakeLists.txtMakefile.am
collectors
configure.acdocs
netdata-installer.shweb/gui
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -56,6 +56,9 @@ nfacct.plugin
|
||||||
xenstat.plugin
|
xenstat.plugin
|
||||||
!xenstat.plugin/
|
!xenstat.plugin/
|
||||||
|
|
||||||
|
perf.plugin
|
||||||
|
!perf.plugin/
|
||||||
|
|
||||||
cgroup-network
|
cgroup-network
|
||||||
!cgroup-network/
|
!cgroup-network/
|
||||||
|
|
||||||
|
|
|
@ -370,6 +370,10 @@ set(XENSTAT_PLUGIN_FILES
|
||||||
collectors/xenstat.plugin/xenstat_plugin.c
|
collectors/xenstat.plugin/xenstat_plugin.c
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set(PERF_PLUGIN_FILES
|
||||||
|
collectors/perf.plugin/perf_plugin.c
|
||||||
|
)
|
||||||
|
|
||||||
set(PROC_PLUGIN_FILES
|
set(PROC_PLUGIN_FILES
|
||||||
collectors/proc.plugin/ipc.c
|
collectors/proc.plugin/ipc.c
|
||||||
collectors/proc.plugin/plugin_proc.c
|
collectors/proc.plugin/plugin_proc.c
|
||||||
|
@ -678,6 +682,7 @@ IF(LINUX)
|
||||||
|
|
||||||
SET(ENABLE_PLUGIN_CGROUP_NETWORK True)
|
SET(ENABLE_PLUGIN_CGROUP_NETWORK True)
|
||||||
SET(ENABLE_PLUGIN_APPS True)
|
SET(ENABLE_PLUGIN_APPS True)
|
||||||
|
SET(ENABLE_PLUGIN_PERF True)
|
||||||
|
|
||||||
ELSEIF(FREEBSD)
|
ELSEIF(FREEBSD)
|
||||||
add_executable(netdata config.h ${NETDATA_FILES} ${FREEBSD_PLUGIN_FILES})
|
add_executable(netdata config.h ${NETDATA_FILES} ${FREEBSD_PLUGIN_FILES})
|
||||||
|
@ -686,6 +691,7 @@ ELSEIF(FREEBSD)
|
||||||
target_compile_options(netdata PUBLIC ${NETDATA_COMMON_CFLAGS})
|
target_compile_options(netdata PUBLIC ${NETDATA_COMMON_CFLAGS})
|
||||||
SET(ENABLE_PLUGIN_CGROUP_NETWORK False)
|
SET(ENABLE_PLUGIN_CGROUP_NETWORK False)
|
||||||
SET(ENABLE_PLUGIN_APPS True)
|
SET(ENABLE_PLUGIN_APPS True)
|
||||||
|
SET(ENABLE_PLUGIN_PERF False)
|
||||||
|
|
||||||
ELSEIF(MACOS)
|
ELSEIF(MACOS)
|
||||||
add_executable(netdata config.h ${NETDATA_FILES} ${MACOS_PLUGIN_FILES})
|
add_executable(netdata config.h ${NETDATA_FILES} ${MACOS_PLUGIN_FILES})
|
||||||
|
@ -694,6 +700,7 @@ ELSEIF(MACOS)
|
||||||
target_compile_options(netdata PUBLIC ${NETDATA_COMMON_CFLAGS})
|
target_compile_options(netdata PUBLIC ${NETDATA_COMMON_CFLAGS})
|
||||||
SET(ENABLE_PLUGIN_CGROUP_NETWORK False)
|
SET(ENABLE_PLUGIN_CGROUP_NETWORK False)
|
||||||
SET(ENABLE_PLUGIN_APPS False)
|
SET(ENABLE_PLUGIN_APPS False)
|
||||||
|
SET(ENABLE_PLUGIN_PERF False)
|
||||||
|
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
@ -777,6 +784,20 @@ ELSE()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# perf.plugin
|
||||||
|
|
||||||
|
IF(ENABLE_PLUGIN_PERF)
|
||||||
|
message(STATUS "perf.plugin: enabled")
|
||||||
|
add_executable(perf.plugin config.h ${PERF_PLUGIN_FILES})
|
||||||
|
target_link_libraries (perf.plugin libnetdata ${NETDATA_COMMON_LIBRARIES})
|
||||||
|
target_include_directories(perf.plugin PUBLIC ${NETDATA_COMMON_INCLUDE_DIRS})
|
||||||
|
target_compile_options(perf.plugin PUBLIC ${NETDATA_COMMON_CFLAGS})
|
||||||
|
ELSE()
|
||||||
|
message(STATUS "perf.plugin: disabled")
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# cgroup-network
|
# cgroup-network
|
||||||
|
|
||||||
|
|
13
Makefile.am
13
Makefile.am
|
@ -234,6 +234,11 @@ XENSTAT_PLUGIN_FILES = \
|
||||||
$(LIBNETDATA_FILES) \
|
$(LIBNETDATA_FILES) \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
|
PERF_PLUGIN_FILES = \
|
||||||
|
collectors/perf.plugin/perf_plugin.c \
|
||||||
|
$(LIBNETDATA_FILES) \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
PROC_PLUGIN_FILES = \
|
PROC_PLUGIN_FILES = \
|
||||||
collectors/proc.plugin/ipc.c \
|
collectors/proc.plugin/ipc.c \
|
||||||
collectors/proc.plugin/plugin_proc.c \
|
collectors/proc.plugin/plugin_proc.c \
|
||||||
|
@ -573,6 +578,14 @@ if ENABLE_PLUGIN_XENSTAT
|
||||||
$(NULL)
|
$(NULL)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if ENABLE_PLUGIN_PERF
|
||||||
|
plugins_PROGRAMS += perf.plugin
|
||||||
|
perf_plugin_SOURCES = $(PERF_PLUGIN_FILES)
|
||||||
|
perf_plugin_LDADD = \
|
||||||
|
$(NETDATA_COMMON_LIBS) \
|
||||||
|
$(NULL)
|
||||||
|
endif
|
||||||
|
|
||||||
if ENABLE_BACKEND_KINESIS
|
if ENABLE_BACKEND_KINESIS
|
||||||
netdata_SOURCES += $(KINESIS_BACKEND_FILES)
|
netdata_SOURCES += $(KINESIS_BACKEND_FILES)
|
||||||
netdata_LDADD += $(OPTIONAL_KINESIS_LIBS)
|
netdata_LDADD += $(OPTIONAL_KINESIS_LIBS)
|
||||||
|
|
|
@ -18,6 +18,7 @@ SUBDIRS = \
|
||||||
macos.plugin \
|
macos.plugin \
|
||||||
nfacct.plugin \
|
nfacct.plugin \
|
||||||
xenstat.plugin \
|
xenstat.plugin \
|
||||||
|
perf.plugin \
|
||||||
node.d.plugin \
|
node.d.plugin \
|
||||||
proc.plugin \
|
proc.plugin \
|
||||||
python.d.plugin \
|
python.d.plugin \
|
||||||
|
|
|
@ -37,6 +37,7 @@ plugin|lang|O/S|runs as|modular|description
|
||||||
[macos.plugin](macos.plugin/)|`C`|macos|internal|yes|collects resource usage and performance data on MacOS systems
|
[macos.plugin](macos.plugin/)|`C`|macos|internal|yes|collects resource usage and performance data on MacOS systems
|
||||||
[nfacct.plugin](nfacct.plugin/)|`C`|linux|external|-|collects netfilter firewall, connection tracker and accounting metrics using `libmnl` and `libnetfilter_acct`
|
[nfacct.plugin](nfacct.plugin/)|`C`|linux|external|-|collects netfilter firewall, connection tracker and accounting metrics using `libmnl` and `libnetfilter_acct`
|
||||||
[xenstat.plugin](xenstat.plugin/)|`C`|linux|external|-|collects XenServer and XCP-ng metrics using `libxenstat`
|
[xenstat.plugin](xenstat.plugin/)|`C`|linux|external|-|collects XenServer and XCP-ng metrics using `libxenstat`
|
||||||
|
[perf.plugin](perf.plugin/)|`C`|linux|external|-|collects CPU performance metrics using performance monitoring units (PMU).
|
||||||
[node.d.plugin](node.d.plugin/)|`node.js`|any|external|yes|a **plugin orchestrator** for data collection modules written in `node.js`.
|
[node.d.plugin](node.d.plugin/)|`node.js`|any|external|yes|a **plugin orchestrator** for data collection modules written in `node.js`.
|
||||||
[plugins.d](plugins.d/)|`C`|any|internal|-|implements the **external plugins** API and serves external plugins
|
[plugins.d](plugins.d/)|`C`|any|internal|-|implements the **external plugins** API and serves external plugins
|
||||||
[proc.plugin](proc.plugin/)|`C`|linux|internal|yes|collects resource usage and performance data on Linux systems
|
[proc.plugin](proc.plugin/)|`C`|linux|internal|yes|collects resource usage and performance data on Linux systems
|
||||||
|
|
|
@ -77,6 +77,7 @@ freeipmi.plugin: freeipmi.plugin
|
||||||
nfacct.plugin: nfacct.plugin
|
nfacct.plugin: nfacct.plugin
|
||||||
cups.plugin: cups.plugin
|
cups.plugin: cups.plugin
|
||||||
xenstat.plugin: xenstat.plugin
|
xenstat.plugin: xenstat.plugin
|
||||||
|
perf.plugin: perf.plugin
|
||||||
charts.d.plugin: *charts.d.plugin*
|
charts.d.plugin: *charts.d.plugin*
|
||||||
node.d.plugin: *node.d.plugin*
|
node.d.plugin: *node.d.plugin*
|
||||||
python.d.plugin: *python.d.plugin*
|
python.d.plugin: *python.d.plugin*
|
||||||
|
|
8
collectors/perf.plugin/Makefile.am
Normal file
8
collectors/perf.plugin/Makefile.am
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
AUTOMAKE_OPTIONS = subdir-objects
|
||||||
|
MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
|
||||||
|
|
||||||
|
dist_noinst_DATA = \
|
||||||
|
README.md \
|
||||||
|
$(NULL)
|
72
collectors/perf.plugin/README.md
Normal file
72
collectors/perf.plugin/README.md
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
# perf.plugin
|
||||||
|
|
||||||
|
`perf.plugin` collects system-wide CPU performance statistics from Performance Monitoring Units (PMU) using
|
||||||
|
the `perf_event_open()` system call.
|
||||||
|
|
||||||
|
## Important Notes
|
||||||
|
|
||||||
|
Accessing hardware PMUs requires root permissions, so the plugin is setuid to root.
|
||||||
|
|
||||||
|
Keep in mind that the number of PMUs in a system is usually quite limited and every hardware monitoring
|
||||||
|
event for every CPU core needs a separate file descriptor to be opened.
|
||||||
|
|
||||||
|
## Charts
|
||||||
|
|
||||||
|
The plugin provides statistics for general hardware and software performance monitoring events:
|
||||||
|
|
||||||
|
Hardware events:
|
||||||
|
1. CPU cycles
|
||||||
|
2. Instructions
|
||||||
|
3. Branch instructions
|
||||||
|
4. Cache operations
|
||||||
|
5. BUS cycles
|
||||||
|
6. Stalled frontend and backend cycles
|
||||||
|
|
||||||
|
Software events:
|
||||||
|
1. CPU migrations
|
||||||
|
2. Alignment faults
|
||||||
|
3. Emulation faults
|
||||||
|
|
||||||
|
Hardware cache events:
|
||||||
|
1. L1D cache operations
|
||||||
|
2. L1D prefetch cache operations
|
||||||
|
3. L1I cache operations
|
||||||
|
4. LL cache operations
|
||||||
|
5. DTLB cache operations
|
||||||
|
6. ITLB cache operations
|
||||||
|
7. PBU cache operations
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
The plugin is disabled by default because the number of PMUs is usually quite limited and it is not desired to
|
||||||
|
allow Netdata to struggle silently for PMUs, interfering with other performance monitoring software. If you need to
|
||||||
|
enable the perf plugin, edit /etc/netdata/netdata.conf and set:
|
||||||
|
|
||||||
|
```raw
|
||||||
|
[plugins]
|
||||||
|
perf = yes
|
||||||
|
```
|
||||||
|
|
||||||
|
```raw
|
||||||
|
[plugin:perf]
|
||||||
|
update every = 1
|
||||||
|
command options = all
|
||||||
|
```
|
||||||
|
|
||||||
|
You can use the `command options` parameter to pick what data should be collected and which charts should be
|
||||||
|
displayed. If `all` is used, all general performance monitoring counters are probed and corresponding charts
|
||||||
|
are enabled for the available counters. You can also define a particular set of enabled charts using the
|
||||||
|
following keywords: `cycles`, `instructions`, `branch`, `cache`, `bus`, `stalled`, `migrations`, `alighnment`,
|
||||||
|
`emulation`, `L1D`, `L1D-prefetch`, `L1I`, `LL`, `DTLB`, `ITLB`, `PBU`.
|
||||||
|
|
||||||
|
## Debugging
|
||||||
|
|
||||||
|
You can run the plugin by hand:
|
||||||
|
|
||||||
|
```raw
|
||||||
|
sudo /usr/libexec/netdata/plugins.d/perf.plugin 1 all debug
|
||||||
|
```
|
||||||
|
|
||||||
|
You will get verbose output on what the plugin does.
|
||||||
|
|
||||||
|
[]()
|
1348
collectors/perf.plugin/perf_plugin.c
Normal file
1348
collectors/perf.plugin/perf_plugin.c
Normal file
File diff suppressed because it is too large
Load diff
|
@ -15,6 +15,7 @@ plugin|language|O/S|description
|
||||||
[freeipmi.plugin](../freeipmi.plugin/)|`C`|linux|collects metrics from enterprise hardware sensors, on Linux servers.
|
[freeipmi.plugin](../freeipmi.plugin/)|`C`|linux|collects metrics from enterprise hardware sensors, on Linux servers.
|
||||||
[nfacct.plugin](../nfacct.plugin/)|`C`|linux|collects netfilter firewall, connection tracker and accounting metrics using `libmnl` and `libnetfilter_acct`.
|
[nfacct.plugin](../nfacct.plugin/)|`C`|linux|collects netfilter firewall, connection tracker and accounting metrics using `libmnl` and `libnetfilter_acct`.
|
||||||
[xenstat.plugin](../xenstat.plugin/)|`C`|linux|collects XenServer and XCP-ng metrics using `lxenstat`.
|
[xenstat.plugin](../xenstat.plugin/)|`C`|linux|collects XenServer and XCP-ng metrics using `lxenstat`.
|
||||||
|
[perf.plugin](../perf.plugin/)|`C`|linux|collects CPU performance metrics using performance monitoring units (PMU).
|
||||||
[node.d.plugin](../node.d.plugin/)|`node.js`|all|a **plugin orchestrator** for data collection modules written in `node.js`.
|
[node.d.plugin](../node.d.plugin/)|`node.js`|all|a **plugin orchestrator** for data collection modules written in `node.js`.
|
||||||
[python.d.plugin](../python.d.plugin/)|`python`|all|a **plugin orchestrator** for data collection modules written in `python` v2 or v3 (both are supported).
|
[python.d.plugin](../python.d.plugin/)|`python`|all|a **plugin orchestrator** for data collection modules written in `python` v2 or v3 (both are supported).
|
||||||
|
|
||||||
|
|
14
configure.ac
14
configure.ac
|
@ -685,6 +685,19 @@ AC_MSG_RESULT([${enable_plugin_xenstat}])
|
||||||
AM_CONDITIONAL([ENABLE_PLUGIN_XENSTAT], [test "${enable_plugin_xenstat}" = "yes"])
|
AM_CONDITIONAL([ENABLE_PLUGIN_XENSTAT], [test "${enable_plugin_xenstat}" = "yes"])
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# perf.plugin
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([if perf.plugin should be enabled])
|
||||||
|
if test "${build_target}" == "linux" ; then
|
||||||
|
enable_plugin_perf="yes"
|
||||||
|
else
|
||||||
|
enable_plugin_perf="no"
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT([${enable_plugin_perf}])
|
||||||
|
AM_CONDITIONAL([ENABLE_PLUGIN_PERF], [test "${enable_plugin_perf}" = "yes"])
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# AWS Kinesis backend - libaws-cpp-sdk-kinesis, libaws-cpp-sdk-core, libssl, libcrypto, libcurl
|
# AWS Kinesis backend - libaws-cpp-sdk-kinesis, libaws-cpp-sdk-core, libssl, libcrypto, libcurl
|
||||||
|
|
||||||
|
@ -999,6 +1012,7 @@ AC_CONFIG_FILES([
|
||||||
collectors/statsd.plugin/Makefile
|
collectors/statsd.plugin/Makefile
|
||||||
collectors/tc.plugin/Makefile
|
collectors/tc.plugin/Makefile
|
||||||
collectors/xenstat.plugin/Makefile
|
collectors/xenstat.plugin/Makefile
|
||||||
|
collectors/perf.plugin/Makefile
|
||||||
daemon/Makefile
|
daemon/Makefile
|
||||||
database/Makefile
|
database/Makefile
|
||||||
database/engine/Makefile
|
database/engine/Makefile
|
||||||
|
|
|
@ -69,6 +69,7 @@ To control which plugins Netdata run, edit `netdata.conf` and check the `[plugin
|
||||||
# charts.d = yes
|
# charts.d = yes
|
||||||
# apps = yes
|
# apps = yes
|
||||||
# xenstat = yes
|
# xenstat = yes
|
||||||
|
# perf = no
|
||||||
```
|
```
|
||||||
|
|
||||||
The default for all plugins is the option `enable running new plugins`. So, setting this to `no` will disable all the plugins, except the ones specifically enabled.
|
The default for all plugins is the option `enable running new plugins`. So, setting this to `no` will disable all the plugins, except the ones specifically enabled.
|
||||||
|
@ -95,7 +96,7 @@ sudo su -s /bin/bash netdata
|
||||||
```
|
```
|
||||||
|
|
||||||
Similarly, you can use `charts.d.plugin` for BASH plugins and `node.d.plugin` for node.js plugins.
|
Similarly, you can use `charts.d.plugin` for BASH plugins and `node.d.plugin` for node.js plugins.
|
||||||
Other plugins (like `apps.plugin`, `freeipmi.plugin`, `fping.plugin`, `ioping.plugin`) use the native Netdata plugin API and can be run directly.
|
Other plugins (like `apps.plugin`, `freeipmi.plugin`, `fping.plugin`, `ioping.plugin`, `nfacct.plugin`, `xenstat.plugin`, `perf.plugin`) use the native Netdata plugin API and can be run directly.
|
||||||
|
|
||||||
If you need to configure a Netdata plugin or module, all user supplied configuration is kept at `/etc/netdata` while the stock versions of all files is at `/usr/lib/netdata/conf.d`.
|
If you need to configure a Netdata plugin or module, all user supplied configuration is kept at `/etc/netdata` while the stock versions of all files is at `/usr/lib/netdata/conf.d`.
|
||||||
To copy a stock file and edit it, run `/etc/netdata/edit-config`. Running this command without an argument, will list the available stock files.
|
To copy a stock file and edit it, run `/etc/netdata/edit-config`. Running this command without an argument, will list the available stock files.
|
||||||
|
@ -116,6 +117,9 @@ plugin | language | plugin<br/>configuration | modules<br/>configuration |
|
||||||
`fping.plugin`<br/>(external plugin for collecting network latencies)|`C`|`fping.conf`|This plugin is a wrapper for the `fping` command.
|
`fping.plugin`<br/>(external plugin for collecting network latencies)|`C`|`fping.conf`|This plugin is a wrapper for the `fping` command.
|
||||||
`ioping.plugin`<br/>(external plugin for collecting disk latencies)|`C`|`ioping.conf`|This plugin is a wrapper for the `ioping` command.
|
`ioping.plugin`<br/>(external plugin for collecting disk latencies)|`C`|`ioping.conf`|This plugin is a wrapper for the `ioping` command.
|
||||||
`freeipmi.plugin`<br/>(external plugin for collecting IPMI h/w sensors)|`C`|`netdata.conf` section `[plugin:freeipmi]`
|
`freeipmi.plugin`<br/>(external plugin for collecting IPMI h/w sensors)|`C`|`netdata.conf` section `[plugin:freeipmi]`
|
||||||
|
`nfacct.plugin`<br/>(external plugin for monitoring netfilter firewall and connection tracker)|`C`|`netdata.conf` section `[plugin:nfacct]`|N/A
|
||||||
|
`xenstat.plugin`<br/>(external plugin for monitoring XCP-ng and XenServer)|`C`|`netdata.conf` section `[plugin:xenstat]`|N/A
|
||||||
|
`perf.plugin`<br/>(external plugin for monitoring CPU performance on Linux)|`C`|`netdata.conf` section `[plugin:perf]`|N/A
|
||||||
`idlejitter.plugin`<br/>(internal plugin for monitoring CPU jitter)|`C`|N/A|N/A
|
`idlejitter.plugin`<br/>(internal plugin for monitoring CPU jitter)|`C`|N/A|N/A
|
||||||
`macos.plugin`<br/>(internal plugin for monitoring MacOS system resources)|`C`|`netdata.conf` section `[plugin:macos]`|one section for each module `[plugin:macos:MODULE]`. Each module may provide additional sections in the form of `[plugin:macos:MODULE:SUBSECTION]`.
|
`macos.plugin`<br/>(internal plugin for monitoring MacOS system resources)|`C`|`netdata.conf` section `[plugin:macos]`|one section for each module `[plugin:macos:MODULE]`. Each module may provide additional sections in the form of `[plugin:macos:MODULE:SUBSECTION]`.
|
||||||
`node.d.plugin`<br/>(external plugin orchestrator of node.js modules)|`node.js`|`node.d.conf`|a file for each module in `/etc/netdata/node.d/`.
|
`node.d.plugin`<br/>(external plugin orchestrator of node.js modules)|`node.js`|`node.d.conf`|a file for each module in `/etc/netdata/node.d/`.
|
||||||
|
@ -321,6 +325,7 @@ application|language|notes|
|
||||||
:---------:|:------:|:----|
|
:---------:|:------:|:----|
|
||||||
apps|C|`apps.plugin` collects resource usage statistics for all processes running in the system. It groups the entire process tree and reports dozens of metrics for CPU utilization, memory footprint, disk I/O, swap memory, network connections, open files and sockets, etc. It reports metrics for application groups, users and user groups.<br/> <br/>[Documentation of `apps.plugin`](../collectors/apps.plugin/).<br/> <br/>Netdata plugin: [`apps_plugin.c`](../collectors/apps.plugin)<br/>configuration file: [`apps_groups.conf`](../collectors/apps.plugin)|
|
apps|C|`apps.plugin` collects resource usage statistics for all processes running in the system. It groups the entire process tree and reports dozens of metrics for CPU utilization, memory footprint, disk I/O, swap memory, network connections, open files and sockets, etc. It reports metrics for application groups, users and user groups.<br/> <br/>[Documentation of `apps.plugin`](../collectors/apps.plugin/).<br/> <br/>Netdata plugin: [`apps_plugin.c`](../collectors/apps.plugin)<br/>configuration file: [`apps_groups.conf`](../collectors/apps.plugin)|
|
||||||
ioping|C|Charts disk latency statistics for a directory/file/device, using the `ioping` command. A recent (probably unreleased) version of ioping is required. The plugin supplied can install it in `/usr/local`.<br/> <br/>Netdata plugin: [ioping.plugin](../collectors/ioping.plugin) (this is a shell wrapper to start ioping - once ioping is started, Netdata and ioping communicate directly - it can also install the right version of ioping)<br/>configuration file: [ioping.conf](../collectors/ioping.plugin)|
|
ioping|C|Charts disk latency statistics for a directory/file/device, using the `ioping` command. A recent (probably unreleased) version of ioping is required. The plugin supplied can install it in `/usr/local`.<br/> <br/>Netdata plugin: [ioping.plugin](../collectors/ioping.plugin) (this is a shell wrapper to start ioping - once ioping is started, Netdata and ioping communicate directly - it can also install the right version of ioping)<br/>configuration file: [ioping.conf](../collectors/ioping.plugin)|
|
||||||
|
perf|C|`perf.plugin` collects CPU performance metrics using hardware performance monitoring units (PMU).<br/> <br/>[Documentation of `perf.plugin`](../collectors/perf.plugin/).<br/> <br/>Netdata plugin: [`perf_plugin.c`](../collectors/perf.plugin)|
|
||||||
cpu_apps|BASH<br/>Shell Script|Collects the CPU utilization of select apps.<br/><br/>DEPRECATED IN FAVOR OF `apps.plugin`. It is still supplied only as an example module to shell scripting plugins.<br/> <br/>Netdata plugin: [charts.d.plugin](../collectors/charts.d.plugin#chartsdplugin)<br/>plugin module: [cpu_apps.chart.sh](../collectors/charts.d.plugin/cpu_apps)<br/>configuration file: [charts.d/cpu_apps.conf](../collectors/charts.d.plugin/cpu_apps)|
|
cpu_apps|BASH<br/>Shell Script|Collects the CPU utilization of select apps.<br/><br/>DEPRECATED IN FAVOR OF `apps.plugin`. It is still supplied only as an example module to shell scripting plugins.<br/> <br/>Netdata plugin: [charts.d.plugin](../collectors/charts.d.plugin#chartsdplugin)<br/>plugin module: [cpu_apps.chart.sh](../collectors/charts.d.plugin/cpu_apps)<br/>configuration file: [charts.d/cpu_apps.conf](../collectors/charts.d.plugin/cpu_apps)|
|
||||||
load_average|BASH<br/>Shell Script|Collects the current system load average.<br/><br/>DEPRECATED IN FAVOR OF THE NETDATA INTERNAL ONE. It is still supplied only as an example module to shell scripting plugins.<br/> <br/>Netdata plugin: [charts.d.plugin](../collectors/charts.d.plugin#chartsdplugin)<br/>plugin module: [load_average.chart.sh](../collectors/charts.d.plugin/load_average)<br/>configuration file: [charts.d/load_average.conf](../collectors/charts.d.plugin/load_average)|
|
load_average|BASH<br/>Shell Script|Collects the current system load average.<br/><br/>DEPRECATED IN FAVOR OF THE NETDATA INTERNAL ONE. It is still supplied only as an example module to shell scripting plugins.<br/> <br/>Netdata plugin: [charts.d.plugin](../collectors/charts.d.plugin#chartsdplugin)<br/>plugin module: [load_average.chart.sh](../collectors/charts.d.plugin/load_average)<br/>configuration file: [charts.d/load_average.conf](../collectors/charts.d.plugin/load_average)|
|
||||||
mem_apps|BASH<br/>Shell Script|Collects the memory footprint of select applications.<br/><br/>DEPRECATED IN FAVOR OF `apps.plugin`. It is still supplied only as an example module to shell scripting plugins.<br/> <br/>Netdata plugin: [charts.d.plugin](../collectors/charts.d.plugin#chartsdplugin)<br/>plugin module: [mem_apps.chart.sh](../collectors/charts.d.plugin/mem_apps)<br/>configuration file: [charts.d/mem_apps.conf](../collectors/charts.d.plugin/mem_apps)|
|
mem_apps|BASH<br/>Shell Script|Collects the memory footprint of select applications.<br/><br/>DEPRECATED IN FAVOR OF `apps.plugin`. It is still supplied only as an example module to shell scripting plugins.<br/> <br/>Netdata plugin: [charts.d.plugin](../collectors/charts.d.plugin#chartsdplugin)<br/>plugin module: [mem_apps.chart.sh](../collectors/charts.d.plugin/mem_apps)<br/>configuration file: [charts.d/mem_apps.conf](../collectors/charts.d.plugin/mem_apps)|
|
||||||
|
|
|
@ -229,6 +229,7 @@ navpart 3 collectors/ioping.plugin
|
||||||
navpart 3 collectors/freeipmi.plugin
|
navpart 3 collectors/freeipmi.plugin
|
||||||
navpart 3 collectors/nfacct.plugin
|
navpart 3 collectors/nfacct.plugin
|
||||||
navpart 3 collectors/xenstat.plugin
|
navpart 3 collectors/xenstat.plugin
|
||||||
|
navpart 3 collectors/perf.plugin
|
||||||
|
|
||||||
|
|
||||||
echo -ne " - 'docs/Third-Party-Plugins.md'
|
echo -ne " - 'docs/Third-Party-Plugins.md'
|
||||||
|
|
|
@ -55,7 +55,7 @@ download_go() {
|
||||||
else
|
else
|
||||||
echo >&2
|
echo >&2
|
||||||
echo >&2 "Downloading go.d plugin from '${url}' failed because of missing mandatory packages."
|
echo >&2 "Downloading go.d plugin from '${url}' failed because of missing mandatory packages."
|
||||||
echo >&2 "Either add packages or disable it by issuing '--disable-go' in the installer"
|
echo >&2 "Either add packages or disable it by issuing '--disable-go' in the installer"
|
||||||
echo >&2
|
echo >&2
|
||||||
|
|
||||||
run_failed "I need curl or wget to proceed, but neither is available on this system."
|
run_failed "I need curl or wget to proceed, but neither is available on this system."
|
||||||
|
@ -213,10 +213,10 @@ while [ -n "${1}" ]; do
|
||||||
"--disable-plugin-nfacct") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--disable-plugin-nfacct/} --disable-plugin-nfacct";;
|
"--disable-plugin-nfacct") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--disable-plugin-nfacct/} --disable-plugin-nfacct";;
|
||||||
"--enable-plugin-xenstat") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--enable-plugin-xenstat/} --enable-plugin-xenstat";;
|
"--enable-plugin-xenstat") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--enable-plugin-xenstat/} --enable-plugin-xenstat";;
|
||||||
"--disable-plugin-xenstat") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--disable-plugin-xenstat/} --disable-plugin-xenstat";;
|
"--disable-plugin-xenstat") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--disable-plugin-xenstat/} --disable-plugin-xenstat";;
|
||||||
"--enable-backend-kinesis") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--enable-backend-kinesis/} --enable-backend-kinesis";;
|
"--enable-backend-kinesis") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--enable-backend-kinesis/} --enable-backend-kinesis";;
|
||||||
"--disable-backend-kinesis") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--disable-backend-kinesis/} --disable-backend-kinesis";;
|
"--disable-backend-kinesis") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--disable-backend-kinesis/} --disable-backend-kinesis";;
|
||||||
"--enable-backend-prometheus-remote-write") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--enable-backend-prometheus-remote-write/} --enable-backend-prometheus-remote-write";;
|
"--enable-backend-prometheus-remote-write") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--enable-backend-prometheus-remote-write/} --enable-backend-prometheus-remote-write";;
|
||||||
"--disable-backend-prometheus-remote-write") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--disable-backend-prometheus-remote-write/} --disable-backend-prometheus-remote-write";;
|
"--disable-backend-prometheus-remote-write") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--disable-backend-prometheus-remote-write/} --disable-backend-prometheus-remote-write";;
|
||||||
"--enable-lto") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--enable-lto/} --enable-lto";;
|
"--enable-lto") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--enable-lto/} --enable-lto";;
|
||||||
"--disable-lto") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--disable-lto/} --disable-lto";;
|
"--disable-lto") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--disable-lto/} --disable-lto";;
|
||||||
"--disable-x86-sse") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--disable-x86-sse/} --disable-x86-sse";;
|
"--disable-x86-sse") NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS//--disable-x86-sse/} --disable-x86-sse";;
|
||||||
|
@ -736,15 +736,20 @@ if [ "${UID}" -eq 0 ]; then
|
||||||
run chmod 4750 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/nfacct.plugin"
|
run chmod 4750 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/nfacct.plugin"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/xenstat.plugin" ]; then
|
if [ -f "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/xenstat.plugin" ]; then
|
||||||
run chown root:${NETDATA_GROUP} "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/xenstat.plugin"
|
run chown root:${NETDATA_GROUP} "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/xenstat.plugin"
|
||||||
run chmod 4750 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/xenstat.plugin"
|
run chmod 4750 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/xenstat.plugin"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/ioping" ]; then
|
if [ -f "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/perf.plugin" ]; then
|
||||||
run chown root:${NETDATA_GROUP} "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/ioping"
|
run chown root:${NETDATA_GROUP} "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/perf.plugin"
|
||||||
run chmod 4750 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/ioping"
|
run chmod 4750 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/perf.plugin"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -f "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/ioping" ]; then
|
||||||
|
run chown root:${NETDATA_GROUP} "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/ioping"
|
||||||
|
run chmod 4750 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/ioping"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -f "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/cgroup-network" ]; then
|
if [ -f "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/cgroup-network" ]; then
|
||||||
run chown "root:${NETDATA_GROUP}" "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/cgroup-network"
|
run chown "root:${NETDATA_GROUP}" "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/cgroup-network"
|
||||||
|
@ -876,7 +881,7 @@ else
|
||||||
create_netdata_conf "${NETDATA_PREFIX}/etc/netdata/netdata.conf" "http://localhost:${NETDATA_PORT}/netdata.conf"
|
create_netdata_conf "${NETDATA_PREFIX}/etc/netdata/netdata.conf" "http://localhost:${NETDATA_PORT}/netdata.conf"
|
||||||
fi
|
fi
|
||||||
if [ "${UID}" -eq 0 ]; then
|
if [ "${UID}" -eq 0 ]; then
|
||||||
run chown "${NETDATA_USER}" "${NETDATA_PREFIX}/etc/netdata/netdata.conf"
|
run chown "${NETDATA_USER}" "${NETDATA_PREFIX}/etc/netdata/netdata.conf"
|
||||||
fi
|
fi
|
||||||
run chmod 0664 "${NETDATA_PREFIX}/etc/netdata/netdata.conf"
|
run chmod 0664 "${NETDATA_PREFIX}/etc/netdata/netdata.conf"
|
||||||
|
|
||||||
|
|
|
@ -473,6 +473,12 @@ netdataDashboard.menu = {
|
||||||
title: 'wmi',
|
title: 'wmi',
|
||||||
icon: '<i class="fas fa-server"></i>',
|
icon: '<i class="fas fa-server"></i>',
|
||||||
info: undefined
|
info: undefined
|
||||||
|
},
|
||||||
|
|
||||||
|
'perf': {
|
||||||
|
title: 'Perf Counters',
|
||||||
|
icon: '<i class="fas fa-tachometer-alt"></i>',
|
||||||
|
info: 'Performance Monitoring Counters (PMC). Data collected using <b>perf_event_open()</b> system call which utilises Hardware Performance Monitoring Units (PMU).'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue