PROJET AUTOBLOG


Le blog de Seboss666

Site original : Le blog de Seboss666

⇐ retour index

Explication du php slowlog

vendredi 23 juin 2017 à 18:30

J’ai déjà abordé certaines méthodes de furieux pour analyser des problèmes avec PHP, notamment personnels avec ce blog suite à mon passage sur PHP 7. Un autre cas qu’on évoque rarement, c’est quand l’exécution est simplement trop lente. MySQL et MariaDB ont leur « slowlog » (journal lent, haha), PHP et surtout FPM propose également ce mécanisme pour nous permettre de mieux cerner le problème. Petite explication.

Je n’ai pas souvent l’occasion d’y jeter un œil, mais c’est une donnée pratique pour identifier un problème. Ce journal est en fait généré par FPM lorsqu’un appel à un script prend plus de temps, le seuil étant géré par un paramètre de configuration au niveau du pool. On récupère alors une « stacktrace », c’est à dire le cheminement de fonctions qui ont amené le script où il en est.

Le journal s’active dans le fichier de configuration de votre pool. Par exemple, pour le mien, sous Debian 8 donc avec les paquets PHP7 de Dotdeb  (/etc/php/7.0/fpm/pool.d/web1-blog.seboss666.info.conf) :

slowlog = /var/www/blog.seboss666.info/log/php_slow.log
request_slowlog_timeout = 60s

Dans l’exemple, j’ai pris une valeur de 60 secondes, mais vous pouvez choisir de bourrer une valeur plus faible, un client m’a sorti une valeur de 2 secondes, c’est à déterminer en fonction de la quantité d’information et du niveau de performances que vous cherchez à atteindre. Vous serez peut-être même amené à modifier plusieurs fois cette valeur pendant une investigation.

Le résultat aura la forme suivante :

[04-Jun-2017 12:31:05]  [pool web1] pid 25539
script_filename = /var/www/blog.seboss666.info/web/wp-cron.php
[0x00007f3461613c90] curl_exec() /var/www/clients/client0/web1/web/wp-includes/Requests/Transport/cURL.php:162
[0x00007f3461613bc0] request() /var/www/clients/client0/web1/web/wp-includes/class-requests.php:379
[0x00007f3461613ab0] request() /var/www/clients/client0/web1/web/wp-includes/class-http.php:371
[0x00007f3461613910] request() /var/www/clients/client0/web1/web/wp-includes/class-http.php:630
[0x00007f3461613850] head() /var/www/clients/client0/web1/web/wp-includes/http.php:112
[0x00007f34616137a0] wp_safe_remote_head() /var/www/clients/client0/web1/web/wp-includes/functions.php:643
[0x00007f34616136f0] wp_get_http_headers() /var/www/clients/client0/web1/web/wp-includes/functions.php:602
[0x00007f3461613510] do_enclose() /var/www/clients/client0/web1/web/wp-includes/comment.php:2450
[0x00007f34616133f0] do_all_pings() /var/www/clients/client0/web1/web/wp-includes/class-wp-hook.php:298
[0x00007f3461613300] apply_filters() /var/www/clients/client0/web1/web/wp-includes/class-wp-hook.php:323
[0x00007f3461613280] do_action() /var/www/clients/client0/web1/web/wp-includes/plugin.php:515
[0x00007f34616131a0] do_action_ref_array() /var/www/clients/client0/web1/web/wp-cron.php:117

La première ligne indique évidemment le script en cause dans l’enregistrement de la trace. La suite de la stack se lit à l’envers : de bas en haut, on décrit la série des fonctions qui ont abouti à la lenteur, la dernière (et donc la première affichée), étant généralement la fautive. En l’occurrence, ici c’est un curl_exec() qui semble être problématique. A tel point que le pool FPM est finalement tellement occupé qu’il ne pouvait plus traiter de nouvelles demandes. Et on indique la ligne à laquelle le curl_exec() en question est appelé, ce qui permet éventuellement d’identifier la destination dudit curl, et donc d’analyser plus finement pourquoi il échoue ou est trop lent (webservice surchargé, ou qui limite à un certain nombre de connexions/requêtes dans le temps). Ça peut également pointer un problème de paramétrage de la fonction, je pense notamment à un timeout qui manquerait ou qui serait trop long, laissant empiler les appels qui attendent une réponse qui n’arrive jamais; je pourrais vous raconter l’histoire d’un client qui avait ce problème à cause d’une Google Mini vieillissante et parfois plantogène. Pour les plus courageux, histoire de pas morceler l’article, je vous raconte l’histoire de cette machine à la fin de l’article.

