Surveillance proactive 🌡️📈 d’un NAS Synology avec Datadog

Cette article fait suite à l’intégration de mon Synology à l’environnement Datadog :

Posséder des données est une chose, mais savoir les interpréter et être alerté au bon moment en est une autre. L’objectif n’est pas de consulter ses graphiques toutes les heures, mais de transformer Datadog en une véritable tour de contrôle autonome pour mon HomeLab.

Dans cet article, nous allons passer à la vitesse supérieure à travers trois piliers essentiels :

  1. La création d’un Dashboard personnalisé : Comment organiser visuellement les indicateurs clés (CPU, RAM, Disques) pour obtenir un état de santé complet en un seul coup d’œil.
  2. La mise en place du Monitoring et de l’Alerting : Comment créer des alertes intelligentes pour surveiller la disponibilité du système, la température du NAS et les données SMART des disques.
  3. La définition d’un SLO (Service Level Objective)

1. Créer un Dashboard unifié et personnalisé

Pour construire le dashboard visible sur l’image, j’ai pioché les métriques les plus pertinentes dans les tableaux de bord natifs :

  • L’Intégration SNMP : Indispensable pour la partie matérielle pure, comme la température des disques, les scores S.A.M.A.R.T. et l’état des volumes de stockage.
  • L’Agent Datadog : Il me donne la vision système « standard » : l’uptime, la charge CPU globale et l’utilisation précise de la mémoire RAM.
  • Docker : Comme mon Synology DS1019+ héberge des conteneurs, les métriques Docker permettent de surveiller l’impact de chaque service sur les ressources du NAS.

Organisation visuelle : Priorité à la clarté

Le dashboard est divisé en blocs logiques pour réduire la fatigue visuelle.

La section « Overview » (Vision Système)

En haut à gauche, on retrouve les indicateurs de santé immédiate. J’ai utilisé des widgets de type Query Value pour afficher l’uptime et l’utilisation actuelle des ressources, des Timeseries pour le CPU et la RAM en fonction du temps et un SLO Datadog pour afficher le SLA de notre NAS.

La section « Disques » (Vision Mécanique)

  • Températures : Chaque disque a son propre widget. On remarque une stabilité exemplaire autour de 40°C.
  • S.A.M.A.R.T. : Un tableau récapitule l’état de santé de chaque baie. Si une ligne passe du vert à l’orange, je sais exactement quel disque physique je dois inspecter.
  • Performances : Je mesure les IO/s, la bande passante et les I/O wait

Analyse temporelle et prédictive

Les graphiques de flux réseaux permettent d’identifier les pics d’activité, tandis que le widget Projection Disk Usage utilise l’intelligence de Datadog pour prédire la saturation de mes volumes.

L’astuce : La force d’un dashboard personnalisé est de ne montrer que ce qui nécessite une attention. En regroupant le SNMP, l’Agent et Docker sur une seule page, on transforme des données brutes en un véritable outil de décision.

En bas du dashboard, on retrouve une partie sur les containers docker et les logs de notre NAS.

2. Passer à la surveillance proactive avec les Monitors

Un dashboard est un outil d’observation formidable, mais l’objectif ultime est que votre infrastructure vous alerte avant même que vous n’ayez besoin de consulter vos écrans. Pour cela, nous allons configurer trois types de Monitors complémentaires qui couvrent la disponibilité, la sécurité matérielle et la gestion des ressources.

Le Host Monitor : Surveiller la disponibilité

Le premier rempart est de s’assurer que le NAS est « en vie ». Nous utilisons pour cela un Host Monitor.

  • Le principe : Datadog surveille l’arrivée des données. Si le flux s’interrompt pendant plus de 2 minutes, une alerte est déclenchée.
  • L’automatisation par les tags : Plutôt que de créer une alerte par machine, nous utilisons le mode Multi-Alert groupé par host. Ainsi, si vous ajoutez un second NAS ou un serveur avec le tag env:prod, il sera automatiquement intégré à cette surveillance.

Le Monitor Thermique : Protéger le matériel

