Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 May 2012 02:33:40 +1000 (EST)
From:      Daniel Solsona <daniel@ish.com.au>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/168266: New port: sysutils/logstash (log monitoring and collecting tool)
Message-ID:  <201205231633.q4NGXeDs099249@delish.ish.com.au>
Resent-Message-ID: <201205231650.q4NGo2Eu043371@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         168266
>Category:       ports
>Synopsis:       New port: sysutils/logstash (log monitoring and collecting tool)
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Wed May 23 16:50:02 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     Charlie &
>Release:        FreeBSD 9.0-RELEASE amd64
>Organization:
ish
>Environment:
>Description:
log monitoring and collecting tool
>How-To-Repeat:
>Fix:
# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#       logstash
#       logstash/Makefile
#       logstash/distinfo
#       logstash/files
#       logstash/files/logstash.conf.example
#       logstash/files/logstash.in
#       logstash/files/elasticsearch.yml.example
#       logstash/pkg-descr
#
echo c - logstash
mkdir -p logstash > /dev/null 2>&1
echo x - logstash/Makefile
sed 's/^X//' >logstash/Makefile << '58caac783f1d72028817b3f79ec306ec'
X#
X# $FreeBSD$
X
XPORTNAME=      logstash
XPORTVERSION=   1.1.0
XCATEGORIES=    sysutils
XMASTER_SITES=  http://semicomplete.com/files/logstash/
XDISTFILES=     ${DISTNAME}-monolithic.jar
XEXTRACT_ONLY=
X
XMAINTAINER=    daniel@ish.com.au
XCOMMENT=       Tool for managing events and logs
X
XUSE_JAVA=      yes
XJAVA_VERSION=  1.5+
X
XNO_BUILD=      yes
X
XUSE_RC_SUBR=   logstash
X
XLOGSTASH_HOME?=        ${PREFIX}/logstash
XLOGSTASH_JAR?= ${DISTNAME}-monolithic.jar
XLOGSTASH_DATA_DIR?=    /var/db/logstash
X
XSUB_LIST=      LOGSTASH_DATA_DIR=${LOGSTASH_DATA_DIR} JAVA_HOME=${JAVA_HOME}
XSUB_LIST+=     LOGSTASH_HOME=${LOGSTASH_HOME} LOGSTASH_JAR=${LOGSTASH_JAR}
X
X#.if !target(pre-install)
X#pre-install:
X#.endif
X
X.include <bsd.port.pre.mk>
Xpre-install:
X       if [ ! -d /var/run/${PORTNAME} ] ; then \
X               ${MKDIR} /var/run/${PORTNAME} ;\
X       fi
X       if [ ! -d ${PREFIX}/etc/${PORTNAME} ] ; then \
X               ${MKDIR} ${PREFIX}/etc/${PORTNAME} ;\
X       fi
X       if [ ! -d "${LOGSTASH_HOME}" ] ; then \
X               ${MKDIR} "${LOGSTASH_HOME}";\
X       fi
X       if [ ! -d "${LOGSTASH_DATA_DIR}" ] ; then \
X               ${MKDIR} "${LOGSTASH_DATA_DIR}";\
X       fi
X
Xdo-install:
X       ${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/${LOGSTASH_JAR} ${LOGSTASH_HOME}/
X       ${INSTALL_SCRIPT} ${FILESDIR}/logstash.conf.example ${PREFIX}/etc/${PORTNAME}/
X       ${INSTALL_SCRIPT} ${FILESDIR}/elasticsearch.yml.example ${PREFIX}/etc/${PORTNAME}/
X
X.include <bsd.port.post.mk>
58caac783f1d72028817b3f79ec306ec
echo x - logstash/distinfo
sed 's/^X//' >logstash/distinfo << '8a7498b9608da6df76161c7712d9c4de'
XSHA256 (logstash-1.1.0-monolithic.jar) = 6c9f491865b5eed569e029f6ad9f3343f346cfa04d04314e7aadea7b9578490f
XSIZE (logstash-1.1.0-monolithic.jar) = 40923996
8a7498b9608da6df76161c7712d9c4de
echo c - logstash/files
mkdir -p logstash/files > /dev/null 2>&1
echo x - logstash/files/logstash.conf.example
sed 's/^X//' >logstash/files/logstash.conf.example << '4c550ba74a641aa7b4e05a6f0e5312ba'
Xinput {
X  file {
X    type => "system logs"
X
X  #  # Wildcards work, here :)
X  #  path => [ "/var/log/*.log", "/var/log/messages", "/var/log/syslog" ]
X    path => [ "/var/log/messages" ]
X  #}
X
X  #file {
X  #  type => "Hudson-access"
X  #  path => "/var/log/www/hudson.ish.com.au-access_log"
X  #}
X
X  #file {
X  #          type => "Syslog"
X  #  path => "/var/log/messages"
X  #}
X}
X
Xoutput {
X  # Emit events to stdout for easy debugging of what is going through
X  # logstash.
X  #stdout { }
X
X  # This will use elasticsearch to store your logs.
X  # The 'embedded' option will cause logstash to run the elasticsearch
X  # server in the same process, so you don't have to worry about
X  # how to download, configure, or run elasticsearch!
X  elasticsearch { 
X     embedded => true
X     #embedded_http_port => 9200
X     #cluster => elasticsearch
X     #host => host
X     #port => port
X      
X  }
X}
4c550ba74a641aa7b4e05a6f0e5312ba
echo x - logstash/files/logstash.in
sed 's/^X//' >logstash/files/logstash.in << '0f1ca7b587c13466a7f3a6fad7064657'
X#!/bin/sh
X
X# $FreeBSD:
X# PROVIDE: logstash
X# REQUIRE: LOGIN
X# KEYWORD: shutdown
X
X#
X# Configuration settings for logstash in /etc/rc.conf:
X#
X# logstash_enable (bool):
X#   Set to "NO" by default.
X#   Set it to "YES" to enable logstash
X#
X# logstash_mode :
X#   Set to "standalone" by default.
X#   Valid options:
X#     "standalone": agent, web & elasticsearch
X#     "web": Starts logstash as a web ui
X#     "agent": Justs works as a log shipper 
X#
X# logstash_logging (bool):
X#   Set to "NO" by default.
X#   Set it to "YES" to enable logstash logging to file
X#   Default output to /var/log/logstash.log
X#
X
X. /etc/rc.subr
X
Xname="logstash"
Xrcvar=logstash_enable
X
Xpiddir="/var/run/${name}"
Xpidfile="${piddir}/${name}.pid"
X
Xif [ -d $piddir ]; then
X       mkdir -p $piddir
Xfi
X
Xlogdir="/var/log"
Xcommand="/usr/sbin/daemon"
X
Xload_rc_config "${name}"
X
X: ${logstash_enable="NO"}
X: ${logstash_home="%%LOGSTASH_HOME%%"}
X: ${logstash_config="%%PREFIX%%/etc/${name}/${name}.conf"}
X: ${logstash_jar="%%LOGSTASH_HOME%%/%%LOGSTASH_JAR%%"}
X: ${logstash_java_home="%%JAVA_HOME%%"}
X: ${logstash_log="NO"}
X: ${logstash_mode="standalone"}
X: ${logstash_port="9292"}
X: ${logstash_elastic_backend=""}
X: ${logstash_log_file="${logdir}/${name}.log"}
X: ${logstash_elastic_datadir="%%LOGSTASH_DATA_DIR%%"}
X
Xjava_cmd="${logstash_java_home}/bin/java"
Xprocname="${java_cmd}"
X
Xlogstash_chdir=${logstash_home}
Xlogstash_log_options=""
Xlogstash_elastic_options=""
X
Xif [ ${logstash_log} == "YES" ]; then
X       logstash_log_options=" --log ${logstash_log_file}" 
Xfi
X
Xif [ ${logstash_mode} == "standalone" ]; then
X       logstash_args="agent -f ${logstash_config} -- web --port ${logstash_port} --backend elasticsearch:///?local 
${logstash_log_options}"
X       logstash_elastic_options=" -Des.path.data=${logstash_elastic_datadir}"
Xelif [ ${logstash_mode} == "agent" ];then
X       logstash_args="agent -f ${logstash_config} ${logstash_log_options}"
Xelif [ ${logstash_mode} == "web" ];then
X       logstash_args="web --port ${logstash_port} --backend elasticsearch://${logstash_elastic_backend}/ ${logstash_log_options}"
Xfi
X
Xcommand_args="-f -p ${pidfile} ${java_cmd} ${logstash_elastic_options} -jar ${logstash_jar} ${logstash_args}"
Xrequired_files="${java_cmd} ${logstash_config}"
X
Xrun_rc_command "$1"
0f1ca7b587c13466a7f3a6fad7064657
echo x - logstash/files/elasticsearch.yml.example
sed 's/^X//' >logstash/files/elasticsearch.yml.example << '84e5fab083858da6b10cddebb8aeef03'
X##################### ElasticSearch Configuration Example #####################
X
X# This file contains an overview of various configuration settings,
X# targeted at operations staff. Application developers should
X# consult the guide at <http://elasticsearch.org/guide>.
X#
X# The installation procedure is covered at
X# <http://elasticsearch.org/guide/reference/setup/installation.html>.
X#
X# ElasticSearch comes with reasonable defaults for most settings,
X# so you can try it out without bothering with configuration.
X#
X# Most of the time, these defaults are just fine for running a production
X# cluster. If you're fine-tuning your cluster, or wondering about the
X# effect of certain configuration option, please _do ask_ on the
X# mailing list or IRC channel [http://elasticsearch.org/community].
X
X# Any element in the configuration can be replaced with environment variables
X# by placing them in ${...} notation. For example:
X#
X# node.rack: ${RACK_ENV_VAR}
X
X# See <http://elasticsearch.org/guide/reference/setup/configuration.html>;
X# for information on supported formats and syntax for the configuration file.
X
X
X################################### Cluster ###################################
X
X# Cluster name identifies your cluster for auto-discovery. If you're running
X# multiple clusters on the same network, make sure you're using unique names.
X#
X# cluster.name: elasticsearch
X
X
X#################################### Node #####################################
X
X# Node names are generated dynamically on startup, so you're relieved
X# from configuring them manually. You can tie this node to a specific name:
X#
X# node.name: "Franz Kafka"
X
X# Every node can be configured to allow or deny being eligible as the master,
X# and to allow or deny to store the data.
X#
X# Allow this node to be eligible as a master node (enabled by default):
X#
X# node.master: true
X#
X# Allow this node to store data (enabled by default):
X#
X# node.data: true
X
X# You can exploit these settings to design advanced cluster topologies.
X#
X# 1. You want this node to never become a master node, only to hold data.
X#    This will be the "workhorse" of your cluster.
X#

>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201205231633.q4NGXeDs099249>