summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/data/distros.yml2
-rw-r--r--.github/workflows/build.yml10
-rw-r--r--.github/workflows/packaging.yml9
-rw-r--r--CHANGELOG.md397
-rw-r--r--CMakeLists.txt15
-rwxr-xr-xpackaging/installer/netdata-updater.sh10
-rw-r--r--packaging/makeself/bundled-packages.version4
-rw-r--r--packaging/version2
-rw-r--r--src/collectors/common-contexts/mem.swap.h8
-rw-r--r--src/collectors/freebsd.plugin/freebsd_kstat_zfs.c9
-rw-r--r--src/collectors/proc.plugin/proc_meminfo.c11
-rw-r--r--src/collectors/proc.plugin/proc_net_dev.c51
-rw-r--r--src/collectors/proc.plugin/proc_spl_kstat_zfs.c2
-rw-r--r--src/collectors/proc.plugin/zfs_common.c2
-rw-r--r--src/collectors/proc.plugin/zfs_common.h2
-rwxr-xr-xsrc/daemon/system-info.sh15
-rw-r--r--src/database/sqlite/sqlite_aclk_node.c6
-rw-r--r--src/database/sqlite/sqlite_health.c18
-rw-r--r--src/go/plugin/go.d/agent/discovery/sd/discoverer/netlisteners/netlisteners.go15
-rw-r--r--src/go/plugin/go.d/modules/nvidia_smi/charts.go5
-rw-r--r--src/go/plugin/go.d/modules/nvidia_smi/collect.go4
-rw-r--r--src/go/plugin/go.d/modules/nvidia_smi/config_schema.json4
-rw-r--r--src/go/plugin/go.d/modules/nvidia_smi/exec.go2
-rw-r--r--src/go/plugin/go.d/modules/nvidia_smi/metadata.yaml10
-rw-r--r--src/go/plugin/go.d/modules/postgres/collect.go1
-rw-r--r--src/go/plugin/go.d/modules/postgres/do_query_global.go2
-rw-r--r--src/go/plugin/go.d/modules/postgres/postgres_test.go4
-rw-r--r--src/go/plugin/go.d/modules/postgres/queries.go21
-rw-r--r--src/go/plugin/go.d/modules/smartctl/collect.go17
-rw-r--r--src/go/plugin/go.d/modules/smartctl/scan.go6
-rw-r--r--src/go/plugin/go.d/modules/uwsgi/client.go33
-rw-r--r--src/go/plugin/go.d/modules/uwsgi/collect.go19
-rw-r--r--src/go/plugin/go.d/modules/uwsgi/uwsgi.go5
-rw-r--r--src/go/plugin/go.d/modules/uwsgi/uwsgi_test.go45
-rw-r--r--src/go/plugin/go.d/pkg/socket/client.go9
-rw-r--r--src/health/health_event_loop.c11
-rw-r--r--src/health/rrdvar.c4
-rw-r--r--src/health/rrdvar.h2
-rw-r--r--src/libnetdata/socket/socket.c2
39 files changed, 444 insertions, 350 deletions
diff --git a/.github/data/distros.yml b/.github/data/distros.yml
index 54083ca57..2c5569bff 100644
--- a/.github/data/distros.yml
+++ b/.github/data/distros.yml
@@ -6,7 +6,7 @@ platform_map: # map packaging architectures to docker platforms
arm64: linux/arm64/v8
armhf: linux/arm/v7
armhfp: linux/arm/v7
- i386: linux/i386
+ i386: linux/386
x86_64: linux/amd64
arch_order: # sort order for per-architecture jobs in CI
- amd64
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 073d85b7a..3a253c0cc 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -151,7 +151,7 @@ jobs:
- name: Store
id: store
if: needs.file-check.outputs.run == 'true'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v4.4.2
with:
name: dist-tarball
path: artifacts/*.tar.gz
@@ -245,7 +245,7 @@ jobs:
- name: Store
id: store
if: needs.file-check.outputs.run == 'true'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v4.4.2
with:
name: dist-static-${{ matrix.arch }}
path: artifacts/*.gz.run
@@ -321,7 +321,7 @@ jobs:
- name: Store Artifacts
id: store
if: needs.file-check.outputs.run == 'true'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v4.4.2
with:
name: final-artifacts
path: artifacts/*
@@ -862,7 +862,7 @@ jobs:
tags: test:${{ matrix.artifact_key }}
- name: Upload image artifact
id: upload
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v4.4.2
with:
name: ${{ matrix.artifact_key }}-test-env
path: /tmp/image.tar
@@ -1120,7 +1120,7 @@ jobs:
timestamp-digest: SHA256
- name: Upload Installer
id: upload
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v4.4.2
with:
name: windows-x86_64-installer
path: packaging\windows\netdata-installer.exe
diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml
index bba552df7..7cf472707 100644
--- a/.github/workflows/packaging.yml
+++ b/.github/workflows/packaging.yml
@@ -256,15 +256,16 @@ jobs:
shell: bash
run: |
docker run --security-opt seccomp=unconfined -e DISABLE_TELEMETRY=1 -e VERSION=${{ needs.version-check.outputs.version }} \
- -e ENABLE_SENTRY=${{ matrix.bundle_sentry }} -e RELEASE_PIPELINE=${{ env.RELEASE_PIPELINE }} \
- -e BUILD_DESTINATION=${{ matrix.distro }}${{ matrix.version }}_${{ matrix.arch }} -e UPLOAD_SENTRY=${{ env.UPLOAD_SENTRY }} \
- -e SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_CLI_TOKEN }} -e NETDATA_SENTRY_DSN=${{ secrets.SENTRY_DSN }} \
+ -e ENABLE_SENTRY=${{ matrix.bundle_sentry }} -e RELEASE_PIPELINE=${{ env.RELEASE_PIPELINE }} \
+ -e BUILD_DESTINATION=${{ matrix.distro }}${{ matrix.version }}_${{ matrix.arch }} -e UPLOAD_SENTRY=${{ env.UPLOAD_SENTRY }} \
+ -e SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_CLI_TOKEN }} -e NETDATA_SENTRY_DSN=${{ secrets.SENTRY_DSN }} \
+ -e GOOS=$(echo ${{ matrix.platform }} | cut -f 1 -d '/') -e GOARCH=$(echo ${{ matrix.platform }} | cut -f 2 -d '/') \
--platform=${{ matrix.platform }} -v "$PWD":/netdata netdata/package-builders:${{ matrix.distro }}${{ matrix.version }}-${{ matrix.builder_rev }}
- name: Save Packages
id: artifacts
if: needs.file-check.outputs.run == 'true'
continue-on-error: true
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v4.4.2
with:
name: ${{ matrix.distro }}-${{ matrix.version }}-${{ matrix.arch }}-packages
path: ${{ github.workspace }}/artifacts/*
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d4fd6af7f..ad2783f5d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,23 +1,216 @@
# Changelog
-## [v1.47.2](https://github.com/netdata/netdata/tree/v1.47.2) (2024-09-24)
+## [v1.47.5](https://github.com/netdata/netdata/tree/v1.47.5) (2024-10-24)
-[Full Changelog](https://github.com/netdata/netdata/compare/v1.47.1...v1.47.2)
+[Full Changelog](https://github.com/netdata/netdata/compare/v1.47.4...v1.47.5)
**Merged pull requests:**
+- fix\(apps.plugin\): add tini to Linux managers [\#18856](https://github.com/netdata/netdata/pull/18856) ([ilyam8](https://github.com/ilyam8))
+- feat\(proc/numa\): add numa node mem activity [\#18855](https://github.com/netdata/netdata/pull/18855) ([ilyam8](https://github.com/ilyam8))
+- build\(deps\): bump github.com/vmware/govmomi from 0.44.1 to 0.45.0 in /src/go [\#18854](https://github.com/netdata/netdata/pull/18854) ([dependabot[bot]](https://github.com/apps/dependabot))
+- chore\(ci\): print versions in check\_successful\_update [\#18853](https://github.com/netdata/netdata/pull/18853) ([ilyam8](https://github.com/ilyam8))
+- Regenerate integrations.js [\#18852](https://github.com/netdata/netdata/pull/18852) ([netdatabot](https://github.com/netdatabot))
+- Make integration links absolute [\#18851](https://github.com/netdata/netdata/pull/18851) ([Ancairon](https://github.com/Ancairon))
+- fix\(packaging\): check for sys/capability.h only on Linux [\#18849](https://github.com/netdata/netdata/pull/18849) ([ilyam8](https://github.com/ilyam8))
+- feat\(go.d/sd/nl\): make timeout and interval configurable [\#18847](https://github.com/netdata/netdata/pull/18847) ([ilyam8](https://github.com/ilyam8))
+- fix\(packaging\): fix installing libcurl\_dev on FreeBSD [\#18845](https://github.com/netdata/netdata/pull/18845) ([ilyam8](https://github.com/ilyam8))
+- Silence up-to-date installation targets. [\#18842](https://github.com/netdata/netdata/pull/18842) ([vkalintiris](https://github.com/vkalintiris))
+- docs\(web/gui\): remove legacy dashboard description [\#18841](https://github.com/netdata/netdata/pull/18841) ([ilyam8](https://github.com/ilyam8))
+- Regenerate integrations.js [\#18839](https://github.com/netdata/netdata/pull/18839) ([netdatabot](https://github.com/netdatabot))
+- feat\(go.d/vernemq\): add "Queued PUBLISH Messages" chart [\#18838](https://github.com/netdata/netdata/pull/18838) ([ilyam8](https://github.com/ilyam8))
+- Remove RRDSET\_FLAG\_DETAIL. [\#18837](https://github.com/netdata/netdata/pull/18837) ([vkalintiris](https://github.com/vkalintiris))
+- Update enterprise SSO docs [\#18836](https://github.com/netdata/netdata/pull/18836) ([car12o](https://github.com/car12o))
+- chore\(go.d/vernemq\): remove unused file [\#18835](https://github.com/netdata/netdata/pull/18835) ([ilyam8](https://github.com/ilyam8))
+- Regenerate integrations.js [\#18834](https://github.com/netdata/netdata/pull/18834) ([netdatabot](https://github.com/netdatabot))
+- feat\(go.d/nvidia\_smi\): add "index" label to GPU charts [\#18833](https://github.com/netdata/netdata/pull/18833) ([ilyam8](https://github.com/ilyam8))
+- spawn-server-nofork: invalid magic [\#18831](https://github.com/netdata/netdata/pull/18831) ([ktsaou](https://github.com/ktsaou))
+- remove old obsolete check for excess data in request [\#18830](https://github.com/netdata/netdata/pull/18830) ([ktsaou](https://github.com/ktsaou))
+- Add the Windows event logs integration to the meta [\#18829](https://github.com/netdata/netdata/pull/18829) ([Ancairon](https://github.com/Ancairon))
+- build\(deps\): bump github.com/redis/go-redis/v9 from 9.6.2 to 9.7.0 in /src/go [\#18828](https://github.com/netdata/netdata/pull/18828) ([dependabot[bot]](https://github.com/apps/dependabot))
+- Regenerate integrations.js [\#18826](https://github.com/netdata/netdata/pull/18826) ([netdatabot](https://github.com/netdatabot))
+- Common O/S Caching Layer for users and groups [\#18825](https://github.com/netdata/netdata/pull/18825) ([ktsaou](https://github.com/ktsaou))
+- More windows metrics [\#18824](https://github.com/netdata/netdata/pull/18824) ([ktsaou](https://github.com/ktsaou))
+- fix compilation on windows [\#18823](https://github.com/netdata/netdata/pull/18823) ([ktsaou](https://github.com/ktsaou))
+- numa basic meminfo [\#18822](https://github.com/netdata/netdata/pull/18822) ([ktsaou](https://github.com/ktsaou))
+- fixes last PR merge [\#18821](https://github.com/netdata/netdata/pull/18821) ([ktsaou](https://github.com/ktsaou))
+- optimizations for servers with vast amounts of sockets [\#18820](https://github.com/netdata/netdata/pull/18820) ([ktsaou](https://github.com/ktsaou))
+- claiming should wait for node id and status ONLINE only [\#18816](https://github.com/netdata/netdata/pull/18816) ([ktsaou](https://github.com/ktsaou))
+- fix\(go.d/vernemq\)!: support prometheus namespace added in v2.0 [\#18815](https://github.com/netdata/netdata/pull/18815) ([ilyam8](https://github.com/ilyam8))
+- Comment out dictionary with hashtable code for now [\#18814](https://github.com/netdata/netdata/pull/18814) ([stelfrag](https://github.com/stelfrag))
+- Fix variable scope to prevent invalid memory access [\#18813](https://github.com/netdata/netdata/pull/18813) ([stelfrag](https://github.com/stelfrag))
+- fix\(proc/proc\_net\_dev\): delay collecting all virtual interfaces [\#18812](https://github.com/netdata/netdata/pull/18812) ([ilyam8](https://github.com/ilyam8))
+- Revert "Fix atomic builtins test that currently fails for llvm+compiler\_rt when gcc is not present" [\#18811](https://github.com/netdata/netdata/pull/18811) ([stelfrag](https://github.com/stelfrag))
+- Windows storage metrics [\#18810](https://github.com/netdata/netdata/pull/18810) ([ktsaou](https://github.com/ktsaou))
+- aesthetic changes in the code [\#18808](https://github.com/netdata/netdata/pull/18808) ([ktsaou](https://github.com/ktsaou))
+- allow local-listeners to associate container sockets with pids [\#18807](https://github.com/netdata/netdata/pull/18807) ([ktsaou](https://github.com/ktsaou))
+- fix\(go.d/sensors\): ignore 'unknown' values [\#18806](https://github.com/netdata/netdata/pull/18806) ([ilyam8](https://github.com/ilyam8))
+- Calculate currently collected metrics [\#18803](https://github.com/netdata/netdata/pull/18803) ([stelfrag](https://github.com/stelfrag))
+- feat\(apps.plugin\): add vernemq to apps\_groups.conf [\#18802](https://github.com/netdata/netdata/pull/18802) ([ilyam8](https://github.com/ilyam8))
+- Regenerate integrations.js [\#18801](https://github.com/netdata/netdata/pull/18801) ([netdatabot](https://github.com/netdatabot))
+- bugfix for logs integrations [\#18800](https://github.com/netdata/netdata/pull/18800) ([Ancairon](https://github.com/Ancairon))
+- docs: fix grammar in readme [\#18799](https://github.com/netdata/netdata/pull/18799) ([ilyam8](https://github.com/ilyam8))
+- local-listeners improvements [\#18798](https://github.com/netdata/netdata/pull/18798) ([ktsaou](https://github.com/ktsaou))
+- Remove macOS 12 from CI, and add macOS 15. [\#18797](https://github.com/netdata/netdata/pull/18797) ([Ferroin](https://github.com/Ferroin))
+- Windows fixes \(chart labels and warnings\) [\#18796](https://github.com/netdata/netdata/pull/18796) ([ktsaou](https://github.com/ktsaou))
+- Schedule a node state update after context load [\#18795](https://github.com/netdata/netdata/pull/18795) ([stelfrag](https://github.com/stelfrag))
+- Regenerate integrations.js [\#18794](https://github.com/netdata/netdata/pull/18794) ([netdatabot](https://github.com/netdatabot))
+- Add ref to dyncfg [\#18793](https://github.com/netdata/netdata/pull/18793) ([Ancairon](https://github.com/Ancairon))
+- systemd-journal; support querying archived files [\#18792](https://github.com/netdata/netdata/pull/18792) ([ktsaou](https://github.com/ktsaou))
+- Ιmplementation to add logs integrations [\#18791](https://github.com/netdata/netdata/pull/18791) ([Ancairon](https://github.com/Ancairon))
+- Do not load/save context data in RAM mode [\#18790](https://github.com/netdata/netdata/pull/18790) ([stelfrag](https://github.com/stelfrag))
+- Fix broken claiming via kickstart on some systems. [\#18789](https://github.com/netdata/netdata/pull/18789) ([Ferroin](https://github.com/Ferroin))
+- Fix atomic builtins test that currently fails for llvm+compiler\_rt when gcc is not present [\#18788](https://github.com/netdata/netdata/pull/18788) ([StormBytePP](https://github.com/StormBytePP))
+- fix\(netdata-updater.sh\): ensure `--non-interactive` flag is passed during self-update [\#18786](https://github.com/netdata/netdata/pull/18786) ([ilyam8](https://github.com/ilyam8))
+- Windows Network Interfaces Charts and Alerts [\#18785](https://github.com/netdata/netdata/pull/18785) ([ktsaou](https://github.com/ktsaou))
+- Document ML enabled `auto` [\#18784](https://github.com/netdata/netdata/pull/18784) ([stelfrag](https://github.com/stelfrag))
+- Bump github.com/redis/go-redis/v9 from 9.6.1 to 9.6.2 in /src/go [\#18783](https://github.com/netdata/netdata/pull/18783) ([dependabot[bot]](https://github.com/apps/dependabot))
+- Update README.md, fix a typo [\#18781](https://github.com/netdata/netdata/pull/18781) ([BobConanDev](https://github.com/BobConanDev))
+- fix\(go.d/apcupsd\): fix ups\_load value divided by 100 [\#18780](https://github.com/netdata/netdata/pull/18780) ([ilyam8](https://github.com/ilyam8))
+- unify claiming response json [\#18777](https://github.com/netdata/netdata/pull/18777) ([ktsaou](https://github.com/ktsaou))
+- fix\(go.d/sd/netlisteners\): fix exec deadline exceeded check [\#18774](https://github.com/netdata/netdata/pull/18774) ([ilyam8](https://github.com/ilyam8))
+- Sqlite upgrade to version 3.46.1 [\#18772](https://github.com/netdata/netdata/pull/18772) ([stelfrag](https://github.com/stelfrag))
+- Regenerate integrations.js [\#18771](https://github.com/netdata/netdata/pull/18771) ([netdatabot](https://github.com/netdatabot))
+- Bump github.com/bmatcuk/doublestar/v4 from 4.6.1 to 4.7.1 in /src/go [\#18768](https://github.com/netdata/netdata/pull/18768) ([dependabot[bot]](https://github.com/apps/dependabot))
+- Bump github.com/sijms/go-ora/v2 from 2.8.20 to 2.8.22 in /src/go [\#18767](https://github.com/netdata/netdata/pull/18767) ([dependabot[bot]](https://github.com/apps/dependabot))
+- Bump github.com/vmware/govmomi from 0.43.0 to 0.44.1 in /src/go [\#18766](https://github.com/netdata/netdata/pull/18766) ([dependabot[bot]](https://github.com/apps/dependabot))
+- SPAWN SERVER: close all open fds on callback [\#18764](https://github.com/netdata/netdata/pull/18764) ([ktsaou](https://github.com/ktsaou))
+- Adjust option \(Windows claim\) [\#18763](https://github.com/netdata/netdata/pull/18763) ([thiagoftsm](https://github.com/thiagoftsm))
+- NetFramework \(Part I\) [\#18762](https://github.com/netdata/netdata/pull/18762) ([thiagoftsm](https://github.com/thiagoftsm))
+- Expand ml enabled option [\#18761](https://github.com/netdata/netdata/pull/18761) ([stelfrag](https://github.com/stelfrag))
+- Fix storing of repeat field [\#18760](https://github.com/netdata/netdata/pull/18760) ([stelfrag](https://github.com/stelfrag))
+- local-listeners without libmnl [\#18759](https://github.com/netdata/netdata/pull/18759) ([ktsaou](https://github.com/ktsaou))
+- fix\(proc.plugin/zfs\): fix arcstats.pm [\#18758](https://github.com/netdata/netdata/pull/18758) ([ilyam8](https://github.com/ilyam8))
+- fix\(go.d/sd/net\_listeners\): exit if local-listeners constantly times out [\#18757](https://github.com/netdata/netdata/pull/18757) ([ilyam8](https://github.com/ilyam8))
+- Regenerate integrations.js [\#18756](https://github.com/netdata/netdata/pull/18756) ([netdatabot](https://github.com/netdatabot))
+- Update metadata.yaml [\#18755](https://github.com/netdata/netdata/pull/18755) ([Ancairon](https://github.com/Ancairon))
+- Remove the overview section from cloud notif. integrations [\#18754](https://github.com/netdata/netdata/pull/18754) ([Ancairon](https://github.com/Ancairon))
+- Add Ubuntu 24.10 and Fedora 41 to CI. [\#18753](https://github.com/netdata/netdata/pull/18753) ([Ferroin](https://github.com/Ferroin))
+- Simplify sentence on cloud notification integrations [\#18750](https://github.com/netdata/netdata/pull/18750) ([Ancairon](https://github.com/Ancairon))
+- Regenerate integrations.js [\#18749](https://github.com/netdata/netdata/pull/18749) ([netdatabot](https://github.com/netdatabot))
+- fix\(freebsd.plugin\): fix sysctl arcstats.p fails on FreeBSD 14 [\#18748](https://github.com/netdata/netdata/pull/18748) ([ilyam8](https://github.com/ilyam8))
+- fix\(python.d.plugin\): fix plugin exit if no python found [\#18747](https://github.com/netdata/netdata/pull/18747) ([ilyam8](https://github.com/ilyam8))
+- Fix crash on agent initialization [\#18746](https://github.com/netdata/netdata/pull/18746) ([stelfrag](https://github.com/stelfrag))
+- Fix issues with Cloud Notification Integrations metadata [\#18745](https://github.com/netdata/netdata/pull/18745) ([Ancairon](https://github.com/Ancairon))
+- fix\(apps.plugin\): fix debug msg spam on macOS/freeBSD [\#18743](https://github.com/netdata/netdata/pull/18743) ([ilyam8](https://github.com/ilyam8))
+- docs\(apps.plugin\): fix prefix/suffix pattern example [\#18742](https://github.com/netdata/netdata/pull/18742) ([ilyam8](https://github.com/ilyam8))
+- feat\(go.d/nvme\): add model\_number label [\#18741](https://github.com/netdata/netdata/pull/18741) ([ilyam8](https://github.com/ilyam8))
+- sanitizers should not remove trailing underscores [\#18738](https://github.com/netdata/netdata/pull/18738) ([ktsaou](https://github.com/ktsaou))
+- Remove CR \(windows.plugin\) [\#18737](https://github.com/netdata/netdata/pull/18737) ([thiagoftsm](https://github.com/thiagoftsm))
+- Add `ilert` cloud notification integration [\#18736](https://github.com/netdata/netdata/pull/18736) ([car12o](https://github.com/car12o))
+- fix\(go.d/sensors\): fix parsing power accuracy [\#18735](https://github.com/netdata/netdata/pull/18735) ([ilyam8](https://github.com/ilyam8))
+- apps.plugin; allow parents to identify the children [\#18734](https://github.com/netdata/netdata/pull/18734) ([ktsaou](https://github.com/ktsaou))
+- Windows deploy metadata [\#18733](https://github.com/netdata/netdata/pull/18733) ([Ancairon](https://github.com/Ancairon))
+- \[storcli\] Support for controller ROC temperature. [\#18732](https://github.com/netdata/netdata/pull/18732) ([eatnumber1](https://github.com/eatnumber1))
+- systemd-cat-native negative timeout [\#18729](https://github.com/netdata/netdata/pull/18729) ([ktsaou](https://github.com/ktsaou))
+- fix\(perf.plugin\): disable if all events disabled during init [\#18728](https://github.com/netdata/netdata/pull/18728) ([ilyam8](https://github.com/ilyam8))
+- apps.plugin: print also the original comm [\#18727](https://github.com/netdata/netdata/pull/18727) ([ktsaou](https://github.com/ktsaou))
+- Fix handling of workflow artifacts. [\#18726](https://github.com/netdata/netdata/pull/18726) ([Ferroin](https://github.com/Ferroin))
+- reset the log sources to apply user selection [\#18725](https://github.com/netdata/netdata/pull/18725) ([ktsaou](https://github.com/ktsaou))
+- fix logs POST query payload parsing [\#18722](https://github.com/netdata/netdata/pull/18722) ([ktsaou](https://github.com/ktsaou))
+- fix\(go.d/portcheck\): stop checking UDP ports on ICMP listen error [\#18721](https://github.com/netdata/netdata/pull/18721) ([ilyam8](https://github.com/ilyam8))
+- Regenerate integrations.js [\#18720](https://github.com/netdata/netdata/pull/18720) ([netdatabot](https://github.com/netdatabot))
+- static install: bump openssl and curl to latest stable versions [\#18719](https://github.com/netdata/netdata/pull/18719) ([ilyam8](https://github.com/ilyam8))
+- go.d: use lib function to check if stderr connected to journal [\#18718](https://github.com/netdata/netdata/pull/18718) ([ilyam8](https://github.com/ilyam8))
+- Pass correct GOOS and GOARCH on to package builders in CI. [\#18717](https://github.com/netdata/netdata/pull/18717) ([Ferroin](https://github.com/Ferroin))
+- Regenerate integrations.js [\#18715](https://github.com/netdata/netdata/pull/18715) ([netdatabot](https://github.com/netdatabot))
+- Regenerate integrations.js [\#18714](https://github.com/netdata/netdata/pull/18714) ([netdatabot](https://github.com/netdatabot))
+- Add link to meta section on integrations template [\#18713](https://github.com/netdata/netdata/pull/18713) ([Ancairon](https://github.com/Ancairon))
+- Delay child disconnect update [\#18712](https://github.com/netdata/netdata/pull/18712) ([stelfrag](https://github.com/stelfrag))
+- Windows installer \(Change descriptions add helping\) [\#18711](https://github.com/netdata/netdata/pull/18711) ([thiagoftsm](https://github.com/thiagoftsm))
+- add instructions to configure SCIM integration in Okta [\#18710](https://github.com/netdata/netdata/pull/18710) ([juacker](https://github.com/juacker))
+- fix wrong config file name in go.d/oracledb meta [\#18709](https://github.com/netdata/netdata/pull/18709) ([ilyam8](https://github.com/ilyam8))
+- Regenerate integrations.js [\#18708](https://github.com/netdata/netdata/pull/18708) ([netdatabot](https://github.com/netdatabot))
+- feat\(go.d/sensors\): add a config option to update/add sensor label value [\#18707](https://github.com/netdata/netdata/pull/18707) ([ilyam8](https://github.com/ilyam8))
+- improve apps.plugin readme [\#18705](https://github.com/netdata/netdata/pull/18705) ([ilyam8](https://github.com/ilyam8))
+- Update windows documentation [\#18703](https://github.com/netdata/netdata/pull/18703) ([Ancairon](https://github.com/Ancairon))
+- Detect when swap is disabled when agent is running [\#18702](https://github.com/netdata/netdata/pull/18702) ([stelfrag](https://github.com/stelfrag))
+- Bump golang.org/x/net from 0.29.0 to 0.30.0 in /src/go [\#18701](https://github.com/netdata/netdata/pull/18701) ([dependabot[bot]](https://github.com/apps/dependabot))
+- Load chart labels on demand [\#18699](https://github.com/netdata/netdata/pull/18699) ([stelfrag](https://github.com/stelfrag))
+- fix system-info disk space in LXC [\#18696](https://github.com/netdata/netdata/pull/18696) ([ilyam8](https://github.com/ilyam8))
+- fix ram usage calculation in LXC [\#18695](https://github.com/netdata/netdata/pull/18695) ([ilyam8](https://github.com/ilyam8))
+- cgroups.plugin: call `setresuid` before spawn server init [\#18694](https://github.com/netdata/netdata/pull/18694) ([ilyam8](https://github.com/ilyam8))
+- Regenerate integrations.js [\#18693](https://github.com/netdata/netdata/pull/18693) ([netdatabot](https://github.com/netdatabot))
+- go.d/nvidia\_smi: use configured "timeout" in loop mode [\#18692](https://github.com/netdata/netdata/pull/18692) ([ilyam8](https://github.com/ilyam8))
+- fix\(cgroups.plugin\): handle containers no env vars [\#18691](https://github.com/netdata/netdata/pull/18691) ([daniel-sampliner](https://github.com/daniel-sampliner))
+- MSSQL Metrics \(Part II\). [\#18689](https://github.com/netdata/netdata/pull/18689) ([thiagoftsm](https://github.com/thiagoftsm))
+- Log to windows [\#18688](https://github.com/netdata/netdata/pull/18688) ([ktsaou](https://github.com/ktsaou))
+- fix sanitization issues [\#18687](https://github.com/netdata/netdata/pull/18687) ([ktsaou](https://github.com/ktsaou))
+- Regenerate integrations.js [\#18686](https://github.com/netdata/netdata/pull/18686) ([netdatabot](https://github.com/netdatabot))
+- go.d/chrony: collect serverstats using chronyc [\#18685](https://github.com/netdata/netdata/pull/18685) ([ilyam8](https://github.com/ilyam8))
+- UTF8 support for chart ids, names and other metadata [\#18684](https://github.com/netdata/netdata/pull/18684) ([ktsaou](https://github.com/ktsaou))
+- Send node info update after ACLK connection timeout [\#18683](https://github.com/netdata/netdata/pull/18683) ([stelfrag](https://github.com/stelfrag))
+- Regenerate integrations.js [\#18682](https://github.com/netdata/netdata/pull/18682) ([netdatabot](https://github.com/netdatabot))
+- Bump github.com/tidwall/gjson from 1.17.3 to 1.18.0 in /src/go [\#18681](https://github.com/netdata/netdata/pull/18681) ([dependabot[bot]](https://github.com/apps/dependabot))
+- Bump github.com/prometheus/common from 0.59.1 to 0.60.0 in /src/go [\#18680](https://github.com/netdata/netdata/pull/18680) ([dependabot[bot]](https://github.com/apps/dependabot))
+- Bump go.mongodb.org/mongo-driver from 1.17.0 to 1.17.1 in /src/go [\#18679](https://github.com/netdata/netdata/pull/18679) ([dependabot[bot]](https://github.com/apps/dependabot))
+- go.d downgrade go-ora to v2.8.20 [\#18677](https://github.com/netdata/netdata/pull/18677) ([ilyam8](https://github.com/ilyam8))
+- Docs fixes [\#18676](https://github.com/netdata/netdata/pull/18676) ([Ancairon](https://github.com/Ancairon))
+- cgroup-network now uses its own spawn server [\#18674](https://github.com/netdata/netdata/pull/18674) ([ktsaou](https://github.com/ktsaou))
+- Apps plugin improvements2 [\#18673](https://github.com/netdata/netdata/pull/18673) ([ktsaou](https://github.com/ktsaou))
+- Regenerate integrations.js [\#18672](https://github.com/netdata/netdata/pull/18672) ([netdatabot](https://github.com/netdatabot))
+- Regenerate integrations.js [\#18671](https://github.com/netdata/netdata/pull/18671) ([netdatabot](https://github.com/netdatabot))
+- src dir docs pass [\#18670](https://github.com/netdata/netdata/pull/18670) ([Ancairon](https://github.com/Ancairon))
+- Remove section in python plugin readme [\#18669](https://github.com/netdata/netdata/pull/18669) ([Ancairon](https://github.com/Ancairon))
+- Properly set start/shutdown times to parent/child [\#18668](https://github.com/netdata/netdata/pull/18668) ([stelfrag](https://github.com/stelfrag))
+- Regenerate integrations.js [\#18667](https://github.com/netdata/netdata/pull/18667) ([netdatabot](https://github.com/netdatabot))
+- apps\_groups.conf: add oracledb [\#18666](https://github.com/netdata/netdata/pull/18666) ([ilyam8](https://github.com/ilyam8))
+- Docs lint on `packaging/` dir [\#18665](https://github.com/netdata/netdata/pull/18665) ([Ancairon](https://github.com/Ancairon))
+- Add FAQ to SCIM integration doc [\#18664](https://github.com/netdata/netdata/pull/18664) ([juacker](https://github.com/juacker))
+- Fix win apps uptime [\#18662](https://github.com/netdata/netdata/pull/18662) ([ktsaou](https://github.com/ktsaou))
+- Embed CPU architecture info in Windows installer filename. [\#18661](https://github.com/netdata/netdata/pull/18661) ([Ferroin](https://github.com/Ferroin))
+- Docs directory lint documentation and fix issues [\#18660](https://github.com/netdata/netdata/pull/18660) ([Ancairon](https://github.com/Ancairon))
+- bump go toolchain v1.22.8 [\#18659](https://github.com/netdata/netdata/pull/18659) ([ilyam8](https://github.com/ilyam8))
+- go.d sd fix sprig funcmap [\#18658](https://github.com/netdata/netdata/pull/18658) ([ilyam8](https://github.com/ilyam8))
+- Adjust content api/v1/info \(Windows\) [\#18656](https://github.com/netdata/netdata/pull/18656) ([thiagoftsm](https://github.com/thiagoftsm))
+- add go.d/oracle [\#18654](https://github.com/netdata/netdata/pull/18654) ([ilyam8](https://github.com/ilyam8))
+- Handle mqtt ping timeouts [\#18653](https://github.com/netdata/netdata/pull/18653) ([stelfrag](https://github.com/stelfrag))
+- apps.plugin improvements [\#18652](https://github.com/netdata/netdata/pull/18652) ([ktsaou](https://github.com/ktsaou))
+- remove python implementation of oracledb [\#18651](https://github.com/netdata/netdata/pull/18651) ([Ancairon](https://github.com/Ancairon))
+- go.d remove duplicate chart check in tests [\#18650](https://github.com/netdata/netdata/pull/18650) ([ilyam8](https://github.com/ilyam8))
+- Improve windows installer [\#18649](https://github.com/netdata/netdata/pull/18649) ([thiagoftsm](https://github.com/thiagoftsm))
+- fixed freebsd cpu calculation [\#18648](https://github.com/netdata/netdata/pull/18648) ([ktsaou](https://github.com/ktsaou))
+- Regenerate integrations.js [\#18647](https://github.com/netdata/netdata/pull/18647) ([netdatabot](https://github.com/netdatabot))
+- Use temporary file for commit date check. [\#18646](https://github.com/netdata/netdata/pull/18646) ([Ferroin](https://github.com/Ferroin))
+- Reorganize top-level headers in libnetdata. [\#18643](https://github.com/netdata/netdata/pull/18643) ([vkalintiris](https://github.com/vkalintiris))
+- New wording about edit-config script in docs [\#18639](https://github.com/netdata/netdata/pull/18639) ([Ancairon](https://github.com/Ancairon))
+- Update file names. [\#18638](https://github.com/netdata/netdata/pull/18638) ([vkalintiris](https://github.com/vkalintiris))
+- Move plugins.d directory outside of collectors [\#18637](https://github.com/netdata/netdata/pull/18637) ([vkalintiris](https://github.com/vkalintiris))
+- go.d/smartctl: fix exit status check in scan [\#18635](https://github.com/netdata/netdata/pull/18635) ([ilyam8](https://github.com/ilyam8))
+- go.d pkg/socket: keep only one timeout option [\#18633](https://github.com/netdata/netdata/pull/18633) ([ilyam8](https://github.com/ilyam8))
+- Log agent start / stop timing events [\#18632](https://github.com/netdata/netdata/pull/18632) ([stelfrag](https://github.com/stelfrag))
+- Regenerate integrations.js [\#18630](https://github.com/netdata/netdata/pull/18630) ([netdatabot](https://github.com/netdatabot))
+- go.d/postgres: fix checkpoints query for postgres 17 [\#18629](https://github.com/netdata/netdata/pull/18629) ([ilyam8](https://github.com/ilyam8))
+- go.d/ceph: fix leftovers after \#18582 [\#18628](https://github.com/netdata/netdata/pull/18628) ([ilyam8](https://github.com/ilyam8))
+- Regenerate integrations.js [\#18627](https://github.com/netdata/netdata/pull/18627) ([netdatabot](https://github.com/netdatabot))
+- Remove Python OpenLDAP implementation [\#18626](https://github.com/netdata/netdata/pull/18626) ([Ancairon](https://github.com/Ancairon))
+- Port the OpenLDAP collector from Python to Go [\#18625](https://github.com/netdata/netdata/pull/18625) ([Ancairon](https://github.com/Ancairon))
+- Change default pages per extent [\#18623](https://github.com/netdata/netdata/pull/18623) ([stelfrag](https://github.com/stelfrag))
+- Misc mqtt related code cleanup [\#18622](https://github.com/netdata/netdata/pull/18622) ([stelfrag](https://github.com/stelfrag))
+- Revert "Add ceph commands to ndsudo" [\#18620](https://github.com/netdata/netdata/pull/18620) ([ilyam8](https://github.com/ilyam8))
+- go.d/hddtemp: connect and read [\#18619](https://github.com/netdata/netdata/pull/18619) ([ilyam8](https://github.com/ilyam8))
+- go.d/uwsgi: don't write just connect and read [\#18618](https://github.com/netdata/netdata/pull/18618) ([ilyam8](https://github.com/ilyam8))
+- Windows Installer \(Silent mode\) [\#18613](https://github.com/netdata/netdata/pull/18613) ([thiagoftsm](https://github.com/thiagoftsm))
+- POST Functions [\#18611](https://github.com/netdata/netdata/pull/18611) ([ktsaou](https://github.com/ktsaou))
+- Correctly include Windows installer in release creation. [\#18609](https://github.com/netdata/netdata/pull/18609) ([Ferroin](https://github.com/Ferroin))
+- feat: HW req for onprem installation. [\#18608](https://github.com/netdata/netdata/pull/18608) ([M4itee](https://github.com/M4itee))
- WEB SERVER: retry sending data when errno is EAGAIN [\#18607](https://github.com/netdata/netdata/pull/18607) ([ktsaou](https://github.com/ktsaou))
- Publish Windows installers on nightly builds. [\#18603](https://github.com/netdata/netdata/pull/18603) ([Ferroin](https://github.com/Ferroin))
- Bump github.com/docker/docker from 27.3.0+incompatible to 27.3.1+incompatible in /src/go [\#18600](https://github.com/netdata/netdata/pull/18600) ([dependabot[bot]](https://github.com/apps/dependabot))
+- Windows Plugin metadata [\#18599](https://github.com/netdata/netdata/pull/18599) ([thiagoftsm](https://github.com/thiagoftsm))
- Regenerate integrations.js [\#18598](https://github.com/netdata/netdata/pull/18598) ([netdatabot](https://github.com/netdatabot))
- go.d/sensors fix meta [\#18597](https://github.com/netdata/netdata/pull/18597) ([ilyam8](https://github.com/ilyam8))
- go.d/sensors update meta [\#18595](https://github.com/netdata/netdata/pull/18595) ([ilyam8](https://github.com/ilyam8))
+- apps.plugin for windows [\#18594](https://github.com/netdata/netdata/pull/18594) ([ktsaou](https://github.com/ktsaou))
- Regenerate integrations.js [\#18592](https://github.com/netdata/netdata/pull/18592) ([netdatabot](https://github.com/netdatabot))
+- Add MSSQL metrics \(Part I\). [\#18591](https://github.com/netdata/netdata/pull/18591) ([thiagoftsm](https://github.com/thiagoftsm))
- Add DLLs to CmakeLists.txt [\#18590](https://github.com/netdata/netdata/pull/18590) ([thiagoftsm](https://github.com/thiagoftsm))
- Bump go.mongodb.org/mongo-driver from 1.16.1 to 1.17.0 in /src/go [\#18589](https://github.com/netdata/netdata/pull/18589) ([dependabot[bot]](https://github.com/apps/dependabot))
- Bump github.com/docker/docker from 27.2.1+incompatible to 27.3.0+incompatible in /src/go [\#18588](https://github.com/netdata/netdata/pull/18588) ([dependabot[bot]](https://github.com/apps/dependabot))
- Update kickstart.sh [\#18587](https://github.com/netdata/netdata/pull/18587) ([eya46](https://github.com/eya46))
+- Remove python ceph collector implementation [\#18584](https://github.com/netdata/netdata/pull/18584) ([Ancairon](https://github.com/Ancairon))
- Add ceph commands to ndsudo [\#18583](https://github.com/netdata/netdata/pull/18583) ([Ancairon](https://github.com/Ancairon))
+- Port Ceph collector to Go [\#18582](https://github.com/netdata/netdata/pull/18582) ([Ancairon](https://github.com/Ancairon))
- go.d/sensors refactor [\#18581](https://github.com/netdata/netdata/pull/18581) ([ilyam8](https://github.com/ilyam8))
- go.d move packages [\#18580](https://github.com/netdata/netdata/pull/18580) ([ilyam8](https://github.com/ilyam8))
- WEIGHTS: use node\_id when available, otherwise host\_id [\#18579](https://github.com/netdata/netdata/pull/18579) ([ktsaou](https://github.com/ktsaou))
@@ -31,6 +224,8 @@
- go.d/portcheck: add UDP support [\#18569](https://github.com/netdata/netdata/pull/18569) ([ilyam8](https://github.com/ilyam8))
- Reduce connection timeout and fallback to IPV4 for ACLK connections [\#18568](https://github.com/netdata/netdata/pull/18568) ([stelfrag](https://github.com/stelfrag))
- Windows Events Log improvements 4 [\#18567](https://github.com/netdata/netdata/pull/18567) ([ktsaou](https://github.com/ktsaou))
+- windows.plugin \(IIS\) [\#18566](https://github.com/netdata/netdata/pull/18566) ([thiagoftsm](https://github.com/thiagoftsm))
+- Add check for 64bit builtin atomics [\#18565](https://github.com/netdata/netdata/pull/18565) ([kraj](https://github.com/kraj))
- Windows Events Log Explorer improvements 3 [\#18564](https://github.com/netdata/netdata/pull/18564) ([ktsaou](https://github.com/ktsaou))
- Windows Events Improvements 2 [\#18563](https://github.com/netdata/netdata/pull/18563) ([ktsaou](https://github.com/ktsaou))
- add cpu model to host labels [\#18562](https://github.com/netdata/netdata/pull/18562) ([ilyam8](https://github.com/ilyam8))
@@ -128,6 +323,7 @@
- fix receiver deadlock [\#18440](https://github.com/netdata/netdata/pull/18440) ([ktsaou](https://github.com/ktsaou))
- fix charts.d/sensors leftovers [\#18439](https://github.com/netdata/netdata/pull/18439) ([ilyam8](https://github.com/ilyam8))
- remove deadlock from sender [\#18438](https://github.com/netdata/netdata/pull/18438) ([ktsaou](https://github.com/ktsaou))
+- Un-vendor proprietary dashboard code. [\#18437](https://github.com/netdata/netdata/pull/18437) ([Ferroin](https://github.com/Ferroin))
- go.d remove duplicates in testing [\#18435](https://github.com/netdata/netdata/pull/18435) ([ilyam8](https://github.com/ilyam8))
- Improve agent shutdown time [\#18434](https://github.com/netdata/netdata/pull/18434) ([stelfrag](https://github.com/stelfrag))
- Regenerate integrations.js [\#18432](https://github.com/netdata/netdata/pull/18432) ([netdatabot](https://github.com/netdatabot))
@@ -158,7 +354,18 @@
- go.d boinc [\#18398](https://github.com/netdata/netdata/pull/18398) ([ilyam8](https://github.com/ilyam8))
- remove python.d/boinc [\#18397](https://github.com/netdata/netdata/pull/18397) ([ilyam8](https://github.com/ilyam8))
- fix warnings in Dockerfile [\#18395](https://github.com/netdata/netdata/pull/18395) ([NicolasCARPi](https://github.com/NicolasCARPi))
-- Use existing ACLK event loop for cloud queries [\#18218](https://github.com/netdata/netdata/pull/18218) ([stelfrag](https://github.com/stelfrag))
+
+## [v1.47.4](https://github.com/netdata/netdata/tree/v1.47.4) (2024-10-09)
+
+[Full Changelog](https://github.com/netdata/netdata/compare/v1.47.3...v1.47.4)
+
+## [v1.47.3](https://github.com/netdata/netdata/tree/v1.47.3) (2024-10-02)
+
+[Full Changelog](https://github.com/netdata/netdata/compare/v1.47.2...v1.47.3)
+
+## [v1.47.2](https://github.com/netdata/netdata/tree/v1.47.2) (2024-09-24)
+
+[Full Changelog](https://github.com/netdata/netdata/compare/v1.47.1...v1.47.2)
## [v1.47.1](https://github.com/netdata/netdata/tree/v1.47.1) (2024-09-10)
@@ -168,10 +375,6 @@
[Full Changelog](https://github.com/netdata/netdata/compare/v1.47.0...v1.99.0)
-**Merged pull requests:**
-
-- WIP - Netdata v2 [\#18125](https://github.com/netdata/netdata/pull/18125) ([ktsaou](https://github.com/ktsaou))
-
## [v1.47.0](https://github.com/netdata/netdata/tree/v1.47.0) (2024-08-22)
[Full Changelog](https://github.com/netdata/netdata/compare/v1.46.3...v1.47.0)
@@ -238,186 +441,6 @@
- go.d nvidia\_smi: add loop mode [\#18313](https://github.com/netdata/netdata/pull/18313) ([ilyam8](https://github.com/ilyam8))
- Regenerate integrations.js [\#18312](https://github.com/netdata/netdata/pull/18312) ([netdatabot](https://github.com/netdatabot))
- go.d nvidia\_smi remove "csv" mode [\#18311](https://github.com/netdata/netdata/pull/18311) ([ilyam8](https://github.com/ilyam8))
-- Regenerate integrations.js [\#18308](https://github.com/netdata/netdata/pull/18308) ([netdatabot](https://github.com/netdatabot))
-- add go.d/exim [\#18306](https://github.com/netdata/netdata/pull/18306) ([ilyam8](https://github.com/ilyam8))
-- remove python.d/exim [\#18305](https://github.com/netdata/netdata/pull/18305) ([ilyam8](https://github.com/ilyam8))
-- add exim to ndsudo [\#18304](https://github.com/netdata/netdata/pull/18304) ([ilyam8](https://github.com/ilyam8))
-- Regenerate integrations.js [\#18303](https://github.com/netdata/netdata/pull/18303) ([netdatabot](https://github.com/netdatabot))
-- add go.d/nsd [\#18302](https://github.com/netdata/netdata/pull/18302) ([ilyam8](https://github.com/ilyam8))
-- add nsd-control to ndsudo [\#18301](https://github.com/netdata/netdata/pull/18301) ([ilyam8](https://github.com/ilyam8))
-- remove python.d/nsd [\#18300](https://github.com/netdata/netdata/pull/18300) ([ilyam8](https://github.com/ilyam8))
-- Regenerate integrations.js [\#18299](https://github.com/netdata/netdata/pull/18299) ([netdatabot](https://github.com/netdatabot))
-- go.d gearman fix meta [\#18298](https://github.com/netdata/netdata/pull/18298) ([ilyam8](https://github.com/ilyam8))
-- Handle GOROOT inside build system instead of outside. [\#18296](https://github.com/netdata/netdata/pull/18296) ([Ferroin](https://github.com/Ferroin))
-- add go.d/gearman [\#18294](https://github.com/netdata/netdata/pull/18294) ([ilyam8](https://github.com/ilyam8))
-- Use system certificate configuration for Yum/DNF repos. [\#18293](https://github.com/netdata/netdata/pull/18293) ([Ferroin](https://github.com/Ferroin))
-- Regenerate integrations.js [\#18292](https://github.com/netdata/netdata/pull/18292) ([netdatabot](https://github.com/netdatabot))
-- remove python.d/gearman [\#18291](https://github.com/netdata/netdata/pull/18291) ([ilyam8](https://github.com/ilyam8))
-- remove python.d/alarms [\#18290](https://github.com/netdata/netdata/pull/18290) ([ilyam8](https://github.com/ilyam8))
-- go.d rethinkdb fix cluster\_servers\_stats\_request [\#18289](https://github.com/netdata/netdata/pull/18289) ([ilyam8](https://github.com/ilyam8))
-- Bump github.com/gosnmp/gosnmp from 1.37.0 to 1.38.0 in /src/go [\#18287](https://github.com/netdata/netdata/pull/18287) ([dependabot[bot]](https://github.com/apps/dependabot))
-- Bump go.mongodb.org/mongo-driver from 1.16.0 to 1.16.1 in /src/go [\#18286](https://github.com/netdata/netdata/pull/18286) ([dependabot[bot]](https://github.com/apps/dependabot))
-- Bump golang.org/x/net from 0.27.0 to 0.28.0 in /src/go [\#18284](https://github.com/netdata/netdata/pull/18284) ([dependabot[bot]](https://github.com/apps/dependabot))
-- Regenerate integrations.js [\#18282](https://github.com/netdata/netdata/pull/18282) ([netdatabot](https://github.com/netdatabot))
-- Regenerate integrations.js [\#18280](https://github.com/netdata/netdata/pull/18280) ([netdatabot](https://github.com/netdatabot))
-- Remove python squid collector implementation [\#18279](https://github.com/netdata/netdata/pull/18279) ([Ancairon](https://github.com/Ancairon))
-- add go.d/rethinkdb [\#18278](https://github.com/netdata/netdata/pull/18278) ([ilyam8](https://github.com/ilyam8))
-- remove python.d/rethinkdb [\#18277](https://github.com/netdata/netdata/pull/18277) ([ilyam8](https://github.com/ilyam8))
-- Squid collector port to Go [\#18276](https://github.com/netdata/netdata/pull/18276) ([Ancairon](https://github.com/Ancairon))
-- set GOPROXY when building go.d.plugin [\#18275](https://github.com/netdata/netdata/pull/18275) ([ilyam8](https://github.com/ilyam8))
-- go.d snmp: adjust max repetitions automatically [\#18274](https://github.com/netdata/netdata/pull/18274) ([ilyam8](https://github.com/ilyam8))
-- go.d fix dimension id check [\#18272](https://github.com/netdata/netdata/pull/18272) ([ilyam8](https://github.com/ilyam8))
-- go.d smartctl: undo extra\_devices skip from \#18269 [\#18270](https://github.com/netdata/netdata/pull/18270) ([ilyam8](https://github.com/ilyam8))
-- go.d smartctl: improve checking scsi-sat in scan [\#18269](https://github.com/netdata/netdata/pull/18269) ([ilyam8](https://github.com/ilyam8))
-- Regenerate integrations.js [\#18268](https://github.com/netdata/netdata/pull/18268) ([netdatabot](https://github.com/netdatabot))
-- apps conf add beanstalkd [\#18267](https://github.com/netdata/netdata/pull/18267) ([ilyam8](https://github.com/ilyam8))
-- Fix CI issues in build workflow. [\#18266](https://github.com/netdata/netdata/pull/18266) ([Ferroin](https://github.com/Ferroin))
-- Add detailed reporting of failed checksums in kickstart script. [\#18265](https://github.com/netdata/netdata/pull/18265) ([Ferroin](https://github.com/Ferroin))
-- go.d beanstalk [\#18263](https://github.com/netdata/netdata/pull/18263) ([ilyam8](https://github.com/ilyam8))
-- Regenerate integrations.js [\#18262](https://github.com/netdata/netdata/pull/18262) ([netdatabot](https://github.com/netdatabot))
-- go.d x509check add not\_revoked dimension [\#18261](https://github.com/netdata/netdata/pull/18261) ([ilyam8](https://github.com/ilyam8))
-- remove python.d/beanstalk [\#18259](https://github.com/netdata/netdata/pull/18259) ([ilyam8](https://github.com/ilyam8))
-- Regenerate integrations.js [\#18258](https://github.com/netdata/netdata/pull/18258) ([netdatabot](https://github.com/netdatabot))
-- docs: improve "Settings on Microsoft Teams" description [\#18257](https://github.com/netdata/netdata/pull/18257) ([ilyam8](https://github.com/ilyam8))
-- docs: add a note that the min dbengine tier size is 256 MB [\#18256](https://github.com/netdata/netdata/pull/18256) ([ilyam8](https://github.com/ilyam8))
-- Update Installer Code \(Services\) [\#18253](https://github.com/netdata/netdata/pull/18253) ([thiagoftsm](https://github.com/thiagoftsm))
-- Don’t install netdata-updater code on Windows. [\#18251](https://github.com/netdata/netdata/pull/18251) ([Ferroin](https://github.com/Ferroin))
-- Add trigger to clean up chart labels and charts [\#18248](https://github.com/netdata/netdata/pull/18248) ([stelfrag](https://github.com/stelfrag))
-- Update README.md [\#18246](https://github.com/netdata/netdata/pull/18246) ([Steve8291](https://github.com/Steve8291))
-- Bump github.com/tidwall/gjson from 1.17.1 to 1.17.3 in /src/go [\#18244](https://github.com/netdata/netdata/pull/18244) ([dependabot[bot]](https://github.com/apps/dependabot))
-- Fix OS detection messages in CMake. [\#18243](https://github.com/netdata/netdata/pull/18243) ([Ferroin](https://github.com/Ferroin))
-- Clean up unneeded depencdencies. [\#18242](https://github.com/netdata/netdata/pull/18242) ([Ferroin](https://github.com/Ferroin))
-- Update node info payload [\#18240](https://github.com/netdata/netdata/pull/18240) ([stelfrag](https://github.com/stelfrag))
-- Bump github.com/prometheus-community/pro-bing from 0.4.0 to 0.4.1 in /src/go [\#18237](https://github.com/netdata/netdata/pull/18237) ([dependabot[bot]](https://github.com/apps/dependabot))
-- Bump github.com/vmware/govmomi from 0.38.0 to 0.39.0 in /src/go [\#18236](https://github.com/netdata/netdata/pull/18236) ([dependabot[bot]](https://github.com/apps/dependabot))
-- Bump github.com/gofrs/flock from 0.12.0 to 0.12.1 in /src/go [\#18235](https://github.com/netdata/netdata/pull/18235) ([dependabot[bot]](https://github.com/apps/dependabot))
-- Bump github.com/docker/docker from 27.0.3+incompatible to 27.1.1+incompatible in /src/go [\#18234](https://github.com/netdata/netdata/pull/18234) ([dependabot[bot]](https://github.com/apps/dependabot))
-- eBPF memory [\#18232](https://github.com/netdata/netdata/pull/18232) ([thiagoftsm](https://github.com/thiagoftsm))
-- Windows build fix [\#18231](https://github.com/netdata/netdata/pull/18231) ([Ferroin](https://github.com/Ferroin))
-- Default to release with debug symbols for Windows builds. [\#18230](https://github.com/netdata/netdata/pull/18230) ([Ferroin](https://github.com/Ferroin))
-- Fix up CMake feature handling for Windows. [\#18229](https://github.com/netdata/netdata/pull/18229) ([Ferroin](https://github.com/Ferroin))
-- Improve windows agent [\#18227](https://github.com/netdata/netdata/pull/18227) ([thiagoftsm](https://github.com/thiagoftsm))
-- Update libbpf \(1.45.0\) [\#18226](https://github.com/netdata/netdata/pull/18226) ([thiagoftsm](https://github.com/thiagoftsm))
-- Regenerate integrations.js [\#18225](https://github.com/netdata/netdata/pull/18225) ([netdatabot](https://github.com/netdatabot))
-- Update Cloud MSTeam documentation [\#18224](https://github.com/netdata/netdata/pull/18224) ([car12o](https://github.com/car12o))
-- Add code signing for Windows executables. [\#18222](https://github.com/netdata/netdata/pull/18222) ([Ferroin](https://github.com/Ferroin))
-- go.d fix netdata dir path on win under msys [\#18221](https://github.com/netdata/netdata/pull/18221) ([ilyam8](https://github.com/ilyam8))
-- Port Tomcat collector to Go [\#18220](https://github.com/netdata/netdata/pull/18220) ([Ancairon](https://github.com/Ancairon))
-- go.d drop using cancelreader [\#18219](https://github.com/netdata/netdata/pull/18219) ([ilyam8](https://github.com/ilyam8))
-- Support IPV6 when establishing MQTT connection to the cloud [\#18217](https://github.com/netdata/netdata/pull/18217) ([stelfrag](https://github.com/stelfrag))
-- Regenerate integrations.js [\#18216](https://github.com/netdata/netdata/pull/18216) ([netdatabot](https://github.com/netdatabot))
-- go.d chrony fix client read/write timeout [\#18215](https://github.com/netdata/netdata/pull/18215) ([ilyam8](https://github.com/ilyam8))
-- dont install test bash scripts by default [\#18214](https://github.com/netdata/netdata/pull/18214) ([ilyam8](https://github.com/ilyam8))
-- Regenerate integrations.js [\#18212](https://github.com/netdata/netdata/pull/18212) ([netdatabot](https://github.com/netdatabot))
-- go.d megacli: add bbu capacity degradation % [\#18211](https://github.com/netdata/netdata/pull/18211) ([ilyam8](https://github.com/ilyam8))
-- Port memcached collector to Go [\#18209](https://github.com/netdata/netdata/pull/18209) ([Ancairon](https://github.com/Ancairon))
-- Bump k8s.io/client-go from 0.30.2 to 0.30.3 in /src/go [\#18208](https://github.com/netdata/netdata/pull/18208) ([dependabot[bot]](https://github.com/apps/dependabot))
-- docs: simplify "Disk Requirements and Retention" [\#18205](https://github.com/netdata/netdata/pull/18205) ([ilyam8](https://github.com/ilyam8))
-- do not rely on the queued flag to queue a context [\#18198](https://github.com/netdata/netdata/pull/18198) ([ktsaou](https://github.com/ktsaou))
-- Do not include REMOVED status in the alert snapshot [\#18197](https://github.com/netdata/netdata/pull/18197) ([stelfrag](https://github.com/stelfrag))
-- remove fluent-bit submodule [\#18196](https://github.com/netdata/netdata/pull/18196) ([ilyam8](https://github.com/ilyam8))
-- go.d icecast single source response [\#18195](https://github.com/netdata/netdata/pull/18195) ([ilyam8](https://github.com/ilyam8))
-- Regenerate integrations.js [\#18193](https://github.com/netdata/netdata/pull/18193) ([netdatabot](https://github.com/netdatabot))
-- Skip building ndsudo when it’s not actually needed. [\#18191](https://github.com/netdata/netdata/pull/18191) ([Ferroin](https://github.com/Ferroin))
-- Port Icecast collector to Go [\#18190](https://github.com/netdata/netdata/pull/18190) ([Ancairon](https://github.com/Ancairon))
-- ndsudo setuid before looking for command [\#18189](https://github.com/netdata/netdata/pull/18189) ([ilyam8](https://github.com/ilyam8))
-- Add Widnows CI jobs. [\#18187](https://github.com/netdata/netdata/pull/18187) ([Ferroin](https://github.com/Ferroin))
-- Remove logs-management plugin. [\#18186](https://github.com/netdata/netdata/pull/18186) ([Ferroin](https://github.com/Ferroin))
-- Create release branches for major releases as well. [\#18184](https://github.com/netdata/netdata/pull/18184) ([Ferroin](https://github.com/Ferroin))
-- Regenerate integrations.js [\#18183](https://github.com/netdata/netdata/pull/18183) ([netdatabot](https://github.com/netdatabot))
-- docs: go.d/ap update data\_collection description [\#18182](https://github.com/netdata/netdata/pull/18182) ([ilyam8](https://github.com/ilyam8))
-- Regenerate integrations.js [\#18181](https://github.com/netdata/netdata/pull/18181) ([netdatabot](https://github.com/netdatabot))
-- go.d smarctl simplify scan open [\#18180](https://github.com/netdata/netdata/pull/18180) ([ilyam8](https://github.com/ilyam8))
-- Addition to postfix meta [\#18177](https://github.com/netdata/netdata/pull/18177) ([Ancairon](https://github.com/Ancairon))
-- Regenerate integrations.js [\#18176](https://github.com/netdata/netdata/pull/18176) ([netdatabot](https://github.com/netdatabot))
-- docs: add "install smartmontools" for Docker netdata [\#18175](https://github.com/netdata/netdata/pull/18175) ([ilyam8](https://github.com/ilyam8))
-- Regenerate integrations.js [\#18174](https://github.com/netdata/netdata/pull/18174) ([netdatabot](https://github.com/netdatabot))
-- add support for sending Telegram notifications to topics [\#18173](https://github.com/netdata/netdata/pull/18173) ([ilyam8](https://github.com/ilyam8))
-- Fix logic bug in platform EOL check code. [\#18172](https://github.com/netdata/netdata/pull/18172) ([Ferroin](https://github.com/Ferroin))
-- Fix issue in platform EOL check workflow. [\#18171](https://github.com/netdata/netdata/pull/18171) ([Ferroin](https://github.com/Ferroin))
-- Port AP collector to Go [\#18170](https://github.com/netdata/netdata/pull/18170) ([Ancairon](https://github.com/Ancairon))
-- Bump github.com/likexian/whois from 1.15.3 to 1.15.4 in /src/go [\#18169](https://github.com/netdata/netdata/pull/18169) ([dependabot[bot]](https://github.com/apps/dependabot))
-- Bump github.com/lmittmann/tint from 1.0.4 to 1.0.5 in /src/go [\#18167](https://github.com/netdata/netdata/pull/18167) ([dependabot[bot]](https://github.com/apps/dependabot))
-- Personalize installer and uninstaller Windows \(Control Panel\) [\#18147](https://github.com/netdata/netdata/pull/18147) ([thiagoftsm](https://github.com/thiagoftsm))
-- go.d smartctl: use scan-open when "no\_check\_power\_mode" is "never" [\#18146](https://github.com/netdata/netdata/pull/18146) ([ilyam8](https://github.com/ilyam8))
-- Regenerate integrations.js [\#18145](https://github.com/netdata/netdata/pull/18145) ([netdatabot](https://github.com/netdatabot))
-- go.d smartctl: do scan only once on startup if interval is 0 [\#18144](https://github.com/netdata/netdata/pull/18144) ([ilyam8](https://github.com/ilyam8))
-- ndsudo add smartctl scan-open [\#18143](https://github.com/netdata/netdata/pull/18143) ([ilyam8](https://github.com/ilyam8))
-- Regenerate integrations.js [\#18141](https://github.com/netdata/netdata/pull/18141) ([netdatabot](https://github.com/netdatabot))
-- go.d smartctl add "extra\_devices" option [\#18140](https://github.com/netdata/netdata/pull/18140) ([ilyam8](https://github.com/ilyam8))
-- Spawn server fixes 6 [\#18136](https://github.com/netdata/netdata/pull/18136) ([ktsaou](https://github.com/ktsaou))
-- Regenerate integrations.js [\#18135](https://github.com/netdata/netdata/pull/18135) ([netdatabot](https://github.com/netdatabot))
-- docs: go.d mysql: remove unix sockets from auto\_detection [\#18134](https://github.com/netdata/netdata/pull/18134) ([ilyam8](https://github.com/ilyam8))
-- go.d fix url path overwrite [\#18132](https://github.com/netdata/netdata/pull/18132) ([ilyam8](https://github.com/ilyam8))
-- Spawn server improvements 5 [\#18131](https://github.com/netdata/netdata/pull/18131) ([ktsaou](https://github.com/ktsaou))
-- Spawn server fixes No 4 [\#18127](https://github.com/netdata/netdata/pull/18127) ([ktsaou](https://github.com/ktsaou))
-- go.d filecheck fix dir existence chart label [\#18126](https://github.com/netdata/netdata/pull/18126) ([ilyam8](https://github.com/ilyam8))
-- Regenerate integrations.js [\#18124](https://github.com/netdata/netdata/pull/18124) ([netdatabot](https://github.com/netdatabot))
-- go.d whoisquery fix "days until" in config\_schema.json [\#18121](https://github.com/netdata/netdata/pull/18121) ([ilyam8](https://github.com/ilyam8))
-- go.d smartctl: add scsi read/write/verify error rate [\#18119](https://github.com/netdata/netdata/pull/18119) ([ilyam8](https://github.com/ilyam8))
-- log in the same line [\#18118](https://github.com/netdata/netdata/pull/18118) ([ktsaou](https://github.com/ktsaou))
-- spawn server fixes 3 [\#18117](https://github.com/netdata/netdata/pull/18117) ([ktsaou](https://github.com/ktsaou))
-- make claiming work again [\#18116](https://github.com/netdata/netdata/pull/18116) ([ktsaou](https://github.com/ktsaou))
-- spawn server improvements [\#18115](https://github.com/netdata/netdata/pull/18115) ([ktsaou](https://github.com/ktsaou))
-- Regenerate integrations.js [\#18114](https://github.com/netdata/netdata/pull/18114) ([netdatabot](https://github.com/netdatabot))
-- Fix detection of Coverity archive path in scan script. [\#18112](https://github.com/netdata/netdata/pull/18112) ([Ferroin](https://github.com/Ferroin))
-- Regenerate integrations.js [\#18110](https://github.com/netdata/netdata/pull/18110) ([netdatabot](https://github.com/netdatabot))
-- move "api key" option in stream.conf [\#18108](https://github.com/netdata/netdata/pull/18108) ([ilyam8](https://github.com/ilyam8))
-- add port service names to network viewer [\#18107](https://github.com/netdata/netdata/pull/18107) ([ktsaou](https://github.com/ktsaou))
-- Regenerate integrations.js [\#18106](https://github.com/netdata/netdata/pull/18106) ([netdatabot](https://github.com/netdatabot))
-- docs: deploy docker add host root mount \(stable\) [\#18105](https://github.com/netdata/netdata/pull/18105) ([ilyam8](https://github.com/ilyam8))
-- Fix detection of Coverity archive in scan script. [\#18104](https://github.com/netdata/netdata/pull/18104) ([Ferroin](https://github.com/Ferroin))
-- add authorization to spawn requests [\#18103](https://github.com/netdata/netdata/pull/18103) ([ktsaou](https://github.com/ktsaou))
-- Bump CMake supported versions. [\#18102](https://github.com/netdata/netdata/pull/18102) ([Ferroin](https://github.com/Ferroin))
-- Stop a bit more quickly on a failure when using Ninja. [\#18101](https://github.com/netdata/netdata/pull/18101) ([Ferroin](https://github.com/Ferroin))
-- Fix network sent dimensions [\#18099](https://github.com/netdata/netdata/pull/18099) ([stelfrag](https://github.com/stelfrag))
-- go.d use pgx v4 for pgbouncer [\#18097](https://github.com/netdata/netdata/pull/18097) ([ilyam8](https://github.com/ilyam8))
-- Update securing-netdata-agents.md [\#18096](https://github.com/netdata/netdata/pull/18096) ([yoursweetginger](https://github.com/yoursweetginger))
-- Add SCIM integration docs [\#18094](https://github.com/netdata/netdata/pull/18094) ([juacker](https://github.com/juacker))
-- ndsudo set uid/gid/egid to 0 before executing command [\#18093](https://github.com/netdata/netdata/pull/18093) ([ilyam8](https://github.com/ilyam8))
-- go.d fix compiling for windows [\#18091](https://github.com/netdata/netdata/pull/18091) ([ilyam8](https://github.com/ilyam8))
-- go.d megacli: return error if no adapters found \(parsing failed\) [\#18090](https://github.com/netdata/netdata/pull/18090) ([ilyam8](https://github.com/ilyam8))
-- Port puppet collector from Python to Go [\#18088](https://github.com/netdata/netdata/pull/18088) ([Ancairon](https://github.com/Ancairon))
-- update go.d path in docs and ci [\#18087](https://github.com/netdata/netdata/pull/18087) ([ilyam8](https://github.com/ilyam8))
-- Regenerate integrations.js [\#18086](https://github.com/netdata/netdata/pull/18086) ([netdatabot](https://github.com/netdatabot))
-- Switch to legacy images for CentOS 7 CI. [\#18085](https://github.com/netdata/netdata/pull/18085) ([Ferroin](https://github.com/Ferroin))
-- Track LTS for Debian EOL status. [\#18084](https://github.com/netdata/netdata/pull/18084) ([Ferroin](https://github.com/Ferroin))
-- Remove Debian 10 from supported platforms. [\#18083](https://github.com/netdata/netdata/pull/18083) ([Ferroin](https://github.com/Ferroin))
-- Remove Ubuntu 23.10 from supported platforms. [\#18082](https://github.com/netdata/netdata/pull/18082) ([Ferroin](https://github.com/Ferroin))
-- go.d fail2ban: add docker support [\#18081](https://github.com/netdata/netdata/pull/18081) ([ilyam8](https://github.com/ilyam8))
-- Improve alerts [\#18080](https://github.com/netdata/netdata/pull/18080) ([stelfrag](https://github.com/stelfrag))
-- Bump golang.org/x/net from 0.26.0 to 0.27.0 in /src/go [\#18078](https://github.com/netdata/netdata/pull/18078) ([dependabot[bot]](https://github.com/apps/dependabot))
-- Bump github.com/gofrs/flock from 0.11.0 to 0.12.0 in /src/go [\#18077](https://github.com/netdata/netdata/pull/18077) ([dependabot[bot]](https://github.com/apps/dependabot))
-- proc: collect ksm/swap/cma/zswap only when feature enabled [\#18076](https://github.com/netdata/netdata/pull/18076) ([ilyam8](https://github.com/ilyam8))
-- health add alarm docker container down [\#18075](https://github.com/netdata/netdata/pull/18075) ([ilyam8](https://github.com/ilyam8))
-- go.d ipfs fix tests [\#18074](https://github.com/netdata/netdata/pull/18074) ([ilyam8](https://github.com/ilyam8))
-- Regenerate integrations.js [\#18073](https://github.com/netdata/netdata/pull/18073) ([netdatabot](https://github.com/netdatabot))
-- Port ipfs from python to Go [\#18070](https://github.com/netdata/netdata/pull/18070) ([Ancairon](https://github.com/Ancairon))
-- update golang version in netdata.spec [\#18069](https://github.com/netdata/netdata/pull/18069) ([ilyam8](https://github.com/ilyam8))
-- go.d set sensitive props to "password" widget [\#18068](https://github.com/netdata/netdata/pull/18068) ([ilyam8](https://github.com/ilyam8))
-- netdata.spec/plugin-go: added weak dependency for lm\_sensors [\#18067](https://github.com/netdata/netdata/pull/18067) ([k0ste](https://github.com/k0ste))
-- Disable health thread on windows [\#18066](https://github.com/netdata/netdata/pull/18066) ([stelfrag](https://github.com/stelfrag))
-- Remove hard-coded url from python.d puppet chart plugin [\#18064](https://github.com/netdata/netdata/pull/18064) ([Hufschmidt](https://github.com/Hufschmidt))
-- go.d postgres github.com/jackc/pgx/v5 [\#18062](https://github.com/netdata/netdata/pull/18062) ([ilyam8](https://github.com/ilyam8))
-- fix prometeus export: missing comma before "instance" label [\#18061](https://github.com/netdata/netdata/pull/18061) ([ilyam8](https://github.com/ilyam8))
-- go.d vsphere add update\_every ui:help [\#18060](https://github.com/netdata/netdata/pull/18060) ([ilyam8](https://github.com/ilyam8))
-- restructure go.d [\#18058](https://github.com/netdata/netdata/pull/18058) ([ilyam8](https://github.com/ilyam8))
-- freeipmi: add "no-restart" \(workaround \#17931\) [\#18057](https://github.com/netdata/netdata/pull/18057) ([ilyam8](https://github.com/ilyam8))
-- ndsudo add 'chronyc serverstats' [\#18056](https://github.com/netdata/netdata/pull/18056) ([ilyam8](https://github.com/ilyam8))
-- go.d chrony add serverstats query \(disabled for now\) [\#18055](https://github.com/netdata/netdata/pull/18055) ([ilyam8](https://github.com/ilyam8))
-- go.d update packages [\#18054](https://github.com/netdata/netdata/pull/18054) ([ilyam8](https://github.com/ilyam8))
-- Regenerate integrations.js [\#18052](https://github.com/netdata/netdata/pull/18052) ([netdatabot](https://github.com/netdatabot))
-- docs: deploy docker add host root mount [\#18051](https://github.com/netdata/netdata/pull/18051) ([ilyam8](https://github.com/ilyam8))
-- Update role-based-access-model.md [\#18050](https://github.com/netdata/netdata/pull/18050) ([Ancairon](https://github.com/Ancairon))
-- Bump github.com/prometheus/common from 0.54.0 to 0.55.0 in /src/go/collectors/go.d.plugin [\#18049](https://github.com/netdata/netdata/pull/18049) ([dependabot[bot]](https://github.com/apps/dependabot))
-- Bump go.mongodb.org/mongo-driver from 1.15.1 to 1.16.0 in /src/go/collectors/go.d.plugin [\#18048](https://github.com/netdata/netdata/pull/18048) ([dependabot[bot]](https://github.com/apps/dependabot))
-- Bump github.com/docker/docker from 27.0.0+incompatible to 27.0.2+incompatible in /src/go/collectors/go.d.plugin [\#18047](https://github.com/netdata/netdata/pull/18047) ([dependabot[bot]](https://github.com/apps/dependabot))
-- Bump github.com/likexian/whois-parser from 1.24.16 to 1.24.18 in /src/go/collectors/go.d.plugin [\#18046](https://github.com/netdata/netdata/pull/18046) ([dependabot[bot]](https://github.com/apps/dependabot))
-- Bump github.com/gofrs/flock from 0.8.1 to 0.11.0 in /src/go/collectors/go.d.plugin [\#18045](https://github.com/netdata/netdata/pull/18045) ([dependabot[bot]](https://github.com/apps/dependabot))
-- Semaphore \(common context\) [\#18041](https://github.com/netdata/netdata/pull/18041) ([thiagoftsm](https://github.com/thiagoftsm))
-- proc/diskstats: Increase accuracy of average IO operation time [\#18040](https://github.com/netdata/netdata/pull/18040) ([ilyam8](https://github.com/ilyam8))
-- diskspace: update exclude paths/filesystems [\#18039](https://github.com/netdata/netdata/pull/18039) ([ilyam8](https://github.com/ilyam8))
-- Regenerate integrations.js [\#18038](https://github.com/netdata/netdata/pull/18038) ([netdatabot](https://github.com/netdatabot))
## [v1.46.3](https://github.com/netdata/netdata/tree/v1.46.3) (2024-07-23)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3b13664e1..54d9a161e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -330,7 +330,6 @@ check_include_file("sys/mount.h" HAVE_SYS_MOUNT_H)
check_include_file("sys/statvfs.h" HAVE_SYS_STATVFS_H)
check_include_file("inttypes.h" HAVE_INTTYPES_H)
check_include_file("stdint.h" HAVE_STDINT_H)
-check_include_file("sys/capability.h" HAVE_SYS_CAPABILITY_H)
check_include_file("arpa/inet.h" HAVE_ARPA_INET_H)
check_include_file("netinet/tcp.h" HAVE_NETINET_TCP_H)
check_include_file("sys/ioctl.h" HAVE_SYS_IOCTL_H)
@@ -345,6 +344,9 @@ check_include_file("sys/socket.h" HAVE_SYS_SOCKET_H)
check_include_file("sys/wait.h" HAVE_SYS_WAIT_H)
check_include_file("sys/un.h" HAVE_SYS_UN_H)
check_include_file("spawn.h" HAVE_SPAWN_H)
+if(OS_LINUX)
+ check_include_file("sys/capability.h" HAVE_SYS_CAPABILITY_H)
+endif()
#
# check symbols
@@ -448,6 +450,15 @@ int main() {
}
" HAVE_BUILTIN_ATOMICS)
+check_cxx_source_compiles("
+#include <stdint.h>
+int main(void) {
+ uint64_t a;
+ __sync_add_and_fetch(&a, 1);
+ return 0;
+}
+" ARCH_SUPPORTS_64BIT_ATOMICS)
+
check_c_source_compiles("
void my_printf(char const *s, ...) __attribute__((format(gnu_printf, 1, 2)));
int main() { return 0; }
@@ -1528,6 +1539,8 @@ if(ENABLE_H2O)
target_compile_options(h2o PUBLIC -DH2O_USE_LIBUV=0)
target_link_libraries(h2o PRIVATE PkgConfig::TLS)
+ target_compile_definitions(h2o PRIVATE
+ "$<$<NOT:$<BOOL:${ARCH_SUPPORTS_64BIT_ATOMICS}>>:H2O_NO_64BIT_ATOMICS>")
endif()
#
diff --git a/packaging/installer/netdata-updater.sh b/packaging/installer/netdata-updater.sh
index fc8b39cdd..5ebb6baa2 100755
--- a/packaging/installer/netdata-updater.sh
+++ b/packaging/installer/netdata-updater.sh
@@ -532,6 +532,8 @@ get_netdata_latest_tag() {
newer_commit_date() {
info "Checking if a newer version of the updater script is available."
+ ndtmpdir="$(create_tmp_directory)"
+ commit_check_file="${ndtmpdir}/latest-commit.json"
commit_check_url="https://api.github.com/repos/netdata/netdata/commits?path=packaging%2Finstaller%2Fnetdata-updater.sh&page=1&per_page=1"
python_version_check="
from __future__ import print_function
@@ -545,12 +547,14 @@ else:
print(data[0]['commit']['committer']['date'] if isinstance(data, list) and data else '')
"
+ _safe_download "${commit_check_url}" "${commit_check_file}"
+
if command -v jq > /dev/null 2>&1; then
- commit_date="$(_safe_download "${commit_check_url}" /dev/stdout | jq '.[0].commit.committer.date' 2>/dev/null | tr -d '"')"
+ commit_date="$(jq '.[0].commit.committer.date' 2>/dev/null < "${commit_check_file}" | tr -d '"')"
elif command -v python > /dev/null 2>&1;then
- commit_date="$(_safe_download "${commit_check_url}" /dev/stdout | python -c "${python_version_check}")"
+ commit_date="$(python -c "${python_version_check}" < "${commit_check_file}")"
elif command -v python3 > /dev/null 2>&1;then
- commit_date="$(_safe_download "${commit_check_url}" /dev/stdout | python3 -c "${python_version_check}")"
+ commit_date="$(python3 -c "${python_version_check}" < "${commit_check_file}")"
fi
if [ -z "${commit_date}" ] ; then
diff --git a/packaging/makeself/bundled-packages.version b/packaging/makeself/bundled-packages.version
index 02ee4469d..b19ad3c35 100644
--- a/packaging/makeself/bundled-packages.version
+++ b/packaging/makeself/bundled-packages.version
@@ -1,9 +1,9 @@
# Source of truth for all the packages we bundle in static builds
PACKAGES=("OPENSSL" "CURL" "BASH" "IOPING" "LIBNETFILTER_ACT")
SOURCE_TYPES=("GH_REPO_CLONE" "GH_REPO_CLONE" "DW_TARBALL" "GH_REPO_SOURCE" "DW_TARBALL")
-OPENSSL_VERSION="openssl-3.1.4"
+OPENSSL_VERSION="openssl-3.3.2"
OPENSSL_SOURCE="https://github.com/openssl/openssl"
-CURL_VERSION="curl-8_4_0"
+CURL_VERSION="curl-8_10_1"
CURL_SOURCE="https://github.com/curl/curl"
BASH_VERSION="5.1.16"
BASH_ARTIFACT_SOURCE="http://ftp.gnu.org/gnu/bash"
diff --git a/packaging/version b/packaging/version
index 7fa3401a1..3ea09128f 100644
--- a/packaging/version
+++ b/packaging/version
@@ -1 +1 @@
-v1.47.2
+v1.47.5
diff --git a/src/collectors/common-contexts/mem.swap.h b/src/collectors/common-contexts/mem.swap.h
index 6d692ef3b..1c1b053d7 100644
--- a/src/collectors/common-contexts/mem.swap.h
+++ b/src/collectors/common-contexts/mem.swap.h
@@ -6,6 +6,14 @@ static inline void common_mem_swap(uint64_t free_bytes, uint64_t used_bytes, int
static RRDSET *st_system_swap = NULL;
static RRDDIM *rd_free = NULL, *rd_used = NULL;
+ if (free_bytes == 0 && used_bytes == 0 && st_system_swap) {
+ rrdset_is_obsolete___safe_from_collector_thread(st_system_swap);
+ st_system_swap = NULL;
+ rd_free = NULL;
+ rd_used = NULL;
+ return;
+ }
+
if(unlikely(!st_system_swap)) {
st_system_swap = rrdset_create_localhost(
"mem"
diff --git a/src/collectors/freebsd.plugin/freebsd_kstat_zfs.c b/src/collectors/freebsd.plugin/freebsd_kstat_zfs.c
index fdece7deb..ded6a8ee5 100644
--- a/src/collectors/freebsd.plugin/freebsd_kstat_zfs.c
+++ b/src/collectors/freebsd.plugin/freebsd_kstat_zfs.c
@@ -43,6 +43,8 @@ int do_kstat_zfs_misc_arcstats(int update_every, usec_t dt) {
int hash_chains[5];
int hash_chain_max[5];
int p[5];
+ int pd[5];
+ int pm[5];
int c[5];
int c_min[5];
int c_max[5];
@@ -145,7 +147,14 @@ int do_kstat_zfs_misc_arcstats(int update_every, usec_t dt) {
GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.hash_collisions", mibs.hash_collisions, arcstats.hash_collisions);
GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.hash_chains", mibs.hash_chains, arcstats.hash_chains);
GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.hash_chain_max", mibs.hash_chain_max, arcstats.hash_chain_max);
+
+#if __FreeBSD_version >= 1400000
+ GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.pd", mibs.pd, arcstats.pd);
+ GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.pm", mibs.pm, arcstats.pm);
+#else
GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.p", mibs.p, arcstats.p);
+#endif
+
GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.c", mibs.c, arcstats.c);
GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.c_min", mibs.c_min, arcstats.c_min);
GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.c_max", mibs.c_max, arcstats.c_max);
diff --git a/src/collectors/proc.plugin/proc_meminfo.c b/src/collectors/proc.plugin/proc_meminfo.c
index db458b239..781329b59 100644
--- a/src/collectors/proc.plugin/proc_meminfo.c
+++ b/src/collectors/proc.plugin/proc_meminfo.c
@@ -12,6 +12,8 @@
int do_proc_meminfo(int update_every, usec_t dt) {
(void)dt;
+ static bool swap_configured = false;
+
static procfile *ff = NULL;
static int do_ram = -1
, do_swap = -1
@@ -235,7 +237,7 @@ int do_proc_meminfo(int update_every, usec_t dt) {
// http://calimeroteknik.free.fr/blag/?article20/really-used-memory-on-gnu-linux
// KReclaimable includes SReclaimable, it was added in kernel v4.20
- unsigned long long reclaimable = KReclaimable > 0 ? KReclaimable : SReclaimable;
+ unsigned long long reclaimable = inside_lxc_container ? 0 : (KReclaimable > 0 ? KReclaimable : SReclaimable);
unsigned long long MemCached = Cached + reclaimable - Shmem;
unsigned long long MemUsed = MemTotal - MemFree - MemCached - Buffers;
// The Linux kernel doesn't report ZFS ARC usage as cache memory (the ARC is included in the total used system memory)
@@ -257,6 +259,7 @@ int do_proc_meminfo(int update_every, usec_t dt) {
if (SwapTotal && (do_swap == CONFIG_BOOLEAN_YES || do_swap == CONFIG_BOOLEAN_AUTO)) {
do_swap = CONFIG_BOOLEAN_YES;
common_mem_swap(SwapFree * 1024, SwapUsed * 1024, update_every);
+ swap_configured = true;
{
static RRDSET *st_mem_swap_cached = NULL;
@@ -313,8 +316,14 @@ int do_proc_meminfo(int update_every, usec_t dt) {
rrddim_set_by_pointer(st_mem_zswap, rd_zswapped, Zswapped);
rrdset_done(st_mem_zswap);
}
+ } else {
+ if (swap_configured) {
+ common_mem_swap(SwapFree * 1024, SwapUsed * 1024, update_every);
+ swap_configured = false;
+ }
}
+
if (arl_hwcorrupted->flags & ARL_ENTRY_FLAG_FOUND &&
(do_hwcorrupt == CONFIG_BOOLEAN_YES || do_hwcorrupt == CONFIG_BOOLEAN_AUTO)) {
do_hwcorrupt = CONFIG_BOOLEAN_YES;
diff --git a/src/collectors/proc.plugin/proc_net_dev.c b/src/collectors/proc.plugin/proc_net_dev.c
index 40702c387..41c10ddbc 100644
--- a/src/collectors/proc.plugin/proc_net_dev.c
+++ b/src/collectors/proc.plugin/proc_net_dev.c
@@ -12,7 +12,7 @@
#define READ_RETRY_PERIOD 60 // seconds
-time_t double_linked_device_collect_delay_secs = 120;
+time_t virtual_device_collect_delay_secs = 40;
enum {
NETDEV_DUPLEX_UNKNOWN,
@@ -92,7 +92,6 @@ static struct netdev {
int enabled;
bool updated;
bool function_ready;
- bool double_linked; // iflink != ifindex
time_t discover_time;
@@ -809,7 +808,6 @@ static struct netdev *get_netdev(const char *name) {
d->len = strlen(d->name);
d->chart_labels = rrdlabels_create();
d->function_ready = false;
- d->double_linked = false;
d->chart_type_net_bytes = strdupz("net");
d->chart_type_net_compressed = strdupz("net_compressed");
@@ -858,25 +856,10 @@ static struct netdev *get_netdev(const char *name) {
return d;
}
-static bool is_iface_double_linked(struct netdev *d) {
- char filename[FILENAME_MAX + 1];
- unsigned long long iflink = 0;
- unsigned long long ifindex = 0;
-
- snprintfz(filename, FILENAME_MAX, "%s/sys/class/net/%s/iflink", netdata_configured_host_prefix, d->name);
- if (read_single_number_file(filename, &iflink))
- return false;
-
- snprintfz(filename, FILENAME_MAX, "%s/sys/class/net/%s/ifindex", netdata_configured_host_prefix, d->name);
- if (read_single_number_file(filename, &ifindex))
- return false;
-
- return iflink != ifindex;
-}
-
int do_proc_net_dev(int update_every, usec_t dt) {
(void)dt;
static SIMPLE_PATTERN *disabled_list = NULL;
+ static SIMPLE_PATTERN *virtual_iface_no_delay = NULL;
static procfile *ff = NULL;
static int enable_new_interfaces = -1;
static int do_bandwidth = -1, do_packets = -1, do_errors = -1, do_drops = -1, do_fifo = -1, do_compressed = -1,
@@ -921,8 +904,26 @@ int do_proc_net_dev(int update_every, usec_t dt) {
do_compressed = config_get_boolean_ondemand(CONFIG_SECTION_PLUGIN_PROC_NETDEV, "compressed packets for all interfaces", CONFIG_BOOLEAN_NO);
disabled_list = simple_pattern_create(
- config_get(CONFIG_SECTION_PLUGIN_PROC_NETDEV, "disable by default interfaces matching",
- "lo fireqos* *-ifb fwpr* fwbr* fwln*"), NULL, SIMPLE_PATTERN_EXACT, true);
+ config_get(
+ CONFIG_SECTION_PLUGIN_PROC_NETDEV,
+ "disable by default interfaces matching",
+ "lo fireqos* *-ifb fwpr* fwbr* fwln*"),
+ NULL,
+ SIMPLE_PATTERN_EXACT,
+ true);
+
+ virtual_iface_no_delay = simple_pattern_create(
+ " bond* "
+ " vlan* "
+ " vmbr* "
+ " wg* "
+ " vpn* "
+ " tun* "
+ " gre* "
+ " docker* ",
+ NULL,
+ SIMPLE_PATTERN_EXACT,
+ true);
netdev_renames_init();
}
@@ -1009,8 +1010,6 @@ int do_proc_net_dev(int update_every, usec_t dt) {
if(d->enabled == CONFIG_BOOLEAN_NO)
continue;
- d->double_linked = is_iface_double_linked(d);
-
d->do_bandwidth = do_bandwidth;
d->do_packets = do_packets;
d->do_errors = do_errors;
@@ -1060,8 +1059,10 @@ int do_proc_net_dev(int update_every, usec_t dt) {
// This is necessary to prevent the creation of charts for virtual interfaces that will later be
// recreated as container interfaces (create container) or
// rediscovered and recreated only to be deleted almost immediately (stop/remove container)
- if (d->double_linked && d->virtual && (now - d->discover_time < double_linked_device_collect_delay_secs))
+ if (d->virtual && !simple_pattern_matches(virtual_iface_no_delay, d->name) &&
+ (now - d->discover_time < virtual_device_collect_delay_secs)) {
continue;
+ }
if(likely(d->do_bandwidth != CONFIG_BOOLEAN_NO || !d->virtual)) {
d->rbytes = str2kernel_uint_t(procfile_lineword(ff, l, 1));
@@ -1717,7 +1718,7 @@ void *netdev_main(void *ptr_is_null __maybe_unused)
worker_register_job_name(0, "netdev");
if (getenv("KUBERNETES_SERVICE_HOST") != NULL && getenv("KUBERNETES_SERVICE_PORT") != NULL)
- double_linked_device_collect_delay_secs = 300;
+ virtual_device_collect_delay_secs = 300;
rrd_function_add_inline(localhost, NULL, "network-interfaces", 10,
RRDFUNCTIONS_PRIORITY_DEFAULT, RRDFUNCTIONS_NETDEV_HELP,
diff --git a/src/collectors/proc.plugin/proc_spl_kstat_zfs.c b/src/collectors/proc.plugin/proc_spl_kstat_zfs.c
index be96f4449..5a0f90951 100644
--- a/src/collectors/proc.plugin/proc_spl_kstat_zfs.c
+++ b/src/collectors/proc.plugin/proc_spl_kstat_zfs.c
@@ -54,6 +54,8 @@ int do_proc_spl_kstat_zfs_arcstats(int update_every, usec_t dt) {
arl_expect(arl_base, "hash_chains", &arcstats.hash_chains);
arl_expect(arl_base, "hash_chain_max", &arcstats.hash_chain_max);
arl_expect(arl_base, "p", &arcstats.p);
+ arl_expect(arl_base, "pd", &arcstats.pd);
+ arl_expect(arl_base, "pm", &arcstats.pm);
arl_expect(arl_base, "c", &arcstats.c);
arl_expect(arl_base, "c_min", &arcstats.c_min);
arl_expect(arl_base, "c_max", &arcstats.c_max);
diff --git a/src/collectors/proc.plugin/zfs_common.c b/src/collectors/proc.plugin/zfs_common.c
index cb5bd20e0..dadf2f84d 100644
--- a/src/collectors/proc.plugin/zfs_common.c
+++ b/src/collectors/proc.plugin/zfs_common.c
@@ -560,7 +560,7 @@ void generate_charts_arc_summary(const char *plugin, const char *module, int upd
//unsigned long long anon_hits = arcstats.hits - (arcstats.mfu_hits + arcstats.mru_hits + arcstats.mfu_ghost_hits + arcstats.mru_ghost_hits);
unsigned long long arc_size = arcstats.size;
- unsigned long long mru_size = arcstats.p;
+ unsigned long long mru_size = arcstats.p > 0 ? arcstats.p : arcstats.pd + arcstats.pm;
//unsigned long long target_min_size = arcstats.c_min;
//unsigned long long target_max_size = arcstats.c_max;
unsigned long long target_size = arcstats.c;
diff --git a/src/collectors/proc.plugin/zfs_common.h b/src/collectors/proc.plugin/zfs_common.h
index c0f088170..7c2b3d334 100644
--- a/src/collectors/proc.plugin/zfs_common.h
+++ b/src/collectors/proc.plugin/zfs_common.h
@@ -41,6 +41,8 @@ struct arcstats {
unsigned long long hash_chains;
unsigned long long hash_chain_max;
unsigned long long p;
+ unsigned long long pd;
+ unsigned long long pm;
unsigned long long c;
unsigned long long c_min;
unsigned long long c_max;
diff --git a/src/daemon/system-info.sh b/src/daemon/system-info.sh
index aaca7fd4b..5c8d70b7e 100755
--- a/src/daemon/system-info.sh
+++ b/src/daemon/system-info.sh
@@ -361,6 +361,17 @@ fi
# -------------------------------------------------------------------------------------------------
# Detect the total system disk space
+is_inside_lxc_container() {
+ mounts_file="/proc/self/mounts"
+
+ [ ! -r "$mounts_file" ] && return 1
+
+ # Check if lxcfs is mounted on /proc
+ awk '$1 == "lxcfs" && $2 ~ "^/proc" { found=1; exit } END { exit !found }' "$mounts_file"
+
+ return $?
+}
+
DISK_SIZE="unknown"
DISK_DETECTION="none"
@@ -393,7 +404,7 @@ elif [ "${KERNEL_NAME}" = FreeBSD ]; then
total="$(df -t ${types} -c -k | tail -n 1 | awk '{print $2}')"
DISK_SIZE="$((total * 1024))"
else
- if [ -d /sys/block ] && [ -r /proc/devices ]; then
+ if [ -d /sys/block ] && [ -r /proc/devices ] && ! is_inside_lxc_container; then
dev_major_whitelist=''
# This is a list of device names used for block storage devices.
@@ -424,7 +435,7 @@ else
else
DISK_DETECTION="df"
include_fs_types="ext*|btrfs|xfs|jfs|reiser*|zfs"
- DISK_SIZE=$(($(df -T -P | tail -n +2 | sort -u -k 1 | grep "${include_fs_types}" | awk '{print $3}' | tr '\n' '+' | head -c -1) * 1024))
+ DISK_SIZE=$(($(df -T -P | tail -n +2 | sort -u -k 1 | grep -E "${include_fs_types}" | awk '{print $3}' | tr '\n' '+' | head -c -1) * 1024))
fi
fi
diff --git a/src/database/sqlite/sqlite_aclk_node.c b/src/database/sqlite/sqlite_aclk_node.c
index 70d1ebda1..411b8bd70 100644
--- a/src/database/sqlite/sqlite_aclk_node.c
+++ b/src/database/sqlite/sqlite_aclk_node.c
@@ -167,6 +167,12 @@ void aclk_check_node_info_and_collectors(void)
if (pp_queue_empty && wc->node_info_send_time && wc->node_info_send_time + 30 < now) {
wc->node_info_send_time = 0;
build_node_info(host);
+ if (netdata_cloud_enabled) {
+ netdata_mutex_lock(&host->receiver_lock);
+ int live = (host == localhost || host->receiver || !(rrdhost_flag_check(host, RRDHOST_FLAG_ORPHAN))) ? 1 : 0;
+ netdata_mutex_unlock(&host->receiver_lock);
+ aclk_host_state_update(host, live, 1);
+ }
internal_error(true, "ACLK SYNC: Sending node info for %s", rrdhost_hostname(host));
}
diff --git a/src/database/sqlite/sqlite_health.c b/src/database/sqlite/sqlite_health.c
index 9304c8c73..b3ad12857 100644
--- a/src/database/sqlite/sqlite_health.c
+++ b/src/database/sqlite/sqlite_health.c
@@ -755,20 +755,20 @@ done:
* Store an alert config hash in the database
*/
#define SQL_STORE_ALERT_CONFIG_HASH \
- "insert or replace into alert_hash (hash_id, date_updated, alarm, template, " \
+ "INSERT OR REPLACE INTO alert_hash (hash_id, date_updated, alarm, template, " \
"on_key, class, component, type, lookup, every, units, calc, " \
"green, red, warn, crit, exec, to_key, info, delay, options, repeat, host_labels, " \
"p_db_lookup_dimensions, p_db_lookup_method, p_db_lookup_options, p_db_lookup_after, " \
"p_db_lookup_before, p_update_every, source, chart_labels, summary, time_group_condition, " \
"time_group_value, dims_group, data_source) " \
- "values (@hash_id,UNIXEPOCH(),@alarm,@template," \
+ "VALUES (@hash_id,UNIXEPOCH(),@alarm,@template," \
"@on_key,@class,@component,@type,@lookup,@every,@units,@calc," \
"@green,@red,@warn,@crit,@exec,@to_key,@info,@delay,@options,@repeat,@host_labels," \
"@p_db_lookup_dimensions,@p_db_lookup_method,@p_db_lookup_options,@p_db_lookup_after," \
"@p_db_lookup_before,@p_update_every,@source,@chart_labels,@summary, @time_group_condition, " \
"@time_group_value, @dims_group, @data_source)"
-void sql_alert_store_config(RRD_ALERT_PROTOTYPE *ap __maybe_unused)
+void sql_alert_store_config(RRD_ALERT_PROTOTYPE *ap)
{
static __thread sqlite3_stmt *res = NULL;
int param = 0;
@@ -776,7 +776,7 @@ void sql_alert_store_config(RRD_ALERT_PROTOTYPE *ap __maybe_unused)
if (!PREPARE_COMPILED_STATEMENT(db_meta, SQL_STORE_ALERT_CONFIG_HASH, &res))
return;
- BUFFER *buf = buffer_create(128, NULL);
+ CLEAN_BUFFER *buf = buffer_create(128, NULL);
SQLITE_BIND_FAIL(
done, sqlite3_bind_blob(res, ++param, &ap->config.hash_id, sizeof(ap->config.hash_id), SQLITE_STATIC));
@@ -842,7 +842,14 @@ void sql_alert_store_config(RRD_ALERT_PROTOTYPE *ap __maybe_unused)
else
SQLITE_BIND_FAIL(done, sqlite3_bind_null(res, ++param));
- SQLITE_BIND_FAIL(done, sqlite3_bind_int(res, ++param, ap->config.update_every));
+ char repeat[255];
+ if (!ap->config.has_custom_repeat_config)
+ SQLITE_BIND_FAIL(done, sqlite3_bind_null(res, ++param));
+ else {
+ snprintfz(repeat, sizeof(repeat) - 1, "warning %us critical %us", ap->config.warn_repeat_every, ap->config.crit_repeat_every);
+ SQLITE_BIND_FAIL(done, sqlite3_bind_text(res, ++param, repeat, -1, SQLITE_STATIC));
+ }
+
SQLITE_BIND_FAIL(done, SQLITE3_BIND_STRING_OR_NULL(res, ++param, ap->match.host_labels));
if (ap->config.after) {
@@ -875,7 +882,6 @@ void sql_alert_store_config(RRD_ALERT_PROTOTYPE *ap __maybe_unused)
error_report("Failed to store alert config, rc = %d", rc);
done:
- buffer_free(buf);
REPORT_BIND_FAIL(res, param);
SQLITE_RESET(res);
}
diff --git a/src/go/plugin/go.d/agent/discovery/sd/discoverer/netlisteners/netlisteners.go b/src/go/plugin/go.d/agent/discovery/sd/discoverer/netlisteners/netlisteners.go
index 6f536c49e..60dd92cb4 100644
--- a/src/go/plugin/go.d/agent/discovery/sd/discoverer/netlisteners/netlisteners.go
+++ b/src/go/plugin/go.d/agent/discovery/sd/discoverer/netlisteners/netlisteners.go
@@ -84,6 +84,9 @@ type (
cache map[uint64]*cacheItem // [target.Hash]
started chan struct{}
+
+ successRuns int64
+ timeoutRuns int64
}
cacheItem struct {
lastSeenTime time.Time
@@ -118,7 +121,7 @@ func (d *Discoverer) Discover(ctx context.Context, in chan<- []model.TargetGroup
return
case <-tk.C:
if err := d.discoverLocalListeners(ctx, in); err != nil {
- d.Warning(err)
+ d.Error(err)
return
}
}
@@ -128,12 +131,20 @@ func (d *Discoverer) Discover(ctx context.Context, in chan<- []model.TargetGroup
func (d *Discoverer) discoverLocalListeners(ctx context.Context, in chan<- []model.TargetGroup) error {
bs, err := d.ll.discover(ctx)
if err != nil {
- if errors.Is(err, context.Canceled) {
+ if errors.Is(err, context.DeadlineExceeded) {
+ // there is no point in continuing pointless attempts/use cpu
+ // https://github.com/netdata/netdata/discussions/18751#discussioncomment-10908472
+ if d.timeoutRuns++; d.timeoutRuns > 5 && d.successRuns == 0 {
+ return err
+ }
+ d.Warning(err)
return nil
}
return err
}
+ d.successRuns++
+
tgts, err := d.parseLocalListeners(bs)
if err != nil {
return err
diff --git a/src/go/plugin/go.d/modules/nvidia_smi/charts.go b/src/go/plugin/go.d/modules/nvidia_smi/charts.go
index 746c8eed3..d6b0af368 100644
--- a/src/go/plugin/go.d/modules/nvidia_smi/charts.go
+++ b/src/go/plugin/go.d/modules/nvidia_smi/charts.go
@@ -4,6 +4,7 @@ package nvidia_smi
import (
"fmt"
+ "strconv"
"strings"
"github.com/netdata/netdata/go/plugins/plugin/go.d/agent/module"
@@ -261,7 +262,7 @@ var (
}
)
-func (nv *NvidiaSmi) addGPUXMLCharts(gpu gpuInfo) {
+func (nv *NvidiaSmi) addGpuCharts(gpu gpuInfo, index int) {
charts := gpuXMLCharts.Copy()
if !isValidValue(gpu.Utilization.GpuUtil) {
@@ -294,7 +295,7 @@ func (nv *NvidiaSmi) addGPUXMLCharts(gpu gpuInfo) {
for _, c := range *charts {
c.ID = fmt.Sprintf(c.ID, strings.ToLower(gpu.UUID))
c.Labels = []module.Label{
- // csv output has no 'product_brand'
+ {Key: "index", Value: strconv.Itoa(index)},
{Key: "uuid", Value: gpu.UUID},
{Key: "product_name", Value: gpu.ProductName},
}
diff --git a/src/go/plugin/go.d/modules/nvidia_smi/collect.go b/src/go/plugin/go.d/modules/nvidia_smi/collect.go
index f621d191b..3548f90f2 100644
--- a/src/go/plugin/go.d/modules/nvidia_smi/collect.go
+++ b/src/go/plugin/go.d/modules/nvidia_smi/collect.go
@@ -38,7 +38,7 @@ func (nv *NvidiaSmi) collectGPUInfo(mx map[string]int64) error {
seenGPU := make(map[string]bool)
seenMIG := make(map[string]bool)
- for _, gpu := range info.GPUs {
+ for i, gpu := range info.GPUs {
if !isValidValue(gpu.UUID) {
continue
}
@@ -49,7 +49,7 @@ func (nv *NvidiaSmi) collectGPUInfo(mx map[string]int64) error {
if !nv.gpus[px] {
nv.gpus[px] = true
- nv.addGPUXMLCharts(gpu)
+ nv.addGpuCharts(gpu, i)
}
addMetric(mx, px+"pcie_bandwidth_usage_rx", gpu.PCI.RxUtil, 1024) // KB => bytes
diff --git a/src/go/plugin/go.d/modules/nvidia_smi/config_schema.json b/src/go/plugin/go.d/modules/nvidia_smi/config_schema.json
index 3f93badc2..46b48095d 100644
--- a/src/go/plugin/go.d/modules/nvidia_smi/config_schema.json
+++ b/src/go/plugin/go.d/modules/nvidia_smi/config_schema.json
@@ -19,7 +19,7 @@
},
"timeout": {
"title": "Timeout",
- "description": "Timeout for executing the binary, specified in seconds.",
+ "description": "The maximum duration, in seconds, to wait for an `nvidia-smi` command to complete.",
"type": "number",
"minimum": 0.5,
"default": 10
@@ -47,7 +47,7 @@
"ui:help": "If an absolute path is provided, the collector will use it directly; otherwise, it will search for the binary in directories specified in the PATH environment variable."
},
"timeout": {
- "ui:help": "Accepts decimals for precise control (e.g., type 1.5 for 1.5 seconds)."
+ "ui:help": "This setting applies differently based on the collector's mode. **Loop Mode:** In loop mode, the timeout primarily determines how long to wait for the initial `nvidia-smi` execution. If the initial query takes longer than the timeout, the collector may report an error. For systems with multiple GPUs, the initial load time can sometimes be significant (e.g., 5-10 seconds). **Regular Mode:** If the collector is in regular mode, the timeout specifies how long to wait for each individual `nvidia-smi` execution."
},
"loop_mode": {
"ui:help": "In loop mode, `nvidia-smi` will repeatedly query GPU data at specified intervals, defined by the `-l SEC` or `--loop=SEC` parameter, rather than just running the query once. This enables ongoing performance tracking by putting the application to sleep between queries."
diff --git a/src/go/plugin/go.d/modules/nvidia_smi/exec.go b/src/go/plugin/go.d/modules/nvidia_smi/exec.go
index 11a26131f..497db87ae 100644
--- a/src/go/plugin/go.d/modules/nvidia_smi/exec.go
+++ b/src/go/plugin/go.d/modules/nvidia_smi/exec.go
@@ -34,7 +34,7 @@ func newNvidiaSmiBinary(path string, cfg Config, log *logger.Logger) (nvidiaSmiB
Logger: log,
binPath: path,
updateEvery: cfg.UpdateEvery,
- firstSampleTimeout: time.Second * 3,
+ firstSampleTimeout: cfg.Timeout.Duration(),
}
if err := smi.run(); err != nil {
diff --git a/src/go/plugin/go.d/modules/nvidia_smi/metadata.yaml b/src/go/plugin/go.d/modules/nvidia_smi/metadata.yaml
index 2a79b5ac1..f44d57532 100644
--- a/src/go/plugin/go.d/modules/nvidia_smi/metadata.yaml
+++ b/src/go/plugin/go.d/modules/nvidia_smi/metadata.yaml
@@ -65,8 +65,8 @@ modules:
default_value: nvidia_smi
required: false
- name: timeout
- description: nvidia_smi binary execution timeout.
- default_value: 2
+ description: The maximum duration, in seconds, to wait for an `nvidia-smi` command to complete. This setting applies differently based on the collector's mode. **Loop Mode:** In loop mode, the timeout primarily determines how long to wait for the initial `nvidia-smi` execution. If the initial query takes longer than the timeout, the collector may report an error. For systems with multiple GPUs, the initial load time can sometimes be significant (e.g., 5-10 seconds). **Regular Mode:** If the collector is in regular mode, the timeout specifies how long to wait for each individual `nvidia-smi` execution.
+ default_value: 10
required: false
- name: loop_mode
description: "When enabled, `nvidia-smi` is executed continuously in a separate thread using the `-l` option."
@@ -98,7 +98,9 @@ modules:
description: These metrics refer to the GPU.
labels:
- name: uuid
- description: GPU id (e.g. 00000000:00:04.0)
+ description: GPU uuid (e.g. GPU-27b94a00-ed54-5c24-b1fd-1054085de32a)
+ - name: index
+ description: GPU index (nvidia_smi typically orders GPUs by PCI bus ID)
- name: product_name
description: GPU product name (e.g. NVIDIA A100-SXM4-40GB)
metrics:
@@ -211,7 +213,7 @@ modules:
description: These metrics refer to the Multi-Instance GPU (MIG).
labels:
- name: uuid
- description: GPU id (e.g. 00000000:00:04.0)
+ description: GPU uuid (e.g. GPU-27b94a00-ed54-5c24-b1fd-1054085de32a)
- name: product_name
description: GPU product name (e.g. NVIDIA A100-SXM4-40GB)
- name: gpu_instance_id
diff --git a/src/go/plugin/go.d/modules/postgres/collect.go b/src/go/plugin/go.d/modules/postgres/collect.go
index 6186932c0..91f3b5235 100644
--- a/src/go/plugin/go.d/modules/postgres/collect.go
+++ b/src/go/plugin/go.d/modules/postgres/collect.go
@@ -18,6 +18,7 @@ const (
pgVersion94 = 9_04_00
pgVersion10 = 10_00_00
pgVersion11 = 11_00_00
+ pgVersion17 = 17_00_00
)
func (p *Postgres) collect() (map[string]int64, error) {
diff --git a/src/go/plugin/go.d/modules/postgres/do_query_global.go b/src/go/plugin/go.d/modules/postgres/do_query_global.go
index c70772a23..6f1ac1edf 100644
--- a/src/go/plugin/go.d/modules/postgres/do_query_global.go
+++ b/src/go/plugin/go.d/modules/postgres/do_query_global.go
@@ -97,7 +97,7 @@ func (p *Postgres) doQueryConnectionsState() error {
}
func (p *Postgres) doQueryCheckpoints() error {
- q := queryCheckpoints()
+ q := queryCheckpoints(p.pgVersion)
return p.doQuery(q, func(column, value string, _ bool) {
switch column {
diff --git a/src/go/plugin/go.d/modules/postgres/postgres_test.go b/src/go/plugin/go.d/modules/postgres/postgres_test.go
index 7e91b288f..95652458f 100644
--- a/src/go/plugin/go.d/modules/postgres/postgres_test.go
+++ b/src/go/plugin/go.d/modules/postgres/postgres_test.go
@@ -155,7 +155,7 @@ func TestPostgres_Check(t *testing.T) {
mockExpect(t, m, queryServerCurrentConnectionsUsed(), dataVer140004ServerCurrentConnections)
mockExpect(t, m, queryServerConnectionsState(), dataVer140004ServerConnectionsState)
- mockExpect(t, m, queryCheckpoints(), dataVer140004Checkpoints)
+ mockExpect(t, m, queryCheckpoints(140004), dataVer140004Checkpoints)
mockExpect(t, m, queryServerUptime(), dataVer140004ServerUptime)
mockExpect(t, m, queryTXIDWraparound(), dataVer140004TXIDWraparound)
mockExpect(t, m, queryWALWrites(140004), dataVer140004WALWrites)
@@ -258,7 +258,7 @@ func TestPostgres_Collect(t *testing.T) {
mockExpect(t, m, queryServerCurrentConnectionsUsed(), dataVer140004ServerCurrentConnections)
mockExpect(t, m, queryServerConnectionsState(), dataVer140004ServerConnectionsState)
- mockExpect(t, m, queryCheckpoints(), dataVer140004Checkpoints)
+ mockExpect(t, m, queryCheckpoints(140004), dataVer140004Checkpoints)
mockExpect(t, m, queryServerUptime(), dataVer140004ServerUptime)
mockExpect(t, m, queryTXIDWraparound(), dataVer140004TXIDWraparound)
mockExpect(t, m, queryWALWrites(140004), dataVer140004WALWrites)
diff --git a/src/go/plugin/go.d/modules/postgres/queries.go b/src/go/plugin/go.d/modules/postgres/queries.go
index f6afc9342..4f6262bba 100644
--- a/src/go/plugin/go.d/modules/postgres/queries.go
+++ b/src/go/plugin/go.d/modules/postgres/queries.go
@@ -51,12 +51,14 @@ GROUP BY state;
`
}
-func queryCheckpoints() string {
+func queryCheckpoints(version int) string {
// definition by version: https://pgpedia.info/p/pg_stat_bgwriter.html
// docs: https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-BGWRITER-VIEW
// code: https://github.com/postgres/postgres/blob/366283961ac0ed6d89014444c6090f3fd02fce0a/src/backend/catalog/system_views.sql#L1104
- return `
+ if version < pgVersion17 {
+
+ return `
SELECT checkpoints_timed,
checkpoints_req,
checkpoint_write_time,
@@ -69,6 +71,21 @@ SELECT checkpoints_timed,
buffers_alloc * current_setting('block_size')::numeric AS buffers_alloc_bytes
FROM pg_stat_bgwriter;
`
+ }
+ return `
+SELECT
+ chkpt.num_timed AS checkpoints_timed,
+ chkpt.num_requested AS checkpoints_req,
+ chkpt.write_time AS checkpoint_write_time,
+ chkpt.sync_time AS checkpoint_sync_time,
+ chkpt.buffers_written * current_setting('block_size')::numeric AS buffers_checkpoint_bytes,
+ bgwrtr.buffers_clean * current_setting('block_size')::numeric AS buffers_clean_bytes,
+ bgwrtr.maxwritten_clean,
+ bgwrtr.buffers_alloc * current_setting('block_size')::numeric AS buffers_alloc_bytes
+FROM
+ pg_stat_bgwriter AS bgwrtr,
+ pg_stat_checkpointer AS chkpt;
+`
}
func queryServerUptime() string {
diff --git a/src/go/plugin/go.d/modules/smartctl/collect.go b/src/go/plugin/go.d/modules/smartctl/collect.go
index 35585db62..b76d0998e 100644
--- a/src/go/plugin/go.d/modules/smartctl/collect.go
+++ b/src/go/plugin/go.d/modules/smartctl/collect.go
@@ -181,7 +181,7 @@ func isSmartAttrValid(a *smartAttribute) bool {
}
func isDeviceInLowerPowerMode(r *gjson.Result) bool {
- if !isExitStatusHasBit(r, 1) {
+ if !isExitStatusHasAnyBit(r, 1) {
return false
}
@@ -194,7 +194,7 @@ func isDeviceInLowerPowerMode(r *gjson.Result) bool {
}
func isDeviceOpenFailedNoSuchDevice(r *gjson.Result) bool {
- if !isExitStatusHasBit(r, 1) {
+ if !isExitStatusHasAnyBit(r, 1) {
return false
}
@@ -206,9 +206,16 @@ func isDeviceOpenFailedNoSuchDevice(r *gjson.Result) bool {
})
}
-func isExitStatusHasBit(r *gjson.Result, bit int) bool {
+func isExitStatusHasAnyBit(r *gjson.Result, bit int, bits ...int) bool {
// https://manpages.debian.org/bullseye/smartmontools/smartctl.8.en.html#EXIT_STATUS
status := int(r.Get("smartctl.exit_status").Int())
- mask := 1 << bit
- return (status & mask) != 0
+
+ for _, b := range append([]int{bit}, bits...) {
+ mask := 1 << b
+ if (status & mask) != 0 {
+ return true
+ }
+ }
+
+ return false
}
diff --git a/src/go/plugin/go.d/modules/smartctl/scan.go b/src/go/plugin/go.d/modules/smartctl/scan.go
index 5564897a4..d904ca289 100644
--- a/src/go/plugin/go.d/modules/smartctl/scan.go
+++ b/src/go/plugin/go.d/modules/smartctl/scan.go
@@ -100,12 +100,12 @@ func (s *Smartctl) handleGuessedScsiScannedDevice(dev *scanDevice) {
}
resp, _ := s.exec.deviceInfo(dev.name, "sat", s.NoCheckPowerMode)
- if resp == nil || resp.Get("smartctl.exit_status").Int() != 0 {
+ if resp == nil || isExitStatusHasAnyBit(resp, 0, 1, 2) {
return
}
- atts, ok := newSmartDevice(resp).ataSmartAttributeTable()
- if !ok || len(atts) == 0 {
+ attrs, ok := newSmartDevice(resp).ataSmartAttributeTable()
+ if !ok || len(attrs) == 0 {
return
}
diff --git a/src/go/plugin/go.d/modules/uwsgi/client.go b/src/go/plugin/go.d/modules/uwsgi/client.go
index 403680743..487aeb930 100644
--- a/src/go/plugin/go.d/modules/uwsgi/client.go
+++ b/src/go/plugin/go.d/modules/uwsgi/client.go
@@ -5,35 +5,25 @@ package uwsgi
import (
"bytes"
"fmt"
+ "time"
"github.com/netdata/netdata/go/plugins/plugin/go.d/pkg/socket"
)
type uwsgiConn interface {
- connect() error
- disconnect()
queryStats() ([]byte, error)
}
func newUwsgiConn(conf Config) uwsgiConn {
- return &uwsgiClient{conn: socket.New(socket.Config{
- Address: conf.Address,
- ConnectTimeout: conf.Timeout.Duration(),
- ReadTimeout: conf.Timeout.Duration(),
- WriteTimeout: conf.Timeout.Duration(),
- })}
+ return &uwsgiClient{
+ address: conf.Address,
+ timeout: conf.Timeout.Duration(),
+ }
}
type uwsgiClient struct {
- conn socket.Client
-}
-
-func (c *uwsgiClient) connect() error {
- return c.conn.Connect()
-}
-
-func (c *uwsgiClient) disconnect() {
- _ = c.conn.Disconnect()
+ address string
+ timeout time.Duration
}
func (c *uwsgiClient) queryStats() ([]byte, error) {
@@ -42,7 +32,14 @@ func (c *uwsgiClient) queryStats() ([]byte, error) {
var err error
const readLineLimit = 1000 * 10
- clientErr := c.conn.Command("", func(bs []byte) bool {
+ cfg := socket.Config{
+ Address: c.address,
+ ConnectTimeout: c.timeout,
+ ReadTimeout: c.timeout,
+ WriteTimeout: c.timeout,
+ }
+
+ clientErr := socket.ConnectAndRead(cfg, func(bs []byte) bool {
b.Write(bs)
b.WriteByte('\n')
diff --git a/src/go/plugin/go.d/modules/uwsgi/collect.go b/src/go/plugin/go.d/modules/uwsgi/collect.go
index 3f4405354..a89704c81 100644
--- a/src/go/plugin/go.d/modules/uwsgi/collect.go
+++ b/src/go/plugin/go.d/modules/uwsgi/collect.go
@@ -27,14 +27,7 @@ type workerStats struct {
}
func (u *Uwsgi) collect() (map[string]int64, error) {
- conn, err := u.establishConn()
- if err != nil {
- return nil, fmt.Errorf("failed to connect: %v", err)
- }
-
- defer conn.disconnect()
-
- stats, err := conn.queryStats()
+ stats, err := u.conn.queryStats()
if err != nil {
return nil, fmt.Errorf("failed to query stats: %v", err)
}
@@ -110,16 +103,6 @@ func (u *Uwsgi) collectStats(mx map[string]int64, stats []byte) error {
return nil
}
-func (u *Uwsgi) establishConn() (uwsgiConn, error) {
- conn := u.newConn(u.Config)
-
- if err := conn.connect(); err != nil {
- return nil, err
- }
-
- return conn, nil
-}
-
func boolToInt(b bool) int64 {
if b {
return 1
diff --git a/src/go/plugin/go.d/modules/uwsgi/uwsgi.go b/src/go/plugin/go.d/modules/uwsgi/uwsgi.go
index 7fe98503e..c70dd656c 100644
--- a/src/go/plugin/go.d/modules/uwsgi/uwsgi.go
+++ b/src/go/plugin/go.d/modules/uwsgi/uwsgi.go
@@ -28,7 +28,6 @@ func New() *Uwsgi {
Address: "127.0.0.1:1717",
Timeout: web.Duration(time.Second * 1),
},
- newConn: newUwsgiConn,
charts: charts.Copy(),
seenWorkers: make(map[int]bool),
}
@@ -46,7 +45,7 @@ type Uwsgi struct {
charts *module.Charts
- newConn func(Config) uwsgiConn
+ conn uwsgiConn
seenWorkers map[int]bool
}
@@ -61,6 +60,8 @@ func (u *Uwsgi) Init() error {
return errors.New("address not set")
}
+ u.conn = newUwsgiConn(u.Config)
+
return nil
}
diff --git a/src/go/plugin/go.d/modules/uwsgi/uwsgi_test.go b/src/go/plugin/go.d/modules/uwsgi/uwsgi_test.go
index 900c48538..ce3f21255 100644
--- a/src/go/plugin/go.d/modules/uwsgi/uwsgi_test.go
+++ b/src/go/plugin/go.d/modules/uwsgi/uwsgi_test.go
@@ -81,7 +81,7 @@ func TestUwsgi_Cleanup(t *testing.T) {
"after check": {
prepare: func() *Uwsgi {
uw := New()
- uw.newConn = func(config Config) uwsgiConn { return prepareMockOk() }
+ uw.conn = prepareMockOk()
_ = uw.Check()
return uw
},
@@ -89,7 +89,7 @@ func TestUwsgi_Cleanup(t *testing.T) {
"after collect": {
prepare: func() *Uwsgi {
uw := New()
- uw.newConn = func(config Config) uwsgiConn { return prepareMockOk() }
+ uw.conn = prepareMockOk()
_ = uw.Collect()
return uw
},
@@ -122,10 +122,6 @@ func TestUwsgi_Check(t *testing.T) {
wantFail: false,
prepareMock: prepareMockOkNoWorkers,
},
- "err on connect": {
- wantFail: true,
- prepareMock: prepareMockErrOnConnect,
- },
"unexpected response": {
wantFail: true,
prepareMock: prepareMockUnexpectedResponse,
@@ -140,7 +136,7 @@ func TestUwsgi_Check(t *testing.T) {
t.Run(name, func(t *testing.T) {
uw := New()
mock := test.prepareMock()
- uw.newConn = func(config Config) uwsgiConn { return mock }
+ uw.conn = mock
if test.wantFail {
assert.Error(t, uw.Check())
@@ -229,12 +225,6 @@ func TestUwsgi_Collect(t *testing.T) {
disconnectBeforeCleanup: true,
disconnectAfterCleanup: true,
},
- "err on connect": {
- prepareMock: prepareMockErrOnConnect,
- wantCharts: len(charts),
- disconnectBeforeCleanup: false,
- disconnectAfterCleanup: false,
- },
"err on query stats": {
prepareMock: prepareMockErrOnQueryStats,
wantCharts: len(charts),
@@ -247,7 +237,7 @@ func TestUwsgi_Collect(t *testing.T) {
t.Run(name, func(t *testing.T) {
uw := New()
mock := test.prepareMock()
- uw.newConn = func(config Config) uwsgiConn { return mock }
+ uw.conn = mock
mx := uw.Collect()
@@ -257,10 +247,6 @@ func TestUwsgi_Collect(t *testing.T) {
module.TestMetricsHasAllChartsDims(t, uw.Charts(), mx)
}
assert.Equal(t, test.wantCharts, len(*uw.Charts()), "want charts")
-
- assert.Equal(t, test.disconnectBeforeCleanup, mock.disconnectCalled, "disconnect before cleanup")
- uw.Cleanup()
- assert.Equal(t, test.disconnectAfterCleanup, mock.disconnectCalled, "disconnect after cleanup")
})
}
}
@@ -277,12 +263,6 @@ func prepareMockOkNoWorkers() *mockUwsgiConn {
}
}
-func prepareMockErrOnConnect() *mockUwsgiConn {
- return &mockUwsgiConn{
- errOnConnect: true,
- }
-}
-
func prepareMockErrOnQueryStats() *mockUwsgiConn {
return &mockUwsgiConn{
errOnQueryStats: true,
@@ -300,21 +280,8 @@ func prepareMockEmptyResponse() *mockUwsgiConn {
}
type mockUwsgiConn struct {
- errOnConnect bool
- errOnQueryStats bool
- statsResponse []byte
- disconnectCalled bool
-}
-
-func (m *mockUwsgiConn) connect() error {
- if m.errOnConnect {
- return errors.New("mock.connect() error")
- }
- return nil
-}
-
-func (m *mockUwsgiConn) disconnect() {
- m.disconnectCalled = true
+ errOnQueryStats bool
+ statsResponse []byte
}
func (m *mockUwsgiConn) queryStats() ([]byte, error) {
diff --git a/src/go/plugin/go.d/pkg/socket/client.go b/src/go/plugin/go.d/pkg/socket/client.go
index 26ae1dfa6..c2bcbd9e9 100644
--- a/src/go/plugin/go.d/pkg/socket/client.go
+++ b/src/go/plugin/go.d/pkg/socket/client.go
@@ -21,6 +21,15 @@ func New(config Config) *Socket {
}
}
+func ConnectAndRead(config Config, process Processor) error {
+ s := New(config)
+ if err := s.Connect(); err != nil {
+ return err
+ }
+ defer func() { _ = s.Disconnect() }()
+ return read(s.conn, process, s.ReadTimeout)
+}
+
// Socket is the implementation of a socket client.
type Socket struct {
Config
diff --git a/src/health/health_event_loop.c b/src/health/health_event_loop.c
index b50812f2a..04d70e11f 100644
--- a/src/health/health_event_loop.c
+++ b/src/health/health_event_loop.c
@@ -75,10 +75,13 @@ static inline int rrdcalc_isrunnable(RRDCALC *rc, time_t now, time_t *next_run)
time_t needed = now + rc->config.before + rc->config.after;
if(needed + update_every < first || needed - update_every > last) {
- netdata_log_debug(D_HEALTH
- , "Health not examining alarm '%s.%s' yet (not enough data yet - we need %lu but got %lu - %lu)."
- , rrdcalc_chart_name(rc), rrdcalc_name(rc), (unsigned long) needed, (unsigned long) first
- , (unsigned long) last);
+ netdata_log_debug(D_HEALTH,
+ "Health not examining alarm '%s.%s' yet (not enough data yet - we need %lu but got %lu - %lu).",
+ rrdcalc_chart_name(rc),
+ rrdcalc_name(rc),
+ (unsigned long) needed,
+ (unsigned long) first,
+ (unsigned long) last);
return 0;
}
}
diff --git a/src/health/rrdvar.c b/src/health/rrdvar.c
index 4e28e62a3..75cb9739b 100644
--- a/src/health/rrdvar.c
+++ b/src/health/rrdvar.c
@@ -107,7 +107,7 @@ void rrdvar_host_variable_set(RRDHOST *host, const RRDVAR_ACQUIRED *rva, NETDATA
// CUSTOM CHART VARIABLES
const RRDVAR_ACQUIRED *rrdvar_chart_variable_add_and_acquire(RRDSET *st, const char *name) {
- if(unlikely(!st->rrdvars)) return NULL;
+ if(unlikely(!st || !st->rrdvars)) return NULL;
STRING *name_string = rrdvar_name_to_string(name);
const RRDVAR_ACQUIRED *rs = rrdvar_add_and_acquire(st->rrdvars, name_string, NAN);
@@ -116,7 +116,7 @@ const RRDVAR_ACQUIRED *rrdvar_chart_variable_add_and_acquire(RRDSET *st, const c
}
void rrdvar_chart_variable_set(RRDSET *st, const RRDVAR_ACQUIRED *rva, NETDATA_DOUBLE value) {
- if(unlikely(!st->rrdvars || !rva)) return;
+ if(unlikely(!st || !st->rrdvars || !rva)) return;
RRDVAR *rv = dictionary_acquired_item_value((const DICTIONARY_ITEM *)rva);
if(rv->value != value) {
diff --git a/src/health/rrdvar.h b/src/health/rrdvar.h
index 31530589d..3297984cb 100644
--- a/src/health/rrdvar.h
+++ b/src/health/rrdvar.h
@@ -19,7 +19,7 @@ void rrdvar_host_variable_set(RRDHOST *host, const RRDVAR_ACQUIRED *rva, NETDATA
int rrdvar_walkthrough_read(DICTIONARY *dict, int (*callback)(const DICTIONARY_ITEM *item, void *rrdvar, void *data), void *data);
#define rrdvar_host_variable_release(host, rva) rrdvar_release((host)->rrdvars, rva)
-#define rrdvar_chart_variable_release(st, rva) rrdvar_release((st)->rrdvars, rva)
+#define rrdvar_chart_variable_release(st, rva) do { if(st) rrdvar_release((st)->rrdvars, rva); } while(0)
void rrdvar_release(DICTIONARY *dict, const RRDVAR_ACQUIRED *rva);
NETDATA_DOUBLE rrdvar2number(const RRDVAR_ACQUIRED *rva);
diff --git a/src/libnetdata/socket/socket.c b/src/libnetdata/socket/socket.c
index 85f67a2ba..f907fefeb 100644
--- a/src/libnetdata/socket/socket.c
+++ b/src/libnetdata/socket/socket.c
@@ -1196,7 +1196,7 @@ inline int wait_on_socket_or_cancel_with_timeout(
.revents = 0,
};
- bool forever = (timeout_ms == 0);
+ bool forever = (timeout_ms <= 0);
while (timeout_ms > 0 || forever) {
if(nd_thread_signaled_to_cancel()) {