Graylog: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
 
(не показано 11 промежуточных версий этого же участника)
Строка 2: Строка 2:
 
[[Категория:Graylog]]
 
[[Категория:Graylog]]
 
=Устновка Graylog2 на CentOS 6.3=
 
=Устновка Graylog2 на CentOS 6.3=
  +
  +
<BR>
  +
  +
Полностью устарело - используйте RPM
  +
   
 
Добавлю epel репозиторий.
 
Добавлю epel репозиторий.
Строка 103: Строка 108:
 
chkconfig elasticsearch on
 
chkconfig elasticsearch on
 
</PRE>
 
</PRE>
  +
Подробнее на русском я читал тут: http://habrahabr.ru/post/122531/
 
   
 
==Graylog2.rpm==
 
==Graylog2.rpm==
 
Сборка как обычно, спек конфиг и инит ниже:
 
Сборка как обычно, спек конфиг и инит ниже:
  +
==SPEC==
 
<PRE>
 
<PRE>
 
%define real_name graylog2-server
 
%define real_name graylog2-server
Строка 176: Строка 182:
 
* Fri May 11 2012 Holger Manthey <holger.manthey@bertelsmann.de>
 
* Fri May 11 2012 Holger Manthey <holger.manthey@bertelsmann.de>
 
- inital version
 
- inital version
  +
</PRE>
  +
==init script==
  +
<PRE>
  +
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 $?
  +
</PRE>
  +
  +
  +
==www-интерфейс==
  +
Доставилд мне массу гиммороя при установке и я до сих пор не доконца понимаю смысл делать так как он сделан. но это детали.
  +
<BR>
  +
  +
<PRE>
  +
wget https://github.com/downloads/Graylog2/graylog2-web-interface/graylog2-web-interface-0.9.6.tar.gz
  +
</PRE>
  +
Распаковать в /usr/local/graylog2-web-interface, добавить юзера graylog
  +
<PRE>
  +
  +
bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
  +
</PRE>
  +
rvm это утилита для работы с руби. Ставится довольно необычно.
  +
После чего поставить
  +
<PRE>
  +
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
  +
</PRE>
  +
  +
И обновить руби
  +
<PRE>rvm install ruby-1.9.2-p320</PRE>
  +
  +
  +
<BR>
  +
Устанавливаем gem bundle (у меня в системе не было , но возможно есть дистрибутивы которым это не надо. предположительно - gentoo)
  +
<PRE>
  +
rvm use 1.9.2
  +
cd /usr/local/graylog2-web-interface
  +
gem install bundler
  +
bundle install
  +
</PRE>
  +
  +
  +
интерфейс конфиггурится отдельно. Насколько я понимаю graylog2 хранит настройки в монго а вебморда их оттуда просто считывает потому достаточно указать монго. У меня авторизации как таковой нет.
  +
  +
<PRE>
  +
# mongoid.yml
  +
production:
  +
host: localhost
  +
port: 27017
  +
username:
  +
password:
  +
database: graylog2
  +
</PRE>
  +
  +
Устанавливаем passenger-standalone (и заодно nginx) При установке будет сообщение о списке пакетов которые нужны - вроде gcc-c++ и openssl-devel. <B>Это ВАЖНО!</B>
  +
  +
<PRE>
  +
gem install passenger
  +
gem install file-tail
  +
cd /urs/local/graylog2-web-interface
  +
mkdir tmp log
  +
chmod -R 777 tmp log
  +
</PRE>
  +
  +
Стратовый скрипт я честно нашел в инете, писать самому было лень
  +
<PRE>
  +
#!/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
 
</PRE>
 
</PRE>

Текущая версия на 18:42, 26 марта 2014

Устновка Graylog2 на CentOS 6.3


Полностью устарело - используйте RPM


Добавлю 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