[DzVents] Supervision d'un nas Synology avec SNMP

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
dokho
Messages : 685
Inscription : 28 déc. 2014, 19:32

Re: DZVents : Supervision d'un nas Synology avec SNMP

Message par dokho »

Bonsoir,

Ça fonctionne avec ta version du script.

Il faut juste que je regarde pour avoir l'espace libre/utilisé en Go et non en To.


Merci.
Tonio16
Messages : 349
Inscription : 13 oct. 2017, 17:00

Re: DZVents : Supervision d'un nas Synology avec SNMP

Message par Tonio16 »

Papoo

J'ai changé le type du device "synology espace disponible". Il m'affichait toujours zéro dans la ligne titre. De plus le log était étrange: des pointes certains jours et la reste du temps zéro.
J'ai changé pour un simple custom.

Antoine
Domoticz V2020.2 sous raspbian-Buster
Raspberry Pi B+ avec Clé Zigate 3.1d Plugin 4.11.011
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: DZVents : Supervision d'un nas Synology avec SNMP

Message par papoo »

j'ai exactement le même problème, j'avais configuré un compteur je le remplace par un custom sensor
merci
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
titis14
Messages : 171
Inscription : 22 juin 2018, 14:09

Re: DZVents : Supervision d'un nas Synology avec SNMP

Message par titis14 »

Bonjour,
Dans le code ci-dessous il faut indiquer le nom des interrupteurs ?
J'ai mis le script en place, une fois mis dans le dossier il n'y a rien a faire pour que les valeurs remonte ? Je n'ai rien qui remonte au niveau des valeurs.
Merci

Code : Tout sélectionner

    local NasIp = "192.168.1.5"                               	-- NAS IP Address
    local CommunityPassword = "password"                          -- SNMP Password
    local NAS = "Synology"                                     		-- NAS Switch
    local NAS_HD1_TEMP = "Synology Temp"				-- NAS HD1 Temp
    local NAS_CPU = "Synology Utilisation CPU"                  -- NAS CPU 
    local NAS_MEM = "Synology Utilisation RAM"                  -- NAS MEM 
    local NAS_HD_SPACE_PERC = "Synology Occupation Disque"      -- NAS HD Space  in %
    local NAS_HD_SPACE = "Synology Espace Disponible"           -- NAS HD Space  in Go
    local NAS_HD2_TEMP = ""                                     -- NAS HD2 Temp 
    local OID_HDtemp1 = '1.3.6.1.4.1.6574.2.1.1.6.0'            -- Temperature HD1
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: DZVents : Supervision d'un nas Synology avec SNMP

Message par papoo »

tu as installé SNMP sur ton systeme ?
tu as activé le snmp sur le nas?
As tu testé en ligne de commande (comme indiqué en début de script) voir si tu avais bien des infos qui remontent?
As tu renseigné le password SNMP du nas dans le script?
oui il faut renseigner les noms des devices affectés a la gestion de ton nas, le script est sensible à la case (Majuscule/Minuscule) aux espaces ils doivent etre exactement pareil.
il n'y a qu'un interrupteur, le reste ce sont soient des sondes de température ou des customs sensors.
décommente la ligne

Code : Tout sélectionner

  -- level    =   domoticz.LOG_DEBUG,
(enleve les deux tirets devant) et regarde ce qui remonte
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
titis14
Messages : 171
Inscription : 22 juin 2018, 14:09

Re: DZVents : Supervision d'un nas Synology avec SNMP

Message par titis14 »

C'est bon j'ai changé la fin des valeurs OID, il me reste à voir la Ram il me dit 5% utilisé alors que sur le Nas je suis à 30% . Pareil pour l'espace disque, il me dit 38% utilisé alors que sur le Nas je suis a 58% et espace dispo il indique 1Go alors qu'il me reste 2.24To.
Pour la mémoire à la ligne 124 et 139 c'est indiqué 1024 du coup faut que je passe à 4096 ?
Pour les HDD il me remonte les 2 à 38° alors qu'ils sont à 38 42 42 et 40.
Merci
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: DZVents : Supervision d'un nas Synology avec SNMP

Message par papoo »

les oid sont differentrs selon les modeles.
je n'ai qu'un ds218 je n'ai pas testé avec autre chose, il va te falloir adapter le script à ton matériel
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
titis14
Messages : 171
Inscription : 22 juin 2018, 14:09

Re: DZVents : Supervision d'un nas Synology avec SNMP

Message par titis14 »

J'ai trouvé l'OID pour la température système, si on test la ligne elle remonte bien la température que l'on trouve dans le centre d'info.
La voici
1.3.6.1.4.1.6574.1.2.0
Il serait bien de mettre à jour le script pour l'ajouter.
Je l'ai trouvé sur cette page https://jbsky.fr/nagios-monitorer-une-s ... -synology/