Comme on peut le voir sur l’image, les disques stabilisent normalement autour de 40°C. Cependant, la chaleur est le premier facteur de panne des disques durs.

  • Configuration : Nous créons un Metric Monitor basé sur la métrique de température récupérée via SNMP.
  • Seuil d’alerte : J’ai fixé une limite stricte à 45°C.
  • Utilité : Ce moniteur permet d’intervenir (nettoyage des poussières, vérification de la climatisation ou de la ventilation) bien avant que le système ne se mette en sécurité thermique de manière brutale.

Le Monitor de Stockage : Anticiper la saturation

Sur un NAS, le manque d’espace peut bloquer des services critiques (backups, bases de données, enregistrements vidéos). Il est donc crucial d’être prévenu bien avant d’atteindre le point de rupture.

Pour ce monitor, nous utilisons des seuils progressifs basés sur le pourcentage d’utilisation du volume :

  • Warning (70%) : Une simple notification pour signaler qu’il est temps de commencer à faire du tri ou de prévoir l’achat de nouveaux disques.
  • Critical (90%) : Une alerte prioritaire indiquant une saturation imminente qui nécessite une action immédiate.

Un système de notification unifié

L’intérêt de ces trois moniteurs est qu’ils parlent le même langage. Qu’il s’agisse d’une perte de connexion, d’une surchauffe ou d’un disque plein, les messages d’alerte utilisent des variables dynamiques comme {{host.name}} ou {{value}}) pour vous donner le contexte exact du problème directement sur votre téléphone ou votre boîte mail.

3. Mesurer la fiabilité avec le SLO (Service Level Objective)

Il reste une étape pour passer au niveau « Enterprise » : mesurer la fiabilité sur le long terme. C’est ici qu’intervient le SLO.

Pourquoi un SLO pour un NAS perso ?

Une alerte vous dit : « C’est cassé maintenant ». Un SLO vous dit : « Sur les 30 derniers jours, ton NAS a été disponible 99,5% du temps ». Cela permet de voir si vos interventions ou vos changements de configuration dégradent la stabilité globale de votre infrastructure.

Mise en place : L’objectif de 99%

Pour mon Synology, j’ai configuré un SLO basé sur le Host Monitor créé précédemment :

  1. Indicateur (SLI) : On utilise l’état du monitor de disponibilité.
  2. Objectif : J’ai fixé un seuil de 99% de disponibilité sur une fenêtre glissante de 30 jours.

Le SLO permet de transformer une série d’alertes isolées en une métrique de performance globale. C’est le juge de paix de votre auto-hébergement.

Conclusion : Une infrastructure sous contrôle

Passer d’un simple NAS à un système supervisé change radicalement la gestion d’un HomeLab. En combinant ces trois outils, nous avons créé un écosystème complet :

  • Le Dashboard personnalisé nous donne une visibilité immédiate et corrèle les données SNMP, l’Agent et Docker.
  • Les Monitors agissent comme des sentinelles automatiques sur la température, l’espace disque et la présence des machines.
  • Le SLO nous apporte le recul nécessaire pour juger de la qualité de notre service.

EDIT : Voici le JSON du Dashboard

