Inscription des machines et instances dans Enterprise Manager Grid Control

arkzoyd_featuredimage2

Les équipes scindées et structurées dans les directions informatiques, de nombreux projets parallèles nécessitants une foison d’environnements de développement, d’intégration et bien d’autres causes sont de nombreux facteurs de trous de communication.

Combien de DBA sont amenés à intervenir sur des plates-formes créées par une équipe de virtualisation ? Combien de machines virtuelles ont pu être créées via automatisation sans intégration dans un système de supervision ?

Dans cet article, je vous propose donc une méthode d’enregistrement de vos environnements vers une console centralisée, à savoir Enterprise Manager Grid Control 11g.

Le principe est très simple, plutôt que d’attendre les problèmes pour enfin « monitorer » une base de données, c’est à cette dernière que va être fourni le privilège de se faire connaître.

Les étapes sont, là encore, simples. Prenons un exemple en cours de mise en place chez un client d’Easyteam. Une mise en place d’un système de Private Cloud a été décidé. Ce système va nous permettre de créer des environnements de développement, d’usines et de pré-production de façon automatisée :

  1. Une VM va être créée à partir d’un Master contenant une installation du RDBMS Oracle 11g R2.
  2. Un script de clonage sera lancé :
    • L’installation de l’agent Grid Control va être effectuée de façon automatique.
    • Cet agent se fera connaître de la console centrale Grid Control.
    • L’instance sera créée tout en s’enregistrant auprès de Grid Control.
  3. Nos DBA vont donc voir apparaître dans Grid Control un nouvel hôte, le listener et la base de données créée.

Le contexte étant maintenant posé, passons à la partie un peu plus technique.

En nous penchant sur la documentation de Grid Control, nous pouvons nous apercevoir qu’Oracle nous offre plusieurs possibilités pour installer notre Agent Grid Control.

Nous n’allons utiliser que la méthode de téléchargement de l’agent afin de ne pas rendre notre Master trop volumineux. L’agent Grid Control est disponible directement sur notre Grid Control, en HTTP ou HTTPS. Nous allons donc le récupérer…

[oracle@dbtest ~]$ wget https://grid.lille.easyteam.fr:4900/agent_download/11.1.0.1.0/linux/agentDownload.linux --no-check-certificate

 Rendons par la-même ce script exécutable :

[oracle@dbtest ~]$ chmod u+x agentDownload.linux

 Et pour finir, lançons ce script magique :

[oracle@dbtest ~]$ ./agentDownload.linux -b /u01/app/oracle/product/11.1.0/agent -m grid.lille.easyteam.fr -r 4900 -y -N

Comme vous pouvez le voir, de beaux arguments sont apparus. En voici l’explication (provenant de la documentation de GC 11g) :

Option Optional/Mandatory Description
-b Mandatory Specify the full path to the installation base directory where you want to install the Management Agent.For example, /scratch/OracleHomes/
-m Mandatory(Only if OMS host is not specified in the response file) Specify the host name where OMS is running. This is to download the Management Agent software.For example, software.server.com
-r Mandatory Specify the port number of the OMS from where the Management Agent software needs to be downloaded.
-N Optional Use this option only if you DO NOT want to be prompted for Management Agent registration password
-y Optional Indicates that you want to decline the security updates.


Le fait de lancer ce script va de nouveau déclencher le téléchargement du fichier .JAR qui sera lancé pour l’installation de l’agent.

Attention : Ce Jar dépend de votre environnement. Veillez à installer sur le serveur Grid Control les agents correspondant aux architectures disponibles dans votre SI (32/64 bits, Linux/AIX/UX/Windows…).

Une fois l’installation des binaires de l’agent terminée, nous allons maintenant pouvoir lancer la communication entre notre VM et Grid Control.
Ayant choisi demander le mot de passe de façon interactive lors de l’installation (options -N), nous allons sécuriser notre communication agent/grid :

[oracle@dbtest ~]$ /u01/app/oracle/product/11.1.0/agent/agent11g/bin/emctl secure agent ToTo!234  Oracle Enterprise Manager 11g Release 1 Grid Control 11.1.0.1.0  Copyright (c) 1996, 2010 Oracle Corporation. All rights reserved. Agent is already stopped... Done. Securing agent... Started. Securing agent... Successful.

Maintenant notre sécurisation effectuée, testons l’envoi des fichiers XML de l’agent vers Grid Control :

