Silverlake - Blog

Aller au contenu | Aller au menu | Aller à la recherche

lundi, mai 14 2012

Créer un mirroir CentOS

logocentos.jpgPour installer rapidement des machines, disposer d'un mirroir local est un plus. Il existe déjà un billet pour la mise en place d'un mirroir Debian cliquer ici. Le principe est identique ici mais avec CentOS.

Le script présenté utilise un mirroir public ( celui de ovh dans l'exemple ) dont la liste est disponible ici et le protocole rsync.

L'avantage de rsync est de travailler en différentiel. La première syncho est longue mais les suivantes très rapides. Il est facile de programmer ce script dans un cron journalier et ainsi avoir un mirroir à jour.

Les versions sont 5 et 6 en 32 et 64 bits. Le script ne ramène que les dernières versions des branches 5 et 6 ( 5.8 pour 5 et 6.2 pour 6 lors de la rédaction de ce billet ).

#!/bin/sh

rsync="/usr/bin/rsync -avHz --delete --stats --bwlimit=4000"
mirror=rsync://mirror.ovh.net/ftp.centos.org

verlist="5 6"
archlist="i386 x86_64"
baselist="os updates centosplus extras"
local=/home/mirror_centos

for ver in $verlist
do
  for arch in $archlist
  do
    for base in $baselist
    do
      remote=$mirror/$ver/$base/$arch/
      echo ------------------
      echo $ver/$base/$arch
      echo ------------------
      echo "$rsync $remote $local/$ver/$base/$arch/"

      if [ ! -e $local/$ver/$base/$arch ]; then
        echo "Répertoire inexistant -> création de : $local/$ver/$base/$arch"
        mkdir -p "$local/$ver/$base/$arch"
      fi

      $rsync $remote $local/$ver/$base/$arch/
    done
  done
done

La clause bwlimit de rsync permet de ne pas consommer toute la bande passante de la liaison, 4Mo ici. Sur une ADSL 8Mo le temps total de la première synchonisation fut de 8 heures.

samedi, mai 12 2012

Apache Centos/RedHat mpm worker ou prefork

Installer apache sous centOS ne pose aucun problème

yum install httpd

Par défaut apache est installé avec le mpm prefork, comme le montre la commande suivante :

apachectl -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c

Pour utiliser worker en lieu et place de prefork, éditer le fichier /etc/sysconfig/httpd et decommenter la ligne suivante :

HTTPD=/usr/sbin/httpd.worker

Controler le chargement correct du mpm worker

apachectl -l
Compiled in modules:
  core.c
  worker.c
  http_core.c
  mod_so.c

Rappel, certes worker est plus "tendance" car il gère le multi-threads, mais attention il n'est pas utilisable avec PHP sauf via le module fastcgi, mais ce sera un autre billet...

jeudi, mai 10 2012

Putty, clavier numérique sous vi et UTF8

Introduction

Sous Windows pour se connecter en ssh putty est un incontournable. Il y a toutefois un petit dysfonctionnement dans la configuration par défaut lors de l'utilisation de vi ou de vim. : Le pavé numérique ne fonctionne pas correctement

Ce billet étant court, j'expose aussi comment configurer Putty pour afficher correctement en UTF8.

Pavé numérique

La solution est simple, il suffit dans le menu Terminal -> Features de cocher la case "Disable application keypad mode" config_putty01.PNG

Codage UTF8

Pour celà dans le menu Windows -> Translation, dérouler la combo "Remote character set" et choisir UTF-8. config_putty02.PNG

Sélectionner ensuite la session Default Setting puis save afin que pour toute nouvelle session ces paramètres soient appliqués.

mardi, mai 8 2012

Compilation Apache 2.4.x

Introduction

Il existe déjà un billet sur la compilation du serveur web apache, mais il concerne la branche 2.2.x. La branche actuelle, 2.4.x ne fonctionne pas selon le même principe, car les fonctionnalités APR ( Apache Portable Runtime ) ont été sorties du code source de httpd.
Il en est de même pour PCRE ( Perl Compatible Regular Expressions ).

Ce billet et conçu pour Debian Squeeze. Il suppose installé les outils de compilation ( aptitude install build-essential ).

Chargement des sources

Au moment de la rédaction de ce billet, les versions stables sont :

  • httpd 2.4.2,
  • apr 1.4.6
  • apr-util 1.4.1

Télécharger ces sources par wget

wget http://mirror.ibcp.fr/pub/apache//httpd/httpd-2.4.2.tar.gz
wget http://apache.cict.fr//apr/apr-1.4.6.tar.gz
wget http://apache.cict.fr//apr/apr-util-1.4.1.tar.gz

Il faut aussi installer les librairies PCRE

aptitude install libpcre3-dev

Décompresser les sources

tar -xvzf /home/httpd-2.4.2.tar.gz
cd httpd-2.4.2/srclib
tar -xvzf /home/apr-1.4.6.tar.gz
mv apr-1.4.6 apr
tar -xvzf /home/apr-util-1.4.1.tar.gz
mv apr-util-1.4.1 apr-util

Lancer ensuite la compilation de manière "classique". Dans l'exemple le mpm utilisé est worker.

./configure --enable-so --enable-mods-shared="all" --prefix=/usr/local/apache2 --with-mpm=worker
make
make install

La suite de la configuration est identique au billet précédent. Un bémol toutefois, il faut dans la configuration charger un module de plus : mod_unixd sinon il y aura au démarrage l'erreur suivante : Invalid command 'User', perhaps misspelled or defined by a module not included in the server configuration.
Ci dessous un exemple de fichier httpd.conf compatible 2.4.x

ServerRoot /usr/local/apache2

User apache
Group apache

DocumentRoot /var/www/html
Listen 80

LoadModule mime_module modules/mod_mime.so
LoadModule unixd_module modules/mod_unixd.so
TypesConfig conf/mime.types

LoadModule dir_module modules/mod_dir.so
DirectoryIndex index.html

ErrorLog /var/log/apache2/error.log
LogLevel warn

dimanche, avril 8 2012

Script shell pour création base oracle

Introduction

J'aime la ligne de commande, les scripts et autre installation silencieuse en particulier avec Oracle. La raison est simple, lors de mes interventions je n'ai le plus souvent à ma disposition qu'un accès ssh au serveur. Dans ces conditions connaitre les outils type TOAD ou même Database Control ne me sert pas à grand chose.

J'anime d'ailleurs un cours pour le compte de ORSYS ( pub gratuite ) sur l'administration de Oracle uniquement en ligne de commande.Vous en trouverez le détail via ce lien

Un des sujets de ce cours est la mise en place d'un script de création automatique d'une base de données. Je l'ai voulu simple avant tout, il y manque tous les tests de bonne exécution par exemple. La version complète est disponible ici

Le script contient deux variables

  • INST : le nom de l'instance
  • PASSWORD : le mot de passe pour les user sys et system

Dans l'exemple nous allons créer une base nommée YODA avec comme mot de passe sys et system : manager11

La version présentée est Oracle 11gR2, mais ce script fonctionne très bien aussi en 9i ou 10g.

Répertoires

La norme OFA sera respectée, les fichiers seront donc sous une structure type :

  • /u01/app/oracle/product/11.2.0/dbhome_1 -> $ORACLE_HOME
  • /u01/app/oracle/oradata/YODA
  • /u02/app/oracle/oradata/YODA
  • /u03/app/oracle/oradata/YODA

Variables

Il suffit de les adapter à la création voulue. Il est aussi très simple de les passer en ligne de commande...

#!/bin/bash
# Script de création de base Oracle
INST=YODA # Nom de l'instance
PASSWORD=manager11 # Mot de passe sys et system

Répertoires de la base

mkdir -p /u01/app/oracle/admin/${INST}/pfile
mkdir -p /u01/app/oracle/oradata/${INST}
mkdir -p /u02/app/oracle/oradata/${INST}
mkdir -p /u03/app/oracle/oradata/${INST}

Le fichier init.ora

La base sera créée avec 3 fichiers de contrôle sur des axes différents et une taille mémoire affecté à l'instance de 1,5Go.

# init.ora
cat <<EOF > /u01/app/oracle/admin/${INST}/pfile/init${INST}.ora
db_name = ${INST}
db_block_size = 8192
control_files = /u01/app/oracle/oradata/${INST}/control01.ctl, /u02/app/oracle/oradata/${INST}/control02.ctl, /u03/app/oracle/oradata/${INST}/control03.ctl
sga_target = 1280M
pga_aggregate_target = 320M
EOF

Création du lien symbolique vers $ORACLE_HOME/dbs et du fichier de mot de passe pour la connexion as sysdba.

# Fichier mot de passe et lien symbolique vers init.ora
cd $ORACLE_HOME/dbs
ln -sfn $ORACLE_BASE/admin/${INST}/pfile/init${INST}.ora init${INST}.ora
orapwd file=orapw${INST} password=${PASSWORD}

Création

Dans un premier temps nous allons générer un script SQL pour l'ordre create database.

# Fichier .sql de création
cat <<EOF > $HOME/create${INST}.sql
create database ${INST}
character set UTF8
national character set UTF8
logfile
group 1 ('/u01/app/oracle/oradata/${INST}/redo01a.log','/u02/app/oracle/oradata/${INST}/redo01b.log') size 50M,
group 2 ('/u01/app/oracle/oradata/${INST}/redo02a.log','/u02/app/oracle/oradata/${INST}/redo02b.log') size 50M,
group 3 ('/u01/app/oracle/oradata/${INST}/redo03a.log','/u02/app/oracle/oradata/${INST}/redo03b.log') size 50M
datafile '/u01/app/oracle/oradata/${INST}/system01.dbf' size 500M autoextend on next 100M maxsize 2G extent management local
sysaux datafile '/u01/app/oracle/oradata/${INST}/sysaux01.dbf' size 500M autoextend on next 100M maxsize 2G
undo tablespace UNDO_TBS datafile '/u01/app/oracle/oradata/${INST}/undo_tbs01.dbf' size 25M
default temporary tablespace TEMP tempfile '/u01/app/oracle/oradata/${INST}/temp01.dbf' size 50M;
EOF

La base est créée avec 3 groupes de redo-logs multipléxés en 2 membres. Un tablespace UNDO et un temporaire, du classique.

Le spfile est créé de suite.

# Lancement en mode nomount de l'instance pour création
# Création directe du spfile
export ORACLE_SID=${INST}
resultat=`sqlplus -s "/ as sysdba" <<EOF
startup nomount;
create spfile from pfile;
shutdown immediate;
startup nomount;
start $HOME/create${INST}.sql;
start $ORACLE_HOME/rdbms/admin/catalog.sql;
start $ORACLE_HOME/rdbms/admin/catproc.sql;
alter user sys identified by ${PASSWORD};
alter user system identified by ${PASSWORD};
exit;
EOF`

les scripts catalog et catproc servent à la création du dictionnaire des données.

Script pupbld.sql

Execution du script pupbld.sql. Afin d'éviter le warning suivant :

Error accessing PRODUCT_USER_PROFILE
Warning:  Product user profile information not loaded!
You may need to run PUPBLD.SQL as SYSTEM

Le script créé la table PRODUCT_USER_PROFILE dans le schema SYSTEM. Le message n'est qu'un warning en fait, la connexion est acceptée en l'absence de cette table.

resultat=`sqlplus -s system/${PASSWORD} <<EOF
start $ORACLE_HOME/sqlplus/admin/pupbld.sql
EOF`

Conclusion

Il est très facile de rajouter d'autres ordres SQL à la suite de ce script. L'objectif ici était de présenter une méthode simple de création. La version complète du script est disponible ici. Selon la puissance de la machine il faut compter 10 à 15 minutes pour la création.

Bonus

Ci dessous quelques commandes utiles à rajouter

# Tablespace par défaut
resultat=`sqlplus -s system/${PASSWORD} <<EOF
create tablespace users datafile '/u02/app/oracle/oradata/RED/users_01.dbf' size 100K;
alter database default tablespace users;
exit;
EOF`

# Flash Recovery Area
mkdir -p /u03/app/oracle/flash_recovery_area
resultat=`sqlplus -s "/ as sysdba" <<EOF
alter system set db_recovery_file_dest_size=5G scope=both;
alter system set db_recovery_file_dest='/u03/app/oracle/flash_recovery_area' scope=both;
exit;
EOF`

# Activation du mode archivelog
resultat=`sqlplus -s "/ as sysdba" <<EOF
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
exit;
EOF`

jeudi, avril 5 2012

Carte réseau Atheros AR8152 sur Ubuntu 10.04 LTS

Je possède un portable ASUS X54H qui dispose d'une carte Ethernet de marque Atheros référence AR8152. Cette carte n'est pas reconnue par le noyau sur Ubuntu 10.04 LTS. Il est toutefois possible d'installer son module.

Dans un premier temps, installer les outils pour la génération du module

sudo aptitude install linux-headers-$(uname -r) build-essential dkms

Puis télécharger le code source pour le module via le lien suivant :.

Le décompresser

tar -xvzf AR81Family-linux-v1.0.1.14_dkms.tar.gz -C /usr/src

Lancer la création du module

sudo cd /usr/src
sudo dkms add -m atl1e -v 1.0.1.14
sudo dkms build -m atl1e -v 1.0.1.14
sudo dkms install -m atl1e -v 1.0.1.14

Charger enfin le module ainsi créé.

sudo modprobe atl1e

La commande ifconfig -a doit maintenant afficher la carte réseau filaire.

Pour rédiger ce billet, je me suis basé sur le site suivant ( en allemand ) http://forum.ubuntuusers.de/topic/lan-geht-nicht-wlan-schon/#post-2666793 qui donne aussi la procédure pour les versions plus récentes de Ubuntu.

mercredi, mars 14 2012

Services inutiles sur CentOS 6.2

Mon coeur est Debian, mais mes clients sont RedHat ( les directeurs informatiques auraient-ils plus confiance dans un support externe qu'en leurs équipes ? ).

Ne possèdant pas de licence RedHat je fait donc mes essais avec CentOS. Je procède toujours à une installation minimale de mes serveurs, partant du principe si je n'utilise pas telle fonction, inutile de l'installer.

Il existe un cd minimal pour installer CentOS 6.2, mais malgré cela de nombreux services sont démarrés par défaut :

  • iscsi
  • nfs
  • iptables...

Les commandes suivantes désactivent ces services.

chkconfig nfslock off
chkconfig netfs off
chkconfig rpcbind off
chkconfig rpcgssd off
chkconfig rpcidmapd off
chkconfig iscsi off
chkconfig iscsid off
chkconfig lldpad off
chkconfig ip6tables off
chkconfig iptables off

la commande chkconfig --list est une alliée précieuse pour savoir ce qui est démarré.

Affecter une IP au démon ssh

Ce billet s'inspire d'un exercice que je donne lors de mes formations aux outils Linux.

Par défaut le démon ssh écoute sur toutes les cartes réseau et toutes les IP configurées sur la machine. Pour changer ceci il faut modifier le fichier /etc/ssh/sshd_config et positionner la ligne ListenAddress avec l'IP. Le shell suivant réalise cette opération.

#!/bin/bash
# Affecte l'adresse IP de eth0 à l'écoute du démon ssh

# Stocke l'IP dans une variable
IP=`ifconfig eth0 | grep "inet adr" | cut -d':' -f2 | tr -s [:blank:] ' ' | cut -d' ' -f1`

# sed est appelé avec l'option -i.bak afin de créer automatiquement un .bak de sshd_config
sed -i.bak "s/#ListenAddress 0.0.0.0/ListenAddress $IP/" /etc/ssh/sshd_config

Tester avec la commande diff

diff -c /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
*** /etc/ssh/sshd_config.bak	2012-03-14 17:39:20.658111844 +0100
--- /etc/ssh/sshd_config	2012-03-14 17:41:11.011118977 +0100
***************
*** 12,18 ****
  
  #Port 22
  #AddressFamily any
! #ListenAddress 0.0.0.0
  #ListenAddress ::
  
  # Disable legacy (protocol version 1) support in the server for new
--- 12,18 ----
  
  #Port 22
  #AddressFamily any
! ListenAddress 192.168.1.28
  #ListenAddress ::
  
  # Disable legacy (protocol version 1) support in the server for new

Pour activer ceci redemarrer ssh

vendredi, février 24 2012

Ré-initialiser le tableau de bord sous Ubuntu

Un petit truc utile sous Ubuntu, il arrive que des manipulations aléatoires modifient le tableau de bord. Afin de retrouver la configuration d'origine, il suffit de supprimer les fichiers suivants :

  • ~/.gconf/apps/panel
  • ~/.gnome2/panel2.d

Se déconnecter et se reconnecter au système, la configuration d'origine est rétablie.

Billet tiré sur une page plus complète, via le lien suivant

lundi, février 6 2012

Pilote graphique ATI Radeon

Ce n'est un secret pour personne, les cartes ATI sont largement diffusées et le constructeur ne livre pas les spécifications rendant difficile la mise en place d'un pilote libre pour Linux.

Il fournit néanmoins un pilote proporiétaire permettant d'utilser au mieux ses cartes sous une distribution Linux quelconque.

A la rédaction de ce billet, il suffit de télécharger le binaire suivant sur le site du contructeur ( Attention 100Mo )

wget -c http://www2.ati.com/drivers/linux/amd-driver-installer-12-1-x86.x86_64.run

Le rendre exécutable et le lancer ( sous Ubuntu inutile de passer par sudo, l'assistant demandera le mot de passe ).

chmod u+x amd-driver-installer-12-1-x86.x86_64.run
./amd-driver-installer-12-1-x86.x86_64.run

Le binaire est identique en 32 ou 64 bits. A titre personnel je l'ai testé sur plusieurs cartes ATI Radeon sans difficulté en particulier avec des processeurs i3, i5 et i7

Choisir l'option par défaut ( Install Driver ). Il suffit de suivre l'assistant et redémarrer le poste.

ati.png

Attention, il faut refaire cette manipulation si le noyau Linux est modifié par une mise à jour de la distribution. L'effet sera visible car au redémarrage de la machine il sera demandé de passer en basse résolution. Il suffit donc de relancer le binaire et de redémarrer pour retrouver la bonne configuration graphique.

vendredi, janvier 27 2012

Restaurer une base Oracle sur une autre machine

Ce billet présente le mode opératoire de restauration d'une base Oracle en version 10g avec RMAN.

On part du principe que le serveur est détruit et qu'il ne reste que la sauvegarde RMAN de disponible.

Dans l'exemple la base de données se nomme RED.

Installer l'OS et les binaires Oracle comme d'habitude.

Créer les répertoires sur la nouvelle machine, sous l'identité oracle.

mkdir -p /u01/app/oracle/admin/RED/bdump
mkdir -p /u01/app/oracle/admin/RED/udump
mkdir -p /u01/app/oracle/admin/RED/pfile
mkdir -p /u01/app/oracle/oradata/RED
mkdir -p /u02/app/oracle/oradata/RED
mkdir -p /u03/app/oracle/oradata/RED
mkdir -p /u01/app/oracle/flash_recovery_area/RED

Recopier toute la sauvegarde sous /u01/app/oracle/flash_recovery_area/RED

Créer un initRED.ora provisoire sous /u01/app/oracle/admin/RED/pfile

Contenu de initRED.ora

db_name=RED
db_recovery_file_dest_size=2G
db_recovery_file_dest=/u01/app/oracle/flash_recovery_area

Au niveau du shell

export ORACLE_SID=RED
sqlplus /nolog
SQL> connect / as sysdba
SQL> startup nomount pfile='/u01/app/oracle/admin/RED/pfile/initRED.ora';
SQL> exit

Dans un premier temps nous allons restaurer le vrai fichier de paramètres, puis redémarrer la base dessus.

Se connecter à RMAN

rman target /
RMAN> restore spfile from autobackup;
RMAN> shutdown immediate;
RMAN> startup nomount;
RMAN> restore controlfile from autobackup;
RMAN> alter database mount;
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open resetlogs;
RMAN> exit;

L'ordre recover database va certainement échouer, car les redo-logs sont perdus. Sauf si bien sur il existe une copie ailleurs...

Se connecter normalement à RED.

dimanche, janvier 15 2012

Installer le database control en ligne de commande

Ce billet concerne la version 10g de Oracle.

Lors de la création manuelle d'une base Oracle, sans l'assistant dbca, le database control n'est pas configuré, il est bien évidement possible de le faire à postériori. La commande permettant ceci est emca qui peut s'appeler en mode intéractif, mais aussi avec un fichier de réponse.

Dans l'exemple suivant, nous allons utiliser une base de données nommée YODA, sur un serveur appelé adi100.concarnux.fr. Le mot de passe des utilisateurs sys, dbsnmp et sysman étant manager10.

La syntaxe du fichier est très claire pour l'adapter à la configuration souhaitée.

Remplir les clauses EMAIL_ADDRESS et MAIL_SERVER_NAME est facultatif, mais une demande sera faite intéractivement;

Créer un fichier, par exemple em.rsp avec les lignes suivantes :

HOST=adi100.concarnux.fr
SID=YODA
PORT=1521
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
EMAIL_ADDRESS=votre_mail
MAIL_SERVER_NAME=votre_serveur_smtp
DBSNMP_PWD=manager10
SYSMAN_PWD=manager10
SYS_PWD=manager10

Dans le cas d'utilisation de ASM il faut compléter ce fichier avec les lignes suivantes :

ASM_OH=/u01/app/oracle/product/10.2.0/db_1
ASM_SID=+ASM
ASM_PORT=1521
ASM_USER_ROLE=sysdba
ASM_USER_NAME=sys
ASM_USER_PWD=manager10

Lancer ensuite la commande de création

emca -config dbcontrol db -repos create -respFile em.rsp

Pour récréer un database control

emca -config dbcontrol db -repos recreate -respFile em.rsp

samedi, janvier 14 2012

Oracle 10g version 10.2.0.5 et trace dans udump

Le patchset 10.2.0.5 est le dernier en date, à la rédaction de ce billet, il y a toutefois un soucis léger, le niveau de trace dans le répertoire pointé par USER_DUMP_DEST est assez fort. Il est possible de corriger cela simplement en installant le patch 10248542.

Il y a toutefois un pré-requis, il faut utiliser la version 10.2.0.5.1 de OPatch, car celle qui est dans le patchset 10.2.0.5 est la 10.2.0.4.1 et donc non conforme. En clair il faut patcher avant de patcher !

Depuis My Oracle Support télécharger le patch 6880880. l'installation est simple, il suffit de décrompresser le zip dans $ORACLE_HOME et de remplacer tous les fichiers existants.

Procéder ensuite à l'installation du patch 10248542.

mercredi, janvier 11 2012

Joomla 1 et PHP 5

Un retour d'expérience suite à un déboire client sur un site Joomla 1 avec une migration PHP.

Joomla version 1.x est prévu pour PHP 5.2 au dela il faut corriger le fichier includes/Cache/Lite/Function.php en remplacant la ligne suivante :

$arguments = func_get_args();

par

$arguments = func_get_args();
$numargs = func_num_args();
for($i=1; $i < $numargs; $i++){
$arguments[$i] = &$arguments[$i];
}

Lien qui m'a donné la solution ( en anglais )

dimanche, janvier 8 2012

Nagios, supervision via NRPE

Nagios ne sait que superviser les ressources publiques d'une machine notamment les ports ouverts . NRPE permet de surveiller les ressources locales d'une machine comme par exemple la charge CPU, la place utilisée d'un disque...

Ce billet est directement inspiré de la documentation anglaise officielle qui se trouve sur le site Nagios : PDF NRPE

Il est possible d'utilser la commande check_by_ssh, qui présente l'avantage de ne rien demander comme installation sur le poste distant. Toutefois cette commande est plus gourmande en temps CPU et me donnera l'occasion d'écrire un billet futur.

Il faut installer NRPE sur chaque machine à superviser. Le serveur Nagios via la commande nrpe_check va lancer le démon NRPE sur la machine supervisée et renvoyer les informations au serveur Nagios.

Le schéma ci-dessous montre le principe de NRPE

NRPE.jpg

La commande check_nrpe lance le dénom NRPE sur la machine distante via xinetd, ce principe permet de ne faire tourner le démon NRPE qu'au moment de la collecte.

Dans l'exemple présenté ici le serveur Nagios aura pour IP 192.168.1.100 et la machine à superviser 192.168.1.101. Il est supossé que le serveur Nagios est correctement installé. Sinon vous voir le billet suivant :

Installation de NRPE sur la machine à superviser

Bien qu'il existe dans chaque distribution des packages prèts à l'emploi, je vais utiliser les codes sources afin d'avoir une version la plus à jour. Il est necessaire de disposer des outils de compilation, sur Debian utiliser la commande suivante :

aptitude install build-essential

Télécharger les archives suivantes :

wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz

Le premier téléchargement concerne les plugins Nagios et le second le démon NRPE. Les archives sont les dernières mise à jour lors de la rédaction du billet.

Décompresser et compiler les plugins Nagios

tar -xvzf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure
make
make install

On retrouve ici le classique triptyque de compilation. l'ensemble des binaires est installé sous /usr/local/nagios. le plus simple est de créer un user nagios sur la machine et de le nommé comme propriétaire de ce répertoire.

adduser nagios
chown -R nagios:nagios /usr/local/nagios

Installer ensuite xinetd

aptitude install xinetd

Pou installer le démon NRPE il faut au préalable installer les librairies SSL

aptitude install libssl-dev

Décompresser l'archive téléchargée précédement, compiler et installer

tar -xvzf nrpe-2.13.tar.gz
cd nrpe-2.13
./configure
make all
make install-plugin
make install-daemon
make install-daemon-config
make install-xinetd

Editer le fichier /etc/xinetd.d/nrpe et sur la ligne only_from rajouter l'adresse IP du serveur Nagios. le fichier doit ressembler à ceci :

service nrpe
{
        flags           = REUSE
        socket_type     = stream
        port            = 5666
        wait            = no
        user            = nagios
        group           = nagios
        server          = /usr/local/nagios/bin/nrpe
        server_args     = -c /usr/local/nagios/etc/nrpe.cfg --inetd
        log_on_failure  += USERID
        disable         = no
        only_from       = 127.0.0.1 192.168.1.100
}

Ajouter la ligne suivante à /etc/services

nrpe  5666/tcp  # NRPE

Relancer xinetd

/etc/init.d/xinetd restart

Tester le fonctionnement correct avec la commande netstat

netstat -at | grep nrpe
tcp        0      0 *:nrpe                  *:*                     LISTEN   

Tester ensuite que le démon NRPE répond correctement

/usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.13

La configuration des commandes se fait dans le fichier /usr/local/nagios/etc/nrpe.cfg. Il existe déjà des commandes prédéfinies, la synaxe est très simple. par exemple nous allons demander ldes information sur la partition /var de la maichine qui est montée sur /dev/sda7. Dans le fichier /usr/local/nagios/etc/nrpe.cf rajouter la ligne suivante :

command[check_var]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda7

Configurer NRPE surle serveur Nagios

Il suffit de télécharger l'archive du démaon NRPE, de la compiler et d'installer le plugin.

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz
tar -xvzf nrpe-2.13.tar.gz
cd nrpe-2.13
./configure
make all
make install-plugin

Tester ensuite le fonctionnement distant

/usr/local/nagios/libexec/check_nrpe -H 192.168.1.101
NRPE v2.13

Tester par exemple la charge globale de la machine supervisée

/usr/local/nagios/libexec/check_nrpe -H 192.168.1.101 -c check_load
OK - Charge moyenne: 0.00, 0.01, 0.05|load1=0.000;15.000;30.000;0; load5=0.010;10.000;25.000;0; load15=0.050;5.000;20.000;0;

Tester la commande check_var créée précédement

/usr/local/nagios/libexec/check_nrpe -H 192.168.1.101 -c check_var
DISK OK - free space: /var 1733 MB (92% inode=98%);| /var=149MB;1586;1784;0;1983

Il suffit de rajouter au fichier /usr/local/nagios/etc/commands.cfg la commande de check_nrpe

define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

La commande check_nrpe s'utilise alors comme tout autre dans le fichier de configuration de la machine sur le serveur Nagios. Exemple d'incorporation de la commande check_var

define service{
  use                             local-service
  host_name                   adi101 -> Il s'agit de la machine supervisée IP 192.168.1.101
  service_description       Partition var
  check_command           check_nrpe!check_var
} 

jeudi, janvier 5 2012

Sauvegarde et Restauration avec BackupPC

Sauvegarder à rien ne sert, si restaurer ne peut se faire !

BackupPC

Il s'agit d'une solution simple à mettre en place et permettant la sauvegarde ( et la restauration ) depuis une interface Web. Le poste à sauvegarder pouvant être sous Linux ou Windows.

BackupPC est bien référencé sur le NET, je conseille l'article suivant

Ce billet va montrer une installation sous Debian Squeeze.

Installation

Faire une installation basique de Debian, il faut prévoir un gros espace disque pour stocker les sauvegardes, dans cet exemple le choix sera /home.

Un fois Debian installé, il suffit de demander l'installation du paquet BackupPC

aptitude install backuppc

Par défaut le serveur Web apache2 sera configuré. l'installation propose également un mot de passe pour un utilisateur backuppc, le noter sinon il faut le modifier ainsi

htpasswd /etc/backuppc/htpasswd backuppc

Répertoire de sauvegarde

Par défaut backupPC sauvegarde sous /var/lib/backuppc, le plus simple, est de déplacer ce répertoire sous /home et de créer un lien symbolique. Bien sur en modifiant les fichiers de configuration, on peut faire mieux, mais ici on fait simple.

mv /var/lib/backuppc /home
ln -s /home/backuppc /var/lib/backuppc

Via un navigateur aller sur l'URL http://mon_serveur/backuppc et donner le nom d'utilisateur : backuppc et le mot de passe créé précédement.

L'interface est en anglais, pour la passer en français, cliquer sur le lien "Edit config" puis sur "CGI".

backuppc2.png

Dérouler la combo Language pour choisir 'fr' et sauvegarder. Rafraichir le navigateur, l'interface est alors francisée.

backuppc1.png

Enregistrer des machines

la encore l'interface graphique est suffisement conviviale, il y a toutefois un prérequis, il faut autoriser l'utilisateur backuppc à se connecter en root sur la machine distante. Pour cela depuis le serveur hébergeant BackupPC :

su - backuppc

Générer une paire de clé ssh

ssh-keygen -t rsa

Faire entrée sur les questions, puis copier la clé vers le serveur à sauvegarder.

ssh-copy-id root@ip_serveur_a sauvegarder

Le mot de passe sera une première fois demandé, tester en se connectant directement en ssh, le mot de passe n'est pas demandé. Il suffit alors d'engegistrer les machines via le lien Machines.

Comme méthode de sauvegarde prendre rsync et choisir les répertoires à sauvegarder.

Conclusion

Le produit est très complet et demanderait un long développement. L'interface Web est certes un peu viellotte ( ce qui ne me gène en rien ) mais très bien faite. je réitère mon intérêt pour l'article suivant

jeudi, décembre 22 2011

Mise en place d'un dataguard sous Oracle 10g

Le dataguard, on disait standby database avant, permet de disposer d'une base de secours sur laquelle il est possible de basculer en cas d'arrêt de la base de production.

La gestion du dataguard comporte de très nombreuses fonctionnalités, j'ai voulu décrire la mise en place d'une configuration simple avec deux serveurs. Si l'un s'arrête, on bascule sur l'autre.

Le temps d'indisponibilité est faible. Attention un dataguard n'est pas une configuration RAC, il protège de la perte de données mais n'est pas une solution de haute disponibilité.

L'article est assez conséquent et se trouve sur le wiki de Silverlake via ce lien

Pour simuler l'environnement, je suis parti sur un serveur avec CentOS 5.7 et deux VM sous XEN

L'image ci-dessous ( honteusement pompée sur le site Oracle ) montre le principe du dataguard.

odg_arch.gif

J'ai apporté un soin particulier ( comme toujours ? ) à rendre ce billet le plus clair possible, tout retour est le bienvenu.

Linux et check disque au démarrage

Par défaut, la plupart des distributions Linux en poste client effectuent un check du disque au démarrage tout les x démarrage ( en fait il s'agit de tous les x montages ).

On parle de fréquence des contrôles d'intégrité.

Cette action est bonne dans le principe, toutefois avec maintenant des disques de plus de 1To quand ce n'est pas 2To le temps peut-être assez long. L'écart selon les distributions est variable, par exemple sous Ubuntu il est de 36. En clair tous les 36 démarrages -> check.

Cette durée est fixée par la commande tune2fs -c <n> <partition>

Par exemple si il n'existe qu'une partition "/" sous /dev/sda2 et que l'on souhaite un check tous les 50 demarrages

sudo tune2fs -c 50 /dev/sda2

La commande tune2fs accepte aussi une unité de temps, via l'option -i, par exemple en jours (d), semaines(w), mois(m)...

sudo tune2fs -i 2w /dev/sda2

Lance le check toutes les 2 semaines.

Il est possible de combiner les deux

sudo tune2fs -c 50 -i2w /dev/sda2

Toutes les 2 semaines ou tous les 50 démarrages.

Il est possible d'annuler ce fonctionnement ainsi

sudo tune2fs -c 0 /dev/sda2

Ceci montre une fois de plus l'intérêt de partitionné sous disque afin de definir des période de check différente et plus courtes...

La commande suivante donne des info complètes sur l'état de la partition

sudo tune2fs -l  /dev/sda2

Un très bon article ( distribution Ubuntu ) sur le sujet est disponible ici.

samedi, décembre 17 2011

PFILE ou SPFILE

La requête suivante permet de savoir si la base a été démarrée avec un pfile ou un spfile

select decode(count(*), 1, 'spfile', 'pfile' )
from v$spparameter
where rownum=1
and isspecified='TRUE';

samedi, décembre 3 2011

Retirer un mot en surbrillance dans VIM

Lors d'une recherche avec vim, le dernier mot recherché reste en surbrillance, comme dans l'exemple suivant où la recherche portait sur le mot RED

surbril-vim2.png

Pour retirer ceci, passer en mode commande et entrer la ligne suivante :

:set nohlsearch

La commande inverse est :

:set hlsearch

- page 1 de 7