CérénIT - datavizLe blog tech de Nicolas Steinmetz (Time Series, IoT, Web, Ops, Data)Zola2021-02-24T09:30:00+01:00https://cerenit.fr/tags/dataviz/atom.xmlWeb, Ops & Data - Février 20212021-02-24T09:30:00+01:002021-02-24T09:30:00+01:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-fevrier-2021/<h3 id="container-et-orchrestration">Container et orchrestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://mrkaran.dev/posts/home-server-nomad/">Running Nomad for home server</a> : pour avoir mené une expérience très similaire sur le mois de janvier, je me retrouve complètement dans ce retour d'expérience sur nomad (vs kubernetes dans une certaine mesure). Le trio nomad/consul/vault permet de faire des choses assez proches de ce que l'on peut faire avec kubernetes et parfois même de façon plus simple. Et ce, avec moins de couches intermédiaires (CSI, CNI, etc) mais aussi quelques fonctionnalités en moins. Un compromis assez réussi je trouve entre un docker nu et/ou avec docker-compose et un kubernetes.</li>
<li><a rel="noopener" target="_blank" href="https://podman.io/releases/2021/02/11/podman-release-v3.0.0.html">Podman 3.0 has been released!</a> : <a rel="noopener" target="_blank" href="https://www.redhat.com/sysadmin/podman-docker-compose">support de docker-compose</a>, support des noms courts d'image, amélioration sur le réseau, apport de la dernière version de buildah, correction d'une CVE, etc.</li>
<li><a rel="noopener" target="_blank" href="https://www.docker.com/blog/donating-docker-distribution-to-the-cncf/">Donating Docker Distribution to the CNCF</a> : Docker Inc donne sa registry à la fondation CNCF pour fédérer les initiatives autour d'un même standard et élargir le champ des contributeurs/mainteneurs.</li>
<li><a rel="noopener" target="_blank" href="https://blog.octo.com/panorama-des-outils-de-securite-autour-des-conteneurs/">Panorama des outils de sécurité autour des conteneurs</a> : comparaison des outils de bonnes pratiques et d'analyses de vulnérabilités des containers docker pour améliorer la sécurité de vos conteneurs.</li>
</ul>
<h3 id="code">Code</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.golang.org/gopls-vscode-go">Gopls on by default in the VS Code Go extension - The Go Blog</a> : amélioration du support de Go dans VSCode.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/caramelomartins/awesome-linters">Awesome Linters</a> : si vous cherchez un linter, vous devriez le trouver dans ce dépot</li>
<li><a rel="noopener" target="_blank" href="https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/">Into the Sunset on May 1st: Bintray, JCenter, GoCenter, and ChartCenter</a> : JFrog va arrêter les services Bintray, JCenter, GoCenter et ChartCenter le 1er mai. La proposition est de migrer sur l'offre JFrog Cloud ou de trouver une alternative.</li>
</ul>
<h3 id="monitoring-observabilite">Monitoring & observabilité</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://investors.datadoghq.com/news-releases/news-release-details/datadog-acquires-timber-technologies">Datadog Acquires Timber Technologies | Datadog</a> : Datadog achète la société Timber Technologies qui édite le project <a rel="noopener" target="_blank" href="https://vector.dev/">vector</a>. Pourvu que cela ne nuise pas au projet.</li>
<li><a rel="noopener" target="_blank" href="https://investors.datadoghq.com/news-releases/news-release-details/datadog-acquires-timber-technologies">Datadog Signs Definitive Agreement to Acquire Sqreen | Datadog</a> : Datadog achète aussi Sqreen qui était dans le domaine de la sécurité.</li>
<li><a rel="noopener" target="_blank" href="https://vector.dev/blog/vector-remap-language/">Vector Remap Language</a> : la version 0.12 de vector va apporter un nouveau langage plus fonctionnel pour définir le traitement sur ses logs. A tester !</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/building-telegraf-assistant-uc-berkeley-codebase/">Building a Telegraf Assistant – UC Berkeley Codebase</a> : des étudiants de l'universite de Berkeley ont travaillé sur la capacité de pousser une configuration à distance à telegraf. A voir si le code arrive jusque dans le produit telegraf, ce serait sympathique en tous cas !</li>
</ul>
<h3 id="time-series">Time Series</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.timescale.com/blog/time-series-analytics-for-postgresql-introducing-the-timescale-analytics-project/">Time-Series Analytics for PostgreSQL: Introducing the Timescale Analytics Project</a> : Timescale va publier des fonctions orientées time series sous la forme d'extensions postgres. A priori réutilisable sans utiliser le reste de la base Timescale (à confirmer). De quoi simplifier certaines manipulations ?!</li>
<li><a rel="noopener" target="_blank" href="https://blog.timescale.com/blog/timescaledb-2-0-is-now-generally-available/">TimescaleDB 2.0 is now Generally Available</a> : annonce officielle de la sortie de TimescaleDB 2.0 même si la 2.0.0 est sortie à Noel et la <a rel="noopener" target="_blank" href="https://github.com/timescale/timescaledb/releases/tag/2.0.1">2.0.1</a> fin janvier.</li>
<li><a rel="noopener" target="_blank" href="https://grafana.com/blog/2021/02/04/grafana-7.4-released-next-generation-graph-panel-with-30-fps-live-streaming-prometheus-exemplar-support-trace-to-logs-and-more/">Grafana 7.4 released: Next-generation graph panel with 30 fps live streaming, Prometheus exemplar support, trace to logs, and more</a> : <a rel="noopener" target="_blank" href="https://grafana.com/blog/2021/02/10/how-the-new-time-series-panel-brings-major-performance-improvements-and-new-visualization-features-to-grafana-7.4/">amélioration des panels</a>, mode livrestream pour un panel, support des variables dans les notifications d'alertes et plein d'autres choses.</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/kapacitor-1-5-8-rollback-announcement/">Kapacitor 1.5.8 — Rollback Announcement | InfluxData</a> : Rollback de la version 1.5.8 de Kapacitor (la couche de processing en mode batch/streaming dans un contexte InfluxDB 1.x) pour cause d'opération pouvant conduire à de la perte de données. Un correctif est attendu sous peu.</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/tldr-tech-tips-how-to-monitor-states-with-influxdb/">TL;DR InfluxDB Tech Tips – How to Monitor States with InfluxDB</a> : ce billet est intéressant pour compléter le billet sur <a href="https://cerenit.fr/blog/web-ops-and-data-fevrier-2021/r/blog/timeseries-state-duration/">le calcul de la durée d'un état avec des timeseries</a>. Notamment, l'apport de la fonction <code>monitor.stateChanges()</code> et <code>monitor.stateChangesOnly()</code>.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/senx/warp10-platform/releases/tag/2.7.3">Warp 10 2.7.3</a> : version de maintenance.</li>
<li><a rel="noopener" target="_blank" href="https://blog.senx.io/review-of-smoothing-transforms-in-warplib/">A review of smoothing transforms in WarpLib</a> : revue des possibilités de "lissage" de vos séries avec différents algorithmes inclus dans Warp 10 de la moyenne glissante simple à des algorithmes capables d'excluer les anomalies et pics ponctuels.</li>
</ul>
<p>Si vous êtes en manque de news, vous pouvez aller consulter (et vous abonner) aux brèves du <a rel="noopener" target="_blank" href="https://bigdatahebdo.com/breve/">BigData Hebdo</a></p>
Web, Ops & Data - Mars 20182018-03-28T09:30:00+02:002018-03-28T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-mars-2018/<h3 id="automatisation">Automatisation</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.ansible.com/blog/ansible-2.5-traveling-space-and-time">Ansible 2.5: Traveling space and time</a> : au programme de cette nouvelle version : des namespaces pour les "facts", la capacité d'interdire des modules, des nouvelles "variables magiques" (les magic vars sont des variables spécifiques à Ansible et l'exécution des playbooks). On notera aussi des améliorations sur le support Windows, des nouveaux modules cloud (AWS, GCP, Azure, VMWare) et des nouveaux plugins.</li>
</ul>
<h3 id="container-et-orchrestration">Container et Orchrestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://blog.kubernetes.io/2018/03/apache-spark-23-with-native-kubernetes.html">Apache Spark 2.3 with Native Kubernetes Support</a> : Intéressant de voir que Spark peut maintenant être exécuté comme un pod kubernetes. On sort ainsi du mode de déploiement standalone ou dans un contexte Yarn (Hadoop) ou Mesos.</li>
<li><a rel="noopener" target="_blank" href="https://cloudplatform.googleblog.com/2018/03/from-open-source-to-sustainable-success-the-Kubernetes-graduation-story.html">From open source to sustainable success: the Kubernetes graduation story</a> : le projet Kubernetes sort d'incubation et devient un projet de 1er niveau de la CNCF. Le billet permet de faire un retour sur l'histoire du projet.</li>
<li><a rel="noopener" target="_blank" href="https://landscape.cncf.io/">CNCF Cloud Native Interactive Landscape</a> : la CNCF a sortie un annuaire interactif de leurs projets et membres.</li>
<li><a rel="noopener" target="_blank" href="https://docs.docker.com/release-notes/docker-ce/#18030-ce-2018-03-21">Docker 18.03-ce</a> : Pas de grandes nouveautés a priori, plutôt des efforts de consolidation et de stabilisation du produit.</li>
<li><a rel="noopener" target="_blank" href="http://blog.kubernetes.io/2018/03/kubernetes-1.10-stabilizing-storage-security-networking.html">Kubernetes 1.10: Stabilizing Storage, Security, and Networking</a> : la consolidation et la stabilisation de la plateforme se poursuivent : la nouvelle interface de stockage CSI (Container Storage Interface) et le "Local Storage" passent en béta, CoreDNS est disponible en alternative à kube-dns en attendant de le remplacer et enfin, coté sécurité en version alpha, kubectl peut gérer des identifiants de plateformes cloud.</li>
</ul>
<h3 id="dataviz">Dataviz</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://grafana.com/blog/2018/03/01/grafana-v5.0-released/">Grafana v5.0 Released</a></li>
<li><a rel="noopener" target="_blank" href="https://makina-corpus.com/blog/metier/2018/superset-loutil-de-dataviz-de-airbnb">Superset, l'outil de DataViz de AirBnB</a> : un tutoriel pratique pour la prise en main de l'outil de data visualisation Superset.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/d3/d3/blob/master/CHANGES.md">d3.js 5.0</a> : la librairie de représentation de données <a rel="noopener" target="_blank" href="https://d3js.org/">d3.js</a> passe en version 5.0 avec notamment une incompatibilité avec le passages aux Promesses Javascript plutôt que les callbacks.</li>
</ul>
<h3 id="java">Java</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://medium.com/codefx-weekly/no-free-java-lts-version-b850192745fb">No Free Java LTS Version?</a> : Oracle change ses pratiques de distribution du JDK Oracle (Une version majeure tous les 6 mois, moins de report de patches, etc).</li>
</ul>
<h3 id="let-s-encrypt">Let's encrypt</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://community.letsencrypt.org/t/acme-v2-and-wildcard-certificate-support-is-live/55579">ACME v2 and Wildcard Certificate Support is Live</a> : Let's Encrypt va donc fournir des certificats wildcard (<code>*.domaine.fr</code>). Si je m'étais réjoui de l'idée au début, je ne vois finalement pas ou peu l'intérêt du fait de la méthode de validation (enregistrement DNS avec le temps de propagation associé). En dehors du cas où l'on dépassait les limites d'enregistrement de Let's Encrypt en terme de nombre de certificats, la génération dynmique et unitaire via une méthode HTTP me semble plus simple. Surtout quand on utilise <a rel="noopener" target="_blank" href="https://traefik.io/">Traefik</a> ;-)</li>
</ul>
<h3 id="postgres">Postgres</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://blog.dalibo.com/2018/03/12/publication_manuels_formation.html">Publication des manuels de formations Dalibo !</a> : Dalibo rend publics l’ensemble de ses manuels de formation, pour permettre à un maximum de personnes de se former sur PostgreSQL.</li>
</ul>
<h3 id="python">Python</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://changelog.com/news/python-2-eol-will-be-20200101-NRw2">Python 2 EOL will be 2020-01-01</a> : Petit rappel, Python 2.x ne sera plus supporté au delà de 2020. Pour Python 3, la version supportée actuellement est 3.4+. Cf <a rel="noopener" target="_blank" href="https://devguide.python.org/#status-of-python-branches">Status of Python Branches</a>.</li>
</ul>
<h3 id="tick">TICK</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/release-announcement-influxdb-1-5-0-influxdb-enterprise-1-5-0/">Release Announcement: InfluxDB 1.5.0 and InfluxDB Enterprise 1.5.0</a> : des améliorations surtout sur la partie sauvegarde/restoration et la disponibilité officielle du nouveau format TSI (Time Series Index) adaptés pour des séries épéhmères.</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/chronograf-adds-annotations-smarter-dashboard-loading-improved-tickscript-support-and-more/">Chronograf Adds Annotations, Smarter Dashboard Loading, Improved TICKscript Support, and More</a> : Chronograf, la solution de dataviz de la plateforme TICK semble aussi bien avancer avec la sortie de la version 1.4.2. Peut-être pas encore de quoi concurrencer Grafana mais les progrès sont sensibles.</li>
</ul>
<h3 id="astuce-s-du-mois">Astuce(s) du mois</h3>
<p>J'utilise <a rel="noopener" target="_blank" href="https://www.ansible.com/">Ansible</a> dans une logique d'IAC et pour automatiser un maximum des actions pour la gestion de l'infrastructure et des applications de mes clients. Toutefois, chaque client avait son arborescence et la réutilisation d'un composant d'un client à l'autre était fastidieuse (copier/coller).</p>
<p>Un premier travail a consisté à extraire les rôles commun dans un dépôt git tiers et faire des liens symboliques mais cela n'était pas très pratique. Suite à un travail chez un autre client, j'ai revu mon approche et je pars pour le moment sur la solution suivante :</p>
<ul>
<li>Un dépôt "global", contenant la configuration ansible, les plugins, les playbooks, les variables d'hotes ou de groupes, l'inventaire et les rôles.</li>
<li>Pour chaque rôle, je repars sur le principe d'extensibilité du code avec un rôle générique et des extensions par clients. Il y aura donc un répertoire du nom du composant et un répertoire <code><composant>.<client></code> ou <code><client>.<composant></code> (le choix n'est pas encore arrêté). Le second répertoire contenant les éléments spécifiques au client.</li>
</ul>
<p>Exemple avec un rôle MariaDB :</p>
<pre style="background-color:#2b303b;color:#c0c5ce;"><code><span>mariadb/
</span><span>├── README.md
</span><span>├── defaults
</span><span>│ └── main.yml
</span><span>├── files
</span><span>├── handlers
</span><span>│ └── main.yml
</span><span>├── meta
</span><span>├── tasks
</span><span>│ └── main.yml
</span><span>├── templates
</span><span>│ └── my.cnf.j2
</span><span>└── vars
</span><span> └── main.yml
</span><span>co.mariadb/
</span><span>├── README.md
</span><span>├── handlers
</span><span>│ └── main.yml
</span><span>├── tasks
</span><span>│ └── main.yml
</span><span>├── templates
</span><span>│ ├── my-primary.cnf.j2
</span><span>│ └── my-replica.cnf.j2
</span></code></pre>
<p>Ainsi, la partie générique et la partie spécifique à mon client sont isolées. Il faut juste envisager le séquencement entre les deux rôles pour que cela se passe bien. Pour le moment, le seul code dupliqué se retrouve au niveau des handlers.</p>
<p>Si je devais donner accès à mes clients à leurs playbooks respectifs, il faudrait que je revois l'organisation pour ne leur donner accès qu'à leurs données. Il faudrait alors recréeer n dépots mais avec cette méthode, il est aussi facile de reconstruire a posteriori des dépots par clients depuis un dépot global. L'intérêt étant pour moi de conserver ma flexibilité et d'améliorer la réutilisabilité de mes composants.</p>