git: c7e874cca930 - main - sysutils/beats8: New port

From: Juraj Lutter <otis_at_FreeBSD.org>
Date: Sat, 26 Nov 2022 21:04:06 UTC
The branch main has been updated by otis:

URL: https://cgit.FreeBSD.org/ports/commit/?id=c7e874cca930e1aca51b8d7daccceeabc0d5c8c4

commit c7e874cca930e1aca51b8d7daccceeabc0d5c8c4
Author:     Juraj Lutter <otis@FreeBSD.org>
AuthorDate: 2022-11-01 16:52:08 +0000
Commit:     Juraj Lutter <otis@FreeBSD.org>
CommitDate: 2022-11-26 21:03:17 +0000

    sysutils/beats8: New port
    
    Add sysutils/beats8, beats component for ELK 8.x.
    
    There are many breaking changes in 8.x versions, see
    https://www.elastic.co/guide/en/beats/libbeat/8.5/breaking-changes-8.0.html
    for details.
    
    Release notes for ELK 8.x are located here:
    https://www.elastic.co/guide/en/beats/libbeat/8.5/release-notes.html
---
 sysutils/Makefile                                  |   1 +
 sysutils/beats8/Makefile                           | 132 +++++++++++++++++++++
 sysutils/beats8/distinfo                           |  15 +++
 sysutils/beats8/files/auditbeat.in                 |  50 ++++++++
 sysutils/beats8/files/filebeat.in                  |  43 +++++++
 sysutils/beats8/files/heartbeat.in                 |  44 +++++++
 sysutils/beats8/files/metricbeat.in                |  51 ++++++++
 sysutils/beats8/files/packetbeat.in                |  43 +++++++
 .../files/patch-auditbeat_auditbeat.reference.yml  |  20 ++++
 .../beats8/files/patch-auditbeat_auditbeat.yml     |  13 ++
 .../beats8/files/patch-dev-tools_mage_settings.go  |  20 ++++
 .../files/patch-filebeat_filebeat.reference.yml    |  26 ++++
 sysutils/beats8/files/patch-filebeat_filebeat.yml  |  33 ++++++
 .../beats8/files/patch-heartbeat_heartbeat.yml     |  11 ++
 ...libbeat_autodiscover_providers_docker_config.go |  13 ++
 ...libbeat_autodiscover_providers_docker_docker.go |  22 ++++
 ...eat_autodiscover_providers_kubernetes_config.go |  13 ++
 ...autodiscover_providers_kubernetes_kubernetes.go |  13 ++
 .../beats8/files/patch-libbeat_scripts_Makefile    |  26 ++++
 .../patch-metricbeat_metricbeat.reference.yml      |  20 ++++
 .../beats8/files/patch-metricbeat_metricbeat.yml   |  33 ++++++
 .../patch-packetbeat_packetbeat.reference.yml      |  11 ++
 .../beats8/files/patch-packetbeat_packetbeat.yml   |  23 ++++
 ...tic_elastic-agent-autodiscover_docker_client.go |  13 ++
 ...ic_elastic-agent-autodiscover_docker_watcher.go |  13 ++
 ...t-system-metrics_metric_cpu_metrics__freebsd.go |  10 ++
 ...m-metrics_metric_cpu_metrics__procfs__common.go |  20 ++++
 ...cs_metric_system_filesystem_filesystem__unix.go |  14 +++
 ...com_godbus_dbus_transport__unixcred__freebsd.go |  12 ++
 ...m_insomniacslk_dhcp_dhcpv4_bindtodevice__bsd.go |  22 ++++
 sysutils/beats8/files/pkg-message.in               |  12 ++
 sysutils/beats8/pkg-descr                          |  18 +++
 sysutils/beats8/pkg-plist                          |  21 ++++
 33 files changed, 831 insertions(+)

diff --git a/sysutils/Makefile b/sysutils/Makefile
index 346533604357..f205b67384ca 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -120,6 +120,7 @@
     SUBDIR += beadm-devel
     SUBDIR += beats6
     SUBDIR += beats7
+    SUBDIR += beats8
     SUBDIR += bfs
     SUBDIR += bhyve+
     SUBDIR += bhyve-firmware