Synology-dashboard.json
{"title":"Synology DS1019+","description":"Dashboard for my DS1019+","widgets":[{"id":5070408916011355,"definition":{"title":"DS1019+ Overview","background_color":"green","show_title":true,"type":"group","layout_type":"ordered","widgets":[{"id":8084726153783740,"definition":{"type":"image","url":"/api/v2/images/a2b14ee0-bf09-4c7a-b90a-9150a73b86a1","sizing":"contain","has_background":true,"has_border":true,"vertical_align":"center","horizontal_align":"center"},"layout":{"x":0,"y":0,"width":3,"height":4}},{"id":7368638937463335,"definition":{"title":"SLA","title_size":"16","title_align":"left","type":"slo","slo_id":"94fffca88b1059de911fdbb93d9e4ebe","view_type":"detail","view_mode":"overall","time_windows":["30d"],"show_error_budget":false},"layout":{"x":3,"y":0,"width":3,"height":4}},{"id":7806723140720138,"definition":{"title":"CPU","title_size":"16","title_align":"left","type":"query_value","requests":[{"response_format":"scalar","queries":[{"name":"query1","data_source":"metrics","query":"avg:system.cpu.user{$host}","aggregator":"last"}],"formulas":[{"formula":"query1"}],"conditional_formats":[{"comparator":">","value":90,"palette":"red_on_white"},{"comparator":">","value":80,"palette":"yellow_on_white"},{"comparator":"<=","value":80,"palette":"green_on_white"}]}],"autoscale":true,"precision":0,"timeseries_background":{"yaxis":{"include_zero":false},"type":"area"}},"layout":{"x":6,"y":0,"width":2,"height":2}},{"id":6751042094901455,"definition":{"title":"RAM Used","title_size":"16","title_align":"left","type":"query_value","requests":[{"response_format":"scalar","queries":[{"name":"query1","data_source":"metrics","query":"avg:system.mem.total{$host}","aggregator":"last"},{"name":"query2","data_source":"metrics","query":"avg:system.mem.usable{$host}","aggregator":"last"}],"conditional_formats":[{"comparator":">","value":7000000000,"palette":"red_on_white"},{"comparator":">","value":6000000000,"palette":"yellow_on_white"},{"comparator":"<=","value":6000000000,"palette":"green_on_white"}],"formulas":[{"formula":"query1 - query2"}]}],"autoscale":true,"text_align":"center","precision":1,"timeseries_background":{"yaxis":{},"type":"bars"}},"layout":{"x":8,"y":0,"width":2,"height":2}},{"id":6793354230368095,"definition":{"title":"Disk Used","title_size":"16","title_align":"left","type":"query_value","requests":[{"response_format":"scalar","queries":[{"name":"query1","data_source":"metrics","query":"avg:system.disk.used{device:/dev/mapper/cachedev_0,$host}","aggregator":"last"}],"formulas":[{"formula":"query1"}]}],"autoscale":true,"precision":1},"layout":{"x":10,"y":0,"width":2,"height":2}},{"id":6951583527473552,"definition":{"title":"System uptime","type":"query_value","requests":[{"response_format":"scalar","queries":[{"data_source":"metrics","name":"query1","query":"avg:system.uptime{host:DS1019,$host}","aggregator":"last"}]}],"autoscale":true,"precision":1},"layout":{"x":6,"y":2,"width":2,"height":2}},{"id":3731024887356470,"definition":{"title":"Total Memory","title_size":"16","title_align":"left","type":"query_value","requests":[{"response_format":"scalar","queries":[{"name":"query1","data_source":"metrics","query":"avg:system.mem.total{$host}","aggregator":"last"}],"formulas":[{"formula":"query1"}]}],"autoscale":true,"precision":2},"layout":{"x":8,"y":2,"width":2,"height":2}},{"id":4805240331047793,"definition":{"title":"Total Space","title_size":"16","title_align":"left","type":"query_value","requests":[{"response_format":"scalar","queries":[{"name":"query1","data_source":"metrics","query":"avg:system.disk.total{device:/dev/mapper/cachedev_0,$host}","aggregator":"last"}],"formulas":[{"formula":"query1"}]}],"autoscale":true,"precision":1},"layout":{"x":10,"y":2,"width":2,"height":2}}]},"layout":{"x":0,"y":0,"width":12,"height":5}},{"id":1532945984467018,"definition":{"title":"CPU usage (%)","show_legend":false,"legend_layout":"horizontal","legend_columns":["avg","min","max","value","sum"],"type":"timeseries","requests":[{"formulas":[{"alias":"% time in idle state","formula":"query1"},{"alias":"% time running the kernel","formula":"query2"},{"alias":"% time waiting for IO operations to complete","formula":"query3"},{"alias":"% time running user space processes","formula":"query4"},{"alias":"% time the virtual CPU spent waiting for the hypervisor to service another virtual CPU","formula":"query5"},{"alias":"% time running the virtual processor","formula":"query6"}],"queries":[{"query":"avg:system.cpu.idle{$host}","data_source":"metrics","name":"query1"},{"query":"avg:system.cpu.system{$host}","data_source":"metrics","name":"query2"},{"query":"avg:system.cpu.iowait{$host}","data_source":"metrics","name":"query3"},{"query":"avg:system.cpu.user{$host}","data_source":"metrics","name":"query4"},{"query":"avg:system.cpu.stolen{$host}","data_source":"metrics","name":"query5"},{"query":"avg:system.cpu.guest{$host}","data_source":"metrics","name":"query6"}],"response_format":"timeseries","style":{"palette":"cool","line_type":"solid","line_width":"normal"},"display_type":"area"}],"yaxis":{"include_zero":true,"scale":"linear","label":"","min":"auto","max":"auto"}},"layout":{"x":0,"y":5,"width":6,"height":3}},{"id":8521653879808878,"definition":{"title":"RAM","show_legend":false,"legend_layout":"auto","legend_columns":["avg","min","max","value","sum"],"type":"timeseries","requests":[{"formulas":[{"alias":"RAM Usable","formula":"query2"},{"alias":"RAM Used","formula":"query1 - query2"}],"response_format":"timeseries","queries":[{"query":"sum:system.mem.usable{host:DS1019,$host}","data_source":"metrics","name":"query2"},{"query":"sum:system.mem.total{host:DS1019,$host}","data_source":"metrics","name":"query1"}],"style":{"palette":"cool","color_order":"monotonic","order_by":"tags","order_reverse":false,"line_type":"solid","line_width":"normal"},"display_type":"area"}],"yaxis":{"include_zero":true,"scale":"linear","label":"","min":"auto","max":"auto"},"markers":[]},"layout":{"x":6,"y":5,"width":6,"height":3}},{"id":4332440843571457,"definition":{"title":"Projection Disk Usage ","title_size":"16","title_align":"left","show_legend":false,"legend_layout":"auto","legend_columns":["avg","min","max","value","sum"],"time":{"type":"live","unit":"week","value":4},"type":"timeseries","requests":[{"response_format":"timeseries","queries":[{"name":"query1","data_source":"metrics","query":"avg:system.disk.in_use{device:/dev/mapper/cachedev_0}"}],"formulas":[{"formula":"forecast(query1, 'linear', 4)"}],"style":{"palette":"dog_classic","order_by":"values","line_type":"solid","line_width":"normal"},"display_type":"line"}],"markers":[{"label":" Warning ","value":"y = 0.7","display_type":"warning dashed"},{"label":" Critical ","value":"y = 0.9","display_type":"error solid"}]},"layout":{"x":0,"y":8,"width":12,"height":3}},{"id":3479930444846693,"definition":{"title":"Network Inbound Throughput ","title_size":"16","title_align":"left","show_legend":false,"legend_layout":"auto","legend_columns":["avg","min","max","value","sum"],"type":"timeseries","requests":[{"response_format":"timeseries","queries":[{"data_source":"metrics","name":"query1","query":"avg:snmp.ifHCInOctets{interface:ovs_bond0} by {interface}.as_rate()"}],"formulas":[{"formula":"query1"}],"style":{"palette":"cool","line_type":"solid","line_width":"normal"},"display_type":"line"}]},"layout":{"x":0,"y":11,"width":6,"height":3}},{"id":8200776746413110,"definition":{"title":"Network Outbound Throughput ","title_size":"16","title_align":"left","show_legend":false,"legend_layout":"auto","legend_columns":["avg","min","max","value","sum"],"type":"timeseries","requests":[{"response_format":"timeseries","queries":[{"data_source":"metrics","name":"query1","query":"avg:snmp.ifHCOutOctets{interface:ovs_bond0} by {interface}.as_rate()"}],"formulas":[{"formula":"query1"}],"style":{"palette":"dog_classic","line_type":"solid","line_width":"normal"}}]},"layout":{"x":6,"y":11,"width":6,"height":3}},{"id":3626862976338838,"definition":{"title":"Docker","background_color":"blue","show_title":true,"type":"group","layout_type":"ordered","widgets":[]},"layout":{"x":0,"y":14,"width":12,"height":1}},{"id":8926048837636368,"definition":{"type":"image","url":"/static/images/logos/docker_small.svg","sizing":"fit"},"layout":{"x":0,"y":15,"width":4,"height":2}},{"id":442823205391635,"definition":{"title":"Running containers","title_size":"16","title_align":"center","time":{"type":"live","unit":"minute","value":1},"type":"query_value","requests":[{"response_format":"scalar","queries":[{"data_source":"metrics","name":"query1","query":"sum:docker.containers.running{host:DS1019}","aggregator":"last"}],"formulas":[{"formula":"query1"}]}],"autoscale":true,"text_align":"center","custom_links":[],"precision":0},"layout":{"x":4,"y":15,"width":4,"height":2}},{"id":3597303745845524,"definition":{"title":"Stopped containers","title_size":"16","title_align":"center","time":{"type":"live","unit":"minute","value":1},"type":"query_value","requests":[{"response_format":"scalar","queries":[{"data_source":"metrics","name":"query1","query":"sum:docker.containers.stopped{host:DS1019}","aggregator":"last"}],"formulas":[{"formula":"query1"}]}],"autoscale":true,"text_align":"center","custom_links":[],"precision":0},"layout":{"x":8,"y":15,"width":4,"height":2}},{"id":4582180381205041,"definition":{"title":"Running container change","title_size":"16","title_align":"center","time":{"type":"live","unit":"minute","value":5},"type":"query_value","requests":[{"conditional_formats":[{"comparator":">=","value":80,"palette":"black_on_light_green"},{"comparator":">","value":50,"palette":"black_on_light_yellow"},{"comparator":">=","value":0,"palette":"black_on_light_red"}],"response_format":"scalar","queries":[{"data_source":"metrics","name":"query2","query":"sum:docker.containers.running{host:DS1019}","aggregator":"last"},{"data_source":"metrics","name":"query1","query":"sum:docker.containers.running{host:DS1019}","aggregator":"last"}],"formulas":[{"number_format":{"unit":{"label":"%","type":"custom_unit_label"}},"formula":"100 * (query2 / timeshift(query1, -300))"}]}],"autoscale":false,"text_align":"center","custom_links":[],"precision":0},"layout":{"x":0,"y":17,"width":4,"height":2}},{"id":2700647768577493,"definition":{"title":"Running containers by image","title_size":"16","title_align":"left","show_legend":false,"legend_layout":"auto","legend_columns":["avg","min","max","value","sum"],"time":{"type":"live","unit":"hour","value":1},"type":"timeseries","requests":[{"response_format":"timeseries","queries":[{"data_source":"metrics","name":"query1","query":"sum:docker.containers.running{host:DS1019} by {docker_image}.fill(0)"}],"formulas":[{"formula":"query1"}],"style":{"palette":"dog_classic","line_type":"solid","line_width":"normal"},"display_type":"bars"}],"custom_links":[]},"layout":{"x":4,"y":17,"width":8,"height":2}},{"id":1191863284585500,"definition":{"title":"","time":{"type":"live","unit":"day","value":1},"requests":[{"query":{"query_string":"source:docker host:DS1019","data_source":"event_stream","event_size":"s"},"columns":[],"response_format":"event_list"}],"type":"list_stream"},"layout":{"x":0,"y":19,"width":6,"height":5}},{"id":7094969814655910,"definition":{"title":"Most tx-intensive containers","title_size":"16","title_align":"left","time":{"type":"live","unit":"hour","value":1},"type":"toplist","requests":[{"style":{"palette":"purple"},"response_format":"scalar","queries":[{"data_source":"metrics","name":"query1","query":"avg:docker.net.bytes_sent{host:DS1019} by {container_name}","aggregator":"max"}],"formulas":[{"formula":"query1"}],"sort":{"count":5,"order_by":[{"type":"formula","index":0,"order":"desc"}]}}],"custom_links":[],"style":{}},"layout":{"x":6,"y":19,"width":6,"height":5}},{"id":3273080493097966,"definition":{"title":"Disques","background_color":"orange","show_title":true,"type":"group","layout_type":"ordered","widgets":[{"id":4861501660994920,"definition":{"title":"Sytem Temp","title_size":"16","title_align":"left","type":"query_value","requests":[{"response_format":"scalar","queries":[{"name":"query1","data_source":"metrics","query":"avg:snmp.synology.system.temperature{*}","aggregator":"last"}],"conditional_formats":[{"comparator":"<=","value":40.5,"palette":"black_on_light_green"},{"comparator":">","value":40.5,"palette":"black_on_light_yellow"},{"comparator":">","value":50,"palette":"black_on_light_red"}],"formulas":[{"number_format":{"unit":{"type":"canonical_unit","unit_name":"degree celsius"}},"formula":"query1"}],"comparison":{"type":"absolute","duration":{"type":"previous_timeframe"},"directionality":"decrease_better"}}],"autoscale":true,"precision":0},"layout":{"x":0,"y":0,"width":5,"height":2}},{"id":6535823171702029,"definition":{"title":"Historique de Tempérautre","title_size":"16","title_align":"left","show_legend":false,"legend_layout":"auto","legend_columns":["avg","min","max","value","sum"],"time":{"type":"live","unit":"week","value":1},"type":"timeseries","requests":[{"response_format":"timeseries","queries":[{"data_source":"metrics","name":"query1","query":"avg:snmp.synology.system.temperature{*}"}],"formulas":[{"style":{"palette":"classic","palette_index":3},"formula":"query1"}],"style":{"palette":"cool","order_by":"values","color_order":"monotonic","line_type":"solid","line_width":"normal"},"display_type":"line"}],"markers":[{"value":"45 < y < 50","display_type":"warning dashed"},{"value":"y > 50","display_type":"error solid"}]},"layout":{"x":5,"y":0,"width":7,"height":2}},{"id":6714145064867234,"definition":{"title":"Disk 1","title_size":"16","title_align":"left","type":"query_value","requests":[{"response_format":"scalar","queries":[{"name":"query1","data_source":"metrics","query":"avg:snmp.synology.diskTemperature{synology_disk_id:disk_1}","aggregator":"last"}],"conditional_formats":[{"comparator":"<=","value":40,"palette":"black_on_light_green"},{"comparator":">","value":40,"palette":"black_on_light_yellow"},{"comparator":">","value":50,"palette":"black_on_light_red"}],"formulas":[{"number_format":{"unit":{"type":"canonical_unit","unit_name":"degree celsius"}},"formula":"query1"}]}],"autoscale":true,"precision":0},"layout":{"x":0,"y":2,"width":1,"height":3}},{"id":4534633273882953,"definition":{"title":"Disk 2","title_size":"16","title_align":"left","type":"query_value","requests":[{"response_format":"scalar","queries":[{"name":"query1","data_source":"metrics","query":"avg:snmp.synology.diskTemperature{synology_disk_id:disk_2} by {synology_disk_id}","aggregator":"last"}],"conditional_formats":[{"comparator":"<=","value":40,"palette":"black_on_light_green"},{"comparator":">","value":40,"palette":"black_on_light_yellow"},{"comparator":">","value":50,"palette":"black_on_light_red"}],"formulas":[{"number_format":{"unit":{"type":"canonical_unit","unit_name":"degree celsius"}},"formula":"query1"}]}],"autoscale":true,"precision":0},"layout":{"x":1,"y":2,"width":1,"height":3}},{"id":6100886262380820,"definition":{"title":"Disk 3","title_size":"16","title_align":"left","type":"query_value","requests":[{"response_format":"scalar","queries":[{"name":"query1","data_source":"metrics","query":"avg:snmp.synology.diskTemperature{synology_disk_id:disk_3} by {synology_disk_id}","aggregator":"last"}],"conditional_formats":[{"comparator":"<=","value":40,"palette":"black_on_light_green"},{"comparator":">","value":40,"palette":"black_on_light_yellow"},{"comparator":">","value":50,"palette":"black_on_light_red"}],"formulas":[{"number_format":{"unit":{"type":"canonical_unit","unit_name":"degree celsius"}},"formula":"query1"}]}],"autoscale":true,"precision":0},"layout":{"x":2,"y":2,"width":1,"height":3}},{"id":3619877521442352,"definition":{"title":"Disk 4","title_size":"16","title_align":"left","type":"query_value","requests":[{"response_format":"scalar","queries":[{"name":"query1","data_source":"metrics","query":"avg:snmp.synology.diskTemperature{synology_disk_id:disk_4} by {synology_disk_id}","aggregator":"last"}],"conditional_formats":[{"comparator":"<=","value":40,"palette":"black_on_light_green"},{"comparator":">","value":40,"palette":"black_on_light_yellow"},{"comparator":">","value":50,"palette":"black_on_light_red"}],"formulas":[{"number_format":{"unit":{"type":"canonical_unit","unit_name":"degree celsius"}},"formula":"query1"}]}],"autoscale":true,"precision":0},"layout":{"x":3,"y":2,"width":1,"height":3}},{"id":5403120396497643,"definition":{"title":"Disk 5","title_size":"16","title_align":"left","type":"query_value","requests":[{"response_format":"scalar","queries":[{"name":"query1","data_source":"metrics","query":"avg:snmp.synology.diskTemperature{synology_disk_id:disk_5} by {synology_disk_id}","aggregator":"last"}],"conditional_formats":[{"comparator":"<=","value":40,"palette":"black_on_light_green"},{"comparator":">","value":40,"palette":"black_on_light_yellow"},{"comparator":">","value":50,"palette":"black_on_light_red"}],"formulas":[{"number_format":{"unit":{"type":"canonical_unit","unit_name":"degree celsius"}},"formula":"query1"}]}],"autoscale":true,"precision":0},"layout":{"x":4,"y":2,"width":1,"height":3}},{"id":3276823006306919,"definition":{"title":"S.M.A.R.T","title_size":"16","title_align":"left","type":"query_table","requests":[{"queries":[{"data_source":"metrics","name":"query1","query":"avg:snmp.synology.diskSMARTAttrCurrent{*} by {synology_disk_smart_info_dev_name,synology_disk_smart_attr_status}","aggregator":"last"}],"response_format":"scalar","text_formats":[[],[{"match":{"type":"is","value":"ok"},"palette":"green_on_white"},{"match":{"type":"is_not","value":"ok"},"palette":"white_on_red"}]],"sort":{"order_by":[{"type":"group","name":"synology_disk_smart_info_dev_name","order":"asc"}],"count":10},"formulas":[{"cell_display_mode":"bar","alias":"Score","formula":"query1"}]}],"has_search_bar":"auto"},"layout":{"x":5,"y":2,"width":7,"height":3}},{"id":4456469896002703,"definition":{"title":"Read IO/s","show_legend":true,"legend_layout":"horizontal","legend_columns":["avg","min","max","value","sum"],"type":"timeseries","requests":[{"formulas":[{"formula":"query1"}],"queries":[{"query":"sum:snmp.synology.storageIOReads{*} by {synology_storage_io_device}.as_rate().rollup(avg, 15)","data_source":"metrics","name":"query1"}],"response_format":"timeseries","style":{"palette":"dog_classic","line_type":"solid","line_width":"normal"},"display_type":"line"}],"yaxis":{"include_zero":true,"scale":"linear","label":"","min":"auto","max":"auto"}},"layout":{"x":0,"y":5,"width":6,"height":3}},{"id":6415252768633436,"definition":{"title":"Write IO/s","show_legend":true,"legend_layout":"horizontal","legend_columns":["avg","min","max","value","sum"],"type":"timeseries","requests":[{"formulas":[{"alias":"Disk latency","formula":"query1"}],"queries":[{"query":"sum:snmp.synology.storageIOWrites{*} by {synology_storage_io_device}.as_rate().rollup(avg, 15)","data_source":"metrics","name":"query1"}],"response_format":"timeseries","style":{"palette":"cool","line_type":"solid","line_width":"normal"},"display_type":"line"}],"yaxis":{"include_zero":true,"scale":"linear","label":"","min":"auto","max":"auto"}},"layout":{"x":6,"y":5,"width":6,"height":3}},{"id":3709714779238743,"definition":{"title":"Read Throughput","show_legend":true,"legend_layout":"horizontal","legend_columns":["avg","min","max","value","sum"],"type":"timeseries","requests":[{"formulas":[{"alias":"Synology Hybrid RAID","formula":"query1"}],"queries":[{"query":"sum:snmp.synology.storageIONReadX{*}.as_rate().rollup(avg, 15)","data_source":"metrics","name":"query1"}],"response_format":"timeseries","style":{"palette":"purple","line_type":"solid","line_width":"normal"},"display_type":"line"}],"yaxis":{"include_zero":true,"scale":"linear","label":"","min":"auto","max":"auto"}},"layout":{"x":0,"y":8,"width":6,"height":3}},{"id":8424612646836458,"definition":{"title":"Write Throughput","show_legend":true,"legend_layout":"horizontal","legend_columns":["avg","min","max","value","sum"],"type":"timeseries","requests":[{"formulas":[{"alias":"Synology Hybrid RAID","formula":"query1"}],"queries":[{"query":"sum:snmp.synology.storageIONWrittenX{*}.as_rate().rollup(avg, 15)","data_source":"metrics","name":"query1"}],"response_format":"timeseries","style":{"palette":"cool","line_type":"solid","line_width":"normal"},"display_type":"line"}],"yaxis":{"include_zero":true,"scale":"linear","label":"","min":"auto","max":"auto"}},"layout":{"x":6,"y":8,"width":6,"height":3}},{"id":2653036156236550,"definition":{"title":"I/O wait (%)","show_legend":true,"legend_layout":"horizontal","legend_columns":["avg","min","max","value","sum"],"type":"timeseries","requests":[{"formulas":[{"alias":"I/O Wait","formula":"query1"}],"queries":[{"query":"max:system.cpu.iowait{$host}","data_source":"metrics","name":"query1"}],"response_format":"timeseries","style":{"palette":"orange","line_type":"solid","line_width":"normal"},"display_type":"line"}]},"layout":{"x":0,"y":11,"width":12,"height":3}}]},"layout":{"x":0,"y":48,"width":12,"height":15,"is_column_break":true}},{"id":5258277935869370,"definition":{"title":"Logs","background_color":"pink","show_title":true,"type":"group","layout_type":"ordered","widgets":[{"id":2148479997528779,"definition":{"title":"","title_size":"16","title_align":"left","requests":[{"response_format":"event_list","query":{"data_source":"logs_stream","query_string":"host:DS1019","indexes":[],"storage":"hot"},"columns":[{"field":"status_line","width":"auto"},{"field":"timestamp","width":"auto"},{"field":"host","width":"auto"},{"field":"service","width":"auto"},{"field":"content","width":"compact"}]}],"type":"list_stream"},"layout":{"x":0,"y":0,"width":12,"height":4}}]},"layout":{"x":0,"y":63,"width":12,"height":5}},{"id":7025393475048380,"definition":{"title":"Surveillance Station","background_color":"vivid_green","show_title":true,"type":"group","layout_type":"ordered","widgets":[]},"layout":{"x":0,"y":68,"width":12,"height":1}},{"id":4313018337551853,"definition":{"type":"image","url":"/api/v2/images/4acd4eb8-c331-4fb3-9348-ebe6e16f909f","sizing":"contain","margin":"md","has_background":true,"has_border":true,"vertical_align":"center","horizontal_align":"center"},"layout":{"x":0,"y":69,"width":2,"height":4}},{"id":2838173082085601,"definition":{"title":"Detection","title_size":"16","title_align":"left","time":{"type":"daily","offset":0},"type":"query_value","requests":[{"response_format":"scalar","queries":[{"name":"query1","data_source":"metrics","query":"sum:surveillance_station.detection{*}.as_count()","aggregator":"sum"}],"formulas":[{"formula":"query1"}]}],"autoscale":true,"precision":0},"layout":{"x":2,"y":69,"width":2,"height":4}}],"template_variables":[{"name":"host","prefix":"host","available_values":[],"default":"*"}],"layout_type":"ordered","notify_list":[],"pause_auto_refresh":false,"reflow_type":"fixed"}

Laisser un commentaire

En savoir plus sur jbroberjot.com

Abonnez-vous pour poursuivre la lecture et avoir accès à l’ensemble des archives.

Poursuivre la lecture