Les sources de ralentissement peuvent être variées, les plus courantes étant probablement le cas évoqué plus haut ou une lenteur au niveau de la base de données. Très récemment, un client qui passe bientôt en production a vu son test de montée en charge décevant, le slowlog m’a permis de déterminer un goulet d’étranglement sur une génération de PDF (un appel externe à wkhtmltopdf pour être exact). J’apprends qu’au final, la page s’appelle elle-même pour envoyer son rendu à wkhtmltopdf (ce qui finalement prend plusieurs secondes). Avec 80 utilisateurs simultanés, même sur 6 vCPU, les performances s’écroulent, sans il peut encaisser 500 utilisateurs. Il est donc prévu que le client revoit son workflow pour réduire ce goulet.

Bref, un outil de plus à vous garder sous le coude pour vos investigations 😉

PS : Je vous raconte la Google Mini ?

Pour son site grand public, un client utilise une Google Mini pour son moteur de recherche. La Google Mini, où Google Search Appliance, est un matériel vendu à une époque par Google qui embarquait ses algorithmes et était chargé d’indexer un site en particulier (ou plusieurs, bref, c’était votre mini Google, d’où son nom). Cette machine est proche de la boîte noire, le snmp est vraiment ridicule (en gros les différentes sondes remontent « OK, attention, cassé »), pas de ssh, et donc il arrive parfois, surtout arrivé à un certain âge, que la boiboite soit capricieuse.

Dans ce cas, deux niveaux généralement : la boîte accepte encore des connexions mais n’y répond pas, et c’est la situation que j’explique au-dessus : le pool se remplit de requêtes en attente qui n’aboutissent pas. Sauf que le moteur de recherche du site est une de ses principales fonctions. Dans le deuxième cas on est plus tranquille parce que tout simplement ça n’accepte plus les connexions, et là la réponse est immédiate : 0 résultat. Mais là ça se complique. La GSA est un appareil qu’on installe en Datacenter, et donc qu’on s’attend à pouvoir administrer  à distance sous une forme ou une autre. Mais point D’IPMI (Intelligent Platform Management Interface), de KVM (Keyboard Video Mouse), ni d’alimentation contrôlable. Pire, impossible d’utiliser un PDU (Power Distribution Unit), à savoir une prise contrôlable à distance pour simuler un débranchement /rebranchement de prise. Mais, la GSA n’est pas prévue pour redémarrer seule, il faut l’intervention d’un humain pour appuyer sur le bouton. On comprend mieux pourquoi ils n’en ont pas beaucoup vendu et qu’ils ont arrêtés les frais.

Les ACL c’est puissant, mais faut faire gaffe

mardi 20 juin 2017 à 18:30

Le problème quand on passe d’un serveur avec PHP en module Apache à un PHP en mode FPM multi-utilisateurs, c’est que certaines habitudes et certains process partent du principe que c’est openbar sur les permissions et droits d’accès (tout appartient au même utilisateur). Pour contourner cette limitation tout en gardant un niveau de sécurité acceptable, on peut utiliser les ACL plutôt que de jouer avec les groupes, qui seront moins souples par la suite.

ACL, kézaco ?

Access Control List, permet de gérer les droits utilisateur par utilisateur et groupe par groupe sous la forme d’une liste en plus des simples permissions classiques des systèmes sous Linux avec rwx pour le propriétaire, le groupe, et le monde. C’est très puissant, et ça permet de contourner le problème que j’ai évoqué au dessus.

