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>