diff --git a/.github/data/distros.yml b/.github/data/distros.yml index b2a17986418869..54083ca57a5010 100644 --- a/.github/data/distros.yml +++ b/.github/data/distros.yml @@ -99,6 +99,7 @@ include: - distro: centos version: "7" + base_image: "netdata/legacy:centos7" support_type: Core notes: '' eol_check: false @@ -143,6 +144,7 @@ include: notes: '' base_image: debian:bookworm eol_check: true + eol_lts: true bundle_sentry: <<: *default_sentry amd64: true @@ -169,15 +171,6 @@ include: repo_distro: debian/bullseye test: ebpf-core: false - - <<: *debian - version: "10" - base_image: debian:buster - bundle_sentry: *default_sentry - packages: - <<: *debian_packages - repo_distro: debian/buster - test: - ebpf-core: false - &fedora distro: fedora @@ -310,11 +303,6 @@ include: - arm64 test: ebpf-core: true - - <<: *ubuntu - version: "23.10" - packages: - <<: *ubuntu_packages - repo_distro: ubuntu/mantic - <<: *ubuntu version: "22.04" packages: @@ -326,6 +314,11 @@ include: <<: *ubuntu_packages repo_distro: ubuntu/focal legacy: # Info for platforms we used to support and still need to handle packages for + - <<: *debian + version: "10" + packages: + <<: *debian_packages + repo_distro: debian/buster - <<: *fedora version: "37" packages: @@ -347,6 +340,11 @@ legacy: # Info for platforms we used to support and still need to handle package packages: <<: *cs_packages repo_distro: el/c8s + - <<: *ubuntu + version: "23.10" + packages: + <<: *ubuntu_packages + repo_distro: ubuntu/mantic no_include: # Info for platforms not covered in CI - distro: docker version: "19.03 or newer" diff --git a/.github/scripts/gen-matrix-eol-check.py b/.github/scripts/gen-matrix-eol-check.py index 638527284fdc35..f080e0b56dce64 100755 --- a/.github/scripts/gen-matrix-eol-check.py +++ b/.github/scripts/gen-matrix-eol-check.py @@ -21,7 +21,8 @@ entries.append({ 'distro': distro, 'release': item['version'], - 'full_name': f'{ item["distro"] } { item["version"] }' + 'full_name': f'{ item["distro"] } { item["version"] }', + 'lts': 1 if 'eol_lts' in item and item['eol_lts'] else 0, }) entries.sort(key=lambda k: (k['distro'], k['release'])) diff --git a/.github/scripts/platform-impending-eol.py b/.github/scripts/platform-impending-eol.py index c57e5edde72a4e..1793193f05271f 100755 --- a/.github/scripts/platform-impending-eol.py +++ b/.github/scripts/platform-impending-eol.py @@ -16,6 +16,7 @@ DISTRO = sys.argv[1] RELEASE = sys.argv[2] +LTS = sys.argv[3] EXIT_NOT_IMPENDING = 0 EXIT_IMPENDING = 1 @@ -49,10 +50,19 @@ eol = datetime.date.fromisoformat(data['eol']) +if LTS == '1' and 'extendedSupport' in data: + datetime.date.fromisoformat(data['extendedSupport']) +else: + LTS = False + offset = abs(eol - NOW) if offset <= LEAD_DAYS: - print(data['eol']) + if LTS: + print(data['extendedSupport']) + else: + print(data['eol']) + sys.exit(EXIT_IMPENDING) else: sys.exit(EXIT_NOT_IMPENDING) diff --git a/.github/workflows/generate-integrations.yml b/.github/workflows/generate-integrations.yml index 8287f9295935c4..e968186c609fbe 100644 --- a/.github/workflows/generate-integrations.yml +++ b/.github/workflows/generate-integrations.yml @@ -7,7 +7,7 @@ on: - master paths: # If any of these files change, we need to regenerate integrations.js. - 'src/collectors/**/metadata.yaml' - - 'src/go/collectors/**/metadata.yaml' + - 'src/go/plugin/**/metadata.yaml' - 'src/exporting/**/metadata.yaml' - 'src/health/notifications/**/metadata.yaml' - 'integrations/templates/**' diff --git a/.github/workflows/platform-eol-check.yml b/.github/workflows/platform-eol-check.yml index 185640f2f7b8bb..c5b0dda1de63fe 100644 --- a/.github/workflows/platform-eol-check.yml +++ b/.github/workflows/platform-eol-check.yml @@ -73,7 +73,7 @@ jobs: id: check shell: sh {0} run: | - d="$(.github/scripts/platform-impending-eol.py ${{ matrix.distro }} ${{ matrix.release }})" + d="$(.github/scripts/platform-impending-eol.py ${{ matrix.distro }} ${{ matrix.release }}) ${{ matrix.lts }}" case $? in 0) echo "pending=false" >> "${GITHUB_OUTPUT}" ;; 1) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32e759e2e7be69..324023e1e54ab0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,15 @@ **Merged pull requests:** +- 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)) +- 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)) - 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)) @@ -15,6 +24,7 @@ - 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)) @@ -33,6 +43,7 @@ - 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)) @@ -88,6 +99,7 @@ - sysinfo \(WinAPI\) [\#17857](https://github.com/netdata/netdata/pull/17857) ([thiagoftsm](https://github.com/thiagoftsm)) - Run the agent as a Windows service. [\#17766](https://github.com/netdata/netdata/pull/17766) ([vkalintiris](https://github.com/vkalintiris)) - add Win CPU interrupts [\#17753](https://github.com/netdata/netdata/pull/17753) ([thiagoftsm](https://github.com/thiagoftsm)) +- Relax strict version constraints for DEB package dependencies. [\#17681](https://github.com/netdata/netdata/pull/17681) ([Ferroin](https://github.com/Ferroin)) ## [v1.46.1](https://github.com/netdata/netdata/tree/v1.46.1) (2024-06-21) @@ -395,17 +407,6 @@ - Significantly simplify the protobuf handling in CMake. [\#17533](https://github.com/netdata/netdata/pull/17533) ([Ferroin](https://github.com/Ferroin)) - Clean up handling of compiler flags in CMake. [\#17532](https://github.com/netdata/netdata/pull/17532) ([Ferroin](https://github.com/Ferroin)) - add features section requested on Okta review [\#17531](https://github.com/netdata/netdata/pull/17531) ([hugovalente-pm](https://github.com/hugovalente-pm)) -- Don’t unnescesarily clean repo during static builds. [\#17530](https://github.com/netdata/netdata/pull/17530) ([Ferroin](https://github.com/Ferroin)) -- Revert changes to ENABLE\_CLOUD option. [\#17528](https://github.com/netdata/netdata/pull/17528) ([Ferroin](https://github.com/Ferroin)) -- fix \_ndpath in detect\_existing\_install\(\) [\#17527](https://github.com/netdata/netdata/pull/17527) ([ilyam8](https://github.com/ilyam8)) -- go.d prometheus fix units for snmp\_exporter [\#17524](https://github.com/netdata/netdata/pull/17524) ([ilyam8](https://github.com/ilyam8)) -- update the file [\#17522](https://github.com/netdata/netdata/pull/17522) ([Ancairon](https://github.com/Ancairon)) -- Events tab documentation updates [\#17521](https://github.com/netdata/netdata/pull/17521) ([Ancairon](https://github.com/Ancairon)) -- Bump github.com/docker/docker from 26.0.2+incompatible to 26.1.0+incompatible in /src/go/collectors/go.d.plugin [\#17520](https://github.com/netdata/netdata/pull/17520) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Anomaly Advisor documentation edits [\#17518](https://github.com/netdata/netdata/pull/17518) ([Ancairon](https://github.com/Ancairon)) -- Make CMake options for platform-dependent plugins depend on being build for a supported platform. [\#17517](https://github.com/netdata/netdata/pull/17517) ([Ferroin](https://github.com/Ferroin)) -- Support to WolfSSL \(Step 1\) [\#17516](https://github.com/netdata/netdata/pull/17516) ([thiagoftsm](https://github.com/thiagoftsm)) -- add smartctl to ndsudo [\#17515](https://github.com/netdata/netdata/pull/17515) ([ilyam8](https://github.com/ilyam8)) ## [v1.45.6](https://github.com/netdata/netdata/tree/v1.45.6) (2024-06-05) diff --git a/CMakeLists.txt b/CMakeLists.txt index 08c0ba2d06f291..a3ac834448a18d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1299,6 +1299,7 @@ set(WINDOWS_PLUGIN_FILES src/collectors/windows.plugin/perflib-dump.c src/collectors/windows.plugin/perflib-storage.c src/collectors/windows.plugin/perflib-processor.c + src/collectors/windows.plugin/perflib-objects.c src/collectors/windows.plugin/perflib-network.c src/collectors/windows.plugin/perflib-memory.c src/collectors/windows.plugin/perflib-processes.c diff --git a/docs/developer-and-contributor-corner/collect-unbound-metrics.md b/docs/developer-and-contributor-corner/collect-unbound-metrics.md index 0f80395fbc7064..ac997b7f93a2a5 100644 --- a/docs/developer-and-contributor-corner/collect-unbound-metrics.md +++ b/docs/developer-and-contributor-corner/collect-unbound-metrics.md @@ -58,9 +58,7 @@ configuring the collector. You may not need to do any more configuration to have Netdata collect your Unbound metrics. If you followed the steps above to enable `remote-control` and make your Unbound files readable by Netdata, that should -be enough. Restart Netdata with `sudo systemctl restart netdata`, or the [appropriate -method](/packaging/installer/README.md#maintaining-a-netdata-agent-installation) for your system. You should see Unbound metrics in your Netdata -dashboard! +be enough. Restart Netdata with `sudo systemctl restart netdata`, or the appropriate method for your system. You should see Unbound metrics in your Netdata dashboard! ![Some charts showing Unbound metrics in real-time](https://user-images.githubusercontent.com/1153921/69659974-93160f00-103c-11ea-88e6-27e9efcf8c0d.png) @@ -93,7 +91,7 @@ jobs: tls_skip_verify: yes tls_cert: /path/to/unbound_control.pem tls_key: /path/to/unbound_control.key - + - name: local address: 127.0.0.1:8953 cumulative: yes @@ -101,16 +99,15 @@ jobs: ``` Netdata will attempt to read `unbound.conf` to get the appropriate `address`, `cumulative`, `use_tls`, `tls_cert`, and -`tls_key` parameters. +`tls_key` parameters. -Restart Netdata with `sudo systemctl restart netdata`, or the [appropriate -method](/packaging/installer/README.md#maintaining-a-netdata-agent-installation) for your system. +Restart Netdata with `sudo systemctl restart netdata`, or the appropriate method for your system. ### Manual setup for a remote Unbound server Collecting metrics from remote Unbound servers requires manual configuration. There are too many possibilities to cover all remote connections here, but the [default `unbound.conf` -file](https://github.com/netdata/netdata/blob/master/src/go/collectors/go.d.plugin/config/go.d/unbound.conf) contains a few useful examples: +file](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/unbound.conf) contains a few useful examples: ```yaml jobs: @@ -132,7 +129,7 @@ jobs: ``` To see all the available options, see the default [unbound.conf -file](https://github.com/netdata/netdata/blob/master/src/go/collectors/go.d.plugin/config/go.d/unbound.conf). +file](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/unbound.conf). ## What's next? diff --git a/integrations/integrations.js b/integrations/integrations.js index 730c9e30080578..0b17402a9a07ca 100644 --- a/integrations/integrations.js +++ b/integrations/integrations.js @@ -4090,7 +4090,7 @@ export const integrations = [ "most_popular": false }, "overview": "# Fail2ban\n\nPlugin: go.d.plugin\nModule: fail2ban\n\n## Overview\n\nThis collector tracks two main metrics for each jail: currently banned IPs and active failure incidents. It relies on the [`fail2ban-client`](https://linux.die.net/man/1/fail2ban-client) CLI tool but avoids directly executing the binary. Instead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment. This approach eliminates the need to use `sudo`, improving security and potentially simplifying permission management.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n", - "setup": "## Setup\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### File\n\nThe configuration file name for this integration is `go.d/fail2ban.conf`.\n\n\nYou can edit the configuration file using the `edit-config` script from the\nNetdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/fail2ban.conf\n```\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary=\"Config options\" %}\n| Name | Description | Default | Required |\n|:----|:-----------|:-------|:--------:|\n| update_every | Data collection frequency. | 10 | no |\n| timeout | fail2ban-client binary execution timeout. | 2 | no |\n\n{% /details %}\n#### Examples\n\n##### Custom update_every\n\nAllows you to override the default data collection interval.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: fail2ban\n update_every: 5 # Collect Fail2Ban jails statistics every 5 seconds\n\n```\n{% /details %}\n", + "setup": "## Setup\n\n### Prerequisites\n\n#### For Netdata running in a Docker container\n\n1. **Install Fail2ban client**.\n\n Ensure `fail2ban-client` is available in the container by setting the environment variable `NETDATA_EXTRA_DEB_PACKAGES=fail2ban` when starting the container.\n\n2. **Mount host's `/var/run` directory**.\n\n Mount the host machine's `/var/run` directory to `/host/var/run` inside your Netdata container. This grants Netdata access to the Fail2ban socket file, typically located at `/var/run/fail2ban/fail2ban.sock`.\n\n\n\n### Configuration\n\n#### File\n\nThe configuration file name for this integration is `go.d/fail2ban.conf`.\n\n\nYou can edit the configuration file using the `edit-config` script from the\nNetdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/fail2ban.conf\n```\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary=\"Config options\" %}\n| Name | Description | Default | Required |\n|:----|:-----------|:-------|:--------:|\n| update_every | Data collection frequency. | 10 | no |\n| timeout | fail2ban-client binary execution timeout. | 2 | no |\n\n{% /details %}\n#### Examples\n\n##### Custom update_every\n\nAllows you to override the default data collection interval.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: fail2ban\n update_every: 5 # Collect Fail2Ban jails statistics every 5 seconds\n\n```\n{% /details %}\n", "troubleshooting": "## Troubleshooting\n\n### Debug Mode\n\nTo troubleshoot issues with the `fail2ban` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m fail2ban\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `fail2ban` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep fail2ban\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep fail2ban /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep fail2ban\n```\n\n", "alerts": "## Alerts\n\nThere are no alerts configured by default for this integration.\n", "metrics": "## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per jail\n\nThese metrics refer to the Jail.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| jail | Jail's name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| fail2ban.jail_banned_ips | banned | addresses |\n| fail2ban.jail_active_failures | active_failures | failures |\n\n", @@ -4514,7 +4514,7 @@ export const integrations = [ "setup": "## Setup\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### File\n\nThe configuration file name for this integration is `go.d/ipfs.conf`.\n\n\nYou can edit the configuration file using the `edit-config` script from the\nNetdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/ipfs.conf\n```\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary=\"\" %}\n| Name | Description | Default | Required |\n|:----|:-----------|:-------|:--------:|\n| update_every | Data collection frequency. | 1 | no |\n| autodetection_retry | Recheck interval in seconds. Zero means no recheck will be scheduled. | 0 | no |\n| repoapi | Enables querying the [/api/v0/stats/repo](https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-repo-stat) endpoint for repository statistics. | no | no |\n| pinapi | Enables querying the [/api/v0/pin/ls](https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-pin-ls) endpoint to retrieve a list of all pinned objects. | no | no |\n| url | Server URL. | http://127.0.0.1:5001 | yes |\n| timeout | HTTP request timeout. | 1 | no |\n| username | Username for basic HTTP authentication. | | no |\n| password | Password for basic HTTP authentication. | | no |\n| proxy_url | Proxy URL. | | no |\n| proxy_username | Username for proxy basic HTTP authentication. | | no |\n| proxy_password | Password for proxy basic HTTP authentication. | | no |\n| method | HTTP request method. | POST | no |\n| body | HTTP request body. | | no |\n| headers | HTTP request headers. | | no |\n| not_follow_redirects | Redirect handling policy. Controls whether the client follows redirects. | no | no |\n| tls_skip_verify | Server certificate chain and hostname validation policy. Controls whether the client performs this check. | no | no |\n| tls_ca | Certification authority that the client uses when verifying the server's certificates. | | no |\n| tls_cert | Client TLS certificate. | | no |\n| tls_key | Client TLS key. | | no |\n\n{% /details %}\n#### Examples\n\n##### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:5001\n\n```\n##### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:5001\n\n - name: remote\n url: http://192.0.2.1:5001\n\n```\n{% /details %}\n", "troubleshooting": "## Troubleshooting\n\n### Debug Mode\n\nTo troubleshoot issues with the `ipfs` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m ipfs\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `ipfs` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep ipfs\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep ipfs /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep ipfs\n```\n\n", "alerts": "## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ ipfs_datastore_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ipfs.conf) | ipfs.datastore_space_utilization | IPFS datastore utilization |\n", - "metrics": "## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per IPFS instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ipfs.bandwidth | in, out | bytes/s |\n| ipfs.peers | peers | peers |\n| ipfs.repo_size | size | GiB |\n| ipfs.repo_objects | objects | objects |\n| ipfs.repo_pinned_objects | recursive_pins | objects |\n\n", + "metrics": "## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per IPFS instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ipfs.bandwidth | in, out | bytes/s |\n| ipfs.peers | peers | peers |\n| ipfs.datastore_space_utilization | used | percent |\n| ipfs.repo_size | size | bytes |\n| ipfs.repo_objects | objects | objects |\n| ipfs.repo_pinned_objects | pinned, recursive_pins | objects |\n\n", "integration_type": "collector", "id": "go.d.plugin-ipfs-IPFS", "edit_link": "https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/modules/ipfs/metadata.yaml", @@ -20017,7 +20017,7 @@ export const integrations = [ ], "additional_info": "Did you know you can also deploy Netdata on your OS using {% goToCategory navigateToSettings=$navigateToSettings categoryId=\"deploy.docker-kubernetes\" %}Kubernetes{% /goToCategory %} or {% goToCategory categoryId=\"deploy.docker-kubernetes\" %}Docker{% /goToCategory %}?\n", "related_resources": {}, - "platform_info": "We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 12 | Core | i386, amd64, armhf, arm64 | |\n| 11 | Core | i386, amd64, armhf, arm64 | |\n| 10 | Core | i386, amd64, armhf, arm64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.", + "platform_info": "We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 12 | Core | i386, amd64, armhf, arm64 | |\n| 11 | Core | i386, amd64, armhf, arm64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.", "quick_start": -1, "integration_type": "deploy", "edit_link": "https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml" @@ -20623,7 +20623,7 @@ export const integrations = [ ], "additional_info": "Did you know you can also deploy Netdata on your OS using {% goToCategory navigateToSettings=$navigateToSettings categoryId=\"deploy.docker-kubernetes\" %}Kubernetes{% /goToCategory %} or {% goToCategory categoryId=\"deploy.docker-kubernetes\" %}Docker{% /goToCategory %}?\n", "related_resources": {}, - "platform_info": "We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 24.04 | Core | amd64, armhf, arm64 | |\n| 23.10 | Core | amd64, armhf, arm64 | |\n| 22.04 | Core | amd64, armhf, arm64 | |\n| 20.04 | Core | amd64, armhf, arm64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.", + "platform_info": "We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 24.04 | Core | amd64, armhf, arm64 | |\n| 22.04 | Core | amd64, armhf, arm64 | |\n| 20.04 | Core | amd64, armhf, arm64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.", "quick_start": -1, "integration_type": "deploy", "edit_link": "https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml" diff --git a/integrations/integrations.json b/integrations/integrations.json index c29c00e0a7af8f..7654d9555c45cf 100644 --- a/integrations/integrations.json +++ b/integrations/integrations.json @@ -4088,7 +4088,7 @@ "most_popular": false }, "overview": "# Fail2ban\n\nPlugin: go.d.plugin\nModule: fail2ban\n\n## Overview\n\nThis collector tracks two main metrics for each jail: currently banned IPs and active failure incidents. It relies on the [`fail2ban-client`](https://linux.die.net/man/1/fail2ban-client) CLI tool but avoids directly executing the binary. Instead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment. This approach eliminates the need to use `sudo`, improving security and potentially simplifying permission management.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n", - "setup": "## Setup\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### File\n\nThe configuration file name for this integration is `go.d/fail2ban.conf`.\n\n\nYou can edit the configuration file using the `edit-config` script from the\nNetdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/fail2ban.conf\n```\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n| Name | Description | Default | Required |\n|:----|:-----------|:-------|:--------:|\n| update_every | Data collection frequency. | 10 | no |\n| timeout | fail2ban-client binary execution timeout. | 2 | no |\n\n#### Examples\n\n##### Custom update_every\n\nAllows you to override the default data collection interval.\n\n```yaml\njobs:\n - name: fail2ban\n update_every: 5 # Collect Fail2Ban jails statistics every 5 seconds\n\n```\n", + "setup": "## Setup\n\n### Prerequisites\n\n#### For Netdata running in a Docker container\n\n1. **Install Fail2ban client**.\n\n Ensure `fail2ban-client` is available in the container by setting the environment variable `NETDATA_EXTRA_DEB_PACKAGES=fail2ban` when starting the container.\n\n2. **Mount host's `/var/run` directory**.\n\n Mount the host machine's `/var/run` directory to `/host/var/run` inside your Netdata container. This grants Netdata access to the Fail2ban socket file, typically located at `/var/run/fail2ban/fail2ban.sock`.\n\n\n\n### Configuration\n\n#### File\n\nThe configuration file name for this integration is `go.d/fail2ban.conf`.\n\n\nYou can edit the configuration file using the `edit-config` script from the\nNetdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/fail2ban.conf\n```\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n| Name | Description | Default | Required |\n|:----|:-----------|:-------|:--------:|\n| update_every | Data collection frequency. | 10 | no |\n| timeout | fail2ban-client binary execution timeout. | 2 | no |\n\n#### Examples\n\n##### Custom update_every\n\nAllows you to override the default data collection interval.\n\n```yaml\njobs:\n - name: fail2ban\n update_every: 5 # Collect Fail2Ban jails statistics every 5 seconds\n\n```\n", "troubleshooting": "## Troubleshooting\n\n### Debug Mode\n\nTo troubleshoot issues with the `fail2ban` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m fail2ban\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `fail2ban` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep fail2ban\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep fail2ban /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep fail2ban\n```\n\n", "alerts": "## Alerts\n\nThere are no alerts configured by default for this integration.\n", "metrics": "## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per jail\n\nThese metrics refer to the Jail.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| jail | Jail's name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| fail2ban.jail_banned_ips | banned | addresses |\n| fail2ban.jail_active_failures | active_failures | failures |\n\n", @@ -4512,7 +4512,7 @@ "setup": "## Setup\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### File\n\nThe configuration file name for this integration is `go.d/ipfs.conf`.\n\n\nYou can edit the configuration file using the `edit-config` script from the\nNetdata [config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/ipfs.conf\n```\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n| Name | Description | Default | Required |\n|:----|:-----------|:-------|:--------:|\n| update_every | Data collection frequency. | 1 | no |\n| autodetection_retry | Recheck interval in seconds. Zero means no recheck will be scheduled. | 0 | no |\n| repoapi | Enables querying the [/api/v0/stats/repo](https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-repo-stat) endpoint for repository statistics. | no | no |\n| pinapi | Enables querying the [/api/v0/pin/ls](https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-pin-ls) endpoint to retrieve a list of all pinned objects. | no | no |\n| url | Server URL. | http://127.0.0.1:5001 | yes |\n| timeout | HTTP request timeout. | 1 | no |\n| username | Username for basic HTTP authentication. | | no |\n| password | Password for basic HTTP authentication. | | no |\n| proxy_url | Proxy URL. | | no |\n| proxy_username | Username for proxy basic HTTP authentication. | | no |\n| proxy_password | Password for proxy basic HTTP authentication. | | no |\n| method | HTTP request method. | POST | no |\n| body | HTTP request body. | | no |\n| headers | HTTP request headers. | | no |\n| not_follow_redirects | Redirect handling policy. Controls whether the client follows redirects. | no | no |\n| tls_skip_verify | Server certificate chain and hostname validation policy. Controls whether the client performs this check. | no | no |\n| tls_ca | Certification authority that the client uses when verifying the server's certificates. | | no |\n| tls_cert | Client TLS certificate. | | no |\n| tls_key | Client TLS key. | | no |\n\n#### Examples\n\n##### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:5001\n\n```\n##### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:5001\n\n - name: remote\n url: http://192.0.2.1:5001\n\n```\n", "troubleshooting": "## Troubleshooting\n\n### Debug Mode\n\nTo troubleshoot issues with the `ipfs` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m ipfs\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `ipfs` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep ipfs\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep ipfs /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep ipfs\n```\n\n", "alerts": "## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ ipfs_datastore_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ipfs.conf) | ipfs.datastore_space_utilization | IPFS datastore utilization |\n", - "metrics": "## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per IPFS instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ipfs.bandwidth | in, out | bytes/s |\n| ipfs.peers | peers | peers |\n| ipfs.repo_size | size | GiB |\n| ipfs.repo_objects | objects | objects |\n| ipfs.repo_pinned_objects | recursive_pins | objects |\n\n", + "metrics": "## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per IPFS instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ipfs.bandwidth | in, out | bytes/s |\n| ipfs.peers | peers | peers |\n| ipfs.datastore_space_utilization | used | percent |\n| ipfs.repo_size | size | bytes |\n| ipfs.repo_objects | objects | objects |\n| ipfs.repo_pinned_objects | pinned, recursive_pins | objects |\n\n", "integration_type": "collector", "id": "go.d.plugin-ipfs-IPFS", "edit_link": "https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/modules/ipfs/metadata.yaml", @@ -20015,7 +20015,7 @@ ], "additional_info": "Did you know you can also deploy Netdata on your OS using Kubernetes or Docker?\n", "related_resources": {}, - "platform_info": "We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 12 | Core | i386, amd64, armhf, arm64 | |\n| 11 | Core | i386, amd64, armhf, arm64 | |\n| 10 | Core | i386, amd64, armhf, arm64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.", + "platform_info": "We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 12 | Core | i386, amd64, armhf, arm64 | |\n| 11 | Core | i386, amd64, armhf, arm64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.", "quick_start": -1, "integration_type": "deploy", "edit_link": "https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml" @@ -20621,7 +20621,7 @@ ], "additional_info": "Did you know you can also deploy Netdata on your OS using Kubernetes or Docker?\n", "related_resources": {}, - "platform_info": "We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 24.04 | Core | amd64, armhf, arm64 | |\n| 23.10 | Core | amd64, armhf, arm64 | |\n| 22.04 | Core | amd64, armhf, arm64 | |\n| 20.04 | Core | amd64, armhf, arm64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.", + "platform_info": "We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 24.04 | Core | amd64, armhf, arm64 | |\n| 22.04 | Core | amd64, armhf, arm64 | |\n| 20.04 | Core | amd64, armhf, arm64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.", "quick_start": -1, "integration_type": "deploy", "edit_link": "https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml" diff --git a/netdata.spec.in b/netdata.spec.in index d9b01b5151e416..5b488fcbf6b2f5 100644 --- a/netdata.spec.in +++ b/netdata.spec.in @@ -820,6 +820,9 @@ Conflicts: %{name} < %{version} Suggests: nvme-cli Suggests: sudo %endif +%if 0%{?centos_ver} != 7 && 0%{?amazon_linux} != 2 +Recommends: lm_sensors +%endif %description plugin-go This plugin adds a selection of additional collectors written in Go to the Netdata Agent @@ -1021,6 +1024,8 @@ fi %caps(cap_sys_admin,cap_sys_ptrace,cap_dac_read_search=ep) %attr(0750,root,netdata) %{_libexecdir}/%{name}/plugins.d/network-viewer.plugin %changelog +* Wed Jul 03 2024 Konstantin Shalygin 0.0.0-26 +- Added lm_sensors as weak dependency for plugin-go package * Tue Feb 06 2024 Austin Hemmelgarn 0.0.0-25 - Add package for network-viewer plugin * Thu Oct 26 2023 Austin Hemmelgarn 0.0.0-24 diff --git a/packaging/PLATFORM_SUPPORT.md b/packaging/PLATFORM_SUPPORT.md index c0e66f29066cc3..ad1cd4168a41a1 100644 --- a/packaging/PLATFORM_SUPPORT.md +++ b/packaging/PLATFORM_SUPPORT.md @@ -67,7 +67,6 @@ to work on these platforms with minimal user effort. | Docker | 19.03 or newer | x86\_64, i386, ARMv7, AArch64, POWER8+ | See our [Docker documentation](/packaging/docker/README.md) for more info on using Netdata on Docker | | Debian | 12.x | x86\_64, i386, ARMv7, AArch64 | | | Debian | 11.x | x86\_64, i386, ARMv7, AArch64 | | -| Debian | 10.x | x86\_64, i386, ARMv7, AArch64 | | | Fedora | 40 | x86\_64, AArch64 | | | Fedora | 39 | x86\_64, AArch64 | | | openSUSE | Leap 15.5 | x86\_64, AArch64 | | @@ -78,7 +77,6 @@ to work on these platforms with minimal user effort. | Red Hat Enterprise Linux | 8.x | x86\_64, AArch64 | | | Red Hat Enterprise Linux | 7.x | x86\_64 | | | Ubuntu | 24.04 | x86\_64, AArch64, ARMv7 | | -| Ubuntu | 23.10 | x86\_64, AArch64, ARMv7 | | | Ubuntu | 22.04 | x86\_64, ARMv7, AArch64 | | | Ubuntu | 20.04 | x86\_64, ARMv7, AArch64 | | @@ -157,14 +155,14 @@ This is a list of platforms that we have supported in the recent past but no lon | Alpine Linux | 3.16 | EOL as of 2024-05-23 | | Alpine Linux | 3.15 | EOL as of 2023-11-01 | | Alpine Linux | 3.14 | EOL as of 2023-05-01 | -| Debian | 9.x | EOL as of 2022-06-30 | +| Debian | 10.x | EOL as of 2024-07-01 | | Fedora | 38 | EOL as of 2024-05-14 | | Fedora | 37 | EOL as of 2023-12-05 | | openSUSE | Leap 15.4 | EOL as of 2023-12-07 | | openSUSE | Leap 15.3 | EOL as of 2022-12-01 | +| Ubuntu | 23.10 | EOL as of 2024-07-01 | | Ubuntu | 23.04 | EOL as of 2024-01-20 | | Ubuntu | 22.10 | EOL as of 2023-07-20 | -| Ubuntu | 21.10 | EOL as of 2022-07-31 | | Ubuntu | 18.04 | EOL as of 2023-04-02 | ## Static builds diff --git a/packaging/cmake/Modules/Packaging.cmake b/packaging/cmake/Modules/Packaging.cmake index 1dd2328cdf488e..3bb70ecf587723 100644 --- a/packaging/cmake/Modules/Packaging.cmake +++ b/packaging/cmake/Modules/Packaging.cmake @@ -56,43 +56,43 @@ set(CPACK_DEBIAN_NETDATA_PACKAGE_NAME "netdata") set(CPACK_DEBIAN_NETDATA_PACKAGE_SECTION "net") set(CPACK_DEBIAN_NETDATA_PACKAGE_PREDEPENDS "adduser, libcap2-bin") set(CPACK_DEBIAN_NETDATA_PACKAGE_SUGGESTS - "netdata-plugin-cups (= ${CPACK_PACKAGE_VERSION}), netdata-plugin-freeipmi (= ${CPACK_PACKAGE_VERSION})") + "netdata-plugin-cups, netdata-plugin-freeipmi") set(CPACK_DEBIAN_NETDATA_PACKAGE_RECOMMENDS - "netdata-plugin-systemd-journal (= ${CPACK_PACKAGE_VERSION}), \ -netdata-plugin-logs-management (= ${CPACK_PACKAGE_VERSION}), \ -netdata-plugin-network-viewer (= ${CPACK_PACKAGE_VERSION})") + "netdata-plugin-systemd-journal, \ +netdata-plugin-logs-management, \ +netdata-plugin-network-viewer") set(CPACK_DEBIAN_NETDATA_PACKAGE_CONFLICTS "netdata-core, netdata-plugins-bash, netdata-plugins-python, netdata-web") -list(APPEND _main_deps "netdata-plugin-chartsd (= ${CPACK_PACKAGE_VERSION})") -list(APPEND _main_deps "netdata-plugin-pythond (= ${CPACK_PACKAGE_VERSION})") +list(APPEND _main_deps "netdata-plugin-chartsd") +list(APPEND _main_deps "netdata-plugin-pythond") if(ENABLE_PLUGIN_APPS) - list(APPEND _main_deps "netdata-plugin-apps (= ${CPACK_PACKAGE_VERSION})") + list(APPEND _main_deps "netdata-plugin-apps") endif() if(ENABLE_PLUGIN_GO) - list(APPEND _main_deps "netdata-plugin-go (= ${CPACK_PACKAGE_VERSION})") + list(APPEND _main_deps "netdata-plugin-go") endif() if(ENABLE_PLUGIN_DEBUGFS) - list(APPEND _main_deps "netdata-plugin-debugfs (= ${CPACK_PACKAGE_VERSION})") + list(APPEND _main_deps "netdata-plugin-debugfs") endif() if(ENABLE_PLUGIN_NFACCT) - list(APPEND _main_deps "netdata-plugin-nfacct (= ${CPACK_PACKAGE_VERSION})") + list(APPEND _main_deps "netdata-plugin-nfacct") endif() if(ENABLE_PLUGIN_SLABINFO) - list(APPEND _main_deps "netdata-plugin-slabinfo (= ${CPACK_PACKAGE_VERSION})") + list(APPEND _main_deps "netdata-plugin-slabinfo") endif() if(ENABLE_PLUGIN_PERF) - list(APPEND _main_deps "netdata-plugin-perf (= ${CPACK_PACKAGE_VERSION})") + list(APPEND _main_deps "netdata-plugin-perf") endif() if(ENABLE_PLUGIN_EBPF) - list(APPEND _main_deps "netdata-plugin-ebpf (= ${CPACK_PACKAGE_VERSION})") + list(APPEND _main_deps "netdata-plugin-ebpf") endif() list(JOIN _main_deps ", " CPACK_DEBIAN_NETDATA_PACKAGE_DEPENDS) diff --git a/packaging/version b/packaging/version index ad11273afa2906..760fb6f2d9aa73 100644 --- a/packaging/version +++ b/packaging/version @@ -1 +1 @@ -v1.46.0-103-nightly +v1.46.0-116-nightly diff --git a/src/collectors/common-contexts/common-contexts.h b/src/collectors/common-contexts/common-contexts.h index 329a4f489a964a..1938230dc0b03b 100644 --- a/src/collectors/common-contexts/common-contexts.h +++ b/src/collectors/common-contexts/common-contexts.h @@ -22,6 +22,7 @@ typedef void (*instance_labels_cb_t)(RRDSET *st, void *data); #include "system.ram.h" #include "system.interrupts.h" #include "system.processes.h" +#include "system.ipc.h" #include "mem.swap.h" #include "mem.pgfaults.h" #include "mem.available.h" diff --git a/src/collectors/common-contexts/system.ipc.h b/src/collectors/common-contexts/system.ipc.h new file mode 100644 index 00000000000000..129ce6dfad5988 --- /dev/null +++ b/src/collectors/common-contexts/system.ipc.h @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef NETDATA_SYSTEM_IPC_H +#define NETDATA_SYSTEM_IPC_H + +#include "common-contexts.h" + +static inline void common_semaphore_ipc(uint64_t semaphore, NETDATA_DOUBLE red, char *module, int update_every) { + static RRDSET *st_semaphores = NULL; + static RRDDIM *rd_semaphores = NULL; + if(unlikely(!st_semaphores)) { + st_semaphores = rrdset_create_localhost("system" + , "ipc_semaphores" + , NULL + , "ipc semaphores" + , NULL + , "IPC Semaphores" + , "semaphores" + , _COMMON_PLUGIN_NAME + , module + , NETDATA_CHART_PRIO_SYSTEM_IPC_SEMAPHORES + , update_every + , RRDSET_TYPE_AREA + ); + rd_semaphores = rrddim_add(st_semaphores, "semaphores", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE); + } + + rrddim_set_by_pointer(st_semaphores, rd_semaphores, semaphore); + rrdset_done(st_semaphores); + if (!strcmp(module, "ipc")) + st_semaphores->red = red; +} + +#endif //NETDATA_SYSTEM_IPC_H diff --git a/src/collectors/freebsd.plugin/freebsd_sysctl.c b/src/collectors/freebsd.plugin/freebsd_sysctl.c index 19213ed36c0d20..0fa710275e11f6 100644 --- a/src/collectors/freebsd.plugin/freebsd_sysctl.c +++ b/src/collectors/freebsd.plugin/freebsd_sysctl.c @@ -1142,30 +1142,10 @@ int do_kern_ipc_sem(int update_every, usec_t dt) { } } - static RRDSET *st_semaphores = NULL, *st_semaphore_arrays = NULL; - static RRDDIM *rd_semaphores = NULL, *rd_semaphore_arrays = NULL; + static RRDSET *st_semaphore_arrays = NULL; + static RRDDIM *rd_semaphore_arrays = NULL; - if (unlikely(!st_semaphores)) { - st_semaphores = rrdset_create_localhost( - "system", - "ipc_semaphores", - NULL, - "ipc semaphores", - NULL, - "IPC Semaphores", - "semaphores", - "freebsd.plugin", - "kern.ipc.sem", - NETDATA_CHART_PRIO_SYSTEM_IPC_SEMAPHORES, - update_every, - RRDSET_TYPE_AREA - ); - - rd_semaphores = rrddim_add(st_semaphores, "semaphores", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE); - } - - rrddim_set_by_pointer(st_semaphores, rd_semaphores, ipc_sem.semaphores); - rrdset_done(st_semaphores); + common_semaphore_ipc(ipc_sem.semaphores, 0.0, "kern.ipc.sem", update_every); if (unlikely(!st_semaphore_arrays)) { st_semaphore_arrays = rrdset_create_localhost( diff --git a/src/collectors/plugins.d/ndsudo.c b/src/collectors/plugins.d/ndsudo.c index 9ea9738d74f87a..a3a5f11733baf9 100644 --- a/src/collectors/plugins.d/ndsudo.c +++ b/src/collectors/plugins.d/ndsudo.c @@ -61,6 +61,14 @@ struct command { [1] = NULL, }, }, + { + .name = "fail2ban-client-status-socket", + .params = "-s {{socket_path}} status", + .search = { + [0] = "fail2ban-client", + [1] = NULL, + }, + }, { .name = "fail2ban-client-status-jail", .params = "status {{jail}}", @@ -69,6 +77,14 @@ struct command { [1] = NULL, }, }, + { + .name = "fail2ban-client-status-jail-socket", + .params = "-s {{socket_path}} status {{jail}}", + .search = { + [0] = "fail2ban-client", + [1] = NULL, + }, + }, { .name = "storcli-controllers-info", .params = "/cALL show all J nolog", diff --git a/src/collectors/proc.plugin/ipc.c b/src/collectors/proc.plugin/ipc.c index 6d7d920f04b503..5b47116b9a718b 100644 --- a/src/collectors/proc.plugin/ipc.c +++ b/src/collectors/proc.plugin/ipc.c @@ -6,6 +6,9 @@ #include #include +#define _COMMON_PLUGIN_NAME PLUGIN_PROC_NAME +#define _COMMON_PLUGIN_MODULE_NAME "ipc" +#include "../common-contexts/common-contexts.h" #ifndef SEMVMX #define SEMVMX 32767 /* <= 32767 semaphore maximum value */ @@ -282,8 +285,8 @@ int do_ipc(int update_every, usec_t dt) { static struct ipc_limits limits; static struct ipc_status status; static const RRDVAR_ACQUIRED *arrays_max = NULL, *semaphores_max = NULL; - static RRDSET *st_semaphores = NULL, *st_arrays = NULL; - static RRDDIM *rd_semaphores = NULL, *rd_arrays = NULL; + static RRDSET *st_arrays = NULL; + static RRDDIM *rd_arrays = NULL; static char *msg_filename = NULL; static struct message_queue *message_queue_root = NULL; static long long dimensions_limit; @@ -314,25 +317,7 @@ int do_ipc(int update_every, usec_t dt) { do_sem = CONFIG_BOOLEAN_NO; } else { - // create the charts - if(unlikely(!st_semaphores)) { - st_semaphores = rrdset_create_localhost( - "system" - , "ipc_semaphores" - , NULL - , "ipc semaphores" - , NULL - , "IPC Semaphores" - , "semaphores" - , PLUGIN_PROC_NAME - , "ipc" - , NETDATA_CHART_PRIO_SYSTEM_IPC_SEMAPHORES - , localhost->rrd_update_every - , RRDSET_TYPE_AREA - ); - rd_semaphores = rrddim_add(st_semaphores, "semaphores", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE); - } - + // create the chart if(unlikely(!st_arrays)) { st_arrays = rrdset_create_localhost( "system" @@ -379,7 +364,6 @@ int do_ipc(int update_every, usec_t dt) { rrdvar_host_variable_set(localhost, arrays_max, limits.semmni); st_arrays->red = limits.semmni; - st_semaphores->red = limits.semmns; read_limits_next = 60 / update_every; } @@ -392,8 +376,7 @@ int do_ipc(int update_every, usec_t dt) { return 0; } - rrddim_set_by_pointer(st_semaphores, rd_semaphores, status.semaem); - rrdset_done(st_semaphores); + common_semaphore_ipc(status.semaem, limits.semmns, "ipc", localhost->rrd_update_every); rrddim_set_by_pointer(st_arrays, rd_arrays, status.semusz); rrdset_done(st_arrays); diff --git a/src/collectors/windows.plugin/perflib-objects.c b/src/collectors/windows.plugin/perflib-objects.c new file mode 100644 index 00000000000000..6628ff8640158e --- /dev/null +++ b/src/collectors/windows.plugin/perflib-objects.c @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "windows_plugin.h" +#include "windows-internals.h" + +#define _COMMON_PLUGIN_NAME "windows.plugin" +#define _COMMON_PLUGIN_MODULE_NAME "PerflibObjects" +#include "../common-contexts/common-contexts.h" + +static void initialize(void) { + ; +} + +static bool do_objects(PERF_DATA_BLOCK *pDataBlock, int update_every) { + PERF_OBJECT_TYPE *pObjectType = perflibFindObjectTypeByName(pDataBlock, "Objects"); + if (!pObjectType) + return false; + + static COUNTER_DATA semaphores = { .key = "Semaphores" }; + + if(perflibGetObjectCounter(pDataBlock, pObjectType, &semaphores)) { + ULONGLONG sem = semaphores.current.Data; + common_semaphore_ipc(sem, WINDOWS_MAX_KERNEL_OBJECT, _COMMON_PLUGIN_MODULE_NAME, update_every); + } + + return true; +} + +int do_PerflibObjects(int update_every, usec_t dt __maybe_unused) { + static bool initialized = false; + + if(unlikely(!initialized)) { + initialize(); + initialized = true; + } + + DWORD id = RegistryFindIDByName("Objects"); + if(id == PERFLIB_REGISTRY_NAME_NOT_FOUND) + return -1; + + PERF_DATA_BLOCK *pDataBlock = perflibGetPerformanceData(id); + if(!pDataBlock) return -1; + + do_objects(pDataBlock, update_every); + + return 0; +} diff --git a/src/collectors/windows.plugin/windows_plugin.c b/src/collectors/windows.plugin/windows_plugin.c index 2d357b9b1dc3ab..35ef857bedecaa 100644 --- a/src/collectors/windows.plugin/windows_plugin.c +++ b/src/collectors/windows.plugin/windows_plugin.c @@ -24,6 +24,7 @@ static struct proc_module { {.name = "PerflibMemory", .dim = "PerflibMemory", .func = do_PerflibMemory}, {.name = "PerflibStorage", .dim = "PerflibStorage", .func = do_PerflibStorage}, {.name = "PerflibNetwork", .dim = "PerflibNetwork", .func = do_PerflibNetwork}, + {.name = "PerflibObjects", .dim = "PerflibObjects", .func = do_PerflibObjects}, // the terminator of this array {.name = NULL, .dim = NULL, .func = NULL} diff --git a/src/collectors/windows.plugin/windows_plugin.h b/src/collectors/windows.plugin/windows_plugin.h index f76b9a782e1e92..73c1ecda1cca92 100644 --- a/src/collectors/windows.plugin/windows_plugin.h +++ b/src/collectors/windows.plugin/windows_plugin.h @@ -7,6 +7,10 @@ #define PLUGIN_WINDOWS_NAME "windows.plugin" +// https://learn.microsoft.com/es-es/windows/win32/sysinfo/kernel-objects?redirectedfrom=MSDN +// 2^24 +#define WINDOWS_MAX_KERNEL_OBJECT 16777216 + void *win_plugin_main(void *ptr); extern char windows_shared_buffer[8192]; @@ -19,6 +23,7 @@ int do_PerflibNetwork(int update_every, usec_t dt); int do_PerflibProcesses(int update_every, usec_t dt); int do_PerflibProcessor(int update_every, usec_t dt); int do_PerflibMemory(int update_every, usec_t dt); +int do_PerflibObjects(int update_every, usec_t dt); #include "perflib.h" diff --git a/src/go/logger/journal_linux.go b/src/go/logger/journal_linux.go new file mode 100644 index 00000000000000..00f33507593a42 --- /dev/null +++ b/src/go/logger/journal_linux.go @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +//go:build linux + +package logger + +import ( + "os" + "strconv" + "strings" + "syscall" +) + +func isStderrConnectedToJournal() bool { + stream := os.Getenv("JOURNAL_STREAM") + if stream == "" { + return false + } + + idx := strings.IndexByte(stream, ':') + if idx <= 0 { + return false + } + + dev, ino := stream[:idx], stream[idx+1:] + + var stat syscall.Stat_t + if err := syscall.Fstat(int(os.Stderr.Fd()), &stat); err != nil { + return false + } + + return dev == strconv.Itoa(int(stat.Dev)) && ino == strconv.FormatUint(stat.Ino, 10) +} diff --git a/src/go/logger/journal_stub.go b/src/go/logger/journal_stub.go new file mode 100644 index 00000000000000..6726a02d896ff1 --- /dev/null +++ b/src/go/logger/journal_stub.go @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +//go:build !linux + +package logger + +func isStderrConnectedToJournal() bool { + return false +} diff --git a/src/go/logger/logger.go b/src/go/logger/logger.go index 65069972fc81d3..b32a00cc0ccca2 100644 --- a/src/go/logger/logger.go +++ b/src/go/logger/logger.go @@ -7,10 +7,7 @@ import ( "fmt" "log/slog" "os" - "strconv" - "strings" "sync/atomic" - "syscall" "github.com/netdata/netdata/go/plugins/pkg/executable" @@ -81,24 +78,3 @@ func (l *Logger) mute(v bool) { func (l *Logger) isNil() bool { return l == nil || l.sl == nil } var nilLogger = New() - -func isStderrConnectedToJournal() bool { - stream := os.Getenv("JOURNAL_STREAM") - if stream == "" { - return false - } - - idx := strings.IndexByte(stream, ':') - if idx <= 0 { - return false - } - - dev, ino := stream[:idx], stream[idx+1:] - - var stat syscall.Stat_t - if err := syscall.Fstat(int(os.Stderr.Fd()), &stat); err != nil { - return false - } - - return dev == strconv.Itoa(int(stat.Dev)) && ino == strconv.FormatUint(stat.Ino, 10) -} diff --git a/src/go/plugin/go.d/README.md b/src/go/plugin/go.d/README.md index 9b0d207cdc249c..94478f2e55148a 100644 --- a/src/go/plugin/go.d/README.md +++ b/src/go/plugin/go.d/README.md @@ -1,7 +1,7 @@