Le principe d’une liste de contrôle d’accès est utilisé dans plusieurs logiciels, et pas seulement pour les fichiers et dossiers sous Linux. Le logiciel de discussion vocale Mumble utilise notamment les ACL pour gérer les droits des utilisateurs sur les canaux de discussion et les fonctions du service. C’est d’ailleurs mon premier contact avec le concept d’ACL, et j’ai mis un certain temps à comprendre comment ils l’avaient implémenté.

Mais revenons au sujet d’aujourd’hui. Et commençons par le début, à savoir à quoi ressemble les permissions (extrait) :

drwxr-xr-x 18 web1 client0 12288 janv. 14 10:45 wp-includes
-rw-r--r--  1 web1 client0  2221 juil.  4  2015 favicon.ico

J’ai pris un fichier et un dossier pour bien distinguer les deux, mais le principe est similaire dans les deux cas. Les deux appartiennent à l’utilisateur web1, au groupe client0, les permissions indiquent que seul le propriétaire peut modifier les deux (pour le dossier ça veut dire y ajouter des fichiers ou sous-dossiers), le groupe et le reste du monde peuvent lire (fichier) et parcourir (dossier).

Admettons maintenant que je veuille autoriser un utilisateur web13 à accéder au dossier, mais qu’il ne fait pas partie du groupe client0. Soit je l’ajoute au groupe, et si je veux lui donner des droits d’écriture (c’est ce qui est le plus bloquant généralement), je dois ajouter les droits d’écriture pour tout le groupe (pas évident si on ne veut pas que les autres membres du groupe modifient), soit on passe par des ACL.

Est-ce que le support est activé ?

En effet, comme ce n’est qu’une option du système de fichiers, il faut vérifier que c’est activé. Deux possibilités pour vérifier, la présence de l’option dans le fichier /etc/fstab, soit les infos retournées par tune2fs :

#/etc/fstab

/dev/mapper/vox--vg-root /               ext4    errors=remount-ro,noatime 0       1

#options fs
root@vox:~# tune2fs -l /dev/mapper/vox--vg-root |grep mount

Last mounted on:          /
Default mount options:    user_xattr acl
Last mount time:          Sat May  6 15:18:20 2017
Maximum mount count:      -1

Dans mon cas, c’est dans les options du système de fichiers, si vous voulez passer par là pour l’activer, c’est la commande suivante qu’il faut taper :

root@vox:~# tune2fs -o acl /dev/mapper/vox--vg-root

En fonction des méthodes il faudra peut-être redémarrer si un remount ne suffit pas.

Les choses sérieuses

Bon, alors, comment ça fonctionne ? Commençons déjà par vérifier s’il y a quelque chose de défini :

root@vox:/var/www/blog.seboss666.info/web# getfacl favicon.ico
# file: favicon.ico
# owner: web1
# group: client0
user::rw-
group::r--
other::r--

Bon là, on a juste les permissions standards qu’on connaît déjà. Eh bien les ACL vont nous permettre de définir des permissions analogues juste pour notre utilisateur supplémentaire. Ajoutons donc les droits de lecture et surtout d’écriture sur le fichier :

web1@vox:/var/www/blog.seboss666.info/web$ setfacl -m u:web13:rw favicon.ico
web1@vox:/var/www/blog.seboss666.info/web$ getfacl favicon.ico
# file: favicon.ico
# owner: web1
# group: client0
user::rw-
user:web13:rw-
group::r--
mask::rw-
other::r--

J’ai fait exprès de basculer sur l’utilisateur web1 pour montrer qu’il n’est pas nécessaire d’être administrateur pour pouvoir procéder, seulement être le propriétaire du fichier. J’ai donc modifié les ACL (-m), indiqué qu’on ajouterait des permissions pour l’utilisateur web13 (u:web13), et indiqué les permissions lecture/écriture (rw). Voilà, c’est aussi simple que ça.

Il faut savoir qu’on peut, avec l’option -R, faire de même de manière récursive quand on procède sur un répertoire. Quand vous avez des milliers de fichiers à traiter d’un coup, c’est bien mieux. Vous pouvez également définir des permissions pour un groupe au lieu d’un utilisateur.

