Archives pour l'étiquette Ubuntu

Zabbix monitoring de disques sous Ubuntu 12.04 LTS The Precise Pangolin

Objectif :

Monitorer avec zabbix (1.8.11) l’utilisation faite des disques de serveur linux sous Ubuntu 12.04  LTS The Precise Pangolin. Ceci en utilisant la mécanique de sender / trapper de zabbix très économe en trafic réseau et qui limite la charge pour le zabbix server.

Zabbix_Sender :

Sur le GitHub zabbix-trapper vous trouverez

  1. Le script de crontab zabbix-trapper-cron à placer dans /etc/cron.d
  2. Le script de génération des valeurs diskio.trapper.sh à placer dans /usr/local/zabbix/plugins
  3. Le template (items, trigger, graph) zabbix à importer zabbix_Disk_template.xml
  4. Les template des screens zabbix_screens_export.xml
Screen Zabbix Disque avec % utilisation et nb ops/sec
Graph Zabbix Disque avec % utilisation et nb ops/sec

 

Particularité du monitoring du % d’utilisation IO

L’item custom.vfs.dev.io.ms enregistre le champs 11 de /proc/diskstats . Ce champs enregistre le nombre de Milliseconde passé chaque seconde que le disque passe faire des IO. Si le champs est à 1000 ms c’est que pendant 1 seconde il à passé 100% de son temps à réalisé des IO, donc qu’il n’est pas capable d’effectué plus de travail.

L’item custom.vfs.dev.io.ms est configuré avec un multiple de 0,1 ce qui revient à le diviser par 10. Ainsi 900ms/sec d’IO devient 90% d’utilisation des capacités de lecture écriture du disque.

Apparmor unbutu karmic mysql kernel error

J’ai souvent, toute les 5 minutes, une erreur kernel sur deux serveurs mysql qui tourne avec ubuntu karmic 9.10.

May 27 12:05:16 around-the-word-sql1 kernel: [8464095.444564] type=1503 audit(1274954716.320:31928): operation="truncate" info="Failed name lookup - deleted entry" error=-2 pid=3211 parent=8922 profile="/usr/sbin/mysqld" requested_mask="w::" denied_mask="w::" fsuid=109 ouid=109 name=2F746D702F6962384F4A4D336B202864656C6574656429

Après quelque recherche c’est visiblement un problème de kernel, un ticket est présent sur launchpad.net. Mon soucis c’est ces deux serveurs sont en 24/24 et je peux pas les rebooter.

J’ai constaté que Apparmor qui est en cause ne surveillait plus mysql sur ubuntu lucid 10.5. En outre le net était pleins de plainte sur le peu de souplesse d’Apparmor dans la surveillance du DataDir de mysql.

J’ai trouver la solution la doc ubuntu Debugging Apparmor.

/etc/init.d/apparmor stop  * Unloading AppArmor profiles    ...done.
touch /etc/apparmor.d/disable/usr.sbin.mysqld
apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld 
/etc/init.d/apparmor start  * Starting AppArmor profiles Skipping profile in /etc/apparmor.d/disable: usr.sbin.mysqld    ...done

.

Puppet story

Puppet 0.25 vs 0.24

Puppet Client 0.25 présent sur Ubuntu Lucid 10.4 n’est pas compatible avec un Puppet master en version 0.24 présent sur Ubuntu Karmic 9.4.

Le symptôme est le suivant : le puppet master semble ne jamais recevoir la demande de certificat. Coté client cela donne

sudo puppetd --waitforcert 60 --test info: Creating a new SSL key for h3-desktop warning: peer certificate won't be verified in this SSL session warning: peer certificate won't be verified in this SSL session info: Creating a new SSL certificate request for h3-desktop warning: peer certificate won't be verified in this SSL session warning: peer certificate won't be verified in this SSL session warning: peer certificate won't be verified in this SSL session warning: peer certificate won't be verified in this SSL session notice: Did not receive certificate warning: peer certificate won't be verified in this SSL session notice: Did not receive certificate

Sur le serveur cela donne

sudo puppetca --list No certificates to sign

L’avertissement était clair

Dans la Release Notes l’avertissement était clair :

Newer clients may not work with older servers and vice-versa. Where possible backwards-compatibility is maintained but it’s not always totally successful. The best approach is to ensure your master and clients are the same version. When upgrading it is also recommended that you upgrade your master first.

Solution, backport

Dans /etc/apt/source.list on ajoute

