<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Karlesnine</title>
	<atom:link href="http://www.karlesnine.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.karlesnine.com</link>
	<description>Run linux since 1994</description>
	<lastBuildDate>Fri, 11 May 2012 10:30:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Zabbix monitoring de disques sous Ubuntu 12.04  LTS The Precise Pangolin</title>
		<link>http://www.karlesnine.com/2012/05/11/zabbix-monitoring-de-disques-sous-ubuntu-12-04-lts-the-precise-pangolin/</link>
		<comments>http://www.karlesnine.com/2012/05/11/zabbix-monitoring-de-disques-sous-ubuntu-12-04-lts-the-precise-pangolin/#comments</comments>
		<pubDate>Fri, 11 May 2012 10:30:17 +0000</pubDate>
		<dc:creator>karles</dc:creator>
				<category><![CDATA[Technologic]]></category>
		<category><![CDATA[diskstats]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[zabbix]]></category>

		<guid isPermaLink="false">http://www.karlesnine.com/?p=1000</guid>
		<description><![CDATA[Objectif : Monitorer avec zabbix (1.8.11) l&#8217;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 Le script de crontab zabbix-trapper-cron <a href='http://www.karlesnine.com/2012/05/11/zabbix-monitoring-de-disques-sous-ubuntu-12-04-lts-the-precise-pangolin/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<h2>Objectif :</h2>
<p>Monitorer avec zabbix (1.8.11) l&#8217;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.</p>
<h2>Zabbix_Sender :</h2>
<p>Sur le <a title="zabbix-trapper-disk" href="https://github.com/karlesnine/zabbix-trapper">GitHub zabbix-trapper</a> vous trouverez</p>
<ol>
<li>Le script de crontab <em>zabbix-trapper-cron</em> à placer dans <em>/etc/cron.d</em></li>
<li>Le script de génération des valeurs <em>diskio.trapper.s</em>h à placer dans <em>/usr/local/zabbix/plugins</em></li>
<li>Le template (items, trigger, graph) zabbix à importer <em>zabbix_Disk_template.xml</em></li>
<li>Les template des screens <em>zabbix_screens_export.xml</em></li>
</ol>
<div id="attachment_1002" class="wp-caption alignnone" style="width: 1049px"><a href="http://www.karlesnine.com/2012/05/11/zabbix-monitoring-de-disques-sous-ubuntu-12-04-lts-the-precise-pangolin/capture-decran-2012-05-11-a-12-15-15/" rel="attachment wp-att-1002"><img class="size-full wp-image-1002" title="Screen Zabbix Disk" src="http://www.karlesnine.com/wp-content/uploads/2012/05/Capture-d’écran-2012-05-11-à-12.15.15.png" alt="Screen Zabbix Disque avec % utilisation et nb ops/sec" width="1039" height="585" /></a><p class="wp-caption-text">Graph Zabbix Disque avec % utilisation et nb ops/sec</p></div>
<p>&nbsp;</p>
<h2>Particularité du monitoring du % d&#8217;utilisation IO</h2>
<p>L&#8217;item <strong>custom.vfs.dev.io.ms</strong> enregistre le champs 11 de <a title="I/O statistics fields" href="http://www.kernel.org/doc/Documentation/iostats.txt">/proc/diskstats</a> . Ce champs enregistre le nombre de Milliseconde passé chaque seconde que le disque passe faire des IO. Si le champs est à 1000 ms c&#8217;est que pendant 1 seconde il à passé 100% de son temps à réalisé des IO, donc qu&#8217;il n&#8217;est pas capable d&#8217;effectué plus de travail.</p>
<p>L&#8217;item <strong>custom.vfs.dev.io.ms</strong> est configuré avec un multiple de 0,1 ce qui revient à le diviser par 10. Ainsi 900ms/sec d&#8217;IO devient 90% d&#8217;utilisation des capacités de lecture écriture du disque.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.karlesnine.com/2012/05/11/zabbix-monitoring-de-disques-sous-ubuntu-12-04-lts-the-precise-pangolin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zabbix 1.8.11 sur Ubuntu 12.04 avec partitionnement sql des tables</title>
		<link>http://www.karlesnine.com/2012/04/25/zabbix-1-8-11-sur-ubuntu-12-04-avec-partitionnement-sql-des-tables/</link>
		<comments>http://www.karlesnine.com/2012/04/25/zabbix-1-8-11-sur-ubuntu-12-04-avec-partitionnement-sql-des-tables/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 12:10:45 +0000</pubDate>
		<dc:creator>karles</dc:creator>
				<category><![CDATA[Technologic]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[apc]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[Mod_deflate]]></category>
		<category><![CDATA[Mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[zabbix]]></category>

		<guid isPermaLink="false">http://www.karlesnine.com/?p=938</guid>
		<description><![CDATA[Architecture Zabbix 1.8.11 de deux serveurs sous Ubuntu 12.04 &#160; Dans un environnement cloud amazon comment configurer un zabbix server avec le frontend php et un serveur mysql 5.5 avec le partitionnement des tables sur une ubuntu 12.04 afin d&#8217;avoir une architecture scalable et taillée pour de très forte charge. En effet les problèmes de <a href='http://www.karlesnine.com/2012/04/25/zabbix-1-8-11-sur-ubuntu-12-04-avec-partitionnement-sql-des-tables/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<h1>Architecture Zabbix 1.8.11 de deux serveurs sous Ubuntu 12.04</h1>
<p>&nbsp;</p>
<p><strong>Dans un environnement cloud amazon comment configurer un zabbix server avec le frontend php et un serveur mysql 5.5 avec le partitionnement des tables sur une ubuntu 12.04 afin d&#8217;avoir une architecture scalable et taillée pour de très forte charge. En effet les problèmes de performance de Zabbix sont liés à la base de données. Cela devient  visible seulement quand vous avez des milliers d&#8217;items. Cela conduit à devoir gérer des tables énormes et il  deviens impossible de faire le ménage dans l&#8217;historique (<a title="zabbix housekeeper" href="http://zabbixzone.com/zabbix/history-tables-housekeeper/" target="_blank">Housekeeper</a>) ou des sauvegarde, d&#8217;ou le partitionnement de table en solution.</strong></p>
<p>&nbsp;</p>
<h2>A Lire avant tout :</h2>
<p style="padding-left: 30px;"><a title="Cas zabbix Iscool" href="http://www.zabbix.com/forum/showthread.php?t=22090" target="_blank">Cas Iscool Entertainement</a><br />
<a title="Partitionning Table for Zabbix" href="http://zabbixzone.com/zabbix/partitioning-tables/" target="_blank">Optimisation partitioning-tables</a><br />
<a title="Procédures stockées mysql pour tables mensuelles zabbix" href="http://pastebin.com/nY8WG9Fr" target="_blank">Procédures Mysql stockée pour tables mensuelles</a><br />
<a title="Tips Mysql pour Zabbix" href="http://zabbixzone.com/zabbix/mysql-performance-tips-for-zabbix/" target="_blank">Tips Mysql pour zabbix</a><br />
<a title="Architecture Zabbix distribuée et scalable" href="http://www.zabbix.com/documentation/1.8/manual/distributed_monitoring" target="_blank">Architecture Zabbix distribuée et scalable</a></p>
<h2></h2>
<p>&nbsp;</p>
<h2>Notice</h2>
<p>Ceci n&#8217;est que le copier coller de notes de travail et en aucun cas une procédure à suivre au pied de la lettre en copiant collant.</p>
<p>&nbsp;</p>
<h2>Security group</h2>
<p>Créer un security group monitor et les règles de sécurité.</p>
<pre class="wp-code-highlight prettyprint">ec2-add-group --region eu-west-1 Monitor l -d &quot;Monitor&quot;
ec2-authorize Monitor -P tcp -p 22 -s 0.0.0.0/0
ec2-authorize Monitor -P tcp -p 3306 -u 727387230542 -o &quot;Monitor&quot;
ec2-authorize Monitor -P tcp -p 10050 -u 727387230542 -o &quot;Monitor&quot;
ec2-authorize Monitor -P udp -p 10050 -u 727387230542 -o &quot;Monitor&quot;
ec2-authorize Monitor -P tcp -p 80 -u 727387230542 -o &quot;Monitor&quot;</pre>
<p>Verifier le résultat de la configuration du security group.</p>
<pre class="wp-code-highlight prettyprint">ec2-describe-group Monitor
GROUP   sg-907282e6     727387230542    Monitor Monitor
PERMISSION      727387230542    Monitor ALLOWS  tcp     22      22      FROM    CIDR    0.0.0.0/0       ingress
PERMISSION      727387230542    Monitor ALLOWS  tcp     3306    3306    FROM    USER    727387230542    NAME Monitor    ID sg-907282e6  ingress
PERMISSION      727387230542    Monitor ALLOWS  tcp     10050   10050   FROM    USER    727387230542    NAME Monitor    ID sg-907282e6  ingress
PERMISSION      727387230542    Monitor ALLOWS  udp     10050   10050   FROM    USER    727387230542    NAME Monitor    ID sg-907282e6  ingress
PERMISSION      727387230542    Monitor ALLOWS  tcp     80      80      FROM    CIDR    0.0.0.0/0       ingress</pre>
<p>&nbsp;</p>
<h2>Mysql</h2>
<p>Lancer une instance m1.large avec un maximum de disque éphémère.</p>
<pre class="wp-code-highlight prettyprint">ec2-run-instances ami-094c666d -k infra-live -g Monitor -b &quot;sdb=ephemeral0&quot; -b &quot;sdc=ephemeral1&quot; -b &quot;sdd=ephemeral2&quot; -b &quot;sde=ephemeral3&quot; -t m1.large -z eu-west-1b -d hostname=monitorweb1</pre>
<p>Vérifier le résultat du lancement d&#8217;instance</p>
<pre class="wp-code-highlight prettyprint">ec2-describe-instances i-abda3ce2
RESERVATION     r-a2da48eb      727387230542    Monitor
INSTANCE        i-abda3ce2      ami-094c666d    ec2-176-34-201-131.eu-west-1.compute.amazonaws.com      ip-10-51-45-30.eu-west-1.compute.internal       running infra-live      0               m1.large 2012-04-16T15:18:19+0000        eu-west-1b      aki-62695816                    monitoring-disabled     176.34.201.130  10.51.45.30                     ebs                             paravirtual      xen             sg-907282e6     default
BLOCKDEVICE     /dev/sda1       vol-be4aeed6    2012-04-16T15:18:34.000Z        true
TAG     instance        i-abda3ce2      Name    monitor-sql1</pre>
<p>Ajouter un tag name à cette instance</p>
<pre class="wp-code-highlight prettyprint">ec2-create-tags i-abda3ce2 --tag Name=monitorweb1</pre>
<p>Logger vous sur l&#8217;instance et installer Mysql 5.5 qui est disponible dans les dépôts ubuntu 12.04 . Bien noté l&#8217;ID et le mots de passe du super-administrateur mysql</p>
<pre class="wp-code-highlight prettyprint">apt-get install mysq-server maatkit</pre>
<p>Modifier l&#8217;installation de Mysql</p>
<pre class="wp-code-highlight prettyprint">/etc/init.d/mysql stop
cd /mnt/
rm -r lost+found/
mkdir mysql-bin
chown mysql.mysql mysql-bin/</pre>
<p>Effacer la base mysql par defaut</p>
<pre class="wp-code-highlight prettyprint">cd /var/lib/mysql
rm -r *</pre>
<p>Reconfigurer */etc/fstab* pour avoir /var/lib/mysql sur le disque non utilisé */dev/xvdc*</p>
<pre class="wp-code-highlight prettyprint">LABEL=cloudimg-rootfs	/	 ext4	defaults	0 0
/dev/xvdb	/mnt	auto	rw,suid,dev,exec,auto,nouser,async,noatime,nodiratime	0	2
/dev/xvdc	/var/lib/mysql	auto	rw,suid,dev,exec,auto,nouser,async,noatime,nodiratime	0	2</pre>
<p>Monter le filesytem</p>
<pre class="wp-code-highlight prettyprint">mount -a</pre>
<p>Réinstaller la DB par défaut de Mysql</p>
<pre class="wp-code-highlight prettyprint">cd /var/lib/mysql/
mysql_install_db</pre>
<p>Configurer mysql avec deux fichiers:<br />
Le premier */etc/mysql/conf.d/zabbix.cnf* avec la configuration de Mysql standalone server spéciale m1.large</p>
<pre class="wp-code-highlight prettyprint">[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket          = /var/run/mysqld/mysqld.sock
nice            = 0

[mysqld]
user            = mysql
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr

skip-external-locking

# network binding
bind-address = 0.0.0.0
skip-name-resolve

# charsets
# Deprecated default-character-set=utf8
# Deprecated default-collation=utf8
collation_server=utf8_general_ci
character_set_server=utf8
skip-character-set-client-handshake

# paths
datadir                         = /var/lib/mysql
tmpdir                          = /tmp

# network
connect_timeout                 = 5
interactive_timeout             = 30
max_allowed_packet              = 1M
max_connect_errors              = 4096
max_connections                 = 1200
wait_timeout                    = 30

# limits
max_heap_table_size             =
table_open_cache                = 8192
thread_cache_size               = 512

#$processorcount * 2
thread_concurrency              = 4
tmp_table_size                  =

# logs
log_error                       = /var/log/mysql/mysql-error.log
log_queries_not_using_indexes   = 1
log_warnings                    = 1
long_query_time                 = 1
slow_query_log                  = 1
slow_query_log_file             = /var/log/mysql/mysql-slow.log

# query cache
query_cache_limit               = 1M
query_cache_size                = 128M
query_cache_type                = 1

# buffers
key_buffer_size                 = 32M
read_buffer_size                =
sort_buffer_size                = 1M

# other stuff
event_scheduler                 = 1

# InnoDB storage engine config options
default-storage-engine  = InnoDB
innodb_additional_mem_pool_size = 128M
innodb_autoextend_increment     = 64
innodb_buffer_pool_size         = 3000M
innodb_data_home_dir            = /var/lib/mysql
innodb_data_file_path           = ibdata1:128M:autoextend
innodb_file_per_table           = 1
innodb_flush_log_at_trx_commit  = 2
innodb_flush_method             = O_DIRECT
innodb_io_capacity              = 300
innodb_log_buffer_size          =
innodb_log_file_size            = 128M
innodb_log_files_in_group       =
innodb_mirrored_log_groups      = 1
innodb_max_dirty_pages_pct      = 45
innodb_status_file              = 0
innodb_support_xa               = 1
innodb_thread_concurrency       = 8

# experimental
#innodb_stats_update_need_lock  =</pre>
<p>Le second */etc/mysql/conf.d/zabbix.local.cnf* avec la configuration de Mysql pour sa réplication Master/Slave</p>
<pre class="wp-code-highlight prettyprint">##################################################################
# Ce fichier contient les parametres specifiques a la replication
[mysqld]

# conf commune a tous les slaves
log_bin=/mnt/mysql-bin/mysql-bin.log
expire_logs_days=10
max_binlog_size=100M
sync_binlog=0
log-slave-updates
replicate-same-server-id=0
auto_increment_increment=2
slave-skip-errors=1053
binlog_format=MIXED

# fix pb relay-log dependant du hostname
relay-log=mysqld-relay-bin
relay-log-index=mysqld-relay-bin.index

# Conf specifique a ce slave en particulier

# chaque replicat doit avoir un server-id unique (1,2,3,4...)
server-id=1
# role de l'offset: un replicat ne cree que des ids pairs, et l'autre que des ids impairs
# ceci afin d'eviter au maximum les conflits
# valeurs possibles: 2 (ids pairs)  1 (ids impairs)
auto_increment_offset=1
# tout replicat autre que le master actif doit etre en read-only
# autrement dit, seul le master actif peut traiter les ecritures
# read-only</pre>
<p>Installer le paquet mysql de zabbix</p>
<pre class="wp-code-highlight prettyprint">zabbix-server-mysql</pre>
<p>Créé une AMI par sécurité</p>
<pre class="wp-code-highlight prettyprint">ec2-create-image -n Mysql55-U1204-m1large -d Mysql55-U1204--m1large-v1 i-abda3ce2</pre>
<p>&nbsp;</p>
<h2>Zabbix Server et FrontEnd php</h2>
<p>Lancer une instance c1.medium</p>
<pre class="wp-code-highlight prettyprint">ec2-run-instances  ami-094c666d -k infra-live -g Monitor -b &quot;sdb=ephemeral0&quot; -b &quot;sdc=ephemeral1&quot; -b &quot;sdd=ephemeral2&quot; -b &quot;sde=ephemeral3&quot; -t c1.medium -z eu-west-1b -d hostname=monitorweb1

RESERVATION     r-e06df1a9      727387230542    Monitor
INSTANCE        i-eb00e3a3      ami-094c666d                    pending infra-live      0               c1.medium       2012-04-18T13:13:06+0000        eu-west-1b      aki-62695816            monitoring-disabled                                      ebs                                     paravirtual     xen             sg-907282e6     default</pre>
<p>Donner un tag name à cette instance</p>
<pre class="wp-code-highlight prettyprint">ec2-create-tags i-eb00e3a3 --tag Name=monitor-web1</pre>
<p>Installer les paquets suivant</p>
<pre class="wp-code-highlight prettyprint">apt-get instal libapache2-mod-php5 php-apc php5 php5-cli php5-common php5-gd php5-mysql zabbix-frontend-php zabbix-server-mysql  bsd-mailx</pre>
<p>Puis Deinstaller les paquets *mysql-server* qu&#8217;un dépendance à forcer à l&#8217;installation.</p>
<pre class="wp-code-highlight prettyprint">apt-get remove --purge mysql-server*</pre>
<p>Configurer Apache avec les modules suivent. Les autres ne sont pas nécéssaire.</p>
<pre class="wp-code-highlight prettyprint">auth_basic.load
authz_default.load
authz_host.load
deflate.conf
deflate.load
php5.conf
php5.load
status.conf
status.load</pre>
<p>Modifier le lancement du module deflate de apache<br />
Pour une compression légère sur tout ce qui est texte ceci sur l&#8217;exemple du fichier */etc/apache2/mods-enabled/deflate.conf* suivant</p>
<pre class="wp-code-highlight prettyprint">          AddOutputFilterByType DEFLATE text/html text/plain text/xml
          AddOutputFilterByType DEFLATE text/xml
          AddOutputFilterByType DEFLATE text/css
          AddOutputFilterByType DEFLATE text/javascript
          AddOutputFilterByType DEFLATE text/html
          AddOutputFilterByType DEFLATE text/plain
          AddOutputFilterByType DEFLATE application/xml
          AddOutputFilterByType DEFLATE application/xhtml+xml
          AddOutputFilterByType DEFLATE application/rss+xml
          AddOutputFilterByType DEFLATE application/javascript
          AddOutputFilterByType DEFLATE application/x-javascript

          DeflateCompressionLevel 3</pre>
<p>Configurer APC sur le modèle du fichier */etc/php5/conf.d/apc.ini* suivant</p>
<pre class="wp-code-highlight prettyprint">extension=apc.so
apc.enabled=&quot;1&quot;
apc.shm_size=&quot;64M&quot;
apc.num_files_hint=&quot;100&quot;
apc.user_entries_hint=&quot;0&quot;
apc.ttl=&quot;0&quot;
apc.gc_ttl=&quot;3601&quot;
apc.stat=&quot;1&quot;
apc.slam_defense=&quot;0&quot;
apc.write_lock=&quot;1&quot;</pre>
<p>Configurer frontend php pour utiliser le serveur mysql précédement créé sur le modèle du fichier */etc/zabbix/dbconfig.php* suivant</p>
<pre class="wp-code-highlight prettyprint"></pre>
<p>Configurer zabbix serveur pour utiliser le serveur mysql précédement créé sur le modèle du fichier */etc/zabbix/zabbix_server.conf* suivant</p>
<pre class="wp-code-highlight prettyprint">LogFile=/var/log/zabbix-server/zabbix_server.log
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=monitor-sql1.DOMAINENAME.COM
DBName=zabbix
DBUser=zabbix
DBPassword=password
AlertScriptsPath=/etc/zabbix/alert.d/
FpingLocation=/usr/bin/fping
Fping6Location=/usr/bin/fping6</pre>
<h2></h2>
<p>&nbsp;</p>
<h2>Configurer la base de donnée avec le partitionnement des tables</h2>
<p>Configurer les droits et password de root mysql même si c&#8217;est déjà fait</p>
<pre class="wp-code-highlight prettyprint">GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;</pre>
<p>Créer et configurer les droits et password de l&#8217;utilisation zabbix</p>
<pre class="wp-code-highlight prettyprint">GRANT ALL PRIVILEGES ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;</pre>
<p>Modification de la DB zabbix</p>
<pre class="wp-code-highlight prettyprint">ALTER TABLE acknowledges DROP PRIMARY KEY, ADD KEY acknowledgedid (acknowledgeid);
ALTER TABLE alerts DROP PRIMARY KEY, ADD KEY alertid (alertid);
ALTER TABLE auditlog DROP PRIMARY KEY, ADD KEY auditid (auditid);
ALTER TABLE events DROP PRIMARY KEY, ADD KEY eventid (eventid);
ALTER TABLE service_alarms DROP PRIMARY KEY, ADD KEY servicealarmid (servicealarmid);
ALTER TABLE history_log DROP PRIMARY KEY, ADD PRIMARY KEY (itemid,id,clock);
ALTER TABLE history_log DROP KEY history_log_2;
ALTER TABLE history_text DROP PRIMARY KEY, ADD PRIMARY KEY (itemid,id,clock);
ALTER TABLE history_text DROP KEY history_text_2;</pre>
<p>Partitionner les tables journalières de la DB zabbix</p>
<pre class="wp-code-highlight prettyprint">ALTER TABLE events PARTITION BY RANGE( clock ) (
PARTITION p201204 VALUES LESS THAN (UNIX_TIMESTAMP(&quot;2012-05-01 00:00:00&quot;)));
ALTER TABLE acknowledges PARTITION BY RANGE( clock ) (
PARTITION p201204 VALUES LESS THAN (UNIX_TIMESTAMP(&quot;2012-05-01 00:00:00&quot;)));
ALTER TABLE alerts PARTITION BY RANGE( clock ) (
PARTITION p201204 VALUES LESS THAN (UNIX_TIMESTAMP(&quot;2012-05-01 00:00:00&quot;)));
ALTER TABLE auditlog PARTITION BY RANGE( clock ) (
PARTITION p201204 VALUES LESS THAN (UNIX_TIMESTAMP(&quot;2012-05-01 00:00:00&quot;)));
ALTER TABLE service_alarms PARTITION BY RANGE( clock ) (
PARTITION p201204 VALUES LESS THAN (UNIX_TIMESTAMP(&quot;2012-05-01 00:00:00&quot;)));
ALTER TABLE trends PARTITION BY RANGE( clock ) (
PARTITION p201204 VALUES LESS THAN (UNIX_TIMESTAMP(&quot;2012-05-01 00:00:00&quot;)));
ALTER TABLE trends_uint PARTITION BY RANGE( clock ) (
PARTITION p201204 VALUES LESS THAN (UNIX_TIMESTAMP(&quot;2012-05-01 00:00:00&quot;)));</pre>
<p>Partitionner les tables mensuelles de la DB zabbix</p>
<pre class="wp-code-highlight prettyprint">ALTER TABLE history_uint PARTITION BY RANGE( clock ) (
PARTITION p20110419 VALUES LESS THAN (UNIX_TIMESTAMP(&quot;2011-04-20 00:00:00&quot;)));
ALTER TABLE history PARTITION BY RANGE( clock ) (
PARTITION p20110419 VALUES LESS THAN (UNIX_TIMESTAMP(&quot;2011-04-20 00:00:00&quot;)));
ALTER TABLE history_log PARTITION BY RANGE( clock ) (
PARTITION p20110419 VALUES LESS THAN (UNIX_TIMESTAMP(&quot;2011-04-20 00:00:00&quot;)));
ALTER TABLE history_str PARTITION BY RANGE( clock ) (
PARTITION p20110419 VALUES LESS THAN (UNIX_TIMESTAMP(&quot;2011-04-20 00:00:00&quot;)));
ALTER TABLE history_str PARTITION BY RANGE( clock ) (
PARTITION p20110419 VALUES LESS THAN (UNIX_TIMESTAMP(&quot;2011-04-20 00:00:00&quot;)));
ALTER TABLE history_text PARTITION BY RANGE( clock ) (
PARTITION p20110419 VALUES LESS THAN (UNIX_TIMESTAMP(&quot;2011-04-20 00:00:00&quot;)));</pre>
<p>Enregistrer les procedures stockées<br />
Procédure pour tables quotidiennes</p>
<pre class="wp-code-highlight prettyprint">/**************************************************************
  MySQL Auto Partitioning Procedure for Zabbix 1.8

http://zabbixzone.com/zabbix/partitioning-tables/

  Author:  Ricardo Santos (rsantos at gmail.com)
  Version: 20110518
**************************************************************/
DELIMITER //
DROP PROCEDURE IF EXISTS `zabbix`.`create_zabbix_partitions` //
CREATE PROCEDURE `zabbix`.`create_zabbix_partitions` ()
BEGIN
	CALL zabbix.create_next_partitions(&quot;zabbix&quot;,&quot;history&quot;);
	CALL zabbix.create_next_partitions(&quot;zabbix&quot;,&quot;history_log&quot;);
	CALL zabbix.create_next_partitions(&quot;zabbix&quot;,&quot;history_str&quot;);
	CALL zabbix.create_next_partitions(&quot;zabbix&quot;,&quot;history_text&quot;);
	CALL zabbix.create_next_partitions(&quot;zabbix&quot;,&quot;history_uint&quot;);
	CALL zabbix.drop_old_partitions(&quot;zabbix&quot;,&quot;history&quot;);
	CALL zabbix.drop_old_partitions(&quot;zabbix&quot;,&quot;history_log&quot;);
	CALL zabbix.drop_old_partitions(&quot;zabbix&quot;,&quot;history_str&quot;);
	CALL zabbix.drop_old_partitions(&quot;zabbix&quot;,&quot;history_text&quot;);
	CALL zabbix.drop_old_partitions(&quot;zabbix&quot;,&quot;history_uint&quot;);
END //
DROP PROCEDURE IF EXISTS `zabbix`.`create_next_partitions` //
CREATE PROCEDURE `zabbix`.`create_next_partitions` (SCHEMANAME varchar(64), TABLENAME varchar(64))
BEGIN
	DECLARE NEXTCLOCK timestamp;
	DECLARE PARTITIONNAME varchar(16);
	DECLARE CLOCK int;
	SET @totaldays = 7;
	SET @i = 1;
	createloop: LOOP
		SET NEXTCLOCK = DATE_ADD(NOW(),INTERVAL @i DAY);
		SET PARTITIONNAME = DATE_FORMAT( NEXTCLOCK, 'p%Y%m%d' );
		SET CLOCK = UNIX_TIMESTAMP(DATE_FORMAT(DATE_ADD( NEXTCLOCK ,INTERVAL 1 DAY),'%Y-%m-%d 00:00:00'));
		CALL zabbix.create_partition( SCHEMANAME, TABLENAME, PARTITIONNAME, CLOCK );
		SET @i=@i+1;
		IF @i &amp;gt; @totaldays THEN
			LEAVE createloop;
		END IF;
	END LOOP;
END //
DROP PROCEDURE IF EXISTS `zabbix`.`drop_old_partitions` //
CREATE PROCEDURE `zabbix`.`drop_old_partitions` (SCHEMANAME varchar(64), TABLENAME varchar(64))
BEGIN
	DECLARE OLDCLOCK timestamp;
	DECLARE PARTITIONNAME varchar(16);
	DECLARE CLOCK int;
	SET @mindays = 3;
	SET @maxdays = @mindays+4;
	SET @i = @maxdays;
	droploop: LOOP
		SET OLDCLOCK = DATE_SUB(NOW(),INTERVAL @i DAY);
		SET PARTITIONNAME = DATE_FORMAT( OLDCLOCK, 'p%Y%m%d' );
		CALL zabbix.drop_partition( SCHEMANAME, TABLENAME, PARTITIONNAME );
		SET @i=@i-1;
		IF @i</pre>
<p>Procédure pour tables mensuelles</p>
<pre class="wp-code-highlight prettyprint">DELIMITER //
DROP PROCEDURE IF EXISTS `zabbix`.`create_zabbix_monthly_partitions` //
CREATE PROCEDURE `zabbix`.`create_zabbix_monthly_partitions` ()
BEGIN
CALL zabbix.create_next_monthly_partitions(&quot;zabbix&quot;,&quot;acknowledges&quot;);
CALL zabbix.create_next_monthly_partitions(&quot;zabbix&quot;,&quot;alerts&quot;);
CALL zabbix.create_next_monthly_partitions(&quot;zabbix&quot;,&quot;auditlog&quot;);
CALL zabbix.create_next_monthly_partitions(&quot;zabbix&quot;,&quot;events&quot;);
CALL zabbix.create_next_monthly_partitions(&quot;zabbix&quot;,&quot;service_alarms&quot;);
CALL zabbix.create_next_monthly_partitions(&quot;zabbix&quot;,&quot;trends&quot;);
CALL zabbix.create_next_monthly_partitions(&quot;zabbix&quot;,&quot;trends_uint&quot;);
CALL zabbix.drop_old_monthly_partitions(&quot;zabbix&quot;,&quot;acknowledges&quot;);
CALL zabbix.drop_old_monthly_partitions(&quot;zabbix&quot;,&quot;alerts&quot;);
CALL zabbix.drop_old_monthly_partitions(&quot;zabbix&quot;,&quot;auditlog&quot;);
CALL zabbix.drop_old_monthly_partitions(&quot;zabbix&quot;,&quot;events&quot;);
CALL zabbix.drop_old_monthly_partitions(&quot;zabbix&quot;,&quot;service_alarms&quot;);
CALL zabbix.drop_old_monthly_partitions(&quot;zabbix&quot;,&quot;trends&quot;);
CALL zabbix.drop_old_monthly_partitions(&quot;zabbix&quot;,&quot;trends_uint&quot;);
END //
DROP PROCEDURE IF EXISTS `zabbix`.`create_next_monthly_partitions` //
CREATE PROCEDURE `zabbix`.`create_next_monthly_partitions` (SCHEMANAME varchar(64), TABLENAME varchar(64))
BEGIN
DECLARE NEXTCLOCK timestamp;
DECLARE PARTITIONNAME varchar(16);
DECLARE CLOCK int;
SET @totalmonths = 3;
SET @i = 1;
createloop: LOOP
SET NEXTCLOCK = DATE_ADD(NOW(),INTERVAL @i MONTH);
SET PARTITIONNAME = DATE_FORMAT( NEXTCLOCK, 'p%Y%m' );
SET CLOCK = UNIX_TIMESTAMP(DATE_FORMAT(DATE_ADD( NEXTCLOCK ,INTERVAL 1 MONTH),'%Y-%m-01 00:00:00'));
CALL zabbix.create_partition( SCHEMANAME, TABLENAME, PARTITIONNAME, CLOCK );
SET @i=@i+1;
IF @i &amp;gt; @totalmonths THEN
LEAVE createloop;
END IF;
END LOOP;
END //
DROP PROCEDURE IF EXISTS `zabbix`.`drop_old_monthly_partitions` //
CREATE PROCEDURE `zabbix`.`drop_old_monthly_partitions` (SCHEMANAME varchar(64), TABLENAME varchar(64))
BEGIN
DECLARE OLDCLOCK timestamp;
DECLARE PARTITIONNAME varchar(16);
DECLARE CLOCK int;
SET @minmonths = 12;
SET @maxmonths = @minmonths+3;
SET @i = @maxmonths;
droploop: LOOP
SET OLDCLOCK = DATE_SUB(NOW(),INTERVAL @i MONTH);
SET PARTITIONNAME = DATE_FORMAT( OLDCLOCK, 'p%Y%m' );
CALL zabbix.drop_partition( SCHEMANAME, TABLENAME, PARTITIONNAME );
SET @i=@i-1;
IF @i</pre>
<p>Vérifier le bon enregistrements des procedures stockées</p>
<pre class="wp-code-highlight prettyprint">select name from mysql.proc;
+----------------------------------+
| name                             |
+----------------------------------+
| create_next_monthly_partitions   |
| create_next_partitions           |
| create_partition                 |
| create_zabbix_monthly_partitions |
| create_zabbix_partitions         |
| drop_old_monthly_partitions      |
| drop_old_partitions              |
| drop_partition                   |
+----------------------------------+</pre>
<p>Créé les cron journalié et mensuel de changement de table<br />
Sur monitor-web1</p>
<pre class="wp-code-highlight prettyprint">mkdir -p /etc/zabbix/cron.d</pre>
<p>Créer le fichier */etc/zabbix/cron.d/daily-housekeeping.sh*</p>
<pre class="wp-code-highlight prettyprint">#!/bin/bash

MAILTO=karles@mimesis-republic.com
tmpfile=/tmp/daily-housekeeping$$

date &amp;gt;$tmpfile
/usr/bin/mysql --skip-column-names -B -h localhost -u zabbix -pzabbix zabbix -e &quot;CALL create_zabbix_partitions();&quot; &amp;gt;&amp;gt;$tmpfile 2&amp;gt;&amp;amp;1
/usr/bin/mail -s &quot;[Zabbix] Daily MySql Partition Housekeepingg&quot; $MAILTO</pre>
<p>Créer le fichier */etc/cron.daily/zabbix-daily-housekeeping*</p>
<pre class="wp-code-highlight prettyprint">#!/bin/bash
/etc/zabbix/cron.d/daily-housekeeping.sh</pre>
<p>Créer le fichier */etc/zabbix/cron.d/monthly-housekeeping.sh*</p>
<pre class="wp-code-highlight prettyprint">#!/bin/bash

MAILTO=karles@mimesis-republic.com
tmpfile=/tmp/monthly-housekeeping$$

date &amp;gt;$tmpfile
/usr/bin/mysql --skip-column-names -B -h monitor-sql1.DOMAINENAME.COM -u zabbix -ppass zabbix -e &quot;CALL create_zabbix_monthly_partitions();&quot; &amp;gt;&amp;gt;$tmpfile 2&amp;gt;&amp;amp;1
/usr//bin/mail -s &quot;[Zabbix] Monthly MySql Partition Housekeeping&quot; $MAILTO</pre>
<p>Créer le fichier */etc/cron.monthly/zabbix-monthly-housekeeping*</p>
<pre class="wp-code-highlight prettyprint">#!/bin/bash
/etc/zabbix/cron.d/monthly-housekeeping.sh</pre>
<p>Lancer les deux cron manuellement pour finir l&#8217;installation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.karlesnine.com/2012/04/25/zabbix-1-8-11-sur-ubuntu-12-04-avec-partitionnement-sql-des-tables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress et bbclone</title>
		<link>http://www.karlesnine.com/2012/04/24/worpress-et-bbclone/</link>
		<comments>http://www.karlesnine.com/2012/04/24/worpress-et-bbclone/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 12:20:07 +0000</pubDate>
		<dc:creator>karles</dc:creator>
				<category><![CDATA[Memo]]></category>
		<category><![CDATA[bbclone]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.karlesnine.com/?p=930</guid>
		<description><![CDATA[BBCLONE est un outil de statistique web, un compteur mais en mieux. Pour son intégration dans WordPress c&#8217;est ultra simple. Si votre répertoire bbclone est au même niveau que votre page index.php de wordpress ajoutez les quatres lignes suivantes juste avant le ?&#62; final define('_BBC_PAGE_NAME', $_SERVER['REQUEST_URI']); define('_BBCLONE_DIR', 'bbclone/'); define('COUNTER', _BBCLONE_DIR . 'mark_page.php'); if (is_readable(COUNTER)) include_once(COUNTER); Ceci <a href='http://www.karlesnine.com/2012/04/24/worpress-et-bbclone/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><a title="bbclone" href="http://bbclone.de/">BBCLONE</a> est un outil de <a title="bbclone chez Framasoft" href="http://www.framasoft.net/article1892.html" target="_blank">statistique web, un compteur mais en mieux</a>.</p>
<p>Pour son intégration dans <a title="wordpress" href="http://wordpress.org/download/" target="_blank">WordPress</a> c&#8217;est ultra simple. Si votre répertoire <strong>bbclone</strong> est au même niveau que votre page index.php de wordpress ajoutez les quatres lignes suivantes juste avant le ?&gt; final</p>
<pre class="wp-code-highlight prettyprint">define('_BBC_PAGE_NAME', $_SERVER['REQUEST_URI']);
define('_BBCLONE_DIR', 'bbclone/');
define('COUNTER', _BBCLONE_DIR . 'mark_page.php');
if (is_readable(COUNTER)) include_once(COUNTER);</pre>
<p>Ceci fonctionne parfaitement avec mon installation à base de <strong>nginx</strong>. Le note ici car j&#8217;en ai un peu marre de perdre ce bout de code à chaque mise à jour de <strong>wordpress</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.karlesnine.com/2012/04/24/worpress-et-bbclone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Imprimante HP B209a et Mac OSX Lion 10.7</title>
		<link>http://www.karlesnine.com/2012/04/23/imprimante-hp-b209a-et-mac-osx-lion-10-7/</link>
		<comments>http://www.karlesnine.com/2012/04/23/imprimante-hp-b209a-et-mac-osx-lion-10-7/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 15:09:01 +0000</pubDate>
		<dc:creator>karles</dc:creator>
				<category><![CDATA[Technologic]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.karlesnine.com/?p=918</guid>
		<description><![CDATA[J&#8217;ai une imprimante HP photosmart B209a depuis 2010. Je n&#8217;ai plus le carton, ni la doc, bref classique. Cette imprimante à la particularité d&#8217;être wifi et jusqu&#8217;à maintenant je l&#8217;utilisais via un câble USB. J&#8217;ai eu besoin de la reconfigurer et surtout de la passer en wifi et donc de modifier la paramètre réseau. Pour les personnes <a href='http://www.karlesnine.com/2012/04/23/imprimante-hp-b209a-et-mac-osx-lion-10-7/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai une <strong>imprimante</strong> <a title="HP Photosmart Plus All-in-One Printer - B209a" href="http://h10025.www1.hp.com/ewfrf/wc/product?cc=us&amp;lc=en&amp;dlc=en&amp;tmp_geoLoc=true&amp;product=3777182" target="_blank">HP photosmart B209a</a> depuis 2010. Je n&#8217;ai plus le carton, ni la doc, bref classique. Cette imprimante à la particularité d&#8217;être <strong>wifi</strong> et jusqu&#8217;à maintenant je l&#8217;utilisais via un câble USB. J&#8217;ai eu besoin de la reconfigurer et surtout de la passer en wifi et donc de modifier la paramètre réseau.</p>
<p>Pour les personnes que ça intéresse voici la manipulation pour saisir le SSID et la clef wifi dans les paramètres de l&#8217;imprimante <strong>B209a </strong>depuis un poste sous  <strong>Mac OSX Lion 10.7</strong></p>
<p>&nbsp;</p>
<p>La manipulation est la suivante :</p>
<ol>
<li>Restaurer les paramètres par défaut de l&#8217;imprimante</li>
<li>Connecter en wifi sur le réseau adhoc diffusé par l&#8217;imprimante</li>
<li>Une fois connecté en wifi avec l&#8217;imprimante et bien imprimer la configuration réseau de l&#8217;imp pour connaitre l&#8217;IP de l&#8217;imprimante.</li>
<li>Sous  Safari, se connecter sur l&#8217;IP de l&#8217;imprimante  elle possède un serveur web embarqué</li>
<li>Sous cette interface graphique, saisir les paramètres corrects de votre réseau Wifi (SSID et clef de cryptage)</li>
</ol>
<p>Attention, lorsque l&#8217;on valide l&#8217;écran, l&#8217;on perd la communication avec l&#8217;imprimante car le réesau adhoc a disparu pour être remplacé par celui de votre point d&#8217;accès.</p>
<ol>
<li>Ce connecter sur son réseau</li>
<li>Retrouver l&#8217;imprimante<strong> HP photosmart B209a</strong> via &laquo;&nbsp;préférence système -&gt; imprimante et scanner -&gt; etc..&nbsp;&raquo;</li>
</ol>
<div></div>
<div>Et voila</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.karlesnine.com/2012/04/23/imprimante-hp-b209a-et-mac-osx-lion-10-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Besoins liés à l&#8217;exploitation dans le cloud IaaS</title>
		<link>http://www.karlesnine.com/2012/04/17/besoins-lies-a-lexploitation-dans-le-cloud-iaas/</link>
		<comments>http://www.karlesnine.com/2012/04/17/besoins-lies-a-lexploitation-dans-le-cloud-iaas/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 07:41:34 +0000</pubDate>
		<dc:creator>karles</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[Iaas]]></category>

		<guid isPermaLink="false">http://www.karlesnine.com/?p=910</guid>
		<description><![CDATA[Définitions Outil de gestion de configuration : Puppet, Chef, Cfengin etc.. Infrastructure : ensemble système et réseau logique assurant la production plate-forme : ensemble système et réseau physique assurant la production Instance : serveur au sens « operating system » physique ou virtuel DB ou base de donnée : Au sens premier de gestionnaire de base de <a href='http://www.karlesnine.com/2012/04/17/besoins-lies-a-lexploitation-dans-le-cloud-iaas/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<div>
<h2>Définitions</h2>
<p><strong>Outil de gestion de configuration</strong> : Puppet, Chef, Cfengin etc..<br />
<strong>Infrastructure</strong> : ensemble système et réseau logique assurant la production<br />
<strong>plate-forme</strong> : ensemble système et réseau physique assurant la production<br />
<strong>Instance</strong> : serveur au sens « operating system » physique ou virtuel<br />
<strong>DB ou base de donnée</strong> : Au sens premier de gestionnaire de base de donnée, SQL comme NoSQL.<br />
<strong>La Production</strong> : État ou l&#8217;ensemble des services sont disponibles, en lignes, actifs et assurent la prestation attendu par nos client.<br />
<strong>Exploitation</strong> : Tout activité humaine assurant la disponibilité de La Production, son rétablissement ou sa pérénité.<br />
<strong>Problème systémique</strong> : Instabilité ou déséquilibre de la plate-forme concerné du à un effet domino entre services impactant La Production<br />
<strong>Nécessaire</strong> : Indispensable à l&#8217;exploitation de La Production<br />
<strong>Souhaité</strong> : Doit faire l&#8217;objet d&#8217;un engagement de mise à disposition<br />
<strong>Idéal</strong> : Objectif de l&#8217;état de l&#8217;art</p>
<p>&nbsp;</p>
<h2>Cas d&#8217;exploitation</h2>
<p><strong><strong>Ajout, remplacement, augmentation, modification d&#8217;élément d&#8217;une plate-forme d&#8217;un infrastructure</strong></strong></p>
<ul>
<li>Il n&#8217;y a pas de mise à niveau d&#8217;instance (changement de version d&#8217;un service), elle est remplacé. Toute la validation étant est faite en dehors de La Production et la coupure de service est réduite à son minimum. [Nécessaire]</li>
<li>Il y a des mise à jour d&#8217;instance (changement mineurs dans une même version). Changement nécessitant pas de validation et rendant un service immédiat  pour des question de sécurité ou de bug fix. [Nécessaire]</li>
<li>La mise à jour d&#8217;instance doit pouvoir être faire instance par instance ou par lot d&#8217;instance sans coupure de La Production. [Souhaité]</li>
<li>La mise en production de nouveau serveur de DB dans un rôle existant doit ce faire par création d&#8217;un esclave chainé aux serveur existant. La récupération, duplication, synchronisation des données est faire en temps masqué par rapport à La Production. Le nettoyage de donnée pouvant intervenir à postériori par exemple dans les cas d&#8217;extension de sharding sans retrait de l&#8217;instance de La Production. [Idéal]</li>
<li>Le remplacement d&#8217;un serveur de DB master doit ce faire par promotion d&#8217;un esclave. moyen rapide et sur facilement exécutable avec un impacte marginal sur La Production. [Souhaité]</li>
<li>Les backups des DB et les opérations de backoffice doivent ce faire sur un esclave pour limité leur impacte sur La Production. Si l&#8217;impact sur La Production  est cependant trop fort un esclave dédier à l&#8217;opération peux être mis en service. [Souhaité]</li>
<li>Un esclave de DB peux être mis en service ponctuellement pour des besoins de R&amp;D, pour l&#8217;étude de nouvelle métrique BI ou la migration de schéma par exemple, ceci sans impacter  La Production. [Idéal]</li>
<li>La création d&#8217;un nouveau rôle dans l&#8217;infrastructure ne doit pas engendre d&#8217;autre R&amp;D et validation que celui du service assumant ce rôle. L&#8217;ensemble du système et des autres service doit être déjà validé et disponible via l&#8217;outil de gestion de configuration. Ceci pour limiter la charge de travail et gagner en productivité. [Nécessaire]</li>
<li>En cas de mise en production d&#8217;une nouvelle instance de cache sur une plate-forme le warmup doit être transparent et automatique. [Idéal]</li>
</ul>
<ul>
<li>Le monitoring doit fournir un historique comparable entre toute les valeurs enregistrés, ceci implique une même duré d&#8217;historique, une même échelle de temps et des unités de mesure harmonisées. [Souhaité]</li>
<li>Les outils d&#8217;exploitation des plate-formes doivent répondre au même contrainte que La Production. Les outils sont scalable, dupliqué, redondant, sauvegardé etc..  [Souhaité]</li>
<li>Le poste de travail AdminSys, sa configuration ou sa connectivité ne sont pas des éléments bloquant. L&#8217;administration de la plateforme doit pouvoir ce faire de chez soi (astreinte), depuis d&#8217;autre locaux (désastre) ou depuis un poste de travail qui n&#8217;est pas le sien (urgence) facilement. Ceci n&#8217;exclue nullement le contrôles d&#8217;accès. [Nécessaire]</li>
</ul>
<h2>Cas d&#8217;incident &amp; astreinte.</h2>
<p><strong><strong>Résolution d&#8217;incident impactant La Production, en heure ouvrées ou en astreinte</strong></strong></p>
<ul>
<li>Un serveur de DB doit posséder un esclave pouvant être activé à la demande afin de palier à une défaillance du serveur maitre et limité l&#8217;impact sur La Production. [Nécessaire]</li>
<li>Un rôle dans l&#8217;infrastructure doit être assumé par une instance. La perte de l&#8217;instance ne doit pas impacter plusieurs rôle afin de limité l&#8217;effet négatif sur La Production et / ou réduire le temps de retour de La Production [Nécessaire]</li>
<li>L&#8217;optimum en cas de défaillance d&#8217;une instance est que sa charge de travail soit répartis entre les instances restantes dans le même rôle [Idéal]</li>
<li>Si l&#8217;optimum n&#8217;est pas possible le remplacement de l&#8217;instance doit être le plus rapide possible par l&#8217;utilisation dans l&#8217;ordre de spare  [Idéal],</li>
<li>d&#8217;image de clone [Nécessaire],</li>
<li>la reconstruction via l&#8217;outil de gestion de configuration [Nécessaire].</li>
<li>L&#8217;autopsie post mortem doit pouvoir ce faire sur un instance sortie de La Production. L&#8217;instance reste en l&#8217;état est n&#8217;est plus adressé, ne reçois plus de flux entrant et ne produit plus de flux,  sortant, donc en dehors de La Production, mais toujours intégré à la plateforme et conforme à l&#8217;infrastructure [Souhaité].</li>
</ul>
<h2>Cas de problème systémique</h2>
<ul>
<li>En cas de problème systémique il doit être possible de fermer le service à nos client provisoirement tout en maintenant la plateforme conforme à l&#8217;infrastructure. Cela implique donc que l&#8217;ensemble des rôles restes actif et dans l&#8217;état pour assurer La Production [Nécessaire].</li>
<li>La fermeture du service implique forcement une réponse adapté aux requêtes de nos client [Nécessaire].</li>
<li>La fermeture du service impliquant que l&#8217;ensemble des rôles restes actif et dans l&#8217;état pour assurer La Production il est donc possible de tester l&#8217;ensemble des services et rôle d&#8217;un point de vue client [Nécessaire].</li>
<li>En cas de problème systémique le monitoring doit permettre de déterminer le premier domino tombé et l&#8217;ordre des suivant. De déterminer l&#8217;enchainement des causes  et conséquences, service par service puis instance par instance  [Souhaité].</li>
<li>En cas de présence de service de cache dans l&#8217;infrastructure une procédure de warmup doit être disponible afin d&#8217;initialisé les contenus par type de donnée ou dataset  [Souhaité].</li>
</ul>
<h2>Cas de Mise en production code produit.</h2>
<ul>
<li>La mise en production d&#8217;une version de code produit doit être le plus transparente possible et ne pas impacter La Production [Souhaité].</li>
<li>L&#8217;adaptation de l&#8217;infrastructure si nécessaire doit être réalisé en amont, ceci par changement des instances, ajout d&#8217;instance, modification des schémas de DB etc.. [Souhaité]</li>
<li>La mise en production d&#8217;une version de code produit ne concerne pas la migration de donnée [Idéal].</li>
<li>La migration de donnée vers un nouveau format ou support doit être réalisé au fil de l&#8217;eau sans coupure de La Production. Les ressources infrastructure nécessaire devant être anticipé et mise à disposition en amont [Idéal].</li>
<li>L&#8217;impact sur la qualité de La Production d&#8217;une nouvelle version de code doit être « monitorable », les métriques, graph et outils de monitoring doivent être conçus en ce  sens [Nécessaire].</li>
<li>La possibilité de RollBack vers une version de code antérieure est indispensable. La décision de retour arrière relavant du produceur (pour une question de qualité produit) et de l&#8217;infra / exploit pour une question de maintien de La production [Nécessaire].</li>
<li>Deux versions de code doivent pouvoir cohabité temporairement sur les différents rôles et instance sans impacter La Production. Le temps d&#8217;une migration ou d&#8217;un rollback par exemple [Idéal].</li>
<li>La mise en production de code produit sur la plate-forme de production doit être précédé d&#8217;une validation sur une plate-forme de pré-production [Nécessaire].</li>
<li>La plate-forme de pré-production doit être ISO avec l&#8217;infrastructure (séparation des rôle, instances, flux) sans être ISO avec la plate-forme de production d&#8217;un point de vue dimension  [Souhaité].</li>
<li>La plate-forme de pré-production doit opérer avec les données de la plate-forme de production (Même DB etc..) [Souhaité].</li>
<li>Des plate-forme de test / stage non ISO avec l&#8217;infrastructure et non ISO avec la plate-forme de production sont utilisé pour tester des évolutions  / branche avant leur intégration / fusion et leur validation en pre-prodution [Idéal].</li>
</ul>
<h2>Cas de goulot d&#8217;étranglement</h2>
<ul>
<li>En cas de goulot d&#8217;étranglement le monitoring toi permettre de déterminer sa localisation (Rôle, Instance, API / Service, Type d&#8217;appel) et le seuil d&#8217;effet [Souhaité].</li>
<li>La scalabilité horizontal par ajout d&#8217;instance dans un rôle doit être possible a chaud afin de maintenir le service avant toute optimisation [Souhaité].</li>
<li>Dans tout les cas la scalabilité vertical par augmentation des tailles d&#8217;instances (puissance serveur) doit être possible.</li>
<li>Manuellement [Nécessaire].</li>
<li>Automatiquement configurer sans son rôle en fonction de possibilité matériel [Idéal].</li>
</ul>
<h2>Cas de monter en charge</h2>
<ul>
<li>L&#8217;anticipation des montés en charge doit être la règle, grâce au monitoring et au prévisionnelle opération (évènement, marketing etc.) [Nécessaire].</li>
<li>L&#8217;ajustement de plateforme aux monté de charge (élasticité) doit être possible [Souhaité].</li>
</ul>
<h2>Cas de désastre</h2>
<p><strong><strong>La perte d&#8217;une plate-forme ou de connectivité avec elle.</strong></strong></p>
<ul>
<li>La construction d&#8217;une nouvelle plate-forme le plus rapidement possible par l&#8217;utilisation conjugué de spare, d&#8217;image de clone, ou construction d&#8217;instance via l&#8217;outil de gestion de configuration :</li>
<li>Dans une autre localisation géographique (AZ / DataCenter, Région) doit être réalisable pour rétablir La Production [Souhaité].</li>
<li>Chez un autre fournisseur  [Idéal].</li>
<li>La re-construction d&#8217;une nouvelle plate-forme implique la restauration de La Production avec des données froide provenant de sauvegarde au minimum  [Nécessaire].</li>
</ul>
<h2>Cas de débug.</h2>
<ul>
<li>Réalisable en production car non reproductible et non observable en infra isolée (dev ou maquette), corrélé à une charge, utilisation particulière ou car la cause pouvant être systémique et relever d&#8217;un conjonction Infa / Code / Aws environnement [Nécessaire].</li>
<li>Pourvoir faire une lecture en parallèle et simultané des logs applicatifs et systèmes pour un rôle / instances ou plusieurs rôle / instances sélectionnés comme pour la plate-forme en entier [Nécessaire].</li>
<li>Pourvoir augmenter ou diminuer  la verbosité des log applicatifs et systèmes pour un rôle ou plusieurs rôle sélectionnés comme pour la plate-forme en entier [Souhaité].</li>
<li>Pouvoir prendre en compte de nouveau log applicatifs à la demande du dev et/ou à chaque version de code  [Idéal].</li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.karlesnine.com/2012/04/17/besoins-lies-a-lexploitation-dans-le-cloud-iaas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

