ports/168266: New port: sysutils/logstash (log monitoring and collecting tool)
Daniel Solsona
daniel at ish.com.au
Wed May 23 16:50:02 UTC 2012
>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 at 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:
More information about the freebsd-ports-bugs
mailing list