Publié dans Supervision, ubuntu

Installer Zabbix avec postgresql


Zabbix kezako ??? hé oui c’est un outil opensource pour faire de la supervision. Si vous n’êtes pas admin système aussi c’est pas grave je vais dans les lignes qui suives essayer d’expliquer de manière brève c’est quoi la supervision et son intérêt.

De manière générale, la supervision est un procédé permettant de surveiller le bon fonctionnement d’un système ou d’une activité. Ainsi elle est un moyen indispensable et incontournable dans l’atteinte des objectifs de l’administration des systèmes. Elle met en œuvre un ensemble de moyen pour :

  • Offrir aux utilisateurs un service de qualité.
  • Permettre l’évolution du système en incluant de nouvelles fonctionnalités.

  • Optimiser les performances des services pour les utilisateurs.

  • Permettre une utilisation maximale des ressources pour un coût minimal.

Ainsi de par sa fonction administrative, la supervision fournit les informations et indicateurs nécessaires au pilotage du système d’information de l’entreprise.

Si vous voulez en savoir plus GIYF. Sinon passons à l’attaque.

Prérequis :

  • Disposer d’une machine Ubuntu LTS 16.04 fraichement installée.
  • Installer Postgresql
  • Installer Apache2 Php7.0

Installation

La première chose à faire c’est d’ajouté le repository de zabbix dans notre système Ubuntu.

$ wget http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+xenial_all.deb
$ sudo dpkg -i zabbix-release_3.4-1+xenial_all.deb
$ sudo apt-get update

Ensuite nous allons installer zabbix pour la base postgresql

 $ sudo apt install zabbix-server-pgsql

Zabbix est bien installé maintenant passons à l’installation  l’interface Web

$ sudo apt-get install zabbix-frontend-php php7.0-pgsql

Nous devons préparer aussi la base de donnée pour la faire communiquer avec zabbix. Et dans ce cas nous allons créer un utilisateur zabbix dans postgresql dans un premier temps pour ensuite créer la base. Ainsi le rôle va gérer la base de donnée tel est la volonté de postgresql.

$ sudo -u postgres createuser --pwprompt zabbix
$ sudo -u postgres createdb -O zabbix zabbix

L’autre étape importante de l’installation de zabbix est l’importation des données dans la nouvelle base de données. Nous le ferons avec la commande suivante

zcat /usr/share/doc/zabbix-server-pgsql/create.sql.gz | sudo -u zabbix psql zabbix

Maintenant que la base est importée.Nous allons founir à zabbix les accés pour accéder à la base de donnée.Nous devons éditer le fichier suivant pour ce faire.

$ sudo nano /etc/zabbix/zabbix_server.conf

Parcourir le fichier et mettre les informations like this

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password for user zabbix

Nous pouvons aussi définir le timezone en éditant le fichier de configuration php qui contient tous les paramètres nécessaires pour l’interface web de zabbix.

sudo nano /etc/apache2/conf-enabled/zabbix.conf

Nous aurons un fichier comme ca :

<IfModule mod_php7.c>
    php_value max_execution_time 300
    php_value memory_limit 128M
    php_value post_max_size 16M
    php_value upload_max_filesize 2M
    php_value max_input_time 300
    php_value always_populate_raw_post_data -1
    php_value date.timezone Africa/Dakar
</IfModule>

Pour retrouver les timezone suppotés c’est par ici

Enfin redémarrer les services zabbix et apache2

$ sudo service zabbix restart
$ sudo service apache2 restart 

Pour terminer l’installation du frontend accéder à l’url  http://x.x.x.x/zabbix .
Remplacer x.x.x.x par l’adresse ip de votre serveur zabbix.

Aprés vous aurez une interface graphique avec une assistance de configuration assez intuitive.

Sélection_001

Ensuite l’étape 2  nous montre si toutes les dépendances sont satisfaites.

Sélection_002

Pour l’etape 3 nous allons mettre les accés pour se connecter à notre base de donnée.

Sélection_003

l’épta 4 est optionnel.

Sélection_004

Et l’avant derniére étape nous donne un résumé de notre configuration acutelle

Sélection_005

Si tout se passe bien nous aurons:

Sélection_006

Et  la configuration web finie  nous allons nous connecter à l’interface web.

Sélection_007
les accés par defaut sont:

Username = Admin
Password = zabbix

Voila CTQFM!

Publié dans debian, GNU/Linux, Langages, Linux, Python, webdev

Gérer vos environnements virtuels avec Virtualfish sur fish shell.