Les pièges de l’ACL

C’est bien, mais si on a besoin que les droits s’appliquent sur des fichiers et dossiers qui n’existent pas encore ? Eh oui, setfacl ne travaille par défaut que sur des fichiers ou dossiers existants. Si on veut que ça soit le cas pour les fichiers futurs, il faut placer une ACL « par défaut » sur le dossier dans lequel on veut que les fichiers héritent des permissions. L’option -d permet de s’en sortir :

web1@vox:/var/www/blog.seboss666.info/web$ setfacl -dm u:web13:rw wp-includes/
web1@vox:/var/www/blog.seboss666.info/web$ getfacl wp-includes/
# file: wp-includes/
# owner: web1
# group: client0
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:web13:rw-
default:group::r-x
default:mask::rwx
default:other::r-x

Et donc tout le contenu qui sera ajouté au dossier wp-includes héritera automatiquement des droits supplémentaires. L’option récursive fonctionne aussi dans le cas présent.

Maintenant, comment savoir si des ACL sont présentes ? Ce n’est pas évident :

web1@vox:/var/www/blog.seboss666.info/web$ ls -l |grep +
-rw-rw-r--+  1 web1 client0  2221 Jul  4  2015 favicon.ico
drwxr-xr-x+ 18 web1 client0 12288 Jan 14 10:45 wp-includes

En effet, le seul indice permettant de savoir si des ACL sont présentes est un simple « + » à côté des permissions classiques. Pas nécessairement choquants pour un novice, un peu à l’instar du Sticky bit. C’est pour ça que j’évite de les utiliser autant que possible et invite plutôt les clients à revoir leurs processus quand c’est possible. En fonction des situations, sudo sera un outil bien plus utile pour changer d’identité en fonction des besoins (billet dans lequel j’indique pourquoi j’évite les ACL autant que possible, mais entre temps, j’ai appris à leur sujet).

Bref, je reste encore mesuré quant à leur utilisation dans un contexte où une multitude d’administrateurs n’ont pas nécessairement le réflexe de vérifier la présence de ces ACL avant de faire joujou avec les permissions, mais je suis bien moins frileux à envisager leur utilisation quand la solution ne peut pas venir d’une évolution des processus de traitement.

PS : à noter que ces ACL ne sont pas conservées dans le cadre d’outils d’archivage, de git, et probablement d’autres.

Quelques liens en vrac et en français, 19° édition

vendredi 16 juin 2017 à 18:30

Je l’ai déjà indiqué, les brouillons avancent au ralenti ces derniers temps. Alors histoire de nourrir votre soif de lecture et occuper votre week-end, voici quelques trouvailles glanées au fil de mes navigations. Y’a pas forcément du très frais, mais bon, le Web étant devenu le monde de l’immédiateté, ça fait jamais de mal de s’attarder un peu sur ce qu’on a pu rater.

Liberté d’expression : le web européen subira-t-il la « malédiction du Titanic » ?

En ces temps troublés, dirigés par des paranoïaques, la liberté d’expression est attaquée de toute part. Et manifestement c’est pas près de s’arrêter, surtout quand on laisse les sociétés privées gérer l’espace public. Exemple récent avec Mozinor par Calimaq.

Postfix: blacklister une adresse/un domaine

Postfix est un MTA particulièrement flexible et puissant, et ce n’est pas pour rien que c’est l’un des plus utilisés pour transporter nos fameux mails. Dans ce billet, Loïc Blot vous présente rapidement comment filtrer les expéditeurs ou les destinataires.

Léa la girafe

Petite entorse à la lecture avec un sketch de Laura Laune sur une girafe qui cherche à se faire des amis. Malgré l’accoutrement de la comédienne, je déconseille vivement le visionnage aux enfants.

Analyse inforensique simple avec des outils gratuits

Zythom partage quelques réflexions sur les procédures à suivre et surtout les outils gratuits et/ou opensource qui permettent de faire une analyse approfondie d’un disque dur. En résumé, c’est faisable, mais ça ne s’improvise pas, ça demande du temps (comme l’autodidaxie tiens).