J'ai essayer de l'ajouter, mais ce qui est bizarre c'est que toutes mes températures remonte 38° la température de HDD1, dans les logs j'ai bien 43° qui remonte pour le système. Après je suis pas douté en codage donc voici le script modifié et les logs.
Image

Code : Tout sélectionner

--[[
name : synology.lua
auteur : papoo
creation : 24/08/2018
mise à  jour : 03/09/2018

https://pon.fr/dzvents-supervision-dun-nas-synology-avec-snmp/
https://github.com/papo-o/domoticz_scripts/blob/master/dzVents/scripts/Synology.lua
https://easydomoticz.com/forum/viewtopic.php?f=17&t=7022
http://www.domoticz.com/forum/viewtopic.php?f=59&t=24618

For this script to work you need to enable SNMP on your synology NAS and install SNMP on your Raspberry Pi

Enable SNMP on your synology NAS
 
Go toMain Menu>Control Panel >SNMP to enable SNMP service, which allows users to monitor
Synology DiskStation network flow with the network management software.

You can use V1/V2
And set a password (Community)

Install SNMP on Raspberry Pi
Log in to you Raspberry Pi and issue:

sudo apt-get install snmpd
sudo apt-get install snmp

Reboot your Pi:
sudo reboot

Check if SNMP is up and running, issue:
snmpget -v 2c -c PASSWORD -O qv NASIPADDRESS 1.3.6.1.4.1.6574.1.5.1.0

Replace PASSWORD with the Community name you entered while setting up your NAS
Replace NASIPADDRESS with the ip address of your NAS
You should get something like this:
"DS218+" which corresponds to your Synology Model

test 
snmpget -v 2c -c PASSWORD -O qv NASIPADDRESS 1.3.6.1.2.1.25.2.3.1.5.31
snmpget -v 2c -c PASSWORD -O qv NASIPADDRESS 1.3.6.1.2.1.25.2.3.1.5.38
snmpget -v 2c -c PASSWORD -O qv NASIPADDRESS 1.3.6.1.2.1.25.2.3.1.5.41
then modify     OID_HDUnit, OID_HDTotal, OID_HDUsed variables (.38 on DSM 5.1, .41 on DSM 6.0+ or .31 on my new DS218)

if you have à DS2XX model, uncomment     -- local OID_HDtemp2='1.3.6.1.4.1.6574.2.1.1.6.1'  to show the hdd2 temperature
Then create:
1 device Switch
1 temperature device
3 percent devices
1 meter device   
--]]
--------------------------------------------
-------------Fonctions----------------------
-------------------------------------------- 
function format(str)
   if (str) then
      str = string.gsub (str, " Bytes", "")
      str = string.gsub (str, " kB", "")

   end
   return str   
end

-------------------------------------------
-------------Fin Fonctions-----------------
-------------------------------------------

    local NasIp = "192.168.1.5"                               	-- NAS IP Address
    local CommunityPassword = "password"                          -- SNMP Password
    local NAS = "Synology"                                     		-- NAS Switch
    local NAS_HD1_TEMP = "Synology HDD1"				-- NAS HD1 Temp
    local NAS_CPU = "Synology Utilisation CPU"                  -- NAS CPU 
    local NAS_MEM = "Synology Utilisation RAM"                  -- NAS MEM 
    local NAS_HD_SPACE_PERC = "Synology Occupation Disque"      -- NAS HD Space  in %
    local NAS_HD_SPACE = "Synology Espace Disponible"           -- NAS HD Space  in Go
    local NAS_HD2_TEMP = "Synology HDD2"                        -- NAS HD2 Temp 
	local NAS_TEMP_SYSTEM = "Synology Systeme"					-- NAS Temp System
    local OID_HDtemp1 = '1.3.6.1.4.1.6574.2.1.1.6.0'            -- Temperature HD1
    local OID_HDUnit = '1.3.6.1.2.1.25.2.3.1.4.31'              -- OID HD Unit Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+ or .31 on my new DS218
    local OID_HDTotal = '1.3.6.1.2.1.25.2.3.1.5.31'             -- OID Total space volume in Go Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+ or .31 on my new DS218
    local OID_HDUsed = '1.3.6.1.2.1.25.2.3.1.6.31'              -- OID Space used volume in Go Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+or .31 on my new DS218
    local OID_CpuUser = '1.3.6.1.4.1.2021.11.9.0'               -- OID CPU user
    local OID_CpuSystem = '1.3.6.1.4.1.2021.11.10.0'            -- OID CPU System
    local OID_MemAvailable = '1.3.6.1.4.1.2021.4.13.0'          -- OID Free Memory Available
    local OID_HDtemp2= '1.3.6.1.4.1.6574.2.1.1.6.1'           -- OID Temperature HD2 
	local OID_Temp_system= '1.3.6.1.4.1.6574.1.2.0'			-- Temperature System	
