Installer Zabbix 1.8.x avec PostgreSQL sur CentOS 5

Zabbix est une application de monitoring. Elle permet de surveiller votre parc de serveurs, d’applications et de sites Web. Elle se compose d’un serveur ainsi que d’agents (facultatifs, mais qui permettent de récupérer plus d’informations locales que SNMP) sur chacune des machines à monitorer.

Nous allons voir comment installer le serveur Zabbix ainsi que son front-end Web écrit en PHP, sous CentOS 5.

Installation du serveur Zabbix

Installation des dépendances

Avant tout, nous allons installer les dépendances de Zabbix, à savoir les librairies zlib, curl, openssl, net-snmp et openIPMI, pour pouvoir utiliser au maximum les fonctionnalités de Zabbix. Nous allons également installer un système de gestion de base de données, pour stocker toutes les données: PostgreSQL.

Nous allons maintenant initialiser la nouvelle base de données PostgreSQL:

Important: si vous avez déjà une base de données PostgreSQL sur votre serveur, n’initialisez pas la base! Vous pouvez également voir comment installer PostgreSQL 8.x sous Debian.

Installation du serveur

Maintenant, nous allons télécharger les sources de Zabbix pour l’installer. Vous trouverez les archives des sources sur la page de téléchargement du site Web de Zabbix.

Maintenant, nous allons commencer le processus de compilation en utilisant le programme ./configure avec nos options:

Si toutes les dépendances sont satisfaites, vous devriez avoir ce message:

Enable server: yes
Server details:
With database: PostgreSQL
WEB Monitoring via: cURL
Native Jabber: no
SNMP: net-snmp
IPMI: openipmi
SSH: no

[…]
Enable agent: yes
Agent details:
Linker flags: -rdynamic
Libraries: -lm -lresolv

LDAP support: no
IPv6 support: yes

Ensuite, il nous reste à compiler Zabbix:

À ce moment, vous pouvez installer Zabbix sur votre système comme ceci:

Note: Vous pouvez également créer un paquet de Zabbix avec cette configuration grâce au programme checkinstall.

Continue reading Installer Zabbix 1.8.x avec PostgreSQL sur CentOS 5

facebooktwittergoogle_plusredditpinterestlinkedinmail

Tunnel HTTP sur SSH: Connexion sécurisée et non filtrée

Si vous utilisez une connexion Internet filtrée (qui ne laisse passer que les paquets HTTP par exemple) ou publique sur laquelle vous faites passer des données confidentielles, vous pouvez passer par un tunnel SSH, encapsulé dans un tunnel HTTP. Ainsi, les règles de filtrage ne s’appliquent pas à vos paquets HTTP – la connexion n’est donc plus bridée – et les données sont cryptées via le protocole SSH. Il y a donc une triple-encapsulation de vos paquets:

Paquet X -> SSH -> HTTP -> Serveur relais -> HTTP -> SSH -> Paquet X

Le seul prérequis est que vous devez avec un serveur relais hors de votre réseau sur lequel vous avez un compte SSH, et sur lequel est installé HTTPTunnel. Votre ordinateur client doit également avec HTTPTunnel d’installé.

Installation de HTTPTunnel

Sur Debian ou sous CentOS, le paquet httptunnel est disponible respectivement dans les dépôts stable et EPEL.

Note: installez httptunnel sur votre machine ainsi que la machine relais, comme décrite dans l’introduction.
Note: Sous CentOS, si l’utilitaire yum ne connait pas le paquet httptunnel, ajoutez le dépôt RPMForge avec la commande suivant:

Continue reading Tunnel HTTP sur SSH: Connexion sécurisée et non filtrée

facebooktwittergoogle_plusredditpinterestlinkedinmail

Mettre à jour gcc sur CentOS 5

La version de gcc (ainsi que g++, dont le nom du packet est gcc-c++) présente de base dans CentOS 5 est la version 4.1.2. Si vous avez besoin d’une version plus récente de gcc et/ou de g++ vous devez simplement utiliser le packet gcc44, qui contient – comme son nom l’indique – la version 4.4 de gcc. Pour ce faire, vous devez lancer les commandes suivantes:

