diff --git a/nixos/tests/netdata.nix b/nixos/tests/netdata.nix index a88bf1a77fa1..97a033f831a1 100644 --- a/nixos/tests/netdata.nix +++ b/nixos/tests/netdata.nix @@ -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) ''; } ) diff --git a/pkgs/tools/system/netdata/dashboard-v2-removal.patch b/pkgs/tools/system/netdata/dashboard-v2-removal.patch deleted file mode 100644 index 5eb7ef62eeb0..000000000000 --- a/pkgs/tools/system/netdata/dashboard-v2-removal.patch +++ /dev/null @@ -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) \ No newline at end of file diff --git a/pkgs/tools/system/netdata/dashboard-v3-add.patch b/pkgs/tools/system/netdata/dashboard-v3-add.patch new file mode 100644 index 000000000000..a5d3dd17484b --- /dev/null +++ b/pkgs/tools/system/netdata/dashboard-v3-add.patch @@ -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") diff --git a/pkgs/tools/system/netdata/default.nix b/pkgs/tools/system/netdata/default.nix index 00e2d44083cb..248b7693ba53 100644 --- a/pkgs/tools/system/netdata/default.nix +++ b/pkgs/tools/system/netdata/default.nix @@ -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 ]; }; }) diff --git a/pkgs/tools/system/netdata/ndsudo-fix-path.patch b/pkgs/tools/system/netdata/ndsudo-fix-path.patch index be70032fff04..a85a7369fefd 100644 --- a/pkgs/tools/system/netdata/ndsudo-fix-path.patch +++ b/pkgs/tools/system/netdata/ndsudo-fix-path.patch @@ -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; } diff --git a/pkgs/tools/system/netdata/use-local-libbacktrace.patch b/pkgs/tools/system/netdata/use-local-libbacktrace.patch new file mode 100644 index 000000000000..77d4facd92ad --- /dev/null +++ b/pkgs/tools/system/netdata/use-local-libbacktrace.patch @@ -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 @@ + "$<$: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) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 44ec2f5dc1f3..a512bcb125c2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4179,7 +4179,6 @@ with pkgs; protobuf = protobuf_21; }; netdataCloud = netdata.override { - withCloud = true; withCloudUi = true; };