diff --git a/sysutils/beats8/Makefile b/sysutils/beats8/Makefile
new file mode 100644
index 000000000000..424c6152b2fe
--- /dev/null
+++ b/sysutils/beats8/Makefile
@@ -0,0 +1,132 @@
+PORTNAME=	beats
+DISTVERSIONPREFIX=	v
+DISTVERSION=	8.5.2
+CATEGORIES=	sysutils
+MASTER_SITES=	https://raw.githubusercontent.com/${GH_ACCOUNT}/${GH_PROJECT}/${DISTVERSIONFULL}/:gomod
+PKGNAMESUFFIX?=	8
+DISTFILES=	go.mod:gomod
+
+MAINTAINER=	elastic@FreeBSD.org
+COMMENT=	Send logs, network, metrics and heartbeat to elasticsearch or logstash
+WWW=		https://www.elastic.co/products/beats/
+
+LICENSE=	APACHE20
+
+USES=		go:modules
+USE_GITHUB=	yes
+
+GH_ACCOUNT=	elastic
+
+USE_RC_SUBR=	${GO_TARGET:C,\./,,g}
+
+GO_MODULE=	github.com/elastic/beats/v8
+CGO_CFLAGS=	-I.
+CGO_LDFLAGS=	-L.
+MAKE_ENV+=	GOBUILD_FLAGS="-mod=vendor"
+
+CONFLICTS=	beats6 beats7
+
+PORTSCOUT=	limit:^8
+
+SUB_FILES=	pkg-message
+
+OPTIONS_DEFINE=		AUDITBEAT FILEBEAT HEARTBEAT METRICBEAT PACKETBEAT
+OPTIONS_DEFAULT=	FILEBEAT HEARTBEAT METRICBEAT
+OPTIONS_SUB=		yes
+
+AUDITBEAT_DESC=			Auditbeat
+FILEBEAT_DESC=			Filebeat
+HEARTBEAT_DESC=			Heartbeat
+METRICBEAT_DESC=		Metricbeat
+PACKETBEAT_DESC=		Packetbeat
+AUDITBEAT_MASTER_SITES=		https://artifacts.elastic.co/downloads/beats/auditbeat/:auditbeat
+AUDITBEAT_DISTFILES=		auditbeat-${DISTVERSION}-darwin-x86_64.tar.gz:auditbeat
+AUDITBEAT_VARS=			GO_TARGET+=./auditbeat
+FILEBEAT_MASTER_SITES=		https://artifacts.elastic.co/downloads/beats/filebeat/:filebeat
+FILEBEAT_DISTFILES=		filebeat-${DISTVERSION}-darwin-x86_64.tar.gz:filebeat
+FILEBEAT_VARS=			GO_TARGET+=./filebeat
+HEARTBEAT_MASTER_SITES=		https://artifacts.elastic.co/downloads/beats/heartbeat/:heartbeat
+HEARTBEAT_DISTFILES=		heartbeat-${DISTVERSION}-darwin-x86_64.tar.gz:heartbeat
+HEARTBEAT_VARS=			GO_TARGET+=./heartbeat
+METRICBEAT_MASTER_SITES=	https://artifacts.elastic.co/downloads/beats/metricbeat/:metricbeat
+METRICBEAT_DISTFILES=		metricbeat-${DISTVERSION}-darwin-x86_64.tar.gz:metricbeat
+METRICBEAT_VARS=		GO_TARGET+=./metricbeat
+PACKETBEAT_MASTER_SITES=	https://artifacts.elastic.co/downloads/beats/packetbeat/:packetbeat
+PACKETBEAT_DISTFILES=		packetbeat-${DISTVERSION}-darwin-x86_64.tar.gz:packetbeat
+PACKETBEAT_VARS=		CGO_CFLAGS+=-I/usr/include \
+				CGO_LDFLAGS+=-L/usr/lib \
+				GO_TARGET+=./packetbeat
+
+.include <bsd.port.options.mk>
+
+post-patch:
+	${REINPLACE_CMD} -e "s|%%BEATSVERSION%%|v${PORTVERSION}|g" ${WRKSRC}/dev-tools/mage/settings.go
+.for BEATMOD in ${GO_TARGET:C,\./,,g}
+	${REINPLACE_CMD} -e "s|%%DATADIR%%|${DATADIR}|g" ${WRKSRC}/${BEATMOD}/*.yml
+.endfor
+
+do-install:
+	${MKDIR} ${STAGEDIR}${ETCDIR}
+.for BEATMOD in ${GO_TARGET:C,^\./,,g}
+	${MKDIR} ${STAGEDIR}/var/db/beats/${BEATMOD} && \
+	${INSTALL_PROGRAM} ${WRKDIR}/bin/${BEATMOD} \
+		${STAGEDIR}${PREFIX}/sbin && \
+	${INSTALL_DATA} ${WRKSRC}/${BEATMOD}/${BEATMOD}.yml \
+		${STAGEDIR}${ETCDIR}/${BEATMOD}.yml.sample && \
+	${INSTALL_DATA} ${WRKSRC}/${BEATMOD}/${BEATMOD}.reference.yml \
+		${STAGEDIR}${ETCDIR}/${BEATMOD}.yml.reference
+	(MODULE_SRC=${WRKDIR}/${BEATMOD}-${DISTVERSION}-darwin-x86_64/module; \
+	 if [ -d $${MODULE_SRC} ]; then \
+	   MODULE_DEST=${STAGEDIR}${DATADIR}/${BEATMOD}/module && \
+	   ${MKDIR} $${MODULE_DEST} && \
+	   cd $${MODULE_SRC} && ${COPYTREE_SHARE} . $${MODULE_DEST} && \
+	   cd $${MODULE_DEST} && \
+	   ${FIND} . -type d -empty | ${SORT} | \
+	   ${SED} -e 's,^\.,@dir ${DATADIR_REL}/${BEATMOD}/module,' >> ${TMPPLIST} && \
+	   ${FIND} . -not -type d | ${SORT} | \
+	   ${SED} -e 's,^\.,${DATADIR_REL}/${BEATMOD}/module,' >> ${TMPPLIST}; \
+	 fi) && \
+	(MODULESD_SRC=${WRKDIR}/${BEATMOD}-${DISTVERSION}-darwin-x86_64/modules.d; \
+	 if [ -d $${MODULESD_SRC} ]; then \
+	   MODULESD_DEST=${STAGEDIR}${EXAMPLESDIR}/${BEATMOD}.modules.d && \
+	   ${MKDIR} $${MODULESD_DEST} && \
+	   cd $${MODULESD_SRC} && ${COPYTREE_SHARE} . $${MODULESD_DEST} && \
+	   cd $${MODULESD_DEST} && \
+	   ${FIND} . -type d -empty | ${SORT} | \
+	   ${SED} -e 's,^\.,@dir ${EXAMPLESDIR_REL}/${BEATMOD}.modules.d,' >> ${TMPPLIST} && \
+	   ${FIND} . -not -type d | ${SORT} | \
+	   ${SED} -e 's,^\.,${EXAMPLESDIR_REL}/${BEATMOD}.modules.d,' >> ${TMPPLIST}; \
+	   ${MKDIR} ${STAGEDIR}${ETCDIR}/${BEATMOD}.modules.d && \
+	   ${ECHO_CMD} "The modules.d files are now in ${EXAMPLESDIR}/${BEATMOD}.modules.d" > \
+	     ${STAGEDIR}${ETCDIR}/${BEATMOD}.modules.d/README; \
+	   ${ECHO_CMD} ${ETCDIR_REL}/${BEATMOD}.modules.d/README >> ${TMPPLIST}; \
+	 fi) && \
+	(MONITORSD_SRC=${WRKDIR}/${BEATMOD}-${DISTVERSION}-darwin-x86_64/monitors.d; \
+	 if [ -d $${MONITORSD_SRC} ]; then \
+	   MONITORSD_DEST=${STAGEDIR}${EXAMPLESDIR}/${BEATMOD}.monitors.d && \
+	   ${MKDIR} $${MONITORSD_DEST} && \
+	   cd $${MONITORSD_SRC} && ${COPYTREE_SHARE} . $${MONITORSD_DEST} && \
+	   cd $${MONITORSD_DEST} && \
+	   ${FIND} . -type d -empty | ${SORT} | \
+	   ${SED} -e 's,^\.,@dir ${EXAMPLESDIR_REL}/${BEATMOD}.monitors.d,' >> ${TMPPLIST} && \
+	   ${FIND} . -not -type d | ${SORT} | \
+	   ${SED} -e 's,^\.,${EXAMPLESDIR_REL}/${BEATMOD}.monitors.d,' >> ${TMPPLIST}; \
+	   ${MKDIR} ${STAGEDIR}${ETCDIR}/${BEATMOD}.monitors.d && \
+	   ${ECHO_CMD} "The monitors.d files are now in ${EXAMPLESDIR}/${BEATMOD}.monitors.d" > \
+	     ${STAGEDIR}${ETCDIR}/${BEATMOD}.monitors.d/README; \
+	   ${ECHO_CMD} ${ETCDIR_REL}/${BEATMOD}.monitors.d/README >> ${TMPPLIST}; \
+	 fi) && \
+	(KIBANA_SRC=${WRKDIR}/${BEATMOD}-${DISTVERSION}-darwin-x86_64/kibana; \
+	 if [ -d $${KIBANA_SRC} ]; then \
+	   KIBANA_PATH=${STAGEDIR}${DATADIR}/${BEATMOD}/kibana; \
+	   ${MKDIR} $${KIBANA_PATH} && \
+	   cd $${KIBANA_SRC} && ${COPYTREE_SHARE} . $${KIBANA_PATH}; \
+	   cd $${KIBANA_PATH} && \
+	   ${FIND} . -type d -empty | ${SORT} | \
+	   ${SED} -e 's,^\.,@dir ${DATADIR_REL}/${BEATMOD}/kibana,' >> ${TMPPLIST}; \
+	   ${FIND} . -not -type d | ${SORT} | \
+	   ${SED} -e 's,^\.,${DATADIR_REL}/${BEATMOD}/kibana,' >> ${TMPPLIST}; \
+	 fi)
+.endfor
+
+.include <bsd.port.mk>
diff --git a/sysutils/beats8/distinfo b/sysutils/beats8/distinfo
new file mode 100644
index 000000000000..afcf1d500314
--- /dev/null
+++ b/sysutils/beats8/distinfo
@@ -0,0 +1,15 @@
+TIMESTAMP = 1669417041
+SHA256 (go/sysutils_beats8/elastic-beats-v8.5.2_GH0/go.mod) = 2fba3adaa4b2ab5f864bc2ff8eb4584a854bb9701f01a50814ed46f736b4d9a0
+SIZE (go/sysutils_beats8/elastic-beats-v8.5.2_GH0/go.mod) = 18988
+SHA256 (go/sysutils_beats8/elastic-beats-v8.5.2_GH0/auditbeat-8.5.2-darwin-x86_64.tar.gz) = e5869103a1948c121b481b66aa3849355037e279a68a52093b1b5e8521dc1141
+SIZE (go/sysutils_beats8/elastic-beats-v8.5.2_GH0/auditbeat-8.5.2-darwin-x86_64.tar.gz) = 27766683
+SHA256 (go/sysutils_beats8/elastic-beats-v8.5.2_GH0/filebeat-8.5.2-darwin-x86_64.tar.gz) = d35cc6bf587aad870779d69c7df90f5b4526bb01c31a7c953ecfb7bcf75c61dd
+SIZE (go/sysutils_beats8/elastic-beats-v8.5.2_GH0/filebeat-8.5.2-darwin-x86_64.tar.gz) = 36503488
+SHA256 (go/sysutils_beats8/elastic-beats-v8.5.2_GH0/heartbeat-8.5.2-darwin-x86_64.tar.gz) = 0dcdfbdec5cabec79935c2d7fe9c1133a85eaed8c58bb3bbcdd00fd7b822ad08
+SIZE (go/sysutils_beats8/elastic-beats-v8.5.2_GH0/heartbeat-8.5.2-darwin-x86_64.tar.gz) = 27844888
+SHA256 (go/sysutils_beats8/elastic-beats-v8.5.2_GH0/metricbeat-8.5.2-darwin-x86_64.tar.gz) = 5961b1b4e22675cadec41ea0bb05b604c30ca2038b4f54bb16b4aaa749191713
+SIZE (go/sysutils_beats8/elastic-beats-v8.5.2_GH0/metricbeat-8.5.2-darwin-x86_64.tar.gz) = 42925666
+SHA256 (go/sysutils_beats8/elastic-beats-v8.5.2_GH0/packetbeat-8.5.2-darwin-x86_64.tar.gz) = 3e96e28c1dcc2a077a1d277f604531f72e5dcca361860089d74398a91eb7929d
+SIZE (go/sysutils_beats8/elastic-beats-v8.5.2_GH0/packetbeat-8.5.2-darwin-x86_64.tar.gz) = 29124396
+SHA256 (go/sysutils_beats8/elastic-beats-v8.5.2_GH0/elastic-beats-v8.5.2_GH0.tar.gz) = d86a9932cbb0030bce986e2b0a8bcea26d62acd689d45e81154fd188b0a4b8cb
+SIZE (go/sysutils_beats8/elastic-beats-v8.5.2_GH0/elastic-beats-v8.5.2_GH0.tar.gz) = 111493219
diff --git a/sysutils/beats8/files/auditbeat.in b/sysutils/beats8/files/auditbeat.in
new file mode 100644
index 000000000000..4091c69b6182
--- /dev/null
+++ b/sysutils/beats8/files/auditbeat.in
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+# PROVIDE: auditbeat
+# REQUIRE: DAEMON
+# BEFORE: LOGIN
+# KEYWORD: shutdown
+
+# Add the following lines to /etc/rc.conf to enable auditbeat:
+#
+# auditbeat_enable (bool):	Set to YES to enable auditbeat
+# 				Default: NO
+# auditbeat_flags (str):	Extra flags passed to auditbeat
+# auditbeat_config (str):	auditbeat configuration directory
+#				Default: ${PREFIX}/etc/beats
+# auditbeat_conffile (str):	auditbeat configuration file
+#				relative to ${auditbeat_conf}
+#				Default: auditbeat.yml
+
+. /etc/rc.subr
+
+name="auditbeat"
+rcvar=${name}_enable
+load_rc_config $name
+
+: ${auditbeat_enable:="NO"}
+: ${auditbeat_config:="%%ETCDIR%%"}
+: ${auditbeat_conffile:="auditbeat.yml"}
+: ${auditbeat_home:="%%DATADIR%%/auditbeat"}
+: ${auditbeat_logs:="/var/log/beats"}
+: ${auditbeat_data:="/var/db/beats/auditbeat"}
+
+# daemon
+start_precmd=auditbeat_prestart
+command=/usr/sbin/daemon
+pidfile="/var/run/${name}"
+command_args="-frP ${pidfile} %%PREFIX%%/sbin/${name} ${auditbeat_flags} --path.config ${auditbeat_config} --path.home ${auditbeat_home} --path.data ${auditbeat_data} --path.logs ${auditbeat_logs} -c ${auditbeat_conffile}"
+auditbeat_prestart() {
+# Have to empty rc_flags so they don't get passed to daemon(8)
+	rc_flags=""
+}
+
+# auditbeat will refuse to quit if linprocfs is mounted, and sadly requires -9
+[ -f /compat/linux/proc/cpuinfo ] && stop_cmd=auditbeat_stop
+
+auditbeat_stop() {
+	pkill -9 -F ${pidfile} > /dev/null 2>&1
+	pkill -9 -F ${pidfile}.child > /dev/null 2>&1
+}
+
+run_rc_command "$1"
diff --git a/sysutils/beats8/files/filebeat.in b/sysutils/beats8/files/filebeat.in
new file mode 100644
index 000000000000..8ae08af5b398
--- /dev/null
+++ b/sysutils/beats8/files/filebeat.in
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+# PROVIDE: filebeat
+# REQUIRE: DAEMON
+# BEFORE: LOGIN
+# KEYWORD: shutdown
+
+# Add the following lines to /etc/rc.conf to enable filebeat:
+#
+# filebeat_enable (bool):	Set to YES to enable filebeat
+# 				Default: NO
+# filebeat_flags (str):		Extra flags passed to filebeat
+# filebeat_config (str):	filebeat configuration directory
+#				Default: ${PREFIX}/etc/beats
+# filebeat_conffile (str):	filebeat configuration file
+#				relative to ${filebeat_conf}
+#				Default: filebeat.yml
+
+. /etc/rc.subr
+
+name="filebeat"
+rcvar=${name}_enable
+load_rc_config $name
+
+: ${filebeat_enable:="NO"}
+: ${filebeat_config:="%%ETCDIR%%"}
+: ${filebeat_conffile:="filebeat.yml"}
+: ${filebeat_home:="%%DATADIR%%/filebeat"}
+: ${filebeat_logs:="/var/log/beats"}
+: ${filebeat_data:="/var/db/beats/filebeat"}
+
+# daemon
+start_precmd=filebeat_prestart
+command=/usr/sbin/daemon
+pidfile="/var/run/${name}"
+command_args="-frP ${pidfile} %%PREFIX%%/sbin/${name} ${filebeat_flags} --path.config ${filebeat_config} --path.home ${filebeat_home} --path.data ${filebeat_data} --path.logs ${filebeat_logs} -c ${filebeat_conffile}"
+
+filebeat_prestart() {
+# Have to empty rc_flags so they don't get passed to daemon(8)
+	rc_flags=""
+}
+
+run_rc_command "$1"
diff --git a/sysutils/beats8/files/heartbeat.in b/sysutils/beats8/files/heartbeat.in
new file mode 100644
index 000000000000..d99374ab011c
--- /dev/null
+++ b/sysutils/beats8/files/heartbeat.in
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+# PROVIDE: heartbeat
+# REQUIRE: DAEMON
+# BEFORE: LOGIN
+# KEYWORD: shutdown
+
+# Add the following lines to /etc/rc.conf to enable heartbeat:
+#
+# heartbeat_enable (bool):	Set to YES to enable heartbeat
+# 				Default: NO
+# heartbeat_flags (str):	Extra flags passed to heartbeat
+# heartbeat_config (str):	heartbeat configuration directory
+#				Default: ${PREFIX}/etc/beats
+# heartbeat_conffile (str):	heartbeat configuration file
+#				relative to ${heartbeat_conf}
+#				Default: heartbeat.yml
+
+. /etc/rc.subr
+
+name="heartbeat"
+rcvar=${name}_enable
+load_rc_config $name
+
+: ${heartbeat_enable:="NO"}
+: ${heartbeat_config:="%%ETCDIR%%"}
+: ${heartbeat_conffile:="heartbeat.yml"}
+: ${heartbeat_home:="%%DATADIR%%/heartbeat"}
+: ${heartbeat_logs:="/var/log/beats"}
+: ${heartbeat_data:="/var/db/beats/heartbeat"}
+
+
+# daemon
+start_precmd=heartbeat_prestart
+command=/usr/sbin/daemon
+pidfile="/var/run/${name}"
+command_args="-frP ${pidfile} %%PREFIX%%/sbin/${name} ${heartbeat_flags} --path.config ${heartbeat_config} --path.home ${heartbeat_home} --path.data ${heartbeat_data} --path.logs ${heartbeat_logs} -c ${heartbeat_conffile}"
+
+heartbeat_prestart() {
+# Have to empty rc_flags so they don't get passed to daemon(8)
+	rc_flags=""
+}
+
+run_rc_command "$1"
diff --git a/sysutils/beats8/files/metricbeat.in b/sysutils/beats8/files/metricbeat.in
new file mode 100644
index 000000000000..270966c4f669
--- /dev/null
+++ b/sysutils/beats8/files/metricbeat.in
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+# PROVIDE: metricbeat
+# REQUIRE: DAEMON
+# BEFORE: LOGIN
+# KEYWORD: shutdown
+
+# Add the following lines to /etc/rc.conf to enable metricbeat:
+#
+# metricbeat_enable (bool):	Set to YES to enable metricbeat
+# 				Default: NO
+# metricbeat_flags (str):	Extra flags passed to metricbeat
+# metricbeat_config (str):	metricbeat configuration directory
+#				Default: ${PREFIX}/etc/beats
+# metricbeat_conffile (str):	metricbeat configuration file
+#				relative to ${metricbeat_conf}
+#				Default: metricbeat.yml
+
+. /etc/rc.subr
+
+name="metricbeat"
+rcvar=${name}_enable
+load_rc_config $name
+
+: ${metricbeat_enable:="NO"}
+: ${metricbeat_config:="%%ETCDIR%%"}
+: ${metricbeat_conffile:="metricbeat.yml"}
+: ${metricbeat_home:="%%DATADIR%%/metricbeat"}
+: ${metricbeat_logs:="/var/log/beats"}
+: ${metricbeat_data:="/var/db/beats/metricbeat"}
+
+# daemon
+start_precmd=metricbeat_prestart
+command=/usr/sbin/daemon
+pidfile="/var/run/${name}"
+command_args="-frP ${pidfile} %%PREFIX%%/sbin/${name} ${metricbeat_flags} --path.config ${metricbeat_config} --path.home ${metricbeat_home} --path.data ${metricbeat_data} --path.logs ${metricbeat_logs} -c ${metricbeat_conffile}"
+
+metricbeat_prestart() {
+# Have to empty rc_flags so they don't get passed to daemon(8)
+	rc_flags=""
+}
+
+# metricbeat will refuse to quit if linprocfs is mounted, and sadly requires -9
+[ -f /compat/linux/proc/cpuinfo ] && stop_cmd=metricbeat_stop
+
+metricbeat_stop() {
+	pkill -9 -F ${pidfile} > /dev/null 2>&1
+	pkill -9 -F ${pidfile}.child > /dev/null 2>&1
+}
+
+run_rc_command "$1"
diff --git a/sysutils/beats8/files/packetbeat.in b/sysutils/beats8/files/packetbeat.in
new file mode 100644
index 000000000000..4dc21856c49a
--- /dev/null
+++ b/sysutils/beats8/files/packetbeat.in
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+# PROVIDE: packetbeat
+# REQUIRE: DAEMON
+# BEFORE: LOGIN
+# KEYWORD: shutdown
+
+# Add the following lines to /etc/rc.conf to enable packetbeat
+#
+# packetbeat_enable (bool):	Set to YES to enable packetbeat
+# 				Default: NO
+# packetbeat_flags (str):	Extra flags passed to packetbeat
+# packetbeat_config (str):	packetbeat configuration directory
+#				Default: ${PREFIX}/etc/beats
+# packetbeat_conffile (str):	packetbeat configuration file
+#				relative to ${packetbeat_conf}
+#				Default: packetbeat.yml
+
+. /etc/rc.subr
+
+name="packetbeat"
+rcvar=${name}_enable
+load_rc_config $name
+
+: ${packetbeat_enable:="NO"}
+: ${packetbeat_config:="%%ETCDIR%%"}
+: ${packetbeat_conffile:="packetbeat.yml"}
+: ${packetbeat_home:="%%DATADIR%%/packetbeat"}
+: ${packetbeat_logs:="/var/log/beats"}
+: ${packetbeat_data:="/var/db/beats/packetbeat"}
+
+# daemon
+start_precmd=packetbeat_prestart
+command=/usr/sbin/daemon
+pidfile="/var/run/${name}"
+command_args="-frP ${pidfile} %%PREFIX%%/sbin/${name} ${packetbeat_flags} --path.config ${packetbeat_config} --path.home ${packetbeat_home} --path.data ${packetbeat_data} --path.logs ${packetbeat_logs} -c ${packetbeat_conffile}"
+
+packetbeat_prestart() {
+# Have to empty rc_flags so they don't get passed to daemon(8)
+	rc_flags=""
+}
+
+run_rc_command "$1"
diff --git a/sysutils/beats8/files/patch-auditbeat_auditbeat.reference.yml b/sysutils/beats8/files/patch-auditbeat_auditbeat.reference.yml
new file mode 100644
index 000000000000..3761774a00eb
--- /dev/null
+++ b/sysutils/beats8/files/patch-auditbeat_auditbeat.reference.yml
@@ -0,0 +1,20 @@
+--- auditbeat/auditbeat.reference.yml.orig	2022-10-24 06:49:31 UTC
++++ auditbeat/auditbeat.reference.yml
+@@ -14,7 +14,7 @@
+ auditbeat.config.modules:
+ 
+   # Glob pattern for configuration reloading
+-  path: ${path.config}/modules.d/*.yml
++  path: ${path.config}/auditbeat.modules.d/*.yml
+ 
+   # Period on which files under path should be checked for changes
+   reload.period: 10s
+@@ -1133,7 +1133,7 @@ output.elasticsearch:
+ 
+ # The directory from where to read the dashboards. The default is the `kibana`
+ # folder in the home path.
+-#setup.dashboards.directory: ${path.home}/kibana
++#setup.dashboards.directory: %%DATADIR%%/auditbeat/kibana
+ 
+ # The URL from where to download the dashboards archive. It is used instead of
+ # the directory if it has a value.
diff --git a/sysutils/beats8/files/patch-auditbeat_auditbeat.yml b/sysutils/beats8/files/patch-auditbeat_auditbeat.yml
new file mode 100644
index 000000000000..20ee2d0016a5
--- /dev/null
+++ b/sysutils/beats8/files/patch-auditbeat_auditbeat.yml
@@ -0,0 +1,13 @@
+--- auditbeat/auditbeat.yml.orig	2022-10-24 06:49:31 UTC
++++ auditbeat/auditbeat.yml
+@@ -82,6 +82,10 @@ setup.template.settings:
+ # website.
+ #setup.dashboards.url:
+ 
++# The directory from where to read the dashboards. The default is the `kibana`
++# folder in the home path.
++#setup.dashboards.directory: %%DATADIR%%/auditbeat/kibana
++
+ # =================================== Kibana ===================================
+ 
+ # Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
diff --git a/sysutils/beats8/files/patch-dev-tools_mage_settings.go b/sysutils/beats8/files/patch-dev-tools_mage_settings.go
new file mode 100644
index 000000000000..db8c9ed4cbe1
--- /dev/null
+++ b/sysutils/beats8/files/patch-dev-tools_mage_settings.go
@@ -0,0 +1,20 @@
+--- dev-tools/mage/settings.go.orig	2022-09-27 13:19:27 UTC
++++ dev-tools/mage/settings.go
+@@ -30,7 +30,6 @@ import (
+ 	"sync"
+ 	"time"
+ 
+-	"github.com/magefile/mage/sh"
+ 	"github.com/pkg/errors"
+ 	"golang.org/x/tools/go/vcs"
+ 
+@@ -249,7 +248,8 @@ var (
+ func CommitHash() (string, error) {
+ 	var err error
+ 	commitHashOnce.Do(func() {
+-		commitHash, err = sh.Output("git", "rev-parse", "HEAD")
++		err = nil
++		commitHash = "%%BEATSVERSION%%"
+ 	})
+ 	return commitHash, err
+ }
diff --git a/sysutils/beats8/files/patch-filebeat_filebeat.reference.yml b/sysutils/beats8/files/patch-filebeat_filebeat.reference.yml
new file mode 100644
index 000000000000..71410a09ec92
--- /dev/null
+++ b/sysutils/beats8/files/patch-filebeat_filebeat.reference.yml
@@ -0,0 +1,26 @@
+--- filebeat/filebeat.reference.yml.orig	2022-09-27 13:19:27 UTC
++++ filebeat/filebeat.reference.yml
+@@ -1241,12 +1241,12 @@ filebeat.inputs:
+ #filebeat.config:
+   #inputs:
+     #enabled: false
+-    #path: inputs.d/*.yml
++    #path: filebeat.inputs.d/*.yml
+     #reload.enabled: true
+     #reload.period: 10s
+   #modules:
+     #enabled: true
+-    #path: modules.d/*.yml
++    #path: filebeat.modules.d/*.yml
+     #reload.enabled: true
+     #reload.period: 10s
+ 
+@@ -2266,7 +2266,7 @@ output.elasticsearch:
+ 
+ # The directory from where to read the dashboards. The default is the `kibana`
+ # folder in the home path.
+-#setup.dashboards.directory: ${path.home}/kibana
++#setup.dashboards.directory: %%DATADIR%%/filebeat/kibana
+ 
+ # The URL from where to download the dashboards archive. It is used instead of
+ # the directory if it has a value.
diff --git a/sysutils/beats8/files/patch-filebeat_filebeat.yml b/sysutils/beats8/files/patch-filebeat_filebeat.yml
new file mode 100644
index 000000000000..6630fa8d04d6
--- /dev/null
+++ b/sysutils/beats8/files/patch-filebeat_filebeat.yml
@@ -0,0 +1,33 @@
+--- filebeat/filebeat.yml.orig	2022-09-27 13:19:27 UTC
++++ filebeat/filebeat.yml
+@@ -58,7 +58,7 @@ filebeat.inputs:
+ 
+ filebeat.config.modules:
+   # Glob pattern for configuration loading
+-  path: ${path.config}/modules.d/*.yml
++  path: ${path.config}/filebeat.modules.d/*.yml
+ 
+   # Set to true to enable config reloading
+   reload.enabled: false
+@@ -101,6 +101,10 @@ setup.template.settings:
+ # website.
+ #setup.dashboards.url:
+ 
++# The directory from where to read the dashboards. The default is the `kibana`
++# folder in the home path.
++#setup.dashboards.directory: %%DATADIR%%/filebeat/kibana
++
+ # =================================== Kibana ===================================
+ 
+ # Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
+@@ -168,8 +172,8 @@ processors:
+   - add_host_metadata:
+       when.not.contains.tags: forwarded
+   - add_cloud_metadata: ~
+-  - add_docker_metadata: ~
+-  - add_kubernetes_metadata: ~
++#  - add_docker_metadata: ~
++#  - add_kubernetes_metadata: ~
+ 
+ # ================================== Logging ===================================
+ 
diff --git a/sysutils/beats8/files/patch-heartbeat_heartbeat.yml b/sysutils/beats8/files/patch-heartbeat_heartbeat.yml
new file mode 100644
index 000000000000..4e41b4e0d011
--- /dev/null
+++ b/sysutils/beats8/files/patch-heartbeat_heartbeat.yml
@@ -0,0 +1,11 @@
+--- heartbeat/heartbeat.yml.orig	2021-07-04 13:59:29 UTC
++++ heartbeat/heartbeat.yml
+@@ -13,7 +13,7 @@
+ # of individual yaml files.
+ heartbeat.config.monitors:
+   # Directory + glob pattern to search for configuration files
+-  path: ${path.config}/monitors.d/*.yml
++  path: ${path.config}/heartbeat.monitors.d/*.yml
+   # If enabled, heartbeat will periodically check the config.monitors path for changes
+   reload.enabled: false
+   # How often to check for changes
diff --git a/sysutils/beats8/files/patch-libbeat_autodiscover_providers_docker_config.go b/sysutils/beats8/files/patch-libbeat_autodiscover_providers_docker_config.go
new file mode 100644
index 000000000000..b57cdd46584d
--- /dev/null
+++ b/sysutils/beats8/files/patch-libbeat_autodiscover_providers_docker_config.go
@@ -0,0 +1,13 @@
+--- libbeat/autodiscover/providers/docker/config.go.orig	2022-10-24 06:49:31 UTC
++++ libbeat/autodiscover/providers/docker/config.go
+@@ -15,8 +15,8 @@
+ // specific language governing permissions and limitations
+ // under the License.
+ 
+-//go:build linux || darwin || windows
+-// +build linux darwin windows
++//go:build linux || darwin || windows || freebsd
++// +build linux darwin windows freebsd
+ 
+ package docker
+ 
diff --git a/sysutils/beats8/files/patch-libbeat_autodiscover_providers_docker_docker.go b/sysutils/beats8/files/patch-libbeat_autodiscover_providers_docker_docker.go
new file mode 100644
index 000000000000..465edde47d12
--- /dev/null
+++ b/sysutils/beats8/files/patch-libbeat_autodiscover_providers_docker_docker.go
@@ -0,0 +1,22 @@
+--- libbeat/autodiscover/providers/docker/docker.go.orig	2022-10-24 06:49:31 UTC
++++ libbeat/autodiscover/providers/docker/docker.go
+@@ -15,8 +15,8 @@
+ // specific language governing permissions and limitations
+ // under the License.
+ 
+-//go:build linux || darwin || windows
+-// +build linux darwin windows
++//go:build linux || darwin || windows || freebsd
++// +build linux darwin windows freebsd
+ 
+ package docker
+ 
+@@ -33,7 +33,7 @@ import (
+ 	"github.com/elastic/beats/v7/libbeat/common"
+ 
+ 	"github.com/elastic/elastic-agent-autodiscover/bus"
+-	"github.com/elastic/elastic-agent-autodiscover/docker"
++	docker "github.com/elastic/elastic-agent-autodiscover/docker"
+ 	"github.com/elastic/elastic-agent-autodiscover/utils"
+ 	"github.com/elastic/elastic-agent-libs/config"
+ 	"github.com/elastic/elastic-agent-libs/keystore"
diff --git a/sysutils/beats8/files/patch-libbeat_autodiscover_providers_kubernetes_config.go b/sysutils/beats8/files/patch-libbeat_autodiscover_providers_kubernetes_config.go
new file mode 100644
index 000000000000..36eee0f9cd90
--- /dev/null
+++ b/sysutils/beats8/files/patch-libbeat_autodiscover_providers_kubernetes_config.go
@@ -0,0 +1,13 @@
+--- libbeat/autodiscover/providers/kubernetes/config.go.orig	2021-12-17 15:54:41 UTC
++++ libbeat/autodiscover/providers/kubernetes/config.go
+@@ -15,8 +15,8 @@
+ // specific language governing permissions and limitations
+ // under the License.
+ 
+-//go:build linux || darwin || windows
+-// +build linux darwin windows
++//go:build linux || darwin || windows || freebsd
++// +build linux darwin windows freebsd
+ 
+ package kubernetes
+ 
diff --git a/sysutils/beats8/files/patch-libbeat_autodiscover_providers_kubernetes_kubernetes.go b/sysutils/beats8/files/patch-libbeat_autodiscover_providers_kubernetes_kubernetes.go
new file mode 100644
index 000000000000..0795f2de7c98
--- /dev/null
+++ b/sysutils/beats8/files/patch-libbeat_autodiscover_providers_kubernetes_kubernetes.go
@@ -0,0 +1,13 @@
+--- libbeat/autodiscover/providers/kubernetes/kubernetes.go.orig	2021-12-17 15:54:41 UTC
++++ libbeat/autodiscover/providers/kubernetes/kubernetes.go
+@@ -15,8 +15,8 @@
+ // specific language governing permissions and limitations
+ // under the License.
+ 
+-//go:build linux || darwin || windows
+-// +build linux darwin windows
++//go:build linux || darwin || windows || freebsd
++// +build linux darwin windows freebsd
+ 
+ package kubernetes
+ 
diff --git a/sysutils/beats8/files/patch-libbeat_scripts_Makefile b/sysutils/beats8/files/patch-libbeat_scripts_Makefile
new file mode 100644
index 000000000000..59c695a04824
--- /dev/null
+++ b/sysutils/beats8/files/patch-libbeat_scripts_Makefile
@@ -0,0 +1,26 @@
+--- libbeat/scripts/Makefile.orig	2022-09-27 13:19:27 UTC
++++ libbeat/scripts/Makefile
+@@ -47,7 +47,7 @@ GOFILES = $(shell find . -type f -name '*.go' 2>/dev/n
+ GOFILES_NOVENDOR = $(shell find . -type f -name '*.go' -not -path "*/vendor/*" 2>/dev/null)
+ GOFILES_ALL = $(GOFILES) $(shell find $(ES_BEATS) -type f -name '*.go' 2>/dev/null)
+ GOPACKAGES_STRESSTESTS=$(shell find . -name '*.go' 2>/dev/null | xargs grep -l '\+build.*stresstest' | xargs -n1 dirname | uniq)
+-SHELL=bash
++SHELL=sh
+ ES_HOST?=elasticsearch
+ ES_PORT?=9200
+ ES_USER?=beats
+@@ -352,12 +352,12 @@ ifndef EXCLUDE_COMMON_UPDATE_TARGET
+ update: python-env fields collect config ## @build Update expects the most recent version of libbeat in the GOPATH
+ 	@echo "Updating generated files for ${BEAT_NAME}"
+ 
+-ifneq ($(shell [[ $(BEAT_NAME) == libbeat || $(BEAT_NAME) == metricbeat ]] && echo true ),true)
++ifneq ($(shell [[ $(BEAT_NAME) = libbeat || $(BEAT_NAME) = metricbeat ]] && echo true ),true)
+ 	mkdir -p include
+ 	go run ${INSTALL_FLAG} ${ES_BEATS}/dev-tools/cmd/asset/asset.go -license $(LICENSE) -pkg include -in fields.yml -out include/fields.go $(BEAT_NAME)
+ endif
+ 
+-ifneq ($(shell [[ $(BEAT_NAME) == libbeat || $(BEAT_NAME) == metricbeat ]] && echo true ),true)
++ifneq ($(shell [[ $(BEAT_NAME) = libbeat || $(BEAT_NAME) = metricbeat ]] && echo true ),true)
+ 	@# Update docs
+ 	@mkdir -p docs
+ 	@${PYTHON_ENV_EXE} ${ES_BEATS}/libbeat/scripts/generate_fields_docs.py $(PWD)/fields.yml ${BEAT_TITLE} ${ES_BEATS}
diff --git a/sysutils/beats8/files/patch-metricbeat_metricbeat.reference.yml b/sysutils/beats8/files/patch-metricbeat_metricbeat.reference.yml
new file mode 100644
index 000000000000..54e125f6af50
--- /dev/null
+++ b/sysutils/beats8/files/patch-metricbeat_metricbeat.reference.yml
@@ -0,0 +1,20 @@
+--- metricbeat/metricbeat.reference.yml.orig	2022-09-27 13:19:27 UTC
++++ metricbeat/metricbeat.reference.yml
+@@ -14,7 +14,7 @@
+ metricbeat.config.modules:
+ 
+   # Glob pattern for configuration reloading
+-  path: ${path.config}/modules.d/*.yml
++  path: ${path.config}/metricbeat.modules.d/*.yml
+ 
+   # Period on which files under path should be checked for changes
+   reload.period: 10s
+@@ -2006,7 +2006,7 @@ output.elasticsearch:
+ 
+ # The directory from where to read the dashboards. The default is the `kibana`
+ # folder in the home path.
+-#setup.dashboards.directory: ${path.home}/kibana
++#setup.dashboards.directory: %%DATADIR%%/metricbeat/kibana
+ 
+ # The URL from where to download the dashboards archive. It is used instead of
+ # the directory if it has a value.
diff --git a/sysutils/beats8/files/patch-metricbeat_metricbeat.yml b/sysutils/beats8/files/patch-metricbeat_metricbeat.yml
new file mode 100644
index 000000000000..0dcf745f9cfd
--- /dev/null
+++ b/sysutils/beats8/files/patch-metricbeat_metricbeat.yml
@@ -0,0 +1,33 @@
+--- metricbeat/metricbeat.yml.orig	2021-10-07 17:20:31 UTC
++++ metricbeat/metricbeat.yml
+@@ -11,7 +11,7 @@
+ 
+ metricbeat.config.modules:
+   # Glob pattern for configuration loading
+-  path: ${path.config}/modules.d/*.yml
++  path: ${path.config}/metricbeat.modules.d/*.yml
+ 
+   # Set to true to enable config reloading
+   reload.enabled: false
+@@ -54,6 +54,10 @@ setup.template.settings:
+ # website.
+ #setup.dashboards.url:
+ 
++# The directory from where to read the dashboards. The default is the `kibana`
++# folder in the home path.
++#setup.dashboards.directory: %%DATADIR%%/metricbeat/kibana
++
+ # =================================== Kibana ===================================
+ 
+ # Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
+@@ -123,8 +127,8 @@ output.elasticsearch:
+ processors:
+   - add_host_metadata: ~
+   - add_cloud_metadata: ~
+-  - add_docker_metadata: ~
+-  - add_kubernetes_metadata: ~
++#  - add_docker_metadata: ~
++#  - add_kubernetes_metadata: ~
+ 
+ 
+ # ================================== Logging ===================================
diff --git a/sysutils/beats8/files/patch-packetbeat_packetbeat.reference.yml b/sysutils/beats8/files/patch-packetbeat_packetbeat.reference.yml
new file mode 100644
index 000000000000..de6d99250123
--- /dev/null
+++ b/sysutils/beats8/files/patch-packetbeat_packetbeat.reference.yml
@@ -0,0 +1,11 @@
+--- packetbeat/packetbeat.reference.yml.orig	2022-09-27 13:19:27 UTC
++++ packetbeat/packetbeat.reference.yml
+@@ -1634,7 +1634,7 @@ output.elasticsearch:
+ 
+ # The directory from where to read the dashboards. The default is the `kibana`
+ # folder in the home path.
+-#setup.dashboards.directory: ${path.home}/kibana
++#setup.dashboards.directory: %%DATADIR%%/packetbeat/kibana
+ 
+ # The URL from where to download the dashboards archive. It is used instead of
+ # the directory if it has a value.
diff --git a/sysutils/beats8/files/patch-packetbeat_packetbeat.yml b/sysutils/beats8/files/patch-packetbeat_packetbeat.yml
new file mode 100644
index 000000000000..0a3f15dfcbc9
--- /dev/null
+++ b/sysutils/beats8/files/patch-packetbeat_packetbeat.yml
@@ -0,0 +1,23 @@
+--- packetbeat/packetbeat.yml.orig	2022-10-24 06:49:31 UTC
++++ packetbeat/packetbeat.yml
+@@ -25,7 +25,8 @@
+ #   internal_networks:
+ #   - private
+ #
+-packetbeat.interfaces.device: any
++# On FreeBSD, you must specify particular interface to sniff on
++packetbeat.interfaces.device: em0
+ 
+ # Specify the amount of time between polling for changes in the default
+ # route. This option is only used when one of the default route devices
+@@ -173,6 +174,10 @@ setup.template.settings:
+ # versions, this URL points to the dashboard archive on the artifacts.elastic.co
+ # website.
+ #setup.dashboards.url:
++
++# The directory from where to read the dashboards. The default is the `kibana`
++# folder in the home path.
++#setup.dashboards.directory: %%DATADIR%%/packetbeat/kibana
+ 
+ # =================================== Kibana ===================================
+ 
diff --git a/sysutils/beats8/files/patch-vendor_github.com_elastic_elastic-agent-autodiscover_docker_client.go b/sysutils/beats8/files/patch-vendor_github.com_elastic_elastic-agent-autodiscover_docker_client.go
new file mode 100644
index 000000000000..4c27b7b7445b
--- /dev/null
+++ b/sysutils/beats8/files/patch-vendor_github.com_elastic_elastic-agent-autodiscover_docker_client.go
@@ -0,0 +1,13 @@
+--- vendor/github.com/elastic/elastic-agent-autodiscover/docker/client.go.orig	2022-11-25 21:51:45 UTC
++++ vendor/github.com/elastic/elastic-agent-autodiscover/docker/client.go
+@@ -15,8 +15,8 @@
+ // specific language governing permissions and limitations
+ // under the License.
+ 
+-//go:build linux || darwin || windows
+-// +build linux darwin windows
++//go:build linux || darwin || windows || freebsd
++// +build linux darwin windows freebsd
+ 
+ package docker
+ 
diff --git a/sysutils/beats8/files/patch-vendor_github.com_elastic_elastic-agent-autodiscover_docker_watcher.go b/sysutils/beats8/files/patch-vendor_github.com_elastic_elastic-agent-autodiscover_docker_watcher.go
new file mode 100644
index 000000000000..b3eb5109493f
--- /dev/null
+++ b/sysutils/beats8/files/patch-vendor_github.com_elastic_elastic-agent-autodiscover_docker_watcher.go
@@ -0,0 +1,13 @@
+--- vendor/github.com/elastic/elastic-agent-autodiscover/docker/watcher.go.orig	2022-11-25 21:51:52 UTC
++++ vendor/github.com/elastic/elastic-agent-autodiscover/docker/watcher.go
+@@ -15,8 +15,8 @@
+ // specific language governing permissions and limitations
+ // under the License.
+ 
+-//go:build linux || darwin || windows
+-// +build linux darwin windows
++//go:build linux || darwin || windows || freebsd
++// +build linux darwin windows freebsd
+ 
+ package docker
+ 
diff --git a/sysutils/beats8/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_cpu_metrics__freebsd.go b/sysutils/beats8/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_cpu_metrics__freebsd.go
new file mode 100644
index 000000000000..f8872e79e492
--- /dev/null
+++ b/sysutils/beats8/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_cpu_metrics__freebsd.go
@@ -0,0 +1,10 @@
+--- vendor/github.com/elastic/elastic-agent-system-metrics/metric/cpu/metrics_freebsd.go.orig	2022-11-25 21:56:24 UTC
++++ vendor/github.com/elastic/elastic-agent-system-metrics/metric/cpu/metrics_freebsd.go
+@@ -57,3 +57,7 @@ func parseCPULine(line string) (CPU, error) {
+ 
+ 	return cpuData, errs.Err()
+ }
++
++func scanCPUInfoFile(scanner *bufio.Scanner) ([]CPUInfo, error) {
++	return cpuinfoScanner(scanner)
++}
diff --git a/sysutils/beats8/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_cpu_metrics__procfs__common.go b/sysutils/beats8/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_cpu_metrics__procfs__common.go
new file mode 100644
index 000000000000..1756133ba7a0
--- /dev/null
+++ b/sysutils/beats8/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_cpu_metrics__procfs__common.go
@@ -0,0 +1,20 @@
+--- vendor/github.com/elastic/elastic-agent-system-metrics/metric/cpu/metrics_procfs_common.go.orig	2022-11-25 21:55:11 UTC
++++ vendor/github.com/elastic/elastic-agent-system-metrics/metric/cpu/metrics_procfs_common.go
+@@ -32,7 +32,7 @@ import (
+ 
+ // Get returns a metrics object for CPU data
+ func Get(procfs resolve.Resolver) (CPUMetrics, error) {
+-	path := procfs.ResolveHostFS("/proc/stat")
++	path := procfs.ResolveHostFS("/compat/linux/proc/stat")
+ 	fd, err := os.Open(path)
+ 	defer func() {
+ 		_ = fd.Close()
+@@ -46,7 +46,7 @@ func Get(procfs resolve.Resolver) (CPUMetrics, error) 
+ 		return CPUMetrics{}, fmt.Errorf("scanning stat file: %w", err)
+ 	}
+ 
+-	cpuInfoPath := procfs.ResolveHostFS("/proc/cpuinfo")
++	cpuInfoPath := procfs.ResolveHostFS("/compat/linux/proc/cpuinfo")
+ 	cpuInfoFd, err := os.Open(cpuInfoPath)
+ 	if err != nil {
+ 		return CPUMetrics{}, fmt.Errorf("opening '%s': %w", cpuInfoPath, err)
diff --git a/sysutils/beats8/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_system_filesystem_filesystem__unix.go b/sysutils/beats8/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_system_filesystem_filesystem__unix.go
new file mode 100644
index 000000000000..26fa875e63eb
--- /dev/null
+++ b/sysutils/beats8/files/patch-vendor_github.com_elastic_elastic-agent-system-metrics_metric_system_filesystem_filesystem__unix.go
@@ -0,0 +1,14 @@
+--- vendor/github.com/elastic/elastic-agent-system-metrics/metric/system/filesystem/filesystem_unix.go.orig	2022-11-25 22:00:53 UTC
++++ vendor/github.com/elastic/elastic-agent-system-metrics/metric/system/filesystem/filesystem_unix.go
+@@ -37,9 +37,9 @@ func (fs *FSStat) GetUsage() error {
+ 
+ 	fs.Total = opt.UintWith(stat.Blocks).MultUint64OrNone(uint64(stat.Bsize))
+ 	fs.Free = opt.UintWith(stat.Bfree).MultUint64OrNone(uint64(stat.Bsize))
+-	fs.Avail = opt.UintWith(stat.Bavail).MultUint64OrNone(uint64(stat.Bsize))
++	fs.Avail = opt.UintWith(uint64(stat.Bavail)).MultUint64OrNone(uint64(stat.Bsize))
+ 	fs.Files = opt.UintWith(stat.Files)
+-	fs.FreeFiles = opt.UintWith(stat.Ffree)
++	fs.FreeFiles = opt.UintWith(uint64(stat.Ffree))
+ 
+ 	fs.fillMetrics()
+ 
diff --git a/sysutils/beats8/files/patch-vendor_github.com_godbus_dbus_transport__unixcred__freebsd.go b/sysutils/beats8/files/patch-vendor_github.com_godbus_dbus_transport__unixcred__freebsd.go
new file mode 100644
index 000000000000..e8acdf147806
--- /dev/null
+++ b/sysutils/beats8/files/patch-vendor_github.com_godbus_dbus_transport__unixcred__freebsd.go
@@ -0,0 +1,12 @@
+--- vendor/github.com/godbus/dbus/transport_unixcred_freebsd.go.orig	2021-08-05 12:40:38 UTC
++++ vendor/github.com/godbus/dbus/transport_unixcred_freebsd.go
+@@ -8,7 +8,8 @@
+ package dbus
+ 
+ /*
*** 103 LINES SKIPPED ***