Статьи

Установка Logstash v 1.4 (и выше) на FreeBSD

В предыдущем посте я описал, как установить Logstash (v. 1.3 и предыдущий) на FreeBSD, и в этом посте я опишу, как установить Logstash v. 1.4 и выше.

До включения версии 1.3 Logstash распространялся в виде единого файла JAR, а когда была выпущена версия 1.4, был представлен новый стиль упаковки. Как следствие, необходимы новые инструкции для правильной настройки Logstash во FreeBSD и регистрации его в качестве службы . Дополнительную информацию о новом макете дистрибутива можно найти в примечаниях к выпуску Logstash .

Как видно из предыдущего поста, порт Logstash FreeBSD существует, но в настоящее время он устарел, поскольку входит в состав Logstash v. 1.2. Но хотя это можно использовать в качестве отправной точки для установок Logstash на основе JAR (как мы видели, процесс обновления требовал только обновления JAR Logstash), это невозможно с новым дистрибутивом Logstash, поскольку включенный сценарий rc не сможет Работа.

Рекомендуется просмотреть оригинальную публикацию, поскольку она содержит общую информацию о Logstash и FreeBSD, которая необходима для правильного планирования и выполнения установки Logstash.

Предпосылки

Необходимые предварительные условия, необходимые для выполнения Logstash:

  • Рабочая среда выполнения Java.
  • Экземпляр ElasticSearch .

Первое требуется, потому что LogStash является приложением JRuby, а второе, хотя технически не является обязательным, является рекомендуемым выходом для Logstash.

Установка Java

Чтобы установить OpenJDK на FreeBSD, вы можете использовать pkg для установки готового к использованию двоичного пакета:

1
# pkg install openjdk

В настоящее время эта команда установит экземпляр OpenJDK v. 7 во FreeBSD 9 и 10. Если вы предпочитаете устанавливать другую версию, вы можете выполнить поиск доступных пакетов и выбрать тот, который вы предпочитаете (выходные данные команды были отфильтрованы для краткости). ):

1
2
3
4
5
# pkg search openjdk
openjdk-7.60.19,1
openjdk6-b31_3,1
openjdk8-8.5.13_7
# pkg install openjdk8-8.5.13_7

Установка ElasticSearch

Logstash включает в себя встроенный экземпляр ElasticSearch, который вы можете использовать для автономной установки (см. Мой предыдущий пост для ознакомительного представления о режимах работы Logstash). Необходимая конфигурация для начальной загрузки встроенного экземпляра ElasticSearch и использования Logstash в качестве выходных данных описана в следующих разделах.

Хотя это проще с точки зрения конфигурации, установки Logstash с использованием отдельных экземпляров ElasticSearch выходят за рамки этого поста.

Установка Logstash

Процедура установки Logstash довольно проста, поскольку она распространяется в виде tarball:

  • Загрузите Logstash с официального сайта .
  • Распакуйте архив в указанный каталог установки (мое личное предложение — избегать / usr / local, потому что он используется портами и использовать вместо него / opt).

Создание скрипта rc.d

Сценарий rc.d требуется в системе BSD для регистрации службы , определения ее конфигурации и управления средой rc для ее срока службы. Следующий скрипт можно использовать как есть или в качестве отправной точки для настройки вашего собственного. Если используется как есть, помните, что сценарий использует следующие значения по умолчанию:

  • Каталог установки: $ {logstash14_home = ”/ opt / logstash-1.4.1 ″}
  • Путь к файлу конфигурации: $ {logstash14_config = ”/ usr / local / etc / $ {name} / $ {name} .conf”}
  • Каталог данных ElasticSearch: $ {logstash14_elastic_datadir = ”/ var / db / logstash14 ″}
  • Дом Java: $ {logstash14_java_home = »/ usr / local / openjdk6 ″}
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
#!/bin/sh
 