Hygiène numérique pour administrateur système

Aeris a eu l’occasion de gratifier certaines personnes d’une conférence marathon de 3h sur les bonnes pratiques à suivre quand on est un administrateur système pour non seulement protéger nos serveurs mais également les outils qui nous servent à nous y connecter. Certes vous n’aurez pas nécessairement besoin de tout appliquer, mais c’est une très bonne mise à jour condensée de mes articles sur la sécurisation de serveur (qui ne couvrent donc pas les outils que l’on utilise autour).

Comment repérer un site de phishing ?

J’utilise régulièrement mes 18 ans d’expériences de surf sur le Web pour repérer tout ce qui pourrait n’être pas « catholique » en terme de collecte. Mais tout le monde n’a pas cet historique, et dans ce cas, il n’est pas idiot de faire lire cet article qui est pas mal didactique aux personnes les moins bien armées. Histoire que moins de personnes se fassent voler ses identifiants, son identité, le contrôle de sa machine…

Tour d’horizon sur HTTPS et les en-têtes de sécurité

La messe est dite : le futur du Web sera chiffré, et il existe de multiples mécanismes pour paramétrer le protocole de sécurité qui a été choisi pour nous protéger des indiscrétions de tous bords. Alsacreations fait un petit inventaire des options à notre disposition pour en tirer le meilleur.

Un outil de conversion de timestamp

Un timestamp, c’est une notation informatique du temps en secondes depuis le premier Janvier 1970. Je comprend que cette représentation du temps est très utile, et surtout universelle, mais putain c’est juste imbuvable, et quand vos logiciels préférés s’en servent pour horodater leurs lignes de logs (genre, le slowlog de mysql), ça devient infernal de retrouver une information, spécialement sur un serveur de production. Ce petit site permet de faire la conversion simplement, surtout quand vous avez un date capricieux qui ne veut pas de votre date au format humain.

Un forfait 4G peut-il remplacer une box Internet ?

L’article est un vrai problème, mais il reste intéressant. Intéressant, parce qu’il montre à quel point une bonne 4G peut proposer des débits potables dans les deux sens, ce qui laisse un goût de bizarre quand on voit que les opérateurs poussent à fond la 5G (celle qui leur permet de s’asseoir définitivement sur la neutralité des réseaux); un vrai problème, parce que l’auteur parle de box Internet, qui de nos jours fait du triple play (Internet+VoIP+TV), hors il en a un usage purement Web, et surtout, purement consommateur. Hors Internet, tel qu’il est conçu, permet à tout appareil raccordé à ce réseau de tenir n’importe quel rôle, et pas seulement celui de consommateur.

Au cœur de l’innovation stupide : Paris a accueilli son premier HackàCon

Ce genre d’évènement me rappelle un peu les prix igNobel. Certains diraient que ça se résume à du gaspillage de temps, mais quand on voit la futilité et l’inutilité suprême de certains produits et/ou services qui cartonnent pourtant, finalement, ça reflète bien l’état de la société. Et certaines idées à la con sont vraiment brillantes en plus !

Quelques astuces diverses, sixième

mardi 13 juin 2017 à 18:30

C’est reparti pour un nouvel épisode de bricoles rapides, de oneliners, de ligne de commandes, de petites configurations, bref, du divers, rien que du divers (mais beaucoup de sysadmin, sinon ça serait pas marrant).

Ajuster le volume audio de la lecture de média dans Firefox

Après avoir souffert des différences de volume et surtout d’un volume max très dérangeant, j’ai trouvé la petite ligne qui va bien dans about:config :

media.default_volume;0.2

Tester configuration Apache en ligne

Particulièrement pratique pour les regex, et donc les règles de réécriture, ce site vous permet, en donnant votre bout de configuration et l’URL à tester, de vérifier si « ça matche ».

Whitelist .well-known dans un fichier .htaccess de Drupal pour Let’s Encrypt