Hello  python guys  , je vous présente un outil que j’aime bien pour gérer mes environnements virtuels dans python.je veux nommer VirtualFish (VF) qui est un outil à base de virtualenv.Mais avant d’avancer je dois vous avouer qu’il faut laisser de coté le célèbre bash  et migrer vers fish shell qui est plutôt « intelligent ». Je vous parlerai pas de la différence entre bash et fish et laisse la tache à votre curiosité j’ai confiance en elle :-p . Personnellement je le trouve fabuleux comme shell et pour info je suis passé de bash à zsh+Ohmyzsh pour finalement rester sur Fish.

Prérequis

    • Disposer d’une machine GNU/LINUX
    • Installer fish
      sudo apt install fish 
    • Démarrer le shell  fish
      :~$ fish 
    • Nous aurons quelque chose comme:
      Welcome to fish, the friendly interactive shell
      elwan@elwan ~>
      

    Nous pouvons aussi garder les deux shells selon votre convenance et démarrer sur fish uniquement si nous le désirons et pour fixer fish comme shell par défaut ouvrons un terminal et exécutons la commande suivante:

     chsh -s `which fish` 

Installation de Virtual fish

Pour l’installer nous allons utiliser Pip et taper la commande suivante :

pip install virtualfish

Ajoutons la ligne suivante sur le ficher ~/.config/fish/config.fish

eval (python -m virtualfish) 

Configuration de fish

Virtualenv ne sera pas automatiquement intégrer dans notre invite de commande (prompt) fish pour l’ajouter nous allons taper la commande

    funced fish_prompt 

Et ajoutons la ligne suivante n’importe ou dans le fichier ouvert

if
set -q VIRTUAL_ENV
echo -n -s (set_color -b blue white) "(" (basename "$VIRTUAL_ENV") ")" (set_color normal) " "
end

Ensuite pour sauvegarder les modifications sur le prompt nous pouvons taper la commande:

     funcsave fish_prompt 

Comment utiliser Virtualfish

Nous pouvons citer quels commandes utiles

  • vf new [] pour créer un environnement virtuel
  • on peut même spécifier la version de python que l’on souhaite utiliser ex :

    vf new -p python3 test 
  • vf activate pour activer un environnement virtuel
  • vf activate test 
  • vf deactivate pour sortir de l’environnement virtuel en cours
  • vf deactivate 
  • vf ls pour lister l’ensemble des environnements virtuels qui ont été créés
  • vf ls  
  • vf rm pour supprimer un environnement virtuel
  • vf rm test 

Pour avoir toutes les commandes disponibles nous pouvons juste de taper vf dans le prompt

Ajouter les plugins

Il existe des plugins natifs dans virtualfish et pour les avoir au niveau du prompt nous devons éditer le fichier de config et ajouter leur nom en argument à virtualfish.
Ex:

eval (python -m virtualfish compat_aliases auto_activation) 

La liste des plugins que nous pouvons ajouter à VF.

    • compat_aliases

Permet de d’avoir les commandes de virtualenvwrapper

    • auto_activation

pour activer virtualenv dans certain repertoire automatiquement

    • global_requirements

mettre une liste de dépendances dans un fichier requirements.txt et l’appliquer pour touts les nouveaux environnements

    • projects

ajouter les fonctionnalités de gestion par projet

Voilu voila et si vous avez des remarques ou des outils plus cool n’hésiter pas à partager en commentaire.

Publié dans GNU/Linux, Linux, Serveurs, ubuntu

Ajouter une machine Ubuntu(GNU/Linux) dans un domain Active Directory (LDAP)


Les systèmes d’exploitation GNU/Linux  n’ont pas la cote en entreprise c’est un fait,tu as beau essayé  de les défendre les gens (la majorité des DSI) préférerons utiliser  le système Windows et d’après le peu d’expérience que j’ai eu je pense que cette manque de considération est du a une désinformation. Ils te dirons toujours que Linux c’est compliqué et l’argument qui revient souvent est le manque de support en cas de problème.En entreprise on cherche toujours quelqu’un a indexer en cas de problème et malheureusement c’est pas tres viril d’indexer une communauté de bénévoles qui offrent un peu de leur temps libre.

Si jamais vous arrivez à convaincre  vos collègues sur les avantages d’avoir une ou des machines GNU/Linux l’authentification unique ou Single Sing-on en anglais ne doit pas être un frein.

Dans mon scénario on a un contrôleur de domaine avec Active Directory et on veut ajouter des machines Ubuntu dans le domaine et bénéficier des avantages de active directory .

Il existe plusieurs méthodes pour ajouter une machine Ubuntu dans AD mais sur ce tutoriel nous avons choisi de faire avec  le logiciel SSSD.Let’s setup.