deb http://ubuntu.mirror.rafal.ca/ubuntu/ karmic-security main restricted deb-src
http://ubuntu.mirror.rafal.ca/ubuntu/ karmic-security main restricted deb
http://ubuntu.mirror.rafal.ca/ubuntu/ karmic-security universe deb-src
http://ubuntu.mirror.rafal.ca/ubuntu/ karmic-security universe deb
http://ubuntu.mirror.rafal.ca/ubuntu/ karmic-security multiverse deb-src
http://ubuntu.mirror.rafal.ca/ubuntu/ karmic-security multiverse

Et puis zou

apt-get update
aptitude -t karmic install puppet

Juste faire attention à pas tout péter à la prochaine mise à jour

Script de création d’une Amazone Machine Image (ami) instance root

Script de création d’un Amazone Machine Image (ami) instance root[1] depuis l’instance de référence utilisé comme modèle pour construire l’image en question.

Dans mon cas j’utilise un type hardware m1.large avec comme départ une image de Ubuntu Karmic 9.10 créé par alestic.com.. Une fois cette instance démarrée je l’ai modifier et updaté en fonction des mes besoins. Souhaitant garder comme master de départ cette instance et la dupliquer à volonté j’ai créé décidé et créé une AMI.

Pour ce faire il faut installer les paquets suivant :

apt-get <span style="color: #c20cb9; font-weight: bold;">install</span> ec2-ami-tools apt-get <span style="color: #c20cb9; font-weight: bold;">install</span> ec2-api-tools

Il est nécéssaire en outre de disposer d’un stockage Amazon Simple Stockage Service dit bucket S3.

Je considère que disposer déjà d’un compte AWS et des éléments d’identification et authentification lier à ce compte : access key, secret key, certificat x509 etc..

Le script en question de fait que reprendre les commandes ec2 expliqué dans les documentations officielles AWS.

<span style="color: #808080; font-style: italic;">#!/bin/sh</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">bucket=</span>ami-stockage
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">prefix=</span>k9-karmic-OsBase
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">AWS_USER_ID=</span><span style="color: #000000;">9452</span><span style="color: #000000;">-1810</span><span style="color: #000000;">-7536</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">AWS_ACCESS_KEY_ID=</span>TV542X3ONAAKITV54YCTN
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">AWS_SECRET_ACCESS_KEY=</span>dwYjHg2msv8rQEjmSBDPFP4m1f4R31f3rCJ9bI
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">[</span> $<span style="color: #7a0874; font-weight: bold;">(</span><span style="color: #c20cb9; font-weight: bold;">uname</span> -m<span style="color: #7a0874; font-weight: bold;">)</span> = <span style="color: #ff0000;">'x86_64'</span> <span style="color: #7a0874; font-weight: bold;">]</span>;
<span style="color: #000000; font-weight: bold;">then</span>   <span style="color: #007800;">arch=</span>x86_64
<span style="color: #000000; font-weight: bold;">else</span>   <span style="color: #007800;">arch=</span>i386
<span style="color: #000000; font-weight: bold;">fi</span>   <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>ec2-bundle-vol -r <span style="color: #007800;">$arch</span> -d <span style="color: #000000; font-weight: bold;">/</span>mnt -p <span style="color: #007800;">$prefix</span> -u <span style="color: #007800;">$AWS_USER_ID</span> -k <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>pk-<span style="color: #000000; font-weight: bold;">*</span>.pem \     -c <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>cert-<span style="color: #000000; font-weight: bold;">*</span>.pem -s <span style="color: #000000;">10240</span>  -e <span style="color: #000000; font-weight: bold;">/</span>mnt,<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>ubuntu<span style="color: #000000; font-weight: bold;">/</span>.<span style="color: #c20cb9; font-weight: bold;">ssh</span>    <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>ec2-upload-bundle -b <span style="color: #007800;">$bucket</span> -m <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$prefix</span>.manifest.xml \     -a <span style="color: #007800;">$AWS_ACCESS_KEY_ID</span> -s <span style="color: #007800;">$AWS_SECRET_ACCESS_KEY</span>   <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>ec2-register -K <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>pk-<span style="color: #000000; font-weight: bold;">*</span>.pem -C <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>cert-<span style="color: #000000; font-weight: bold;">*</span>.pem <span style="color: #007800;">$bucket</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$prefix</span>.manifest.xml

ec2-bundle-vol construit les paquets de l’image AMI tout en excluant ce celle ci le contenue du répertoire /mnt (avec l’option -e ) ou justement sont stocker provisoirement les paquets en question. J’exclue également /home/ubuntu/.ssh préférent utilisé le compte root.

ec2-upload-bundle upload les paquets sur le bucket S3

ec2-register déclare dans votre compte l’ami, qui reste privée, afin qu’elle soit disponible pour créé de nouvelle instance.

Notes

[1] c’est à dire avec / sur le disque local éphémère