[oracle@dbtest ~]$ /u01/app/oracle/product/11.1.0/agent/agent11g/bin/emctl upload agent
Oracle Enterprise Manager 11g Release 1 Grid Control 11.1.0.1.0
Copyright (c) 1996, 2010 Oracle Corporation. All rights reserved.
---------------------------------------------------------------
EMD upload completed successfully

Pour finir, nous allons utiliser DBCA pour effectuer créer notre instance et l’enregistrer auprès de Grid Control :

[oracle@dbtest ~]$ /u01/app/oracle/product/11.1.0/db_1/bin/dbca -silent 
-createDatabase 
-memoryPercentage 66 
-automaticMemoryManagement True 
-templateName General_Purpose.dbc 
-gdbname dbtest.lille.easyteam.fr 
-sid dbtest 
-characterset AL32UTF8 
-nationalCharacterSet AL32UTF8 
-sysPassword ToTo!234 
-systemPassword ToTo!234 
-emConfiguration CENTRAL 
-dbsnmpPassword ToTo!234 
-sysmanPassword ToTo!234 
-centralAgent /u01/app/oracle/product/11.1.0/agent/agent11g

Les options utilisées sont là classiques, si ce n’est l’apparition de la partie « -emConfiguration ». Cette dernière nous permet de préciser le type de monitoring, les mots de passe DBSNMP et SYSMAN et pour finir le « home » de l’agent que nous avons installé précédemment et qui connaît les informations nécessaires pour la connexion à notre Grid Control.

Si nous allons maintenant dans Grid Control, nous pouvons désormais voir notre hôte :

Ainsi que notre base de données :

Pour finir, voici le script résumant cet article :

#!/bin/bash
#---------------------------------------------------------------------------
# Script d'installation automatique de la base suite au déploiement de
# VM clonées
# (C) Easyteam
#---------------------------------------------------------------------------
# Utilisation :
#	<nom du script>.sh <param1> <param2>
# 	où :
#		 : Global Database Name
#		 : Sys* Password
#---------------------------------------------------------------------------
if [ $USER != "oracle" ]; then
	echo "Ce script doit être lancé par l'utilisateur oracle."
	exit 1
fi

# Recuperation des parametres
p_gdbname=$1
db_password=$2
install_type=$3

# Definition des variables locales
ORACLE_SID=`echo $p_gdbname | cut -d. -f1`
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db
AGENT_HOME=/u01/app/oracle/product/11.1.0/agent
DB_OWNER="oracle"
GD_PASS="motdepasse"
OMS_HOST="grid.lille.easyteam.fr"
OMS_PORT="4900"
OMS_URL="http://$OMS_HOST:$OMS_PORT/agent_download/11.1.0.1.0/linux/agentDownload.linux --no-check-certificate"
v_template="General_Purpose.dbc"
v_charset="AL32UTF8"
v_ncharset="AL32UTF8"

## Installation de l'agent par récupération depuis la console
wget $OMS_URL
chmod u+x agentDownload.linux
if [ -e agentDownload.linux ]; then
	./agentDownload.linux -b $AGENT_HOME -m $OMS_HOST -r $OMS_PORT -y -N
fi

## Sécurisation et enregistrement
$AGENT_HOME/agent11g/bin/emctl secure agent $GD_PASS
$AGENT_HOME/agent11g/bin/emctl upload agent

## Lancement de dbca pour la creation de la base de données
$ORACLE_HOME/bin/dbca -silent -createDatabase -memoryPercentage 66 -automaticMemoryManagement true -templateName $v_template -gdbname $p_gdbname -sid $ORACLE_SID -characterset $v_charset -nationalCharacterSet $v_ncharset -sysPassword $db_password -systemPassword $db_password -emConfiguration CENTRAL -dbsnmpPassword $GC_PASS -sysmanPassword $GC_PASS centralAgent $AGENT_HOME

## Lancement de root.sh pour terminer l'installation
echo "$AGENT_HOME/agent11g/root.sh" >> /tmp/root_actions.sh
echo "------------------------------------------------"
echo "Veuillez entrer le mot de passe root :"
su - root -c "bash $AGENT_HOME/agent11g/root.sh"

rm -rf ./agentDownload*

J’espère par cet article vous avoir permis de gagner du temps sur vos déploiements.

Bonne continuation !

Pascal Graziani

About Pascal Graziani

Pascal Graziani has written 8 post in this blog.