diff --git a/dalmatinerdb/dalmatinerdb.patch b/dalmatinerdb/dalmatinerdb.patch new file mode 100644 index 0000000000..ec230fe869 --- /dev/null +++ b/dalmatinerdb/dalmatinerdb.patch @@ -0,0 +1,56 @@ +Index: _build/default/lib/eleveldb/c_src/build_deps.sh +--- _build/default/lib/eleveldb/c_src/build_deps.sh.orig 2016-07-20 01:31:35.000000000 +0200 ++++ _build/default/lib/eleveldb/c_src/build_deps.sh 2017-12-26 00:55:46.772790000 +0100 +@@ -67,7 +67,8 @@ + *) + if [ ! -d snappy-$SNAPPY_VSN ]; then + tar -xzf snappy-$SNAPPY_VSN.tar.gz +- (cd snappy-$SNAPPY_VSN && ./configure --prefix=$BASEDIR/system --libdir=$BASEDIR/system/lib --with-pic) ++ patch -d snappy-$SNAPPY_VSN +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## + +# package version +%define V_opkg 0.3.3 +%define V_dist 20171226 + +# package information +Name: dalmatinerdb +Summary: Distributed Time-Series Database +URL: http://dalmatinerdb.io/ +Vendor: Heinz N. Gies +Packager: OpenPKG Foundation e.V. +Distribution: OpenPKG Community +Class: EVAL +Group: Database +License: MIT +Version: %{V_opkg}.%{V_dist} +Release: 20171226 + +# list of sources +Source0: http://download.openpkg.org/components/versioned/dalmatinerdb/dalmatinerdb-%{V_dist}.tar.xz +Source1: rc.dalmatinerdb +Source2: ddb.conf +Source3: ddb-rules.ot +Patch0: dalmatinerdb.patch + +# build information +BuildPreReq: OpenPKG, openpkg >= 20160101, erlang19, gcc, gcc::with_cxx = yes +PreReq: OpenPKG, openpkg >= 20160101 + +%description + DalmatinerDB is a distributed Time-Series/Metric Database based on + the Riak Core platform and Erlang. It provides: a highly optimized + network protocol, sequential reads/writes for metrics and a + client-server model that takes as much load from the actual store as + possible. + +%track + prog dalmatinerdb:release = { + version = %{V_opkg} + url = https://github.com/dalmatinerdb/dalmatinerdb/releases + regex = (__VER__)\.tar\.gz + } + prog dalmatinerdb:snapshot = { + version = %{V_dist} + url = http://download.openpkg.org/components/versioned/dalmatinerdb/ + regex = dalmatinerdb-(__VER__)\.tar\.xz + } + +%prep + %setup -q -n dalmatinerdb + %patch -p0 + +%build + # build program + export CC="%{l_cc}" + export CXX="%{l_cxx}" + export CFLAGS="%{l_cflags -O} -Wno-unused-function -Wno-maybe-uninitialized" + export CXXFLAGS="%{l_cxxflags -O} -Wno-unused-function -Wno-maybe-uninitialized" + export CPPFLAGS="%{l_cppflags}" + export LDFLAGS="%{l_ldflags}" + export PATH=%{l_prefix}/lib/erlang19/erlang/bin:$PATH + export HOME=`pwd` + ./rebar3 as smartos release + +%install + # create installation hierarchy + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/sbin \ + $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \ + $RPM_BUILD_ROOT%{l_prefix}/etc/dalmatinerdb \ + $RPM_BUILD_ROOT%{l_prefix}/lib/dalmatinerdb \ + $RPM_BUILD_ROOT%{l_prefix}/var/dalmatinerdb/db \ + $RPM_BUILD_ROOT%{l_prefix}/var/dalmatinerdb/log \ + $RPM_BUILD_ROOT%{l_prefix}/var/dalmatinerdb/run + + # install program + rm -rf _build/smartos/rel/ddb/lib/*/c_src + cp -rp _build/smartos/rel/ddb/* \ + $RPM_BUILD_ROOT%{l_prefix}/lib/dalmatinerdb/ + for prog in ddb ddb-admin; do + ( echo "#!/bin/sh" + echo "RUNNER_USER=\"\`id -u -n\`\"" + echo "export RUNNER_USER" + echo "RUNNER_ETC_DIR=%{l_prefix}/etc/dalmatinerdb" + echo "export RUNNER_ETC_DIR" + echo "RUNNER_LOG_DIR=%{l_prefix}/var/dalmatinerdb/log" + echo "export RUNNER_LOG_DIR" + echo "RUNNER_GEN_DIR=%{l_prefix}/var/dalmatinerdb/db" + echo "export RUNNER_GEN_DIR" + echo "exec %{l_prefix}/lib/dalmatinerdb/bin/$prog \${1+\"\$@\"}" + ) >$RPM_BUILD_ROOT%{l_prefix}/sbin/$prog + chmod 755 $RPM_BUILD_ROOT%{l_prefix}/sbin/$prog + done + + # install default configuration + %{l_shtool} install -c -m 644 %{l_value -s -a} \ + %{SOURCE ddb.conf} \ + %{SOURCE ddb-rules.ot} \ + $RPM_BUILD_ROOT%{l_prefix}/etc/dalmatinerdb/ + rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/dalmatinerdb/etc/ddb.conf + ln -s ../../../etc/dalmatinerdb/ddb.conf \ + $RPM_BUILD_ROOT%{l_prefix}/lib/dalmatinerdb/etc/ + + # install run-command script + %{l_shtool} install -c -m 755 %{l_value -s -a} \ + %{SOURCE rc.dalmatinerdb} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ + + # determine installation files + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ + %{l_files_std} \ + '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/etc/dalmatinerdb' \ + '%config %attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/etc/dalmatinerdb/*' \ + '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/dalmatinerdb/*' + +%files -f files + +%clean + +%post + if [ $1 -eq 2 ]; then + # after upgrade, restart service + eval `%{l_rc} dalmatinerdb status 2>/dev/null` + [ ".$dalmatinerdb_active" = .yes ] && %{l_rc} dalmatinerdb restart + fi + exit 0 + +%preun + if [ $1 -eq 0 ]; then + # before erase, stop service and remove log files + %{l_rc} dalmatinerdb stop 2>/dev/null + rm -rf $RPM_INSTALL_PREFIX/var/dalmatinerdb/log/* >/dev/null 2>&1 || true + rm -rf $RPM_INSTALL_PREFIX/var/dalmatinerdb/run/* >/dev/null 2>&1 || true + rm -rf $RPM_INSTALL_PREFIX/var/dalmatinerdb/db/* >/dev/null 2>&1 || true + fi + exit 0 + diff --git a/dalmatinerdb/ddb-rules.ot b/dalmatinerdb/ddb-rules.ot new file mode 100644 index 0000000000..36ab4159ac --- /dev/null +++ b/dalmatinerdb/ddb-rules.ot @@ -0,0 +1,3 @@ + +none() -> drop. + diff --git a/dalmatinerdb/ddb.conf b/dalmatinerdb/ddb.conf new file mode 100644 index 0000000000..bfd88cad15 --- /dev/null +++ b/dalmatinerdb/ddb.conf @@ -0,0 +1,98 @@ +## +## ddb.conf -- DalmatinerDB Server Configuration +## + +tcp_port = 5555 +tcp_listeners = 100 +tcp_max_connections = 1024 +tcp.max_batch_size = 500 + +async_workers = 5 + +handoff_max_chunk_size = 1KB +points_per_file = 604800 +lifetime = infinity +mstore.max_files = 2 +vacuum_interval = 1h + +n = 1 +r = 1 +w = 1 + +schema_dir = @l_prefix@/lib/dalmatinerdb/share/schema +self_monitor = on +metrics.transport_compression = snappy + +read_repair.delay = 1m +read_repair.partial_read_repair = on + +io.max_async = 20 +io.timeout = 30s +io.parallel_reads = off +io.parallel_reads.queue_size = 5 +io.parallel_reads.min_size = 1000 +io.parallel_reads.queue_strategy = fifo + +vnode.cache.size = 10MB +vnode.cache.buckets = 128 +vnode.cache.initial_entries = 2 +vnode.cache.initial_data = 32 +vnode.cache.age_cycle = 1000000 +vnode.cache.max_gap = 10 + +nodename = dalmatinerdb@127.0.0.1 +distributed_cookie = erlang + +erlang.async_threads = 64 +erlang.max_ports = 65536 + +anti_entropy = on + +anti_entropy.build_limit.number = 1 +anti_entropy.build_limit.per_timespan = 1h +anti_entropy.expire = 1w +anti_entropy.concurrency = 2 +anti_entropy.tick = 15s +anti_entropy.data_dir = @l_prefix@/var/dalmatinerdb/db/anti_entropy +anti_entropy.total_leveldb_mem_percent = 80 +anti_entropy.bloomfilter = on + +ring_size = 64 +transfer_limit = 2 + +#ssl.certfile = $(platform_etc_dir)/cert.pem +#ssl.keyfile = $(platform_etc_dir)/key.pem +#ssl.cacertfile = $(platform_etc_dir)/cacertfile.pem + +handoff.ip = 127.0.0.1 +handoff.inactivity_timeout = 1m +dtrace = off + +platform_etc_dir = @l_prefix@/etc/dalmatinerdb +platform_bin_dir = @l_prefix@/lib/dalmatinerdb/bin +platform_lib_dir = @l_prefix@/lib/dalmatinerdb/lib +platform_data_dir = @l_prefix@/var/dalmatinerdb/db +platform_log_dir = @l_prefix@/var/dalmatinerdb/log + +strong_consistency = on +worker.queue_strategy = fifo + +log.service = dalmatinerdb +log.console = file +log.console.level = info +log.console.file = @l_prefix@/var/dalmatinerdb/log/ddb.console.log +log.error.file = @l_prefix@/var/dalmatinerdb/log/ddb.error.log +log.syslog = off +log.error.redirect = on +log.error.messages_per_second = 100 + +otters.batch_interval = 100ms +otters.zapkin_url = http://127.0.0.1:9411/api/v1/spans +otters.host = 127.0.0.1:0 +otters.service = dalmatinerdb +otters.add_service_to_log = off +otters.add_service_to_tags = off +otters.default_key = lc +otters.default_value = v +otters.filter = @l_prefix@/etc/dalmatinerdb/ddb-rules.ot + diff --git a/dalmatinerdb/rc.dalmatinerdb b/dalmatinerdb/rc.dalmatinerdb new file mode 100644 index 0000000000..bf98c2fa8d --- /dev/null +++ b/dalmatinerdb/rc.dalmatinerdb @@ -0,0 +1,56 @@ +#!@l_prefix@/bin/openpkg rc +## +## rc.dalmatinerdb -- Run-Commands +## + +%config + dalmatinerdb_enable="$openpkg_rc_def" + dalmatinerdb_flags="" + dalmatinerdb_log_prolog="true" + dalmatinerdb_log_epilog="true" + dalmatinerdb_log_numfiles="10" + dalmatinerdb_log_minsize="1M" + dalmatinerdb_log_complevel="9" + +%common + dalmatinerdb_pidfile="@l_prefix@/var/dalmatinerdb/run/dalmatinerdb.pid" + dalmatinerdb_logfile="@l_prefix@/var/dalmatinerdb/log/dalmatinerdb.console.log" + dalmatinerdb_signal () { + [ -f $dalmatinerdb_pidfile ] && kill -$1 `cat $dalmatinerdb_pidfile` + } + +%status -u @l_rusr@ -o + dalmatinerdb_usable="no" + dalmatinerdb_active="no" + rcService nats-board enable yes && \ + dalmatinerdb_signal 0 && dalmatinerdb_active="yes" + echo "dalmatinerdb_enable=\"$dalmatinerdb_enable\"" + echo "dalmatinerdb_usable=\"$dalmatinerdb_usable\"" + echo "dalmatinerdb_active=\"$dalmatinerdb_active\"" + +%start -u @l_rusr@ + rcService dalmatinerdb enable yes || exit 0 + rcService dalmatinerdb active yes && exit 0 + @l_prefix@/sbin/ddb start $dalmatinerdb_flags + @l_prefix@/sbin/ddb-admin wait-for-service metric + @l_prefix@/sbin/ddb-admin wait-for-service even + +%stop -u @l_rusr@ + rcService dalmatinerdb enable yes || exit 0 + rcService dalmatinerdb active no && exit 0 + @l_prefix@/sbin/ddb stop + +%restart -u @l_rusr@ + rcService dalmatinerdb enable yes || exit 0 + rcService dalmatinerdb active no && exit 0 + @l_prefix@/sbin/ddb restart + +%daily -u @l_rusr@ + rcService dalmatinerdb enable yes || exit 0 + shtool rotate -f \ + -n ${dalmatinerdb_log_numfiles} -s ${dalmatinerdb_log_minsize} -d \ + -z ${dalmatinerdb_log_complevel} -m 664 -o @l_rusr@ -g @l_rgrp@ \ + -P "${dalmatinerdb_log_prolog}" \ + -E "${dalmatinerdb_log_epilog}; rc dalmatinerdb restart" \ + $dalmatinerdb_logfile +