Blog de dada

DevOps, bidouilleur et routard plein de logiciels libres

Piwik

Crontab ? Non, Cronjob !

Rédigé par dada / 15 février 2019 / Aucun commentaire



On sait tous, pour peu que notre métier consiste à passer trop d'heure devant des écrans branchés en SSH à des serveurs, qu'une action répétitive doit être gérée par la Crontab. C'est normal.
Kubernetes s'est amusé à reprendre ce principe pour y glisser du Docker, parce que voilà. Pas vraiment étonnant. Regardons ensemble ce qu'est un CronJob, l'équivalent Crontab de l'orchestrateur.

CronJob

L'idée du CronJob, c'est d'aller effectuer le travail de la Crontab alors qu'il n'est pas possible de savoir combien de conteneurs font tourner notre application. Eh oui, avec un seul conteneur, il est possible de prendre un peu de temps pour lui glisser le paquet qui va bien et ajouter la ligne de configuration qui fait le boulot, mais avec Kubernetes, c'est une autre affaire. Imaginez que vous fassiez ça avec plusieurs conteneurs : vous avez beau vous amuser à calculer le temps d'exécution du processus et ainsi décaler son lancement à la louche, vous allez vite vous retrouver avec des nœuds qui load et des données corrompues. Bref.

Matomo et son CronJob

En exemple, voici ce que je fais avec mon Matomo. Rappel rapide: Matomo est un outil d'analyse de fréquentation d'un site web bien plus propre que ses concurrents et qui, pour un logiciel libre, ne néglige pas les beaux graphiques.

La configuration

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: matomo-archive
spec:
  schedule: "*/30 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: matomo-cron
            image: matomo:3.7
            volumeMounts:
            - name: pv-matomo
              mountPath: /var/www/html
            args:
            - /bin/bash
            - -c
            - /usr/local/bin/php /var/www/html/console core:archive --url=https://url.de.mon.matomo/
          restartPolicy: OnFailure
          volumes:
          - name: pv-matomo
            flexVolume:
              driver: ceph.rook.io/rook
              fsType: ceph
              options:
                fsName: myfs
                clusterNameSpace: rook-ceph
                path: /matomo
Si vous êtes perdus, souvenez-vous que je me sers d'un cluster Ceph géré par Rook. Grace à ça, je peux monter le volume contenant les sources nécessaire à l'exécution du cron, parce qu'il faut bien lancer du PHP à un moment ou un autre.

Explications

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: matomo-archive
spec:
  schedule: "*/30 * * * *"
Ici, c'est la ligne schedule qui est importante. Les habitués de la Crontab comprendront qu'elle permet de définir la fréquence d'exécution. Ici, toutes les 30 min.
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: matomo-cron
            image: matomo:3.7
À l'heure où j'écris ces lignes, la version 3.8 de Matomo est disponible mais pas son conteneur, d'où la version 3.7 précisée dans la configuration du conteneur. Gros rappel : latest n'est pas une version !
            args:
            - /bin/bash
            - -c
            - /usr/local/bin/php /var/www/html/console core:archive --url=https://url.de.mon.matomo/
La partie args permet de spécifier l'action du CronJob : ici, on va lancer un script PHP développé par Matomo avec l'url de son instance en paramètre. Tout simplement.
          volumes:
          - name: pv-matomo
            flexVolume:
              driver: ceph.rook.io/rook
              fsType: ceph
              options:
                fsName: myfs
                clusterNameSpace: rook-ceph
                path: /matomo
La partie volumes est toute basique : c'est là que je configure l'accès aux sources du conteneur qui va lancer la tâche.

On applique tout ça :
kubectl apply -f cronjob.yaml
Et on attend 30 min que le CronJon prenne la peine de démarrer. N'hésitez vraiment pas à baisser la fréquence d'exécution si vous n'avez pas que ça à faire. 5min, c'est très bien. 1min ? Laissez tomber, par contre.

Vérification

Pour vérifier que vous avez bien ce que vous avez demandé :
dada@k8smaster1:~/matomo$ k get cj
NAME             SCHEDULE       SUSPEND   ACTIVE   LAST SCHEDULE   AGE
matomo-archive   */30 * * * *   False     0        21m             28d
On retrouve bien le nom du CronJob, sa configuration et quelques infos comme la dernière exécution (21 minutes) et son age (28 jours).

Avec le temps, au bout de 1h30 si vous avez copié/collé ma configuration, vous allez remarquer que le cluster garde en mémoire les 3 dernières tentatives :
dada@k8smaster1:~/matomo$ k get pods | grep archive
matomo-archive-1548606600-4cwsl         0/1     Completed   0          84m
matomo-archive-1548608400-7lxf8         0/1     Completed   0          54m
matomo-archive-1548610200-cwh6t         0/1     Completed   0          24m
Ça vous permet d'avoir un accès aux logs rapidement. Chouette !

Vous pouvez maintenant aller jouer avec !

Le B2D change discrètement

Rédigé par dada / 27 août 2014 / 9 commentaires