Pré-requis :

  • Avoir un serveur Active Directory fonctionnel
  • Installer ubuntu 16.04
  • S’assurer que votre controller de domaine est votre  premier resolver et le mettre dans /etc/resolv.conf
  • Dans ce tuto le domaine sera base.corp et notre serveur serverdc.base.corp

Installation des logiciels

sudo apt install samba sssd krb5-user ntp ntpdate

Configuration de NTP

la premiere étape consiste à synchroniser le serveur AD avec la machine cliente.C’est important pour la bonne marche de Keberos qui présente un dysfonctionnement s’il le serveur et la machine on un décalage de plus de 5 minutes.

sudo service ntp stop
sudo ntpdate -s serverdc.base.corp
sudo service ntp start

Configuration de /etc/hosts & /etc/resolv.conf

/etc/hosts

192.168.1.20 serverdc server.base.corp

/etc/resolv.conf

nameserver 192.168.1.20
domains base.corp
dns-search base.corp

Configuration de Keberos

[libdefaults]
	default_realm = BASE.CORP
[realms]
	BASE.CORP = {
		kdc = serverdc
		admin_server=serverdc
		default_domain=BASE.CORP
	}
[domain_realm]
	.base.corp=BASE.CORP
	 base.corp = BASE.CORP

Toujours mettre en majuscule le domaine

Configuration de SSSD

Le fichier sssd.conf n’existe pas par défaut il faut donc le créer et le mettre dans /etc/sssd.


sudo touch /etc/sssd/sssd.conf
sudo chown root:root /etc/sssd/sssd.conf
sudo chmod 600 /etc/sssd/sssd.conf

Ensuite y mettre les éléments suivants.

[sssd]
services = nss, pam
config_file_version = 2
domains = BASE.CORP

[domain/BASE.CORP]
id_provider = ad
override_homedir = /home/%d/%u
access_provider = simple
simple_allow_users =  admin@snsp.corp,users@snsp.corp
simple_allow_groups = linux-admin,linux-users

Les deux dernières lignes permettent de filtrer la connexion des utilisateurs donc ici seul les 2 utilisateurs appartenant aux groupes lister pourront s’authentifier.Au cas contraire tous les utilisateurs du domaine pourront le faire.

Configuration de Samba

Editer le fichier /etc/samba/smb.conf et modifier la configuration de Workgroup

# Change this to the workgroup/NT-domain name your Samba server will part of
  # workgroup = WORKGROUP
workgroup = BASE
client signing = yes
client use spnego = yes
kerberos method = secrets and keytab
realm = BASE.CORP
security = ads

Relancer les services

sudo service smbd restart
sudo service nmbd restart
sudo service sssd restart
sudo service ntp restart

Ajouter la machine dans le domain

Il faut s’assurer qu’on a un compte qui peut ajouter dans des machines dans le domaine.le mot de passe du compte vous sera demander.

kinit adadmin

Si tout se passe bien on ajouter la machine avec cette commande

sudo net ads join -k

Si vous avez l’erreur suivant « Failed to join domain: failed to lookup DC info for domain ‘BASE.CORP’ over rpc: An internal error occurred. »
Essayer avec la commande suivante.

sudo net ads join -U admin

Maintenant aller regarder dans votre interface d’ajout de machine dans Active Directory vous y verrez la machine.

Vous pouvez maintenant utiliser ssh ou vous connecter directement dans l’interface de login de votre machine

par ssh

 ssh base\\admin@ipdevotremachine
#ou
ssh base@ipdevotremachine

let’s enjoy.

Publié dans Python

Lister les nouveaux fichiers et supprimer les anciens dans un repertoire avec python


Si vous sauvegardez des fichiers logs  dans un répertoire vous aurez peut être envi un jour de faire le ménage  en supprimant les anciens fichiers et garder les nouveaux.Je suis plus ou moins dans le même contexte et j’ai écrit un script en python qui fait mon bonheur.Si jamais ça peut vous être utile temps mieux :-).

# Supprimer les anciens fichiers .dat et garder les n plus récents
import os
path = '/Users/elwan7/fichier_dat/'
nombre_fichier_recent = 5

os.chdir(path)
fichiers = sorted(os.listdir(os.getcwd()), key=os.path.getmtime)
fichiers_dat = []
for element in fichiers:
    if element.endswith('.dat'):
        fichiers_dat.append(element)

liste_nouveau = fichiers_dat[-nombre_fichier_recent:]
file_to_delete = fichiers_dat
for r in liste_nouveau:
    file_to_delete.remove(r)
if file_to_delete:
    for i in file_to_delete:
        os.remove("{}".format(path + '/' + i))