netdata: 1.47.5 -> 2.4.0

This commit is contained in:
Ryan Horiguchi
2025-03-16 16:08:08 +01:00
parent 6cfc245621
commit 547813ca4c
7 changed files with 154 additions and 110 deletions
+9 -18
View File
@@ -22,6 +22,7 @@ import ./make-test-python.nix (
];
services.netdata = {
enable = true;
package = pkgs.netdataCloud;
python.recommendedPythonPackages = true;
configDir."apps_groups.conf" = pkgs.writeText "apps_groups.conf" ''
@@ -32,35 +33,25 @@ import ./make-test-python.nix (
};
testScript = ''
start_all()
start_all()
netdata.wait_for_unit("netdata.service")
netdata.wait_for_unit("netdata.service")
# wait for the service to listen before sending a request
netdata.wait_for_open_port(19999)
# wait for the service to listen before sending a request
netdata.wait_for_open_port(19999)
# check if the netdata main page loads.
netdata.succeed("curl --fail http://localhost:19999/")
netdata.succeed("curl --fail http://127.0.0.1:19999")
netdata.succeed("sleep 4")
# check if netdata can read disk ops for root owned processes.
# if > 0, successful. verifies both netdata working and
# apps.plugin has elevated capabilities.
url = "http://localhost:19999/api/v1/data?chart=user.root_disk_physical_io"
filter = '[.data[range(10)][2]] | add | . < 0'
# check if netdata api shows correct os
url = "http://127.0.0.1:19999/api/v3/info"
filter = '.agents[0].application.os.os | . == "NixOS"'
cmd = f"curl -s {url} | jq -e '{filter}'"
netdata.wait_until_succeeds(cmd)
# check if the control socket is available
netdata.succeed("sudo netdatacli ping")
# check that custom groups in apps_groups.conf are used.
# if > 0, successful. verifies that user-specified apps_group.conf
# is used.
url = "http://localhost:19999/api/v1/data?chart=app.netdata_test_cpu_utilization"
filter = '[.data[range(10)][2]] | add | . > 0'
cmd = f"curl -s {url} | jq -e '{filter}'"
netdata.wait_until_succeeds(cmd, timeout=30)
'';
}
)
@@ -1,25 +0,0 @@
# Original: https://github.com/netdata/netdata/pull/17240
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f37cbd18a..6db4c9f52 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -134,6 +134,7 @@ mark_as_advanced(DEFAULT_FEATURE_STATE)
# High-level features
option(ENABLE_ACLK "Enable Netdata Cloud support (ACLK)" ${DEFAULT_FEATURE_STATE})
option(ENABLE_CLOUD "Enable Netdata Cloud by default at runtime" ${DEFAULT_FEATURE_STATE})
+option(ENABLE_DASHBOARD_V2 "enable dashboard v2" True)
option(ENABLE_ML "Enable machine learning features" ${DEFAULT_FEATURE_STATE})
option(ENABLE_DBENGINE "Enable dbengine metrics storage" True)
@@ -2946,7 +2947,9 @@ endif()
#
include(src/web/gui/v1/dashboard_v1.cmake)
-include(src/web/gui/v2/dashboard_v2.cmake)
+if(ENABLE_DASHBOARD_V2)
+ include(src/web/gui/v2/dashboard_v2.cmake)
+endif()
include(src/web/gui/gui.cmake)
function(cat IN_FILE OUT_FILE)
@@ -0,0 +1,35 @@
diff --git a/packaging/cmake/Modules/NetdataDashboard.cmake b/packaging/cmake/Modules/NetdataDashboard.cmake
index 098eaffcf..e52375bd0 100644
--- a/packaging/cmake/Modules/NetdataDashboard.cmake
+++ b/packaging/cmake/Modules/NetdataDashboard.cmake
@@ -26,29 +26,12 @@ function(bundle_dashboard)
set(dashboard_src_dir "${CMAKE_BINARY_DIR}/dashboard-src")
set(dashboard_src_prefix "${dashboard_src_dir}/dist/agent")
set(dashboard_bin_dir "${CMAKE_BINARY_DIR}/dashboard-bin")
- set(DASHBOARD_URL "https://app.netdata.cloud/agent.tar.gz" CACHE STRING
- "URL used to fetch the local agent dashboard code")
message(STATUS "Preparing local agent dashboard code")
- message(STATUS " Fetching ${DASHBOARD_URL}")
- file(DOWNLOAD
- "${DASHBOARD_URL}"
- "${CMAKE_BINARY_DIR}/dashboard.tar.gz"
- TIMEOUT 180
- STATUS fetch_status)
-
- list(GET fetch_status 0 result)
-
- if(result)
- message(FATAL_ERROR "Failed to fetch dashboard code")
- else()
- message(STATUS " Fetching ${DASHBOARD_URL} -- Done")
- endif()
-
message(STATUS " Extracting dashboard code")
extract_gzipped_tarball(
- "${CMAKE_BINARY_DIR}/dashboard.tar.gz"
+ "@dashboardTarball@"
"${dashboard_src_dir}"
)
message(STATUS " Extracting dashboard code -- Done")
+73 -63
View File
@@ -1,19 +1,23 @@
{
lib,
stdenv,
fetchFromGitHub,
bash,
bison,
buildGoModule,
cmake,
cups,
curl,
darwin,
dlib,
fetchFromGitHub,
fetchurl,
flex,
freeipmi,
go,
google-cloud-cpp,
grpc,
jemalloc,
json_c,
lib,
libbacktrace,
libbpf,
libcap,
libelf,
@@ -32,60 +36,55 @@
overrideSDK,
pkg-config,
protobuf,
replaceVars,
snappy,
stdenv,
systemd,
withCloud ? false,
zlib,
withCloudUi ? false,
withConnPrometheus ? false,
withConnPubSub ? false,
withCups ? false,
withDBengine ? true,
withDBengine ? false,
withDebug ? false,
withEbpf ? false,
withIpmi ? (stdenv.hostPlatform.isLinux),
withLibbacktrace ? true,
withNdsudo ? false,
withNetfilter ? (stdenv.hostPlatform.isLinux),
withNetworkViewer ? (stdenv.hostPlatform.isLinux),
withSsl ? true,
withSystemdJournal ? (stdenv.hostPlatform.isLinux),
zlib,
withNdsudo ? false,
withML ? true,
}:
let
stdenv' = if stdenv.hostPlatform.isDarwin then overrideSDK stdenv "11.0" else stdenv;
in
stdenv'.mkDerivation (finalAttrs: {
version = "1.47.5";
version = "2.4.0";
pname = "netdata";
src = fetchFromGitHub {
owner = "netdata";
repo = "netdata";
rev = "v${finalAttrs.version}";
hash =
if withCloudUi then
"sha256-+cPYwjxg/+A5bNa517zg9xKEjUa8uPM9WD67tToPH5o="
# we delete the v2 GUI after fetching
else
"sha256-0aiBUkDymmdIT/u1y2PG30QYAvb8Zc4i8ZgjOtlzt+A=";
hash = "sha256-egHsWmhnrl8D59gr7uD5hBnleCOI8gVEBGwdO5GSnOg=";
fetchSubmodules = true;
# Remove v2 dashboard distributed under NCUL1. Make sure an empty
# Makefile.am exists, as autoreconf will get confused otherwise.
postFetch = lib.optionalString (!withCloudUi) ''
rm -rf $out/src/web/gui/v2/*
touch $out/src/web/gui/v2/Makefile.am
'';
};
strictDeps = true;
nativeBuildInputs = [
bison
cmake
pkg-config
makeWrapper
flex
go
makeWrapper
ninja
pkg-config
] ++ lib.optionals withCups [ cups.dev ];
# bash is only used to rewrite shebangs
buildInputs =
[
@@ -94,8 +93,10 @@ stdenv'.mkDerivation (finalAttrs: {
jemalloc
json_c
libuv
zlib
libyaml
lz4
protobuf
zlib
]
++ lib.optionals stdenv.hostPlatform.isDarwin (
with darwin.apple_sdk.frameworks;
@@ -110,34 +111,44 @@ stdenv'.mkDerivation (finalAttrs: {
libuuid
lm_sensors
]
++ lib.optionals withCups [ cups ]
++ lib.optionals withDBengine [ lz4 ]
++ lib.optionals withIpmi [ freeipmi ]
++ lib.optionals withNetfilter [
libmnl
libnetfilter_acct
]
++ lib.optionals withConnPrometheus [ snappy ]
++ lib.optionals withConnPubSub [
google-cloud-cpp
grpc
]
++ lib.optionals withConnPrometheus [ snappy ]
++ lib.optionals withCups [ cups ]
++ lib.optionals withEbpf [
libelf
libbpf
libelf
]
++ lib.optionals (withCloud || withConnPrometheus) [ protobuf ]
++ lib.optionals withSystemdJournal [ systemd ]
++ lib.optionals withSsl [ openssl ];
++ lib.optionals withIpmi [ freeipmi ]
++ lib.optionals withLibbacktrace [ libbacktrace ]
++ lib.optionals withNetfilter [
libmnl
libnetfilter_acct
]
++ lib.optionals withSsl [ openssl ]
++ lib.optionals withSystemdJournal [ systemd ];
patches = [
# Allow ndsudo to use non-hardcoded `PATH`
# See https://github.com/netdata/netdata/pull/17377#issuecomment-2183017868
# https://github.com/netdata/netdata/security/advisories/GHSA-pmhq-4cxq-wj93
./ndsudo-fix-path.patch
# Allow building without non-free v2 dashboard.
./dashboard-v2-removal.patch
];
patches =
[
# Allow ndsudo to use non-hardcoded `PATH`
# See https://github.com/netdata/netdata/pull/17377#issuecomment-2183017868
# https://github.com/netdata/netdata/security/advisories/GHSA-pmhq-4cxq-wj93
./ndsudo-fix-path.patch
./use-local-libbacktrace.patch
]
++ lib.optional withCloudUi (
replaceVars ./dashboard-v3-add.patch {
# FIXME web.archive.org link can be replace once https://github.com/netdata/netdata-cloud/issues/1081 resolved
# last update 03/16/2025 23:56:24
dashboardTarball = fetchurl {
url = "https://web.archive.org/web/20250316235624/https://app.netdata.cloud/agent.tar.gz";
hash = "sha256-Vtw+CbBgqGRenkis0ZR2/TLsoM83NjNA6mbndb95EK8=";
};
}
);
# Guard against unused build-time development inputs in closure. Without
# the ./skip-CONFIGURE_COMMAND.patch patch the closure retains inputs up
@@ -146,7 +157,7 @@ stdenv'.mkDerivation (finalAttrs: {
# We pick zlib.dev as a simple canary package with pkg-config input.
disallowedReferences = lib.optional (!withDebug) zlib.dev;
donStrip = withDebug;
donStrip = withDebug || withLibbacktrace;
env.NIX_CFLAGS_COMPILE = lib.optionalString withDebug "-O1 -ggdb -DNETDATA_INTERNAL_CHECKS=1";
postInstall =
@@ -178,10 +189,6 @@ stdenv'.mkDerivation (finalAttrs: {
mv $out/libexec/netdata/plugins.d/network-viewer.plugin \
$out/libexec/netdata/plugins.d/network-viewer.plugin.org
''}
${lib.optionalString (!withCloudUi) ''
rm -rf $out/share/netdata/web/index.html
cp $out/share/netdata/web/v1/index.html $out/share/netdata/web/index.html
''}
${lib.optionalString withNdsudo ''
mv $out/libexec/netdata/plugins.d/ndsudo \
$out/libexec/netdata/plugins.d/ndsudo.org
@@ -215,27 +222,29 @@ stdenv'.mkDerivation (finalAttrs: {
--replace-fail 'set(libconfigdir_POST "''${NETDATA_RUNTIME_PREFIX}/usr/lib/netdata/conf.d")' 'set(libconfigdir_POST "${placeholder "out"}/share/netdata/conf.d")' \
--replace-fail 'set(cachedir_POST "''${NETDATA_RUNTIME_PREFIX}/var/cache/netdata")' 'set(libconfigdir_POST "/var/cache/netdata")' \
--replace-fail 'set(registrydir_POST "''${NETDATA_RUNTIME_PREFIX}/var/lib/netdata/registry")' 'set(registrydir_POST "/var/lib/netdata/registry")' \
--replace-fail 'set(varlibdir_POST "''${NETDATA_RUNTIME_PREFIX}/var/lib/netdata")' 'set(varlibdir_POST "/var/lib/netdata")'
--replace-fail 'set(varlibdir_POST "''${NETDATA_RUNTIME_PREFIX}/var/lib/netdata")' 'set(varlibdir_POST "/var/lib/netdata")' \
--replace-fail 'set(BUILD_INFO_CMAKE_CACHE_ARCHIVE_PATH "usr/share/netdata")' 'set(BUILD_INFO_CMAKE_CACHE_ARCHIVE_PATH "${placeholder "out"}/share/netdata")'
'';
cmakeFlags = [
"-DWEB_DIR=share/netdata/web"
(lib.cmakeBool "ENABLE_CLOUD" withCloud)
# ACLK is agent cloud link.
(lib.cmakeBool "ENABLE_ACLK" withCloud)
(lib.cmakeBool "ENABLE_DASHBOARD_V2" withCloudUi)
(lib.cmakeBool "ENABLE_DBENGINE" withDBengine)
(lib.cmakeBool "ENABLE_PLUGIN_FREEIPMI" withIpmi)
(lib.cmakeBool "ENABLE_PLUGIN_SYSTEMD_JOURNAL" withSystemdJournal)
(lib.cmakeBool "ENABLE_PLUGIN_NETWORK_VIEWER" withNetworkViewer)
(lib.cmakeBool "ENABLE_PLUGIN_EBPF" withEbpf)
(lib.cmakeBool "ENABLE_PLUGIN_XENSTAT" false)
(lib.cmakeBool "ENABLE_PLUGIN_CUPS" withCups)
(lib.cmakeBool "ENABLE_DASHBOARD" withCloudUi)
# FIXME uncomment when https://github.com/netdata/netdata/issues/19901#issuecomment-2819701451 resolved
(lib.cmakeBool "ENABLE_DBENGINE" true)
# (lib.cmakeBool "ENABLE_DBENGINE" withDBengine)
(lib.cmakeBool "ENABLE_EXPORTER_PROMETHEUS_REMOTE_WRITE" withConnPrometheus)
(lib.cmakeBool "ENABLE_JEMALLOC" true)
(lib.cmakeBool "ENABLE_LIBBACKTRACE" withLibbacktrace)
(lib.cmakeBool "ENABLE_PLUGIN_CUPS" withCups)
(lib.cmakeBool "ENABLE_PLUGIN_EBPF" withEbpf)
(lib.cmakeBool "ENABLE_PLUGIN_FREEIPMI" withIpmi)
(lib.cmakeBool "ENABLE_PLUGIN_NETWORK_VIEWER" withNetworkViewer)
(lib.cmakeBool "ENABLE_PLUGIN_SYSTEMD_JOURNAL" withSystemdJournal)
(lib.cmakeBool "ENABLE_PLUGIN_XENSTAT" false)
(lib.cmakeBool "ENABLE_ML" withML)
# Suggested by upstream.
"-G Ninja"
];
] ++ lib.optional withML "-DNETDATA_DLIB_SOURCE_PATH=${dlib.src}";
postFixup = ''
wrapProgram $out/bin/netdata-claim.sh --prefix PATH : ${lib.makeBinPath [ openssl ]}
@@ -260,7 +269,7 @@ stdenv'.mkDerivation (finalAttrs: {
sourceRoot = "${finalAttrs.src.name}/src/go/plugin/go.d";
vendorHash = "sha256-NZ1tg+lvXNgypqmjjb5f7dHH6DIA9VOa4PMM4eq11n0=";
vendorHash = "sha256-PgQs3+++iD9Lg8psTBVzF4b+kGJzhV5yNQBkw/+Dqks=";
doCheck = false;
proxyVendor = true;
@@ -290,6 +299,7 @@ stdenv'.mkDerivation (finalAttrs: {
platforms = platforms.unix;
maintainers = with maintainers; [
mkg20001
rhoriguchi
];
};
})
@@ -1,10 +1,10 @@
# See https://github.com/netdata/netdata/pull/17377#issuecomment-2183017868
# https://github.com/netdata/netdata/security/advisories/GHSA-pmhq-4cxq-wj93
diff --git a/src/collectors/plugins.d/ndsudo.c b/src/collectors/plugins.d/ndsudo.c
diff --git a/src/collectors/utils/ndsudo.c b/src/collectors/utils/ndsudo.c
index d53ca9f28..b42a121bf 100644
--- a/src/collectors/plugins.d/ndsudo.c
+++ b/src/collectors/plugins.d/ndsudo.c
--- a/src/collectors/utils/ndsudo.c
+++ b/src/collectors/utils/ndsudo.c
@@ -357,9 +357,9 @@ int main(int argc, char *argv[]) {
return 3;
}
@@ -0,0 +1,34 @@
--- a/CMakeLists.txt 2025-03-29 00:48:23.397111607 +0100
+++ b/CMakeLists.txt 2025-03-29 00:45:42.296199537 +0100
@@ -501,10 +501,6 @@
message(STATUS "Added compiler and linker flags for better stack trace support")
endif()
-if(ENABLE_LIBBACKTRACE)
- netdata_bundle_libbacktrace()
-endif()
-
#
# check source compilation
#
@@ -2183,8 +2179,10 @@
"$<$<BOOL:${LINK_LIBM}>:m>"
"${SYSTEMD_LDFLAGS}")
-if(HAVE_LIBBACKTRACE)
- netdata_add_libbacktrace_to_target(libnetdata)
+if(ENABLE_LIBBACKTRACE AND HAVE_LIBBACKTRACE)
+ target_link_libraries(libnetdata ${LIBBACKTRACE_LIBRARIES})
+ target_include_directories(libnetdata PUBLIC ${LIBBACKTRACE_INCLUDE_DIRS})
+ target_compile_options(libnetdata PUBLIC ${LIBBACKTRACE_CFLAGS_OTHER})
endif()
if(OS_WINDOWS)
--- /dev/null
+++ b/pkgs/tools/system/netdata/use-local-libbacktrace.patch
@@ -0,0 +1,5 @@
+FIND_PATH(LIBBACKTRACE_INCLUDE_DIR NAMES backtrace.h)
+FIND_LIBRARY(LIBBACKTRACE_LIBRARIES NAMES libbacktrace)
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBBACKTRACE DEFAULT_MSG LIBBACKTRACE_LIBRARIES LIBBACKTRACE_INCLUDE_DIR)
-1
View File
@@ -4179,7 +4179,6 @@ with pkgs;
protobuf = protobuf_21;
};
netdataCloud = netdata.override {
withCloud = true;
withCloudUi = true;
};