# Configuration settings for Logstash in /etc/rc.conf:
#
# logstash14_enable (bool):
#   Default value: "NO"
#   Flag that determines whether Logstash is enabled.
#
# logstash14_home (string):
#   Default value: "/opt/logstash-1.4.1"
#   Logstash installation directory.
#
# logstash14_config (string):
#   Default value: /usr/local/etc/${name}/${name}.conf
#   Logstash configuration file path.
#
# logstash14_mode (string):
#   Default value: "standalone"
#   Valid options:
#     "standalone": agent, web & elasticsearch
#     "web": Starts logstash as a web ui
#     "agent": Justs works as a log shipper
#
# logstash14_port (int):
#   Default value: 9292
#   Port of the Kibana web interface.
#
# logstash14_log (bool):
#   Set to "NO" by default.
#   Set it to "YES" to enable logstash logging to file
#   Default output to /var/log/logstash.log
#
# logstash14_log_file (string):
#   Default value: "${logdir}/${name}.log"
#   Log file path.
#
# logstash14_java_home (string):
#   Default value: "/usr/local/openjdk6"
#   Root directory of the desired Java SDK.
#   The JAVA_HOME environment variable is set with the contents of this
#   variable.
#
# logstash14_java_opts (string):
#   Default value: ""
#   Options to pass to the Java Virtual Machine.
#   The JAVA_OPTS environment variable is set with the contents of this
#   variable.
#
# logstash14_elastic_datadir (string):
#   Default value: "/var/db/logstash14".
#   Data directory of the embedded ElasticSearch instance.
#
 
. /etc/rc.subr
 
name=logstash14
rcvar=logstash14_enable
 
load_rc_config ${name}
 
logdir="/var/log"
 
: ${logstash14_enable="NO"}
: ${logstash14_home="/opt/logstash-1.4.1"}
: ${logstash14_config="/usr/local/etc/${name}/${name}.conf"}
: ${logstash14_log="NO"}
: ${logstash14_mode="standalone"}
: ${logstash14_port="9292"}
: ${logstash14_log_file="${logdir}/${name}.log"}
: ${logstash14_elastic_datadir="/var/db/logstash14"}
: ${logstash14_java_home="/usr/local/openjdk6"}
: ${logstash14_java_opts=""}
 
piddir=/var/run/${name}
pidfile=${piddir}/${name}.pid
 
if [ -d $piddir ]; then
  mkdir -p $piddir
fi
 
logstash14_cmd="${logstash14_home}/bin/logstash"
procname="${logstash14_java_home}/bin/java"
 
logstash14_chdir=${logstash14_home}
logstash14_log_options=""
logstash14_elastic_options=""
 
if checkyesno logstash14_log; then
  logstash14_log_options=" --log ${logstash14_log_file}"
fi
 
if [ ${logstash14_mode} = "standalone" ]; then
  logstash14_args="agent -f ${logstash14_config} ${logstash14_log_options} -- web --port ${logstash14_port}"
  logstash14_elastic_options="-Des.path.data=${logstash14_elastic_datadir}"
elif [ ${logstash14_mode} = "agent" ]; then
  logstash14_args="agent -f ${logstash14_config} ${logstash14_log_options}"
elif [ ${logstash14_mode} = "web" ]; then
  logstash14_args="web --port ${logstash14_port} ${logstash14_log_options}"
fi
 
JAVA_OPTS="${logstash14_java_opts} ${logstash14_elastic_options}"
JAVA_HOME="${logstash14_java_home}"
export JAVA_OPTS
export JAVA_HOME
 
command="/usr/sbin/daemon"
command_args="-f -p ${pidfile} ${logstash14_cmd} ${logstash14_args}"
required_files="${logstash14_home} ${logstash14_java_home} ${logstash14_cmd} ${logstash14_config}"
 
run_rc_command "$1"

Вы можете переопределить любое из поддерживаемых значений конфигурации в файле /etc/rc.conf. Если, например, вы хотите использовать альтернативный домашний путь Java, просто добавьте следующую строку в /etc/rc.conf, задав желаемое значение:

1
logstash14_java_home="/usr/local/openjdk7"

Тестирование Сервиса

Для тестирования службы Logstash можно использовать следующую команду:

1
# service logstash14 onestart

Чтобы остановить это, используйте:

1
# service logstash14 onestop

Чтобы устранить неполадки, которые могут возникнуть, вы можете включить журнал Logstash, установив для переменной logstash14_log значение YES в файле /etc/rc.conf:

1
logstash14_log="YES"

Расположение файла журнала задается переменной logstash14_log_file, значение по умолчанию которой задается файлом службы rc (показаны только соответствующие строки):

1
2
3
name=logstash14
logdir="/var/log"
: ${logstash14_log_file="${logdir}/${name}.log"}

Расположение файла журнала можно изменить, установив переменную logstash14_log_file в файле /etc/rc.conf.

Включение Сервиса

Обратите внимание, что описанный выше сценарий rc не включает службу Logstash:

1
: ${logstash14_enable="NO"}

Если все работает, вы можете включить службу Logstash, просто добавив следующую строку в /etc/rc.conf:

1
logstash14_enable="YES"
Ссылка: Установка Logstash v 1.4 (и Greater) на FreeBSD от нашего партнера по JCG Энрико Кризостомо в блоге The Grey Blog .