aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStuart Cardall <developer@it-offshore.co.uk>2017-03-08 22:55:10 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2017-03-24 21:08:03 +0000
commit70516d0b4500df3e14c8d41d6d8b7ecc62c74618 (patch)
tree64ad8f5ba6468cc508e6cf35c2c7261799ba15fc
parent6dec91f48cc6136107985cc444729f4d2295e6f1 (diff)
downloadaports-70516d0b4500df3e14c8d41d6d8b7ecc62c74618.tar.bz2
aports-70516d0b4500df3e14c8d41d6d8b7ecc62c74618.tar.xz
testing/logstash: update to 5.2.2 / use supervise-daemon
adds service supervision with OpenRC's builtin supervise-daemon logstash/bin added to $PATH take ownership
-rw-r--r--testing/logstash/APKBUILD109
-rw-r--r--testing/logstash/logstash.conf16
-rw-r--r--testing/logstash/logstash.confd23
-rw-r--r--testing/logstash/logstash.initd52
-rw-r--r--testing/logstash/logstash.pre-install4
-rw-r--r--testing/logstash/logstash.profile3
6 files changed, 144 insertions, 63 deletions
diff --git a/testing/logstash/APKBUILD b/testing/logstash/APKBUILD
index 69a16c9807..b3dbe18e7e 100644
--- a/testing/logstash/APKBUILD
+++ b/testing/logstash/APKBUILD
@@ -1,64 +1,91 @@
# Contributor: Steeve Chailloux <steeve@chaahk.com>
-# Maintainer:
+# Maintainer: Stuart Cardall <developer@it-offshore.co.uk>
pkgname=logstash
-pkgver=1.4.2
-pkgrel=2
+pkgver=5.2.2
+pkgrel=0
pkgdesc="A flexible, open source, data collection, parsing and enrichment pipeline"
url="http://logstash.net"
arch="noarch"
license="apache"
-depends="openjdk7-jre-base"
-depends_dev=""
+depends="openjdk8-jre-base java-jffi-native libc6-compat bash"
makedepends="$depends_dev"
install="$pkgname.pre-install"
pkgusers="logstash"
-subpackages=""
-source="
- https://download.elasticsearch.org/${pkgname}/${pkgname}/${pkgname}-${pkgver}.tar.gz
- $pkgname.confd
- $pkgname.initd
- "
-
-_builddir="${srcdir}/${pkgname}-${pkgver}"
-prepare() {
- local i
- cd "$_builddir"
- for i in $source; do
- case $i in
- *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
- esac
- done
-}
+subpackages="$pkgname-doc"
+options="!strip !check"
+source="$pkgname-$pkgver.tar.gz::https://artifacts.elastic.co/downloads/$pkgname/$pkgname-$pkgver.tar.gz
+ $pkgname.confd
+ $pkgname.initd
+ $pkgname.conf
+ $pkgname.profile
+ "
+builddir="${srcdir}/${pkgname}-${pkgver}"
build() {
- echo "Nothing to build"
+ return 0
}
package() {
- cd "$_builddir"
+ local datadir=/var/lib/logstash logdir=$datadir/logs confdir=/etc/logstash
+ local homedir=/usr/share/logstash heapsize=150m
+
+ cd "$builddir"
+ # create the necessary dirs
+ install -dm755 "$pkgdir/$homedir" || return 1
+ install -dm755 "$pkgdir/$logdir" || return 1
+ install -dm755 "$pkgdir/$datadir" || return 1
+ install -dm755 "$pkgdir/$confdir" || return 1
+ install -dm755 "$pkgdir/$confdir/conf.d" || return 1
+
+ # install scripts
install -m755 -D "$srcdir"/$pkgname.initd \
"$pkgdir"/etc/init.d/$pkgname || return 1
install -m644 -D "$srcdir"/$pkgname.confd \
"$pkgdir"/etc/conf.d/$pkgname || return 1
+ install -m644 -D "$srcdir"/$pkgname.conf \
+ "$pkgdir/$confdir"/conf.d/ || return 1
+ install -m644 -D "$srcdir"/$pkgname.profile \
+ "$pkgdir"/etc/profile.d/logstash.sh || return 1
+
+ # copy files
+ cp -r * "$pkgdir/$homedir/" || return 1
+ cp config/* "$pkgdir/$confdir/" || return 1
+
+ # move docs
+ mkdir -p "$pkgdir"/usr/share/doc/logstash && cd "$pkgdir"
+ find usr/share/logstash -maxdepth 1 -type f ! -name Gemfile* \
+ -name "[[:upper:]]*" -exec mv {} usr/share/doc/logstash/ \;
+
+ # remove files for windows
+ find usr/share/logstash -type f -name *.bat -exec rm -f {} \;
+ find usr/share/logstash -type f -name *win32* -exec rm -f {} \;
+ find usr/share/logstash -type f -name *Win32* -exec rm -f {} \;
+
+ # remove bundled libjffi (we use Alpine's java-jffi-native)
+ rm -rf "$pkgdir"/usr/share/logstash/vendor/jruby/lib/jni || return 1
+
+ # set default paths
+ sed -i \
+ -e "s|# path.config:|path.config: $confdir/conf.d|" \
+ -e "s|# path.logs:|path.logs: $logdir|" \
+ -e "s|# path.data:|path.data: $datadir|" \
+ "$pkgdir/$confdir"/logstash.yml || return 1
- # created the necessary dirs
- install -dm755 -o logstash -g daemon "$pkgdir/usr/share/logstash" || return 1
- install -dm755 -o logstash -g daemon "$pkgdir/var/log/logstash" || return 1
- install -dm755 -o logstash -g daemon "$pkgdir/var/run/logstash" || return 1
- install -dm755 -o logstash -g daemon "$pkgdir/etc/logstash" || return 1
+ # symlink so manual commands without -path.settings works
+ rmdir "$pkgdir/$homedir"/data || return 1
+ ln -s "$datadir" "$pkgdir/$homedir"/data
+ ln -s "$logdir" "$pkgdir/$homedir"/logs
- # copy files
- cp -r * "$pkgdir/usr/share/logstash/" || return 1
- chown -R logstash:daemon "$pkgdir/usr/share/logstash/" || return 1
+ # reduce heap sizes
+ sed -i \
+ -e "s|^-Xms.*|-Xms$heapsize|" \
+ -e "s|^-Xmx.*|-Xmx$heapsize|" \
+ "$pkgdir/$confdir"/jvm.options || return 1
}
-md5sums="6e6be734392e8c7d6d55e23d0bd8d2b3 logstash-1.4.2.tar.gz
-27359d9e7e41af5fe4fd77998338ea1c logstash.confd
-40465daf3f1bfbb160db982790bf46c9 logstash.initd"
-sha256sums="d5be171af8d4ca966a0c731fc34f5deeee9d7631319e3660d1df99e43c5f8069 logstash-1.4.2.tar.gz
-c9ecb570f2b33f5aededb590c65c4a9bb9b60321c1e05b9bb7b55cbde89c3cc7 logstash.confd
-79bff7a11265489b36db5df9e281691cd06c26b6ec727fd898821823e52c4c4b logstash.initd"
-sha512sums="6bf0527446b51582fa996ae03566487f7d3de2262cf2b88c62ba2549b00027c4cd820547afb01678def235f0c49597c2b36daf69b5f3c5eb155933ca6c2b3b7b logstash-1.4.2.tar.gz
-8491786f1e8f247a4c284bb5e7c0b0c1f8332a76e61e33053e07d850975f762526a7aa7217b073f0e5c4907c1b0029bcf679c41e0b9713ce12f97b28378590df logstash.confd
-49f4785ef3f3389d5d521c4e33b6ffbb29a9192a6dd52af3e62d4e71c6a18b291461e18dce3f03e67856cc4647cf64c625e330353fd1f01f9e983800352b8652 logstash.initd"
+sha512sums="847b52d3148dc4dd6da53c3a7e61264f1870a16501a30ac7a86d49384f078bb865103c283d20a3201c67aa10855fd137b105ada41f7d0fb7d40543ff70de2e50 logstash-5.2.2.tar.gz
+94b18da3f0ef40f68118b27654563e7aa6dd4a3b90f0d8ad61a8be579d4be62c2bf1b192a32ee6140b81224343eeb442687539f6def1e725787b8cb96c0c70d1 logstash.confd
+828684ea0b9faa53ac51f7fb22bf73d862dc058d605f27958db6a8efbd10f5463a0837fa88b62a3964582c72fdd7ece434057a540b0924eae1fae17b9d5887b4 logstash.initd
+21609c8f44b31a5f298573be4b5c0fdcdc165e603a95c3626570fb6dd44dad114a74ee3f10fbd518f72b537a3d6bdcdbad09798c4bead0ee16f2a3b8e2b00ed3 logstash.conf
+180349d57a6a48be9052649425a945a07cf5e194d0f32f83567b460936729a70244d73c3495f8a318a3b98ac99a2848cadfbee5bd017da803c68c5140b6cd29d logstash.profile"
diff --git a/testing/logstash/logstash.conf b/testing/logstash/logstash.conf
new file mode 100644
index 0000000000..ddd5ada667
--- /dev/null
+++ b/testing/logstash/logstash.conf
@@ -0,0 +1,16 @@
+# https://www.elastic.co/guide/en/logstash/current/configuration.html
+# https://www.elastic.co/guide/en/logstash/current/input-plugins.html
+# https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
+# https://www.elastic.co/guide/en/logstash/current/output-plugins.html
+
+input {
+ file {
+ type => "syslog"
+ path => ["/var/log/**/*.log"]
+ }
+}
+
+output {
+ stdout { codec => rubydebug }
+}
+
diff --git a/testing/logstash/logstash.confd b/testing/logstash/logstash.confd
index f78c45ed53..67edcd2650 100644
--- a/testing/logstash/logstash.confd
+++ b/testing/logstash/logstash.confd
@@ -1,3 +1,20 @@
-LS_CONF_DIR="/etc/logstash"
-LS_LOG_DIR="/var/log/logstash"
-LS_OPTS="-f $LS_CONF_DIR/*.conf -l $LS_LOG_DIR/logstash.log"
+# Config file for /etc/init.d/logstash
+#
+# see also $LS_CONF/jvm.options
+#
+LS_HOME=/usr/share/logstash
+LS_CONF=/etc/logstash
+LS_DATA=/var/lib/logstash
+LS_LOGS=${LS_DATA}/logs
+
+# User to run Logstash as.
+LS_USER=logstash
+
+# Group to run Logstash as. Defaults to primary group of $LS_USER.
+# LS_GROUP=
+
+# stdout & stderr fill logs rapidly
+#LS_REDIR="1>/dev/null 2>> ${LS_LOGS}/error.log"
+
+# add pipeline config under conf.d
+LS_OPTS="-f $LS_CONF/conf.d/*.conf -l $LS_LOGS $LS_REDIR"
diff --git a/testing/logstash/logstash.initd b/testing/logstash/logstash.initd
index e7e8ed7a2c..b022fd387b 100644
--- a/testing/logstash/logstash.initd
+++ b/testing/logstash/logstash.initd
@@ -1,25 +1,43 @@
-#!/sbin/runscript
+#!/sbin/openrc-run
+supervisor=supervise-daemon
+
+description="logs, events, or other data transporter"
+
+: ${LS_USER:="logstash"}
+: ${LS_GROUP:="$(id -gn $LS_USER)"}
+
+nice="19"
+pidfile="/run/$RC_SVCNAME.sd.pid"
+supervise_daemon_args="-u $LS_USER -g $LS_GROUP -p $pidfile -N $nice"
+command=/usr/share/logstash/bin/logstash
+command_args="--path.settings ${LS_CONF} ${LS_OPTS}"
+max_fd="16384"
depends() {
- needs network
- provide logstash
+ use net
}
-description="logstash"
-command="/usr/share/logstash/bin/logstash"
-pidfile="/var/run/logstash/logstash.pid"
-start_stop_daemon_args="--user logstash"
-command_args="${LS_OPTS}"
+in_contr() {
+ grep "container=" /proc/1/environ
+}
start_pre() {
- checkpath --owner logstash:daemon --directory ${pidfile%/*}
-}
+ local dir
-start() {
- ebegin "Starting logstash"
- start-stop-daemon $start_stop_daemon_args --background --start --exec \
- $command --make-pidfile --pidfile $pidfile -- $command_args
- eend $?
-}
+ # Note: checkpath doesn't create intermediate directories.
+ for dir in "${LS_HOME}" "${LS_DATA}" "${LS_LOGS}"; do
+ mkdir -p "$(dirname "$dir")"
+ done
-# uses the openrc templates for start()/stop()
+ checkpath -d -o $LS_USER:$LS_GROUP -m755 "${LS_HOME}"
+ checkpath -d -o $LS_USER:$LS_GROUP -m700 "${LS_DATA}"
+ checkpath -d -o $LS_USER:$LS_GROUP -m755 "${LS_LOGS}"
+
+ if [ -n "$max_fd" ]; then
+ if [ -z "$(in_contr)" ]; then
+ ulimit -n "$max_fd" && einfo "Max open filedescriptors: $max_fd"
+ else
+ einfo "Run 'ulimit -n $max_fd' on the container host"
+ fi
+ fi
+}
diff --git a/testing/logstash/logstash.pre-install b/testing/logstash/logstash.pre-install
index 62c4f2b6d3..bd470b8051 100644
--- a/testing/logstash/logstash.pre-install
+++ b/testing/logstash/logstash.pre-install
@@ -1,6 +1,6 @@
#!/bin/sh
-adduser -S -D -H -h /usr/share/logstash -s /sbin/nologin \
- -G daemon -g "Logstash User" logstash 2>/dev/null
+addgroup -S logstash 2>/dev/null
+adduser -S -D -H -h /usr/share/logstash -s /sbin/nologin -G logstash -g logstash logstash 2>/dev/null
exit 0
diff --git a/testing/logstash/logstash.profile b/testing/logstash/logstash.profile
new file mode 100644
index 0000000000..fd6cc07b5a
--- /dev/null
+++ b/testing/logstash/logstash.profile
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+export PATH=$PATH:/usr/share/logstash/bin