Je sais que je promets sur Diaspora* des articles sur FirefoxOS avec mon Flame en 2.0 et mon ZTE Open C en 1.3 mais cela devra attendre encore un peu.

Je serai de plus en plus loin de chez moi et je me suis résolu à passer chez un hébergeur, à utiliser un VPS. Je viens de finir de tout migrer, ou presque. Si vous rencontrez encore des soucis, c'est que je joue avec la configuration. Le VPS étant bien moins puissant que mon vieux serveur, j'envisage de migrer vers Lighttpd en délaissant Apache. C'est en cours de réflexion, je dois encore gérer le HTTPS et ça sera bon.

Adieu mon vieux serveur, donc. Je perds de la puissance mais je gagne grandement en bande passante, ce qui n'est pas pour me déplaire puisque je peux maintenant admirer mes photos via l'application Images d'ownCloud sans attendre des heures !

J'ai tout fait pour m’auto-héberger. C’était un vrai plaisir d'apprendre à magouiller un serveur de A à Z et ça m'a permis de tout migrer en quelques heures. Je suis assez content de moi, pour le coup.

La suite de l'aventure continue donc sur un serveur qui ne tombera pas en panne à cause d'un crash de disque dur, d'une coupure de courant, d'un coup de balai mal placé et j'en passe.

Je n'ai pas remis de système de statistique : Piwik est bien trop lourd pour mon serveur.

Pour en revenir au serveur, c'est un plaisir de se servir de PluXmL et de FreshRSS. Ils sont efficaces et très très légers. Un must ! Essayez-les et offrez une bière à Marien Fressinaud et aux développeurs de PluXmL !

Retours sur le B2D de 2013

Rédigé par dada / 27 janvier 2014 / Aucun commentaire

C'est une sorte de tradition à laquelle je me plie cette année : celle d’étaler au grand jour ses statistiques. Je vous laisse apprécier. N'oubliez pas que je suis complétement auto-hébergé et que j'ai tout fait main !

Absolument tout ce dont je vais vous parler ici sort de Piwik, l'outil d'analyse statistique libre.

Les visites

visites.png

Le Blog de dada comptabilise presque 29 000 visites en 2013. En 2012, elles étaient d'un peu plus de 16 000. Je ne sais pas trop quoi dire si ce n'est que j’apprécie vraiment que vous veniez vous balader ici. C'est agréable de voir que vous venez de plus en plus nombreux.

Environ 45 000 pages furent parcourus par vos petits yeux curieux.

Les navigateurs

navigateurs.png

En tant que fervent partisan de Firefox, je suis assez content de voir que ce dernier est devant Google Chrome. Ce n'est cependant que d'une courte tête : 47% pour Firefox et 45% pour Google Chrome. Je ne veux pas voir le navigateur de Google virer en tête en 2014. Je vous fais confiance et me permets de vous rappeler qu'il est temps de repasser sous Firefox.

Les systèmes d'exploitation

os.png

Je suis ici aussi content de mes stats : GNU/Linux est en tête avec 42% (quel beau chiffre), Windows représente tout de même 37% des machines ayant affichées le B2D. Disons que vous êtes beaucoup à prendre des pauses au travail et que ce n'est pas si grave ;-).

Lecteurs, vous n'utilisez que peu votre smartphone pour venir ici. On me souffle que vous ne représentez que 8% des visites. Faut dire que je ne fais pas vraiment d'effort pour les appareils mobiles.

Sources des visites

Le grand réseau social qui m'apporte le plus de visite est Twitter, suivi par Facebook et enfin Google Plus. Je veux bien que Twitter reste mais que vient faire Facebook ici ? Je n'ai pas de compte Facebook ! Twitter, j'ai décidé de vous laisser faire. J'ai toujours un compte mais je ne vais quasiment plus jamais voir ce qu'il s'y passe. Quant à Google Plus, je préfère ne pas en parler.

Dans les fiertés de l’année, je ne cache pas me joie d'avoir PC INpact comme source de visite ! Je vous renvoie sur ce billet si vous voulez jeter un coup d’œil.

Je retrouve aussi le grand Sebsauvage, Cyrille BORNE, le Hollandais Volant, Philippe SCOFFONI et Linuxfr.

Mais aussi...

Le B2D reste propulsé par Debian. Je suis passé à la version 7 il y a quelques semaines. Vous retrouvez derrière Apache et Mysql. Pour vous écrire, je suis resté fidèle à Dotclear dont la version 2.6 me fait rêver. Merci à ces projets de me permettre d'avoir mon coin de toile à moi.

On peut aussi noter que je suis passé définitivement sur Diaspora* et que ça me convient parfaitement. J’espère toujours y voir plus de monde. Je me sers aussi beaucoup de Shaarli (merci Sebsauvage). Ce dernier comptabilise presque 1000 visites.

Voila, je ne sais pas trop quoi vous raconter d'autre, du coup, je me plie aussi à cette maudite tradition qui est celle de vous souhaiter une bonne année 2014 et tout ce qui va avec.

Merci ;-)

Classé dans : B2D / Mots clés : Piwik