Ensuite, pour permettre la rétrocompatibilité, il vous suffit de créer les liens symboliques suivants:

Ainsi, la version 4.4 de gcc est présente sur votre CentOS 5:

facebooktwittergoogle_plusredditpinterestlinkedinmail

Facebook + PHP = Hyper-PHP

Lisez l’article plus récent: PHP & Facebook II: HipHop et HPHPi »

Voilà quelques temps que les rumeurs circulent, je vais donc faire un petit résumé de ce que l’on appelle Hyper-PHP, ou HPHP. Le site web de l’entreprise Facebook est composé à 90% de PHP, un langage de programmation tourné vers le Web, qui est ré-analysé depuis de début à chaque fois, c’est-à-dire qu’a chaque installation, le runtime PHP doit analyser toute la source pour faire tourner le script PHP, c’est ce qui lui confère une lenteur par rapport aux applications compilées.

Et bien Facebook aurait décidé, il y a 2 ans, de mettre un développeur à part entière sur ce projet, qui aurait pour but de créer une sorte de compilateur pour PHP. C’est en effet ce que ressort d’une interview anonyme recueilli par TheRumpus.net.

He is creating HPHP, Hyper-PHP, which means he’s literally rewriting the entire language. […] So this engineer is converting the site from one that runs on a scripted language to one that runs on a compiled language.

Alors que l’annonce doit avoir lieu aujourd’hui, le 2 février 2010, cette nouvelle mouture de PHP, si l’on peux l’appeler comme ça, va très certainement changer beaucoup de choses car d’après l’ingénieur Facebook chargé de ce projet, Hyper-PHP consommerait 80% de CPU en moins tout en ayant des performances augmentées de 80% ! Il sera de plus partagé en Open Source, comme un grand nombre de projets de Facebook.

A bientôt pour la suite! :-)

facebooktwittergoogle_plusredditpinterestlinkedinmail

MyOnlineSSH: Connectez-vous en SSH depuis un simple navigateur Internet

Vous pouvez aussi voir la page du projet MyOnlineSSH.

MyOnlineSSH est un service permettant de se connecter à un serveur en SSH directement depuis votre navigateur. La configuration necessaire est très petite:

  • Un navigateur avec le JavaScript activé
  • Flash Player installé
  • Le port 80 ouvert

En effet, seul le port 80 suffit pour se connecter au SSH à l’aide de MyOnlineSSH comme vous pouvez le voir dans la page Aide de MyOnlineSSH.

Je vous invite donc à tester dès à présent MyOnlineSSH:

http://www.myonlinessh.com

D’ici peu, une traduction anglaise de MyOnlineSSH verra le jour pour nos amis anglophones.

facebooktwittergoogle_plusredditpinterestlinkedinmail

ActionScript: Socket.writeUTFBytes ne marche pas

Pendant de nombreuses heures, j’ai chercher à faire marcher les Sockets d’ActionScript. Ceux-ci ne marchaient pas, alors que le policyfile était chargé, il y a avait même un socket policy file server de mis en place, et le policyfile.txt ne m’affichais que des résultats positifs. Encore plus impressionnant, le socket créait une connexion mais les différentes commandes que je souhaitait envoyer ne passaient pas… C’est pourquoi, au bout d’un moment, j’ai utiliser Wireshark pour analyser les différents paquets envoyés. C’est avec celui-ci que j’ai pu voir que uniquement des paquets ACK et SYN étaient envoyés entre le client (via le Flash) et le serveur (socket). Ceux-ci étaient responsables de la connexion établie.

Seulement, les paquets réseau PSH (pour Push) qui envoient les commandes n’étaient pas créés, pas même de paquets déformés contenant mes commandes. Je suis sur Ubuntu 64bits, avec un Flash Player 10, version débuguage 32bits. Donc, un petit essai sur Ubuntu 32bits avec le flash player “basique”, et… miracle, ça marche ! Windows XP, ça marche !

En fait, mon code marchait depuis longtemps mais, pas de bol, ma version du Flash Player est bugguée avec les Sockets… Par conséquent, lorsqu’il se passe des choses comme ça, essayez avec d’autres versions, d’autres environnement car il arrive que se ne soit pas votre application qui soit bugguée mais une autre ! 😉

