Graylog
Устновка Graylog2 на CentOS 6.3
Добавлю epel репозиторий. У меня он локальный
/etc/yum.repos.d/epel.repo [epel] name=Extra Packages for Enterprise Linux 6 baseurl=http://172.16.250.1/cobbler/repo_mirror/epel/x86_64 failovermethod=priority enabled=1
или из сети
rpm -i http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
Установить mongodb
yum -y install mongodb.x86_64 mongodb-devel.x86_64 mongodb-server.x86_64
Ява и прочее необходимое барахло
yum -y install lsb gcc make java-1.6.0-openjdk curl-devel zlib-devel openssl-devel
Секрктничать с монго смысла пока не вижу, на всякий случай привожу как это сделать
Устанавливаем mongodb-server
# yum -y install mongodb mongodb-server
Создаем пользователя:
# mongo
MongoDB shell version: 1.8.2
connecting to: test
> use admin
switched to db admin
> db.addUser('admin', 'Password')
{
"user" : "admin",
"readOnly" : false,
"pwd" : "Password"
}
> db.auth('admin', 'Password')
1
> use graylog2
switched to db graylog2
> db.addUser('grayloguser', 'Password')
{
"user" : "grayloguser",
"readOnly" : false,
"pwd" : "Password"
}
> db.auth('grayloguser', 'Password')
1
> exit
bye
Делаем Mongodb более безопастной
/etc/mongodb.conf
auth = true
Перестартуем Mongodb
# service mongod restart
Добавляем в автозагрузку
# chkconfig mongod on
# chkconfig --list | grep mongod
mongod 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rvm remove 1.9.2 rvm pkg install openssl rvm install 1.9.2 --with-openssl-dir=$HOME/.rvm/usr
Устанавливаем Elasticsearch
Я решил собрать РПМку. на сайте подробная инструкция.https://github.com/tavisto/elasticsearch-rpms У меня (я делал по шагам_ все собралось сразу и без проблем.
rpm -ivh elasticsearch-0.19.0-1.el6.x86_64.rpm /etc/init.d/elasticsearch start chkconfig elasticsearch on
Учть подробнее на русском я читал тут: http://habrahabr.ru/post/122531/
Graylog2.rpm
Сборка как обычно, спек конфиг и инит ниже:
SPEC
%define real_name graylog2-server
%define version 0.9.6
%define vers 096
%define prefix /opt/%{real_name}/%{version}
Name: %{real_name}-%{vers}
Summary: Graylog2 is an log management solution that stores your logs in ElasticSearch.
Version: %{version}
Release: 1
AutoReqProv: on
License: BSD
Group: Applications/Searchengines
URL: http://www.graylog2.org
#Source: https://github.com/downloads/Graylog2/graylog2-server/%{real_name}-%{version}.tar.gz
Source: %{real_name}-%{version}.tar.gz
Source1: graylogd2
Source2: graylog2.conf
Buildarch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version} >= 1100
BuildRequires: -post-build-checks
%endif
%description
Graylog2 is an open source log management solution that stores your logs in ElasticSearch. It consists of a server written in Java that accepts your syslog messages via TCP, UDP or AMQP and stores it in the database. The second part is a web interface that allows you to manage the log messages from your web browser.
%prep
%setup -q -n %{real_name}-%{version}
%build
%install
%{__mkdir_p} %{buildroot}%{prefix}
%{__mkdir_p} %{buildroot}%{_sysconfdir}/rc.d/init.d
%{__install} -m 755 %{SOURCE1} %{buildroot}%{_sysconfdir}/rc.d/init.d/graylogd2
%{__install} -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/graylog2.conf
%{__cp} -av ./* %{buildroot}%{prefix}/
%post
cd %{prefix}/..
%{__ln_s} -f %{version} 0.9.latest
%clean
%{__rm} -rf %{buildroot}
%files
%defattr(-,root,root)
%dir %{prefix}
%{prefix}
%{_sysconfdir}/rc.d/init.d/graylogd2
%config(noreplace) %{_sysconfdir}/graylog2.conf
%changelog
* Mon Sep 24 2012 Max Mazur <sirmax123@gmail.com>
- Added init script, moved from DBA --> /opt, added config
* Fri May 11 2012 Holger Manthey <holger.manthey@bertelsmann.de>
- inital version
init script
cat graylogd2
#!/bin/bash
#
# graylog2-server - This script starts and stops the graylog2-server daemon
#
# chkconfig: - 85 15
# description: graylog2 is a syslog implementation that stores logs in MongoDB
### BEGIN INIT INFO
# Provides:
# Required-Start: $network
# Required-Stop: $network
# Default-Stop: 0 1 2 6
# Short-Description: Start/stop the graylog2-server daemon
# Description: A syslog implementation that stores logs in MongoDB
### END INIT INFO
# Source function library.
. /etc/init.d/functions
# Check networking
. /etc/sysconfig/network
[[ $NETWORKING == no ]] && exit 0
prog="graylog2-server"
version="0.9.6"
vers="096"
prefix="/opt/${prog}/${version}/"
jar="${prefix}/$prog.jar"
lockfile="/var/lock/$prog"
logfile="/var/log/graylog2.log"
pidfile="/var/run/$prog.pid"
JAVA_BIN="/usr/bin/java"
unset pid
gl2_run() {
# Disable csh style history expansion for safety
set +H
daemon "( $JAVA_BIN -jar \"$jar\" >\"$logfile\" 2>&1 & echo \"\$!\" >\"$pidfile\" )"
pid=$(<"$pidfile")
sleep 1
if kill -0 "$pid" >/dev/null 2>&1
then
return 0
else
return 1
fi
}
gl2_status() {
[[ -f $pidfile ]] && pid=$(<"$pidfile")
[[ -z $pid ]] && return 1
if kill -0 "$pid" >/dev/null 2>&1
then
return 0
else
return 1
fi
}
status() {
if gl2_status
then
echo $"$prog (pid $pid) is running..."
return 0
else
if [[ -f $lockfile ]]
then
echo $"$prog dead but subsys locked"
return 2
fi
echo $"$prog is stopped"
return 3
fi
}
start() {
[[ -r $jar ]] || exit 5
gl2_run >/dev/null 2>&1
if [[ $? -eq 0 ]]
then
retval=0
touch "$lockfile"
success
else
retval=1
failure
fi
echo $"Starting $prog: "
return "$retval"
}
stop() {
killproc -p "$pidfile"
if [[ $? -eq 0 ]]
then
retval=0
rm -f "$lockfile"
success
else
retval=1
failure
fi
echo $"Stopping $prog: "
return "$retval"
}
restart() {
stop
start
}
reload() {
restart
}
force_reload() {
restart
}
case "$1" in
start)
gl2_status && exit 0
$1
;;
stop)
gl2_status || exit 0
$1
;;
restart)
$1
;;
reload)
gl2_status || exit 7
$1
;;
force-reload)
force_reload
;;
status)
$1
;;
condrestart|try-restart)
gl2_status || exit 0
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
exit 2
esac
exit $?
www-интерфейс
Доставилд мне массу гиммороя при установке и я до сих пор не доконца понимаю смысл делать так как он сделан. но это детали.
wget https://github.com/downloads/Graylog2/graylog2-web-interface/graylog2-web-interface-0.9.6.tar.gz
Распаковать в /usr/local/graylog2-web-interface, добавить юзера graylog
bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
rvm это утилита для работы с руби. Ставится довольно необычно. После чего поставить
yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison iconv-devel
И обновить руби
rvm install ruby-1.9.2-p320
Устанавливаем gem bundle (у меня в системе не было , но возможно есть дистрибутивы которым это не надо. предположительно - gentoo)
rvm use 1.9.2 cd /usr/local/graylog2-web-interface gem install bundler bundle install
интерфейс конфиггурится отдельно. Насколько я понимаю graylog2 хранит настройки в монго а вебморда их оттуда просто считывает потому достаточно указать монго. У меня авторизации как таковой нет.
# mongoid.yml production: host: localhost port: 27017 username: password: database: graylog2
Устанавливаем passenger-standalone (и заодно nginx) При установке будет сообщение о списке пакетов которые нужны - вроде gcc-c++ и openssl-devel. Это ВАЖНО!
gem install passenger gem install file-tail cd /urs/local/graylog2-web-interface mkdir tmp log chmod -R 777 tmp log
Стратовый скрипт я честно нашел в инете, писать самому было лень
#!/bin/bash
#
# graylog2-web-interface: graylog2 web interface
#
# chkconfig: - 98 02
# description: Starts graylog2-web-interface using passenger-standalone. \
# Uses RVM to use switch to a specific ruby version.
#
# config
USER=graylog
APP_DIR=/usr/local/graylog2-web-interface
RVM_RUBY=1.9.2
ADDR=127.0.0.1
PORT=3000
ENVIRONMENT=production
LOG_FILE=/var/log/graylog2-web-interface.log
# --
CMD_START="cd $APP_DIR; rvm use $RVM_RUBY; passenger start -d \
-a $ADDR \
-p $PORT \
-e $ENVIRONMENT \
--user $USER"
CMD_STOP="cd $APP_DIR; rvm use $RVM_RUBY; passenger stop -p $PORT"
CMD_STATUS="cd $APP_DIR; rvm use $RVM_RUBY; passenger status -p $PORT"
. /lib/lsb/init-functions
case "$1" in
start)
echo "Starting graylog2-web-interface"
su - $USER -c "$CMD_START"
;;
stop)
echo "Stopping graylog2-web-interface"
su - $USER -c "$CMD_STOP"
;;
status)
su - $USER -c "$CMD_STATUS"
;;
*)
echo "Usage: $0 start|stop|status"
exit 3
;;
esac