INDUSTRIES

Entraînez-vous avec Splunk et Strava

Le 16 janvier 2020, c'était mon centième jour chez Splunk. Ce beau chiffre rond représente également le nombre de jours depuis ma décision d’améliorer ma condition physique. Rien de radical pourtant : le plan consiste à me rendre au travail à vélo et à courir dans le parc tout proche.

Après quelques jours, je me suis dit : « Ce serait cool de suivre tout ça dans Splunk ! ». Je pourrais ainsi obtenir des statistiques utiles, y compris des tendances pour suivre mes progrès ainsi que d’autres éléments auxquels je n’aurais peut-être même pas pensé. Comme beaucoup d’autres cyclistes et coureurs, je suis la progression de mes activités physiques à l’aide de Strava, qui fournit une API pouvant être utilisée comme source pour nos données.

En 2018, mon collègue Stephen Luedtke a écrit un article de blog intitulé « Iron Splunk » sur l'intégration de Splunk à Strava. Depuis lors, Strava a implémenté OAuth 2.0 pour accéder à son API, exigeant des entrées supplémentaires pour accéder aux données. J'ai donc dû trouver une autre façon pour que cela fonctionne.

Comme je voulais utiliser Splunk pour suivre mes activités physiques, j’ai décidé de prendre les choses en main et de créer Strava Add-On for Splunk, juste à temps pour les résolutions ambitieuses de remise en forme physique du Nouvel An ! L’extension a été créée à l’aide de Splunk Add-on Builder, en utilisant Python. 

Avant d’installer l’extension, assurez-vous de lire la page de détails de l’extension sur la façon de procéder à la configuration initiale en vue d’accorder l’autorisation via OAuth 2.0, qui ne doit être donnée qu’une seule fois.

Après avoir créé l'application dans Strava et obtenu le code d'accès conformément aux instructions, il est temps de configurer l’extension. Pour les champs obligatoires, utilisez les valeurs que vous avez obtenues de Strava. L'horodatage de départ est facultatif : par exemple, utilisez-le si vous ne souhaitez obtenir des données que depuis un certain temps.

Strava Dashboard

Les données seront désormais extraites de Strava, ce qui peut prendre du temps en fonction du nombre d'activités que vous avez. Une fois terminé, vous verrez tous les événements dans Splunk. C’est parti !

Strava dashboard

J'ai créé ma propre application avec des statistiques pertinentes pour moi. Voici un exemple de quelques totaux fondamentaux, notamment un commutateur de lien pour basculer entre la durée et la distance par semaine. L'API Strava fournit une multitude de détails sur chaque activité. Le tableau ci-dessous en présente quelques-uns.

strava dashboard

La dernière colonne de ce tableau, intitulée « Poussette », peut sembler un peu inhabituelle. Je souhaitais suivre ma vitesse de course avec et sans poussette au fil du temps, car je cours souvent avec l’un de mes enfants, voire même avec mes deux enfants, dans une poussette. Sans surprise, courir sans poussette est bien plus rapide ! On remarque également une baisse de vitesse vers la fin décembre, ce qui est la faute du chocolat.

Strava dashboard

L'éditeur de recherche peut être utilisé pour ajouter des notes personnalisées aux activités. Cependant, je voulais que ce soit dynamique et extrait directement de Strava. Pour ce faire, utilisez le champ de description dans Strava pour créer la visualisation ci-dessus, en indiquant « 1P » ou « 2P » dans la description comme déclencheur pour la course avec une poussette simple (1P) ou double (2P).

Voici le SPL correspondant :

index=strava sourcetype=strava:activities type=Run
| eval avg_speed = round(average_speed * 3.6,1)
| eval pram_people = if(description=="1P","Single",if(description=="2P","Double","No Pram"))
| timechart span=1w@w1 max(avg_speed) AS avg_speed by pram_people
| trendline sma2(avg_speed) as trend
| fields "No Pram" Single Double

Pour visualiser mes activités, j’ai décidé de tracer mes déplacements sur une carte, avec les courses en rose et les balades à vélo en bleu, grâce à un iframe HTML et à ce script. Vous pouvez utiliser le script pour générer un CSV unique ou utiliser la commande outputcsv de Splunk pour en générer un et planifier son exécution régulière.

Strava heatmap

Enfin, j'ai pensé que ce serait sympa d'obtenir des statistiques aléatoires à partir de toutes les données. Certaines sont utiles, d'autres moins, mais chacune d'entre elles peut être utilisée pour fixer certains objectifs. De nombreux panneaux utilisent des libellés dynamiques pour les comparer à des éléments plus faciles à comprendre, comme la comparaison des calories brûlées ou les articles qui sont souvent consommés.

Strava Stats
Les panneaux avec la légende dynamique utilisent les balises pour afficher plusieurs champs. Vous trouverez ci-dessous un exemple de panneau d’activité le plus apprécié. La grande valeur unique représente les félicitations. La légende affiche la date et le nom de l’activité.        

 <panel>
      <single>
        <title>Most kudo'd activity</title>
        <search>
          <finalized>
            <set token="kudos_name">$result.name$</set>
            <set token="kudos_date">$result.date$</set>
          </finalized>
          <query>
            index=strava sourcetype=strava:activities type=*
            | eval date = strftime(_time,"%d-%m-%Y")
            | stats max(kudos_count) as kudos by name, id, date
            | head 1
            | fields kudos name date id
          </query>
          <earliest>$top_timepicker.earliest$</earliest>
          <latest>$top_timepicker.latest$</latest>
        </search>
        <option name="underLabel">$kudos_date$: $kudos_name$</option>
        <option name="unit">kudos</option>
      </single>
    </panel>    

Si vous utilisez Strava et Splunk, je vous recommande d’essayer l’extension. Courage et bonne chance pour établir et dépasser vos objectifs sportifs en 2020 ! Pensez aussi à lire cet article sur la visualisation des données de l'Apple Watch dans Splunk !

*Cet article est une traduction de cet article en anglais.

--------------------------------

Patrick Peeters

----------------------------------------------------
Thanks!
Splunk

Splunk
Posted by

Splunk

TAGS
Show All Tags
Show Less Tags