return {
    active = true,
    on = {
    timer = {'every minute'}
    },    
   -- on = { devices = { "your trigger device" }},
        
  logging =   { -- level    =   domoticz.LOG_INFO,                                             -- Seulement un niveau peut être actif; commenter les autres
                -- level    =   domoticz.LOG_ERROR,                                            -- Only one level can be active; comment others
                level    =   domoticz.LOG_DEBUG,
                -- level    =   domoticz.LOG_MODULE_EXEC_INFO,
                marker    =   "Synology Monitor v1.04 "      },
    
    execute = function(dz)
        local i = 0
        local results = {}
        local command = 'snmpget -v 2c -c '..CommunityPassword..' -O qv '..NasIp..' '..OID_HDtemp1..' '..OID_HDUnit..' '..OID_HDTotal..' '..OID_HDUsed..' '..OID_CpuUser..' '..OID_CpuSystem..' '..OID_MemAvailable..' '..OID_HDtemp2..'  '..OID_Temp_system
        local handle = assert(io.popen(command))
        for line in handle:lines() do
        --for i, line in pairs(handle) do
            --dz.log(format(line),dz.LOG_DEBUG)
            results[i] =  format(line)
            i = i + 1
        end
        handle:close()
        if results[0] then
            dz.log("HDTemp1 : "..results[0],dz.LOG_DEBUG)
            dz.devices(NAS_HD1_TEMP).update(0,results[0])
            end
        if results[1] then dz.log("HDUnit : "..results[1],dz.LOG_DEBUG) end        
        if results[2] then dz.log("HDTotal : "..results[2],dz.LOG_DEBUG) end        
        if results[3] then dz.log("HDUsed : "..results[3],dz.LOG_DEBUG) end
        if results[4] then dz.log("CpuUser : "..results[4],dz.LOG_DEBUG) end      
        if results[5] then dz.log("CpuSystem : "..results[5],dz.LOG_DEBUG) end  
        if results[6] then dz.log("MemAvailable : "..results[6],dz.LOG_DEBUG) end
        if results[7] then
            dz.log("HDTemp2 : "..results[0],dz.LOG_DEBUG)
            if NAS_HD2_TEMP then dz.devices(NAS_HD2_TEMP).update(0,results[0]) end
            end     
        if results[8] then
            dz.log("SYStemp : "..results[8],dz.LOG_DEBUG)
            if NAS_TEMP_SYSTEM then dz.devices(NAS_TEMP_SYSTEM).update(0,results[0]) end
            end   			
        local HDFree = dz.utils.round(((results[2] - results[3]) *  results[1] / 1024 / 1024 / 1024), 0)
        if HDFree then 
            dz.log("HDFree : "..HDFree,dz.LOG_DEBUG) 
            dz.devices(NAS_HD_SPACE).update(0,HDFree)
            end 
        local HDFreePerc = dz.utils.round(((results[3] * 100) / results[2]), 0)
        if HDFreePerc then 
            dz.log("HDFreePercent : "..HDFreePerc,dz.LOG_DEBUG)
            dz.devices(NAS_HD_SPACE_PERC).update(0,HDFreePerc)
            end
        local CpuUsed = (results[4] + results[5])
        if CpuUsed then 
            dz.log("CpuUsed : "..CpuUsed,dz.LOG_DEBUG)
            dz.devices(NAS_CPU).update(0,CpuUsed)
            end
        local MemUsedPerc = dz.utils.round((((results[6] / 1024) *100 / 1024)), 0)
        if MemUsedPerc then 
            dz.log("MemUsedPercent : "..MemUsedPerc,dz.LOG_DEBUG)
            dz.devices(NAS_MEM).update(0,MemUsedPerc)
            end
        if results[0] and results[5] and results[6] then
                dz.log("Requete SNMP correcte ",dz.LOG_DEBUG)
                dz.devices(NAS).switchOn().checkFirst()
            else
                dz.log("Requete SNMP incorrecte ",dz.LOG_DEBUG)
                dz.devices(NAS).switchOff().checkFirst()
            end
            
    end
}
2019-02-10 17:04:00.290 Status: dzVents: Info: Synology Monitor v1.04 : ------ Start external script: Synology.lua:, trigger: every minute
2019-02-10 17:04:00.351 Status: dzVents: Debug: Synology Monitor v1.04 : HDTemp1 : 38
2019-02-10 17:04:00.368 Status: dzVents: Debug: Synology Monitor v1.04 : Processing device-adapter for Synology HDD1: Temperature device adapter
2019-02-10 17:04:00.368 Status: dzVents: Debug: Synology Monitor v1.04 : HDUnit : 4096
2019-02-10 17:04:00.368 Status: dzVents: Debug: Synology Monitor v1.04 : HDTotal : 596382
2019-02-10 17:04:00.368 Status: dzVents: Debug: Synology Monitor v1.04 : HDUsed : 230597
2019-02-10 17:04:00.368 Status: dzVents: Debug: Synology Monitor v1.04 : CpuUser : 2
2019-02-10 17:04:00.368 Status: dzVents: Debug: Synology Monitor v1.04 : CpuSystem : 3
2019-02-10 17:04:00.368 Status: dzVents: Debug: Synology Monitor v1.04 : MemAvailable : 40892
2019-02-10 17:04:00.368 Status: dzVents: Debug: Synology Monitor v1.04 : HDTemp2 : 38
2019-02-10 17:04:00.369 Status: dzVents: Debug: Synology Monitor v1.04 : Processing device-adapter for Synology HDD2: Temperature device adapter
2019-02-10 17:04:00.369 Status: dzVents: Debug: Synology Monitor v1.04 : SYStemp : 43
2019-02-10 17:04:00.370 Status: dzVents: Debug: Synology Monitor v1.04 : Processing device-adapter for Synology Systeme: Temperature device adapter
2019-02-10 17:04:00.370 Status: dzVents: Debug: Synology Monitor v1.04 : HDFree : 1
2019-02-10 17:04:00.370 Status: dzVents: Debug: Synology Monitor v1.04 : Processing device-adapter for Synology Espace Disponible: Counter device adapter
2019-02-10 17:04:00.371 Status: dzVents: Debug: Synology Monitor v1.04 : HDFreePercent : 39
2019-02-10 17:04:00.371 Status: dzVents: Debug: Synology Monitor v1.04 : Processing device-adapter for Synology Occupation Disque: Percentage device adapter
2019-02-10 17:04:00.372 Status: dzVents: Debug: Synology Monitor v1.04 : CpuUsed : 5
2019-02-10 17:04:00.372 Status: dzVents: Debug: Synology Monitor v1.04 : Processing device-adapter for Synology Utilisation CPU: Percentage device adapter
2019-02-10 17:04:00.372 Status: dzVents: Debug: Synology Monitor v1.04 : MemUsedPercent : 4
2019-02-10 17:04:00.373 Status: dzVents: Debug: Synology Monitor v1.04 : Processing device-adapter for Synology Utilisation RAM: Percentage device adapter
2019-02-10 17:04:00.373 Status: dzVents: Debug: Synology Monitor v1.04 : Requete SNMP correcte
2019-02-10 17:04:00.374 Status: dzVents: Debug: Synology Monitor v1.04 : Processing device-adapter for Synology: Switch device adapter
2019-02-10 17:04:00.374 Status: dzVents: Debug: Synology Monitor v1.04 : Constructed timed-command: On
2019-02-10 17:04:00.374 Status: dzVents: Info: Synology Monitor v1.04 : ------ Finished Synology.lua
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: DZVents : Supervision d'un nas Synology avec SNMP

