On vérifie que le disque est bien branché :
fdisk -l Disk /dev/sda: 85.9 GB, 85899345920 bytes 255 heads, 63 sectors/track, 10443 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0005c4f3 Device Boot Start End Blocks Id System /dev/sda1 1 1824 14651248+ 83 Linux /dev/sda2 1825 2334 4096112 83 Linux /dev/sda3 2334 10335 64267264 83 Linux /dev/sda4 10336 10443 867510 82 Linux swap / Solaris Disk /dev/sdb: 85.9 GB, 85899345920 bytes 255 heads, 63 sectors/track, 10443 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/sdb doesn't contain a valid partition table
On constate que le nouveau disque (/dev/sdb) est bien là et qu’il ne contient pas de table de partition valide.
C’est parti pour la création d’une partition :
fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x74122bdb.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-10443, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-10443, default 10443):
Using default value 10443
Command (m for help): w
The partition table has been altered!
Une fois l’invite de commandes apparue, nous créons notre nouvelle partition en appuyant sur la touche ‘n’. Le système nous demande si nous voulons une partition primaire ou étendue, nous choisissons primaire (touche ‘n’) car le disque est complètement vierge. Ensuite il nous demande de saisir le numéro de la partition, nous lui spécifions alors le numéro ‘1’. Viens alors le choix du secteur de démarrage de la partition, nous choisissons la valeur par défaut qui nous est proposée qui correspond en fait au premier secteur utilisable pour une partition. Pour terminer nous choisissons le numéro du secteur marquant la fin de la partition, nous prenons le choix par défaut qui correspond au dernier secteur utilisable sur le disque. Nous finissons par la touche ‘w’ afin de prendre en compte les changements.
Par défaut, fdisk fixe le type à Linux. Nous devons seulement déclarer explicitement le type de la partition swap:
Command (m for help): t Selected partition 1 Hex code (type L to list codes): 83
Il ne nous reste plus qu’à utiliser la commande MKFS pour formater la partition créée :
pour de l’ext3 :
mke2fs -j /dev/sda1 mke2fs -j /dev/sda3
pour de l’etx4 :
mkfs -V -t ext4 /dev/sda1 mkfs -V -t ext4 /dev/sda3
pour la swap
mkswap /dev/sda2 swapon /dev/sda2 (swap prête)]]>
Le but est de créer deux RAID, un pour le boot (ne pouvant être chiffré) et un pour le système (en deux partition, « / » et « /home »). On chiffre le RAID système puis on crée un groupe de volume logique contenant les volumes logiques souhaités (dans mon cas un swap, une partition « / » et une partition « /home ».) Pour finir on installe grub sur le deuxième disque.
Une fois que tout est opérationnel il ne reste plus qu’à tester le bon fonctionnement : (Test et gestion du RAID 1)
Pour les screenshots, c’est sur le : « Continue reading »
]]>
Transmettre tous les logs :
echo "*.* @IP:Port" >> /etc/rsyslog.conf && /etc/init.d/rsyslog restart
Transmettre seulement les logs contenu dans le mail.info :
echo "mail.info @IP:Port" >> /etc/rsyslog.conf && /etc/init.d/rsyslog restart]]>
Installation du JRE d’OpenJDK :
apt-get install openjdk-6-jre-headless
Installation d’Elasticsearch :
wget https://github.com/downloads/elasticsearch/elasticsearch/elasticsearch-0.19.8.tar.gz tar xzf elasticsearch-0.19.8.tar.gz mv elasticsearch-0.19.8 /opt/elasticsearch sed -i 's/# cluster\.name\: elasticsearch/cluster\.name\: LogCenter/g' /opt/elasticsearch/config/elasticsearch.yml mkdir /etc/elasticsearch cp /opt/elasticsearch/config/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml
Création du script LSB de démarrage :
vi /etc/init.d/elasticsearch
#! /bin/sh
### BEGIN INIT INFO
# Provides: elasticsearch
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts elasticsearch
# Description: Starts elasticsearch using start-stop-daemon
### END INIT INFO
ES_HOME=/opt/elasticsearch
ES_MIN_MEM=256m
ES_MAX_MEM=2g
DAEMON=$ES_HOME/bin/elasticsearch
NAME=elasticsearch
DESC=elasticsearch
PID_FILE=/var/run/$NAME.pid
LOG_DIR=/var/log/$NAME
DATA_DIR=/var/lib/$NAME
WORK_DIR=/tmp/$NAME
CONFIG_FILE=/etc/$NAME/elasticsearch.yml
DAEMON_OPTS="-p $PID_FILE -Des.config=$CONFIG_FILE -Des.path.home=$ES_HOME -Des.path.logs=$LOG_DIR -Des.path.data=$DATA_DIR -Des.path.work=$WORK_DIR"
test -x $DAEMON || exit 0
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
mkdir -p $LOG_DIR $DATA_DIR $WORK_DIR
if start-stop-daemon --start --pidfile $PID_FILE --startas $DAEMON -- $DAEMON_OPTS
then
echo "started."
else
echo "failed."
fi
;;
stop)
echo -n "Stopping $DESC: "
if start-stop-daemon --stop --pidfile $PID_FILE
then
echo "stopped."
else
echo "failed."
fi
;;
restart|force-reload)
${0} stop
sleep 0.5
${0} start
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
Mise en place des droits et du démarrage automatique puis lancement :
chmod +x /etc/init.d/elasticsearch update-rc.d elasticsearch defaults /etc/init.d/elasticsearch start
Installation de MongoDB via les paquets :
apt-get install mongodb mongodb-server
Création de l’utilisateur graylog2:
mongo
MongoDB shell version: 1.4.4
url: test
connecting to: test
type "help" for help
> use graylog2
switched to db graylog2
> db.addUser('graylog', 'MonPassword')
{
"user" : "graylog",
"readOnly" : false,
"pwd" : "3a645a39bef99c8bba9c805e06536240"
}
> db.auth('graylog', 'Monpassword')
1
> exit
Mise en commentaire de la bind ip puis lancement :
sed -i 's/bind\_ip \= 127\.0\.0\.1/\#bind\_ip \= 127\.0\.0\.1/g' /etc/mongodb.conf /etc/init.d/mongodb restart
Installation de Graylog2 :
wget https://github.com/downloads/Graylog2/graylog2-server/graylog2-server-0.9.6.tar.gz tar xvf graylog2-server-0.9.6.tar.gz mv graylog2-server-0.9.6 /opt/graylog2 cp /opt/graylog2/graylog2.conf.example /etc/graylog2.conf
Configuration des paramètres d’authentification :
sed -i 's/grayloguser/graylog/g' /etc/graylog2.conf sed -i 's/123/MonPassword/g' /etc/graylog2.conf
Test de lancement de graylog :
java -jar /opt/graylog2/graylog2-server.jar --debug
Si tout est OK, arrêt via CTRL+C puis création du script LSB de démarrage :
vi /etc/init.d/graylog2
#!/bin/bash
### BEGIN INIT INFO
# Provides: graylog2
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts graylog2
# Description: Starts graylog2 using start-stop-daemon
### END INIT INFO
NAME=graylog2
GL_HOME=/opt/graylog2
GL_PID=/tmp
CMD=$1
start() {
echo "Starting $NAME ..."
java -jar $GL_HOME/graylog2-server.jar &
}
stop() {
PID=`cat $GL_PID/$NAME.pid`
echo "Stopping $NAME ($PID) ..."
kill $PID
}
restart() {
echo "Restarting graylog2-server ..."
stop
start
}
case "$CMD" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage $0 {start|stop|restart}"
esac
Mise en place des droits et du démarrage automatique puis lancement :
chmod +x /etc/init.d/graylog2 update-rc.d graylog2 defaults /etc/init.d/graylog2 start
Installation des prérequis (ruby, passenger…) :
apt-get install ruby1.8 rubygems rake make libopenssl-ruby ruby-dev build-essential git-core libapache2-mod-passenger
Préparation :
wget https://github.com/downloads/Graylog2/graylog2-web-interface/graylog2-web-interface-0.9.6.tar.gz tar xzf graylog2-web-interface-0.9.6.tar.gz mv graylog2-web-interface-0.9.6 /opt/graylog2/web
Installation du gestionnaire de dépendance bundler puis de l’interface web :
cd /opt/graylog2/web gem install bundler /var/lib/gems/1.8/bin/bundle install
Configuration de l’accès à la base :
echo "" > config/mongoid.yml && vi config/mongoid.yml
production: host: localhost port: 27017 username: graylog password: Monpassword database: graylog2
Configuration d’apache :
echo "" > /etc/apache2/sites-available/default && vi /etc/apache2/sites-available/default
<VirtualHost *:80>
ServerName graylog.em-corporation.fr
ServerAlias *.graylog.em-corporation.fr
ServerAdmin johan@em-corporation.fr
DocumentRoot /opt/graylog2/web/public
<Directory /opt/graylog2/web/public>
Allow from all
Options -MultiViews
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
/etc/init.d/apache2 restart
L’interface web est maintenant accessible et il ne reste plus qu’a créer le premier utilisateur.
]]>apt-get install awstats
Configuration de awstats pour postfix :
cp /etc/awstats/awstats.conf /etc/awstats/awstats.postfix.conf cp /usr/share/doc/awstats/examples/maillogconvert.pl /usr/share/awstats
Ensuite il faut éditer le fichier de conf « /etc/awstats/awstats.postfix.conf » afin de personnaliser l’interface pour coller au mieux à postfix :
LogFile="/usr/share/awstats/maillogconvert.pl standard < /var/log/mail.log |" LogType=M LogFormat="%time2 %email %email_r %host %host_r %method %url %code %bytesd" SiteDomain="mysteryland.emc.fr" DirIcons="./icon" LevelForBrowsersDetection=0 LevelForOSDetection=0 LevelForRefererAnalyze=0 LevelForRobotsDetection=0 LevelForSearchEnginesDetection=0 LevelForKeywordsDetection=0 LevelForFileTypesDetection=0 LevelForWormsDetection=0 ShowMonthStats=UHB ShowDaysOfMonthStats=HB ShowDaysOfWeekStats=HB ShowHoursStats=HB ShowDomainsStats=0 ShowHostsStats=HBL ShowRobotsStats=0 ShowEMailSenders=HBML ShowEMailReceivers=HBML ShowSessionsStats=0 ShowPagesStats=0 ShowFileTypesStats=0 ShowOSStats=0 ShowBrowsersStats=0 ShowOriginStats=0 ShowKeyphrasesStats=0 ShowKeywordsStats=0 ShowMiscStats=0 ShowHTTPErrorsStats=0 ShowSMTPErrorsStats=1
Création de la page web :
mkdir /var/www/awstats ln -s /usr/share/awstats/icon /var/www/awstats/icon
Génération des données :
/usr/lib/cgi-bin/awstats.pl -config=postfix -update
Génération des reports HTML :
/usr/lib/cgi-bin/awstats.pl -config=postfix -output -staticlink > /var/www/awstats/index.html
L’interface se trouve à l’adresse http://@IP/awstats
Pour une mise à jour automatique de l’interface il suffit de renseigner la crontab (crontab -e) :
*/5 * * * * /usr/lib/cgi-bin/awstats.pl -config=postfix -update */5 * * * * /usr/lib/cgi-bin/awstats.pl -config=postfix -output -staticlink > /var/www/awstats/index.html
Les rapports seront maintenant générés toutes les cinq minutes (à partir du fichier de log « mail.log »).
Il est bien évidement possible de modifier le fichier de configuration au niveau des UHBML afin de personnaliser différement l’interface.
]]>cd /usr/share/cacti/site/plugins wget http://www.network-weathermap.com/files/php-weathermap-0.97a.zip unzip php-weathermap-0.97a.zip sed -i -e "s/\$ENABLED\=false\;/\$ENABLED\=true\;/g" weathermap/editor.php
Configuration des droits :
chown www-data weathermap/configs -R chown www-data /usr/share/cacti/site/plugins/weathermap/output -R
Activation du plugin au niveau de l’interface web :
User Management -> admin -> cocher [Plugin Management] Plugin Management -> Install Old Plugin
Le plugin est maintenant installé et opérationnel.
]]>Téléchargement et extraction du plugin :
cd /tmp wget http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7g-PA-v2.8.tar.gz tar xvf cacti-plugin-0.8.7g-PA-v2.8.tar.gz cd cacti-plugin-arch
Installation, patchage et configuration :
cp cacti-plugin-0.8.7g-PA-v2.8.diff /usr/share/cacti/site/ cd /usr/share/cacti/site/ patch -p1 -N < cacti-plugin-0.8.7g-PA-v2.8.diff mysql -u root -p cacti < /tmp/cacti-plugin-arch/pa.sql sed -i -e "s/\"\/\"/\"\/cacti\/\"/g" include/config.php
Le plugin est maintenant installé.
]]>Installation de la plateforme AMP :
apt-get install apache2 mysql-server php5 php5-cli snmp rrdtool phpmyadmin php-pear unzip patch
Le système demande plusieurs choses, à savoir la définition du mot de passe root de MySQL, le serveur web à utiliser, encore une fois le mot de passe root, etc. Il faut dans l’ordre répondre :
Nouveau mot de passe du superutilisateur de MySQL : MotDePasse Confirmation du mot de passe du superutilisateur de MySQL : MotDePasse Serveur web à reconfigurer automatiquement: Apache2 Faut-il configurer la base de données de phpmyadmin avec dbconfig-common : oui Mot de passe de l’administrateur de la base de données : MotDePasse Mot de passe de connexion MySQL pour phpmyadmin : laisser vide, il sera généré aléatoirement
On installe maintenant cacti :
apt-get install cacti cacti-spine
Encore des questions relatives à la configuration pour lesquelles il faut répondre :
Faut-il configurer la base de données de cacti avec dbconfig-common : oui Mot de passe de l’administrateur de la base de données : MotDePasse Mot de passe de connexion MySQL pour cacti : laisser vide, il sera généré aléatoirement Type de serveur web: Apache2
Maintenant que Cacti est installé on peut acceder à l’interface Web à l’adresse :
http://@IP/cacti
Un petit assistant apparait où il suffit de cliquer sur « Next -> Next -> Finish »
Une fois sur l’écran de connexion, renseigner les identifiants par défaut (admin//admin) puis modifier le mot de passe comme souhaité.
Cacti est maintenant installé et fonctionnel.
]]>Visualiser l’état du RAID :
root@billy:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[0]
77646776 blocks super 1.2 [2/1] [U_]
md0 : active raid1 sda1[0]
498676 blocks super 1.2 [2/1] [U_]
unused devices:
Un coup d’oeil rapide et nous constatons qu’il manque un disque [2/1] et [U_] au lieu de [2/2] et [UU].
Visualiser l’état individuel d’une grappe :
root@billy:~# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Sat Mar 24 21:26:51 2012
Raid Level : raid1
Array Size : 498676 (487.07 MiB 510.64 MB)
Used Dev Size : 498676 (487.07 MiB 510.64 MB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
Update Time : Sun Mar 25 17:46:39 2012
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Name : billy:0 (local to host billy)
UUID : 98098cd5:7481c7d2:d8af0ea8:f16c4bec
Events : 104
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 0 0 1 removed
root@billy:~# mdadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Sat Mar 24 21:27:01 2012
Raid Level : raid1
Array Size : 77646776 (74.05 GiB 79.51 GB)
Used Dev Size : 77646776 (74.05 GiB 79.51 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
Update Time : Sun Mar 25 17:50:48 2012
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Name : billy:1 (local to host billy)
UUID : 607ff7b4:4f02a016:f210d9e3:f65d0467
Events : 612
Number Major Minor RaidDevice State
0 8 5 0 active sync /dev/sda5
1 0 0 1 removed
Nous voyons avec la ligne « State » que le RAID fonctionne en mode dégradé et tout en bas que le disque numéro 1 est dans l’état « removed ». Le tableau indique également quelques erreur mineurs et majeurs.
Quand tout est en ordre, les périphériques sont affichés précédés de la mention active sync sinon on trouvera des choses comme faulty spare, ou removed.
Là on voit clairement le problème, /dev/sdb1 et /dev/sdb5 ont été exclus de leur grappe (normal le disque été débranché).
Pour les rajouter il suffit de taper :
root@billy:~# mdadm --manage /dev/md0 --ad /dev/sdb1 mdadm: re-added /dev/sdb1 root@billy:~# mdadm --manage /dev/md1 --ad /dev/sdb5 mdadm: re-added /dev/sdb5
Là, sdb1 a été ré-ajouté dans la grappe md0 et sdb5 dans la grappe md1.
Il est possible de visualiser la reconstruction en affichant le contenu du fichier /proc/mdstat. La commande watch permet de maintenir et rafraichir l’affichage du fichier afin d’avoir l’avancement en temps réel :
root@billy:~# watch -n 1 'cat /proc/mdstat'
Every 1,0s: cat /proc/mdstat Sun Mar 25 18:02:03 2012
Personalities : [raid1]
md1 : active raid1 sdb5[1] sda5[0]
77646776 blocks super 1.2 [2/1] [U_]
[>....................] recovery = 0.7% (545920/77646776) finish=44.7min speed=28732K/sec
md0 : active raid1 sdb1[1] sda1[0]
498676 blocks super 1.2 [2/2] [UU]
unused devices:
La commande prend bien évidement plus ou moins longtemps selon la taille du disque.
Une fois la reconstruction terminer on vérifie que tout est de nouveau en ordre :
root@billy:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[0] sda5[1]
77646776 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sda1[0] sda1[1]
498676 blocks super 1.2 [2/2] [UU]
On peut maintenant répéter la manipulation pour le deuxième disque.
]]>apt-get install binutils cpp gcc make psmisc linux-headers-$(uname -r)
On monte les virtual tools au niveau du lecteur CD de l’host puis on monte le CD sous Debian :
mount /dev/cdrom /mnt/
On copie l’archive des VMware Tools qu’on extrait par la suite :
cp /mnt/VMwareTools-8.6.0-425873.tar.gz /tmp/VMWareTools-8.4.2-261024.tar.gz cd /tmp/ tar zxf VMWareTools-8.4.2-261024.tar.gz
Pour finir, on lance l’installation :
cd vmware-tools-distrib perl vmware-install.pl
Si tout va bien il suffit de valider par entrée à chaque question et les VMware Tools seront installés.
]]>