rdtmon: Fix formatting of collectd pod file.
Change-Id: I94d5e7c877bd99a5da8e725efef0bd700f339016
Signed-off-by: Serhiy Pshyk <serhiyx.pshyk@intel.com>
Change-Id: I94d5e7c877bd99a5da8e725efef0bd700f339016
Signed-off-by: Serhiy Pshyk <serhiyx.pshyk@intel.com>
rdtmon: Implement RDT monitoring plugin
The rdtmon plugin collects information provided by monitoring features of
Intel Resource Director Technology (Intel(R) RDT) like Cache Monitoring
Technology (CMT), Memory Bandwidth Monitoring (MBM).
Change-Id: Ie45344c1035c522fcd918a1dd2427a2da2e173bb
Signed-off-by: Serhiy Pshyk <serhiyx.pshyk@intel.com>
The rdtmon plugin collects information provided by monitoring features of
Intel Resource Director Technology (Intel(R) RDT) like Cache Monitoring
Technology (CMT), Memory Bandwidth Monitoring (MBM).
Change-Id: Ie45344c1035c522fcd918a1dd2427a2da2e173bb
Signed-off-by: Serhiy Pshyk <serhiyx.pshyk@intel.com>
CONTRIBUTING.md: Fix typos.
Merge branch 'collectd-5.6'
src/daemon/utils_cache.h: Improve documentation for uc_iterator_get_next().
src/daemon/plugin.[ch]: Make the user_data_t* const.
That is, user_data_t* passed to register_* functions. The actual callbacks
are still getting a user_data_t* since they, in theory, would be able to
modify the pointer stored in .data.
Issue: #1954
That is, user_data_t* passed to register_* functions. The actual callbacks
are still getting a user_data_t* since they, in theory, would be able to
modify the pointer stored in .data.
Issue: #1954
src/daemons/plugin.c: Don't modify user_data_t* in plugin_register_flush().
Fixes: #1954
Fixes: #1954
Revert "write_graphite: remove #ifndefs"
This reverts commit de80d27fe7023c2e377674b4cc341e539388b98e.
Fixes: #1953
This reverts commit de80d27fe7023c2e377674b4cc341e539388b98e.
Fixes: #1953
write_http plugin: Don't register a flush callback unconditionally.
Fixes: #1955
Fixes: #1955
Merge remote-tracking branch 'github/pr/1962'
Merge remote-tracking branch 'github/pr/1956'
Merge remote-tracking branch 'github/pr/1952'
cpu: Fix cpu aggregation on AIX change codeing style
cpu: Fix cpu aggregation on AIX
dpdkstat: Changed log severity to Error
add missing ;
Ability to run in tainted mode for spamassasin plugin.
Use readdir() instead of the deprecated readdir_r().
Cf. https://sourceware.org/ml/libc-alpha/2016-02/msg00093.html
Cf. https://sourceware.org/ml/libc-alpha/2016-02/msg00093.html
Declare loop variable in the loop expression.
valgrind.FreeBSD.suppress: Suppress bogus invalid read in all call chains.
Link libcmds (used for testing) against -lm.
FreeBSD requires this for isfinite().
FreeBSD requires this for isfinite().
command parser: Add support for parser options.
These can be used to tune the parser behavior. For now, there's an option to
specify the default hostname in an identifier.
These can be used to tune the parser behavior. For now, there's an option to
specify the default hostname in an identifier.
parse_identifier: Make hostname optional, if a default has been specified.
utils_cmds_test: Add various unit tests for the command parser.
command parser: Set command type to UNKNOWN upon failure.
PUTVAL command: Fix memory leaks and duplicate frees.
LISTVAL command: Add missing cmd_destroy_listval().
command parser: Add support for the GETVAL command.
Implement the generic interface for GETVAL and switch the GETVAL
implementation to use the generic interface.
Implement the generic interface for GETVAL and switch the GETVAL
implementation to use the generic interface.
command parser: Add support for the LISTVAL command.
Implement the generic interface for LISTVAL and switch the LISTVAL
implementation to use the generic interface.
Implement the generic interface for LISTVAL and switch the LISTVAL
implementation to use the generic interface.
command parser: Add support for the FLUSH command.
That is, implement the generic interface for FLUSH and switch the FLUSH
implementation to use the generic interface.
That is, implement the generic interface for FLUSH and switch the FLUSH
implementation to use the generic interface.
plugin.h: Introduce the identifier_t type with pointer fields.
This serves two purposes:
- Allow field values of arbitrary length.
- Reuse the identifier in other places.
Renamed identifier_t from utils_vl_lookup to lookup_identifier_t.
This serves two purposes:
- Allow field values of arbitrary length.
- Reuse the identifier in other places.
Renamed identifier_t from utils_vl_lookup to lookup_identifier_t.
command parser: Add a vector-based interface.
The new interface expects a parsed list of fields. Parsing of input buffers
is now done centrally in the generic code and the existing parser is a
wrapper around this and the new vector-based parser. The actual command
parsers (PUTVAL for now) receive the parsed list of fields.
As a side-effect, this changes the parser behavior a little:
- "foo=a string with spaces or \\ special characters" is now valid syntax
for specifying options in addition to foo="value with spaces, etc.".
- foo= is now a valid option even without quotes around the empty value.
The new interface expects a parsed list of fields. Parsing of input buffers
is now done centrally in the generic code and the existing parser is a
wrapper around this and the new vector-based parser. The actual command
parsers (PUTVAL for now) receive the parsed list of fields.
As a side-effect, this changes the parser behavior a little:
- "foo=a string with spaces or \\ special characters" is now valid syntax
for specifying options in addition to foo="value with spaces, etc.".
- foo= is now a valid option even without quotes around the empty value.
Add a generic interface for parsing the text protocol.
Implement it for PUTVAL for now.
The text protocol is used in multiple places and the parser will avoid code
duplication in client programs which can, instead, use it to generate the
respective requests.
Use the 'cmd_' prefix for public functions related to command handling.
Implement it for PUTVAL for now.
The text protocol is used in multiple places and the parser will avoid code
duplication in client programs which can, instead, use it to generate the
respective requests.
Use the 'cmd_' prefix for public functions related to command handling.
README: Document gRPC's client (sender) support.
gRPC plugin: Add Florian to copyright holders.
RRDCacheD plugin: Improve various RRD-related error messages.
RRDCacheD plugin: Try to reconnect upon failed operations.
The RRD client library does not provide means to check the status of a
connection and there's no way to detect that the connection is broken after,
for example, the daemon restarted. To work around that, try to reconnect if
any client operation fails.
Reported via https://bugs.debian.org/657877
The RRD client library does not provide means to check the status of a
connection and there's no way to detect that the connection is broken after,
for example, the daemon restarted. To work around that, try to reconnect if
any client operation fails.
Reported via https://bugs.debian.org/657877
commom: Fixed AIX doesn't have MSG_DONTWAIT
dpdkstat: Fixed issue with unused var when configured w/o debug
Signed-off-by: Taras Chornyi <tarasx.chornyi@intel.com>
Signed-off-by: Taras Chornyi <tarasx.chornyi@intel.com>
Merge remote-tracking branch 'github/pr/631'
Tree wide: Don't set vl.host to hostname_g in plugin code.
Issue: #1951
Issue: #1951
src/daemon/plugin.c: Don't copy values twice.
A copy of the values was made in plugin_dispatch_values_internal(). This
code predates the "write queue", which means that each value list (and
its values) are copied anyway and vl->values will always point to heap
memory.
A copy of the values was made in plugin_dispatch_values_internal(). This
code predates the "write queue", which means that each value list (and
its values) are copied anyway and vl->values will always point to heap
memory.
src/daemon/plugin.c: Initialize vl->host in plugin_value_list_clone().
Issue: #1951
Issue: #1951
Merge branch 'pr/1649'
dpkgstat plugin: Filter through clang-format.
Merge branch 'collectd-5.4' into collectd-5.5
dpdkstat: Fixed issue with incorrect argc calculation
Changed log messages to use PRIuN defines
Change-Id: I1433fbd6443c3d0a956c04670f93615042b40577
Signed-off-by: Taras Chornyi <tarasx.chornyi@intel.com>
Changed log messages to use PRIuN defines
Change-Id: I1433fbd6443c3d0a956c04670f93615042b40577
Signed-off-by: Taras Chornyi <tarasx.chornyi@intel.com>
Merge remote-tracking branch 'github/pr/1942'
Merge remote-tracking branch 'github/pr/1939'
Update email address
hddtemp: Improve robustness of test
Don't rely on signedness of buffer_size.
Don't rely on signedness of buffer_size.
hddtemp: Lift 1024-byte response limit
Dynamically scale the response buffer, up to a maximum of 1 MB.
Dynamically scale the response buffer, up to a maximum of 1 MB.
hddtemp: Lift 32-device limit
Instead of building an array of fields and then walking it, split into
fields as we go.
Instead of building an array of fields and then walking it, split into
fields as we go.
dpdkstat: Addressed PR comments
1) Added missing option description
2) Replaced strerror with sstrerror
3) Do not return from helper code
4) Use generic collectd Interval implementation
5) Removed "\n" from log messages
Signed-off-by: Taras Chornyi <tarasx.chornyi@intel.com>
1) Added missing option description
2) Replaced strerror with sstrerror
3) Do not return from helper code
4) Use generic collectd Interval implementation
5) Removed "\n" from log messages
Signed-off-by: Taras Chornyi <tarasx.chornyi@intel.com>
parse_value_file: adding strstripnewline back
use fgets in parse_value_file, fixes #1941
src/daemon/utils_time.c: Fix invalid strcpy position in format_rfc3339().
Plug a leak in Target:Set.
Merge branch 'pr/1918'
src/daemon/utils_time.c: Pass "struct tm *" to format_zone().
This is a partial revert of e2cb258c7b6ce456f4119fd1454c85b479fa3e2d:
strptime() does not look the local timezone up itself but gets the
information from the "struct tm". If that is initialized with {0}, it
will always return the "+0000" time zone.
This is a partial revert of e2cb258c7b6ce456f4119fd1454c85b479fa3e2d:
strptime() does not look the local timezone up itself but gets the
information from the "struct tm". If that is initialized with {0}, it
will always return the "+0000" time zone.
perl plugin: Renamed and documented "RegisterLegacyFlush" option.
perl plugin: Added 'flush' fallback
perl plugin: Changed pluginname form to allow single perl plugin flush. (Part 2, fixed _plugin_unregister_generic() function to match _plugin_register_generic_userdata().)
perl plugin: Fixed Collectd::plugin_call_all function name im DEBUG()/ERROR()
perl plugin: Mark thread as running to avoid deadlock moved from perl_shutdown() to c_ithread_destroy()
perl plugin: Changed pluginname form to allow single perl plugin flush.
perl plugin: Register perl plugins with use of 'userdata'.
Address more review comments:
- Repurpose rfc3339()/rfc3339nano() to return time in zulu format.
- Add formatted time examples to function comments.
- Clean up helper functions and add variable iniitalization.
- Repurpose rfc3339()/rfc3339nano() to return time in zulu format.
- Add formatted time examples to function comments.
- Clean up helper functions and add variable iniitalization.
Force use of local time in the postgresql plugin.
Update postgresql docs to reflect reality.
Update postgresql docs to reflect reality.
Address review comments:
- Repurpose rfc3339/rfc3339nano to use UTC.
- Add rfc3339_local/rfc3339nano_local for local time.
- Factor out common bits; saner helper functions.
- Update comments.
- Repurpose rfc3339/rfc3339nano to use UTC.
- Add rfc3339_local/rfc3339nano_local for local time.
- Factor out common bits; saner helper functions.
- Update comments.
Merge branch 'pr/1792'
src/daemon/common.[ch]: Reimplement strjoin().
This new implementation truncates fields rather than aborting when there
is more space in the output buffer. Since strjoin() is mostly used to
fill plugin and type instances, which are otherwise usually filled with
sstrncpy(), i.e. also truncate the string rather than erroring out.
The unit test has also been rewritten to test the new functionality.
The new functions have been formatted with clang-format.
Fixes: #1792
This new implementation truncates fields rather than aborting when there
is more space in the output buffer. Since strjoin() is mostly used to
fill plugin and type instances, which are otherwise usually filled with
sstrncpy(), i.e. also truncate the string rather than erroring out.
The unit test has also been rewritten to test the new functionality.
The new functions have been formatted with clang-format.
Fixes: #1792
hugepages plugin: Add "g_" prefix to global variables.
hugepages plugin: Add myself to the list of authors.
hugepages plugin: Remove an unused variable.
hugepages plugin: Implement the "ValuesPages", "ValuesBytes" and "ValuesPercentage" options.
hugepages plugin: Use the "complex" config callback.
hugepages plugin: Parse page size from the directory name.
hugepages plugin: Refactor the read_hugepage_entry() function.
* Move static variables into the "entry_info" struct.
* Turn flag into an actual flag, rather than a counter.
* Close "fh" as soon as possible.
* Return early if flags != HP_HAVE_ALL.
* Remove dead code (d_name *always* contains a dash).
* Move static variables into the "entry_info" struct.
* Turn flag into an actual flag, rather than a counter.
* Close "fh" as soon as possible.
* Return early if flags != HP_HAVE_ALL.
* Remove dead code (d_name *always* contains a dash).
hugepages plugin: Don't use pathconf(_PC_NAME_MAX).
Since we allocate the buffer on the stack, this doesn't make sense:
Best case, the returned value is the same as the PATH_MAX define. Worst
case, the returned value is larger and we create a stack overflow.
Since we allocate the buffer on the stack, this doesn't make sense:
Best case, the returned value is the same as the PATH_MAX define. Worst
case, the returned value is larger and we create a stack overflow.
hugepages plugin: Run clang-format.
Merge remote-tracking branch 'github/pr/1931'
contrib/examples/myplugin.c: Fix copy and paste error.
Tree wide: Unify initialization of multi-value value lists.
Use struct initializers to initialize the array like so:
value_t values[] = {
/* ... */
};
Then initialize the value_list_t with:
vl.values = values;
vl.values_len = STATIC_ARRAY_SIZE (values);
Use struct initializers to initialize the array like so:
value_t values[] = {
/* ... */
};
Then initialize the value_list_t with:
vl.values = values;
vl.values_len = STATIC_ARRAY_SIZE (values);
contrib/examples/myplugin.c: Use a compound literal in the example plugin, too.
Tree wide: Use compound literals when dealing with value_t.
Merge branch 'collectd-5.6'
Conflicts:
src/collectd.conf.in
Conflicts:
src/collectd.conf.in
Merge branch 'collectd-5.5' into collectd-5.6
Merge remote-tracking branch 'github/pr/1930'
regex match: snprintf → ssnprintf
ssnprintf() ensures null termination, which is especially important when using "%s" in the format.
ssnprintf() ensures null termination, which is especially important when using "%s" in the format.
Address review comments:
- Fix match bug.
- Use sfree everywhere.
- Better variable names.
- Fix match bug.
- Use sfree everywhere.
- Better variable names.
Merge remote-tracking branch 'github/pr/1929'
curl_json plugin: Skip unexpected non-map values.
Assume, for example, the config `Key "*/foo"`. This config expects JSON
in the form:
{
"bar": {
"foo": 1337
}
}
If the available JSON is instead:
{
"error_code": 0,
"bar": {
"foo": 1337
}
}
the code will take a look at the zero associated with "error_code" and
determine that a map (with key "foo") is expected instead. Previously
the code would continue, eventually calling `cj_get_type()` which
expects that `key->type` is a valid pointer, resulting in a segmentation
fault.
This patch does three things to ensure that this segmentation fault does
not happen again:
1. `cj_get_type()` checks its argument to make sure it is valid before
dereferencing any pointers.
2. In case a non-map is found when a map is expected, the code will
return instead of limping on.
3. After calling `cj_cb_inc_array_index()`, which may update the key,
make sure that it actually did and that key is valid now.
Fixes: #1896
Assume, for example, the config `Key "*/foo"`. This config expects JSON
in the form:
{
"bar": {
"foo": 1337
}
}
If the available JSON is instead:
{
"error_code": 0,
"bar": {
"foo": 1337
}
}
the code will take a look at the zero associated with "error_code" and
determine that a map (with key "foo") is expected instead. Previously
the code would continue, eventually calling `cj_get_type()` which
expects that `key->type` is a valid pointer, resulting in a segmentation
fault.
This patch does three things to ensure that this segmentation fault does
not happen again:
1. `cj_get_type()` checks its argument to make sure it is valid before
dereferencing any pointers.
2. In case a non-map is found when a map is expected, the code will
return instead of limping on.
3. After calling `cj_cb_inc_array_index()`, which may update the key,
make sure that it actually did and that key is valid now.
Fixes: #1896
Document MetaData.
Allow Match:Regex to match metadata.
Merge remote-tracking branch 'github/pr/1922'
Truncate strjoin arguments if > DATA_MAX_NAME_LEN
If strjoin() runs out of buffer space when joining strings, use the
remainder of available space rather than skipping additional strings
Reworked return() to avoid extra strlen() call
If strjoin() runs out of buffer space when joining strings, use the
remainder of available space rather than skipping additional strings
Reworked return() to avoid extra strlen() call
Merge remote-tracking branch 'github/pr/1915'
src/utils_format_graphite.c: Re-insert blank line.
Address more review comments:
- Locking fixes,
- Leak fixes.
- Locking fixes,
- Leak fixes.