-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsimple-central-rsyslog.sh
150 lines (125 loc) · 5.67 KB
/
simple-central-rsyslog.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#!/bin/bash
# simple-central-rsyslog
# Recipe for a central rsyslog with log compression
#
# jmanteau 04.09.2012
#
# GPL
#
# Syntaxe: # su - -c "./simple-central-rsyslog.sh"
# Syntaxe: or # sudo ./simple-central-rsyslog.sh
VERSION="1.0"
#=============================================================================
# Variables globales
#-------------------
WGET="wget -m --no-check-certificate"
DATE=`date +"%Y%m%d%H%M%S"`
LOG_FILE="/tmp/simple-central-rsyslog-$DATE.log"
APT="aptitude -q -y"
# UPGRADE both of them !
LOGSTASHURL="http://semicomplete.com/files/logstash/logstash-1.1.1-monolithic.jar"
ELASTICSEARCHDEB="https://github.com/downloads/elasticsearch/elasticsearch/elasticsearch-0.19.8.deb"
LOGSTASHDIR="/opt/logstash"
LOGSTASHINIT="/etc/init.d/logstash"
LOGSTASHINITURL="https://raw.github.com/jmanteau/simple-central-rsyslog/master/logstash"
LOGSTASHCONF="https://raw.github.com/jmanteau/simple-central-rsyslog/master/logstash.conf"
LOGSTASHCLEANER="https://raw.github.com/jmanteau/simple-central-rsyslog/master/logstash_index_cleaner.py"
CONFRSYSLOG="https://raw.github.com/jmanteau/simple-central-rsyslog/master/rsyslog.conf"
CONFCRON="https://raw.github.com/jmanteau/simple-central-rsyslog/master/rsyslog-bzip2.txt"
NGINXPASSENGER="https://raw.github.com/jmanteau/simple-central-rsyslog/master/nginx-passenger.conf"
APACHEKIBANA="https://raw.github.com/jmanteau/simple-central-rsyslog/master/vhost-kibana.conf"
REMOTELOGDIR="/var/log/remote/"
LOGROTATECONF="https://raw.github.com/jmanteau/simple-central-rsyslog/master/logrotate-remote.conf"
PATTERNS="https://raw.github.com/jmanteau/simple-central-rsyslog/master/patterns.tar"
# Fonctions
#---------------------------------
displaymessage() {
echo "$*"
}
displaytitle() {
displaymessage "------------------------------------------------------------------------------"
displaymessage "$*"
displaymessage "------------------------------------------------------------------------------"
}
displayerror() {
displaymessage "$*" >&2
}
# Premier parametre: ERROR CODE
# Second parametre: MESSAGE
displayerrorandexit() {
local exitcode=$1
shift
displayerror "$*"
exit $exitcode
}
# Premier parametre: MESSAGE
# Autres parametres: COMMAND
displayandexec() {
local message=$1
echo -n "[In progress] $message"
shift
echo ">>> $*" >> $LOG_FILE 2>&1
sh -c "$*" >> $LOG_FILE 2>&1
local ret=$?
if [ $ret -ne 0 ]; then
echo -e "\r\e[0;31m [ERROR]\e[0m $message"
else
echo -e "\r\e[0;32m [OK]\e[0m $message"
fi
return $ret
}
# Start
#-------------------
# are you root ?
if [ $EUID -ne 0 ]; then
displayerror 1 "You have to be root: # su - -c $0"
fi
# Log
echo "Starting" > $LOG_FILE
displaytitle "-- Update Aptitude"
displayandexec "Disable CDROM repo" sed -i 's/^deb cdrom/#deb cdrom/g' /etc/apt/sources.list
displayandexec "aptitude update" aptitude update
displaytitle "-- RSYSLOG"
displayandexec "Downloading rsyslog configuration" $WGET -O /etc/rsyslog.conf $CONFRSYSLOG
displayandexec "Downloading logrotate conf" $WGET -O /etc/logrotate.d/remote $LOGROTATECONF
#displayandexec "Downloading cron configuration to compress logs" $WGET -O /etc/cron.daily/rsyslog-bzip2 $CONFCRON
#displayandexec "Adjusting rights" chmod +x /etc/cron.daily/rsyslog-bzip2
displayandexec "Making remote log dir" mkdir -p $REMOTELOGDIR
displayandexec "Restarting rsyslog" /etc/init.d/rsyslog restart
displaytitle "-- Done"
displaytitle "-- LOGSTASH"
displayandexec "Making Logstash dirs" mkdir -p $LOGSTASHDIR && mkdir /var/log/logstash && mkdir /etc/logstash
displayandexec "Downloading Logstash jar" $WGET -O $LOGSTASHDIR/logstash.jar $LOGSTASHURL
displayandexec "Installing Java" $APT install default-jre
displayandexec "Downloading logstash init.d" $WGET -O $LOGSTASHINIT $LOGSTASHINITURL
displayandexec "Downloading logstash conf" $WGET -O /etc/logstash/logstash.conf $LOGSTASHCONF
displayandexec "Downloading logstash cleaner" $WGET -O /opt/logstash/logstash_index_cleaner.py $LOGSTASHCLEANER
displayandexec "Downloading logstash patterns" $WGET -O /tmp/patterns.tar $PATTERNS
displayandexec "Extracting logstash patterns" tar /tmp/patterns.tar -C /etc/logstash/
displayandexec "Adjusting rights" chmod +x $LOGSTASHINIT
displaymessage "Adjusting open files"
echo "root soft nofile 32000" >> /etc/security/limits.conf
echo "root hard nofile 32000" >> /etc/security/limits.conf
displayandexec "Starting at boot" update-rc.d logstash defaults
# In case of distributed elasticsearch
#displaytitle "-- ELASTICSEARCH"
#displayandexec "Downloading deb" $WGET $ELASTICSEARCHDEB
#displayandexec "Installing Elasticsearch from deb" dpkg -i elasticsearch*.deb
displaytitle "-- KIBANA"
displayandexec "Installing requirement" $APT install git curl libcurl3-dev ruby1.9.1-full rubygems1.9.1 libapache2-mod-passenger ruby-switch
displayandexec "Make Ruby 1.9 default" ruby-switch --set ruby1.9.1
displayandexec "Installing Ruby stuff" gem install bundler jls-grok
displaymessage "Configuring Passenger for apache"
echo "PassengerDefaultUser www-data" > "/etc/apache2/mods-available/passenger-user.load"
a2enmod passenger
a2enmod passenger-user
displayandexec "Downloading Kibana vhost conf" $WGET -O /etc/apache2/sites-enabled/0001-kibana.conf $APACHEKIBANA
rm /etc/apache2/sites-enabled/000-default
displayandexec "Downloading Kibana" cd /var/www/ && git clone --branch=kibana-ruby https://github.com/rashidkpc/Kibana.git
displayandexec "Installing Ruby gems" cd /var/www/Kibana && bundle install
displayandexec "Adjusting web dir right" chown -R www-data:www-data /var/www/Kibana/
displayandexec "Restarting web server" /etc/init.d/apache2 force-reload
displayandexec "Restarting Logstash" service logstash restart
displaymessage ""
displaymessage " ### END ###"
echo "End" >> $LOG_FILE