En effet, par défaut ce couillon veut vous interdire tout ce qui commence par un « . » . Hors c’est justement par un « . » que commence le dossier dans lequel certbot colle le challenge qui vous permettra de générer un certificat X509 de Let’s Encrypt. IL faut donc faire la modification suivante dans le fichier .htaccess :

#RewriteRule "(^|/)\." - [F]
RewriteRule "(^|/)\.(?!well-known/)" - [F]

Merci Djerfy pour le coup de main 😉

grep en PowerShell

Oui j’ai eu à chercher un contenu dans un fichier, et si sous Linux on a le puissant grep, sous PowerShell c’est moins sexy, mais ça marche aussi :

Get-Content .\doc.txt | Select-String -Pattern (Get-Content .\regex.txt)

Sauvegarder un contenu de top dans un fichier de log

Pour un petit script de diagnostic, je voulais enregistrer, en plus du processlist de mysql, le contenu de top. Mais c’est pas si facile que ça, notamment si on veut conserver le formatage :

echo -ne "$(top -n 1 -b -o %CPU)\n" >>$logfile

yum : installer depuis une liste texte

Pour le déploiement d’une machine client, on me transmet une liste de paquets sous CentOS à installer pour qu’il puisse procéder à l’installation de son application (un ERP en l’occurrence). Plutôt que de tout taper, on peut coller la liste dans un fichier et la passer à yum :

xargs yum -y install < package_list

Vérifier la taille d’une table MySQL

Lors d’un incident récemment j’ai eu le droit, sur un slave MySQL, à l’erreur suivante :

Last_SQL_Error: Error 'The table 'cache_form' is full' on query

Avant de faire du flush ou de pester contre un manque potentiel d’espace disque ou d’inodes (qui ont de grandes chances de ne pas être en cause), vous pouvez utiliser la requête suivante pour calculer la taille de la table :

SELECT
table_name AS `Table`,
round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
FROM information_schema.TABLES
WHERE table_schema = "database"
AND table_name = "cache_form";

+------------+------------+
| Table      | Size in MB |
+------------+------------+
| cache_form | 1063.39    |
+------------+------------+

En effet Houston, on a un problème. Dans le cas présent, c’était un Drupal qui a rempli sa table de cache, le gigot étant la taille limite autorisée par innoDB sur l’installation en cours (taille du fichier sur disque). Et ça a joliment pété une réplication qui après clean de la table et relance, a mis une bonne heure pour rattraper son retard.

Aider les gens à ne plus taper sl au lieu de ls

il existe un petit paquet à installer chez les débutants pour qu’ils apprennent à taper ls au lieu de sl (ce qui peut arriver si on va trop vite). Le résultat est drôle à voir, je vous laisse tester :

#Debian/Ubuntu
sudo apt install sl

#RedHat/CentOS
sudo yum install sl --enablerepo=epel

#Arch/Manjaro
sudo pacman -S sl

Y’a même quelques options (fouillez la page de manuel).

Être autodidacte, c’est dur, mais ça vaut le coup 

mercredi 7 juin 2017 à 18:30

Genma, dans son billet dans lequel il déplore un peu la raréfaction des passionnés, indique préférer les autodidactes aux diplômés qui pensent d’abord à un métier avant de penser passion. Et de mettre en avant l’autodidaxie comme un critère important de son choix des collaborateurs. Pour ceux qui ne comprennent pas trop, étant un autodidacte moi même, j’aimerai apporter ma pierre au travers de mon expérience.
Autodidacte, ça veut dire qu’on fait le choix d’apprendre par soi-même, par le biais de lectures, d’expérimentations. Il n’y a pas de structure « scolaire », pas de diplôme à la clé, pas de guide spirituel (enfin si ça peut arriver pour le guide). Souvent l’apprentissage est avant tout guidé par le besoin. On apprend donc d’abord l’essentiel, et on rebondit sur un autre sujet en espérant revenir plus tard si on a besoin de peaufiner.