Message par papoo »

en fait tu veux changer le script pour les synology 1 disque afin de l'utiliser sur les synology à plusieurs disques
pas besoin, le script existe deja
et l'oid que tu donne n'est pas la température du CPU mais du systeme, déjà implémenté dans la version à plusieurs disques

https://github.com/papo-o/domoticz_scri ... ology2.lua
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
titis14
Messages : 171
Inscription : 22 juin 2018, 14:09

Re: DZVents : Supervision d'un nas Synology avec SNMP

Message par titis14 »

Ah merci à toi c'est beaucoup mieux.
Reste à savoir pourquoi Domoticz m'affiche 2x la température du HDD1 et si je teste les lignes avec l'OID j'ai bien 2 température différente.

Code : Tout sélectionner

sebr@Serveur-debian:~$ snmpwalk -v 2c -c synology 192.168.1.5 1.3.6.1.4.1.6574.2.1.1.6.0
iso.3.6.1.4.1.6574.2.1.1.6.0 = INTEGER: 37
sebr@Serveur-debian:~$ snmpwalk -v 2c -c synology 192.168.1.5 1.3.6.1.4.1.6574.2.1.1.6.1
iso.3.6.1.4.1.6574.2.1.1.6.1 = INTEGER: 41
Une autre question, dans espace dispo pourquoi il m'affiche 1To et pas la bonne valeur que j'ai en dessous (2.24To) ?
Image
Merci
Répondre