mercredi 4 novembre 2009
Utilisation des variables dans zabbix : "flexible user parameters"
J'ai découvert il y a très peu de temps qu'on pouvait utiliser des variables dans le fichier de configuration de l'agent zabbix. Avant cette découverte, je mettais en place un "User parameter" par test et ensuite au niveau de l'interface web, j'utilisais autant de clés qu'il y avait de tests définis dans le fichier de configuration. Cela donnait un fichier de ce type :
UserParameter=testPort1, script IP1 Port1
UserParameter=testPort2, script IP2 Port2
Or pour ces deux tests, j'utilise le même script, seuls les paramètres passés en entrée du script changent.
C'est là que les variables apparaissent ! Maintenant dans le fichier de configuration, j'ai quelque chose de ce genre :
UserParameter=testPort[*], script $1 $2
Et dans l'interface web, vous définissez autant d'items que vous avez d'URL à tester. Vous définissez votre item avec les paramètres suivants (partie key) :
Item 1 :
testPort[localhost,8080]
Item 2 :
testPort[localhost,9000]
Item3 :
testPort[localhost,3306]
C'est beaucoup plus rapide. Vous pouvez de ce fait mettre en place une multitude de tests génériques (Jonas, Oracle, MySQL, pages web, ...) sans modifier votre fichier de configuration.
Si vous souhaitez pousser la variabilisation à fond, vous pouvez mettre en place ce type de test dans le fichier de configuration de l'agent :
UserParameter=executeScript[*], $1 $2 $3
Et dans l'interface web :
key : executeScript[/cheminVersMonScript/Script.ksh,localhost,9000]
Vous n'aurez plus besoin d'indiquer les noms des scripts dans les fichiers de configuration des agents.
Pour retrouver toutes ces informations, allez à la page 120 du manuel zabbix, version 1.6.
lundi 2 novembre 2009
Copenhague 2009, ça vous dit quelque chose ?
mardi 27 octobre 2009
Récupérer la mémoire totale sous Solaris avec la commande prtconf
Quand je lance un vmstat, je n'ai pas accès à la mémoire totale sous Solaris. Je suis tombée sur un site qui m'a indiqué comment trouver cette précieuse information. Voilà ce que j'obtiens sous un solaris 10 :
bash-3.00$ prtconf | grep Memory
Memory size: 57344 Megabytes
mardi 20 octobre 2009
Equivalent du wget sous solaris 10
Je souhaite tester l'accès à certaines pages web via l'outil très célèbre wget. J'utilise d'habitude la commande wget sous Linux. Et là, je suis surprise de voir que cela ne fonctionne pas sous Solaris 10. En effet, j'ai ce message d'erreur :
bash-3.00$ wget http://localhost:8080/
bash: wget: command not found
En fait, il faut indiquer ceci pour que ça fonctionne :
bash-3.00$ /usr/sfw/bin/wget http://localhost:8080/
--17:27:26-- http://localhost:8080/
=> `index.html'
Connecting to localhost:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
[ <=> ] 10,737 --.--K/s
17:27:26 (85.26 MB/s) - `index.html' saved [10737]
Vous pouvez maintenant utiliser la commande wget sous Solaris 10 avec toutes les options que j'avais citées dans un précédent post.
dimanche 18 octobre 2009
Saas, ça veut dire quoi au juste ?
Aujourd'hui, j'ai appris un nouveau terme, très utilisé dans le monde de l'informatique en ce moment : Saas. C'est sur le site de l'APEC que j'ai enfin su ce que voulait dire cette abréviation : "S" pour Software, a pour "as", a pour "a" et "s" pour "service". En effet, c'est un terme anglais, alors on assemble le tout et cela donne "Software as a service" ou encore "logiciel en tant que service".
Quelles en sont les principales utilisations ?
D'après le site de wikipedia : Les principales applications actuelles de ce modèle sont la relation client (CRM), la vidéo conférence, la gestion des ressources humaines, les communications unifiées, le travail collaboratif, les courriels.
Pourquoi choisir Saas ?
Les entreprises choisissent ce système car il est moins coûteux, plus flexible étant donné que les entreprises paient non pas une licence mais une location en fonction du nombre d'utilisateurs.
Qui propose Saas ?
Pour cela, j'effectue une petite recherche sur mes flux Google Reader et je tombe sur 32 articles qui évoquent ce système. J'ai continué ensuite mes recherches sur le web et j'ai trouvé un certain nombre de sociétés positionnés sur cette "niche" :
- Talend
- Symantec
- Saleforces.com
- McAfee
- etc...
Saas, secteur d'avenir pour les cadres ?
Oui, répond l'APEC, je vous invite à lire leur article.
Et vous, connaissiez-vous le Saas ?
vendredi 9 octobre 2009
Script perl : Tester une connexion via un telnet en perl
J'ai trouvé ce script sur un forum. Son but est d'effectuer un telnet en prenant comme paramètre une IP et un port. Ce qui est génial c'est qu'il gère les timeout, alors que si vous faîtes le test en ligne de commande vous pouvez attendre plusieurs minutes avant d'avoir une réponse.
Ce qui est intéressant c'est qu'en gérant les timeout, ce script perl peut être intégré dans un outil de monitoring comme zabbix. En effet, le serveur zabbix a un timeout de 30 secondes maximum, ce qui implique un problème de récupération des données sur le master.
Ci-dessous le script en question :
#!/bin/perl
use Net::Ping;
my ($host,$port)=(shift,shift);
my $timeout=5;
$p = Net::Ping->new("tcp", $timeout);
$p->{port_num} = $port;
$ret=$p->ping($host);
# 0=ok, 1=non joignable
undef($p);
exit($ret==0);
Appel du script :
testTelnet.pl IP Port
mercredi 7 octobre 2009
Définir une variable d'environnement sous Windows
Alors quelle est la procédure à suivre pour définir une variable d'environnement sous Windows ?
1. Vous ouvrez le panneau de configuration
2. Vous choisissez l'icône système
3. Vous cliquez sur l'onglet avancé
4. Vous cliquez sur le bouton variables d'environnement
5. Au niveau des variables système, vous cliquez sur Nouveau
6. Saisissez la variable à définir, exemple : JAVA_HOME pour le nom de la variable et pour la valeur le chemin vers le répertoire
Si vous voulez juste faire un test, vous pouvez ouvrir une invite de commandes et saisir directement la valeur de la variable d'environnement :
1. cliquez sur Démarrer
2. cliquez sur Exécuter
3. Tapez cmd
4. Exemple avec la variable JAVA_HOME
set JAVA_HOME=..........
5. Vérifiez que la variable a bien été prise en compte :
echo %JAVA_HOME% doit vous afficher la valeur
N'étant pas une adepte de Windows, j'ai demandé de l'aide à mon collègue Ludovic ;)
Commande tail sous Solaris, exemple d'une différence avec Linux
Vous pensez sûrement que la commande tail est identique quelque soit l'environnement ? Et bien, non ce n'est pas le cas.
Si vous avez l'erreur suivante sous Solaris :
bash-3.00$ tail -n 1 monfichier.log
usage: tail [+/-[n][lbc][f]] [file]
tail [+/-[n][l][r|f]] [file]
Vous pouvez la corriger tout simplement en la remplaçant par la commande suivante :
bash-3.00$ tail -1 monfichier.log
En résumé, remplacez tail -n nombre_lignes monfichier par tail -nombre de lignes monfichier
mardi 6 octobre 2009
error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory
Je souhaite exécuter une requête SQL dans une base de données Oracle, en utilisant sqlplus. Ma requête est dans un script ksh que je lance en crontab toutes les 10 minutes. Mon script ne fonctionne pas, pourquoi ?
J'ai cette erreur :
error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory
C'est une erreur classique, facile à contourner. En effet, dans le script ksh, il faut redéfinir toutes les variables nécessaires pour Oracle, à savoir :
- ORACLE_HOME
- ORACLE_SID
- LD_LIBRARY_PATH
- ORACLE_USER
- ORA_PASSWD
- NLS_LANG
- DATE_FORMAT
- PATH
- etc...
Puis vous devez intégrer la ligne suivante dans votre script :
export PATH NLS_LANG ORA_USER ORACLE_SID ORA_PASSWD LD_LIBRARY_PATH
mardi 29 septembre 2009
Informations sur les tablespaces Oracle en un script
La question du jour est la suivante : comment savoir tout ce qu'il y a à savoir sur les tablespaces d'une base de données Oracle ?
Si comme moi, vous êtes plus MySQL qu'Oracle, plus Linux que Windows, ce script SQL est pour vous !
Vous devez d'abord vous connecter à la base de données Oracle avec sqlplus puis à lancer la requête suivante :
set echo off
set feedback off
set verify off
set linesize 512
set term off
COLUMN block_size NOPRINT new_value block_size
SELECT
value block_size
FROM
v$parameter
WHERE
name='db_block_size';
set term on
prompt ------------------------------
prompt - Infos sur les tablespaces --
prompt ------------------------------
col Tablespace_name Heading 'Tablespace'
col Megs_Alloc Heading 'Mo alloués'
col Megs_Free Heading 'Mo libres'
col Megs_Used Heading 'Mo utilisés'
col Pct_Free Heading 'Pct Free'
col Pct_Used Heading 'Pct Used'
col Init_Ext Heading 'Init Ext'
col Next_Ext Heading 'Next Ext'
col Min_Ext Heading 'Min Ext'
col Max_Ext Heading 'Max Ext'
col Num_Segs Heading 'Nbre Segments'
col Num_Exts Heading 'Nbre Extents'
SELECT
c.tablespace_name,
round(a.bytes/1048576) Megs_Alloc,
round(b.bytes/1048576) Megs_Free,
round((a.bytes-b.bytes)/1048576) Megs_Used,
round(b.bytes/a.bytes * 100) Pct_Free,
round((a.bytes-b.bytes)/a.bytes * 100) Pct_Used,
round(c.initial_extent/1048576) Init_Ext,
round(c.next_extent/1048576) Next_Ext,
round(a.minbytes/1048576) Min_Ext,
round(a.maxbytes/1048576) Max_Ext,
nvl(d.num_segs,0) Num_segs,
nvl(d.num_exts,0) Num_Exts
FROM
( SELECT
tablespace_name,
sum(a.bytes) bytes,
min(a.bytes) minbytes,
max(a.bytes) maxbytes
FROM
sys.dba_data_files a
GROUP BY tablespace_name) a,
( SELECT
a.tablespace_name,
nvl(sum(b.bytes),0) bytes
FROM
sys.dba_data_files a,
sys.dba_free_space b
WHERE
a.tablespace_name = b.tablespace_name (+)
AND
a.file_id = b.file_id (+)
GROUP BY
a.tablespace_name) b,
sys.dba_tablespaces c,
( SELECT
tablespace_name,
count(distinct segment_name) num_segs,
count(extent_id) num_exts
FROM
sys.dba_extents
GROUP BY
tablespace_name) d
WHERE
a.tablespace_name = b.tablespace_name(+)
AND
a.tablespace_name = c.tablespace_name
AND
a.tablespace_name = d.tablespace_name(+)
ORDER BY
c.tablespace_name;
Pour avoir quelque chose de plus propre, vous pouvez récupérer le résultat de la requête dans un fichier. Il vous suffit d'ajouter la commande :
spool votreFichier avant la requête SQL
puis :
spool off
exit
après la requête SQL