C’est un aspect à double tranchant : d’une part on est pas à l’abri de se planter une paire de fois avant d’arriver au résultat recherché (c’est presque une condition sine qua non), d’autre part, c’est un processus très consommateur en temps quand des fois il faut pouvoir réagir dans un délai court. On doit parfois revenir sur un sujet abordé quelques temps plus tôt pour se rendre compte que si on avait bien fait sur le moment, on manquait de recul pour s’assurer qu’il n’y a pas d’effet secondaire.

Petit exemple de consommation de temps : si j’ai passé le test technique apparemment sans trop de problème lors de mon entretien d’embauche chez LinkByNet, ma première semaine de boulot s’est résumée à : traitement de demandes clients, prise de notes sur ce que je ne savais pas faire, et le soir, je faisais mes devoirs en recherchant, expérimentant, bref, point de Netflix ou de YouTube ou de jeux vidéos, mais boulot boulot boulot. Cette première semaine s’est transformée en quatre premiers mois intenses, de soirées à faire mes devoirs, nécessaires pour ce qui est finalement une première mise à niveau. C’est à ce moment-là qu’on prend la mesure de l’aspect fragmentaire d’un apprentissage « sur le tas », incomplet par nature, déstructuré, et donc pas toujours efficace. Et qu’on se le dise, c’est un processus intellectuellement épuisant par moments.

Malgré tout c’est un processus gratifiant : il ne se passe pas une semaine sans que je n’apprenne quelque chose de nouveau. C’est parfois pas grand chose, une petite astuce (que je commence à partager depuis quelques mois), une nouvelle facette d’un outil qu’on pensait pourtant bien connaître, une meilleure façon de rendre un service, ou parfois de nouvelles technologies. Et au final, quand le client au téléphone vous remercie pour votre travail et vos conseils, vous rentrez chez vous peut-être crevé, mais avec un sourire parfois intérieur parfois affiché sans retenue. Et surtout, vous validez votre démarche et le fonctionnement de votre intellect.

Parlons-en de l’intellect. Apprendre au fil de l’eau, c’est un processus qui ne se découvre pas sur le tard, mais bien qui se nourrit très tôt. Il nécessite de la curiosité, de l’ouverture d’esprit, d’être capable de se remettre en question, ce qui demande donc de l’humilité. La curiosité vous permet d’aller plus loin que ce que vous venez d’accomplir, parce qu’il existe peut-être d’autres façon d’y arriver. L’humilité vous permet d’accepter qu’il faut apprendre parfois des choses qui vous déplaisent, simplement parce que c’est nécessaire. Il sert aussi à reconnaître quand lâcher prise s’il vous manque trop d’éléments pour résoudre un problème (pas grave, on appelle à l’aide et on apprend pour la prochaine). Il faut de l’engagement, de la concentration. Et pourtant, encore aujourd’hui, ces qualités ne sont pas reconnues ou très mal chez les recruteurs qui continuent encore à privilégier les diplômes quand on se rend de plus en plus compte que certains cursus ne vous apportent pas ces outils pour pouvoir évoluer dans le monde réel.

Et vous remarquerez que j’ai beau aborder le sujet en partant de ma propre expérience et notamment la plus récente, je n’ai évoqué aucun métier en particulier. Parce que ce qui pourrait s’appeler des qualités sont exploitables dans tous les domaines ou presque. J’ai abordé de la même façon la maçonnerie, l’administration système, la logistique, l’électricité (dans le désordre). Beaucoup de « YouTubers » sont finalement des producteurs de vidéos indépendants la plupart du temps autodidactes, en se nourrissant d’expériences partagées, de « tutos » pour pouvoir exploiter les outils dont ils ont besoin. Pour autant que je sache, Babozor, qui tient la grotte du barbu, n’a pas de formation en menuiserie et pourtant il réalise des meubles, des constructions, dernièrement il se met à l’impression 3D sans avoir de formation de modélisation.

Oui, et d’autant plus grâce à internet, on peut « apprendre » un métier en dehors d’une structure scolaire classique. Mais il vous faut plus qu’un tutoriel, il vous faut avoir appris à apprendre. Ce que les structures scolaires semblent de moins en moins encourager, alors que la tendance est à la reconversion passé un certain nombre d’années dans le « monde professionnel ».