summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRalph Meijer <ralphm@ik.nu>2024-03-28 16:54:48 +0000
committerRalph Meijer <ralphm@ik.nu>2024-04-03 14:25:14 +0200
commit351864c67323b93becf72bdf9bbe4d6afbfb4f6d (patch)
tree77d105d1f1e4e3e90d8f67afd345f60c826c2f38
parent1549626cac4bfbf3102c013e55c19e92ac4b2a8b (diff)
Build Netdata Agent Snap from source
-rw-r--r--snap/hooks/install12
-rw-r--r--snap/local/netdata.conf17
-rw-r--r--snap/snapcraft.yaml109
3 files changed, 138 insertions, 0 deletions
diff --git a/snap/hooks/install b/snap/hooks/install
new file mode 100644
index 0000000000..873914c66b
--- /dev/null
+++ b/snap/hooks/install
@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+
+# Initialize configuration and var directory skeleton
+mkdir -p "$SNAP_COMMON/etc"
+mkdir -p "$SNAP_DATA/var/cache"
+mkdir -p "$SNAP_DATA/var/lib"
+mkdir -p "$SNAP_DATA/var/log/netdata"
+cp -rp "$SNAP/etc/netdata" "$SNAP_COMMON/etc/netdata"
+cp -rp "$SNAP/var/cache/netdata" "$SNAP_DATA/var/cache/netdata"
+cp -rp "$SNAP/var/lib/netdata" "$SNAP_DATA/var/lib/netdata"
+mkdir -p "$SNAP_DATA/var/lib/netdata/www"
+mkdir -p "$SNAP_DATA/var/run/netdata"
diff --git a/snap/local/netdata.conf b/snap/local/netdata.conf
new file mode 100644
index 0000000000..283e151215
--- /dev/null
+++ b/snap/local/netdata.conf
@@ -0,0 +1,17 @@
+[directories]
+ config = /var/snap/netdata/common/etc/netdata
+ stock config = /snap/netdata/current/usr/lib/netdata/conf.d
+ log = /var/snap/netdata/current/var/log/netdata
+ web = /var/snap/netdata/current/var/lib/netdata/www
+ cache = /var/snap/netdata/current/var/cache/netdata
+ lib = /var/snap/netdata/current/var/lib/netdata
+ lock = /var/snap/netdata/current/var/lib/netdata/lock
+ plugins = "/snap/netdata/current/usr/libexec/netdata/plugins.d" "/var/snap/netdata/common/etc/netdata/custom-plugins.d"
+ home = /var/snap/netdata/current/var/lib/netdata
+ registry = /var/snap/netdata/current/var/lib/netdata/registry
+ stock health config = /snap/netdata/current/usr/lib/netdata/conf.d/health.d
+ health config = /var/snap/netdata/common/etc/netdata/health.d
+
+[plugin:proc]
+ # Disable btrfs, as this cannot be accessed from within a snap
+ /sys/fs/btrfs = no
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
new file mode 100644
index 0000000000..7f46a35169
--- /dev/null
+++ b/snap/snapcraft.yaml
@@ -0,0 +1,109 @@
+name: netdata # you probably want to 'snapcraft register <name>'
+base: core24 # the base snap is the execution environment for this snap
+build-base: devel
+version: '0.1' # just for humans, typically '1.2+git' or '1.3.2'
+summary: Netdata Agent
+description: |
+ Netdata is distributed, real-time, performance and health monitoring for
+ systems and applications. It provides insights of everything happening on the
+ systems it runs using interactive web dashboards.
+
+grade: devel # must be 'stable' to release into candidate/stable channels
+confinement: strict # use 'strict' once you have the right plugs and slots
+
+layout:
+# /etc/netdata:
+# symlink: $SNAP_COMMON/etc/netdata
+# /usr/lib/netdata:
+# symlink: $SNAP/usr/lib/netdata
+# /usr/libexec/netdata:
+# symlink: $SNAP/usr/libexec/netdata
+# /usr/share/netdata:
+# symlink: $SNAP/usr/share/netdata
+# /var/cache/netdata:
+# symlink: $SNAP_DATA/var/cache/netdata
+# /var/lib/netdata:
+# symlink: $SNAP_DATA/var/lib/netdata
+# /var/log/netdata:
+# symlink: $SNAP_DATA/var/log/netdata
+ /etc/sensors3.conf:
+ symlink: $SNAP/etc/sensors3.conf
+ /usr/bin/lsns:
+ bind-file: $SNAP/usr/bin/lsns
+
+parts:
+ deps:
+ plugin: nil
+ source: .
+ source-type: local
+ override-build: |
+ bash ./packaging/installer/install-required-packages.sh --dont-wait --non-interactive -i netdata-all
+
+ netdata:
+ plugin: nil
+ source: .
+ source-type: local
+ build-packages:
+ - libpcre2-dev
+ override-build: |
+ sh ./netdata-installer.sh --dont-wait --dont-start-it --require-cloud --one-time-build
+ mkdir -p $SNAPCRAFT_PART_INSTALL/usr/sbin/ \
+ $SNAPCRAFT_PART_INSTALL/usr/share \
+ $SNAPCRAFT_PART_INSTALL/usr/libexec \
+ $SNAPCRAFT_PART_INSTALL/usr/local \
+ $SNAPCRAFT_PART_INSTALL/usr/lib \
+ $SNAPCRAFT_PART_INSTALL/var/cache \
+ $SNAPCRAFT_PART_INSTALL/var/lib \
+ $SNAPCRAFT_PART_INSTALL/etc
+ rm -rf $SNAPCRAFT_PART_INSTALL/var/{cache,lib}/netdata
+ rm -rf $SNAPCRAFT_PART_INSTALL/usr/{share,lib,libexec}/netdata
+ mv /usr/share/netdata $SNAPCRAFT_PART_INSTALL/usr/share/
+ mv /usr/libexec/netdata $SNAPCRAFT_PART_INSTALL/usr/libexec/
+ mv /usr/lib/netdata $SNAPCRAFT_PART_INSTALL/usr/lib/
+ mv /var/cache/netdata $SNAPCRAFT_PART_INSTALL/var/cache/
+ mv /var/lib/netdata $SNAPCRAFT_PART_INSTALL/var/lib/
+ mv /etc/netdata $SNAPCRAFT_PART_INSTALL/etc/
+ mv /usr/sbin/log2journal $SNAPCRAFT_PART_INSTALL/usr/sbin/
+ mv /usr/sbin/netdata $SNAPCRAFT_PART_INSTALL/usr/sbin/
+ mv /usr/sbin/netdata-claim.sh $SNAPCRAFT_PART_INSTALL/usr/sbin/
+ mv /usr/sbin/netdatacli $SNAPCRAFT_PART_INSTALL/usr/sbin/
+ mv /usr/sbin/systemd-cat-native $SNAPCRAFT_PART_INSTALL/usr/sbin/
+ cp -p "$SNAPCRAFT_PROJECT_DIR/snap/local/netdata.conf" "$SNAPCRAFT_PART_INSTALL/etc/netdata/netdata.conf"
+ stage-packages:
+ - curl
+ - iproute2
+ - libuv1
+ - lm-sensors
+ - util-linux
+ prime:
+ - -opt/netdata/var/cache/netdata/.keep
+ - -opt/netdata/var/lib/netdata/.keep
+ - -opt/netdata/var/log/netdata/.keep
+
+apps:
+ agent:
+ command: usr/sbin/netdata -u root -D -P $SNAP_DATA/var/run/netdata/netdata.pid -c $SNAP_COMMON/etc/netdata/netdata.conf
+ daemon: simple
+ plugs:
+ - docker-support # Allows access to /prod/[0-9]*/limits
+ - hardware-observe
+ - kubernetes-support # cgroups (incl. systemd services)
+ - log-observe
+ - login-session-observe
+ - mount-observe
+ - network
+ - network-bind
+ - network-observe # network connections function
+ - network-setup-observe # ip{,4,6}.*, wireless.*, netfilter.conntrack_sockets
+ - system-observe # many disk.*, cpu and memory pressure, system.io
+ - time-control # needed for timex to call clock_adjtime to measure jitter
+ claim:
+ command: usr/sbin/netdata-claim.sh
+ plugs:
+ - network
+ cli:
+ command: usr/sbin/netdatacli
+ log2journal:
+ command: usr/sbin/log2journal
+ systemd-cat-native:
+ command: usr/sbin/systemd-cat-native