Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 01 Jan 2026 19:27:29 +0000
From:      =?utf-8?Q?Jes=C3=BAs?= Daniel Colmenares Oviedo <dtxdf@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Cc:        Saro <web@saromedia.com>
Subject:   git: 2b2554ee15ec - main - sysutils/logstash92: New port: Server-side data ingestion and transformation tool (9.2.x version)
Message-ID:  <6956caa1.3c2be.18605f8d@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by dtxdf:

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

commit 2b2554ee15ecffb4493e89f124ba799debc656e4
Author:     Saro <web@saromedia.com>
AuthorDate: 2026-01-01 18:58:16 +0000
Commit:     Jesús Daniel Colmenares Oviedo <dtxdf@FreeBSD.org>
CommitDate: 2026-01-01 19:22:37 +0000

    sysutils/logstash92: New port: Server-side data ingestion and transformation tool (9.2.x version)
    
    Logstash is an open source, server-side data processing pipeline that
    ingests data from a multitude of sources simultaneously, transforms it,
    and then sends it to your favorite "stash."
    
    PR:             290986
---
 sysutils/Makefile                                  |   1 +
 sysutils/logstash92/Makefile                       |  89 ++++++++++++++++
 sysutils/logstash92/distinfo                       |   3 +
 sysutils/logstash92/files/logstash.conf.sample     |  17 +++
 sysutils/logstash92/files/logstash.in              | 117 +++++++++++++++++++++
 .../logstash92/files/patch-config_logstash.yml     |  11 ++
 sysutils/logstash92/files/pkg-message.in           |  25 +++++
 sysutils/logstash92/pkg-descr                      |   3 +
 8 files changed, 266 insertions(+)

diff --git a/sysutils/Makefile b/sysutils/Makefile
index 0c60470a142f..8386e81f77cd 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -672,6 +672,7 @@
     SUBDIR += logstash7
     SUBDIR += logstash8
     SUBDIR += logstash91
+    SUBDIR += logstash92
     SUBDIR += logtool
     SUBDIR += logwatch
     SUBDIR += loki