facebooktwittergoogle_plusredditpinterestlinkedinmail

Forcer Eclipse à utiliser une certaine version de Java

Pour une raison on une autre – personnellement pour exécuter eclipse en 32bits sur un système 64bits – on a plusieurs versions de Java installées sur la même machine et ces différentes versions – pas de le sens numéro – ont une importance puisqu’elles ne s’éxécutent pas de la même manière, c’est-à-dire n’ont pas la même numéro de version ou ne s’éxécutent pas avec la même infrastucture. Bref, si vous souhaitez utiliser une version spéciale de Java dans Eclipse vous pouvez modifier le fichier config.ini à la racine du dossier d’installation d’Eclipse.

Dans ce fichier config.ini, ajoutez ces deux lignes:

Avant la ligne définissant les arguments de la VM (Virtual Machine – Machine Virtuelle), s’il y en a :

Si vous souhaitez utiliser une version spéciale de Java par défaut dans tout le système, c’est possible.

facebooktwittergoogle_plusredditpinterestlinkedinmail

Vider le cache (php) des fichiers WSDL

En PHP, on peut spécifier l’option wsdl_cache à 0 pour désactiver le cache des fichiers WSDL. Le problème, c’est que si la commande (SoapClient) a déjà été éxécutée sans cette option, le fichier est en cache et même avec cette option, le fichier cachée est utilisé. En fait, wsdl_cache interdit la mise en cache du fichier et non l’utilisation du fichier caché.

Pour vider le cache, il vous suffit de supprimer tous les fichiers commencant par wsdl- dans le répertoire temporaire /tmp. Exécutez en root:

facebooktwittergoogle_plusredditpinterestlinkedinmail

PHP SOAP: looks like we got no XML document

SOAP est un protocol vraiment très pratique mais la création du fichier wsdl est parfois compliquée… Il arrive de plus que parfois il y ai des erreurs que l’on ne peut pas vraiment indentifer. Si une erreur comme celle-ci vous arrive, voici comment débugger :

SoapFault exception: [Client] looks like we got no XML document

Cela signifie que la réponse reçue par SoapClient de la part du serveur n’est pas sous la forme d’un XML ou est sous la forme d’un XML mais cassé. Dans un premier temps, il faut ajouter l’option trace avec une valeur 1 aux options de SoapClient. Exemple:

Pour plus d’informations sur wsdl_cache, lisez le petit article sur le cache WSDL et PHP.

Ensuite, pour savoir exactement ce que SoapClient a reçu, il vous suffit d’appeller la fonction __getLastResponse :

Note: Il existe aussi la fonction __getLastRequest qui retourne la requête précédente.

facebooktwittergoogle_plusredditpinterestlinkedinmail

PHP: Utiliser le mode E_STRICT est une très bonne chose !

Depuis la version 5.0 de PHP, un nouveau mode d’erreur est apparu: E_STRICT. Il ne fait pas parti de E_ALL et est désactivé par défaut dans toute installation classique de PHP. Ce nouveau mode permet en fait de générer des conseils à partir de votre code. Testez-le, vous verez c’est sympa ! Il peut par exemple retourner ce genre d’erreur:

Strict Standards: date() [function.date]: It is not safe to rely on the system’s timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Europe/Berlin’ for ‘CEST/2,0/DST’ instead in /home/mon/fichier.php on line 196

Note: Si vous tombez ici par hasard et que vous souhaitez la liste des timezones disponibles dans PHP, elle est disponible à cette adresse.
Ici, PHP me fait penser que j’utilise la valeur par défaut du timezone du système d’exploitation. Étant sur mon propre serveur, il n’y a pas de problèmes mais sur un serveur mutualisé, on peut avoir des surprises ! 😉

Activer les rapports E_STRICT

Pour activer les rapports d’erreurs E_STRICT, c’est très simple. Ajoutez en haut de votre fichier PHP cette commande:

Ou modifiez votre fichier php.ini directement !

Note: Désactivez ce mode en production, c’est préférable :)

facebooktwittergoogle_plusredditpinterestlinkedinmail