Greetings friends, what an exciting blog I have the honour to start 2024 with. After the very successful dashboard for QNAP, using SNMP v3, I got tons of emails and feedback asking for the same but for Synology. Unfortunately I do not have any Synology Hardware, so I have user Virtual DSM to achieve this dashboard. We are going to use our traditional stack which is telegraf, influxDB, and Grafana. For this tutorial, we will need as well SNMP.
Some more SNMP dashboard might come, for example one for ESXis, but for now I wanted to start with a critical component of my homelab which is my NAS, where my backups reside, etc.
Grafana Dashboard for Synology Devices, using SNMP v3
When you finish the entry you will have something similar to this. It might be different according to your device, like more drives, less drives, more fans, etc. You can quickly filter by time on the top right, and sampling to obtain more or less granularity on the charts.
Dashboard – Summary
- Synology Overview – On the top bar we can find a quick overview of our Synology, number of devices, model, RAM, CPU Cores, Ethernets, etc.
- Fan Status – The status of our FANs.
- System Temperature – This will show you the different main temperatures, like CPU, and system.
- Disk Temperatures – Another great one, it will show you all your disks speeds.
- CPU/RAM/Network Usage – Time-series metrics with the consumption of the different resources by time.
- Disk IOPS/Volume Usage – Two visualizations about disks and volumes, the first one on the left, aiming at the IOPS consumed, on the right showing us the consumption of disk in %.
Topology with all logical components
This entry is very similar to the previous ones, we will use telegraf to collect the SNMP information from our Synology, from there we will send them to InfluxDB, and visualize them with Grafana . The design would be something similar to this:
Synology, and Telegraf SNMPv3 Configuration
For the second time time on the series, I am using SNMP. I must admit it is still not my cup of tea, but it is true that sometimes it is the easiest way to take data out, not that easy to put together into a monitoring tool. There are a few steps we need to perform on our Synology. I used the great work from https://github.com/wbenny/synology-nas-monitoring as inspiration for some steps.
SNMP v3 configuration
We are going to use SNMP, but not v1/v2, random without user/pass. We are going to to do it right, and secure. So we enable SNMP, version 3, and we configure authentication, and privacy:
With these little steps, we are all set at the Synology level.
Quick sanity check before we jump to telegraf
I got a few dozens of comments about the dashboard not working for QNAP, so, I’ve decided to add this step here, please check if from your telegraf, you can connect properly to your Synology using SNMP v3, like here:
snmpwalk -v3 -u YOURUSERFORSNMPV3 -l authPriv -a SHA -A 'YOURSERVICEPASS' -x DES -X 'YOURPRIVACYPASS' YOURSYNOLOGYIP |more
If all good, you should see something like this:
SNMPv2-MIB::sysDescr.0 = STRING: Linux DSM-VIRTUAL-001 4.4.302+ #69057 SMP Mon Nov 13 14:19:28 CST 2023 x86_64 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-TC::linux DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1514343) 4:12:23.43 SNMPv2-MIB::sysContact.0 = STRING: admin@diskstation SNMPv2-MIB::sysName.0 = STRING: DSM-VIRTUAL-001 SNMPv2-MIB::sysLocation.0 = STRING: Unknown SNMPv2-MIB::sysORLastChange.0 = Timeticks: (2) 0:00:00.02 SNMPv2-MIB::sysORID.1 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance SNMPv2-MIB::sysORID.2 = OID: SNMP-MPD-MIB::snmpMPDCompliance SNMPv2-MIB::sysORID.3 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB SNMPv2-MIB::sysORID.5 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
If that appears, that means at least that the SNMP v3 is properly configured in Synology, and that you have all the snmp components on your Linux machine.
Telegraf additional steps, MIB download, and configuration
SNMP is a bit particular, so first of let’s install the next package on your telegraf server (use yum if RHEL based):
sudo apt-get install snmp snmp-mibs-downloader
And now, make sure you put all the Synology MIBS on the correct path:
/usr/share/snmp/mibs/
wget https://global.download.synology.com/download/Document/Software/DeveloperGuide/Firmware/DSM/All/enu/Synology_MIB_File.zip unzip Synology_MIB_File.zip mv Synology_MIB_File/* /usr/share/snmp/mibs
Let’s now test that the MIBS are valid, etc. similar to the command we ran before, but now with an specific call to the OID:
snmpwalk -v3 -u YOURUSERFORSNMPV3 -l authPriv -a SHA -A 'YOURSERVICEPASS' -x DES -X 'YOURPRIVACYPASS' YOURSYNOLOGYIP SYNOLOGY-SYSTEM-MIB::temperature.0 SYNOLOGY-SYSTEM-MIB::temperature.0 = INTEGER: 60
If you get some response, like in my case, 60, that is good news. Please continue
With this, we should have now everything that is required on all the correct path, you can check on that folder to see if the files are there.
Under your vi /etc/snmp/snmp.conf make sure you have the next enabled, if you make changes, you should restart the snmp service.
nano /etc/snmp/snmp.conf # As the snmp packages come without MIB files due to license reasons, loading # of MIBs is disabled by default. If you added the MIBs you can reenable # loading them by commenting out the following line. mibs +ALL # If you want to globally change where snmp libraries, commands and daemons # look for MIBS, change the line below. Note you can set this for individual # tools with the -M option or MIBDIRS environment variable. # # mibdirs /usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf
Alright, we are finally ready to rock & roll, let’s create the specific Synology configuration under /etc/telegraf/telegraf.d/synology.conf with the next content. Please replace your SynologyIP, the username used on the SNMPv3 on Synology, and the passwords used for auth and privacy:
[[inputs.snmp]] agents = ["YOURSYNOLOGYIP"] # Replace with your Synology IP address interval = "30s" timeout = "30s" retries = 3 max_repetitions = 10 version = 3 sec_name = "YOURUSERNAME" # Replace with your security username auth_protocol = "SHA" # Or MD5, depending on your setup auth_password = "YOURPASS" # Replace with your auth password sec_level = "authPriv" priv_protocol = "DES" # Or AES, depending on your setup priv_password = "YOUROTHERPASS" # Replace with your privacy password name = "snmp.Synology" [[inputs.snmp.field]] name = "sysName" oid = "SNMPv2-MIB::sysName.0" is_tag = true [[inputs.snmp.field]] name = "sysDescr" oid = "SNMPv2-MIB::sysDescr.0" [[inputs.snmp.field]] name = "sysContact" oid = "SNMPv2-MIB::sysContact.0" [[inputs.snmp.field]] name = "sysLocation" oid = "SNMPv2-MIB::sysLocation.0" [[inputs.snmp.field]] name = "sysUpTime" oid = "SNMPv2-MIB::sysUpTime.0" # # UCD-SNMP-MIB::systemStats # ------------------------- # [[inputs.snmp.field]] name = "systemStats.ssSwapIn" oid = "UCD-SNMP-MIB::ssSwapIn.0" [[inputs.snmp.field]] name = "systemStats.ssSwapOut" oid = "UCD-SNMP-MIB::ssSwapOut.0" [[inputs.snmp.field]] name = "systemStats.ssIOSent" oid = "UCD-SNMP-MIB::ssIOSent.0" [[inputs.snmp.field]] name = "systemStats.ssIOReceive" oid = "UCD-SNMP-MIB::ssIOReceive.0" [[inputs.snmp.field]] name = "systemStats.ssSysInterrupts" oid = "UCD-SNMP-MIB::ssSysInterrupts.0" [[inputs.snmp.field]] name = "systemStats.ssSysContext" oid = "UCD-SNMP-MIB::ssSysContext.0" [[inputs.snmp.field]] name = "systemStats.ssCpuUser" oid = "UCD-SNMP-MIB::ssCpuUser.0" [[inputs.snmp.field]] name = "systemStats.ssCpuSystem" oid = "UCD-SNMP-MIB::ssCpuSystem.0" [[inputs.snmp.field]] name = "systemStats.ssCpuIdle" oid = "UCD-SNMP-MIB::ssCpuIdle.0" [[inputs.snmp.field]] name = "systemStats.ssCpuRawUser" oid = "UCD-SNMP-MIB::ssCpuRawUser.0" [[inputs.snmp.field]] name = "systemStats.ssCpuRawNice" oid = "UCD-SNMP-MIB::ssCpuRawNice.0" [[inputs.snmp.field]] name = "systemStats.ssCpuRawSystem" oid = "UCD-SNMP-MIB::ssCpuRawSystem.0" [[inputs.snmp.field]] name = "systemStats.ssCpuRawIdle" oid = "UCD-SNMP-MIB::ssCpuRawIdle.0" [[inputs.snmp.field]] name = "systemStats.ssCpuRawWait" oid = "UCD-SNMP-MIB::ssCpuRawWait.0" [[inputs.snmp.field]] name = "systemStats.ssCpuRawKernel" oid = "UCD-SNMP-MIB::ssCpuRawKernel.0" [[inputs.snmp.field]] name = "systemStats.ssCpuRawInterrupt" oid = "UCD-SNMP-MIB::ssCpuRawInterrupt.0" [[inputs.snmp.field]] name = "systemStats.ssIORawSent" oid = "UCD-SNMP-MIB::ssIORawSent.0" [[inputs.snmp.field]] name = "systemStats.ssIORawReceived" oid = "UCD-SNMP-MIB::ssIORawReceived.0" [[inputs.snmp.field]] name = "systemStats.ssRawInterrupts" oid = "UCD-SNMP-MIB::ssRawInterrupts.0" [[inputs.snmp.field]] name = "systemStats.ssRawContexts" oid = "UCD-SNMP-MIB::ssRawContexts.0" [[inputs.snmp.field]] name = "systemStats.ssCpuRawSoftIRQ" oid = "UCD-SNMP-MIB::ssCpuRawSoftIRQ.0" [[inputs.snmp.field]] name = "systemStats.ssRawSwapIn" oid = "UCD-SNMP-MIB::ssRawSwapIn.0" [[inputs.snmp.field]] name = "systemStats.ssRawSwapOut" oid = "UCD-SNMP-MIB::ssRawSwapOut.0" [[inputs.snmp.field]] name = "systemStats.ssCpuRawSteal" oid = "UCD-SNMP-MIB::ssCpuRawSteal.0" [[inputs.snmp.field]] name = "systemStats.ssCpuRawGuest" oid = "UCD-SNMP-MIB::ssCpuRawGuest.0" [[inputs.snmp.field]] name = "systemStats.ssCpuRawGuestNice" oid = "UCD-SNMP-MIB::ssCpuRawGuestNice.0" [[inputs.snmp.field]] name = "systemStats.ssCpuNumCpus" oid = "UCD-SNMP-MIB::ssCpuNumCpus.0" # # UCD-SNMP-MIB::memory # -------------------- [[inputs.snmp.field]] name = "memory.memTotalSwap" oid = "UCD-SNMP-MIB::memTotalSwapX.0" [[inputs.snmp.field]] name = "memory.memAvailSwap" oid = "UCD-SNMP-MIB::memAvailSwapX.0" [[inputs.snmp.field]] name = "memory.memTotalReal" oid = "UCD-SNMP-MIB::memTotalRealX.0" [[inputs.snmp.field]] name = "memory.memAvailReal" oid = "UCD-SNMP-MIB::memAvailRealX.0" [[inputs.snmp.field]] name = "memory.memTotalFree" oid = "UCD-SNMP-MIB::memTotalFreeX.0" [[inputs.snmp.field]] name = "memory.memMinimumSwap" oid = "UCD-SNMP-MIB::memMinimumSwapX.0" [[inputs.snmp.field]] name = "memory.memShared" oid = "UCD-SNMP-MIB::memSharedX.0" [[inputs.snmp.field]] name = "memory.memBuffer" oid = "UCD-SNMP-MIB::memBufferX.0" [[inputs.snmp.field]] name = "memory.memCached" oid = "UCD-SNMP-MIB::memCachedX.0" # # HOST-RESOURCES-MIB::hrSystem # ---------------------------- # [[inputs.snmp.field]] name = "hrSystem.hrSystemUptime" oid = "HOST-RESOURCES-MIB::hrSystemUptime.0" [[inputs.snmp.field]] name = "hrSystem.hrSystemNumUsers" oid = "HOST-RESOURCES-MIB::hrSystemNumUsers.0" [[inputs.snmp.field]] name = "hrSystem.hrSystemProcesses" oid = "HOST-RESOURCES-MIB::hrSystemProcesses.0" # # SYNOLOGY-SYSTEM-MIB::synoSystem # ------------------------------- # [[inputs.snmp.field]] name = "synoSystem.systemStatus" oid = "SYNOLOGY-SYSTEM-MIB::systemStatus.0" [[inputs.snmp.field]] name = "synoSystem.temperature" oid = "SYNOLOGY-SYSTEM-MIB::temperature.0" [[inputs.snmp.field]] name = "synoSystem.powerStatus" oid = "SYNOLOGY-SYSTEM-MIB::powerStatus.0" [[inputs.snmp.field]] name = "synoSystem.systemFanStatus" oid = "SYNOLOGY-SYSTEM-MIB::systemFanStatus.0" [[inputs.snmp.field]] name = "synoSystem.cpuFanStatus" oid = "SYNOLOGY-SYSTEM-MIB::cpuFanStatus.0" [[inputs.snmp.field]] name = "synoSystem.modelName" oid = "SYNOLOGY-SYSTEM-MIB::modelName.0" [[inputs.snmp.field]] name = "synoSystem.serialNumber" oid = "SYNOLOGY-SYSTEM-MIB::serialNumber.0" [[inputs.snmp.field]] name = "synoSystem.version" oid = "SYNOLOGY-SYSTEM-MIB::version.0" [[inputs.snmp.field]] name = "synoSystem.upgradeAvailable" oid = "SYNOLOGY-SYSTEM-MIB::upgradeAvailable.0" # Load average [[inputs.snmp.table]] oid = "UCD-SNMP-MIB::laTable" name = "snmp.Synology.load" [[inputs.snmp.table.field]] oid = "UCD-SNMP-MIB::laNames" is_tag = true # Network interface [[inputs.snmp.table]] oid = "IF-MIB::ifTable" name = "snmp.Synology.network" [[inputs.snmp.table.field]] oid = "IF-MIB::ifDescr" is_tag = true [[inputs.snmp.table]] oid = "IF-MIB::ifXTable" name = "snmp.Synology.network" [[inputs.snmp.table.field]] oid = "IF-MIB::ifName" is_tag = true # System volume [[inputs.snmp.table]] oid = "HOST-RESOURCES-MIB::hrStorageTable" name = "snmp.Synology.volume" [[inputs.snmp.table.field]] oid = "HOST-RESOURCES-MIB::hrStorageDescr" is_tag = true # Disk [[inputs.snmp.table]] oid = "SYNOLOGY-DISK-MIB::diskTable" name = "snmp.Synology.disk" [[inputs.snmp.table.field]] oid = "SYNOLOGY-DISK-MIB::diskID" is_tag = true # RAID [[inputs.snmp.table]] oid = "SYNOLOGY-RAID-MIB::raidTable" name = "snmp.Synology.raid" [[inputs.snmp.table.field]] oid = "SYNOLOGY-RAID-MIB::raidName" is_tag = true # SSD cache [[inputs.snmp.table]] oid = "SYNOLOGY-FLASHCACHE-MIB::flashCacheTable" name = "snmp.Synology.cache" [[inputs.snmp.table.field]] oid = "SYNOLOGY-FLASHCACHE-MIB::flashCacheSpaceDev" is_tag = true # S.M.A.R.T. [[inputs.snmp.table]] oid = "SYNOLOGY-SMART-MIB::diskSMARTTable" name = "snmp.Synology.smart" [[inputs.snmp.table.field]] oid = "SYNOLOGY-SMART-MIB::diskSMARTInfoDevName" is_tag = true [[inputs.snmp.table.field]] oid = "SYNOLOGY-SMART-MIB::diskSMARTAttrName" is_tag = true # Space IO [[inputs.snmp.table]] oid = "SYNOLOGY-SPACEIO-MIB::spaceIOTable" name = "snmp.Synology.spaceIO" [[inputs.snmp.table.field]] oid = "SYNOLOGY-SPACEIO-MIB::spaceIODevice" is_tag = true # Storage IO [[inputs.snmp.table]] oid = "SYNOLOGY-STORAGEIO-MIB::storageIOTable" name = "snmp.Synology.storageIO" [[inputs.snmp.table.field]] oid = "SYNOLOGY-STORAGEIO-MIB::storageIODevice" is_tag = true # eBox Information from SYNOLOGY-EBOX-MIB [[inputs.snmp.table]] name = "snmp.Synology.ebox" oid = "SYNOLOGY-EBOX-MIB::eboxTable" [[inputs.snmp.table.field]] name = "snmp.Synology.ebox.eboxIndex" oid = "SYNOLOGY-EBOX-MIB::eboxIndex" [[inputs.snmp.table.field]] name = "snmp.Synology.ebox.eboxModel" oid = "SYNOLOGY-EBOX-MIB::eboxModel" [[inputs.snmp.table.field]] name = "snmp.Synology.ebox.eboxPower" oid = "SYNOLOGY-EBOX-MIB::eboxPower" [[inputs.snmp.table.field]] name = "snmp.Synology.ebox.eboxRedundantPower" oid = "SYNOLOGY-EBOX-MIB::eboxRedundantPower" # Flash Cache Information from SYNOLOGY-FLASHCACHE-MIB [[inputs.snmp.table]] name = "snmp.Synology.flashcache" oid = "SYNOLOGY-FLASHCACHE-MIB::flashCacheTable" # Index [[inputs.snmp.table.field]] name = "flashCacheIndex" oid = "SYNOLOGY-FLASHCACHE-MIB::flashCacheIndex" # SSD Device [[inputs.snmp.table.field]] name = "flashCacheSSDDev" oid = "SYNOLOGY-FLASHCACHE-MIB::flashCacheSSDDev" # Space Device [[inputs.snmp.table.field]] name = "flashCacheSpaceDev" oid = "SYNOLOGY-FLASHCACHE-MIB::flashCacheSpaceDev" # Read Hits [[inputs.snmp.table.field]] name = "flashCacheReadHits" oid = "SYNOLOGY-FLASHCACHE-MIB::flashCacheReadHits" # Write Hits [[inputs.snmp.table.field]] name = "flashCacheWriteHits" oid = "SYNOLOGY-FLASHCACHE-MIB::flashCacheWriteHits" # Total Read [[inputs.snmp.table.field]] name = "flashCacheTotalRead" oid = "SYNOLOGY-FLASHCACHE-MIB::flashCacheTotalRead" # Total Write [[inputs.snmp.table.field]] name = "flashCacheTotalWrite" oid = "SYNOLOGY-FLASHCACHE-MIB::flashCacheTotalWrite" # Read Hit Rate [[inputs.snmp.table.field]] name = "flashCacheReadHitRate" oid = "SYNOLOGY-FLASHCACHE-MIB::flashCacheReadHitRate" # Write Hit Rate [[inputs.snmp.table.field]] name = "flashCacheWriteHitRate" oid = "SYNOLOGY-FLASHCACHE-MIB::flashCacheWriteHitRate" # SSD UUID [[inputs.snmp.table.field]] name = "flashCacheSsdUuid" oid = "SYNOLOGY-FLASHCACHE-MIB::flashCacheSsdUuid" # GPU Information from SYNOLOGY-GPUINFO-MIB [[inputs.snmp.table]] name = "snmp.Synology.gpu" # GPU Utilization [[inputs.snmp.table.field]] name = "gpuUtilization" oid = "SYNOLOGY-GPUINFO-MIB::gpuUtilization" # GPU Memory Utilization [[inputs.snmp.table.field]] name = "gpuMemoryUtilization" oid = "SYNOLOGY-GPUINFO-MIB::gpuMemoryUtilization" # GPU Free Memory [[inputs.snmp.table.field]] name = "gpuMemoryFree" oid = "SYNOLOGY-GPUINFO-MIB::gpuMemoryFree" # GPU Used Memory [[inputs.snmp.table.field]] name = "gpuMemoryUsed" oid = "SYNOLOGY-GPUINFO-MIB::gpuMemoryUsed" # GPU Total Memory [[inputs.snmp.table.field]] name = "gpuMemoryTotal" oid = "SYNOLOGY-GPUINFO-MIB::gpuMemoryTotal" # iSCSI LUN Information from SYNOLOGY-ISCSILUN-MIB [[inputs.snmp.table]] name = "snmp.Synology.iscsilun" oid = "SYNOLOGY-ISCSILUN-MIB::iSCSILUNTable" # LUN Index [[inputs.snmp.table.field]] name = "iSCSILUNInfoIndex" oid = "SYNOLOGY-ISCSILUN-MIB::iSCSILUNInfoIndex" # LUN UUID [[inputs.snmp.table.field]] name = "iSCSILUNUUID" oid = "SYNOLOGY-ISCSILUN-MIB::iSCSILUNUUID" # LUN Name [[inputs.snmp.table.field]] name = "iSCSILUNName" oid = "SYNOLOGY-ISCSILUN-MIB::iSCSILUNName" # LUN Read Throughput (High and Low for 64-bit counter) [[inputs.snmp.table.field]] name = "iSCSILUNThroughputReadHigh" oid = "SYNOLOGY-ISCSILUN-MIB::iSCSILUNThroughputReadHigh" [[inputs.snmp.table.field]] name = "iSCSILUNThroughputReadLow" oid = "SYNOLOGY-ISCSILUN-MIB::iSCSILUNThroughputReadLow" # LUN Write Throughput (High and Low for 64-bit counter) [[inputs.snmp.table.field]] name = "iSCSILUNThroughputWriteHigh" oid = "SYNOLOGY-ISCSILUN-MIB::iSCSILUNThroughputWriteHigh" [[inputs.snmp.table.field]] name = "iSCSILUNThroughputWriteLow" oid = "SYNOLOGY-ISCSILUN-MIB::iSCSILUNThroughputWriteLow" # LUN IOPS for Read and Write [[inputs.snmp.table.field]] name = "iSCSILUNIopsRead" oid = "SYNOLOGY-ISCSILUN-MIB::iSCSILUNIopsRead" [[inputs.snmp.table.field]] name = "iSCSILUNIopsWrite" oid = "SYNOLOGY-ISCSILUN-MIB::iSCSILUNIopsWrite" # iSCSI Target Information from SYNOLOGY-ISCSITarget-MIB [[inputs.snmp.table]] name = "snmp.Synology.iscsitarget" oid = "SYNOLOGY-ISCSITarget-MIB::iSCSITargetTable" # iSCSI Target Name [[inputs.snmp.table.field]] name = "iSCSITargetName" oid = "SYNOLOGY-ISCSITarget-MIB::iSCSITargetName" # iSCSI Target IQN [[inputs.snmp.table.field]] name = "iSCSITargetIQN" oid = "SYNOLOGY-ISCSITarget-MIB::iSCSITargetIQN" # iSCSI Target Connection Status [[inputs.snmp.table.field]] name = "iSCSITargetConnectionStatus" oid = "SYNOLOGY-ISCSITarget-MIB::iSCSITargetConnectionStatus" # Synology Services Monitoring [[inputs.snmp.table]] name = "snmp.Synology.services" oid = "SYNOLOGY-SERVICES-MIB::serviceTable" [[inputs.snmp.table.field]] name = "serviceName" oid = "SYNOLOGY-SERVICES-MIB::serviceName" is_tag = true [[inputs.snmp.table.field]] name = "serviceUsers" oid = "SYNOLOGY-SERVICES-MIB::serviceUsers" # Synology High-Availability (SHA) Monitoring [[inputs.snmp.field]] name = "ha.activeNodeName" oid = "SYNOLOGY-SHA-MIB::activeNodeName" [[inputs.snmp.field]] name = "ha.passiveNodeName" oid = "SYNOLOGY-SHA-MIB::passiveNodeName" [[inputs.snmp.field]] name = "ha.clusterAutoFailover" oid = "SYNOLOGY-SHA-MIB::clusterAutoFailover" [[inputs.snmp.field]] name = "ha.clusterName" oid = "SYNOLOGY-SHA-MIB::clusterName" [[inputs.snmp.field]] name = "ha.clusterStatus" oid = "SYNOLOGY-SHA-MIB::clusterStatus" [[inputs.snmp.field]] name = "ha.heartbeatStatus" oid = "SYNOLOGY-SHA-MIB::heartbeatStatus" [[inputs.snmp.field]] name = "ha.heartbeatTxRate" oid = "SYNOLOGY-SHA-MIB::heartbeatTxRate" [[inputs.snmp.field]] name = "ha.heartbeatLatency" oid = "SYNOLOGY-SHA-MIB::heartbeatLatency"
Let’s save it, and run a quick telegraf check.
How-to test telegraf’s configuration
Before we restart telegraf services or anything, let’s run the next command, it should give you some output similar to what you can see here:
root@tig-monitor:/home/oper# telegraf --test --config /etc/telegraf/telegraf.d/synology.conf 2023-02-19T19:23:01Z I! Starting Telegraf 1.24.3 2023-02-19T19:23:01Z I! Available plugins: 222 inputs, 9 aggregators, 26 processors, 20 parsers, 57 outputs 2023-02-19T19:23:01Z I! Loaded inputs: snmp 2023-02-19T19:23:01Z I! Loaded aggregators: 2023-02-19T19:23:01Z I! Loaded processors: 2023-02-19T19:23:01Z W! Outputs are not used in testing mode! 2023-02-19T19:23:01Z I! Tags enabled: host=tig-monitor > snmp.Synology,agent_host=192.168.1.221,host=tig-monitor,sysName=DSM-VIRTUAL-001 snmp.Synology.hrSystem.hrSystemNumUsers=0i,snmp.Synology.hrSystem.hrSystemProcesses=377i,snmp.Synology.hrSystem.hrSystemUptime=1935930i,snmp.Synology.memory.memAvailReal=7069200i,snmp.Synology.memory.memAvailSwap=6979484i,snmp.Synology.memory.memBuffer=19116i,snmp.Synology.memory.memCached=508668i,snmp.Synology.memory.memMinimumSwap=16000i,snmp.Synology.memory.memShared=117252i,snmp.Synology.memory.memTotalFree=14048684i,snmp.Synology.memory.memTotalReal=8135056i,snmp.Synology.memory.memTotalSwap=6979484i,snmp.Synology.synoSystem.cpuFanStatus=1i,snmp.Synology.synoSystem.modelName="DS2422+",snmp.Synology.synoSystem.powerStatus=1i,snmp.Synology.synoSystem.serialNumber="2180SLRG3YZZE",snmp.Synology.synoSystem.systemFanStatus=1i,snmp.Synology.synoSystem.systemStatus=1i,snmp.Synology.synoSystem.temperature=63i,snmp.Synology.synoSystem.upgradeAvailable=2i,snmp.Synology.synoSystem.version="DSM 7.2-69057",snmp.Synology.systemStats.ssCpuIdle=99i,snmp.Synology.systemStats.ssCpuNumCpus=8i,snmp.Synology.systemStats.ssCpuRawGuest=0i,snmp.Synology.systemStats.ssCpuRawGuestNice=0i,snmp.Synology.systemStats.ssCpuRawIdle=15340170i,snmp.Synology.systemStats.ssCpuRawInterrupt=0i,snmp.Synology.systemStats.ssCpuRawKernel=0i,snmp.Synology.systemStats.ssCpuRawNice=245i,snmp.Synology.systemStats.ssCpuRawSoftIRQ=4852i,snmp.Synology.systemStats.ssCpuRawSteal=0i,snmp.Synology.systemStats.ssCpuRawSystem=79492i,snmp.Synology.systemStats.ssCpuRawUser=41524i,snmp.Synology.systemStats.ssCpuRawWait=7112i,snmp.Synology.systemStats.ssCpuSystem=0i,snmp.Synology.systemStats.ssCpuUser=0i,snmp.Synology.systemStats.ssIORawReceived=2647902i,snmp.Synology.systemStats.ssIORawSent=3741718i,snmp.Synology.systemStats.ssIOReceive=0i,snmp.Synology.systemStats.ssIOSent=0i,snmp.Synology.systemStats.ssRawContexts=10514788i,snmp.Synology.systemStats.ssRawInterrupts=9936781i,snmp.Synology.systemStats.ssRawSwapIn=0i,snmp.Synology.systemStats.ssRawSwapOut=0i,snmp.Synology.systemStats.ssSwapIn=0i,snmp.Synology.systemStats.ssSwapOut=0i,snmp.Synology.systemStats.ssSysContext=35i,snmp.Synology.systemStats.ssSysInterrupts=33i,sysContact="admin@diskstation",sysDescr="Linux DSM-VIRTUAL-001 4.4.302+ #69057 SMP Mon Nov 13 14:19:28 CST 2023 x86_64",sysLocation="Unknown",sysUpTime=1713260i 1704147372000000000
Grafana Dashboards
I created a Dashboard from scratch by selecting the best requests to the database, finishing off colors, thinking about graphics, and how to display them, and everything is automated so that it fits our environment without any problem and without having to edit anything manually. The Dashboard can be found here, once imported, you can use the top drop-down menus to select between the different variables:
Import Grafana Dashboards easily
I have already a wonderful Dashboard, ready just for you with everything you need to monitor our environment in a very simple way. Select the name you want and enter the ID: 20235, which is the unique ID of the Dashboard, or the URL:
With the menus above you can display and adjust the Dashboard to your different choices:
I hope you like it, and I would like to leave you the complete series here, so you can start playing with the plugins that I have been telling you about all these years:
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part I (Installing InfluxDB, Telegraf, and Grafana on Ubuntu 20.04 LTS)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte II (Instalar agente Telegraf en Nodos remotos Linux)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte III Integración con PRTG
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte IV (Instalar agente Telegraf en Nodos remotos Windows)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte V (Activar inputs específicos, Red, MySQL/MariaDB, Nginx)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte VI (Monitorizando Veeam)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte VII (Monitorizar vSphere)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte VIII (Monitorizando Veeam con Enterprise Manager)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte IX (Monitorizando Zimbra Collaboration)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte X (Grafana Plugins)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XI – (Monitorizando URL e IPS con Telegraf y Ping)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XII (Native Telegraf Plugin for vSphere)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XIII (Veeam Backup for Microsoft Office 365 v4)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XIV – Veeam Availability Console
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XV (IPMI Monitoring of our ESXi Hosts)
- Looking for Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XVI (Performance and Advanced Security of Veeam Backup for Microsoft Office 365)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XVII (Showing Dashboards on Two Monitors Using Raspberry Pi 4)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XVIII – Monitorizar temperatura y estado de Raspberry Pi 4
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XIX (Monitoring Veeam with Enterprise Manager) Shell Script
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXIV (Monitoring Veeam Backup for Microsoft Azure)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXV (Monitoring Power Consumption)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXVI (Monitoring Veeam Backup for Nutanix)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXVII (Monitoring ReFS and XFS (block-cloning and reflink)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXVIII (Monitoring HPE StoreOnce)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXIX (Monitoring Pi-hole)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXIX (Monitoring Veeam Backup for AWS)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXXI (Monitoring Unifi Protect)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXXII (Monitoring Veeam ONE – experimental)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXXIII (Monitoring NetApp ONTAP)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXXIV (Monitoring Runecast)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXXV (GPU Monitoring)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXXVI (Monitoring Goldshell Miners – JSONv2)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXXVII (Monitoring Veeam Backup for Google Cloud Platform)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXXVIII (Monitorizando Temperatura y Humedad con Xiaomi Mijia)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XL (Veeam Backup for Microsoft 365 – Restore Audit)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XLI (Veeam Backup for Salesforce)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XLII (Veeam ONE v12 Audit Events)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XLIII (Monitoring QNAP using SNMP v3)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XLIV (Monitoring Veeam Backup & Replication API)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XLV (Monitoring Synology using SNMP v3)
Leave a Reply