diff --git a/sysutils/logstash92/Makefile b/sysutils/logstash92/Makefile
new file mode 100644
index 000000000000..a192737b5aee
--- /dev/null
+++ b/sysutils/logstash92/Makefile
@@ -0,0 +1,89 @@
+PORTNAME=	logstash
+PORTVERSION=	9.2.3
+DISTVERSIONSUFFIX=	-darwin-x86_64
+CATEGORIES=	sysutils java
+MASTER_SITES=	https://artifacts.elastic.co/downloads/logstash/
+PKGNAMESUFFIX=	92
+
+MAINTAINER=	elastic@FreeBSD.org
+COMMENT=	Server-side data ingestion and transformation tool (9.2.x version)
+WWW=		https://www.elastic.co/products/logstash
+
+LICENSE=	APACHE20
+
+ONLY_FOR_ARCHS=	aarch64 amd64
+
+RUN_DEPENDS=	${LOCALBASE}/bin/bash:shells/bash
+
+USES=		cpe shebangfix java:run
+
+CPE_VENDOR=	elastic
+JAVA_VERSION=	21+
+
+USE_RC_SUBR=	logstash
+
+SHEBANG_FILES=	bin/*
+
+CONFLICTS=	logstash6 logstash7 logstash8 logstash91
+
+NO_BUILD=	yes
+
+PORTSCOUT=	limit:^9\.2\.\d{1}
+
+SUB_FILES=	pkg-message
+SUB_LIST=	JAVA_HOME=${JAVA_HOME} \
+		LOGSTASH_HOME=${LOGSTASH_HOME}
+
+WRKSRC=		${WRKDIR}/${PORTNAME}-${DISTVERSION}
+
+USERS=		logstash
+GROUPS=		logstash
+
+LOGSTASH_CONF_FILES=		jvm.options log4j2.properties logstash.yml \
+				pipelines.yml startup.options
+LOGSTASH_HOME?=			${PREFIX}/${PORTNAME}
+LOGSTASH_JRUBY_BIN_FILES=	ast gem irb jgem jirb jirb_swing jruby \
+				jruby.sh jrubyc rake rdoc ri
+LOGSTASH_JRUBY_SUBDIR=		vendor/jruby/bin
+
+post-extract:
+	${RM} -rf ${WRKSRC}/jdk.app
+
+post-patch:
+	${REINPLACE_CMD} 's|%%ETCDIR%%|${ETCDIR}|g' ${WRKSRC}/config/logstash.yml
+	${FIND} ${WRKSRC} -name '*.orig' -delete
+
+do-install:
+	${FIND} ${WRKSRC} -name '*.bat' -delete
+	${MKDIR} ${STAGEDIR}${ETCDIR}
+	${INSTALL_DATA} ${FILESDIR}/logstash.conf.sample ${STAGEDIR}${ETCDIR}
+.for x in ${LOGSTASH_CONF_FILES}
+	${INSTALL_DATA} ${WRKSRC}/config/${x} ${STAGEDIR}${ETCDIR}/${x}.sample
+.endfor
+	${RM} -rf ${WRKSRC}/config
+	(cd ${WRKSRC} && ${COPYTREE_SHARE} . ${STAGEDIR}${LOGSTASH_HOME})
+	${CHMOD} ${BINMODE} ${STAGEDIR}${LOGSTASH_HOME}/bin/*
+.for x in ${LOGSTASH_JRUBY_BIN_FILES}
+	${CHMOD} ${BINMODE} ${STAGEDIR}${LOGSTASH_HOME}/${LOGSTASH_JRUBY_SUBDIR}/${x}
+.endfor
+	${FIND} ${STAGEDIR}${LOGSTASH_HOME}/vendor/bundle/jruby/3.1.0/gems \
+	        ${STAGEDIR}${LOGSTASH_HOME}/vendor/bundle/jruby/3.1.0/plugins \
+		${STAGEDIR}${LOGSTASH_HOME}/vendor/jruby/lib/ruby/gems/shared/gems \
+		-type d -empty -delete
+	${INSTALL} -lrs ${STAGEDIR}${ETCDIR} ${STAGEDIR}${LOGSTASH_HOME}/config
+
+post-install:
+	${ECHO} "@sample ${ETCDIR}/logstash.conf.sample" >> ${TMPPLIST}
+.for x in ${LOGSTASH_CONF_FILES}
+	${ECHO} "@sample ${ETCDIR}/${x}.sample" >> ${TMPPLIST}
+.endfor
+	${ECHO} "@dir logstash/vendor/bundle/jruby/3.1.0/build_info" >> ${TMPPLIST}
+	${ECHO} "@dir logstash/vendor/bundle/jruby/3.1.0/cache" >> ${TMPPLIST}
+	${ECHO} "@dir logstash/vendor/bundle/jruby/3.1.0/doc" >> ${TMPPLIST}
+	${ECHO} "@dir logstash/vendor/bundle/jruby/3.1.0/extensions" >> ${TMPPLIST}
+	${ECHO} "@dir logstash/vendor/jruby/lib/ruby/gems/shared/cache" >> ${TMPPLIST}
+	${FIND} -s ${STAGEDIR}${LOGSTASH_HOME} -not -type d | ${SORT} | \
+		${SED} -e 's#^${STAGEDIR}${PREFIX}/##' >> ${TMPPLIST}
+	${ECHO} "@dir(logstash,logstash,) logstash/data" >> ${TMPPLIST}
+
+.include <bsd.port.mk>
diff --git a/sysutils/logstash92/distinfo b/sysutils/logstash92/distinfo
new file mode 100644
index 000000000000..019e9a4f6f28
--- /dev/null
+++ b/sysutils/logstash92/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1767131393
+SHA256 (logstash-9.2.3-darwin-x86_64.tar.gz) = 2782600895c8200dbebf1e415b5c13045e6121e80643d13970e0aec702b55fde
+SIZE (logstash-9.2.3-darwin-x86_64.tar.gz) = 425330726
diff --git a/sysutils/logstash92/files/logstash.conf.sample b/sysutils/logstash92/files/logstash.conf.sample
new file mode 100644
index 000000000000..2fa9229d62bf
--- /dev/null
+++ b/sysutils/logstash92/files/logstash.conf.sample
@@ -0,0 +1,17 @@
+# Sample Logstash configuration for creating a simple
+# Beats -> Logstash -> Elasticsearch pipeline.
+
+input {
+  beats {
+    port => 5044
+  }
+}
+
+output {
+  elasticsearch {
+    hosts => ["http://localhost:9200"]
+    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
+    #user => "elastic"
+    #password => "changeme"
+  }
+}
diff --git a/sysutils/logstash92/files/logstash.in b/sysutils/logstash92/files/logstash.in
new file mode 100644
index 000000000000..2346410b0cc3
--- /dev/null
+++ b/sysutils/logstash92/files/logstash.in
@@ -0,0 +1,117 @@
+#!/bin/sh
+
+# Configuration settings for logstash in /etc/rc.conf:
+#
+# PROVIDE: logstash
+# REQUIRE: DAEMON
+# BEFORE:  LOGIN
+# KEYWORD: shutdown
+#
+# logstash_enable (bool):
+#   Default value: "NO"
+#   Flag that determines whether Logstash is enabled.
+#
+# logstash_home (string):
+#   Default value: "/usr/local/logstash"
+#   Logstash installation directory.
+#
+# logstash_config (string):
+#   Default value: /usr/local/etc/${name}
+#   Logstash configuration path.
+#
+# logstash_log (bool):
+#   Set to "YES" by default.
+#   Set it to "YES" to enable logstash logging to file.
+#
+# logstash_log_dir (string):
+#   Default value: "${logdir}/${name}"
+#   Default output to /var/log/logstash/
+#
+# logstash_java_home (string):
+#   Default value: "%%JAVA_HOME%%"
+#   Root directory of the desired Java SDK.
+#   The JAVA_HOME environment variable is set with the contents of this
+#   variable.
+#
+# logstash_java_opts (string):
+#   Default value: ""
+#   Options to pass to the Java Virtual Machine.
+#   The JAVA_OPTS environment variable is set with the contents of this
+#   variable.
+#
+# logstash_opts (string):
+#   Default value: ""
+#   Additional command line flags for logstash, eg. "-r"
+#
+
+. /etc/rc.subr
+
+name=logstash
+rcvar=logstash_enable
+
+load_rc_config ${name}
+
+logdir="/var/log"
+
+: ${logstash_enable="NO"}
+: ${logstash_user="logstash"}
+: ${logstash_group="logstash"}
+: ${logstash_home="%%LOGSTASH_HOME%%"}
+: ${logstash_config="%%ETCDIR%%"}
+: ${logstash_log="YES"}
+: ${logstash_log_dir="${logdir}/${name}"}
+: ${logstash_java_home="%%JAVA_HOME%%"}
+: ${logstash_java_opts=""}
+: ${logstash_opts=""}
+
+pidfile=/var/run/${name}/${name}.pid
+
+extra_commands="configtest reload"
+start_precmd="logstash_precmd"
+configtest_cmd=configtest
+
+logstash_cmd="${logstash_home}/bin/logstash"
+procname="${logstash_java_home}/bin/java"
+
+logstash_chdir=${logstash_home}
+logstash_log_options=""
+
+if checkyesno logstash_log; then
+  logstash_log_options=" -l ${logstash_log_dir}"
+fi
+
+logstash_args="--path.settings ${logstash_config} ${logstash_log_options} ${logstash_opts}"
+
+JAVA_OPTS="${logstash_java_opts}"
+JAVA_HOME="${logstash_java_home}"
+export JAVA_OPTS
+export JAVA_HOME
+
+command="/usr/sbin/daemon"
+command_args="-f -p ${pidfile} ${logstash_cmd} ${logstash_args}"
+required_files="${logstash_home} ${logstash_java_home} ${logstash_cmd} ${logstash_config}"
+
+# Include %%PREFIX%%/bin in path because Logstash startup scripts
+# assume bash is in path.
+PATH=%%PREFIX%%/bin:$PATH
+
+logstash_precmd()
+{
+    /usr/bin/install -d -o ${logstash_user} -g ${logstash_group} -m 755 ${pidfile%/*}
+    /usr/bin/install -d -o ${logstash_user} -g ${logstash_group} -m 755 ${logstash_log_dir}
+    /usr/bin/install -d -o ${logstash_user} -g ${logstash_group} -m 755 /var/db/logstash
+    /usr/bin/install -d -o ${logstash_user} -g ${logstash_group} -m 755 /var/run/logstash
+
+    if [ -d ${logstash_home}/data/queue ]; then
+        chown ${logstash_user}:${logstash_group} ${logstash_home}/data/queue
+    fi
+}
+
+configtest()
+{
+    echo "${name} configtest:"
+    echo "WARNING: this does not check validity of Grok patterns!"
+    ${logstash_cmd} --path.settings ${logstash_config} --config.test_and_exit
+}
+
+run_rc_command "$1"
diff --git a/sysutils/logstash92/files/patch-config_logstash.yml b/sysutils/logstash92/files/patch-config_logstash.yml
new file mode 100644
index 000000000000..e6d45d08195c
--- /dev/null
+++ b/sysutils/logstash92/files/patch-config_logstash.yml
@@ -0,0 +1,11 @@
+--- config/logstash.yml.orig	2018-03-09 15:21:48 UTC
++++ config/logstash.yml
+@@ -61,7 +61,7 @@
+ #
+ # Where to fetch the pipeline configuration for the main pipeline
+ #
+-# path.config:
++path.config: %%ETCDIR%%/logstash.conf
+ #
+ # Pipeline configuration string for the main pipeline
+ #
diff --git a/sysutils/logstash92/files/pkg-message.in b/sysutils/logstash92/files/pkg-message.in
new file mode 100644
index 000000000000..3c7f0b2fa951
--- /dev/null
+++ b/sysutils/logstash92/files/pkg-message.in
@@ -0,0 +1,25 @@
+[
+{ type: install
+  message: <<EOM
+Logstash 9.2 was installed.
+
+1) To start Logstash as an agent during system startup, run:
+
+    sysrc logstash_enable="YES"
+
+2) Extra options can be found in the startup script.
+
+3) WARNING: In order for Logstash to work properly,
+   procfs needs to be mounted on /proc.
+   
+   If you have not done it yet, please do the following:
+   
+           mount -t procfs proc /proc
+   
+   To make it permanent, you need the following lines in /etc/fstab:
+   
+           proc    /proc           procfs          rw      0       0
+   
+EOM
+}
+]
diff --git a/sysutils/logstash92/pkg-descr b/sysutils/logstash92/pkg-descr
new file mode 100644
index 000000000000..ece40f16d8d2
--- /dev/null
+++ b/sysutils/logstash92/pkg-descr
@@ -0,0 +1,3 @@
+Logstash is an open source, server-side data processing pipeline that
+ingests data from a multitude of sources simultaneously, transforms it,
+and then sends it to your favorite "stash."


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6956caa1.3c2be.18605f8d>