[
  {
    "path": ".github/workflows/ci.yml",
    "content": "name: ci\n\non:\n  push:\n    tags:\n      - '**'\n  workflow_dispatch:\n\njobs:\n  docker:\n    runs-on: ubuntu-latest\n    steps:\n      -\n        name: Set up QEMU\n        uses: docker/setup-qemu-action@v2\n      -\n        name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v2\n      -\n        name: Login to DockerHub\n        uses: docker/login-action@v2\n        with:\n          username: ${{ secrets.DOCKERHUB_USERNAME }}\n          password: ${{ secrets.DOCKERHUB_TOKEN }}\n      - \n        name: Extract metadata (tags, labels) for Docker\n        id: meta\n        uses: docker/metadata-action@v3\n        with:\n          images: alhazmy13/telegraf-influxdb-grafana\n          tags: |\n            type=ref,event=branch\n            type=ref,event=tag\n            type=ref,event=pr\n            type=raw,value=latest,enable={{is_default_branch}}            \n      -\n        # Setting up Docker Buildx with docker-container driver is required\n        # at the moment to be able to use a subdirectory with Git context\n        name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v2\n      -\n        name: Build and push\n        uses: docker/build-push-action@v3\n        with:\n          context: \"{{defaultContext}}:docker\"\n          push: true\n          tags: ${{ steps.meta.outputs.tags }}\n          labels: ${{ steps.meta.outputs.labels }}\n\n  push-docker-readme:\n    runs-on: ubuntu-latest\n    steps:\n      - \n        name: Checkout\n        uses: actions/checkout@v2\n      -\n        name: Update repo description\n        uses: peter-evans/dockerhub-description@v2\n        with:\n          username: ${{ secrets.DOCKERHUB_USERNAME }}\n          password: ${{ secrets.DOCKERHUB_TOKEN }}\n          repository: alhazmy13/telegraf-influxdb-grafana\n          short-description: ${{ github.event.repository.description }}\n"
  },
  {
    "path": "README.md",
    "content": "# Synology NAS monitoring\n\n![alt text](https://github.com/alhazmy13/Synology-NAS-monitoring/blob/master/dashboard.png)\n\nThe main points of this project are:\n\n* Persistence is supported via mounting volumes to a Docker container.\n* Grafana will store its data in SQLite files instead of a MySQL.\n* Added snmp packages and Synology NAS MIBS.\n* Enable \n\n## Enable SNMP\n1. From Control panel in your Synology NAS go to Terminal & SNMP\n2. Click on SNMP tab, and enable SNMPv1, SNMPv2 service\n3. in Community input put ***public***\n4. Save\n\n## Run Docker image in your Synology\n\n1. Install Docker from Synology package center\n2. Create two empty folders in your Synology ***influxdb*** and ***grafana***, we need to use it later to mount it to our container.\n3. Open Docker client from Synology > Image > Add > Add from url and paste Hub page url \"https://hub.docker.com/r/alhazmy13/telegraf-influxdb-grafana\"\n4. Wait until it finishes downloading the image\n5. Click on the image \"alhazmy13/telegraf-influxdb-grafana\" and then click on Launch\n6. Network Tab keep it in bridge mode \n7. Check \"Enable auto-restart.\"\n8. Port settings, just change Local port for 3003 from Auto to 3003, and port 514 from Auto to 5144\n9. In Volume settings, click Add folder and select the first folder that we created, \"grafana\" and on mount Path, paste ***/var/lib/grafana***\n10. In Volume settings again, click Add Folder and select the second folder that we created \"influxdb\" and on mount Path paste ***/var/lib/influxdb***\n12. [OPTIONAL] Environment Tab > Add new variable \"TZ\" with your local time zone **ignore this if you want to use the default UTC**\n14. Apply, Next, Done and your container should be ready.\n\n## Start Grafana\n\n1. Open [http://YOUR_LOCAL_NAS_IP:3003](http://YOUR_LOCAL_NAS_IP:3003) and login with the default username ***root*** and password ***root***\n2. You need to import the dashboard. To do this, go to [http://YOUR_LOCAL_NAS_IP:3003/dashboard/import](http://YOUR_LOCAL_NAS_IP:3003/dashboard/import) and put ***14590*** in \"Import via grafana.com\" input\n3. Click on load and complete the process\n\n## Enable Logging\n1. Install Log center From Synology package center\n2. Open Log center app\n3. Click on Log Sending > check \"Send log to syslog server\"\n3. Set Server = ***localhost***,  port = ***5144***, Protocol = ***UDP***, Format = ***BSD (RFC 3164)***\n4. For testing, click on \"Send test log\" \n4. Apply\n\n## Configure Firewall\nIf the firewall is enabled, then you need to add a new rule for port UDP/161, This is mandatory otherwise, some data will be missing from the dashboard https://github.com/alhazmy13/Synology-NAS-monitoring/issues/7 .\n\n1.  Open Control panel\n2.  Security -> Firewall\n3.  Edit Rules -> Create New Rule\n4.  In the ports section, select from a built-in applications and chose SNMP service\n5.  In the IP section select Spesifc IP -> subnet -> Source: 172.12.0.0 / subnet: 255.255.0.0\n6.  Action = Allow\n7.  Disable and re-enable the firewall for it to take effect\n"
  },
  {
    "path": "SynologyDsahboard.json",
    "content": "{\n  \"__inputs\": [\n    {\n      \"name\": \"DS_INFLUXDB\",\n      \"label\": \"InfluxDB\",\n      \"description\": \"\",\n      \"type\": \"datasource\",\n      \"pluginId\": \"influxdb\",\n      \"pluginName\": \"InfluxDB\"\n    }\n  ],\n  \"__requires\": [\n    {\n      \"type\": \"panel\",\n      \"id\": \"gauge\",\n      \"name\": \"Gauge\",\n      \"version\": \"\"\n    },\n    {\n      \"type\": \"grafana\",\n      \"id\": \"grafana\",\n      \"name\": \"Grafana\",\n      \"version\": \"7.3.5\"\n    },\n    {\n      \"type\": \"panel\",\n      \"id\": \"graph\",\n      \"name\": \"Graph\",\n      \"version\": \"\"\n    },\n    {\n      \"type\": \"datasource\",\n      \"id\": \"influxdb\",\n      \"name\": \"InfluxDB\",\n      \"version\": \"1.0.0\"\n    },\n    {\n      \"type\": \"panel\",\n      \"id\": \"singlestat\",\n      \"name\": \"Singlestat\",\n      \"version\": \"\"\n    },\n    {\n      \"type\": \"panel\",\n      \"id\": \"stat\",\n      \"name\": \"Stat\",\n      \"version\": \"\"\n    },\n    {\n      \"type\": \"panel\",\n      \"id\": \"table\",\n      \"name\": \"Table\",\n      \"version\": \"\"\n    },\n    {\n      \"type\": \"panel\",\n      \"id\": \"table-old\",\n      \"name\": \"Table (old)\",\n      \"version\": \"\"\n    }\n  ],\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": \"-- Grafana --\",\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"description\": \"A Dashboard to monitor Synology NAS\",\n  \"editable\": true,\n  \"gnetId\": 14573,\n  \"graphTooltip\": 0,\n  \"id\": null,\n  \"iteration\": 1623934144709,\n  \"links\": [],\n  \"panels\": [\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 71,\n      \"panels\": [],\n      \"title\": \"Overall\",\n      \"type\": \"row\"\n    },\n    {\n      \"columns\": [],\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {}\n        },\n        \"overrides\": []\n      },\n      \"fontSize\": \"100%\",\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 1\n      },\n      \"id\": 6,\n      \"links\": [],\n      \"pageSize\": null,\n      \"scroll\": false,\n      \"showHeader\": true,\n      \"sort\": {\n        \"col\": 0,\n        \"desc\": true\n      },\n      \"styles\": [\n        {\n          \"$$hashKey\": \"object:3881\",\n          \"align\": \"auto\",\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"link\": false,\n          \"pattern\": \"Time\",\n          \"type\": \"hidden\"\n        },\n        {\n          \"$$hashKey\": \"object:3882\",\n          \"align\": \"auto\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"decimals\": 2,\n          \"pattern\": \"/.*/\",\n          \"thresholds\": [],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        }\n      ],\n      \"targets\": [\n        {\n          \"alias\": \"$col\",\n          \"bucketAggs\": [\n            {\n              \"id\": \"2\",\n              \"settings\": {\n                \"interval\": \"auto\"\n              },\n              \"type\": \"date_histogram\"\n            }\n          ],\n          \"dsType\": \"InfluxDB\",\n          \"groupBy\": [],\n          \"measurement\": \"snmp.SYNO\",\n          \"metrics\": [\n            {\n              \"id\": \"1\",\n              \"type\": \"count\"\n            }\n          ],\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"table\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"modelName\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"Synology Model\"\n                ],\n                \"type\": \"alias\"\n              }\n            ],\n            [\n              {\n                \"params\": [\n                  \"version\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"DSM Version\"\n                ],\n                \"type\": \"alias\"\n              }\n            ]\n          ],\n          \"tags\": [],\n          \"timeField\": \"@timestamp\"\n        }\n      ],\n      \"title\": \"Synology NAS\",\n      \"transform\": \"table\",\n      \"type\": \"table-old\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"thresholds\"\n          },\n          \"custom\": {},\n          \"mappings\": [\n            {\n              \"from\": \"30\",\n              \"id\": 0,\n              \"op\": \"=\",\n              \"text\": \"Good\",\n              \"to\": \"54\",\n              \"type\": 1,\n              \"value\": \"1\"\n            },\n            {\n              \"from\": \"\",\n              \"id\": 1,\n              \"operator\": \"\",\n              \"text\": \"\",\n              \"to\": \"\",\n              \"type\": 1,\n              \"value\": \"\"\n            }\n          ],\n          \"max\": 60,\n          \"min\": 0,\n          \"nullValueMode\": \"connected\",\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"semi-dark-green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"rgba(237, 129, 40, 0.89)\",\n                \"value\": 2\n              },\n              {\n                \"color\": \"rgba(245, 54, 54, 0.9)\",\n                \"value\": 3\n              }\n            ]\n          },\n          \"unit\": \"none\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 6,\n        \"x\": 8,\n        \"y\": 1\n      },\n      \"id\": 67,\n      \"interval\": null,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"background\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"center\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"7.3.5\",\n      \"targets\": [\n        {\n          \"alias\": \"$tag_diskID\",\n          \"bucketAggs\": [\n            {\n              \"id\": \"2\",\n              \"settings\": {\n                \"interval\": \"auto\"\n              },\n              \"type\": \"date_histogram\"\n            }\n          ],\n          \"dsType\": \"influxdb\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"diskID\"\n              ],\n              \"type\": \"tag\"\n            }\n          ],\n          \"measurement\": \"diskTable\",\n          \"metrics\": [\n            {\n              \"id\": \"1\",\n              \"type\": \"count\"\n            }\n          ],\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"query\": \"SELECT last(\\\"diskStatus\\\") FROM \\\"diskTable\\\" WHERE (\\\"agent_host\\\" =~ /^$host$/) AND $timeFilter GROUP BY \\\"diskID\\\"\",\n          \"rawQuery\": true,\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"diskStatus\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              }\n            ]\n          ],\n          \"tags\": [\n            {\n              \"key\": \"agent_host\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$host$/\"\n            }\n          ],\n          \"timeField\": \"@timestamp\"\n        }\n      ],\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"Disk Status\",\n      \"type\": \"stat\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {},\n          \"mappings\": [\n            {\n              \"from\": \"30\",\n              \"id\": 0,\n              \"op\": \"=\",\n              \"text\": \"N/A\",\n              \"to\": \"54\",\n              \"type\": 1,\n              \"value\": \"null\"\n            }\n          ],\n          \"max\": 60,\n          \"min\": 0,\n          \"nullValueMode\": \"connected\",\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"semi-dark-green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"rgba(237, 129, 40, 0.89)\",\n                \"value\": 42\n              },\n              {\n                \"color\": \"rgba(245, 54, 54, 0.9)\",\n                \"value\": 48\n              }\n            ]\n          },\n          \"unit\": \"none\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 6,\n        \"x\": 14,\n        \"y\": 1\n      },\n      \"id\": 69,\n      \"interval\": null,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"colorMode\": \"background\",\n        \"graphMode\": \"none\",\n        \"justifyMode\": \"center\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"7.3.5\",\n      \"targets\": [\n        {\n          \"alias\": \"$tag_diskID\",\n          \"bucketAggs\": [\n            {\n              \"id\": \"2\",\n              \"settings\": {\n                \"interval\": \"auto\"\n              },\n              \"type\": \"date_histogram\"\n            }\n          ],\n          \"dsType\": \"influxdb\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"diskID\"\n              ],\n              \"type\": \"tag\"\n            }\n          ],\n          \"measurement\": \"diskTable\",\n          \"metrics\": [\n            {\n              \"id\": \"1\",\n              \"type\": \"count\"\n            }\n          ],\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"diskTemperature\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              }\n            ]\n          ],\n          \"tags\": [\n            {\n              \"key\": \"agent_host\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$host$/\"\n            }\n          ],\n          \"timeField\": \"@timestamp\"\n        }\n      ],\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"Disk temperature\",\n      \"type\": \"stat\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": false,\n      \"colors\": [\n        \"#299c46\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"#d44a3a\"\n      ],\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"decimals\": 1,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {}\n        },\n        \"overrides\": []\n      },\n      \"format\": \"dtdurations\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 4\n      },\n      \"id\": 16,\n      \"interval\": null,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"$$hashKey\": \"object:4104\",\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"$$hashKey\": \"object:4105\",\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"connected\",\n      \"nullText\": null,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false\n      },\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"alias\": \"\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"$__interval\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"params\": [\n                \"null\"\n              ],\n              \"type\": \"fill\"\n            }\n          ],\n          \"measurement\": \"system\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"uptime\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              }\n            ]\n          ],\n          \"tags\": []\n        }\n      ],\n      \"thresholds\": \"\",\n      \"title\": \"NAS Uptime\",\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"$$hashKey\": \"object:4107\",\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"current\"\n    },\n    {\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"thresholds\"\n          },\n          \"custom\": {\n            \"align\": \"center\",\n            \"displayMode\": \"color-background\",\n            \"filterable\": false\n          },\n          \"mappings\": [],\n          \"max\": 1,\n          \"min\": 0,\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"yellow\",\n                \"value\": 0\n              },\n              {\n                \"color\": \"dark-green\",\n                \"value\": 1\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 7\n      },\n      \"id\": 29,\n      \"links\": [],\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"mean\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"7.3.5\",\n      \"targets\": [\n        {\n          \"alias\": \"$col\",\n          \"bucketAggs\": [\n            {\n              \"id\": \"2\",\n              \"settings\": {\n                \"interval\": \"auto\"\n              },\n              \"type\": \"date_histogram\"\n            }\n          ],\n          \"dsType\": \"InfluxDB\",\n          \"groupBy\": [],\n          \"measurement\": \"snmp.SYNO\",\n          \"metrics\": [\n            {\n              \"id\": \"1\",\n              \"type\": \"count\"\n            }\n          ],\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"query\": \"SELECT last(\\\"usersSSH\\\") AS \\\"SSH\\\", last(\\\"usersHTTP\\\") AS \\\"HTTP\\\", last(\\\"usersSFTP\\\") AS \\\"SFTP\\\" FROM \\\"snmp.SYNO\\\" WHERE (\\\"agent_host\\\" = '192.168.86.149') AND $timeFilter\",\n          \"rawQuery\": false,\n          \"refId\": \"A\",\n          \"resultFormat\": \"table\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"usersSSH\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"SSH\"\n                ],\n                \"type\": \"alias\"\n              }\n            ],\n            [\n              {\n                \"params\": [\n                  \"usersHTTP\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"HTTP\"\n                ],\n                \"type\": \"alias\"\n              }\n            ],\n            [\n              {\n                \"params\": [\n                  \"usersSFTP\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"SFTP\"\n                ],\n                \"type\": \"alias\"\n              }\n            ],\n            [\n              {\n                \"params\": [\n                  \"usersCIFS\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"CIFS\"\n                ],\n                \"type\": \"alias\"\n              }\n            ],\n            [\n              {\n                \"params\": [\n                  \"usersAFP\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"AFP\"\n                ],\n                \"type\": \"alias\"\n              }\n            ],\n            [\n              {\n                \"params\": [\n                  \"usersNFS\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"NFS\"\n                ],\n                \"type\": \"alias\"\n              }\n            ],\n            [\n              {\n                \"params\": [\n                  \"usersFTP\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"FTP\"\n                ],\n                \"type\": \"alias\"\n              }\n            ]\n          ],\n          \"tags\": [],\n          \"timeField\": \"@timestamp\"\n        }\n      ],\n      \"title\": \"Connected Users/Servicess\",\n      \"type\": \"stat\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"thresholds\"\n          },\n          \"custom\": {},\n          \"mappings\": [\n            {\n              \"$$hashKey\": \"object:2718\",\n              \"id\": 0,\n              \"op\": \"=\",\n              \"text\": \"N/A\",\n              \"type\": 1,\n              \"value\": \"null\"\n            }\n          ],\n          \"max\": 100,\n          \"min\": 0,\n          \"nullValueMode\": \"connected\",\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"rgba(50, 172, 45, 0.97)\",\n                \"value\": null\n              },\n              {\n                \"color\": \"yellow\",\n                \"value\": 50\n              },\n              {\n                \"color\": \"rgba(245, 54, 54, 0.9)\",\n                \"value\": 75\n              }\n            ]\n          },\n          \"unit\": \"celsius\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 3,\n        \"x\": 8,\n        \"y\": 7\n      },\n      \"id\": 11,\n      \"interval\": null,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"showThresholdLabels\": false,\n        \"showThresholdMarkers\": true\n      },\n      \"pluginVersion\": \"7.3.5\",\n      \"targets\": [\n        {\n          \"bucketAggs\": [\n            {\n              \"id\": \"2\",\n              \"settings\": {\n                \"interval\": \"auto\"\n              },\n              \"type\": \"date_histogram\"\n            }\n          ],\n          \"dsType\": \"InfluxDB\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"$interval\"\n              ],\n              \"type\": \"time\"\n            }\n          ],\n          \"hide\": false,\n          \"measurement\": \"snmp.SYNO\",\n          \"metrics\": [\n            {\n              \"id\": \"1\",\n              \"type\": \"count\"\n            }\n          ],\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"temperature\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              }\n            ]\n          ],\n          \"tags\": [],\n          \"timeField\": \"@timestamp\"\n        }\n      ],\n      \"title\": \"System temperature\",\n      \"type\": \"gauge\"\n    },\n    {\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"thresholds\"\n          },\n          \"custom\": {},\n          \"decimals\": 0,\n          \"mappings\": [],\n          \"max\": 100,\n          \"min\": 0,\n          \"thresholds\": {\n            \"mode\": \"percentage\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"#EAB839\",\n                \"value\": 50\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"percent\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 3,\n        \"x\": 11,\n        \"y\": 7\n      },\n      \"id\": 37,\n      \"options\": {\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"last\"\n          ],\n          \"fields\": \"/^mem\\\\.last$/\",\n          \"values\": false\n        },\n        \"showThresholdLabels\": false,\n        \"showThresholdMarkers\": true\n      },\n      \"pluginVersion\": \"7.3.5\",\n      \"targets\": [\n        {\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"$__interval\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"params\": [\n                \"previous\"\n              ],\n              \"type\": \"fill\"\n            }\n          ],\n          \"measurement\": \"mem\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"queryType\": \"randomWalk\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"used_percent\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              }\n            ]\n          ],\n          \"tags\": []\n        }\n      ],\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"Ram \",\n      \"type\": \"gauge\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {},\n          \"decimals\": 2,\n          \"mappings\": [\n            {\n              \"$$hashKey\": \"object:2799\",\n              \"id\": 0,\n              \"op\": \"=\",\n              \"text\": \"N/A\",\n              \"type\": 1,\n              \"value\": \"null\"\n            }\n          ],\n          \"min\": 0,\n          \"nullValueMode\": \"connected\",\n          \"thresholds\": {\n            \"mode\": \"percentage\",\n            \"steps\": [\n              {\n                \"color\": \"#299c46\",\n                \"value\": null\n              },\n              {\n                \"color\": \"#EAB839\",\n                \"value\": 50\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"decbytes\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 3,\n        \"x\": 14,\n        \"y\": 7\n      },\n      \"id\": 22,\n      \"interval\": null,\n      \"links\": [],\n      \"maxDataPoints\": 100,\n      \"options\": {\n        \"orientation\": \"horizontal\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"/^disk\\\\.last$/\",\n          \"values\": false\n        },\n        \"showThresholdLabels\": false,\n        \"showThresholdMarkers\": true\n      },\n      \"pluginVersion\": \"7.3.5\",\n      \"targets\": [\n        {\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"$__interval\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"params\": [\n                \"null\"\n              ],\n              \"type\": \"fill\"\n            }\n          ],\n          \"measurement\": \"disk\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"queryType\": \"randomWalk\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"used\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              }\n            ],\n            [\n              {\n                \"params\": [\n                  \"total\"\n                ],\n                \"type\": \"field\"\n              }\n            ]\n          ],\n          \"tags\": []\n        }\n      ],\n      \"title\": \"Used Capacity\",\n      \"type\": \"gauge\"\n    },\n    {\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {},\n          \"mappings\": [],\n          \"max\": 100,\n          \"min\": 0,\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"#EAB839\",\n                \"value\": 50\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"percent\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 3,\n        \"x\": 17,\n        \"y\": 7\n      },\n      \"id\": 39,\n      \"options\": {\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"last\"\n          ],\n          \"fields\": \"/^cpu\\\\.last$/\",\n          \"values\": false\n        },\n        \"showThresholdLabels\": false,\n        \"showThresholdMarkers\": true\n      },\n      \"pluginVersion\": \"7.3.5\",\n      \"targets\": [\n        {\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"$__interval\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"params\": [\n                \"previous\"\n              ],\n              \"type\": \"fill\"\n            }\n          ],\n          \"measurement\": \"cpu\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"queryType\": \"randomWalk\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"usage_system\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              }\n            ]\n          ],\n          \"tags\": []\n        }\n      ],\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"CPU\",\n      \"type\": \"gauge\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"colorBackground\": true,\n      \"colorValue\": false,\n      \"colors\": [\n        \"rgba(50, 172, 45, 0.97)\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"rgba(245, 54, 54, 0.9)\"\n      ],\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {}\n        },\n        \"overrides\": []\n      },\n      \"format\": \"none\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 2,\n        \"w\": 2,\n        \"x\": 0,\n        \"y\": 10\n      },\n      \"id\": 7,\n      \"interval\": null,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"$$hashKey\": \"object:1726\",\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"$$hashKey\": \"object:1727\",\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"connected\",\n      \"nullText\": null,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false\n      },\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"alias\": \"$col\",\n          \"bucketAggs\": [\n            {\n              \"id\": \"2\",\n              \"settings\": {\n                \"interval\": \"auto\"\n              },\n              \"type\": \"date_histogram\"\n            }\n          ],\n          \"dsType\": \"InfluxDB\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"$interval\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"params\": [\n                \"raidName\"\n              ],\n              \"type\": \"tag\"\n            }\n          ],\n          \"measurement\": \"raidTable\",\n          \"metrics\": [\n            {\n              \"id\": \"1\",\n              \"type\": \"count\"\n            }\n          ],\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"raidStatus\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              }\n            ]\n          ],\n          \"tags\": [],\n          \"timeField\": \"@timestamp\"\n        }\n      ],\n      \"thresholds\": \"11,12\",\n      \"title\": \"Raid Status\",\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"50%\",\n      \"valueMaps\": [\n        {\n          \"$$hashKey\": \"object:1729\",\n          \"op\": \"=\",\n          \"text\": \"Normal\",\n          \"value\": \"1\"\n        },\n        {\n          \"$$hashKey\": \"object:1730\",\n          \"op\": \"=\",\n          \"text\": \"Repairing\",\n          \"value\": \"2\"\n        },\n        {\n          \"$$hashKey\": \"object:1731\",\n          \"op\": \"=\",\n          \"text\": \"Migrating\",\n          \"value\": \"3\"\n        },\n        {\n          \"$$hashKey\": \"object:1732\",\n          \"op\": \"=\",\n          \"text\": \"Expanding\",\n          \"value\": \"4\"\n        },\n        {\n          \"$$hashKey\": \"object:1733\",\n          \"op\": \"=\",\n          \"text\": \"Deleting\",\n          \"value\": \"5\"\n        },\n        {\n          \"$$hashKey\": \"object:1734\",\n          \"op\": \"=\",\n          \"text\": \"Creating\",\n          \"value\": \"6\"\n        },\n        {\n          \"$$hashKey\": \"object:1735\",\n          \"op\": \"=\",\n          \"text\": \"RaidSyncing\",\n          \"value\": \"7\"\n        },\n        {\n          \"$$hashKey\": \"object:1736\",\n          \"op\": \"=\",\n          \"text\": \"RaidParityChecking\",\n          \"value\": \"8\"\n        },\n        {\n          \"$$hashKey\": \"object:1737\",\n          \"op\": \"=\",\n          \"text\": \"RaidAssembling\",\n          \"value\": \"9\"\n        },\n        {\n          \"$$hashKey\": \"object:1738\",\n          \"op\": \"=\",\n          \"text\": \"Canceling\",\n          \"value\": \"10\"\n        },\n        {\n          \"$$hashKey\": \"object:1739\",\n          \"op\": \"=\",\n          \"text\": \"Degrade\",\n          \"value\": \"11\"\n        },\n        {\n          \"$$hashKey\": \"object:1740\",\n          \"op\": \"=\",\n          \"text\": \"Crashed\",\n          \"value\": \"12\"\n        },\n        {\n          \"$$hashKey\": \"object:1741\",\n          \"op\": \"=\",\n          \"text\": \"Scrubbing\",\n          \"value\": \"13\"\n        },\n        {\n          \"$$hashKey\": \"object:1742\",\n          \"op\": \"=\",\n          \"text\": \"Deploying volume\",\n          \"value\": \"14\"\n        }\n      ],\n      \"valueName\": \"current\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"colorBackground\": true,\n      \"colorValue\": false,\n      \"colors\": [\n        \"rgba(50, 172, 45, 0.97)\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"rgba(245, 54, 54, 0.9)\"\n      ],\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {}\n        },\n        \"overrides\": []\n      },\n      \"format\": \"none\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 2,\n        \"w\": 2,\n        \"x\": 2,\n        \"y\": 10\n      },\n      \"id\": 10,\n      \"interval\": null,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"$$hashKey\": \"object:1824\",\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"$$hashKey\": \"object:1825\",\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"connected\",\n      \"nullText\": null,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false\n      },\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"dsType\": \"InfluxDB\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"$interval\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"params\": [\n                \"sysName\"\n              ],\n              \"type\": \"tag\"\n            }\n          ],\n          \"measurement\": \"snmp.SYNO\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"systemStatus\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              }\n            ]\n          ],\n          \"tags\": []\n        }\n      ],\n      \"thresholds\": \"2,2\",\n      \"title\": \"Overall status\",\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"50%\",\n      \"valueMaps\": [\n        {\n          \"$$hashKey\": \"object:1827\",\n          \"op\": \"=\",\n          \"text\": \"Normal\",\n          \"value\": \"1\"\n        },\n        {\n          \"$$hashKey\": \"object:1828\",\n          \"op\": \"=\",\n          \"text\": \"Failed\",\n          \"value\": \"2\"\n        }\n      ],\n      \"valueName\": \"current\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"colorBackground\": true,\n      \"colorValue\": false,\n      \"colors\": [\n        \"rgba(50, 172, 45, 0.97)\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"rgba(245, 54, 54, 0.9)\"\n      ],\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {}\n        },\n        \"overrides\": []\n      },\n      \"format\": \"none\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 2,\n        \"w\": 2,\n        \"x\": 4,\n        \"y\": 10\n      },\n      \"id\": 25,\n      \"interval\": null,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"$$hashKey\": \"object:1892\",\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"$$hashKey\": \"object:1893\",\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"connected\",\n      \"nullText\": null,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false\n      },\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"bucketAggs\": [\n            {\n              \"id\": \"2\",\n              \"settings\": {\n                \"interval\": \"auto\"\n              },\n              \"type\": \"date_histogram\"\n            }\n          ],\n          \"dsType\": \"InfluxDB\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"agent_host\"\n              ],\n              \"type\": \"tag\"\n            }\n          ],\n          \"measurement\": \"snmp.SYNO\",\n          \"metrics\": [\n            {\n              \"id\": \"1\",\n              \"type\": \"count\"\n            }\n          ],\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"powerStatus\"\n                ],\n                \"type\": \"field\"\n              }\n            ]\n          ],\n          \"tags\": [],\n          \"timeField\": \"@timestamp\"\n        }\n      ],\n      \"thresholds\": \"2,2\",\n      \"title\": \"Power Status\",\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"50%\",\n      \"valueMaps\": [\n        {\n          \"$$hashKey\": \"object:1895\",\n          \"op\": \"=\",\n          \"text\": \"Normal\",\n          \"value\": \"1\"\n        },\n        {\n          \"$$hashKey\": \"object:1896\",\n          \"op\": \"=\",\n          \"text\": \"Failed\",\n          \"value\": \"2\"\n        }\n      ],\n      \"valueName\": \"current\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"colorBackground\": true,\n      \"colorValue\": false,\n      \"colors\": [\n        \"#FF780A\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"rgba(50, 172, 45, 0.97)\"\n      ],\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {}\n        },\n        \"overrides\": []\n      },\n      \"format\": \"none\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 2,\n        \"w\": 2,\n        \"x\": 6,\n        \"y\": 10\n      },\n      \"id\": 27,\n      \"interval\": null,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"$$hashKey\": \"object:1960\",\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"$$hashKey\": \"object:1961\",\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"connected\",\n      \"nullText\": null,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false\n      },\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"bucketAggs\": [\n            {\n              \"id\": \"2\",\n              \"settings\": {\n                \"interval\": \"auto\"\n              },\n              \"type\": \"date_histogram\"\n            }\n          ],\n          \"dsType\": \"InfluxDB\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"agent_host\"\n              ],\n              \"type\": \"tag\"\n            }\n          ],\n          \"measurement\": \"snmp.SYNO\",\n          \"metrics\": [\n            {\n              \"id\": \"1\",\n              \"type\": \"count\"\n            }\n          ],\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"upgradeAvailable\"\n                ],\n                \"type\": \"field\"\n              }\n            ]\n          ],\n          \"tags\": [],\n          \"timeField\": \"@timestamp\"\n        }\n      ],\n      \"thresholds\": \"2,2\",\n      \"title\": \"Upgrade Available\",\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"50%\",\n      \"valueMaps\": [\n        {\n          \"$$hashKey\": \"object:1963\",\n          \"op\": \"=\",\n          \"text\": \"YES\",\n          \"value\": \"1\"\n        },\n        {\n          \"$$hashKey\": \"object:1964\",\n          \"op\": \"=\",\n          \"text\": \"NO\",\n          \"value\": \"2\"\n        }\n      ],\n      \"valueName\": \"current\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"colorBackground\": true,\n      \"colorValue\": false,\n      \"colors\": [\n        \"rgba(50, 172, 45, 0.97)\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"rgba(245, 54, 54, 0.9)\"\n      ],\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {}\n        },\n        \"overrides\": []\n      },\n      \"format\": \"none\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 2,\n        \"w\": 2,\n        \"x\": 0,\n        \"y\": 12\n      },\n      \"id\": 13,\n      \"interval\": null,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"$$hashKey\": \"object:1652\",\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"$$hashKey\": \"object:1653\",\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"connected\",\n      \"nullText\": null,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false\n      },\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"bucketAggs\": [\n            {\n              \"id\": \"2\",\n              \"settings\": {\n                \"interval\": \"auto\"\n              },\n              \"type\": \"date_histogram\"\n            }\n          ],\n          \"dsType\": \"InfluxDB\",\n          \"groupBy\": [],\n          \"measurement\": \"snmp.SYNO\",\n          \"metrics\": [\n            {\n              \"id\": \"1\",\n              \"type\": \"count\"\n            }\n          ],\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"systemFanStatus\"\n                ],\n                \"type\": \"field\"\n              }\n            ]\n          ],\n          \"tags\": [],\n          \"timeField\": \"@timestamp\"\n        }\n      ],\n      \"thresholds\": \"2,2\",\n      \"title\": \"Fan status\",\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"50%\",\n      \"valueMaps\": [\n        {\n          \"$$hashKey\": \"object:1655\",\n          \"op\": \"=\",\n          \"text\": \"Normal\",\n          \"value\": \"1\"\n        },\n        {\n          \"$$hashKey\": \"object:1656\",\n          \"op\": \"=\",\n          \"text\": \"Failed\",\n          \"value\": \"2\"\n        }\n      ],\n      \"valueName\": \"current\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 14\n      },\n      \"id\": 73,\n      \"panels\": [],\n      \"title\": \"Disk\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"editable\": true,\n      \"error\": false,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {},\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"grid\": {},\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 15\n      },\n      \"hiddenSeries\": false,\n      \"id\": 47,\n      \"interval\": \"$inter\",\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": true,\n        \"current\": true,\n        \"hideEmpty\": true,\n        \"max\": true,\n        \"min\": true,\n        \"rightSide\": false,\n        \"show\": true,\n        \"sort\": \"max\",\n        \"sortDesc\": true,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"connected\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"7.3.5\",\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"alias\": \"$tag_name: $col\",\n          \"dsType\": \"influxdb\",\n          \"function\": \"mean\",\n          \"groupBy\": [\n            {\n              \"interval\": \"auto\",\n              \"params\": [\n                \"auto\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"key\": \"host\",\n              \"params\": [\n                \"tag\"\n              ],\n              \"type\": \"tag\"\n            },\n            {\n              \"key\": \"path\",\n              \"params\": [\n                \"tag\"\n              ],\n              \"type\": \"tag\"\n            }\n          ],\n          \"measurement\": \"io_reads\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"query\": \"SELECT non_negative_derivative(mean(writes),1s) as \\\"write\\\" FROM \\\"diskio\\\" WHERE \\\"name\\\" =~ /md[2-3]$/AND $timeFilter GROUP BY time($interval), *\",\n          \"rawQuery\": true,\n          \"refId\": \"C\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"value\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"mean\"\n              }\n            ]\n          ],\n          \"tags\": []\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Disk Write iops\",\n      \"tooltip\": {\n        \"msResolution\": false,\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"cumulative\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:560\",\n          \"format\": \"iops\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:561\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"editable\": true,\n      \"error\": false,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {},\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"grid\": {},\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 8,\n        \"x\": 8,\n        \"y\": 15\n      },\n      \"hiddenSeries\": false,\n      \"id\": 51,\n      \"interval\": \"$inter\",\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": true,\n        \"current\": true,\n        \"hideEmpty\": true,\n        \"max\": true,\n        \"min\": true,\n        \"rightSide\": false,\n        \"show\": true,\n        \"sort\": \"current\",\n        \"sortDesc\": true,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"connected\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"7.3.5\",\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"alias\": \"$tag_host: $tag_name: $col\",\n          \"dsType\": \"influxdb\",\n          \"function\": \"mean\",\n          \"groupBy\": [\n            {\n              \"interval\": \"auto\",\n              \"params\": [\n                \"auto\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"key\": \"host\",\n              \"params\": [\n                \"tag\"\n              ],\n              \"type\": \"tag\"\n            },\n            {\n              \"key\": \"path\",\n              \"params\": [\n                \"tag\"\n              ],\n              \"type\": \"tag\"\n            }\n          ],\n          \"measurement\": \"io_reads\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"query\": \"SELECT non_negative_derivative(mean(read_time),1s) as \\\"read\\\" FROM \\\"diskio\\\" WHERE  \\\"name\\\" =~ /md[2-3]$/ AND $timeFilter GROUP BY time($interval), *\",\n          \"rawQuery\": true,\n          \"refId\": \"B\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"value\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"mean\"\n              }\n            ]\n          ],\n          \"tags\": []\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Disk Read I/O time\",\n      \"tooltip\": {\n        \"msResolution\": false,\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"cumulative\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:285\",\n          \"format\": \"ms\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:286\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"editable\": true,\n      \"error\": false,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {},\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"grid\": {},\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 8,\n        \"x\": 16,\n        \"y\": 15\n      },\n      \"hiddenSeries\": false,\n      \"id\": 53,\n      \"interval\": \"$inter\",\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": true,\n        \"current\": true,\n        \"hideEmpty\": true,\n        \"max\": true,\n        \"min\": true,\n        \"rightSide\": false,\n        \"show\": true,\n        \"sort\": \"current\",\n        \"sortDesc\": true,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"connected\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"7.3.5\",\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"alias\": \"$tag_name: $col\",\n          \"dsType\": \"influxdb\",\n          \"function\": \"mean\",\n          \"groupBy\": [\n            {\n              \"interval\": \"auto\",\n              \"params\": [\n                \"auto\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"key\": \"host\",\n              \"params\": [\n                \"tag\"\n              ],\n              \"type\": \"tag\"\n            },\n            {\n              \"key\": \"path\",\n              \"params\": [\n                \"tag\"\n              ],\n              \"type\": \"tag\"\n            }\n          ],\n          \"measurement\": \"io_reads\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"query\": \"SELECT non_negative_derivative(mean(write_time),1s) as \\\"write\\\" FROM \\\"diskio\\\" WHERE \\\"name\\\" =~ /md[2-3]$/ AND $timeFilter GROUP BY time($interval), *\",\n          \"rawQuery\": true,\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"value\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"mean\"\n              }\n            ]\n          ],\n          \"tags\": []\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Disk Write I/O time\",\n      \"tooltip\": {\n        \"msResolution\": false,\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"cumulative\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:285\",\n          \"format\": \"ms\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:286\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"editable\": true,\n      \"error\": false,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {},\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"grid\": {},\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 23\n      },\n      \"hiddenSeries\": false,\n      \"id\": 49,\n      \"interval\": \"$inter\",\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": true,\n        \"current\": true,\n        \"hideEmpty\": true,\n        \"max\": true,\n        \"min\": true,\n        \"rightSide\": false,\n        \"show\": true,\n        \"sort\": \"max\",\n        \"sortDesc\": true,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"connected\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"7.3.5\",\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"alias\": \"$tag_name: $col\",\n          \"dsType\": \"influxdb\",\n          \"function\": \"mean\",\n          \"groupBy\": [\n            {\n              \"interval\": \"auto\",\n              \"params\": [\n                \"auto\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"key\": \"host\",\n              \"params\": [\n                \"tag\"\n              ],\n              \"type\": \"tag\"\n            },\n            {\n              \"key\": \"path\",\n              \"params\": [\n                \"tag\"\n              ],\n              \"type\": \"tag\"\n            }\n          ],\n          \"measurement\": \"io_reads\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"query\": \"SELECT non_negative_derivative(mean(reads),1s) as \\\"write\\\" FROM \\\"diskio\\\" WHERE \\\"name\\\" =~ /md[2-3]$/AND $timeFilter GROUP BY time($interval), *\",\n          \"rawQuery\": true,\n          \"refId\": \"B\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"value\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"mean\"\n              }\n            ]\n          ],\n          \"tags\": []\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Disk Read iops\",\n      \"tooltip\": {\n        \"msResolution\": false,\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"cumulative\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:560\",\n          \"format\": \"iops\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:561\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"decimals\": 2,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {},\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 2,\n      \"fillGradient\": 10,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 8,\n        \"x\": 8,\n        \"y\": 23\n      },\n      \"hiddenSeries\": false,\n      \"id\": 57,\n      \"interval\": \"1m\",\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": true,\n        \"current\": true,\n        \"max\": true,\n        \"min\": false,\n        \"rightSide\": false,\n        \"show\": true,\n        \"sort\": null,\n        \"sortDesc\": null,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"connected\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"paceLength\": 10,\n      \"percentage\": false,\n      \"pluginVersion\": \"7.3.5\",\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"alias\": \"SHR Array (Volume 1)\",\n          \"dsType\": \"influxdb\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"$__interval\"\n              ],\n              \"type\": \"time\"\n            }\n          ],\n          \"hide\": false,\n          \"measurement\": \"diskio\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"query\": \"SELECT non_negative_derivative(mean(\\\"write_bytes\\\"), 1s) FROM \\\"diskio\\\" WHERE (\\\"host\\\" = '0d42d827caee' AND \\\"name\\\" = 'md2') AND $timeFilter GROUP BY time($__interval)\",\n          \"rawQuery\": false,\n          \"refId\": \"D\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"write_bytes\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"mean\"\n              },\n              {\n                \"params\": [\n                  \"1s\"\n                ],\n                \"type\": \"non_negative_derivative\"\n              }\n            ]\n          ],\n          \"tags\": [\n            {\n              \"key\": \"name\",\n              \"operator\": \"=\",\n              \"value\": \"md2\"\n            }\n          ]\n        },\n        {\n          \"alias\": \"SSD Disk (Volume 2)\",\n          \"dsType\": \"influxdb\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"$__interval\"\n              ],\n              \"type\": \"time\"\n            }\n          ],\n          \"hide\": false,\n          \"measurement\": \"diskio\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"I\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"write_bytes\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"mean\"\n              },\n              {\n                \"params\": [\n                  \"1s\"\n                ],\n                \"type\": \"non_negative_derivative\"\n              }\n            ]\n          ],\n          \"tags\": [\n            {\n              \"key\": \"name\",\n              \"operator\": \"=\",\n              \"value\": \"md3\"\n            }\n          ]\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Disk Write Rates\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:441\",\n          \"decimals\": 1,\n          \"format\": \"Bps\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:442\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"decimals\": 2,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {},\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 2,\n      \"fillGradient\": 10,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 8,\n        \"x\": 16,\n        \"y\": 23\n      },\n      \"hiddenSeries\": false,\n      \"id\": 55,\n      \"interval\": \"1m\",\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": true,\n        \"current\": true,\n        \"max\": true,\n        \"min\": false,\n        \"rightSide\": false,\n        \"show\": true,\n        \"sort\": null,\n        \"sortDesc\": null,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"connected\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"paceLength\": 10,\n      \"percentage\": false,\n      \"pluginVersion\": \"7.3.5\",\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"alias\": \"SHR Array (Volume 1)\",\n          \"dsType\": \"influxdb\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"$__interval\"\n              ],\n              \"type\": \"time\"\n            }\n          ],\n          \"hide\": false,\n          \"measurement\": \"diskio\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"query\": \"SELECT non_negative_derivative(mean(\\\"read_bytes\\\"), 1s) FROM \\\"diskio\\\" WHERE (\\\"host\\\" = '0d42d827caee' AND \\\"name\\\" = 'md2') AND $timeFilter GROUP BY time($__interval)\",\n          \"rawQuery\": false,\n          \"refId\": \"D\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"read_bytes\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"mean\"\n              },\n              {\n                \"params\": [\n                  \"1s\"\n                ],\n                \"type\": \"non_negative_derivative\"\n              }\n            ]\n          ],\n          \"tags\": [\n            {\n              \"key\": \"name\",\n              \"operator\": \"=\",\n              \"value\": \"md2\"\n            }\n          ]\n        },\n        {\n          \"alias\": \"SSD Disk (Volume 2)\",\n          \"dsType\": \"influxdb\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"$__interval\"\n              ],\n              \"type\": \"time\"\n            }\n          ],\n          \"hide\": false,\n          \"measurement\": \"diskio\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"I\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"read_bytes\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"mean\"\n              },\n              {\n                \"params\": [\n                  \"1s\"\n                ],\n                \"type\": \"non_negative_derivative\"\n              }\n            ]\n          ],\n          \"tags\": [\n            {\n              \"key\": \"name\",\n              \"operator\": \"=\",\n              \"value\": \"md3\"\n            }\n          ]\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Disk Read Rates\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:595\",\n          \"decimals\": 1,\n          \"format\": \"Bps\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:596\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"columns\": [],\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {}\n        },\n        \"overrides\": []\n      },\n      \"fontSize\": \"100%\",\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 31\n      },\n      \"id\": 8,\n      \"links\": [],\n      \"pageSize\": null,\n      \"scroll\": false,\n      \"showHeader\": true,\n      \"sort\": {\n        \"col\": 1,\n        \"desc\": false\n      },\n      \"styles\": [\n        {\n          \"$$hashKey\": \"object:585\",\n          \"align\": \"auto\",\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"pattern\": \"Time\",\n          \"type\": \"hidden\"\n        },\n        {\n          \"$$hashKey\": \"object:586\",\n          \"align\": \"auto\",\n          \"colorMode\": null,\n          \"colors\": [\n            \"rgba(245, 54, 54, 0.9)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(50, 172, 45, 0.97)\"\n          ],\n          \"decimals\": 2,\n          \"pattern\": \"Model\",\n          \"thresholds\": [],\n          \"type\": \"string\",\n          \"unit\": \"short\"\n        },\n        {\n          \"$$hashKey\": \"object:587\",\n          \"alias\": \"\",\n          \"align\": \"auto\",\n          \"colorMode\": \"cell\",\n          \"colors\": [\n            \"rgba(50, 172, 45, 0.97)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(245, 54, 54, 0.9)\"\n          ],\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"decimals\": 0,\n          \"mappingType\": 1,\n          \"pattern\": \"Status\",\n          \"thresholds\": [\n            \"4\",\n            \"5\"\n          ],\n          \"type\": \"string\",\n          \"unit\": \"short\",\n          \"valueMaps\": [\n            {\n              \"$$hashKey\": \"object:643\",\n              \"text\": \"Fail\",\n              \"value\": \"0\"\n            },\n            {\n              \"$$hashKey\": \"object:644\",\n              \"text\": \"OK\",\n              \"value\": \"1\"\n            },\n            {\n              \"$$hashKey\": \"object:678\",\n              \"text\": \"Initialized\",\n              \"value\": \"2\"\n            },\n            {\n              \"$$hashKey\": \"object:680\",\n              \"text\": \"Not initialized\",\n              \"value\": \"3\"\n            }\n          ]\n        },\n        {\n          \"$$hashKey\": \"object:588\",\n          \"align\": \"auto\",\n          \"colorMode\": \"cell\",\n          \"colors\": [\n            \"rgba(50, 172, 45, 0.97)\",\n            \"rgba(237, 129, 40, 0.89)\",\n            \"rgba(245, 54, 54, 0.9)\"\n          ],\n          \"dateFormat\": \"YYYY-MM-DD HH:mm:ss\",\n          \"decimals\": 2,\n          \"pattern\": \"Température\",\n          \"thresholds\": [\n            \"50\",\n            \"70\"\n          ],\n          \"type\": \"number\",\n          \"unit\": \"short\"\n        }\n      ],\n      \"targets\": [\n        {\n          \"bucketAggs\": [\n            {\n              \"id\": \"2\",\n              \"settings\": {\n                \"interval\": \"auto\"\n              },\n              \"type\": \"date_histogram\"\n            }\n          ],\n          \"dsType\": \"InfluxDB\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"diskID\"\n              ],\n              \"type\": \"tag\"\n            }\n          ],\n          \"measurement\": \"diskTable\",\n          \"metrics\": [\n            {\n              \"id\": \"1\",\n              \"type\": \"count\"\n            }\n          ],\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"table\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"diskModel\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"Model\"\n                ],\n                \"type\": \"alias\"\n              }\n            ],\n            [\n              {\n                \"params\": [\n                  \"diskStatus\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"Status\"\n                ],\n                \"type\": \"alias\"\n              }\n            ],\n            [\n              {\n                \"params\": [\n                  \"diskType\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"Disk Type\"\n                ],\n                \"type\": \"alias\"\n              }\n            ],\n            [\n              {\n                \"params\": [\n                  \"diskTemperature\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"CurrentC\"\n                ],\n                \"type\": \"alias\"\n              }\n            ],\n            [\n              {\n                \"params\": [\n                  \"diskTemperature\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"max\"\n              },\n              {\n                \"params\": [\n                  \"MaxC\"\n                ],\n                \"type\": \"alias\"\n              }\n            ],\n            [\n              {\n                \"params\": [\n                  \"diskTemperature\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"min\"\n              },\n              {\n                \"params\": [\n                  \"MinC\"\n                ],\n                \"type\": \"alias\"\n              }\n            ]\n          ],\n          \"tags\": [],\n          \"timeField\": \"@timestamp\"\n        }\n      ],\n      \"title\": \"Disk Model & Status\",\n      \"transform\": \"table\",\n      \"type\": \"table-old\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 39\n      },\n      \"id\": 75,\n      \"panels\": [],\n      \"title\": \"CPU/RAM\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {}\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 40\n      },\n      \"hiddenSeries\": false,\n      \"id\": 35,\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": false,\n        \"current\": true,\n        \"max\": true,\n        \"min\": true,\n        \"rightSide\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"7.3.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"10s\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"params\": [\n                \"none\"\n              ],\n              \"type\": \"fill\"\n            }\n          ],\n          \"measurement\": \"cpu\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"queryType\": \"randomWalk\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"usage_system\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"System\"\n                ],\n                \"type\": \"alias\"\n              }\n            ],\n            [\n              {\n                \"params\": [\n                  \"usage_user\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"User\"\n                ],\n                \"type\": \"alias\"\n              }\n            ],\n            [\n              {\n                \"params\": [\n                  \"usage_iowait\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"I/O\"\n                ],\n                \"type\": \"alias\"\n              }\n            ]\n          ],\n          \"tags\": []\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"CPU Load\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:1029\",\n          \"decimals\": null,\n          \"format\": \"percent\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": \"100\",\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:1030\",\n          \"format\": \"percent\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"editable\": true,\n      \"error\": false,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {},\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 8,\n      \"grid\": {},\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 8,\n        \"y\": 40\n      },\n      \"hiddenSeries\": false,\n      \"id\": 59,\n      \"interval\": \"$inter\",\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": true,\n        \"current\": true,\n        \"hideEmpty\": false,\n        \"hideZero\": true,\n        \"max\": true,\n        \"min\": false,\n        \"rightSide\": false,\n        \"show\": true,\n        \"sort\": \"current\",\n        \"sortDesc\": true,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 2,\n      \"links\": [],\n      \"nullPointMode\": \"connected\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"7.3.5\",\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"alias\": \"$tag_host: $col\",\n          \"dsType\": \"influxdb\",\n          \"function\": \"mean\",\n          \"groupBy\": [\n            {\n              \"interval\": \"auto\",\n              \"params\": [\n                \"auto\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"key\": \"host\",\n              \"params\": [\n                \"tag\"\n              ],\n              \"type\": \"tag\"\n            }\n          ],\n          \"hide\": false,\n          \"measurement\": \"cpu_percentageBusy\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"query\": \"SELECT mean(running) as running, mean(blocked) as blocked, mean(sleeping) as sleeping, mean(stopped) as stopped, mean(zombies) as zombies, mean(paging) as paging, mean(unknown) as unknown FROM \\\"processes\\\" WHERE  $timeFilter GROUP BY time($interval), host ORDER BY asc\",\n          \"rawQuery\": true,\n          \"refId\": \"B\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"value\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"mean\"\n              }\n            ]\n          ],\n          \"tags\": []\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Processes\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"cumulative\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:3342\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:3343\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"editable\": true,\n      \"error\": false,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {},\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"grid\": {},\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 16,\n        \"y\": 40\n      },\n      \"hiddenSeries\": false,\n      \"id\": 63,\n      \"interval\": \"$inter\",\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": true,\n        \"current\": true,\n        \"max\": true,\n        \"min\": true,\n        \"show\": true,\n        \"sort\": null,\n        \"sortDesc\": null,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 2,\n      \"links\": [],\n      \"nullPointMode\": \"connected\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"7.3.5\",\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"alias\": \"$tag_host: $col\",\n          \"dsType\": \"influxdb\",\n          \"function\": \"mean\",\n          \"groupBy\": [\n            {\n              \"interval\": \"auto\",\n              \"params\": [\n                \"auto\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"key\": \"host\",\n              \"params\": [\n                \"tag\"\n              ],\n              \"type\": \"tag\"\n            }\n          ],\n          \"measurement\": \"system_load1\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"query\": \"SELECT mean(load1) as load1,mean(load5) as load5,mean(load15) as load15 FROM \\\"system\\\" WHERE  $timeFilter GROUP BY time($interval), * ORDER BY asc\",\n          \"rawQuery\": true,\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"value\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"mean\"\n              }\n            ]\n          ],\n          \"tags\": []\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"CPU Load Average\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"cumulative\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:3560\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:3561\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"editable\": true,\n      \"error\": false,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {},\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 8,\n      \"grid\": {},\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 49\n      },\n      \"hiddenSeries\": false,\n      \"id\": 65,\n      \"interval\": \"$inter\",\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": true,\n        \"current\": true,\n        \"hideEmpty\": false,\n        \"hideZero\": true,\n        \"max\": true,\n        \"min\": true,\n        \"rightSide\": false,\n        \"show\": true,\n        \"sort\": \"current\",\n        \"sortDesc\": true,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 2,\n      \"links\": [],\n      \"nullPointMode\": \"connected\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"7.3.5\",\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [\n        {\n          \"$$hashKey\": \"object:3659\",\n          \"alias\": \"/cpu/\"\n        },\n        {\n          \"$$hashKey\": \"object:3660\",\n          \"alias\": \"/avg/\"\n        }\n      ],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"alias\": \"$tag_cpu\",\n          \"dsType\": \"influxdb\",\n          \"function\": \"mean\",\n          \"groupBy\": [\n            {\n              \"interval\": \"auto\",\n              \"params\": [\n                \"auto\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"key\": \"host\",\n              \"params\": [\n                \"tag\"\n              ],\n              \"type\": \"tag\"\n            }\n          ],\n          \"hide\": false,\n          \"measurement\": \"cpu_percentageBusy\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"query\": \"SELECT 100 - mean(\\\"usage_idle\\\") FROM \\\"cpu\\\" WHERE (\\\"cpu\\\" =~ /cpu[0-9].*/) AND $timeFilter GROUP BY time($interval), \\\"cpu\\\" fill(null)\",\n          \"rawQuery\": true,\n          \"refId\": \"B\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"value\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"mean\"\n              }\n            ]\n          ],\n          \"tags\": []\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"CPU usage per core\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"cumulative\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:3669\",\n          \"decimals\": null,\n          \"format\": \"percent\",\n          \"logBase\": 1,\n          \"max\": \"100\",\n          \"min\": 0,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:3670\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"max\": \"100\",\n          \"min\": \"0\",\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {},\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 6,\n      \"fillGradient\": 2,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 8,\n        \"y\": 49\n      },\n      \"hiddenSeries\": false,\n      \"id\": 61,\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": true,\n        \"current\": true,\n        \"hideEmpty\": false,\n        \"hideZero\": false,\n        \"max\": true,\n        \"min\": true,\n        \"rightSide\": false,\n        \"show\": true,\n        \"sort\": null,\n        \"sortDesc\": null,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 3,\n      \"links\": [],\n      \"nullPointMode\": \"connected\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"paceLength\": 10,\n      \"percentage\": false,\n      \"pluginVersion\": \"7.3.5\",\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"alias\": \"Memory Used %\",\n          \"dsType\": \"influxdb\",\n          \"groupBy\": [],\n          \"measurement\": \"mem\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"used_percent\"\n                ],\n                \"type\": \"field\"\n              }\n            ]\n          ],\n          \"tags\": []\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Memory Used (%)\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:3462\",\n          \"decimals\": null,\n          \"format\": \"percent\",\n          \"label\": \"\",\n          \"logBase\": 1,\n          \"max\": \"100\",\n          \"min\": \"0\",\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:3463\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 58\n      },\n      \"id\": 77,\n      \"panels\": [],\n      \"title\": \"Network\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {}\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 11,\n        \"w\": 16,\n        \"x\": 0,\n        \"y\": 59\n      },\n      \"hiddenSeries\": false,\n      \"id\": 33,\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": false,\n        \"current\": true,\n        \"max\": true,\n        \"min\": true,\n        \"rightSide\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"7.3.5\",\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"alias\": \"Network:$col\",\n          \"bucketAggs\": [\n            {\n              \"field\": \"@timestamp\",\n              \"id\": \"2\",\n              \"settings\": {\n                \"interval\": \"auto\",\n                \"min_doc_count\": 0,\n                \"trimEdges\": 0\n              },\n              \"type\": \"date_histogram\"\n            }\n          ],\n          \"dsType\": \"influxdb\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"10s\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"params\": [\n                \"null\"\n              ],\n              \"type\": \"fill\"\n            }\n          ],\n          \"measurement\": \"ifTable\",\n          \"metrics\": [\n            {\n              \"field\": \"select field\",\n              \"id\": \"1\",\n              \"type\": \"count\"\n            }\n          ],\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"ifInOctets\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"10s\"\n                ],\n                \"type\": \"non_negative_derivative\"\n              },\n              {\n                \"params\": [\n                  \"in\"\n                ],\n                \"type\": \"alias\"\n              }\n            ],\n            [\n              {\n                \"params\": [\n                  \"ifOutOctets\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"last\"\n              },\n              {\n                \"params\": [\n                  \"10s\"\n                ],\n                \"type\": \"non_negative_derivative\"\n              },\n              {\n                \"params\": [\n                  \"out\"\n                ],\n                \"type\": \"alias\"\n              }\n            ]\n          ],\n          \"tags\": [],\n          \"timeField\": \"@timestamp\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Traffic\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:2169\",\n          \"format\": \"bps\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:2170\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 70\n      },\n      \"id\": 79,\n      \"panels\": [],\n      \"title\": \"Log\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"thresholds\"\n          },\n          \"custom\": {\n            \"align\": \"left\",\n            \"displayMode\": \"auto\",\n            \"filterable\": false\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"dark-purple\",\n                \"value\": null\n              },\n              {\n                \"color\": \"dark-red\",\n                \"value\": 2\n              },\n              {\n                \"color\": \"dark-orange\",\n                \"value\": 3\n              },\n              {\n                \"color\": \"dark-yellow\",\n                \"value\": 4\n              },\n              {\n                \"color\": \"rgb(150, 150, 150)\",\n                \"value\": 5\n              },\n              {\n                \"color\": \"rgb(51, 51, 51)\",\n                \"value\": 6\n              },\n              {\n                \"color\": \"rgb(5, 5, 5)\",\n                \"value\": 7\n              }\n            ]\n          }\n        },\n        \"overrides\": [\n          {\n            \"matcher\": {\n              \"id\": \"byName\",\n              \"options\": \"severity_code\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"mappings\",\n                \"value\": [\n                  {\n                    \"from\": \"\",\n                    \"id\": 0,\n                    \"text\": \"Debug\",\n                    \"to\": \"\",\n                    \"type\": 1,\n                    \"value\": \"7\"\n                  },\n                  {\n                    \"from\": \"\",\n                    \"id\": 1,\n                    \"text\": \"Info\",\n                    \"to\": \"\",\n                    \"type\": 1,\n                    \"value\": \"6\"\n                  },\n                  {\n                    \"from\": \"\",\n                    \"id\": 2,\n                    \"text\": \"Notice\",\n                    \"to\": \"\",\n                    \"type\": 1,\n                    \"value\": \"5\"\n                  },\n                  {\n                    \"from\": \"\",\n                    \"id\": 3,\n                    \"text\": \"Warning\",\n                    \"to\": \"\",\n                    \"type\": 1,\n                    \"value\": \"4\"\n                  },\n                  {\n                    \"from\": \"\",\n                    \"id\": 4,\n                    \"text\": \"Error\",\n                    \"to\": \"\",\n                    \"type\": 1,\n                    \"value\": \"3\"\n                  },\n                  {\n                    \"from\": \"\",\n                    \"id\": 5,\n                    \"text\": \"Critical\",\n                    \"to\": \"\",\n                    \"type\": 1,\n                    \"value\": \"2\"\n                  },\n                  {\n                    \"from\": \"\",\n                    \"id\": 6,\n                    \"text\": \"Alert\",\n                    \"to\": \"\",\n                    \"type\": 1,\n                    \"value\": \"1\"\n                  },\n                  {\n                    \"from\": \"\",\n                    \"id\": 7,\n                    \"text\": \"Emergency\",\n                    \"to\": \"\",\n                    \"type\": 1,\n                    \"value\": \"0\"\n                  }\n                ]\n              },\n              {\n                \"id\": \"custom.displayMode\",\n                \"value\": \"color-background\"\n              },\n              {\n                \"id\": \"custom.width\",\n                \"value\": 119\n              }\n            ]\n          },\n          {\n            \"matcher\": {\n              \"id\": \"byName\",\n              \"options\": \"Time\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"custom.width\",\n                \"value\": 163\n              }\n            ]\n          },\n          {\n            \"matcher\": {\n              \"id\": \"byName\",\n              \"options\": \"hostname\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"custom.width\",\n                \"value\": 194\n              }\n            ]\n          },\n          {\n            \"matcher\": {\n              \"id\": \"byName\",\n              \"options\": \"appname\"\n            },\n            \"properties\": [\n              {\n                \"id\": \"custom.width\",\n                \"value\": 264\n              }\n            ]\n          }\n        ]\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 71\n      },\n      \"id\": 43,\n      \"options\": {\n        \"showHeader\": true,\n        \"sortBy\": [\n          {\n            \"desc\": true,\n            \"displayName\": \"Time\"\n          }\n        ]\n      },\n      \"pluginVersion\": \"7.3.5\",\n      \"targets\": [\n        {\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"hostname\"\n              ],\n              \"type\": \"tag\"\n            },\n            {\n              \"params\": [\n                \"appname\"\n              ],\n              \"type\": \"tag\"\n            }\n          ],\n          \"measurement\": \"syslog\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"table\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"severity_code\"\n                ],\n                \"type\": \"field\"\n              }\n            ],\n            [\n              {\n                \"params\": [\n                  \"message\"\n                ],\n                \"type\": \"field\"\n              }\n            ]\n          ],\n          \"tags\": [\n            {\n              \"key\": \"hostname\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$logHost$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"appname\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$appname$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"severity\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$severity$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"message\",\n              \"operator\": \"=~\",\n              \"value\": \"/$Query/\"\n            }\n          ]\n        }\n      ],\n      \"timeFrom\": null,\n      \"timeShift\": null,\n      \"title\": \"Syslog Messages\",\n      \"type\": \"table\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": true,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"${DS_INFLUXDB}\",\n      \"decimals\": 0,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {}\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 71\n      },\n      \"hiddenSeries\": false,\n      \"id\": 45,\n      \"interval\": \"\",\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": true,\n        \"current\": false,\n        \"max\": true,\n        \"min\": false,\n        \"rightSide\": true,\n        \"show\": true,\n        \"sort\": null,\n        \"sortDesc\": null,\n        \"total\": true,\n        \"values\": true\n      },\n      \"lines\": false,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"connected\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"7.3.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [\n        {\n          \"alias\": \"Info\",\n          \"color\": \"rgb(80, 80, 80)\",\n          \"stack\": \"A\"\n        },\n        {\n          \"alias\": \"Notice\",\n          \"color\": \"rgb(182, 182, 182)\",\n          \"stack\": \"A\"\n        },\n        {\n          \"alias\": \"Warning\",\n          \"color\": \"#E0B400\",\n          \"stack\": \"A\"\n        },\n        {\n          \"alias\": \"Error\",\n          \"color\": \"#FF780A\",\n          \"stack\": \"A\"\n        },\n        {\n          \"alias\": \"Critical\",\n          \"color\": \"#E02F44\",\n          \"stack\": \"A\"\n        },\n        {\n          \"alias\": \"Alert\",\n          \"color\": \"#8F3BB8\",\n          \"stack\": \"A\"\n        },\n        {\n          \"alias\": \"Emergency\",\n          \"color\": \"#8F3BB8\",\n          \"stack\": \"A\"\n        }\n      ],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"alias\": \"Info\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"1m\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"params\": [\n                \"null\"\n              ],\n              \"type\": \"fill\"\n            }\n          ],\n          \"measurement\": \"syslog\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"A\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"severity_code\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"count\"\n              }\n            ]\n          ],\n          \"tags\": [\n            {\n              \"key\": \"severity\",\n              \"operator\": \"=\",\n              \"value\": \"info\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"hostname\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$logHost$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"severity\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$severity$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"appname\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$appname$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"message\",\n              \"operator\": \"=~\",\n              \"value\": \"/$Query/\"\n            }\n          ]\n        },\n        {\n          \"alias\": \"Notice\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"1m\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"params\": [\n                \"null\"\n              ],\n              \"type\": \"fill\"\n            }\n          ],\n          \"measurement\": \"syslog\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"B\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"severity_code\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"count\"\n              }\n            ]\n          ],\n          \"tags\": [\n            {\n              \"key\": \"severity\",\n              \"operator\": \"=\",\n              \"value\": \"notice\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"hostname\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$logHost$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"severity\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$severity$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"appname\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$appname$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"message\",\n              \"operator\": \"=~\",\n              \"value\": \"/$Query/\"\n            }\n          ]\n        },\n        {\n          \"alias\": \"Warning\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"1m\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"params\": [\n                \"null\"\n              ],\n              \"type\": \"fill\"\n            }\n          ],\n          \"measurement\": \"syslog\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"D\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"severity_code\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"count\"\n              }\n            ]\n          ],\n          \"tags\": [\n            {\n              \"key\": \"severity\",\n              \"operator\": \"=\",\n              \"value\": \"warning\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"hostname\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$logHost$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"severity\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$severity$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"appname\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$appname$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"message\",\n              \"operator\": \"=~\",\n              \"value\": \"/$Query/\"\n            }\n          ]\n        },\n        {\n          \"alias\": \"Error\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"1m\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"params\": [\n                \"null\"\n              ],\n              \"type\": \"fill\"\n            }\n          ],\n          \"measurement\": \"syslog\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"C\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"severity_code\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"count\"\n              }\n            ]\n          ],\n          \"tags\": [\n            {\n              \"key\": \"severity\",\n              \"operator\": \"=\",\n              \"value\": \"err\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"hostname\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$logHost$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"severity\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$severity$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"appname\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$appname$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"message\",\n              \"operator\": \"=~\",\n              \"value\": \"/$Query/\"\n            }\n          ]\n        },\n        {\n          \"alias\": \"Critical\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"1m\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"params\": [\n                \"null\"\n              ],\n              \"type\": \"fill\"\n            }\n          ],\n          \"measurement\": \"syslog\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"E\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"severity_code\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"count\"\n              }\n            ]\n          ],\n          \"tags\": [\n            {\n              \"key\": \"severity\",\n              \"operator\": \"=\",\n              \"value\": \"crit\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"hostname\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$logHost$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"severity\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$severity$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"appname\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$appname$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"message\",\n              \"operator\": \"=~\",\n              \"value\": \"/$Query/\"\n            }\n          ]\n        },\n        {\n          \"alias\": \"Alert\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"1m\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"params\": [\n                \"null\"\n              ],\n              \"type\": \"fill\"\n            }\n          ],\n          \"measurement\": \"syslog\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"F\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"severity_code\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"count\"\n              }\n            ]\n          ],\n          \"tags\": [\n            {\n              \"key\": \"severity\",\n              \"operator\": \"=\",\n              \"value\": \"alert\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"hostname\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$logHost$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"severity\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$severity$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"appname\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$appname$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"message\",\n              \"operator\": \"=~\",\n              \"value\": \"/$Query/\"\n            }\n          ]\n        },\n        {\n          \"alias\": \"Emergency\",\n          \"groupBy\": [\n            {\n              \"params\": [\n                \"1m\"\n              ],\n              \"type\": \"time\"\n            },\n            {\n              \"params\": [\n                \"null\"\n              ],\n              \"type\": \"fill\"\n            }\n          ],\n          \"measurement\": \"syslog\",\n          \"orderByTime\": \"ASC\",\n          \"policy\": \"default\",\n          \"refId\": \"G\",\n          \"resultFormat\": \"time_series\",\n          \"select\": [\n            [\n              {\n                \"params\": [\n                  \"severity_code\"\n                ],\n                \"type\": \"field\"\n              },\n              {\n                \"params\": [],\n                \"type\": \"count\"\n              }\n            ]\n          ],\n          \"tags\": [\n            {\n              \"key\": \"severity\",\n              \"operator\": \"=\",\n              \"value\": \"emerg\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"hostname\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$logHost$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"severity\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$severity$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"appname\",\n              \"operator\": \"=~\",\n              \"value\": \"/^$appname$/\"\n            },\n            {\n              \"condition\": \"AND\",\n              \"key\": \"message\",\n              \"operator\": \"=~\",\n              \"value\": \"/$Query/\"\n            }\n          ]\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"syslog count\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"decimals\": 0,\n          \"format\": \"none\",\n          \"label\": \"Messages / min\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    }\n  ],\n  \"refresh\": false,\n  \"schemaVersion\": 26,\n  \"style\": \"dark\",\n  \"tags\": [],\n  \"templating\": {\n    \"list\": [\n      {\n        \"current\": {\n          \"selected\": false,\n          \"text\": \"InfluxDB\",\n          \"value\": \"InfluxDB\"\n        },\n        \"error\": null,\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"label\": null,\n        \"multi\": false,\n        \"name\": \"InfluxDB\",\n        \"options\": [],\n        \"query\": \"influxdb\",\n        \"queryValue\": \"\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"type\": \"datasource\"\n      },\n      {\n        \"allValue\": null,\n        \"current\": {},\n        \"datasource\": \"${DS_INFLUXDB}\",\n        \"definition\": \"\",\n        \"error\": null,\n        \"hide\": 0,\n        \"includeAll\": true,\n        \"label\": \"Syno:\",\n        \"multi\": true,\n        \"name\": \"host\",\n        \"options\": [],\n        \"query\": \"SHOW TAG VALUES FROM \\\"snmp.SYNO\\\" WITH KEY = \\\"agent_host\\\"\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 0,\n        \"tagValuesQuery\": \"\",\n        \"tags\": [],\n        \"tagsQuery\": \"\",\n        \"type\": \"query\",\n        \"useTags\": false\n      },\n      {\n        \"allValue\": null,\n        \"current\": {},\n        \"datasource\": \"${DS_INFLUXDB}\",\n        \"definition\": \"\",\n        \"error\": null,\n        \"hide\": 0,\n        \"includeAll\": true,\n        \"label\": \"Interface:\",\n        \"multi\": true,\n        \"name\": \"intf\",\n        \"options\": [],\n        \"query\": \"SHOW TAG VALUES FROM \\\"ifTable\\\" WITH KEY = \\\"ifDescr\\\" WHERE \\\"agent_host\\\" =~ /^$host/\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 0,\n        \"tagValuesQuery\": \"\",\n        \"tags\": [],\n        \"tagsQuery\": \"\",\n        \"type\": \"query\",\n        \"useTags\": false\n      },\n      {\n        \"allValue\": null,\n        \"current\": {},\n        \"datasource\": \"${DS_INFLUXDB}\",\n        \"definition\": \"\",\n        \"error\": null,\n        \"hide\": 0,\n        \"includeAll\": true,\n        \"label\": \"Appname\",\n        \"multi\": true,\n        \"name\": \"appname\",\n        \"options\": [],\n        \"query\": \"SHOW TAG VALUES FROM syslog WITH KEY=appname\",\n        \"refresh\": 2,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 1,\n        \"tagValuesQuery\": \"\",\n        \"tags\": [],\n        \"tagsQuery\": \"\",\n        \"type\": \"query\",\n        \"useTags\": false\n      },\n      {\n        \"allValue\": null,\n        \"current\": {},\n        \"datasource\": \"${DS_INFLUXDB}\",\n        \"definition\": \"\",\n        \"error\": null,\n        \"hide\": 0,\n        \"includeAll\": true,\n        \"label\": \"LogHostname\",\n        \"multi\": true,\n        \"name\": \"logHost\",\n        \"options\": [],\n        \"query\": \"SHOW TAG VALUES FROM syslog WITH KEY=hostname\",\n        \"refresh\": 2,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 1,\n        \"tagValuesQuery\": \"\",\n        \"tags\": [],\n        \"tagsQuery\": \"\",\n        \"type\": \"query\",\n        \"useTags\": false\n      },\n      {\n        \"allValue\": null,\n        \"current\": {},\n        \"datasource\": \"${DS_INFLUXDB}\",\n        \"definition\": \"\",\n        \"error\": null,\n        \"hide\": 0,\n        \"includeAll\": true,\n        \"label\": \"Severity\",\n        \"multi\": true,\n        \"name\": \"severity\",\n        \"options\": [],\n        \"query\": \"SHOW TAG VALUES FROM syslog WITH KEY=severity\",\n        \"refresh\": 2,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 0,\n        \"tagValuesQuery\": \"\",\n        \"tags\": [],\n        \"tagsQuery\": \"\",\n        \"type\": \"query\",\n        \"useTags\": false\n      },\n      {\n        \"allValue\": null,\n        \"current\": {},\n        \"datasource\": \"${DS_INFLUXDB}\",\n        \"definition\": \"\",\n        \"error\": null,\n        \"hide\": 0,\n        \"includeAll\": true,\n        \"label\": \"disk\",\n        \"multi\": true,\n        \"name\": \"disk\",\n        \"options\": [],\n        \"query\": \"SHOW TAG VALUES FROM \\\"diskio\\\" WITH KEY = \\\"name\\\"\",\n        \"refresh\": 1,\n        \"regex\": \"/[a-z]d[\\\\D]$/\",\n        \"skipUrlSync\": false,\n        \"sort\": 0,\n        \"tagValuesQuery\": \"\",\n        \"tags\": [],\n        \"tagsQuery\": \"\",\n        \"type\": \"query\",\n        \"useTags\": true\n      },\n      {\n        \"current\": {},\n        \"error\": null,\n        \"hide\": 0,\n        \"label\": \"LogQuery\",\n        \"name\": \"Query\",\n        \"options\": [],\n        \"query\": \"\",\n        \"skipUrlSync\": false,\n        \"type\": \"textbox\"\n      },\n      {\n        \"auto\": true,\n        \"auto_count\": \"100\",\n        \"auto_min\": \"30s\",\n        \"current\": {\n          \"selected\": false,\n          \"text\": \"1m\",\n          \"value\": \"1m\"\n        },\n        \"error\": null,\n        \"hide\": 0,\n        \"label\": \"Interval\",\n        \"name\": \"inter\",\n        \"options\": [\n          {\n            \"selected\": false,\n            \"text\": \"auto\",\n            \"value\": \"$__auto_interval_inter\"\n          },\n          {\n            \"selected\": true,\n            \"text\": \"1m\",\n            \"value\": \"1m\"\n          }\n        ],\n        \"query\": \"1m\",\n        \"queryValue\": \"\",\n        \"refresh\": 2,\n        \"skipUrlSync\": false,\n        \"type\": \"interval\"\n      }\n    ]\n  },\n  \"time\": {\n    \"from\": \"now-7d\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {\n    \"refresh_intervals\": [\n      \"10s\",\n      \"30s\",\n      \"1m\",\n      \"5m\",\n      \"15m\",\n      \"30m\",\n      \"1h\",\n      \"2h\",\n      \"1d\"\n    ],\n    \"time_options\": [\n      \"5m\",\n      \"15m\",\n      \"1h\",\n      \"6h\",\n      \"12h\",\n      \"24h\",\n      \"2d\",\n      \"7d\",\n      \"30d\"\n    ]\n  },\n  \"timezone\": \"browser\",\n  \"title\": \"Synology DashBoard\",\n  \"uid\": \"TIcL1_ezk22\",\n  \"version\": 27\n}"
  },
  {
    "path": "docker/Dockerfile",
    "content": "FROM ubuntu:20.04\r\n\r\nLABEL maintainer=\"Abdullah ALhazmy <me@alhazmy13.net>\"\r\n\r\nENV DEBIAN_FRONTEND noninteractive\r\nENV LANG C.UTF-8\r\n\r\n# Default versions\r\nENV TELEGRAF_VERSION 1.16.3-1\r\nENV INFLUXDB_VERSION 1.8.6\r\nENV GRAFANA_VERSION  9.1.3\r\nENV CHRONOGRAF_VERSION 1.8.9.1\r\n\r\nENV GF_DATABASE_TYPE=sqlite3\r\n\r\n# Clear previous sources\r\nRUN rm /var/lib/apt/lists/* -vf\r\n\r\n# Base dependencies\r\n\r\nRUN apt-get -y update && \\\r\n apt-get -y dist-upgrade && \\\r\n apt-get -y install \\\r\n  apt-utils \\\r\n  ca-certificates \\\r\n  curl \\\r\n  git \\\r\n  htop \\\r\n  libfontconfig \\\r\n  mc \\\r\n  net-tools \\\r\n  openssh-server \\\r\n  supervisor \\\r\n  gnupg \\\r\n  gnupg2 \\\r\n  gnupg1 \\\r\n  snmp \\\r\n  syslog-ng \\\r\n  snmp-mibs-downloader \\\r\n  wget && \\\r\n curl -sL https://deb.nodesource.com/setup_15.x | bash - && \\\r\n apt-get install -y nodejs\r\n\r\n# Configure Supervisord, SSH and base env\r\nCOPY supervisord/supervisord.conf /etc/supervisor/conf.d/supervisord.conf\r\n\r\nWORKDIR /root\r\n\r\nRUN mkdir -p /var/log/supervisor && \\\r\n    mkdir -p /var/run/sshd && \\\r\n    echo 'root:root' | chpasswd && \\\r\n    rm -rf .ssh && \\\r\n    rm -rf .profile && \\\r\n    mkdir .ssh\r\n\r\nCOPY bash/profile .profile\r\n\r\n# Install InfluxDB\r\nRUN wget https://dl.influxdata.com/influxdb/releases/influxdb_${INFLUXDB_VERSION}_amd64.deb && \\\r\n dpkg -i influxdb_${INFLUXDB_VERSION}_amd64.deb && rm influxdb_${INFLUXDB_VERSION}_amd64.deb\r\n\r\n# Configure InfluxDB\r\nCOPY influxdb/influxdb.conf /etc/influxdb/influxdb.conf\r\nRUN chmod 0777 /var/lib/influxdb\r\n\r\n#install syslog-ng \r\nCOPY syslog/syslog-ng.conf /etc/syslog-ng/syslog-ng.conf\r\n\r\n# Install Telegraf\r\nRUN wget https://dl.influxdata.com/telegraf/releases/telegraf_${TELEGRAF_VERSION}_amd64.deb && \\\r\n dpkg -i telegraf_${TELEGRAF_VERSION}_amd64.deb && rm telegraf_${TELEGRAF_VERSION}_amd64.deb\r\n\r\n# Configure Telegraf\r\nRUN mv -f /etc/telegraf/telegraf.conf /etc/telegraf/telegraf.conf.default \r\nCOPY telegraf/telegraf.conf /etc/telegraf/telegraf.conf\r\nCOPY telegraf/init.sh /etc/init.d/telegraf\r\nRUN chmod 0777 /etc/init.d/telegraf\r\n\r\n# Install Chronograf\r\nRUN wget https://dl.influxdata.com/chronograf/releases/chronograf_${CHRONOGRAF_VERSION}_amd64.deb && \\\r\n dpkg -i chronograf_${CHRONOGRAF_VERSION}_amd64.deb  && rm chronograf_${CHRONOGRAF_VERSION}_amd64.deb\r\n\r\n# Install Grafana\r\nRUN wget https://dl.grafana.com/oss/release/grafana_${GRAFANA_VERSION}_amd64.deb && \\\r\n dpkg -i grafana_${GRAFANA_VERSION}_amd64.deb && rm grafana_${GRAFANA_VERSION}_amd64.deb\r\n\r\n# Configure Grafana with provisioning\r\nADD grafana/provisioning /etc/grafana/provisioning\r\nCOPY grafana/grafana.ini /etc/grafana/grafana.ini\r\nRUN chmod 0777 /var/lib/grafana\r\n\r\n# Synology SNMP\r\nCOPY synology/* /usr/share/snmp/mibs\r\nRUN chown root:root /usr/share/snmp/mibs\r\nRUN chmod 755 /usr/share/snmp/mibs\r\n\r\n\r\n# Install plugins\r\n#COPY rootfs /tmp\r\n#RUN /tmp/grafana-plugins.sh\r\n\r\n#\r\n\r\nEXPOSE 22/tcp 3003/tcp 8086/tcp 8888/tcp 8125/udp 514/udp\r\n#VOLUME /var/lib/influxdb /var/lib/grafana /var/lib/backups\r\n\r\n# Cleanup\r\nRUN apt-get clean && \\\r\n rm -rf /var/lib/apt/lists/*  /var/tmp/*\r\n\r\nCMD [\"/usr/bin/supervisord\"]\r\n"
  },
  {
    "path": "docker/README.md",
    "content": "# Synology NAS monitoring\n\nThe main points of this project are:\n\n* Persistence is supported via mounting volumes to a Docker container.\n* Grafana will store its data in SQLite files instead of a MySQL.\n* Added snmp packages and Synology NAS MIBS.\n* Enable \n\n## Run Docker image in your Synology\n\n1. Install Docker from Synology package center\n2. Create two empty folders in your Synology \"influxdb\" and \"grafana\", we need to use it later to mount it to our container.\n3. Open Docker client from Synslogy > Image > Add > Add from url and paste Hub page url \"https://hub.docker.com/r/alhazmy13/telegraf-influxdb-grafana\"\n4. Wait until it finishes downloading the image\n5. Click on the image \"alhazmy13/telegraf-influxdb-grafana\" and then click on Lunch \n6. Click on Advanced Settings and check \"Enable auto-restart.\"\n7. From the Volume tab, click Add folder and select the first folder that we created, \"grafana\" and on mount Path, paste \"/var/lib/grafana\"\n8. From the Volume tab again, click Add Folder and select the second folder that we created \"influxdb\" and on mount Path paste \"/var/lib/influxdb\"\n9. Network Tab keep it in bridge mode\n10. Port settings, just change Local port for 3003 from Auto to 3003, and port 514 from Auto to 5144\n11. Envirument Tab > Add new variable \"TZ\" with your local time zone **ignore this if you want to use the default UTC**\n12. Apply, Next, Done and your container should be ready.\n\n## Start Grafana\n\n1. Open [http://YOUR_LOCAL_NAS_IP:3003](http://YOUR_LOCAL_NAS_IP:3003) and login with the default username \"root\" and password \"root\"\n2. You need to import the dashboard. To do this, go to [http://YOUR_LOCAL_NAS_IP:3003/dashboard/import](http://YOUR_LOCAL_NAS_IP:3003/dashboard/import) and put \"14590\" in \"Import via grafana.com\" input\n3. click on load and complete the process\n\n## Enable Logging\n1. Install Log center From Synslogy package center\n2. Open Log center app\n3. click on Log Sending > check \"Send log to syslog server\"\n3. Set Server = \"localhost\",  port = \"5144\", Protocol = \"UDP\", Format = \"BSD (RFC 3164)\"\n4. For testing, click on \"Send test log\" \n4. Apply"
  },
  {
    "path": "docker/bash/profile",
    "content": "# ~/.profile: executed by Bourne-compatible login shells.\n\nif [ \"$BASH\" ]; then\n  if [ -f ~/.bashrc ]; then\n    . ~/.bashrc\n  fi\nfi\n\nmesg n\n\nexport HOME=/root\n"
  },
  {
    "path": "docker/grafana/grafana.ini",
    "content": "##################### Grafana Configuration Example #####################\n#\n# Everything has defaults so you only need to uncomment things you want to\n# change\n\n# possible values : production, development\n;app_mode = production\n\n# instance name, defaults to HOSTNAME environment variable value or hostname if HOSTNAME var is empty\n;instance_name = ${HOSTNAME}\n\n#################################### Paths ####################################\n[paths]\n# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used)\ndata = /var/lib/grafana\n\n# Temporary files in `data` directory older than given duration will be removed\n;temp_data_lifetime = 24h\n\n# Directory where grafana can store logs\nlogs = /var/log/grafana\n\n# Directory where grafana will automatically scan and look for plugins\nplugins = /var/lib/grafana/plugins\n\n# folder that contains provisioning config files that grafana will apply on startup and while running.\nprovisioning = /etc/grafana/provisioning\n\n#################################### Server ####################################\n[server]\n# Protocol (http, https, h2, socket)\nprotocol = http\n\n# The ip address to bind to, empty will bind to all interfaces\n;http_addr =\n\n# The http port  to use\nhttp_port = 3003\n\n# The public facing domain name used to access grafana from a browser\ndomain = localhost\n\n# Redirect to correct domain if host header does not match domain\n# Prevents DNS rebinding attacks\n;enforce_domain = false\n\n# The full public facing url you use in browser, used for redirects and emails\n# If you use reverse proxy and sub path specify full url (with sub path)\n;root_url = %(protocol)s://%(domain)s:%(http_port)s/\n\n# Serve Grafana from subpath specified in `root_url` setting. By default it is set to `false` for compatibility reasons.\n;serve_from_sub_path = false\n\n# Log web requests\n;router_logging = false\n\n# the path relative working path\n;static_root_path = public\n\n# enable gzip\n;enable_gzip = false\n\n# https certs & key file\n;cert_file =\n;cert_key =\n\n# Unix socket path\n;socket =\n\n#################################### Database ####################################\n[database]\n# You can configure the database connection by specifying type, host, name, user and password\n# as separate properties or as on string using the url properties.\n\n# Either \"mysql\", \"postgres\" or \"sqlite3\", it's your choice\ntype = sqlite3\nhost = 127.0.0.1:3306\nname = grafana\nuser = grafana\n# If the password contains # or ; you have to wrap it with triple quotes. Ex \"\"\"#password;\"\"\"\npassword = grafana\n\n# Use either URL or the previous fields to configure the database\n# Example: mysql://user:secret@host:port/database\n;url =\n\n# For \"postgres\" only, either \"disable\", \"require\" or \"verify-full\"\n;ssl_mode = disable\n\n;ca_cert_path =\n;client_key_path =\n;client_cert_path =\n;server_cert_name =\n\n# For \"sqlite3\" only, path relative to data_path setting\n;path = grafana.db\n\n# Max idle conn setting default is 2\n;max_idle_conn = 2\n\n# Max conn setting default is 0 (mean not set)\n;max_open_conn =\n\n# Connection Max Lifetime default is 14400 (means 14400 seconds or 4 hours)\n;conn_max_lifetime = 14400\n\n# Set to true to log the sql calls and execution times.\n;log_queries =\n\n# For \"sqlite3\" only. cache mode setting used for connecting to the database. (private, shared)\n;cache_mode = private\n\n#################################### Cache server #############################\n[remote_cache]\n# Either \"redis\", \"memcached\" or \"database\" default is \"database\"\n;type = database\n\n# cache connectionstring options\n# database: will use Grafana primary database.\n# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=0,ssl=false`. Only addr is required. ssl may be 'true', 'false', or 'insecure'.\n# memcache: 127.0.0.1:11211\n;connstr =\n\n#################################### Data proxy ###########################\n[dataproxy]\n\n# This enables data proxy logging, default is false\n;logging = false\n\n# How long the data proxy waits before timing out, default is 30 seconds.\n# This setting also applies to core backend HTTP data sources where query requests use an HTTP client with timeout set.\n;timeout = 30\n\n# How many seconds the data proxy waits before sending a keepalive probe request.\n;keep_alive_seconds = 30\n\n# How many seconds the data proxy waits for a successful TLS Handshake before timing out.\n;tls_handshake_timeout_seconds = 10\n\n# How many seconds the data proxy will wait for a server's first response headers after\n# fully writing the request headers if the request has an \"Expect: 100-continue\"\n# header. A value of 0 will result in the body being sent immediately, without\n# waiting for the server to approve.\n;expect_continue_timeout_seconds = 1\n\n# The maximum number of idle connections that Grafana will keep alive.\n;max_idle_connections = 100\n\n# How many seconds the data proxy keeps an idle connection open before timing out.\n;idle_conn_timeout_seconds = 90\n\n# If enabled and user is not anonymous, data proxy will add X-Grafana-User header with username into the request, default is false.\n;send_user_header = false\n\n#################################### Analytics ####################################\n[analytics]\n# Server reporting, sends usage counters to stats.grafana.org every 24 hours.\n# No ip addresses are being tracked, only simple counters to track\n# running instances, dashboard and error counts. It is very helpful to us.\n# Change this option to false to disable reporting.\n;reporting_enabled = true\n\n# Set to false to disable all checks to https://grafana.net\n# for new versions (grafana itself and plugins), check is used\n# in some UI views to notify that grafana or plugin update exists\n# This option does not cause any auto updates, nor send any information\n# only a GET request to http://grafana.com to get latest versions\n;check_for_updates = true\n\n# Google Analytics universal tracking code, only enabled if you specify an id here\n;google_analytics_ua_id =\n\n# Google Tag Manager ID, only enabled if you specify an id here\n;google_tag_manager_id =\n\n#################################### Security ####################################\n[security]\n# disable creation of admin user on first start of grafana\n;disable_initial_admin_creation = false\n\n# default admin user, created on startup\nadmin_user = root\n\n# default admin password, can be changed before first start of grafana,  or in profile settings\nadmin_password = root\n\n# used for signing\n;secret_key = SW2YcwTIb9zpOOhoPsMm\n\n# disable gravatar profile images\n;disable_gravatar = false\n\n# data source proxy whitelist (ip_or_domain:port separated by spaces)\n;data_source_proxy_whitelist =\n\n# disable protection against brute force login attempts\n;disable_brute_force_login_protection = false\n\n# set to true if you host Grafana behind HTTPS. default is false.\n;cookie_secure = false\n\n# set cookie SameSite attribute. defaults to `lax`. can be set to \"lax\", \"strict\", \"none\" and \"disabled\"\n;cookie_samesite = lax\n\n# set to true if you want to allow browsers to render Grafana in a <frame>, <iframe>, <embed> or <object>. default is false.\n;allow_embedding = false\n\n# Set to true if you want to enable http strict transport security (HSTS) response header.\n# This is only sent when HTTPS is enabled in this configuration.\n# HSTS tells browsers that the site should only be accessed using HTTPS.\n;strict_transport_security = false\n\n# Sets how long a browser should cache HSTS. Only applied if strict_transport_security is enabled.\n;strict_transport_security_max_age_seconds = 86400\n\n# Set to true if to enable HSTS preloading option. Only applied if strict_transport_security is enabled.\n;strict_transport_security_preload = false\n\n# Set to true if to enable the HSTS includeSubDomains option. Only applied if strict_transport_security is enabled.\n;strict_transport_security_subdomains = false\n\n# Set to true to enable the X-Content-Type-Options response header.\n# The X-Content-Type-Options response HTTP header is a marker used by the server to indicate that the MIME types advertised\n# in the Content-Type headers should not be changed and be followed.\n;x_content_type_options = true\n\n# Set to true to enable the X-XSS-Protection header, which tells browsers to stop pages from loading\n# when they detect reflected cross-site scripting (XSS) attacks.\n;x_xss_protection = true\n\n#################################### Snapshots ###########################\n[snapshots]\n# snapshot sharing options\n;external_enabled = true\n;external_snapshot_url = https://snapshots-origin.raintank.io\n;external_snapshot_name = Publish to snapshot.raintank.io\n\n# Set to true to enable this Grafana instance act as an external snapshot server and allow unauthenticated requests for\n# creating and deleting snapshots.\n;public_mode = false\n\n# remove expired snapshot\n;snapshot_remove_expired = true\n\n#################################### Dashboards History ##################\n[dashboards]\n# Number dashboard versions to keep (per dashboard). Default: 20, Minimum: 1\n;versions_to_keep = 20\n\n# Minimum dashboard refresh interval. When set, this will restrict users to set the refresh interval of a dashboard lower than given interval. Per default this is 5 seconds.\n# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.\n;min_refresh_interval = 5s\n\n# Path to the default home dashboard. If this value is empty, then Grafana uses StaticRootPath + \"dashboards/home.json\"\n;default_home_dashboard_path =\n\n#################################### Users ###############################\n[users]\n# disable user signup / registration\n;allow_sign_up = true\n\n# Allow non admin users to create organizations\n;allow_org_create = true\n\n# Set to true to automatically assign new users to the default organization (id 1)\n;auto_assign_org = true\n\n# Set this value to automatically add new users to the provided organization (if auto_assign_org above is set to true)\n;auto_assign_org_id = 1\n\n# Default role new users will be automatically assigned (if disabled above is set to true)\n;auto_assign_org_role = Viewer\n\n# Require email validation before sign up completes\n;verify_email_enabled = false\n\n# Background text for the user field on the login page\n;login_hint = email or username\n;password_hint = password\n\n# Default UI theme (\"dark\" or \"light\")\n;default_theme = dark\n\n# External user management, these options affect the organization users view\n;external_manage_link_url =\n;external_manage_link_name =\n;external_manage_info =\n\n# Viewers can edit/inspect dashboard settings in the browser. But not save the dashboard.\n;viewers_can_edit = false\n\n# Editors can administrate dashboard, folders and teams they create\n;editors_can_admin = false\n\n# The duration in time a user invitation remains valid before expiring. This setting should be expressed as a duration. Examples: 6h (hours), 2d (days), 1w (week). Default is 24h (24 hours). The minimum supported duration is 15m (15 minutes).\n;user_invite_max_lifetime_duration = 24h\n\n[auth]\n# Login cookie name\n;login_cookie_name = grafana_session\n\n# The maximum lifetime (duration) an authenticated user can be inactive before being required to login at next visit. Default is 7 days (7d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month). The lifetime resets at each successful token rotation.\n;login_maximum_inactive_lifetime_duration =\n\n# The maximum lifetime (duration) an authenticated user can be logged in since login time before being required to login. Default is 30 days (30d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month).\n;login_maximum_lifetime_duration =\n\n# How often should auth tokens be rotated for authenticated users when being active. The default is each 10 minutes.\n;token_rotation_interval_minutes = 10\n\n# Set to true to disable (hide) the login form, useful if you use OAuth, defaults to false\n;disable_login_form = false\n\n# Set to true to disable the signout link in the side menu. useful if you use auth.proxy, defaults to false\n;disable_signout_menu = false\n\n# URL to redirect the user to after sign out\n;signout_redirect_url =\n\n# Set to true to attempt login with OAuth automatically, skipping the login screen.\n# This setting is ignored if multiple OAuth providers are configured.\n;oauth_auto_login = false\n\n# OAuth state max age cookie duration in seconds. Defaults to 600 seconds.\n;oauth_state_cookie_max_age = 600\n\n# limit of api_key seconds to live before expiration\n;api_key_max_seconds_to_live = -1\n\n# Set to true to enable SigV4 authentication option for HTTP-based datasources.\n;sigv4_auth_enabled = false\n\n#################################### Anonymous Auth ######################\n[auth.anonymous]\n# enable anonymous access\n;enabled = false\n\n# specify organization name that should be used for unauthenticated users\n;org_name = Main Org.\n\n# specify role for unauthenticated users\n;org_role = Viewer\n\n# mask the Grafana version number for unauthenticated users\n;hide_version = false\n\n#################################### GitHub Auth ##########################\n[auth.github]\n;enabled = false\n;allow_sign_up = true\n;client_id = some_id\n;client_secret = some_secret\n;scopes = user:email,read:org\n;auth_url = https://github.com/login/oauth/authorize\n;token_url = https://github.com/login/oauth/access_token\n;api_url = https://api.github.com/user\n;allowed_domains =\n;team_ids =\n;allowed_organizations =\n\n#################################### GitLab Auth #########################\n[auth.gitlab]\n;enabled = false\n;allow_sign_up = true\n;client_id = some_id\n;client_secret = some_secret\n;scopes = api\n;auth_url = https://gitlab.com/oauth/authorize\n;token_url = https://gitlab.com/oauth/token\n;api_url = https://gitlab.com/api/v4\n;allowed_domains =\n;allowed_groups =\n\n#################################### Google Auth ##########################\n[auth.google]\n;enabled = false\n;allow_sign_up = true\n;client_id = some_client_id\n;client_secret = some_client_secret\n;scopes = https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email\n;auth_url = https://accounts.google.com/o/oauth2/auth\n;token_url = https://accounts.google.com/o/oauth2/token\n;api_url = https://www.googleapis.com/oauth2/v1/userinfo\n;allowed_domains =\n;hosted_domain =\n\n#################################### Grafana.com Auth ####################\n[auth.grafana_com]\n;enabled = false\n;allow_sign_up = true\n;client_id = some_id\n;client_secret = some_secret\n;scopes = user:email\n;allowed_organizations =\n\n#################################### Azure AD OAuth #######################\n[auth.azuread]\n;name = Azure AD\n;enabled = false\n;allow_sign_up = true\n;client_id = some_client_id\n;client_secret = some_client_secret\n;scopes = openid email profile\n;auth_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize\n;token_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token\n;allowed_domains =\n;allowed_groups =\n\n#################################### Okta OAuth #######################\n[auth.okta]\n;name = Okta\n;enabled = false\n;allow_sign_up = true\n;client_id = some_id\n;client_secret = some_secret\n;scopes = openid profile email groups\n;auth_url = https://<tenant-id>.okta.com/oauth2/v1/authorize\n;token_url = https://<tenant-id>.okta.com/oauth2/v1/token\n;api_url = https://<tenant-id>.okta.com/oauth2/v1/userinfo\n;allowed_domains =\n;allowed_groups =\n;role_attribute_path =\n\n#################################### Generic OAuth ##########################\n[auth.generic_oauth]\n;enabled = false\n;name = OAuth\n;allow_sign_up = true\n;client_id = some_id\n;client_secret = some_secret\n;scopes = user:email,read:org\n;email_attribute_name = email:primary\n;email_attribute_path =\n;login_attribute_path =\n;id_token_attribute_name =\n;auth_url = https://foo.bar/login/oauth/authorize\n;token_url = https://foo.bar/login/oauth/access_token\n;api_url = https://foo.bar/user\n;allowed_domains =\n;team_ids =\n;allowed_organizations =\n;role_attribute_path =\n;tls_skip_verify_insecure = false\n;tls_client_cert =\n;tls_client_key =\n;tls_client_ca =\n\n#################################### Basic Auth ##########################\n[auth.basic]\n;enabled = true\n\n#################################### Auth Proxy ##########################\n[auth.proxy]\n;enabled = false\n;header_name = X-WEBAUTH-USER\n;header_property = username\n;auto_sign_up = true\n;sync_ttl = 60\n;whitelist = 192.168.1.1, 192.168.2.1\n;headers = Email:X-User-Email, Name:X-User-Name\n# Read the auth proxy docs for details on what the setting below enables\n;enable_login_token = false\n\n#################################### Auth LDAP ##########################\n[auth.ldap]\n;enabled = false\n;config_file = /etc/grafana/ldap.toml\n;allow_sign_up = true\n\n# LDAP backround sync (Enterprise only)\n# At 1 am every day\n;sync_cron = \"0 0 1 * * *\"\n;active_sync_enabled = true\n\n#################################### SMTP / Emailing ##########################\n[smtp]\n;enabled = false\n;host = localhost:25\n;user =\n# If the password contains # or ; you have to wrap it with triple quotes. Ex \"\"\"#password;\"\"\"\n;password =\n;cert_file =\n;key_file =\n;skip_verify = false\n;from_address = admin@grafana.localhost\n;from_name = Grafana\n# EHLO identity in SMTP dialog (defaults to instance_name)\n;ehlo_identity = dashboard.example.com\n# SMTP startTLS policy (defaults to 'OpportunisticStartTLS')\n;startTLS_policy = NoStartTLS\n\n[emails]\n;welcome_email_on_sign_up = false\n;templates_pattern = emails/*.html\n\n#################################### Logging ##########################\n[log]\n# Either \"console\", \"file\", \"syslog\". Default is console and  file\n# Use space to separate multiple modes, e.g. \"console file\"\n;mode = console file\n\n# Either \"debug\", \"info\", \"warn\", \"error\", \"critical\", default is \"info\"\n;level = info\n\n# optional settings to set different levels for specific loggers. Ex filters = sqlstore:debug\n;filters =\n\n# For \"console\" mode only\n[log.console]\n;level =\n\n# log line format, valid options are text, console and json\n;format = console\n\n# For \"file\" mode only\n[log.file]\n;level =\n\n# log line format, valid options are text, console and json\n;format = text\n\n# This enables automated log rotate(switch of following options), default is true\n;log_rotate = true\n\n# Max line number of single file, default is 1000000\n;max_lines = 1000000\n\n# Max size shift of single file, default is 28 means 1 << 28, 256MB\n;max_size_shift = 28\n\n# Segment log daily, default is true\n;daily_rotate = true\n\n# Expired days of log file(delete after max days), default is 7\n;max_days = 7\n\n[log.syslog]\n;level =\n\n# log line format, valid options are text, console and json\n;format = text\n\n# Syslog network type and address. This can be udp, tcp, or unix. If left blank, the default unix endpoints will be used.\n;network =\n;address =\n\n# Syslog facility. user, daemon and local0 through local7 are valid.\n;facility =\n\n# Syslog tag. By default, the process' argv[0] is used.\n;tag =\n\n#################################### Usage Quotas ########################\n[quota]\n; enabled = false\n\n#### set quotas to -1 to make unlimited. ####\n# limit number of users per Org.\n; org_user = 10\n\n# limit number of dashboards per Org.\n; org_dashboard = 100\n\n# limit number of data_sources per Org.\n; org_data_source = 10\n\n# limit number of api_keys per Org.\n; org_api_key = 10\n\n# limit number of orgs a user can create.\n; user_org = 10\n\n# Global limit of users.\n; global_user = -1\n\n# global limit of orgs.\n; global_org = -1\n\n# global limit of dashboards\n; global_dashboard = -1\n\n# global limit of api_keys\n; global_api_key = -1\n\n# global limit on number of logged in users.\n; global_session = -1\n\n#################################### Alerting ############################\n[alerting]\n# Disable alerting engine & UI features\n;enabled = true\n# Makes it possible to turn off alert rule execution but alerting UI is visible\n;execute_alerts = true\n\n# Default setting for new alert rules. Defaults to categorize error and timeouts as alerting. (alerting, keep_state)\n;error_or_timeout = alerting\n\n# Default setting for how Grafana handles nodata or null values in alerting. (alerting, no_data, keep_state, ok)\n;nodata_or_nullvalues = no_data\n\n# Alert notifications can include images, but rendering many images at the same time can overload the server\n# This limit will protect the server from render overloading and make sure notifications are sent out quickly\n;concurrent_render_limit = 5\n\n\n# Default setting for alert calculation timeout. Default value is 30\n;evaluation_timeout_seconds = 30\n\n# Default setting for alert notification timeout. Default value is 30\n;notification_timeout_seconds = 30\n\n# Default setting for max attempts to sending alert notifications. Default value is 3\n;max_attempts = 3\n\n# Makes it possible to enforce a minimal interval between evaluations, to reduce load on the backend\n;min_interval_seconds = 1\n\n# Configures for how long alert annotations are stored. Default is 0, which keeps them forever.\n# This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month).\n;max_annotation_age =\n\n# Configures max number of alert annotations that Grafana stores. Default value is 0, which keeps all alert annotations.\n;max_annotations_to_keep =\n\n#################################### Annotations #########################\n\n[annotations.dashboard]\n# Dashboard annotations means that annotations are associated with the dashboard they are created on.\n\n# Configures how long dashboard annotations are stored. Default is 0, which keeps them forever.\n# This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month).\n;max_age =\n\n# Configures max number of dashboard annotations that Grafana stores. Default value is 0, which keeps all dashboard annotations.\n;max_annotations_to_keep =\n\n[annotations.api]\n# API annotations means that the annotations have been created using the API without any\n# association with a dashboard.\n\n# Configures how long Grafana stores API annotations. Default is 0, which keeps them forever.\n# This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month).\n;max_age =\n\n# Configures max number of API annotations that Grafana keeps. Default value is 0, which keeps all API annotations.\n;max_annotations_to_keep =\n\n#################################### Explore #############################\n[explore]\n# Enable the Explore section\n;enabled = true\n\n#################################### Internal Grafana Metrics ##########################\n# Metrics available at HTTP API Url /metrics\n[metrics]\n# Disable / Enable internal metrics\n;enabled           = true\n# Graphite Publish interval\n;interval_seconds  = 10\n# Disable total stats (stat_totals_*) metrics to be generated\n;disable_total_stats = false\n\n#If both are set, basic auth will be required for the metrics endpoint.\n; basic_auth_username =\n; basic_auth_password =\n\n# Metrics environment info adds dimensions to the `grafana_environment_info` metric, which\n# can expose more information about the Grafana instance.\n[metrics.environment_info]\n#exampleLabel1 = exampleValue1\n#exampleLabel2 = exampleValue2\n\n# Send internal metrics to Graphite\n[metrics.graphite]\n# Enable by setting the address setting (ex localhost:2003)\n;address =\n;prefix = prod.grafana.%(instance_name)s.\n\n#################################### Grafana.com integration  ##########################\n# Url used to import dashboards directly from Grafana.com\n[grafana_com]\n;url = https://grafana.com\n\n#################################### Distributed tracing ############\n[tracing.jaeger]\n# Enable by setting the address sending traces to jaeger (ex localhost:6831)\n;address = localhost:6831\n# Tag that will always be included in when creating new spans. ex (tag1:value1,tag2:value2)\n;always_included_tag = tag1:value1\n# Type specifies the type of the sampler: const, probabilistic, rateLimiting, or remote\n;sampler_type = const\n# jaeger samplerconfig param\n# for \"const\" sampler, 0 or 1 for always false/true respectively\n# for \"probabilistic\" sampler, a probability between 0 and 1\n# for \"rateLimiting\" sampler, the number of spans per second\n# for \"remote\" sampler, param is the same as for \"probabilistic\"\n# and indicates the initial sampling rate before the actual one\n# is received from the mothership\n;sampler_param = 1\n# sampling_server_url is the URL of a sampling manager providing a sampling strategy.\n;sampling_server_url =\n# Whether or not to use Zipkin propagation (x-b3- HTTP headers).\n;zipkin_propagation = false\n# Setting this to true disables shared RPC spans.\n# Not disabling is the most common setting when using Zipkin elsewhere in your infrastructure.\n;disable_shared_zipkin_spans = false\n\n#################################### External image storage ##########################\n[external_image_storage]\n# Used for uploading images to public servers so they can be included in slack/email messages.\n# you can choose between (s3, webdav, gcs, azure_blob, local)\n;provider =\n\n[external_image_storage.s3]\n;endpoint =\n;path_style_access =\n;bucket =\n;region =\n;path =\n;access_key =\n;secret_key =\n\n[external_image_storage.webdav]\n;url =\n;public_url =\n;username =\n;password =\n\n[external_image_storage.gcs]\n;key_file =\n;bucket =\n;path =\n\n[external_image_storage.azure_blob]\n;account_name =\n;account_key =\n;container_name =\n\n[external_image_storage.local]\n# does not require any configuration\n\n[rendering]\n# Options to configure a remote HTTP image rendering service, e.g. using https://github.com/grafana/grafana-image-renderer.\n# URL to a remote HTTP image renderer service, e.g. http://localhost:8081/render, will enable Grafana to render panels and dashboards to PNG-images using HTTP requests to an external service.\n;server_url =\n# If the remote HTTP image renderer service runs on a different server than the Grafana server you may have to configure this to a URL where Grafana is reachable, e.g. http://grafana.domain/.\n;callback_url =\n# Concurrent render request limit affects when the /render HTTP endpoint is used. Rendering many images at the same time can overload the server,\n# which this setting can help protect against by only allowing a certain amount of concurrent requests.\n;concurrent_render_request_limit = 30\n\n[panels]\n# If set to true Grafana will allow script tags in text panels. Not recommended as it enable XSS vulnerabilities.\n;disable_sanitize_html = false\n\n[plugins]\n;enable_alpha = false\n;app_tls_skip_verify_insecure = false\n# Enter a comma-separated list of plugin identifiers to identify plugins that are allowed to be loaded even if they lack a valid signature.\n;allow_loading_unsigned_plugins =\n;marketplace_url = https://grafana.com/grafana/plugins/\n\n#################################### Grafana Image Renderer Plugin ##########################\n[plugin.grafana-image-renderer]\n# Instruct headless browser instance to use a default timezone when not provided by Grafana, e.g. when rendering panel image of alert.\n# See ICU’s metaZones.txt (https://cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt) for a list of supported\n# timezone IDs. Fallbacks to TZ environment variable if not set.\n;rendering_timezone =\n\n# Instruct headless browser instance to use a default language when not provided by Grafana, e.g. when rendering panel image of alert.\n# Please refer to the HTTP header Accept-Language to understand how to format this value, e.g. 'fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5'.\n;rendering_language =\n\n# Instruct headless browser instance to use a default device scale factor when not provided by Grafana, e.g. when rendering panel image of alert.\n# Default is 1. Using a higher value will produce more detailed images (higher DPI), but will require more disk space to store an image.\n;rendering_viewport_device_scale_factor =\n\n# Instruct headless browser instance whether to ignore HTTPS errors during navigation. Per default HTTPS errors are not ignored. Due to\n# the security risk it's not recommended to ignore HTTPS errors.\n;rendering_ignore_https_errors =\n\n# Instruct headless browser instance whether to capture and log verbose information when rendering an image. Default is false and will\n# only capture and log error messages. When enabled, debug messages are captured and logged as well.\n# For the verbose information to be included in the Grafana server log you have to adjust the rendering log level to debug, configure\n# [log].filter = rendering:debug.\n;rendering_verbose_logging =\n\n# Instruct headless browser instance whether to output its debug and error messages into running process of remote rendering service.\n# Default is false. This can be useful to enable (true) when troubleshooting.\n;rendering_dumpio =\n\n# Additional arguments to pass to the headless browser instance. Default is --no-sandbox. The list of Chromium flags can be found\n# here (https://peter.sh/experiments/chromium-command-line-switches/). Multiple arguments is separated with comma-character.\n;rendering_args =\n\n# You can configure the plugin to use a different browser binary instead of the pre-packaged version of Chromium.\n# Please note that this is not recommended, since you may encounter problems if the installed version of Chrome/Chromium is not\n# compatible with the plugin.\n;rendering_chrome_bin =\n\n# Instruct how headless browser instances are created. Default is 'default' and will create a new browser instance on each request.\n# Mode 'clustered' will make sure that only a maximum of browsers/incognito pages can execute concurrently.\n# Mode 'reusable' will have one browser instance and will create a new incognito page on each request.\n;rendering_mode =\n\n# When rendering_mode = clustered you can instruct how many browsers or incognito pages can execute concurrently. Default is 'browser'\n# and will cluster using browser instances.\n# Mode 'context' will cluster using incognito pages.\n;rendering_clustering_mode =\n# When rendering_mode = clustered you can define maximum number of browser instances/incognito pages that can execute concurrently..\n;rendering_clustering_max_concurrency =\n\n# Limit the maximum viewport width, height and device scale factor that can be requested.\n;rendering_viewport_max_width =\n;rendering_viewport_max_height =\n;rendering_viewport_max_device_scale_factor =\n\n# Change the listening host and port of the gRPC server. Default host is 127.0.0.1 and default port is 0 and will automatically assign\n# a port not in use.\n;grpc_host =\n;grpc_port =\n\n[enterprise]\n# Path to a valid Grafana Enterprise license.jwt file\n;license_path =\n\n[feature_toggles]\n# enable features, separated by spaces\n;enable =\n\n[date_formats]\n# For information on what formatting patterns that are supported https://momentjs.com/docs/#/displaying/\n\n# Default system date format used in time range picker and other places where full time is displayed\n;full_date = YYYY-MM-DD HH:mm:ss\n\n# Used by graph and other places where we only show small intervals\n;interval_second = HH:mm:ss\n;interval_minute = HH:mm\ninterval_hour = DD.MM HH:mm\ninterval_day = DD.MM\n;interval_month = YYYY-MM\n;interval_year = YYYY\n\n# Experimental feature\n;use_browser_locale = false\n\n# Default timezone for user preferences. Options are 'browser' for the browser local timezone or a timezone name from IANA Time Zone database, e.g. 'UTC' or 'Europe/Amsterdam' etc.\n;default_timezone = browser\n"
  },
  {
    "path": "docker/grafana/provisioning/datasources/influxDB.yaml",
    "content": "# config file version\napiVersion: 1\n\ndatasources:\n  - name: InfluxDB\n    type: influxdb\n    access: proxy\n    database: telegraf\n    user: telegraf\n    secureJsonData:\n       password: telegraf\n    url: http://localhost:8086\n"
  },
  {
    "path": "docker/influxdb/influxdb.conf",
    "content": "### Welcome to the InfluxDB configuration file.\n\n# The values in this file override the default values used by the system if\n# a config option is not specified. The commented out lines are the configuration\n# field and the default value used. Uncommenting a line and changing the value\n# will change the value used at runtime when the process is restarted.\n\n# Once every 24 hours InfluxDB will report usage data to usage.influxdata.com\n# The data includes a random ID, os, arch, version, the number of series and other\n# usage data. No data from user databases is ever transmitted.\n# Change this option to true to disable reporting.\n# reporting-disabled = false\n\n# Bind address to use for the RPC service for backup and restore.\n# bind-address = \"127.0.0.1:8088\"\n\n###\n### [meta]\n###\n### Controls the parameters for the Raft consensus group that stores metadata\n### about the InfluxDB cluster.\n###\n\n[meta]\n  # Where the metadata/raft database is stored\n  dir = \"/var/lib/influxdb/meta\"\n\n  # Automatically create a default retention policy when creating a database.\n  # retention-autocreate = true\n\n  # If log messages are printed for the meta service\n  # logging-enabled = true\n\n###\n### [data]\n###\n### Controls where the actual shard data for InfluxDB lives and how it is\n### flushed from the WAL. \"dir\" may need to be changed to a suitable place\n### for your system, but the WAL settings are an advanced configuration. The\n### defaults should work for most systems.\n###\n\n[data]\n  # The directory where the TSM storage engine stores TSM files.\n  dir = \"/var/lib/influxdb/data\"\n\n  # The directory where the TSM storage engine stores WAL files.\n  wal-dir = \"/var/lib/influxdb/wal\"\n\n  # The amount of time that a write will wait before fsyncing.  A duration\n  # greater than 0 can be used to batch up multiple fsync calls.  This is useful for slower\n  # disks or when WAL write contention is seen.  A value of 0s fsyncs every write to the WAL.\n  # Values in the range of 0-100ms are recommended for non-SSD disks.\n  # wal-fsync-delay = \"0s\"\n\n\n  # The type of shard index to use for new shards.  The default is an in-memory index that is\n  # recreated at startup.  A value of \"tsi1\" will use a disk based index that supports higher\n  # cardinality datasets.\n  # index-version = \"inmem\"\n\n  # Trace logging provides more verbose output around the tsm engine. Turning\n  # this on can provide more useful output for debugging tsm engine issues.\n  # trace-logging-enabled = false\n\n  # Whether queries should be logged before execution. Very useful for troubleshooting, but will\n  # log any sensitive data contained within a query.\n  # query-log-enabled = true\n\n  # Validates incoming writes to ensure keys only have valid unicode characters.\n  # This setting will incur a small overhead because every key must be checked.\n  # validate-keys = false\n\n  # Settings for the TSM engine\n\n  # CacheMaxMemorySize is the maximum size a shard's cache can\n  # reach before it starts rejecting writes.\n  # Valid size suffixes are k, m, or g (case insensitive, 1024 = 1k).\n  # Values without a size suffix are in bytes.\n  # cache-max-memory-size = \"1g\"\n\n  # CacheSnapshotMemorySize is the size at which the engine will\n  # snapshot the cache and write it to a TSM file, freeing up memory\n  # Valid size suffixes are k, m, or g (case insensitive, 1024 = 1k).\n  # Values without a size suffix are in bytes.\n  # cache-snapshot-memory-size = \"25m\"\n\n  # CacheSnapshotWriteColdDuration is the length of time at\n  # which the engine will snapshot the cache and write it to\n  # a new TSM file if the shard hasn't received writes or deletes\n  # cache-snapshot-write-cold-duration = \"10m\"\n\n  # CompactFullWriteColdDuration is the duration at which the engine\n  # will compact all TSM files in a shard if it hasn't received a\n  # write or delete\n  # compact-full-write-cold-duration = \"4h\"\n\n  # The maximum number of concurrent full and level compactions that can run at one time.  A\n  # value of 0 results in 50% of runtime.GOMAXPROCS(0) used at runtime.  Any number greater\n  # than 0 limits compactions to that value.  This setting does not apply\n  # to cache snapshotting.\n  # max-concurrent-compactions = 0\n\n  # CompactThroughput is the rate limit in bytes per second that we\n  # will allow TSM compactions to write to disk. Note that short bursts are allowed\n  # to happen at a possibly larger value, set by CompactThroughputBurst\n  # compact-throughput = \"48m\"\n\n  # CompactThroughputBurst is the rate limit in bytes per second that we\n  # will allow TSM compactions to write to disk.\n  # compact-throughput-burst = \"48m\"\n\n  # If true, then the mmap advise value MADV_WILLNEED will be provided to the kernel with respect to\n  # TSM files. This setting has been found to be problematic on some kernels, and defaults to off.\n  # It might help users who have slow disks in some cases.\n  # tsm-use-madv-willneed = false\n\n  # Settings for the inmem index\n\n  # The maximum series allowed per database before writes are dropped.  This limit can prevent\n  # high cardinality issues at the database level.  This limit can be disabled by setting it to\n  # 0.\n  # max-series-per-database = 1000000\n\n  # The maximum number of tag values per tag that are allowed before writes are dropped.  This limit\n  # can prevent high cardinality tag values from being written to a measurement.  This limit can be\n  # disabled by setting it to 0.\n  # max-values-per-tag = 100000\n\n  # Settings for the tsi1 index\n\n  # The threshold, in bytes, when an index write-ahead log file will compact\n  # into an index file. Lower sizes will cause log files to be compacted more\n  # quickly and result in lower heap usage at the expense of write throughput.\n  # Higher sizes will be compacted less frequently, store more series in-memory,\n  # and provide higher write throughput.\n  # Valid size suffixes are k, m, or g (case insensitive, 1024 = 1k).\n  # Values without a size suffix are in bytes.\n  # max-index-log-file-size = \"1m\"\n\n  # The size of the internal cache used in the TSI index to store previously \n  # calculated series results. Cached results will be returned quickly from the cache rather\n  # than needing to be recalculated when a subsequent query with a matching tag key/value \n  # predicate is executed. Setting this value to 0 will disable the cache, which may\n  # lead to query performance issues.\n  # This value should only be increased if it is known that the set of regularly used \n  # tag key/value predicates across all measurements for a database is larger than 100. An\n  # increase in cache size may lead to an increase in heap usage.\n  series-id-set-cache-size = 100\n\n###\n### [coordinator]\n###\n### Controls the clustering service configuration.\n###\n\n[coordinator]\n  # The default time a write request will wait until a \"timeout\" error is returned to the caller.\n  # write-timeout = \"10s\"\n\n  # The maximum number of concurrent queries allowed to be executing at one time.  If a query is\n  # executed and exceeds this limit, an error is returned to the caller.  This limit can be disabled\n  # by setting it to 0.\n  # max-concurrent-queries = 0\n\n  # The maximum time a query will is allowed to execute before being killed by the system.  This limit\n  # can help prevent run away queries.  Setting the value to 0 disables the limit.\n  # query-timeout = \"0s\"\n\n  # The time threshold when a query will be logged as a slow query.  This limit can be set to help\n  # discover slow or resource intensive queries.  Setting the value to 0 disables the slow query logging.\n  # log-queries-after = \"0s\"\n\n  # The maximum number of points a SELECT can process.  A value of 0 will make\n  # the maximum point count unlimited.  This will only be checked every second so queries will not\n  # be aborted immediately when hitting the limit.\n  # max-select-point = 0\n\n  # The maximum number of series a SELECT can run.  A value of 0 will make the maximum series\n  # count unlimited.\n  # max-select-series = 0\n\n  # The maximum number of group by time bucket a SELECT can create.  A value of zero will max the maximum\n  # number of buckets unlimited.\n  # max-select-buckets = 0\n\n###\n### [retention]\n###\n### Controls the enforcement of retention policies for evicting old data.\n###\n\n[retention]\n  # Determines whether retention policy enforcement enabled.\n  # enabled = true\n\n  # The interval of time when retention policy enforcement checks run.\n  # check-interval = \"30m\"\n\n###\n### [shard-precreation]\n###\n### Controls the precreation of shards, so they are available before data arrives.\n### Only shards that, after creation, will have both a start- and end-time in the\n### future, will ever be created. Shards are never precreated that would be wholly\n### or partially in the past.\n\n[shard-precreation]\n  # Determines whether shard pre-creation service is enabled.\n  # enabled = true\n\n  # The interval of time when the check to pre-create new shards runs.\n  # check-interval = \"10m\"\n\n  # The default period ahead of the endtime of a shard group that its successor\n  # group is created.\n  # advance-period = \"30m\"\n\n###\n### Controls the system self-monitoring, statistics and diagnostics.\n###\n### The internal database for monitoring data is created automatically if\n### if it does not already exist. The target retention within this database\n### is called 'monitor' and is also created with a retention period of 7 days\n### and a replication factor of 1, if it does not exist. In all cases the\n### this retention policy is configured as the default for the database.\n\n[monitor]\n  # Whether to record statistics internally.\n  # store-enabled = true\n\n  # The destination database for recorded statistics\n  # store-database = \"_internal\"\n\n  # The interval at which to record statistics\n  # store-interval = \"10s\"\n\n###\n### [http]\n###\n### Controls how the HTTP endpoints are configured. These are the primary\n### mechanism for getting data into and out of InfluxDB.\n###\n\n[http]\n  # Determines whether HTTP endpoint is enabled.\n  # enabled = true\n\n  # Determines whether the Flux query endpoint is enabled.\n  # flux-enabled = false\n\n  # Determines whether the Flux query logging is enabled.\n  # flux-log-enabled = false\n\n  # The bind address used by the HTTP service.\n  # bind-address = \":8086\"\n\n  # Determines whether user authentication is enabled over HTTP/HTTPS.\n  # auth-enabled = false\n\n  # The default realm sent back when issuing a basic auth challenge.\n  # realm = \"InfluxDB\"\n\n  # Determines whether HTTP request logging is enabled.\n  # log-enabled = true\n\n  # Determines whether the HTTP write request logs should be suppressed when the log is enabled.\n  # suppress-write-log = false\n\n  # When HTTP request logging is enabled, this option specifies the path where\n  # log entries should be written. If unspecified, the default is to write to stderr, which\n  # intermingles HTTP logs with internal InfluxDB logging.\n  #\n  # If influxd is unable to access the specified path, it will log an error and fall back to writing\n  # the request log to stderr.\n  # access-log-path = \"\"\n\n  # Filters which requests should be logged. Each filter is of the pattern NNN, NNX, or NXX where N is\n  # a number and X is a wildcard for any number. To filter all 5xx responses, use the string 5xx.\n  # If multiple filters are used, then only one has to match. The default is to have no filters which\n  # will cause every request to be printed.\n  # access-log-status-filters = []\n\n  # Determines whether detailed write logging is enabled.\n  # write-tracing = false\n\n  # Determines whether the pprof endpoint is enabled.  This endpoint is used for\n  # troubleshooting and monitoring.\n  # pprof-enabled = true\n\n  # Enables authentication on pprof endpoints. Users will need admin permissions\n  # to access the pprof endpoints when this setting is enabled. This setting has\n  # no effect if either auth-enabled or pprof-enabled are set to false.\n  # pprof-auth-enabled = false\n\n  # Enables a pprof endpoint that binds to localhost:6060 immediately on startup.\n  # This is only needed to debug startup issues.\n  # debug-pprof-enabled = false\n\n  # Enables authentication on the /ping, /metrics, and deprecated /status\n  # endpoints. This setting has no effect if auth-enabled is set to false.\n  # ping-auth-enabled = false\n\n  # Determines whether HTTPS is enabled.\n  # https-enabled = false\n\n  # The SSL certificate to use when HTTPS is enabled.\n  # https-certificate = \"/etc/ssl/influxdb.pem\"\n\n  # Use a separate private key location.\n  # https-private-key = \"\"\n\n  # The JWT auth shared secret to validate requests using JSON web tokens.\n  # shared-secret = \"\"\n\n  # The default chunk size for result sets that should be chunked.\n  # max-row-limit = 0\n\n  # The maximum number of HTTP connections that may be open at once.  New connections that\n  # would exceed this limit are dropped.  Setting this value to 0 disables the limit.\n  # max-connection-limit = 0\n\n  # Enable http service over unix domain socket\n  # unix-socket-enabled = false\n\n  # The path of the unix domain socket.\n  # bind-socket = \"/var/run/influxdb.sock\"\n\n  # The maximum size of a client request body, in bytes. Setting this value to 0 disables the limit.\n  # max-body-size = 25000000\n\n  # The maximum number of writes processed concurrently.\n  # Setting this to 0 disables the limit.\n  # max-concurrent-write-limit = 0\n\n  # The maximum number of writes queued for processing.\n  # Setting this to 0 disables the limit.\n  # max-enqueued-write-limit = 0\n\n  # The maximum duration for a write to wait in the queue to be processed.\n  # Setting this to 0 or setting max-concurrent-write-limit to 0 disables the limit.\n  # enqueued-write-timeout = 0\n\n###\n### [logging]\n###\n### Controls how the logger emits logs to the output.\n###\n\n[logging]\n  # Determines which log encoder to use for logs. Available options\n  # are auto, logfmt, and json. auto will use a more a more user-friendly\n  # output format if the output terminal is a TTY, but the format is not as\n  # easily machine-readable. When the output is a non-TTY, auto will use\n  # logfmt.\n  # format = \"auto\"\n\n  # Determines which level of logs will be emitted. The available levels\n  # are error, warn, info, and debug. Logs that are equal to or above the\n  # specified level will be emitted.\n  # level = \"info\"\n\n  # Suppresses the logo output that is printed when the program is started.\n  # The logo is always suppressed if STDOUT is not a TTY.\n  # suppress-logo = false\n\n###\n### [subscriber]\n###\n### Controls the subscriptions, which can be used to fork a copy of all data\n### received by the InfluxDB host.\n###\n\n[subscriber]\n  # Determines whether the subscriber service is enabled.\n  # enabled = true\n\n  # The default timeout for HTTP writes to subscribers.\n  # http-timeout = \"30s\"\n\n  # Allows insecure HTTPS connections to subscribers.  This is useful when testing with self-\n  # signed certificates.\n  # insecure-skip-verify = false\n\n  # The path to the PEM encoded CA certs file. If the empty string, the default system certs will be used\n  # ca-certs = \"\"\n\n  # The number of writer goroutines processing the write channel.\n  # write-concurrency = 40\n\n  # The number of in-flight writes buffered in the write channel.\n  # write-buffer-size = 1000\n\n\n###\n### [[graphite]]\n###\n### Controls one or many listeners for Graphite data.\n###\n\n[[graphite]]\n  # Determines whether the graphite endpoint is enabled.\n  # enabled = false\n  # database = \"graphite\"\n  # retention-policy = \"\"\n  # bind-address = \":2003\"\n  # protocol = \"tcp\"\n  # consistency-level = \"one\"\n\n  # These next lines control how batching works. You should have this enabled\n  # otherwise you could get dropped metrics or poor performance. Batching\n  # will buffer points in memory if you have many coming in.\n\n  # Flush if this many points get buffered\n  # batch-size = 5000\n\n  # number of batches that may be pending in memory\n  # batch-pending = 10\n\n  # Flush at least this often even if we haven't hit buffer limit\n  # batch-timeout = \"1s\"\n\n  # UDP Read buffer size, 0 means OS default. UDP listener will fail if set above OS max.\n  # udp-read-buffer = 0\n\n  ### This string joins multiple matching 'measurement' values providing more control over the final measurement name.\n  # separator = \".\"\n\n  ### Default tags that will be added to all metrics.  These can be overridden at the template level\n  ### or by tags extracted from metric\n  # tags = [\"region=us-east\", \"zone=1c\"]\n\n  ### Each template line requires a template pattern.  It can have an optional\n  ### filter before the template and separated by spaces.  It can also have optional extra\n  ### tags following the template.  Multiple tags should be separated by commas and no spaces\n  ### similar to the line protocol format.  There can be only one default template.\n  # templates = [\n  #   \"*.app env.service.resource.measurement\",\n  #   # Default template\n  #   \"server.*\",\n  # ]\n\n###\n### [collectd]\n###\n### Controls one or many listeners for collectd data.\n###\n\n[[collectd]]\n  # enabled = false\n  # bind-address = \":25826\"\n  # database = \"collectd\"\n  # retention-policy = \"\"\n  #\n  # The collectd service supports either scanning a directory for multiple types\n  # db files, or specifying a single db file.\n  # typesdb = \"/usr/local/share/collectd\"\n  #\n  # security-level = \"none\"\n  # auth-file = \"/etc/collectd/auth_file\"\n\n  # These next lines control how batching works. You should have this enabled\n  # otherwise you could get dropped metrics or poor performance. Batching\n  # will buffer points in memory if you have many coming in.\n\n  # Flush if this many points get buffered\n  # batch-size = 5000\n\n  # Number of batches that may be pending in memory\n  # batch-pending = 10\n\n  # Flush at least this often even if we haven't hit buffer limit\n  # batch-timeout = \"10s\"\n\n  # UDP Read buffer size, 0 means OS default. UDP listener will fail if set above OS max.\n  # read-buffer = 0\n\n  # Multi-value plugins can be handled two ways.\n  # \"split\" will parse and store the multi-value plugin data into separate measurements\n  # \"join\" will parse and store the multi-value plugin as a single multi-value measurement.\n  # \"split\" is the default behavior for backward compatibility with previous versions of influxdb.\n  # parse-multivalue-plugin = \"split\"\n###\n### [opentsdb]\n###\n### Controls one or many listeners for OpenTSDB data.\n###\n\n[[opentsdb]]\n  # enabled = false\n  # bind-address = \":4242\"\n  # database = \"opentsdb\"\n  # retention-policy = \"\"\n  # consistency-level = \"one\"\n  # tls-enabled = false\n  # certificate= \"/etc/ssl/influxdb.pem\"\n\n  # Log an error for every malformed point.\n  # log-point-errors = true\n\n  # These next lines control how batching works. You should have this enabled\n  # otherwise you could get dropped metrics or poor performance. Only points\n  # metrics received over the telnet protocol undergo batching.\n\n  # Flush if this many points get buffered\n  # batch-size = 1000\n\n  # Number of batches that may be pending in memory\n  # batch-pending = 5\n\n  # Flush at least this often even if we haven't hit buffer limit\n  # batch-timeout = \"1s\"\n\n###\n### [[udp]]\n###\n### Controls the listeners for InfluxDB line protocol data via UDP.\n###\n\n[[udp]]\n  # enabled = false\n  # bind-address = \":8089\"\n  # database = \"udp\"\n  # retention-policy = \"\"\n\n  # InfluxDB precision for timestamps on received points (\"\" or \"n\", \"u\", \"ms\", \"s\", \"m\", \"h\")\n  # precision = \"\"\n\n  # These next lines control how batching works. You should have this enabled\n  # otherwise you could get dropped metrics or poor performance. Batching\n  # will buffer points in memory if you have many coming in.\n\n  # Flush if this many points get buffered\n  # batch-size = 5000\n\n  # Number of batches that may be pending in memory\n  # batch-pending = 10\n\n  # Will flush at least this often even if we haven't hit buffer limit\n  # batch-timeout = \"1s\"\n\n  # UDP Read buffer size, 0 means OS default. UDP listener will fail if set above OS max.\n  # read-buffer = 0\n\n###\n### [continuous_queries]\n###\n### Controls how continuous queries are run within InfluxDB.\n###\n\n[continuous_queries]\n  # Determines whether the continuous query service is enabled.\n  # enabled = true\n\n  # Controls whether queries are logged when executed by the CQ service.\n  # log-enabled = true\n\n  # Controls whether queries are logged to the self-monitoring data store.\n  # query-stats-enabled = false\n\n  # interval for how often continuous queries will be checked if they need to run\n  # run-interval = \"1s\"\n\n###\n### [tls]\n###\n### Global configuration settings for TLS in InfluxDB.\n###\n\n[tls]\n  # Determines the available set of cipher suites. See https://golang.org/pkg/crypto/tls/#pkg-constants\n  # for a list of available ciphers, which depends on the version of Go (use the query\n  # SHOW DIAGNOSTICS to see the version of Go used to build InfluxDB). If not specified, uses\n  # the default settings from Go's crypto/tls package.\n  # ciphers = [\n  #   \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305\",\n  #   \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305\",\n  # ]\n\n  # Minimum version of the tls protocol that will be negotiated. If not specified, uses the\n  # default settings from Go's crypto/tls package.\n  # min-version = \"tls1.2\"\n\n  # Maximum version of the tls protocol that will be negotiated. If not specified, uses the\n  # default settings from Go's crypto/tls package.\n  # max-version = \"tls1.3\"\n"
  },
  {
    "path": "docker/rootfs/grafana-plugins.sh",
    "content": "#!/bin/bash\n\ngrafana_install_plugin_command=\"/usr/sbin/grafana-cli\"\ngrafana_install_plugin_args=(\"--pluginsDir\" \"/var/lib/grafana/plugins\" \"plugins\" \"install\")\ngrafana_plugin_list=(\n  \"grafana-image-renderer\"\n  \"andig-darksky-datasource\"\n)\n\nfor plugin in \"${grafana_plugin_list[@]}\"; do\n  echo Installing \"$plugin\"\n  \"${grafana_install_plugin_command[@]}\" \"${grafana_install_plugin_args[@]}\" \"${plugin}\"\ndone\n\nchmod g+rwX /var/lib/grafana/plugins\n"
  },
  {
    "path": "docker/supervisord/supervisord.conf",
    "content": "[supervisord]\nnodaemon = true\n\n[program:sshd]\npriority = 1\ncommand = /usr/sbin/sshd -D\n\n[program:influxdb]\npriority = 2\ncommand = /usr/bin/influxd -pidfile /var/run/influxdb/influxd.pid -config /etc/influxdb/influxdb.conf\n\n[program:syslog]\npriority = 3\ncommand = bash -c \"sleep 30 && /etc/init.d/syslog-ng start\"\n\n[program:telegraf]\npriority = 4\ncommand = bash -c \"sleep 30 && /etc/init.d/telegraf start\"\n\n[program:grafana]\npriority = 5\ncommand = /etc/init.d/grafana-server start\n\n[program:chronograf]\npriority = 6\ncommand = /usr/bin/chronograf -r\n\n[program:snmpwalk]\npriority = 7\ncommand = snmpwalk -c public -v 2c 172.17.0.1\n\n"
  },
  {
    "path": "docker/synology/SYNOLOGY-DISK-MIB.txt",
    "content": "SYNOLOGY-DISK-MIB DEFINITIONS ::= BEGIN\n\nIMPORTS\n\tOBJECT-GROUP, MODULE-COMPLIANCE\n\t\t\t\tFROM SNMPv2-CONF\n\tenterprises, MODULE-IDENTITY, OBJECT-TYPE, Integer32\n\t\t\t\tFROM SNMPv2-SMI;\n\nsynoDisk MODULE-IDENTITY\n    LAST-UPDATED \"201309110000Z\"\n    ORGANIZATION \"www.synology.com\"\n    CONTACT-INFO\n         \"Synology Inc.\n          Email: snmp@synology.com\"\n    DESCRIPTION\n        \"Characteristics of the disk information\"\n    REVISION     \"201309110000Z\"\n    DESCRIPTION\n        \"Second draft.\"\n    ::= { synology 2 }\n\nsynology\t OBJECT IDENTIFIER \n\t::= { enterprises 6574 }\n\ndiskTable OBJECT-TYPE\n    SYNTAX\t   SEQUENCE OF DiskEntry\n    MAX-ACCESS\t  not-accessible\n    STATUS\t   current\n    DESCRIPTION\n    \"Synology disk table\"\n    ::= { synoDisk 1 }\n\ndiskEntry\t  OBJECT-TYPE\n    SYNTAX\t   DiskEntry\n    MAX-ACCESS\t  not-accessible\n    STATUS\t   current\n    DESCRIPTION\n    \"For all disk entry\"\n    INDEX   { diskIndex }\n    ::= { diskTable 1 }\n\nDiskEntry ::= SEQUENCE {\n    diskIndex\t\tInteger32,\n    diskID\t\t\tOCTET STRING,\n\tdiskModel\t\tOCTET STRING,\n\tdiskType\t\tOCTET STRING,\n\tdiskStatus\t\tInteger32,\n\tdiskTemperature\tInteger32\n}\n\ndiskIndex OBJECT-TYPE\n    SYNTAX\t   Integer32(0..2147483647)\n    MAX-ACCESS\t  read-only\n    STATUS\t   current\n    DESCRIPTION\n    \"The index of disk table\"\n    ::= { diskEntry 1 }\n\ndiskID OBJECT-TYPE\n    SYNTAX\t  OCTET STRING\n    MAX-ACCESS  read-only\n    STATUS\t  current\n    DESCRIPTION\n    \"Synology disk ID\n\t The ID of disk is assigned by disk Station.\n\t\"\n    ::= { diskEntry 2 }\n\ndiskModel OBJECT-TYPE\n    SYNTAX\t  OCTET STRING\n    MAX-ACCESS  read-only\n    STATUS\t  current\n    DESCRIPTION\n    \"Synology disk model name\n\t The disk model name will be showed here.\n\t\"\n    ::= { diskEntry 3 }\n\ndiskType OBJECT-TYPE\n    SYNTAX\t  OCTET STRING\n    MAX-ACCESS  read-only\n    STATUS\t  current\n    DESCRIPTION\n    \"Synology disk type\n\t The type of disk will be showed here, including SATA, SSD and so on.\n\t\"\n    ::= { diskEntry 4 }\n\ndiskStatus OBJECT-TYPE\n    SYNTAX\t  Integer32(1..5)\n    MAX-ACCESS  read-only\n    STATUS\t  current\n    DESCRIPTION\n    \"Synology disk status \n\t Each meanings of status represented describe below.\n\n\t Normal(1): The hard disk functions normally.\n\t Initialized(2): The hard disk has system partition but no data.\n\t NotInitialized(3):\tThe hard disk does not have system in system partition.\t\n\t SystemPartitionFailed(4): The system partitions on the hard disks are damaged.\n\t Crashed(5): The hard disk has damaged.\n\t\"\n    ::= { diskEntry 5 }\n\ndiskTemperature OBJECT-TYPE\n    SYNTAX\t   Integer32\n    MAX-ACCESS\t  read-only\n    STATUS\t   current\n    DESCRIPTION\n    \"Synology disk temperature\n\t The temperature of each disk uses Celsius degree.\n\t\"\n    ::= { diskEntry 6 }\n\ndiskConformance OBJECT IDENTIFIER ::= { synoDisk 2 }\ndiskCompliances OBJECT IDENTIFIER ::= { diskConformance 1 }\ndiskGroups \t\tOBJECT IDENTIFIER ::= { diskConformance 2 }\n\ndiskCompliance MODULE-COMPLIANCE\n    STATUS  current\n    DESCRIPTION\n            \"The compliance statement for synoDisk entities which\n            implement the SYNOLOGY DISK MIB.\"\n    MODULE  -- this module\n        MANDATORY-GROUPS { diskGroup }\n\n    ::= { diskCompliances 1 }\n\ndiskGroup OBJECT-GROUP\n    OBJECTS { diskIndex,\n              diskID,\n              diskModel,\n              diskType,\n              diskStatus,\n              diskTemperature}\n    STATUS  current\n    DESCRIPTION\n            \"A collection of objects providing basic information\n             of an synology disk entity.\"\n    ::= { diskGroups 1 }\n\nEND\n"
  },
  {
    "path": "docker/synology/SYNOLOGY-EBOX-MIB.txt",
    "content": "SYNOLOGY-EBOX-MIB DEFINITIONS ::= BEGIN\n\nIMPORTS\n\tOBJECT-GROUP, MODULE-COMPLIANCE\n\t\tFROM SNMPv2-CONF\n\tOBJECT-TYPE, Integer32, enterprises, MODULE-IDENTITY\n\t\tFROM SNMPv2-SMI;\n\nsynologyEbox MODULE-IDENTITY\n\tLAST-UPDATED\t\"201706260000Z\"\n\tORGANIZATION\t\"www.synology.com\"\n\tCONTACT-INFO\n\t\t \"Synology Inc.\n\t\t  Email: snmp@synology.com\"\n\tDESCRIPTION\t\t\"List ebox info in DS\"\n\tREVISION\t\t\"201706260000Z\"\n\tDESCRIPTION\t\t\"First draft.\"\n\t::= { synology 105 }\n\nsynology OBJECT IDENTIFIER\n\t::= { enterprises 6574 }\n\neboxTable OBJECT-TYPE\n\tSYNTAX\t\tSEQUENCE OF EboxEntry\n\tMAX-ACCESS\tnot-accessible\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"Table of ebox data.\"\n\t::= { synologyEbox 1 }\n\neboxEntry OBJECT-TYPE\n\tSYNTAX\t\tEboxEntry\n\tMAX-ACCESS\tnot-accessible\n\tSTATUS\t\tcurrent\n\tDESCRIPTION \"An entry containing ebox information\"\n\tINDEX\t\t{ eboxIndex }\n\t::= { eboxTable 1 }\n\nEboxEntry ::= SEQUENCE {\n\teboxIndex           Integer32,\n\teboxModel           OCTET STRING,\n\teboxPower\t        Integer32,\n\teboxRedundantPower\tInteger32\n}\n\neboxIndex OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"Ebox info index\"\n\t::= { eboxEntry 1 }\n\neboxModel OBJECT-TYPE\n\tSYNTAX\t\tOCTET STRING\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"Ebox model\"\n\t::= { eboxEntry 2 }\n\neboxPower OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"Ebox Power\"\n\t::= { eboxEntry 3 }\n\neboxRedundantPower OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"Ebox Redundant Power\"\n\t::= { eboxEntry 4 }\n\nsynologyEboxConformance\tOBJECT IDENTIFIER ::= { synologyEbox 2 }\nsynologyEboxCompliances\tOBJECT IDENTIFIER ::= { synologyEboxConformance 1 }\nsynologyEboxGroups OBJECT IDENTIFIER ::= { synologyEboxConformance 2 }\n\nsynologyEboxCompliance MODULE-COMPLIANCE\n\tSTATUS\t\t\t\tcurrent\n\tDESCRIPTION         \"The compliance statement for ebox information.\"\n\tMODULE\t\t\t\t-- this module\n\tMANDATORY-GROUPS\t{ synologyEboxGroup }\n\t::= { synologyEboxCompliances 1 }\n\nsynologyEboxGroup OBJECT-GROUP\n\tOBJECTS {\teboxIndex,\n\t\t\t\teboxModel,\n\t\t\t\teboxPower,\n\t\t\t\teboxRedundantPower }\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\n\t\t\t\t\"A collection of objects providing basic information\n\t\t\t\tof an synology ebox entity.\"\n\t::= { synologyEboxGroups 1 }\n\nEND\n"
  },
  {
    "path": "docker/synology/SYNOLOGY-FLASHCACHE-MIB.txt",
    "content": "SYNOLOGY-FLASHCACHE-MIB DEFINITIONS ::= BEGIN\n\nIMPORTS\n\tDisplayString\n\t\tFROM SNMPv2-TC\n\tOBJECT-GROUP, MODULE-COMPLIANCE\n\t\tFROM SNMPv2-CONF\n\tOBJECT-TYPE, Integer32, Counter64, enterprises, MODULE-IDENTITY\n\t\tFROM SNMPv2-SMI;\n\nflashCache MODULE-IDENTITY\n    LAST-UPDATED \"201407170000Z\"\n    ORGANIZATION \"www.synology.com\"\n    CONTACT-INFO\n         \"Synology Inc.\n          Email: snmp@synology.com\"\n    DESCRIPTION\n        \"Characteristics of the flash cache information\"\n    REVISION     \"201407170000Z\"\n    DESCRIPTION\n        \"First draft.\"\n    ::= { synology 103 }\n\nsynology\tOBJECT IDENTIFIER\n\t::= { enterprises 6574 }\n\nflashCacheTable OBJECT-TYPE\n    SYNTAX      SEQUENCE OF FlashCacheEntry\n    MAX-ACCESS  not-accessible\n    STATUS      current\n    DESCRIPTION\n        \"Table of flash cache devices and how much data they have read/written.\"\n    ::= { flashCache 1 }\n\nflashCacheEntry OBJECT-TYPE\n    SYNTAX      FlashCacheEntry\n    MAX-ACCESS  not-accessible\n    STATUS      current\n    DESCRIPTION\n        \"An entry containing a device and its statistics.\"\n    INDEX       { flashCacheIndex }\n    ::= { flashCacheTable 1 }\n\nFlashCacheEntry ::= SEQUENCE {\n    flashCacheIndex\t\t\tInteger32,\n    flashCacheSSDDev\t\tDisplayString,\n    flashCacheSpaceDev\t\tDisplayString,\n    flashCacheReadHits\t\tCounter64,\n    flashCacheWriteHits\t\tCounter64,\n    flashCacheDiskRead\t\tCounter64,\n    flashCacheDiskWrite\t\tCounter64,\n    flashCacheTotalRead\t\tCounter64,\n    flashCacheTotalWrite\tCounter64,\n    flashCacheReadHitRate\tInteger32,\n    flashCacheWriteHitRate\tInteger32,\n    flashCacheReadSeqSkip\tCounter64,\n    flashCacheWriteSeqSkip\tCounter64,\n    flashCacheWriteMissSsd\tCounter64,\n    flashCacheSsdUuid\t\tDisplayString\n}\n\nflashCacheIndex OBJECT-TYPE\n    SYNTAX      Integer32 (0..65535)\n    MAX-ACCESS  not-accessible\n    STATUS      current\n    DESCRIPTION\n        \"Reference index for each observed device.\"\n    ::= { flashCacheEntry 1 }\n\nflashCacheSSDDev OBJECT-TYPE\n    SYNTAX      DisplayString\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The ssd device on flashcache we are counting/checking.\"\n    ::= { flashCacheEntry 2 }\n\nflashCacheSpaceDev OBJECT-TYPE\n    SYNTAX      DisplayString\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The space device on flashcache we are counting/checking.\"\n    ::= { flashCacheEntry 3 }\n\nflashCacheReadHits OBJECT-TYPE\n    SYNTAX      Counter64\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of reads on flash cache.\"\n    ::= { flashCacheEntry 4 }\n\nflashCacheWriteHits OBJECT-TYPE\n    SYNTAX      Counter64\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of writes on flash cache.\"\n    ::= { flashCacheEntry 5 }\n\nflashCacheDiskRead OBJECT-TYPE\n    SYNTAX      Counter64\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of reads on disk.\"\n    ::= { flashCacheEntry 6 }\n\nflashCacheDiskWrite OBJECT-TYPE\n    SYNTAX      Counter64\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of writes on disk.\"\n    ::= { flashCacheEntry 7 }\n\nflashCacheTotalRead OBJECT-TYPE\n    SYNTAX      Counter64\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of reads on volume with flash cache.\"\n    ::= { flashCacheEntry 8 }\n\nflashCacheTotalWrite OBJECT-TYPE\n    SYNTAX      Counter64\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of writes on volume with flash cache.\"\n    ::= { flashCacheEntry 9 }\n\nflashCacheReadHitRate OBJECT-TYPE\n    SYNTAX      Integer32 (0..100)\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The read hit rate of flash cache (%)\"\n    ::= { flashCacheEntry 10 }\n\nflashCacheWriteHitRate OBJECT-TYPE\n    SYNTAX      Integer32 (0..100)\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The write hit rate of flash cache (%)\"\n    ::= { flashCacheEntry 11 }\n\nflashCacheReadSeqSkip OBJECT-TYPE\n    SYNTAX      Counter64\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of skipped sequential reads on flash cache.\"\n    ::= { flashCacheEntry 12 }\n\nflashCacheWriteSeqSkip OBJECT-TYPE\n    SYNTAX      Counter64\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of skipped sequential writes on flash cache.\"\n    ::= { flashCacheEntry 13 }\n\nflashCacheWriteMissSsd OBJECT-TYPE\n    SYNTAX      Counter64\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of data writes to SSD for the first time.\"\n    ::= { flashCacheEntry 14 }\n\nflashCacheSsdUuid OBJECT-TYPE\n    SYNTAX      DisplayString\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The ssd UUID on flashcache we are counting/checking.\"\n    ::= { flashCacheEntry 15 }\n\nflashCacheConformance OBJECT IDENTIFIER ::= { flashCache 2 }\nflashCacheCompliances OBJECT IDENTIFIER ::= { flashCacheConformance 1 }\nflashCacheGroups \t\t\tOBJECT IDENTIFIER ::= { flashCacheConformance 2 }\n\nflashCacheCompliance MODULE-COMPLIANCE\n    STATUS  current\n    DESCRIPTION\n            \"The compliance statement for flash cache entities which\n            implement the SYNOLOGY FLASHCACHE MIB.\"\n    MODULE  -- this module\n        MANDATORY-GROUPS { flashCacheGroup }\n\n    ::= { flashCacheCompliances 1 }\n\nflashCacheGroup OBJECT-GROUP\n    OBJECTS { flashCacheSSDDev,\n              flashCacheSpaceDev,\n              flashCacheReadHits,\n              flashCacheWriteHits,\n              flashCacheDiskRead,\n              flashCacheDiskWrite,\n              flashCacheTotalRead,\n              flashCacheTotalWrite,\n              flashCacheReadHitRate,\n              flashCacheWriteHitRate,\n              flashCacheReadSeqSkip,\n              flashCacheWriteSeqSkip,\n              flashCacheWriteMissSsd,\n              flashCacheSsdUuid}\n    STATUS  current\n    DESCRIPTION\n            \"A collection of objects providing basic information\n             of an synology flash cache entity.\"\n    ::= { flashCacheGroups 1 }\n\n\nEND\n"
  },
  {
    "path": "docker/synology/SYNOLOGY-GPUINFO-MIB.txt",
    "content": "SYNOLOGY-GPUINFO-MIB DEFINITIONS ::= BEGIN\n\nIMPORTS\n\tDisplayString\n\t\tFROM SNMPv2-TC\n\tOBJECT-GROUP, MODULE-COMPLIANCE\n\t\tFROM SNMPv2-CONF\n\tOBJECT-TYPE, Integer32, Counter64, enterprises, MODULE-IDENTITY\n\t\tFROM SNMPv2-SMI;\n\ngpuInfo MODULE-IDENTITY\n\tLAST-UPDATED \"201812030000Z\"\n\tORGANIZATION \"www.synology.com\"\n\tCONTACT-INFO\n\t\t\"Synology Inc.\n\t\t Email: snmp@synology.com\"\n\tDESCRIPTION\n\t\t\"Characteristics of the gpu information\"\n\tREVISION\t\"201812030000Z\"\n\tDESCRIPTION\n\t\t\"First draft.\"\n\t::= { synology 108 }\n\nsynology\tOBJECT IDENTIFIER\n\t::= { enterprises 6574 }\n\ngpuInfoSupported OBJECT-TYPE\n\tSYNTAX\t  Integer32\n\tMAX-ACCESS  read-only\n\tSTATUS\t  current\n\tDESCRIPTION\n\t\"Synology gpu Supported.\"\n\t::= { gpuInfo 1 }\n\ngpuUtilization OBJECT-TYPE\n\tSYNTAX\t  Integer32\n\tMAX-ACCESS  read-only\n\tSTATUS\t  current\n\tDESCRIPTION\n\t\"Synology gpu utilization %.\"\n\t::= { gpuInfo 2 }\n\ngpuMemoryUtilization OBJECT-TYPE\n\tSYNTAX\t  Integer32\n\tMAX-ACCESS  read-only\n\tSTATUS\t  current\n\tDESCRIPTION\n\t\"Synology gpu memory utilization %.\"\n\t::= { gpuInfo 3 }\n\ngpuMemoryFree OBJECT-TYPE\n\tSYNTAX\t  Integer32\n\tMAX-ACCESS  read-only\n\tSTATUS\t  current\n\tDESCRIPTION\n\t\"Synology gpu free memory in kB.\"\n\t::= { gpuInfo 4 }\n\ngpuMemoryUsed OBJECT-TYPE\n\tSYNTAX\t  Integer32\n\tMAX-ACCESS  read-only\n\tSTATUS\t  current\n\tDESCRIPTION\n\t\"Synology gpu used memory in kB.\"\n\t::= { gpuInfo 5 }\n\ngpuMemoryTotal OBJECT-TYPE\n\tSYNTAX\t  Integer32\n\tMAX-ACCESS  read-only\n\tSTATUS\t  current\n\tDESCRIPTION\n\t\"Synology gpu total memory in kB.\"\n\t::= { gpuInfo 6 }\n\ngpuInfoConformance OBJECT IDENTIFIER ::= { gpuInfo 7 }\ngpuInfoCompliances OBJECT IDENTIFIER ::= { gpuInfoConformance 1 }\ngpuInfoGroups \t\t\tOBJECT IDENTIFIER ::= { gpuInfoConformance 2 }\n\ngpuInfoCompliance MODULE-COMPLIANCE\n\tSTATUS  current\n\tDESCRIPTION\n\t\t\t\"The compliance statement for syno gpuInfo which\n\t\t\timplement the SYNOLOGY GPUINFO MIB.\"\n\tMODULE  -- this module\n\t\tMANDATORY-GROUPS { gpuInfoGroup }\n\n\t::= { gpuInfoCompliances 1 }\n\ngpuInfoGroup OBJECT-GROUP\n\tOBJECTS {\tgpuInfoSupported,\n\t\t\t\tgpuUtilization,\n\t\t\t\tgpuMemoryUtilization,\n\t\t\t\tgpuMemoryFree,\n\t\t\t\tgpuMemoryUsed,\n\t\t\t\tgpuMemoryTotal }\n\tSTATUS  current\n\tDESCRIPTION\n\t\t\t\"A collection of objects providing basic information\n\t\t\t of a synology gpu.\n\t\t\t If platform doesn't support gpu, it will get 0 for every oids.\"\n\t::= { gpuInfoGroups 1 }\n\nEND\n"
  },
  {
    "path": "docker/synology/SYNOLOGY-ISCSILUN-MIB.txt",
    "content": "SYNOLOGY-ISCSILUN-MIB DEFINITIONS ::= BEGIN\n\nIMPORTS\n\tOBJECT-GROUP, MODULE-COMPLIANCE\n\t\tFROM SNMPv2-CONF\n\tOBJECT-TYPE, Integer32, enterprises, MODULE-IDENTITY\n\t\tFROM SNMPv2-SMI;\n\nsynologyiSCSILUN MODULE-IDENTITY\n\tLAST-UPDATED\t\"201605180000Z\"\n\tORGANIZATION\t\"www.synology.com\"\n\tCONTACT-INFO\n\t\t \"Synology Inc.\n\t\t  Email: snmp@synology.com\"\n\tDESCRIPTION\t\t\"Characteristics of the iscsi lun information\"\n\tREVISION\t\t\"201605180000Z\"\n\tDESCRIPTION\t\t\"First draft.\"\n\t::= { synology 104 }\n\nsynology\tOBJECT IDENTIFIER\n\t::= { enterprises 6574 }\n\niSCSILUNTable OBJECT-TYPE\n\tSYNTAX\t\tSEQUENCE OF ISCSILUNEntry\n\tMAX-ACCESS\tnot-accessible\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"Table of iSCSI LUN data.\"\n\t::= { synologyiSCSILUN 1 }\n\niSCSILUNEntry OBJECT-TYPE\n\tSYNTAX\t\tISCSILUNEntry\n\tMAX-ACCESS\tnot-accessible\n\tSTATUS\t\tcurrent\n\tDESCRIPTION \"An entry containing iscsi lun information\"\n\tINDEX\t\t{ iSCSILUNInfoIndex }\n\t::= { iSCSILUNTable 1 }\n\nISCSILUNEntry ::= SEQUENCE {\n\tiSCSILUNInfoIndex\t\tInteger32,\n\tiSCSILUNUUID\tOCTET STRING,\n\tiSCSILUNName\tOCTET STRING,\n\tiSCSILUNThroughputReadHigh\tInteger32,\n\tiSCSILUNThroughputReadLow\tInteger32,\n\tiSCSILUNThroughputWriteHigh\tInteger32,\n\tiSCSILUNThroughputWriteLow\tInteger32,\n\tiSCSILUNIopsRead\tInteger32,\n\tiSCSILUNIopsWrite\tInteger32,\n\tiSCSILUNDiskLatencyRead\tInteger32,\n\tiSCSILUNDiskLatencyWrite\tInteger32,\n\tiSCSILUNNetworkLatencyTx\tInteger32,\n\tiSCSILUNNetworkLatencyRx\tInteger32,\n\tiSCSILUNIoSizeRead\tInteger32,\n\tiSCSILUNIoSizeWrite\tInteger32,\n\tiSCSILUNQueueDepth\tInteger32,\n\tiSCSILUNType\tOCTET STRING\n}\n\niSCSILUNInfoIndex OBJECT-TYPE\n\tSYNTAX\t\tInteger32(0..2147483647)\n\tMAX-ACCESS  not-accessible\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"LUN info index\"\n\t::= { iSCSILUNEntry 1 }\n\niSCSILUNUUID OBJECT-TYPE\n\tSYNTAX\t\tOCTET STRING\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION \"LUN uuid\"\n\t::= { iSCSILUNEntry 2 }\n\niSCSILUNName OBJECT-TYPE\n\tSYNTAX\t\tOCTET STRING\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION \"LUN name\"\n\t::= { iSCSILUNEntry 3 }\n\niSCSILUNThroughputReadHigh OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"LUN read throughput over 32 bits part\"\n\t::= { iSCSILUNEntry 4 }\n\niSCSILUNThroughputReadLow OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"LUN read throughput in unsigned 32 bit\"\n\t::= { iSCSILUNEntry 5 }\n\niSCSILUNThroughputWriteHigh OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"LUN write throughput over 32 bits part\"\n\t::= { iSCSILUNEntry 6 }\n\niSCSILUNThroughputWriteLow OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"LUN write throughput in unsigned 32 bit\"\n\t::= { iSCSILUNEntry 7 }\n\niSCSILUNIopsRead OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"LUN read iops\"\n\t::= { iSCSILUNEntry 8 }\n\niSCSILUNIopsWrite OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"LUN write iops\"\n\t::= { iSCSILUNEntry 9 }\n\niSCSILUNDiskLatencyRead OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"LUN disk latency when reading\"\n\t::= { iSCSILUNEntry 10 }\n\niSCSILUNDiskLatencyWrite OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"LUN disk latency when writing\"\n\t::= { iSCSILUNEntry 11 }\n\niSCSILUNNetworkLatencyTx OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"LUN transfer data network latency\"\n\t::= { iSCSILUNEntry 12 }\n\niSCSILUNNetworkLatencyRx OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"LUN receive data network latency\"\n\t::= { iSCSILUNEntry 13 }\n\niSCSILUNIoSizeRead OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"LUN average io size when reading\"\n\t::= { iSCSILUNEntry 14 }\n\niSCSILUNIoSizeWrite OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"LUN average io size when writing\"\n\t::= { iSCSILUNEntry 15 }\n\niSCSILUNQueueDepth OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"Num of iSCSI commands in LUN queue\"\n\t::= { iSCSILUNEntry 16 }\n\niSCSILUNType OBJECT-TYPE\n\tSYNTAX\t\tOCTET STRING\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION \"LUN type\"\n\t::= { iSCSILUNEntry 17 }\n\nsynologyiSCSILUNConformance\tOBJECT IDENTIFIER ::= { synologyiSCSILUN 2 }\nsynologyiSCSILUNCompliances\tOBJECT IDENTIFIER ::= { synologyiSCSILUNConformance 1 }\nsynologyiSCSILUNGroups\t\t\tOBJECT IDENTIFIER ::= { synologyiSCSILUNConformance 2 }\n\nsynologyiSCSILUNCompliance MODULE-COMPLIANCE\n\tSTATUS\t\t\t\tcurrent\n\tDESCRIPTION\n\t\t\t\t\t\t\"The compliance statement for iSCSI LUN information.\"\n\tMODULE\t\t\t\t-- this module\n\tMANDATORY-GROUPS\t{ synologyiSCSILUNGroup }\n\t::= { synologyiSCSILUNCompliances 1 }\n\nsynologyiSCSILUNGroup OBJECT-GROUP\n\tOBJECTS {\tiSCSILUNUUID,\n\t\t\t\tiSCSILUNName,\n\t\t\t\tiSCSILUNThroughputReadHigh,\n\t\t\t\tiSCSILUNThroughputReadLow,\n\t\t\t\tiSCSILUNThroughputWriteHigh,\n\t\t\t\tiSCSILUNThroughputWriteLow,\n\t\t\t\tiSCSILUNIopsRead,\n\t\t\t\tiSCSILUNIopsWrite,\n\t\t\t\tiSCSILUNDiskLatencyRead,\n\t\t\t\tiSCSILUNDiskLatencyWrite,\n\t\t\t\tiSCSILUNNetworkLatencyTx,\n\t\t\t\tiSCSILUNNetworkLatencyRx,\n\t\t\t\tiSCSILUNIoSizeRead,\n\t\t\t\tiSCSILUNIoSizeWrite,\n\t\t\t\tiSCSILUNQueueDepth,\n\t\t\t\tiSCSILUNType }\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\n\t\t\t\t\"A collection of objects providing basic information\n\t\t\t\tof an synology iSCSI LUN entity.\"\n\t::= { synologyiSCSILUNGroups 1 }\n\nEND\n"
  },
  {
    "path": "docker/synology/SYNOLOGY-PORT-MIB.txt",
    "content": "SYNOLOGY-PORT-MIB DEFINITIONS ::= BEGIN\n\nIMPORTS\n    OBJECT-GROUP, MODULE-COMPLIANCE\n        FROM SNMPv2-CONF\n    enterprises, MODULE-IDENTITY, OBJECT-TYPE, Gauge32, Integer32\n        FROM SNMPv2-SMI;\n\nsynoEthPort MODULE-IDENTITY\n    LAST-UPDATED \"202012200000Z\"\n    ORGANIZATION \"www.synology.com\"\n    CONTACT-INFO\n        \"Synology Inc.\n         Email: snmp@synology.com\"\n    DESCRIPTION\n        \"The MIB module describes Ethernet port status.\"\n    REVISION     \"202012200000Z\"\n    DESCRIPTION\n        \"Initial version.\"\n    ::= { synology 109 }\n\nsynology OBJECT IDENTIFIER ::= { enterprises 6574 }\n\nethPortTable OBJECT-TYPE\n    SYNTAX      SEQUENCE OF EthPortEntry\n    MAX-ACCESS  not-accessible\n    STATUS      current\n    DESCRIPTION\n        \"A list of Ethernet port entries.\"\n    ::= { synoEthPort 1 }\n\nethPortEntry OBJECT-TYPE\n    SYNTAX      EthPortEntry\n    MAX-ACCESS  not-accessible\n    STATUS      current\n    DESCRIPTION\n        \"An entry containing management information of an Ethernet port\"\n    INDEX { ethPortIndex }\n    ::= { ethPortTable 1 }\n\nEthPortEntry ::= SEQUENCE {\n    ethPortIndex  Integer32,\n    ethPortStatus INTEGER,\n    ethPortSpeed  Gauge32\n}\n\nethPortIndex OBJECT-TYPE\n    SYNTAX      Integer32 (1..2147483647)\n    MAX-ACCESS  not-accessible\n    STATUS      current\n    DESCRIPTION\n        \"A unique value for each Ethernet port present on the device.\"\n    ::= { ethPortEntry 1 }\n\nethPortStatus OBJECT-TYPE\n    SYNTAX      INTEGER {\n                    unknown(1),\n                    up(2),\n                    down(3)\n                }\n    MAX-ACCESS  read-only\n    STATUS\t    current\n    DESCRIPTION\n        \"The port status of the Ethernet port.\"\n    ::= { ethPortEntry 2 }\n\nethPortSpeed OBJECT-TYPE\n    SYNTAX      Gauge32\n    MAX-ACCESS  read-only\n    STATUS\t    current\n    DESCRIPTION\n        \"An estimated of the Ethernet port link speed in units of\n        1,000,000 bits per second.\"\n    ::= { ethPortEntry 3 }\n\n--\n-- SNMP conformance statements\n--\nethPortConformance OBJECT IDENTIFIER ::= { synoEthPort 2 }\nethPortCompliances OBJECT IDENTIFIER ::= { ethPortConformance 1 }\nethPortGroups      OBJECT IDENTIFIER ::= { ethPortConformance 2 }\n\nethPortCompliance MODULE-COMPLIANCE\n    STATUS  current\n    DESCRIPTION\n        \"The compliance statement for synoEthPort entities which\n        implement the SYNOLOGY PORT MIB.\"\n    MODULE\n        MANDATORY-GROUPS { ethPortGroup }\n    ::= { ethPortCompliances 1 }\n\nethPortGroup OBJECT-GROUP\n    OBJECTS {\n        ethPortStatus,\n        ethPortSpeed\n    }\n    STATUS  current\n    DESCRIPTION\n        \"The Ethernet port attribute group.\"\n    ::= { ethPortGroups 1 }\n\nEND\n"
  },
  {
    "path": "docker/synology/SYNOLOGY-RAID-MIB.txt",
    "content": "SYNOLOGY-RAID-MIB DEFINITIONS ::= BEGIN\n\nIMPORTS\n\tOBJECT-GROUP, MODULE-COMPLIANCE\n\t\t\t\tFROM SNMPv2-CONF\n\tenterprises, MODULE-IDENTITY, OBJECT-TYPE, Integer32, Counter64\n\t\t\t\tFROM SNMPv2-SMI;\n\nsynoRaid MODULE-IDENTITY\n    LAST-UPDATED \"201309110000Z\"\n    ORGANIZATION \"www.synology.com\"\n    CONTACT-INFO\n         \"Synology Inc.\n          Email: snmp@synology.com\"\n    DESCRIPTION\n        \"Characteristics of the raid information\"\n    REVISION     \"201309110000Z\"\n    DESCRIPTION\n        \"Second draft.\"\n    ::= { synology 3 }\n    \nsynology\t OBJECT IDENTIFIER \n\t::= { enterprises 6574 }\n\nraidTable OBJECT-TYPE\n    SYNTAX\t   SEQUENCE OF RaidEntry\n    MAX-ACCESS\t  not-accessible\n    STATUS\t   current\n    DESCRIPTION\n    \"Synology raid table\"\n    ::= { synoRaid 1 }\n\nraidEntry\t  OBJECT-TYPE\n    SYNTAX\t   RaidEntry\n    MAX-ACCESS\t  not-accessible\n    STATUS\t   current\n    DESCRIPTION\n    \"For all raid entry\"\n    INDEX   { raidIndex }\n    ::= { raidTable 1 }\n\nRaidEntry ::= SEQUENCE {\n    raidIndex\t\tInteger32,\n    raidName\t\tOCTET STRING,\n\traidStatus\t\tInteger32,\n\traidFreeSize\tCounter64,\n\traidTotalSize\tCounter64\n}\n\nraidIndex OBJECT-TYPE\n    SYNTAX\t   Integer32(0..2147483647)\n    MAX-ACCESS\t  read-only\n    STATUS\t   current\n    DESCRIPTION\n    \"The index of raid table\"\n    ::= { raidEntry 1 }\n\nraidName OBJECT-TYPE\n    SYNTAX\t  OCTET STRING\n    MAX-ACCESS  read-only\n    STATUS\t  current\n    DESCRIPTION\n    \"Synology raid name\n\t The name of each raid will be showed here.\n\t\"\n    ::= { raidEntry 2 }\n\nraidStatus OBJECT-TYPE\n    SYNTAX\t  Integer32(1..12)\n    MAX-ACCESS  read-only\n    STATUS\t  current\n    DESCRIPTION\n    \"Synology Raid status\n\t Each meanings of status represented describe below.\n\t Normal(1): The raid functions normally.\n \t Degrade(11): Degrade happens when a tolerable failure of disk(s) occurs.\n \t Crashed(12): Raid has crashed and just uses for read-only operation.\n\n\t Note:\n\t Other status will be showed when creating or deleting raids, including below status, Repairing(2), Migrating(3), Expanding(4), Deleting(5), Creating(6), RaidSyncing(7), RaidParityChecking(8), RaidAssembling(9) and Canceling(10).\n\t\"\n    ::= { raidEntry 3 }\n\nraidFreeSize OBJECT-TYPE\n    SYNTAX      Counter64\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n    \"Synology raid freesize\n\t Free space in bytes.\n\t\"\n    ::= { raidEntry 4 }\n\nraidTotalSize OBJECT-TYPE\n    SYNTAX      Counter64\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n    \"Synology raid totalsize\n\t Total space in bytes.\n\t\"\n    ::= { raidEntry 5 }\n\nraidConformance OBJECT IDENTIFIER ::= { synoRaid 2 }\nraidCompliances OBJECT IDENTIFIER ::= { raidConformance 1 }\nraidGroups \t\t\tOBJECT IDENTIFIER ::= { raidConformance 2 }\n\nraidCompliance MODULE-COMPLIANCE\n    STATUS  current\n    DESCRIPTION\n            \"The compliance statement for synoRaid entities which\n            implement the SYNOLOGY RAID MIB.\"\n    MODULE  -- this module\n        MANDATORY-GROUPS { raidGroup }\n\n    ::= { raidCompliances 1 }\n\nraidGroup OBJECT-GROUP\n    OBJECTS { raidIndex,\n              raidName,\n              raidStatus,\n              raidFreeSize,\n              raidTotalSize}\n    STATUS  current\n    DESCRIPTION\n            \"A collection of objects providing basic instrumentation and\n            control of an synology raid entity.\"\n    ::= { raidGroups 1 }\n\nEND\n"
  },
  {
    "path": "docker/synology/SYNOLOGY-SERVICES-MIB.txt",
    "content": "SYNOLOGY-SERVICES-MIB DEFINITIONS ::= BEGIN\n\nIMPORTS\n\tOBJECT-GROUP, MODULE-COMPLIANCE\n\t\tFROM SNMPv2-CONF\n\tOBJECT-TYPE, Integer32, enterprises, MODULE-IDENTITY\n\t\tFROM SNMPv2-SMI;\n\nsynologyService MODULE-IDENTITY\n\tLAST-UPDATED\t\"201605270000Z\"\n\tORGANIZATION\t\"www.synology.com\"\n\tCONTACT-INFO\n\t\t \"Synology Inc.\n\t\t  Email: snmp@synology.com\"\n\tDESCRIPTION\t\t\"List number of users using each service in DS\"\n\tREVISION\t\t\"201605270000Z\"\n\tDESCRIPTION\t\t\"First draft.\"\n\t::= { synology 6 }\n\nsynology\tOBJECT IDENTIFIER\n\t::= { enterprises 6574 }\n\nserviceTable OBJECT-TYPE\n\tSYNTAX\t\tSEQUENCE OF ServiceEntry\n\tMAX-ACCESS\tnot-accessible\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"Table of Services data.\"\n\t::= { synologyService 1 }\n\nserviceEntry OBJECT-TYPE\n\tSYNTAX\t\tServiceEntry\n\tMAX-ACCESS\tnot-accessible\n\tSTATUS\t\tcurrent\n\tDESCRIPTION \"An entry containing Service information\"\n\tINDEX\t\t{ serviceInfoIndex }\n\t::= { serviceTable 1 }\n\nServiceEntry ::= SEQUENCE {\n\tserviceInfoIndex\tInteger32,\n\tserviceName\tOCTET STRING,\n\tserviceUsers\tInteger32\n}\n\nserviceInfoIndex OBJECT-TYPE\n\tSYNTAX\t\tInteger32(0..2147483647)\n\tMAX-ACCESS\tnot-accessible\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"Service info index\"\n\t::= { serviceEntry 1 }\n\nserviceName OBJECT-TYPE\n\tSYNTAX\t\tOCTET STRING\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"Service name\"\n\t::= { serviceEntry 2 }\n\nserviceUsers OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION \"Number of users using this service\"\n\t::= { serviceEntry 3 }\n\nsynologyServiceConformance\tOBJECT IDENTIFIER ::= { synologyService 2 }\nsynologyServiceCompliances\tOBJECT IDENTIFIER ::= { synologyServiceConformance 1 }\nsynologyServiceGroups\t\t\tOBJECT IDENTIFIER ::= { synologyServiceConformance 2 }\n\nsynologyServiceCompliance MODULE-COMPLIANCE\n\tSTATUS\t\t\t\tcurrent\n\tDESCRIPTION\n\t\t\t\t\t\t\"The compliance statement for service information.\"\n\tMODULE\t\t\t\t-- this module\n\tMANDATORY-GROUPS\t{ synologyServiceGroup }\n\t::= { synologyServiceCompliances 1 }\n\nsynologyServiceGroup OBJECT-GROUP\n\tOBJECTS {\tserviceName,\n\t\t\t\tserviceUsers }\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\n\t\t\t\t\"A collection of objects providing basic information\n\t\t\t\tof an synology service entity.\"\n\t::= { synologyServiceGroups 1 }\n\nEND\n"
  },
  {
    "path": "docker/synology/SYNOLOGY-SHA-MIB.txt",
    "content": "SYNOLOGY-SHA-MIB DEFINITIONS ::= BEGIN\n\nIMPORTS\n    MODULE-COMPLIANCE,\n    OBJECT-GROUP\n        FROM SNMPv2-CONF\n    MODULE-IDENTITY,\n    OBJECT-TYPE,\n    Unsigned32,\n    Integer32,\n    enterprises\n        FROM SNMPv2-SMI\n    TEXTUAL-CONVENTION,\n    TruthValue\n        FROM SNMPv2-TC;\n\nsynologyHA MODULE-IDENTITY\n    LAST-UPDATED \"201807250000Z\"\n    ORGANIZATION \"www.synology.com\"\n    CONTACT-INFO\n        \"Synology Inc.\n         Email: snmp@synology.com\"\n    DESCRIPTION \"Status of Synology High-Availability\"\n    REVISION    \"201807250000Z\"\n    DESCRIPTION \"First revision\"\n    ::= { synology 106 }\n\nsynology    OBJECT IDENTIFIER\n    ::= { enterprises 6574 }\n\nHostName ::= TEXTUAL-CONVENTION\n    DISPLAY-HINT    \"255a\"\n    STATUS          current\n    DESCRIPTION     \"Host name\"\n    SYNTAX          OCTET STRING (SIZE(0..256))\n\nClusterStatusType ::= TEXTUAL-CONVENTION\n    STATUS      current\n    DESCRIPTION\n        \"This TC enumerates cluster status.\"\n    SYNTAX      INTEGER {\n                    normal(0),\n                    warning(1),\n                    critical(2),\n                    upgrading(3),\n                    processing(4)\n                }\n\nHeartbeatStatusType ::= TEXTUAL-CONVENTION\n    STATUS      current\n    DESCRIPTION\n        \"This TC enumerates heartbeat status.\"\n    SYNTAX      INTEGER {\n                    normal(0),\n                    abnormal(1),\n                    disconnected(2),\n                    empty(3)\n                }\n\nactiveNodeName OBJECT-TYPE\n    SYNTAX      HostName\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION \"Hostname of node providing services\"\n    ::= { synologyHA 1 }\n\npassiveNodeName OBJECT-TYPE\n    SYNTAX      HostName\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION \"Hostname of node not providing services\"\n    ::= { synologyHA 2 }\n\nclusterAutoFailover OBJECT-TYPE\n    SYNTAX      TruthValue\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION \"Whether cluster can launch failover\"\n    ::= { synologyHA 3 }\n\nclusterName OBJECT-TYPE\n    SYNTAX      HostName\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION \"Hostname of node providing services\"\n    ::= { synologyHA 4 }\n\nclusterStatus OBJECT-TYPE\n    SYNTAX      ClusterStatusType\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION \"One of critical, upgrading, processing, warning, normal\"\n    ::= { synologyHA 5 }\n\nheartbeatStatus OBJECT-TYPE\n    SYNTAX      HeartbeatStatusType\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION \"One of empty, disconnected, normal, abnormal\"\n    ::= { synologyHA 6 }\n\nheartbeatTxRate OBJECT-TYPE\n    SYNTAX      Unsigned32\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION \"Transfer speed of heartbeat in kilo-byte-per-second\"\n    ::= { synologyHA 7 }\n\nheartbeatLatency OBJECT-TYPE\n    SYNTAX      Unsigned32\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION \"Heartbeat latency in microseconds\"\n    ::= { synologyHA 8 }\n\nsynologyHAConformance   OBJECT IDENTIFIER ::= { synologyHA 9 }\nsynologyHACompliances   OBJECT IDENTIFIER ::= { synologyHAConformance 1 }\nsynologyHAGroups        OBJECT IDENTIFIER ::= { synologyHAConformance 2 }\n\nsynologyHACompliance MODULE-COMPLIANCE\n    STATUS      current\n    DESCRIPTION \"The compliance statement for SHA information.\"\n    MODULE      -- this module\n        MANDATORY-GROUPS { synologyHAGroup }\n    ::= { synologyHACompliances 1 }\n\nsynologyHAGroup OBJECT-GROUP\n    OBJECTS     {\n                    activeNodeName,\n                    passiveNodeName,\n                    clusterAutoFailover,\n                    clusterName,\n                    clusterStatus,\n                    heartbeatStatus,\n                    heartbeatTxRate,\n                    heartbeatLatency\n                }\n    STATUS      current\n    DESCRIPTION \"A collection of objects providing basic information of an synology High-availability cluster.\"\n    ::= { synologyHAGroups 1 }\nEND\n"
  },
  {
    "path": "docker/synology/SYNOLOGY-SMART-MIB.txt",
    "content": "SYNOLOGY-SMART-MIB DEFINITIONS ::= BEGIN\n\nIMPORTS\n\tOBJECT-GROUP, MODULE-COMPLIANCE\n\t\tFROM SNMPv2-CONF\n\tOBJECT-TYPE, Integer32, enterprises, MODULE-IDENTITY\n\t\tFROM SNMPv2-SMI;\n\nsynologyDiskSMART MODULE-IDENTITY\n\tLAST-UPDATED\t\"201605050000Z\"\n\tORGANIZATION\t\"www.synology.com\"\n\tCONTACT-INFO\n\t\t \"Synology Inc.\n\t\t  Email: snmp@synology.com\"\n\tDESCRIPTION\t\t\"Characteristics of the disk SMART information\"\n\tREVISION\t\t\"201605050000Z\"\n\tDESCRIPTION\t\t\"First draft.\"\n\t::= { synology 5 }\n\nsynology\tOBJECT IDENTIFIER\n\t::= { enterprises 6574 }\n\ndiskSMARTTable OBJECT-TYPE\n\tSYNTAX\t\tSEQUENCE OF DiskSMARTEntry\n\tMAX-ACCESS\tnot-accessible\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"Table of disk SMART data.\"\n\t::= { synologyDiskSMART 1 }\n\ndiskSMARTEntry OBJECT-TYPE\n\tSYNTAX\t\tDiskSMARTEntry\n\tMAX-ACCESS\tnot-accessible\n\tSTATUS\t\tcurrent\n\tDESCRIPTION \"An entry containing a disk SMART information\"\n\tINDEX\t\t{ diskSMARTInfoIndex }\n\t::= { diskSMARTTable 1 }\n\nDiskSMARTEntry ::= SEQUENCE {\n\tdiskSMARTInfoIndex\t\tInteger32,\n\tdiskSMARTInfoDevName\tOCTET STRING,\n\tdiskSMARTAttrName\t\tOCTET STRING,\n\tdiskSMARTAttrId\t\t\tInteger32,\n\tdiskSMARTAttrCurrent\tInteger32,\n\tdiskSMARTAttrWorst\t\tInteger32,\n\tdiskSMARTAttrThreshold\tInteger32,\n\tdiskSMARTAttrRaw\t\tInteger32,\n\tdiskSMARTAttrStatus\t\tOCTET STRING\n}\n\ndiskSMARTInfoIndex OBJECT-TYPE\n\tSYNTAX\t\tInteger32(0..2147483647)\n\tMAX-ACCESS  not-accessible\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"SMART info index\"\n\t::= { diskSMARTEntry 1 }\n\ndiskSMARTInfoDevName OBJECT-TYPE\n\tSYNTAX\t\tOCTET STRING\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION \"SMART info device name\"\n\t::= { diskSMARTEntry 2 }\n\ndiskSMARTAttrName OBJECT-TYPE\n\tSYNTAX\t\tOCTET STRING\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION \"SMART attribute name\"\n\t::= { diskSMARTEntry 3 }\n\ndiskSMARTAttrId OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"SMART attribute ID\"\n\t::= { diskSMARTEntry 4 }\n\ndiskSMARTAttrCurrent OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"SMART attribute current value\"\n\t::= { diskSMARTEntry 5 }\n\ndiskSMARTAttrWorst OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"SMART attribute worst value\"\n\t::= { diskSMARTEntry 6 }\n\ndiskSMARTAttrThreshold OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"SMART attribute threshold value\"\n\t::= { diskSMARTEntry 7 }\n\ndiskSMARTAttrRaw OBJECT-TYPE\n\tSYNTAX\t\tInteger32\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"SMART attribute raw value\"\n\t::= { diskSMARTEntry 8 }\n\ndiskSMARTAttrStatus OBJECT-TYPE\n\tSYNTAX\t\tOCTET STRING\n\tMAX-ACCESS\tread-only\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\t\"SMART attribute status\"\n\t::= { diskSMARTEntry 9 }\n\nsynologyDiskSMARTConformance\tOBJECT IDENTIFIER ::= { synologyDiskSMART 2 }\nsynologyDiskSMARTCompliances\tOBJECT IDENTIFIER ::= { synologyDiskSMARTConformance 1 }\nsynologyDiskSMARTGroups\t\t\tOBJECT IDENTIFIER ::= { synologyDiskSMARTConformance 2 }\n\nsynologyDiskSMARTCompliance MODULE-COMPLIANCE\n\tSTATUS\t\t\t\tcurrent\n\tDESCRIPTION\n\t\t\t\t\t\t\"The compliance statement for storage IO entities which\n\t\t\t\t\t\timplement the SYNOLOGY SMART MIB.\"\n\tMODULE\t\t\t\t-- this module\n\tMANDATORY-GROUPS\t{ synologyDiskSMARTGroup }\n\t::= { synologyDiskSMARTCompliances 1 }\n\nsynologyDiskSMARTGroup OBJECT-GROUP\n\tOBJECTS {\tdiskSMARTInfoDevName,\n\t\t\t\tdiskSMARTAttrName,\n\t\t\t\tdiskSMARTAttrId,\n\t\t\t\tdiskSMARTAttrCurrent,\n\t\t\t\tdiskSMARTAttrWorst,\n\t\t\t\tdiskSMARTAttrThreshold,\n\t\t\t\tdiskSMARTAttrRaw,\n\t\t\t\tdiskSMARTAttrStatus }\n\tSTATUS\t\tcurrent\n\tDESCRIPTION\n\t\t\t\t\"A collection of objects providing basic information\n\t\t\t\tof an synology disk SMART entity.\"\n\t::= { synologyDiskSMARTGroups 1 }\n\nEND\n"
  },
  {
    "path": "docker/synology/SYNOLOGY-SPACEIO-MIB.txt",
    "content": "SYNOLOGY-SPACEIO-MIB DEFINITIONS ::= BEGIN\n\nIMPORTS\n\tDisplayString\n       \tFROM SNMPv2-TC\n\tOBJECT-GROUP, MODULE-COMPLIANCE\n\t\tFROM SNMPv2-CONF\n\tOBJECT-TYPE, Integer32, Counter32, Counter64, enterprises, MODULE-IDENTITY\n\t\tFROM SNMPv2-SMI;\n\nspaceIO MODULE-IDENTITY\n    LAST-UPDATED \"201309110000Z\"\n    ORGANIZATION \"www.synology.com\"\n    CONTACT-INFO\n         \"Synology Inc.\n          Email: snmp@synology.com\"\n    DESCRIPTION\n        \"Characteristics of the space io information\"\n    REVISION     \"201309110000Z\"\n    DESCRIPTION\n        \"Second draft.\"\n    ::= { synology 102 }\n\nsynology\tOBJECT IDENTIFIER \n\t::= { enterprises 6574 }\n\nspaceIOTable OBJECT-TYPE\n    SYNTAX      SEQUENCE OF SpaceIOEntry\n    MAX-ACCESS  not-accessible\n    STATUS      current\n    DESCRIPTION\n        \"Table of IO devices and how much data they have read/written.\"\n    ::= { spaceIO 1 }\n\nspaceIOEntry OBJECT-TYPE\n    SYNTAX      SpaceIOEntry\n    MAX-ACCESS  not-accessible\n    STATUS      current\n    DESCRIPTION\n        \"An entry containing a device and its statistics.\"\n    INDEX       { spaceIOIndex }\n    ::= { spaceIOTable 1 }\n\nSpaceIOEntry ::= SEQUENCE {\n    spaceIOIndex         Integer32,\n    spaceIODevice        DisplayString,\n    spaceIONRead         Counter32,\n    spaceIONWritten      Counter32,\n    spaceIOReads         Counter32,\n    spaceIOWrites        Counter32,\n    spaceIOLA            Integer32,\n    spaceIOLA1           Integer32,\n    spaceIOLA5           Integer32,\n    spaceIOLA15          Integer32,\n    spaceIONReadX        Counter64,\n    spaceIONWrittenX     Counter64,\n    spaceUUID            DisplayString\n}\n\nspaceIOIndex OBJECT-TYPE\n    SYNTAX      Integer32 (0..65535)\n    MAX-ACCESS  not-accessible\n    STATUS      current\n    DESCRIPTION\n        \"Reference index for each observed device.\"\n    ::= { spaceIOEntry 1 }\n\nspaceIODevice OBJECT-TYPE\n    SYNTAX      DisplayString\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The name of the device we are counting/checking.\"\n    ::= { spaceIOEntry 2 }\n\nspaceIONRead OBJECT-TYPE\n    SYNTAX      Counter32\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of bytes read from this device since boot.\"\n    ::= { spaceIOEntry 3 }\n\nspaceIONWritten OBJECT-TYPE\n    SYNTAX      Counter32\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of bytes written to this device since boot.\"\n    ::= { spaceIOEntry 4 }\n\nspaceIOReads OBJECT-TYPE\n    SYNTAX      Counter32\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of read accesses from this device since boot.\"\n    ::= { spaceIOEntry 5 }\n\nspaceIOWrites OBJECT-TYPE\n    SYNTAX      Counter32\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of write accesses to this device since boot.\"\n    ::= { spaceIOEntry 6 }\n\nspaceIOLA OBJECT-TYPE\n    SYNTAX      Integer32 (0..100)\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The load of disk (%)\"\n    ::= { spaceIOEntry 8 }\n\nspaceIOLA1 OBJECT-TYPE\n    SYNTAX      Integer32 (0..100)\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The 1 minute average load of disk (%)\"\n    ::= { spaceIOEntry 9 }\n\nspaceIOLA5 OBJECT-TYPE\n    SYNTAX      Integer32 (0..100)\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The 5 minute average load of disk (%)\"\n    ::= { spaceIOEntry 10 }\n\nspaceIOLA15 OBJECT-TYPE\n    SYNTAX      Integer32 (0..100)\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The 15 minute average load of disk (%)\"\n    ::= { spaceIOEntry 11 }\n\nspaceIONReadX OBJECT-TYPE\n    SYNTAX      Counter64\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of bytes read from this device since boot.\"\n    ::= { spaceIOEntry 12 }\n\nspaceIONWrittenX OBJECT-TYPE\n    SYNTAX      Counter64\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of bytes written to this device since boot.\"\n    ::= { spaceIOEntry 13 }\n\nspaceUUID OBJECT-TYPE\n    SYNTAX      DisplayString\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The uuid of space.\"\n    ::= { spaceIOEntry 14 }\n\n\nspaceIOConformance OBJECT IDENTIFIER ::= { spaceIO 2 }\nspaceIOCompliances OBJECT IDENTIFIER ::= { spaceIOConformance 1 }\nspaceIOGroups \t\t\tOBJECT IDENTIFIER ::= { spaceIOConformance 2 }\n\nspaceIOCompliance MODULE-COMPLIANCE\n    STATUS  current\n    DESCRIPTION\n            \"The compliance statement for space IO entities which\n            implement the SYNOLOGY SPACEIO MIB.\"\n    MODULE  -- this module\n        MANDATORY-GROUPS { spaceIOGroup }\n\n    ::= { spaceIOCompliances 1 }\n\nspaceIOGroup OBJECT-GROUP\n    OBJECTS { spaceIODevice,\n              spaceIONRead,\n              spaceIONWritten,\n              spaceIOReads,\n              spaceIOWrites,\n              spaceIOLA,\n              spaceIOLA1,\n              spaceIOLA5,\n              spaceIOLA15,\n              spaceIONReadX,\n              spaceIONWrittenX,\n              spaceUUID}\n    STATUS  current\n    DESCRIPTION\n            \"A collection of objects providing basic information\n             of an synology space io entity.\"\n    ::= { spaceIOGroups 1 }\n\n\nEND\n"
  },
  {
    "path": "docker/synology/SYNOLOGY-STORAGEIO-MIB.txt",
    "content": "SYNOLOGY-STORAGEIO-MIB DEFINITIONS ::= BEGIN\n\nIMPORTS\n\tDisplayString\n       \tFROM SNMPv2-TC\n\tOBJECT-GROUP, MODULE-COMPLIANCE\n\t\tFROM SNMPv2-CONF\n\tOBJECT-TYPE, Integer32, Counter32, Counter64, enterprises, MODULE-IDENTITY\n\t\tFROM SNMPv2-SMI;\n\nstorageIO MODULE-IDENTITY\n    LAST-UPDATED \"201309110000Z\"\n    ORGANIZATION \"www.synology.com\"\n    CONTACT-INFO\n         \"Synology Inc.\n          Email: snmp@synology.com\"\n    DESCRIPTION\n        \"Characteristics of the storage io information\"\n    REVISION     \"201309110000Z\"\n    DESCRIPTION\n        \"Second draft.\"\n    ::= { synology 101 }\t\t\n    \nsynology\t OBJECT IDENTIFIER \n\t::= { enterprises 6574 }\n\nstorageIOTable OBJECT-TYPE\n    SYNTAX      SEQUENCE OF StorageIOEntry\n    MAX-ACCESS  not-accessible\n    STATUS      current\n    DESCRIPTION\n        \"Table of IO devices and how much data they have read/written.\"\n    ::= { storageIO 1 }\n\nstorageIOEntry OBJECT-TYPE\n    SYNTAX      StorageIOEntry\n    MAX-ACCESS  not-accessible\n    STATUS      current\n    DESCRIPTION\n        \"An entry containing a device and its statistics.\"\n    INDEX       { storageIOIndex }\n    ::= { storageIOTable 1 }\n\nStorageIOEntry ::= SEQUENCE {\n    storageIOIndex         Integer32,\n    storageIODevice        DisplayString,\n    storageIONRead         Counter32,\n    storageIONWritten      Counter32,\n    storageIOReads         Counter32,\n    storageIOWrites        Counter32,\n    storageIOLA            Integer32,\n    storageIOLA1           Integer32,\n    storageIOLA5           Integer32,\n    storageIOLA15          Integer32,\n    storageIONReadX        Counter64,\n    storageIONWrittenX     Counter64,\n    storageIODeviceSerial  DisplayString\n}\n\nstorageIOIndex OBJECT-TYPE\n    SYNTAX      Integer32 (0..65535)\n    MAX-ACCESS  not-accessible\n    STATUS      current\n    DESCRIPTION\n        \"Reference index for each observed device.\"\n    ::= { storageIOEntry 1 }\n\nstorageIODevice OBJECT-TYPE\n    SYNTAX      DisplayString\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The name of the device we are counting/checking.\"\n    ::= { storageIOEntry 2 }\n\nstorageIONRead OBJECT-TYPE\n    SYNTAX      Counter32\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of bytes read from this device since boot.\"\n    ::= { storageIOEntry 3 }\n\nstorageIONWritten OBJECT-TYPE\n    SYNTAX      Counter32\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of bytes written to this device since boot.\"\n    ::= { storageIOEntry 4 }\n\nstorageIOReads OBJECT-TYPE\n    SYNTAX      Counter32\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of read accesses from this device since boot.\"\n    ::= { storageIOEntry 5 }\n\nstorageIOWrites OBJECT-TYPE\n    SYNTAX      Counter32\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of write accesses to this device since boot.\"\n    ::= { storageIOEntry 6 }\n\nstorageIOLA OBJECT-TYPE\n    SYNTAX      Integer32 (0..100)\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The load of disk (%)\"\n    ::= { storageIOEntry 8 }\n\nstorageIOLA1 OBJECT-TYPE\n    SYNTAX      Integer32 (0..100)\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The 1 minute average load of disk (%)\"\n    ::= { storageIOEntry 9 }\n\nstorageIOLA5 OBJECT-TYPE\n    SYNTAX      Integer32 (0..100)\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The 5 minute average load of disk (%)\"\n    ::= { storageIOEntry 10 }\n\nstorageIOLA15 OBJECT-TYPE\n    SYNTAX      Integer32 (0..100)\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The 15 minute average load of disk (%)\"\n    ::= { storageIOEntry 11 }\n\nstorageIONReadX OBJECT-TYPE\n    SYNTAX      Counter64\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of bytes read from this device since boot.\"\n    ::= { storageIOEntry 12 }\n\nstorageIONWrittenX OBJECT-TYPE\n    SYNTAX      Counter64\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The number of bytes written to this device since boot.\"\n    ::= { storageIOEntry 13 }\n\nstorageIODeviceSerial OBJECT-TYPE\n    SYNTAX      DisplayString\n    MAX-ACCESS  read-only\n    STATUS      current\n    DESCRIPTION\n        \"The name of the device we are counting/checking.\"\n    ::= { storageIOEntry 14 }\n\nstorageIOConformance OBJECT IDENTIFIER ::= { storageIO 2 }\nstorageIOCompliances OBJECT IDENTIFIER ::= { storageIOConformance 1 }\nstorageIOGroups \t\t\tOBJECT IDENTIFIER ::= { storageIOConformance 2 }\n\nstorageIOCompliance MODULE-COMPLIANCE\n    STATUS  current\n    DESCRIPTION\n            \"The compliance statement for storage IO entities which\n            implement the SYNOLOGY STORAGEIO MIB.\"\n    MODULE  -- this module\n        MANDATORY-GROUPS { storageIOGroup }\n\n    ::= { storageIOCompliances 1 }\n\nstorageIOGroup OBJECT-GROUP\n    OBJECTS { storageIODevice,\n              storageIONRead,\n              storageIONWritten,\n              storageIOReads,\n              storageIOWrites,\n              storageIOLA,\n              storageIOLA1,\n              storageIOLA5,\n              storageIOLA15,\n              storageIONReadX,\n              storageIONWrittenX,\n              storageIODeviceSerial}\n    STATUS  current\n    DESCRIPTION\n            \"A collection of objects providing basic information\n             of an synology storage io entity.\"\n    ::= { storageIOGroups 1 }\n\nEND\n"
  },
  {
    "path": "docker/synology/SYNOLOGY-SYSTEM-MIB.txt",
    "content": "SYNOLOGY-SYSTEM-MIB DEFINITIONS ::= BEGIN\n\nIMPORTS\n\tOBJECT-GROUP, MODULE-COMPLIANCE\n\t\t\t\tFROM SNMPv2-CONF\n\tenterprises, MODULE-IDENTITY, OBJECT-TYPE, Integer32\n\t\t\t\tFROM SNMPv2-SMI;\n\nsynoSystem MODULE-IDENTITY\n    LAST-UPDATED \"201309110000Z\"\n    ORGANIZATION \"www.synology.com\"\n    CONTACT-INFO\n         \"Synology Inc.\n          Email: snmp@synology.com\"\n    DESCRIPTION\n        \"Characteristics of the system information\"\n    REVISION     \"201309110000Z\"\n    DESCRIPTION\n        \"Second draft.\"\n    ::= { synology 1 }\n\nsynology\t OBJECT IDENTIFIER\n\t::= { enterprises 6574 }\n\nsystemStatus OBJECT-TYPE\n    SYNTAX\t  Integer32(1..2)\n    MAX-ACCESS  read-only\n    STATUS\t  current\n    DESCRIPTION\n    \"Synology system status\n\t Each meanings of status represented describe below.\n\t Normal(1): System functionals normally.\n\t Failed(2): Volume has crashed.\n\t\"\n    ::= { synoSystem 1 }\n\ntemperature OBJECT-TYPE\n    SYNTAX\t  Integer32\n    MAX-ACCESS  read-only\n    STATUS\t  current\n    DESCRIPTION\n    \"Synology system temperature\n\t The temperature of Disk Station uses Celsius degree.\n\t\"\n    ::= { synoSystem 2 }\n\npowerStatus OBJECT-TYPE\n    SYNTAX\t  Integer32(1..2)\n    MAX-ACCESS  read-only\n    STATUS\t  current\n    DESCRIPTION\n    \"Synology power status\n\t Each meanings of status represented describe below.\n\t Normal(1): All power supplies functional normally.\n\t Failed(2): One of power supply has failed.\n\t\"\n    ::= { synoSystem 3 }\n\nfan OBJECT IDENTIFIER ::= { synoSystem 4 }\n\nsystemFanStatus OBJECT-TYPE\n    SYNTAX\t  Integer32(1..2)\n    MAX-ACCESS  read-only\n    STATUS\t  current\n    DESCRIPTION\n    \"Synology system fan status\n\t Each meanings of status represented describe below.\n\t Normal(1): All Internal fans functional normally.\n\t Failed(2): One of internal fan stopped.\n\t\"\n    ::= { fan 1 }\n\n\ncpuFanStatus OBJECT-TYPE\n    SYNTAX\t  Integer32(1..2)\n    MAX-ACCESS  read-only\n    STATUS\t  current\n    DESCRIPTION\n    \"Synology cpu fan status\n\t Each meanings of status represented describe below.\n\t Normal(1): All CPU fans functional normally.\n\t Failed(2): One of CPU fan stopped.\n\t\"\n    ::= { fan 2 }\n\ndsmInfo OBJECT IDENTIFIER ::= { synoSystem 5 }\n\nmodelName OBJECT-TYPE\n    SYNTAX\t  OCTET STRING\n    MAX-ACCESS  read-only\n    STATUS\t  current\n    DESCRIPTION\n    \"The Model name of this NAS\"\n    ::= { dsmInfo 1 }\n\nserialNumber OBJECT-TYPE\n    SYNTAX\t  OCTET STRING\n    MAX-ACCESS  read-only\n    STATUS\t  current\n    DESCRIPTION\n    \"The serial number of this NAS\"\n    ::= { dsmInfo 2 }\n\nversion OBJECT-TYPE\n    SYNTAX\t  OCTET STRING\n    MAX-ACCESS  read-only\n    STATUS\t  current\n    DESCRIPTION\n    \"The version of this DSM\"\n    ::= { dsmInfo 3 }\n\nupgradeAvailable OBJECT-TYPE\n    SYNTAX    Integer32(1..5)\n    MAX-ACCESS  read-only\n    STATUS\t  current\n    DESCRIPTION\n    \"This oid is for checking whether there is a latest DSM can be upgraded.\n\t Available(1): There is version ready for download.\n\t Unavailable(2): The DSM is latest version.\n\t Connecting(3): Checking for the latest DSM.\n\t Disconnected(4): Failed to connect to server.\n\t Others(5): If DSM is upgrading or downloading, the status will show others.\"\n    ::= { dsmInfo 4 }\n\ncontrollerNumber OBJECT-TYPE\n    SYNTAX    Integer32\n    MAX-ACCESS  read-only\n    STATUS    current\n    DESCRIPTION\n    \"Synology system controller number\n    Controller A(0)\n    Controller B(1)\n   \"\n    ::= { synoSystem 6 }\n\n\nsystemConformance OBJECT IDENTIFIER ::= { synoSystem 7 }\nsystemCompliances OBJECT IDENTIFIER ::= { systemConformance 1 }\nsystemGroups \t\t\tOBJECT IDENTIFIER ::= { systemConformance 2 }\n\nsystemCompliance MODULE-COMPLIANCE\n    STATUS  current\n    DESCRIPTION\n            \"The compliance statement for synoSystem entities which\n            implement the SYNOLOGY SYSTEM MIB.\"\n    MODULE  -- this module\n        MANDATORY-GROUPS { systemGroup }\n\n    ::= { systemCompliances 1 }\n\nsystemGroup OBJECT-GROUP\n    OBJECTS { systemStatus,\n              temperature,\n              powerStatus,\n              systemFanStatus,\n              cpuFanStatus,\n\t\t\t  modelName,\n\t\t\t  serialNumber,\n\t\t\t  version,\n\t\t\t  upgradeAvailable,\n\t\t\t  controllerNumber}\n    STATUS  current\n    DESCRIPTION\n            \"A collection of objects providing basic information\n             of an synology system entity.\"\n    ::= { systemGroups 1 }\n\nEND\n"
  },
  {
    "path": "docker/synology/SYNOLOGY-UPS-MIB.txt",
    "content": "SYNOLOGY-UPS-MIB DEFINITIONS ::= BEGIN\n\nIMPORTS\n    MODULE-IDENTITY, OBJECT-TYPE, Integer32, enterprises\n        FROM SNMPv2-SMI\n    DisplayString, TEXTUAL-CONVENTION\n        FROM SNMPv2-TC\n\tFloat \n\t\tFROM NET-SNMP-TC\n    MODULE-COMPLIANCE, OBJECT-GROUP\n        FROM SNMPv2-CONF;\n\nsynoUPS MODULE-IDENTITY\n    LAST-UPDATED \"201309110000Z\"\n    ORGANIZATION \"www.synology.com\"\n    CONTACT-INFO\n         \"Synology Inc.\n          Email: snmp@synology.com\"\n    DESCRIPTION\n        \"Characteristics of the ups information\"\n    REVISION     \"201309110000Z\"\n    DESCRIPTION\n        \"Second draft.\"\n    ::= { synology 4 }\t\t\n\nsynology\t OBJECT IDENTIFIER \n\t::= { enterprises 6574 }\n\nNonNegativeInteger ::= TEXTUAL-CONVENTION\n    DISPLAY-HINT \"d\"\n    STATUS       current\n    DESCRIPTION\n            \"This data type is a non-negative value.\"\n    SYNTAX       Integer32 (0..2147483647)\n\n--\n-- The Device Identification group.\n--      All objects in this group except for upsIdentName and\n--      upsIdentAttachedDevices are set at device initialization\n--      and remain static.\n--\n\n--\n-- Device Group\n--\n\nupsDevice              OBJECT IDENTIFIER ::= { synoUPS 1 }\n\nupsDeviceModel OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Device model\"\n    ::= { upsDevice 1 }\n\nupsDeviceManufacturer OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Device manufacturer\"\n    ::= { upsDevice 2 }\n\nupsDeviceSerial OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Device serial number.\"\n    ::= { upsDevice 3 }\n\nupsDeviceType OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Device type (ups, pdu, scd, psu)\"\n    ::= { upsDevice 4 }\n\nupsDeviceDescription OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Device description.\"\n    ::= { upsDevice 5 }\n\nupsDeviceContact OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Device administrator name.\"\n    ::= { upsDevice 6 }\n\nupsDeviceLocation OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Device physical location.\"\n    ::= { upsDevice 7 }\n\nupsDevicePart OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Device part number.\"\n    ::= { upsDevice 8 }\n\nupsDeviceMACAddr OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Physical network address of the device.\"\n    ::= { upsDevice 9 }\n\n--\n-- UPS Group\n--\n\nupsInfo              OBJECT IDENTIFIER ::= { synoUPS 2 }\n\nupsInfoStatus OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"UPS status.\"\n    ::= { upsInfo 1 }\n\nupsInfoAlarm OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"UPS alarms\"\n    ::= { upsInfo 2 }\n\nupsInfoTime OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Internal UPS clock time\"\n    ::= { upsInfo 3 }\n\nupsInfoDate OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Internal UPS clock date\"\n    ::= { upsInfo 4 }\n\nupsInfoModel OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"UPS model\"\n    ::= { upsInfo 5 }\n\nupsInfoMfr              OBJECT IDENTIFIER ::= { upsInfo 6 }\n\nupsInfoMfrName OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"UPS manufacturer\"\n    ::= { upsInfoMfr 1 }\n\nupsInfoMfrDate OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"UPS manufacturing date\"\n    ::= { upsInfoMfr 2 }\n\nupsInfoSerial OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"UPS serial number\"\n    ::= { upsInfo 7 }\n\nupsInfoVendorID OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Vendor ID for USB devices\"\n    ::= { upsInfo 8 }\n\nupsInfoProductID OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Product ID for USB devices\"\n    ::= { upsInfo 9 }\n\nupsInfoFirmware              OBJECT IDENTIFIER ::= { upsInfo 10 }\n\nupsInfoFirmwareName OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"UPS firmware\"\n    ::= { upsInfoFirmware 1 }\n\nupsInfoFirmwareAux OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Auxiliary device firmware\"\n    ::= { upsInfoFirmware 2 }\n\nupsInfoTemperature OBJECT-TYPE\n    SYNTAX     Float\n\tUNITS      \"degree C\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"UPS temperature (degrees C)\"\n    ::= { upsInfo 11 }\n\nupsInfoLoad              OBJECT IDENTIFIER ::= { upsInfo 12 }\n\nupsInfoLoadValue OBJECT-TYPE\n    SYNTAX     Float\n\tUNITS      \"percentage\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Load on UPS (percent)\"\n    ::= { upsInfoLoad 1 }\n\nupsInfoLoadHigh OBJECT-TYPE\n    SYNTAX     Float\n\tUNITS      \"percentage\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Load when UPS switches to overload condition (OVER) (percent)\"\n    ::= { upsInfoLoad 2 }\n\nupsInfoID OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"UPS system identifier\"\n    ::= { upsInfo 13 }\n\nupsInfoDelay              OBJECT IDENTIFIER ::= { upsInfo 14 }\n\nupsInfoDelayStart OBJECT-TYPE\n    SYNTAX     NonNegativeInteger\n\tUNITS      \"seconds\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Interval to wait before restarting the load (seconds)\"\n    ::= { upsInfoDelay 1 }\n\nupsInfoDelayReboot OBJECT-TYPE\n    SYNTAX     NonNegativeInteger\n\tUNITS      \"seconds\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Interval to wait before rebooting the UPS (seconds)\"\n    ::= { upsInfoDelay 2 }\n\nupsInfoDelayShutdown OBJECT-TYPE\n    SYNTAX     NonNegativeInteger\n\tUNITS      \"seconds\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Interval to wait after shutdown with delay command (seconds)\"\n    ::= { upsInfoDelay 3 }\n\nupsInfoTimer              OBJECT IDENTIFIER ::= { upsInfo 15 }\n\nupsInfoTimerStart OBJECT-TYPE\n    SYNTAX     NonNegativeInteger\n\tUNITS      \"seconds\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Time before the load will be started (seconds)\"\n    ::= { upsInfoTimer 1 }\n\nupsInfoTimerReboot OBJECT-TYPE\n    SYNTAX     NonNegativeInteger\n\tUNITS      \"seconds\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Time before the load will be rebooted (seconds)\"\n    ::= { upsInfoTimer 2 }\n\nupsInfoTimerShutdown OBJECT-TYPE\n    SYNTAX     NonNegativeInteger\n\tUNITS      \"seconds\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Time before the load will be shutdown (seconds)\"\n    ::= { upsInfoTimer 3 }\n\nupsInfoTest              OBJECT IDENTIFIER ::= { upsInfo 16 }\n\nupsInfoTestInterval OBJECT-TYPE\n    SYNTAX     NonNegativeInteger\n\tUNITS      \"seconds\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Interval between self tests\"\n    ::= { upsInfoTest 1 }\n\nupsInfoTestResult OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Results of last self test\"\n    ::= { upsInfoTest 2 }\n\nupsInfoDisplayLanguage OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Language to use on front panel\"\n    ::= { upsInfo 17 }\n\nupsInfoContacts OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"UPS external contact sensors\"\n    ::= { upsInfo 18 }\n\nupsInfoEffciency OBJECT-TYPE\n    SYNTAX     NonNegativeInteger\n\tUNITS      \"percent\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Efficiency of the UPS (ratio of the output current on the input current) (percent)\"\n    ::= { upsInfo 19 }\n\nupsInfoPower              OBJECT IDENTIFIER ::= { upsInfo 20 }\n\nupsInfoPowerValue OBJECT-TYPE\n    SYNTAX     Float\n\tUNITS      \"Volt-Amps\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Current value of apparent power (Volt-Amps)\"\n    ::= { upsInfoPower 1 }\n\nupsInfoPowerNominal OBJECT-TYPE\n    SYNTAX     Float\n\tUNITS      \"Volt-Amps\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Nominal value of apparent power (Volt-Amps)\"\n    ::= { upsInfoPower 2 }\n\nupsInfoRealPower              OBJECT IDENTIFIER ::= { upsInfo 21 }\n\nupsInfoRealPowerValue OBJECT-TYPE\n    SYNTAX     Float\n\tUNITS      \"Watts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Current value of real power (Watts)\"\n    ::= { upsInfoRealPower 1 }\n\nupsInfoRealPowerNominal OBJECT-TYPE\n    SYNTAX     Float\n\tUNITS      \"Watts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Nominal value of real power (Watts)\"\n    ::= { upsInfoRealPower 2 }\n\nupsInfoBeeperStatus OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"UPS beeper status (enabled, disabled or muted)\"\n    ::= { upsInfo 22 }\n\nupsInfoType OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"UPS type\"\n    ::= { upsInfo 23 }\n\nupsInfoWatchdogStatus OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"UPS watchdog status (enabled or disabled)\"\n    ::= { upsInfo 24 }\n\nupsInfoStart              OBJECT IDENTIFIER ::= { upsInfo 25 }\n\nupsInfoStartAuto OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"UPS starts when mains is (re)applied\"\n    ::= { upsInfoStart 1 }\n\nupsInfoStartBattery OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Allow to start UPS from battery\"\n    ::= { upsInfoStart 2 }\n\nupsInfoStartReboot OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE (0..31))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"UPS coldstarts from battery (enabled or disabled)\"\n    ::= { upsInfoStart 3 }\n\n\n--\n-- Battery Group\n--\n\nupsBattery            OBJECT IDENTIFIER ::= { synoUPS 3 }\n\nupsBatteryCharge            OBJECT IDENTIFIER ::= { upsBattery 1 }\n\nupsBatteryChargeValue OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Percent\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Battery charge\"\n    ::= { upsBatteryCharge 1 }\n\nupsBatteryChargeLow OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Percent\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Remaining battery level when UPS switches to LB (percent)\"\n    ::= { upsBatteryCharge 2 }\n\nupsBatteryChargeRestart OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Percent\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Minimum battery level for UPS restart after power-off\"\n    ::= { upsBatteryCharge 3 }\n\nupsBatteryChargeWarning OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Percent\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Battery level when UPS switches to Warning state (percent)\"\n    ::= { upsBatteryCharge 4 }\n\nupsBatteryVoltage            OBJECT IDENTIFIER ::= { upsBattery 2 }\n\nupsBatteryVoltageValue OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volt DC\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"The magnitude of the present battery voltage.\"\n    ::= { upsBatteryVoltage 1 }\n\nupsBatteryVoltageNominal OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volt DC\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Nominal battery voltage.\"\n    ::= { upsBatteryVoltage 2 }\n\nupsBatteryVoltageLow OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volt DC\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Minimum battery voltage, that triggers FSD status .\"\n    ::= { upsBatteryVoltage 3 }\n\nupsBatteryVoltageHigh OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volt DC\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Maximum battery voltage (Ie battery.charge = 100).\"\n    ::= { upsBatteryVoltage 4 }\n\nupsBatteryCapacity OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"A\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Battery capacity (Ah)\"\n    ::= { upsBattery 3 }\n\nupsBatteryCurrent OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Amp DC\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"The present battery current.\"\n    ::= { upsBattery 4 }\n\nupsBatteryTemperature OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"degrees Centigrade\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"The ambient temperature at or near the UPS Battery\n            casing.\"\n    ::= { upsBattery 5 }\n\nupsBatteryRuntime            OBJECT IDENTIFIER ::= { upsBattery 6 }\n\nupsBatteryRuntimeValue OBJECT-TYPE\n    SYNTAX     NonNegativeInteger\n    UNITS      \"Seconds\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Battery runtime (seconds)\"\n    ::= { upsBatteryRuntime 1 }\n\nupsBatteryRuntimeLow OBJECT-TYPE\n    SYNTAX     NonNegativeInteger\n    UNITS      \"Seconds\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Remaining battery runtime when UPS switches to LB (seconds)\"\n    ::= { upsBatteryRuntime 2 }\n\nupsBatteryRuntimeRestart OBJECT-TYPE\n    SYNTAX     NonNegativeInteger\n    UNITS      \"Seconds\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Minimum battery runtime for UPS restart after power-off (seconds)\"\n    ::= { upsBatteryRuntime 3 }\n\nupsBatteryAlarmThreshold OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Battery alarm threshold\"\n    ::= { upsBattery 7 }\n\nupsBatteryDate OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Battery change date\"\n    ::= { upsBattery 8 }\n\nupsBatteryMfrDate OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Battery manufacturing date\"\n    ::= { upsBattery 9 }\n\nupsBatteryPacks OBJECT-TYPE\n    SYNTAX     NonNegativeInteger\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Number of battery packs\"\n    ::= { upsBattery 10 }\n\nupsBatteryPacksBad OBJECT-TYPE\n    SYNTAX     NonNegativeInteger\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Number of bad battery packs\"\n    ::= { upsBattery 11 }\n\nupsBatteryType OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Battery chemistry\"\n    ::= { upsBattery 12 }\n\nupsBatteryProtection OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Prevent deep discharge of battery\"\n    ::= { upsBattery 13 }\n\nupsBatteryEnergySave OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Switch off when running on battery and no/low load\"\n    ::= { upsBattery 14 }\n\n--\n-- Input Group\n--\n\nupsInput              OBJECT IDENTIFIER ::= { synoUPS 4 }\n\nupsInputVoltage  OBJECT IDENTIFIER ::= { upsInput 1 }\n\nupsInputVoltageValue OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Input voltage\"\n    ::= { upsInputVoltage 1 }\n\nupsInputVoltageMax OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Maximum incoming voltage seen\"\n    ::= { upsInputVoltage 2 }\n\nupsInputVoltageMin OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Minimum incoming voltage seen\"\n    ::= { upsInputVoltage 3 }\n\nupsInputVoltageNominal OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Nominal input voltage\"\n    ::= { upsInputVoltage 4 }\n\nupsInputVoltageExtend OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Extended input voltage range\"\n    ::= { upsInputVoltage 5 }\n\nupsInputVoltageFault OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Input voltage Fault\"\n    ::= { upsInputVoltage 6 }\n\n\nupsInputTransfer  OBJECT IDENTIFIER ::= { upsInput 2 }\n\nupsInputTransferReason OBJECT-TYPE\n\tSYNTAX     DisplayString (SIZE(0..63))\n\tMAX-ACCESS read-only\n\tSTATUS     current\n\tDESCRIPTION\n\t\"Reason for last transfer to battery\"\n\t::= { upsInputTransfer 1 }\n\nupsInputTransferLow OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Low voltage transfer point\"\n    ::= { upsInputTransfer 2 }\n\nupsInputTransferHigh OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"High voltage transfer point\"\n    ::= { upsInputTransfer 3 }\n\nupsInputTransferLowMin OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"smallest settable low voltage transfer point\"\n    ::= { upsInputTransfer 4 }\n\nupsInputTransferLowMax OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"greatest settable low voltage transfer point\"\n    ::= { upsInputTransfer 5 }\n\nupsInputTransferHighMin OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"smallest settable high voltage transfer point\"\n    ::= { upsInputTransfer 6 }\n\nupsInputTransferHighMax OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"greatest settable high voltage transfer point\"\n    ::= { upsInputTransfer 7 }\n\nupsInputTransferBoostLow OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Low voltage boosting transfer point\"\n    ::= { upsInputTransfer 8 }\n\nupsInputTransferBoostHigh OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"High voltage boosting transfer point\"\n    ::= { upsInputTransfer 9 }\n\nupsInputTransferTrimLow OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Low voltage trimming transfer point\"\n    ::= { upsInputTransfer 10 }\n\nupsInputTransferTrimHigh OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"High voltage trimming transfer point\"\n    ::= { upsInputTransfer 11 }\n\nupsInputSensitivity OBJECT-TYPE\n\tSYNTAX     DisplayString (SIZE(0..63))\n\tMAX-ACCESS read-only\n\tSTATUS     current\n\tDESCRIPTION\n\t\"Input power sensitivity\"\n\t::= { upsInput 3 }\n\nupsInputQuality OBJECT-TYPE\n\tSYNTAX     DisplayString (SIZE(0..63))\n\tMAX-ACCESS read-only\n\tSTATUS     current\n\tDESCRIPTION\n\t\"Input power quality\"\n\t::= { upsInput 4 }\n\nupsInputCurrent  OBJECT IDENTIFIER ::= { upsInput 5 }\n\nupsInputCurrentValue OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Amp\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Input current (A)\"\n    ::= { upsInputCurrent 1 }\n\nupsInputCurrentNominal OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Amp\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Nominal input current (A)\"\n    ::= { upsInputCurrent 2 }\n\nupsInputFrequency  OBJECT IDENTIFIER ::= { upsInput 6 }\n\nupsInputFrequencyValue OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Hz\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Input line frequency (Hz)\"\n    ::= { upsInputFrequency 1 }\n\nupsInputFrequencyNominal OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Hz\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Nominal input line frequency (Hz)\"\n    ::= { upsInputFrequency 2 }\n\nupsInputFrequencyLow OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Hz\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Input line frequency low (Hz)\"\n    ::= { upsInputFrequency 3 }\n\nupsInputFrequencyHigh OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Hz\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Input line frequency high (Hz)\"\n    ::= { upsInputFrequency 4 }\n\nupsInputFrequencyExtend OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Extended input frequency range\"\n    ::= { upsInputFrequency 5 }\n\n--\n-- The Output group.\n--\n\nupsOutput             OBJECT IDENTIFIER ::= { synoUPS 5 }\n\nupsOutputVoltage  OBJECT IDENTIFIER ::= { upsOutput 1 }\n\nupsOutputVoltageValue OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Output voltage (V)\"\n    ::= { upsOutputVoltage 1 }\n\nupsOutputVoltageNominal OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Volts\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Nominal output voltage (V)\"\n    ::= { upsOutputVoltage 2 }\n\nupsOutputFrequency  OBJECT IDENTIFIER ::= { upsOutput 2 }\n\nupsOutputFrequencyValue OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Hz\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Output frequency (Hz)\"\n    ::= { upsOutputFrequency 1 }\n\nupsOutputFrequencyNominal OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Hz\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Nominal output frequency (Hz)\"\n    ::= { upsOutputFrequency 2 }\n\nupsOutputCurrent  OBJECT IDENTIFIER ::= { upsOutput 3 }\n\nupsOutputCurrentValue OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Amp\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Output current (A)\"\n    ::= { upsOutputCurrent 1 }\n\nupsOutputCurrentNominal OBJECT-TYPE\n    SYNTAX     Float\n    UNITS      \"Amp\"\n    MAX-ACCESS read-only\n    STATUS     current\n    DESCRIPTION\n            \"Nominal output current (A)\"\n    ::= { upsOutputCurrent 2 }\n\n--\n-- The ambient group.\n--\n\nupsAmbient             OBJECT IDENTIFIER ::= { synoUPS 6 }\n\nupsAmbientTemperature  OBJECT IDENTIFIER ::= { upsAmbient 1 }\n\nupsAmbientTemperatureValue OBJECT-TYPE\n    SYNTAX     Float\n \tUNITS      \"degrees Centigrade\"\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Ambient temperature (degrees C)\"\n\t::= { upsAmbientTemperature 1 }\n\nupsAmbientTemperatureAlarm OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n \tUNITS      \"enabled/disabled\"\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Temperature alarm (enabled/disabled)\"\n\t::= { upsAmbientTemperature 2 }\n\nupsAmbientTemperatureHigh OBJECT-TYPE\n    SYNTAX     Float\n \tUNITS      \"degrees Centigrade\"\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Temperature threshold high (degrees C)\"\n\t::= { upsAmbientTemperature 3 }\n\nupsAmbientTemperatureLow OBJECT-TYPE\n    SYNTAX     Float\n \tUNITS      \"degrees Centigrade\"\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Temperature threshold low (degrees C)\"\n\t::= { upsAmbientTemperature 4 }\n\nupsAmbientTemperatureMax OBJECT-TYPE\n    SYNTAX     Float\n \tUNITS      \"degrees Centigrade\"\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Maximum temperature seen (degrees C)\"\n\t::= { upsAmbientTemperature 5 }\n\nupsAmbientTemperatureMin OBJECT-TYPE\n    SYNTAX     Float\n \tUNITS      \"degrees Centigrade\"\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Minimum temperature seen (degrees C)\"\n\t::= { upsAmbientTemperature 6 }\n\nupsAmbientHumidity  OBJECT IDENTIFIER ::= { upsAmbient 2 }\n\nupsAmbientHumidityValue OBJECT-TYPE\n    SYNTAX     Float\n \tUNITS      \"percent\"\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Ambient relative humidity (percent)\"\n\t::= { upsAmbientHumidity 1 }\n\nupsAmbientHumidityAlarm OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n \tUNITS      \"enabled/disabled\"\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Relative humidity alarm (enabled/disabled)\"\n\t::= { upsAmbientHumidity 2 }\n\nupsAmbientHumidityHigh OBJECT-TYPE\n    SYNTAX     Float\n \tUNITS      \"percent\"\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Relative humidity threshold high (percent)\"\n\t::= { upsAmbientHumidity 3 }\n\nupsAmbientHumidityLow OBJECT-TYPE\n    SYNTAX     Float\n \tUNITS      \"percent\"\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Relative humidity threshold low (percent)\"\n\t::= { upsAmbientHumidity 4 }\n\nupsAmbientHumidityMax OBJECT-TYPE\n    SYNTAX     Float\n \tUNITS      \"percent\"\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Maximum relative humidity seen (percent)\"\n\t::= { upsAmbientHumidity 5 }\n\nupsAmbientHumidityMin OBJECT-TYPE\n    SYNTAX     Float\n \tUNITS      \"percent\"\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Minimum relative humidity seen (percent)\"\n\t::= { upsAmbientHumidity 6 }\n\n--\n-- The Driver group.\n--\n\nupsDriver             OBJECT IDENTIFIER ::= { synoUPS 7 }\n\nupsDriverName OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Driver name\"\n\t::= { upsDriver 1 }\n\nupsDriverVersion OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Driver version (NUT release)\"\n\t::= { upsDriver 2 }\n\nupsDriverVersionData OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Driver version data\"\n\t::= { upsDriver 3 }\n\n\nupsDriverVersionInternal OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Internal driver version (if tracked separately)\"\n\t::= { upsDriver 4 }\n\nupsDriverPollInterval OBJECT-TYPE\n    SYNTAX     Integer32\n    UNITS      \"second\"\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Poll interval setup in configuration file\"\n\t::= { upsDriver 5 }\n\nupsDriverPort OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Port setup in configuration file\"\n\t::= { upsDriver 6 }\n\nupsDriverPollFrequency OBJECT-TYPE\n    SYNTAX     Integer32\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Poll frequency\"\n\t::= { upsDriver 7 }\n\nupsDriverProductID OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Product ID\"\n\t::= { upsDriver 8 }\n\nupsDriverSnmpVersion OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Snmp version\"\n\t::= { upsDriver 9 }\n\n--\n-- The server group.\n--\n\nupsServer             OBJECT IDENTIFIER ::= { synoUPS 8 }\n\nupsServerInfo OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Server information\"\n\t::= { upsServer 1 }\n\nupsServerVersion OBJECT-TYPE\n    SYNTAX     DisplayString (SIZE(0..63))\n    MAX-ACCESS read-only\n    STATUS     current\n\tDESCRIPTION\n\t\"Server version\"\n\t::= { upsServer 2 }\n\n\nupsConformance OBJECT IDENTIFIER ::= { synoUPS 9 }\nupsCompliances OBJECT IDENTIFIER ::= { upsConformance 1 }\nupsGroups \t\t\tOBJECT IDENTIFIER ::= { upsConformance 2 }\n\nupsCompliance MODULE-COMPLIANCE\n    STATUS  current\n    DESCRIPTION\n            \"The compliance statement for synoSystem entities which\n            implement the SYNOLOGY SYSTEM MIB.\"\n    MODULE  -- this module\n        MANDATORY-GROUPS { upsGroup }\n\n    ::= { upsCompliances 1 }\n\nupsGroup OBJECT-GROUP\n    OBJECTS {\n    \t\t\t\t\tupsDeviceModel,\n\t\t\t\t\t\t\tupsDeviceManufacturer,\n\t\t\t\t\t\t\tupsDeviceSerial,\n\t\t\t\t\t\t\tupsDeviceType,\n\t\t\t\t\t\t\tupsDeviceDescription,\n\t\t\t\t\t\t\tupsDeviceContact,\n\t\t\t\t\t\t\tupsDeviceLocation,\n\t\t\t\t\t\t\tupsDevicePart,\n\t\t\t\t\t\t\tupsDeviceMACAddr,\n\t\t\t\t\t\t\tupsInfoStatus,\n\t\t\t\t\t\t\tupsInfoAlarm,\n\t\t\t\t\t\t\tupsInfoTime,\n\t\t\t\t\t\t\tupsInfoDate,\n\t\t\t\t\t\t\tupsInfoModel,\n\t\t\t\t\t\t\tupsInfoMfrName,\n\t\t\t\t\t\t\tupsInfoMfrDate,\n\t\t\t\t\t\t\tupsInfoSerial,\n\t\t\t\t\t\t\tupsInfoVendorID,\n\t\t\t\t\t\t\tupsInfoProductID,\n\t\t\t\t\t\t\tupsInfoFirmwareName,\n\t\t\t\t\t\t\tupsInfoFirmwareAux,\n\t\t\t\t\t\t\tupsInfoTemperature,\n\t\t\t\t\t\t\tupsInfoLoadValue,\n\t\t\t\t\t\t\tupsInfoLoadHigh,\n\t\t\t\t\t\t\tupsInfoID,\n\t\t\t\t\t\t\tupsInfoDelayStart,\n\t\t\t\t\t\t\tupsInfoDelayReboot,\n\t\t\t\t\t\t\tupsInfoDelayShutdown,\n\t\t\t\t\t\t\tupsInfoTimerStart,\n\t\t\t\t\t\t\tupsInfoTimerReboot,\n\t\t\t\t\t\t\tupsInfoTimerShutdown,\n\t\t\t\t\t\t\tupsInfoTestInterval,\n\t\t\t\t\t\t\tupsInfoTestResult,\n\t\t\t\t\t\t\tupsInfoDisplayLanguage,\n\t\t\t\t\t\t\tupsInfoContacts,\n\t\t\t\t\t\t\tupsInfoEffciency,\n\t\t\t\t\t\t\tupsInfoPowerValue,\n\t\t\t\t\t\t\tupsInfoPowerNominal,\n\t\t\t\t\t\t\tupsInfoRealPowerValue,\n\t\t\t\t\t\t\tupsInfoRealPowerNominal,\n\t\t\t\t\t\t\tupsInfoBeeperStatus,\n\t\t\t\t\t\t\tupsInfoType,\n\t\t\t\t\t\t\tupsInfoWatchdogStatus,\n\t\t\t\t\t\t\tupsInfoStartAuto,\n\t\t\t\t\t\t\tupsInfoStartBattery,\n\t\t\t\t\t\t\tupsInfoStartReboot,\n\t\t\t\t\t\t\tupsBatteryChargeValue,\n\t\t\t\t\t\t\tupsBatteryChargeLow,\n\t\t\t\t\t\t\tupsBatteryChargeRestart,\n\t\t\t\t\t\t\tupsBatteryChargeWarning,\n\t\t\t\t\t\t\tupsBatteryVoltageValue,\n\t\t\t\t\t\t\tupsBatteryVoltageNominal,\n\t\t\t\t\t\t\tupsBatteryVoltageLow,\n\t\t\t\t\t\t\tupsBatteryVoltageHigh,\n\t\t\t\t\t\t\tupsBatteryCapacity,\n\t\t\t\t\t\t\tupsBatteryCurrent,\n\t\t\t\t\t\t\tupsBatteryTemperature,\n\t\t\t\t\t\t\tupsBatteryRuntimeValue,\n\t\t\t\t\t\t\tupsBatteryRuntimeLow,\n\t\t\t\t\t\t\tupsBatteryRuntimeRestart,\n\t\t\t\t\t\t\tupsBatteryAlarmThreshold,\n\t\t\t\t\t\t\tupsBatteryDate,\n\t\t\t\t\t\t\tupsBatteryMfrDate,\n\t\t\t\t\t\t\tupsBatteryPacks,\n\t\t\t\t\t\t\tupsBatteryPacksBad,\n\t\t\t\t\t\t\tupsBatteryType,\n\t\t\t\t\t\t\tupsBatteryProtection,\n\t\t\t\t\t\t\tupsBatteryEnergySave,\n\t\t\t\t\t\t\tupsInputVoltageValue,\n\t\t\t\t\t\t\tupsInputVoltageMax,\n\t\t\t\t\t\t\tupsInputVoltageMin,\n\t\t\t\t\t\t\tupsInputVoltageNominal,\n\t\t\t\t\t\t\tupsInputVoltageExtend,\n\t\t\t\t\t\t\tupsInputVoltageFault,\n\t\t\t\t\t\t\tupsInputTransferReason,\n\t\t\t\t\t\t\tupsInputTransferLow,\n\t\t\t\t\t\t\tupsInputTransferHigh,\n\t\t\t\t\t\t\tupsInputTransferLowMin,\n\t\t\t\t\t\t\tupsInputTransferLowMax,\n\t\t\t\t\t\t\tupsInputTransferHighMin,\n\t\t\t\t\t\t\tupsInputTransferHighMax,\n\t\t\t\t\t\t\tupsInputTransferBoostLow,\n\t\t\t\t\t\t\tupsInputTransferBoostHigh,\n\t\t\t\t\t\t\tupsInputTransferTrimLow,\n\t\t\t\t\t\t\tupsInputTransferTrimHigh,\n\t\t\t\t\t\t\tupsInputSensitivity,\n\t\t\t\t\t\t\tupsInputQuality,\n\t\t\t\t\t\t\tupsInputCurrentValue,\n\t\t\t\t\t\t\tupsInputCurrentNominal,\n\t\t\t\t\t\t\tupsInputFrequencyValue,\n\t\t\t\t\t\t\tupsInputFrequencyNominal,\n\t\t\t\t\t\t\tupsInputFrequencyLow,\n\t\t\t\t\t\t\tupsInputFrequencyHigh,\n\t\t\t\t\t\t\tupsInputFrequencyExtend,\n\t\t\t\t\t\t\tupsOutputVoltageValue,\n\t\t\t\t\t\t\tupsOutputVoltageNominal,\n\t\t\t\t\t\t\tupsOutputFrequencyValue,\n\t\t\t\t\t\t\tupsOutputFrequencyNominal,\n\t\t\t\t\t\t\tupsOutputCurrentValue,\n\t\t\t\t\t\t\tupsOutputCurrentNominal,\n\t\t\t\t\t\t\tupsAmbientTemperatureValue,\n\t\t\t\t\t\t\tupsAmbientTemperatureAlarm,\n\t\t\t\t\t\t\tupsAmbientTemperatureHigh,\n\t\t\t\t\t\t\tupsAmbientTemperatureLow,\n\t\t\t\t\t\t\tupsAmbientTemperatureMax,\n\t\t\t\t\t\t\tupsAmbientTemperatureMin,\n\t\t\t\t\t\t\tupsAmbientHumidityValue,\n\t\t\t\t\t\t\tupsAmbientHumidityAlarm,\n\t\t\t\t\t\t\tupsAmbientHumidityHigh,\n\t\t\t\t\t\t\tupsAmbientHumidityLow,\n\t\t\t\t\t\t\tupsAmbientHumidityMax,\n\t\t\t\t\t\t\tupsAmbientHumidityMin,\n\t\t\t\t\t\t\tupsDriverName,\n\t\t\t\t\t\t\tupsDriverVersion,\n\t\t\t\t\t\t\tupsDriverVersionData,\n\t\t\t\t\t\t\tupsDriverVersionInternal,\n\t\t\t\t\t\t\tupsDriverPollInterval,\n\t\t\t\t\t\t\tupsDriverPort,\n\t\t\t\t\t\t\tupsDriverPollFrequency,\n\t\t\t\t\t\t\tupsDriverProductID,\n\t\t\t\t\t\t\tupsDriverSnmpVersion,\n\t\t\t\t\t\t\tupsServerInfo,\n\t\t\t\t\t\t\tupsServerVersion}\n    STATUS  current\n    DESCRIPTION\n            \"A collection of objects providing basic information\n             of an synology ups entity.\"\n    ::= { upsGroups 1 }\n\nEND\n"
  },
  {
    "path": "docker/syslog/syslog-ng.conf",
    "content": "@version: 3.25\n@include \"scl.conf\"\n\n# Syslog-ng configuration file, compatible with default Debian syslogd\n# installation.\n\n# First, set some global options.\noptions { chain_hostnames(off); flush_lines(0); use_dns(no); use_fqdn(no);\n\t  dns_cache(no); owner(\"root\"); group(\"adm\"); perm(0640);\n\t  stats_freq(0); bad_hostname(\"^gconfd$\");\n};\n\n########################\n# Sources\n########################\n# This is the default behavior of sysklogd package\n# Logs may come from unix stream, but not from another machine.\n#\nsource s_src {\n       system();\n       internal();\n};\n\n\n\nsource s_sys {\n    udp(ip(0.0.0.0) port(514));\n};\ndestination telegraf_local {\n syslog(\"127.0.0.1\" port(6514));\n};\nfilter f_default    { level(info..emerg); };\nlog { source(s_sys); filter(f_default); destination(telegraf_local); };\n \n\n\n\n# If you wish to get logs from remote machine you should uncomment\n# this and comment the above source line.\n#\n#source s_net { tcp(ip(127.0.0.1) port(1000)); };\n\n########################\n# Destinations\n########################\n# First some standard logfile\n#\ndestination d_auth { file(\"/var/log/auth.log\"); };\ndestination d_cron { file(\"/var/log/cron.log\"); };\ndestination d_daemon { file(\"/var/log/daemon.log\"); };\ndestination d_kern { file(\"/var/log/kern.log\"); };\ndestination d_lpr { file(\"/var/log/lpr.log\"); };\ndestination d_mail { file(\"/var/log/mail.log\"); };\ndestination d_syslog { file(\"/var/log/syslog\"); };\ndestination d_user { file(\"/var/log/user.log\"); };\ndestination d_uucp { file(\"/var/log/uucp.log\"); };\n\n# This files are the log come from the mail subsystem.\n#\ndestination d_mailinfo { file(\"/var/log/mail.info\"); };\ndestination d_mailwarn { file(\"/var/log/mail.warn\"); };\ndestination d_mailerr { file(\"/var/log/mail.err\"); };\n\n# Logging for INN news system\n#\ndestination d_newscrit { file(\"/var/log/news/news.crit\"); };\ndestination d_newserr { file(\"/var/log/news/news.err\"); };\ndestination d_newsnotice { file(\"/var/log/news/news.notice\"); };\n\n# Some 'catch-all' logfiles.\n#\ndestination d_debug { file(\"/var/log/debug\"); };\ndestination d_error { file(\"/var/log/error\"); };\ndestination d_messages { file(\"/var/log/messages\"); };\n\n# The root's console.\n#\ndestination d_console { usertty(\"root\"); };\n\n# Virtual console.\n#\ndestination d_console_all { file(`tty10`); };\n\n# The named pipe /dev/xconsole is for the nsole' utility.  To use it,\n# you must invoke nsole' with the -file' option:\n#\n#    $ xconsole -file /dev/xconsole [...]\n#\ndestination d_xconsole { pipe(\"/dev/xconsole\"); };\n\n# Send the messages to an other host\n#\n#destination d_net { tcp(\"127.0.0.1\" port(1000) log_fifo_size(1000)); };\n\n# Debian only\ndestination d_ppp { file(\"/var/log/ppp.log\"); };\n\n########################\n# Filters\n########################\n# Here's come the filter options. With this rules, we can set which \n# message go where.\n\nfilter f_dbg { level(debug); };\nfilter f_info { level(info); };\nfilter f_notice { level(notice); };\nfilter f_warn { level(warn); };\nfilter f_err { level(err); };\nfilter f_crit { level(crit .. emerg); };\n\nfilter f_debug { level(debug) and not facility(auth, authpriv, news, mail); };\nfilter f_error { level(err .. emerg) ; };\nfilter f_messages { level(info,notice,warn) and \n                    not facility(auth,authpriv,cron,daemon,mail,news); };\n\nfilter f_auth { facility(auth, authpriv) and not filter(f_debug); };\nfilter f_cron { facility(cron) and not filter(f_debug); };\nfilter f_daemon { facility(daemon) and not filter(f_debug); };\nfilter f_kern { facility(kern) and not filter(f_debug); };\nfilter f_lpr { facility(lpr) and not filter(f_debug); };\nfilter f_local { facility(local0, local1, local3, local4, local5,\n                        local6, local7) and not filter(f_debug); };\nfilter f_mail { facility(mail) and not filter(f_debug); };\nfilter f_news { facility(news) and not filter(f_debug); };\nfilter f_syslog3 { not facility(auth, authpriv, mail) and not filter(f_debug); };\nfilter f_user { facility(user) and not filter(f_debug); };\nfilter f_uucp { facility(uucp) and not filter(f_debug); };\n\nfilter f_cnews { level(notice, err, crit) and facility(news); };\nfilter f_cother { level(debug, info, notice, warn) or facility(daemon, mail); };\n\nfilter f_ppp { facility(local2) and not filter(f_debug); };\nfilter f_console { level(warn .. emerg); };\n\n########################\n# Log paths\n########################\nlog { source(s_src); filter(f_auth); destination(d_auth); };\nlog { source(s_src); filter(f_cron); destination(d_cron); };\nlog { source(s_src); filter(f_daemon); destination(d_daemon); };\nlog { source(s_src); filter(f_kern); destination(d_kern); };\nlog { source(s_src); filter(f_lpr); destination(d_lpr); };\nlog { source(s_src); filter(f_syslog3); destination(d_syslog); };\nlog { source(s_src); filter(f_user); destination(d_user); };\nlog { source(s_src); filter(f_uucp); destination(d_uucp); };\n\nlog { source(s_src); filter(f_mail); destination(d_mail); };\n#log { source(s_src); filter(f_mail); filter(f_info); destination(d_mailinfo); };\n#log { source(s_src); filter(f_mail); filter(f_warn); destination(d_mailwarn); };\n#log { source(s_src); filter(f_mail); filter(f_err); destination(d_mailerr); };\n\nlog { source(s_src); filter(f_news); filter(f_crit); destination(d_newscrit); };\nlog { source(s_src); filter(f_news); filter(f_err); destination(d_newserr); };\nlog { source(s_src); filter(f_news); filter(f_notice); destination(d_newsnotice); };\n#log { source(s_src); filter(f_cnews); destination(d_console_all); };\n#log { source(s_src); filter(f_cother); destination(d_console_all); };\n\n#log { source(s_src); filter(f_ppp); destination(d_ppp); };\n\nlog { source(s_src); filter(f_debug); destination(d_debug); };\nlog { source(s_src); filter(f_error); destination(d_error); };\nlog { source(s_src); filter(f_messages); destination(d_messages); };\n\nlog { source(s_src); filter(f_console); destination(d_console_all);\n\t\t\t\t    destination(d_xconsole); };\nlog { source(s_src); filter(f_crit); destination(d_console); };\n\n# All messages send to a remote site\n#\n#log { source(s_src); destination(d_net); };\n\n###\n# Include all config files in /etc/syslog-ng/conf.d/\n###\n@include \"/etc/syslog-ng/conf.d/*.conf\"\n"
  },
  {
    "path": "docker/telegraf/init.sh",
    "content": "#! /usr/bin/env bash\n\n# chkconfig: 2345 99 01\n# description: Telegraf daemon\n\n### BEGIN INIT INFO\n# Provides:          telegraf\n# Required-Start:    $all\n# Required-Stop:     $remote_fs $syslog\n# Default-Start:     2 3 4 5\n# Default-Stop:      0 1 6\n# Short-Description: Start telegraf at boot time\n### END INIT INFO\n\n# this init script supports three different variations:\n#  1. New lsb that define start-stop-daemon\n#  2. Old lsb that don't have start-stop-daemon but define, log, pidofproc and killproc\n#  3. Centos installations without lsb-core installed\n#\n# In the third case we have to define our own functions which are very dumb\n# and expect the args to be positioned correctly.\n\n# Command-line options that can be set in /etc/default/telegraf.  These will override\n# any config file values.\nTELEGRAF_OPTS=\n\nUSER=telegraf\nGROUP=telegraf\n\nif [ -r /lib/lsb/init-functions ]; then\n    source /lib/lsb/init-functions\nfi\n\nDEFAULT=/etc/default/telegraf\n\nif [ -r $DEFAULT ]; then\n    source $DEFAULT\nfi\n\nif [ -z \"$STDOUT\" ]; then\n    STDOUT=/dev/null\nfi\nif [ ! -f \"$STDOUT\" ]; then\n    mkdir -p `dirname $STDOUT`\nfi\n\nif [ -z \"$STDERR\" ]; then\n    STDERR=/var/log/telegraf/telegraf.log\nfi\nif [ ! -f \"$STDERR\" ]; then\n    mkdir -p `dirname $STDERR`\nfi\n\nOPEN_FILE_LIMIT=65536\n\nfunction pidofproc() {\n    if [ $# -ne 3 ]; then\n        echo \"Expected three arguments, e.g. $0 -p pidfile daemon-name\"\n    fi\n\n    if [ ! -f \"$2\" ]; then\n        return 1\n    fi\n\n    local pidfile=`cat $2`\n\n    if [ \"x$pidfile\" == \"x\" ]; then\n        return 1\n    fi\n\n    if ps --pid \"$pidfile\" | grep -q $(basename $3); then\n        return 0\n    fi\n\n    return 1\n}\n\nfunction killproc() {\n    if [ $# -ne 3 ]; then\n        echo \"Expected three arguments, e.g. $0 -p pidfile signal\"\n    fi\n\n    pid=`cat $2`\n\n    kill -s $3 $pid\n}\n\nfunction log_failure_msg() {\n    echo \"$@\" \"[ FAILED ]\"\n}\n\nfunction log_success_msg() {\n    echo \"$@\" \"[ OK ]\"\n}\n\n# Process name ( For display )\nname=telegraf\n\n# Daemon name, where is the actual executable\ndaemon=/usr/bin/telegraf\n\n# pid file for the daemon\npidfile=/var/run/telegraf/telegraf.pid\npiddir=`dirname $pidfile`\n\nif [ ! -d \"$piddir\" ]; then\n    mkdir -p $piddir\n    chown $USER:$GROUP $piddir\nfi\n\n# Configuration file\nconfig=/etc/telegraf/telegraf.conf\nconfdir=/etc/telegraf/telegraf.d\n\n# If the daemon is not there, then exit.\n[ -x $daemon ] || exit 5\n\ncase $1 in\n    start)\n        # Checked the PID file exists and check the actual status of process\n        if [ -e $pidfile ]; then\n            pidofproc -p $pidfile $daemon > /dev/null 2>&1 && status=\"0\" || status=\"$?\"\n            # If the status is SUCCESS then don't need to start again.\n            if [ \"x$status\" = \"x0\" ]; then\n                log_failure_msg \"$name process is running\"\n                exit 0 # Exit\n            fi\n        fi\n\n        # Bump the file limits, before launching the daemon. These will carry over to\n        # launched processes.\n        ulimit -n $OPEN_FILE_LIMIT\n        if [ $? -ne 0 ]; then\n            log_failure_msg \"set open file limit to $OPEN_FILE_LIMIT\"\n        fi\n\n        log_success_msg \"Starting the process\" \"$name\"\n        if which start-stop-daemon > /dev/null 2>&1; then\n            start-stop-daemon --chuid $USER:$GROUP --start --quiet --pidfile $pidfile --exec $daemon -- -pidfile $pidfile -config $config -config-directory $confdir $TELEGRAF_OPTS >>$STDOUT 2>>$STDERR &\n        else\n            su -s /bin/sh -c \"nohup $daemon -pidfile $pidfile -config $config -config-directory $confdir $TELEGRAF_OPTS >>$STDOUT 2>>$STDERR &\" $USER\n        fi\n        log_success_msg \"$name process was started\"\n        ;;\n\n    stop)\n        # Stop the daemon.\n        if [ -e $pidfile ]; then\n            pidofproc -p $pidfile $daemon > /dev/null 2>&1 && status=\"0\" || status=\"$?\"\n            if [ \"$status\" = 0 ]; then\n                if killproc -p $pidfile SIGTERM && /bin/rm -rf $pidfile; then\n                    log_success_msg \"$name process was stopped\"\n                else\n                    log_failure_msg \"$name failed to stop service\"\n                fi\n            fi\n        else\n            log_failure_msg \"$name process is not running\"\n        fi\n        ;;\n\n    reload)\n        # Reload the daemon.\n        if [ -e $pidfile ]; then\n            pidofproc -p $pidfile $daemon > /dev/null 2>&1 && status=\"0\" || status=\"$?\"\n            if [ \"$status\" = 0 ]; then\n                if killproc -p $pidfile SIGHUP; then\n                    log_success_msg \"$name process was reloaded\"\n                else\n                    log_failure_msg \"$name failed to reload service\"\n                fi\n            fi\n        else\n            log_failure_msg \"$name process is not running\"\n        fi\n        ;;\n\n    restart)\n        # Restart the daemon.\n        $0 stop && sleep 2 && $0 start\n        ;;\n\n    status)\n        # Check the status of the process.\n        if [ -e $pidfile ]; then\n            if pidofproc -p $pidfile $daemon > /dev/null; then\n                log_success_msg \"$name Process is running\"\n                exit 0\n            else\n                log_failure_msg \"$name Process is not running\"\n                exit 1\n            fi\n        else\n            log_failure_msg \"$name Process is not running\"\n            exit 3\n        fi\n        ;;\n\n    version)\n        $daemon version\n        ;;\n\n    *)\n        # For invalid arguments, print the usage message.\n        echo \"Usage: $0 {start|stop|restart|status|version}\"\n        exit 2\n        ;;\nesac\n"
  },
  {
    "path": "docker/telegraf/telegraf.conf",
    "content": "# Telegraf Configuration\n#\n# Telegraf is entirely plugin driven. All metrics are gathered from the\n# declared inputs, and sent to the declared outputs.\n#\n# Plugins must be declared in here to be active.\n# To deactivate a plugin, comment out the name and any variables.\n#\n# Use 'telegraf -config telegraf.conf -test' to see what metrics a config\n# file would generate.\n#\n# Environment variables can be used anywhere in this config file, simply surround\n# them with ${}. For strings the variable must be within quotes (ie, \"${STR_VAR}\"),\n# for numbers and booleans they should be plain (ie, ${INT_VAR}, ${BOOL_VAR})\n\n\n# Global tags can be specified here in key=\"value\" format.\n[global_tags]\n  # dc = \"us-east-1\" # will tag all metrics with dc=us-east-1\n  # rack = \"1a\"\n  ## Environment variables can be used as tags, and throughout the config file\n  # user = \"$USER\"\n\n\n# Configuration for telegraf agent\n[agent]\n  ## Default data collection interval for all inputs\n  interval = \"10s\"\n  ## Rounds collection interval to 'interval'\n  ## ie, if interval=\"10s\" then always collect on :00, :10, :20, etc.\n  round_interval = true\n\n  ## Telegraf will send metrics to outputs in batches of at most\n  ## metric_batch_size metrics.\n  ## This controls the size of writes that Telegraf sends to output plugins.\n  metric_batch_size = 1000\n\n  ## Maximum number of unwritten metrics per output.  Increasing this value\n  ## allows for longer periods of output downtime without dropping metrics at the\n  ## cost of higher maximum memory usage.\n  metric_buffer_limit = 10000\n\n  ## Collection jitter is used to jitter the collection by a random amount.\n  ## Each plugin will sleep for a random time within jitter before collecting.\n  ## This can be used to avoid many plugins querying things like sysfs at the\n  ## same time, which can have a measurable effect on the system.\n  collection_jitter = \"0s\"\n\n  ## Default flushing interval for all outputs. Maximum flush_interval will be\n  ## flush_interval + flush_jitter\n  flush_interval = \"10s\"\n\n  ## Jitter the flush interval by a random amount. This is primarily to avoid\n  ## large write spikes for users running a large number of telegraf instances.\n  ## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s\n  flush_jitter = \"0s\"\n\n  ## By default or when set to \"0s\", precision will be set to the same\n  ## timestamp order as the collection interval, with the maximum being 1s.\n  ##   ie, when interval = \"10s\", precision will be \"1s\"\n  ##       when interval = \"250ms\", precision will be \"1ms\"\n  ## Precision will NOT be used for service inputs. It is up to each individual\n  ## service input to set the timestamp at the appropriate precision.\n  ## Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\".\n  precision = \"\"\n\n  ## Log at debug level.\n  # debug = false\n  ## Log only error level messages.\n  # quiet = false\n\n  ## Log target controls the destination for logs and can be one of \"file\",\n  ## \"stderr\" or, on Windows, \"eventlog\".  When set to \"file\", the output file\n  ## is determined by the \"logfile\" setting.\n  # logtarget = \"file\"\n\n  ## Name of the file to be logged to when using the \"file\" logtarget.  If set to\n  ## the empty string then logs are written to stderr.\n  # logfile = \"\"\n\n  ## The logfile will be rotated after the time interval specified.  When set\n  ## to 0 no time based rotation is performed.  Logs are rotated only when\n  ## written to, if there is no log activity rotation may be delayed.\n  # logfile_rotation_interval = \"0d\"\n\n  ## The logfile will be rotated when it becomes larger than the specified\n  ## size.  When set to 0 no size based rotation is performed.\n  # logfile_rotation_max_size = \"0MB\"\n\n  ## Maximum number of rotated archives to keep, any older logs are deleted.\n  ## If set to -1, no archives are removed.\n  # logfile_rotation_max_archives = 5\n\n  ## Override default hostname, if empty use os.Hostname()\n  hostname = \"\"\n  ## If set to true, do no set the \"host\" tag in the telegraf agent.\n  omit_hostname = false\n\n\n###############################################################################\n#                            OUTPUT PLUGINS                                   #\n###############################################################################\n\n\n# Configuration for sending metrics to InfluxDB\n[[outputs.influxdb]]\n  ## The full HTTP or UDP URL for your InfluxDB instance.\n  ##\n  ## Multiple URLs can be specified for a single cluster, only ONE of the\n  ## urls will be written to each interval.\n  # urls = [\"unix:///var/run/influxdb.sock\"]\n  # urls = [\"udp://127.0.0.1:8089\"]\n  # urls = [\"http://127.0.0.1:8086\"]\n  urls = [\"http://localhost:8086\"]\n  \n  ## The target database for metrics; will be created as needed.\n  ## For UDP url endpoint database needs to be configured on server side.\n  database = \"telegraf\"\n\n  ## The value of this tag will be used to determine the database.  If this\n  ## tag is not set the 'database' option is used as the default.\n  # database_tag = \"\"\n\n  ## If true, the 'database_tag' will not be included in the written metric.\n  # exclude_database_tag = false\n\n  ## If true, no CREATE DATABASE queries will be sent.  Set to true when using\n  ## Telegraf with a user without permissions to create databases or when the\n  ## database already exists.\n  # skip_database_creation = false\n\n  ## Name of existing retention policy to write to.  Empty string writes to\n  ## the default retention policy.  Only takes effect when using HTTP.\n  # retention_policy = \"\"\n\n  ## The value of this tag will be used to determine the retention policy.  If this\n  ## tag is not set the 'retention_policy' option is used as the default.\n  # retention_policy_tag = \"\"\n\n  ## If true, the 'retention_policy_tag' will not be included in the written metric.\n  # exclude_retention_policy_tag = false\n\n  ## Write consistency (clusters only), can be: \"any\", \"one\", \"quorum\", \"all\".\n  ## Only takes effect when using HTTP.\n  # write_consistency = \"any\"\n\n  ## Timeout for HTTP messages.\n  # timeout = \"5s\"\n\n  ## HTTP Basic Auth\n  username = \"telegraf\"\n  password = \"telegraf\"\n\n  ## HTTP User-Agent\n  # user_agent = \"telegraf\"\n\n  ## UDP payload size is the maximum packet size to send.\n  # udp_payload = \"512B\"\n\n  ## Optional TLS Config for use on HTTP connections.\n  # tls_ca = \"/etc/telegraf/ca.pem\"\n  # tls_cert = \"/etc/telegraf/cert.pem\"\n  # tls_key = \"/etc/telegraf/key.pem\"\n  ## Use TLS but skip chain & host verification\n  # insecure_skip_verify = false\n\n  ## HTTP Proxy override, if unset values the standard proxy environment\n  ## variables are consulted to determine which proxy, if any, should be used.\n  # http_proxy = \"http://corporate.proxy:3128\"\n\n  ## Additional HTTP headers\n  # http_headers = {\"X-Special-Header\" = \"Special-Value\"}\n\n  ## HTTP Content-Encoding for write request body, can be set to \"gzip\" to\n  ## compress body or \"identity\" to apply no encoding.\n  # content_encoding = \"identity\"\n\n  ## When true, Telegraf will output unsigned integers as unsigned values,\n  ## i.e.: \"42u\".  You will need a version of InfluxDB supporting unsigned\n  ## integer values.  Enabling this option will result in field type errors if\n  ## existing data has been written.\n  # influx_uint_support = false\n\n\n###############################################################################\n#                            PROCESSOR PLUGINS                                #\n###############################################################################\n\n\n# # Clone metrics and apply modifications.\n# [[processors.clone]]\n#   ## All modifications on inputs and aggregators can be overridden:\n#   # name_override = \"new_name\"\n#   # name_prefix = \"new_name_prefix\"\n#   # name_suffix = \"new_name_suffix\"\n#\n#   ## Tags to be added (all values must be strings)\n#   # [processors.clone.tags]\n#   #   additional_tag = \"tag_value\"\n\n\n# # Convert values to another metric value type\n# [[processors.converter]]\n#   ## Tags to convert\n#   ##\n#   ## The table key determines the target type, and the array of key-values\n#   ## select the keys to convert.  The array may contain globs.\n#   ##   <target-type> = [<tag-key>...]\n#   [processors.converter.tags]\n#     measurement = []\n#     string = []\n#     integer = []\n#     unsigned = []\n#     boolean = []\n#     float = []\n#\n#   ## Fields to convert\n#   ##\n#   ## The table key determines the target type, and the array of key-values\n#   ## select the keys to convert.  The array may contain globs.\n#   ##   <target-type> = [<field-key>...]\n#   [processors.converter.fields]\n#     measurement = []\n#     tag = []\n#     string = []\n#     integer = []\n#     unsigned = []\n#     boolean = []\n#     float = []\n\n\n# # Dates measurements, tags, and fields that pass through this filter.\n# [[processors.date]]\n#   ## New tag to create\n#   tag_key = \"month\"\n#\n#   ## Date format string, must be a representation of the Go \"reference time\"\n#   ## which is \"Mon Jan 2 15:04:05 -0700 MST 2006\".\n#   date_format = \"Jan\"\n#\n#   ## Offset duration added to the date string when writing the new tag.\n#   # date_offset = \"0s\"\n#\n#   ## Timezone to use when creating the tag.  This can be set to one of\n#   ## \"UTC\", \"Local\", or to a location name in the IANA Time Zone database.\n#   ##   example: timezone = \"America/Los_Angeles\"\n#   # timezone = \"UTC\"\n\n\n# # Filter metrics with repeating field values\n# [[processors.dedup]]\n#   ## Maximum time to suppress output\n#   dedup_interval = \"600s\"\n\n\n# # Map enum values according to given table.\n# [[processors.enum]]\n#   [[processors.enum.mapping]]\n#     ## Name of the field to map\n#     field = \"status\"\n#\n#     ## Name of the tag to map\n#     # tag = \"status\"\n#\n#     ## Destination tag or field to be used for the mapped value.  By default the\n#     ## source tag or field is used, overwriting the original value.\n#     dest = \"status_code\"\n#\n#     ## Default value to be used for all values not contained in the mapping\n#     ## table.  When unset, the unmodified value for the field will be used if no\n#     ## match is found.\n#     # default = 0\n#\n#     ## Table of mappings\n#     [processors.enum.mapping.value_mappings]\n#       green = 1\n#       amber = 2\n#       red = 3\n\n\n# # Apply metric modifications using override semantics.\n# [[processors.override]]\n#   ## All modifications on inputs and aggregators can be overridden:\n#   # name_override = \"new_name\"\n#   # name_prefix = \"new_name_prefix\"\n#   # name_suffix = \"new_name_suffix\"\n#\n#   ## Tags to be added (all values must be strings)\n#   # [processors.override.tags]\n#   #   additional_tag = \"tag_value\"\n\n\n# # Parse a value in a specified field/tag(s) and add the result in a new metric\n# [[processors.parser]]\n#   ## The name of the fields whose value will be parsed.\n#   parse_fields = []\n#\n#   ## If true, incoming metrics are not emitted.\n#   drop_original = false\n#\n#   ## If set to override, emitted metrics will be merged by overriding the\n#   ## original metric using the newly parsed metrics.\n#   merge = \"override\"\n#\n#   ## The dataformat to be read from files\n#   ## Each data format has its own unique set of configuration options, read\n#   ## more about them here:\n#   ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md\n#   data_format = \"influx\"\n\n\n# # Rotate a single valued metric into a multi field metric\n# [[processors.pivot]]\n#   ## Tag to use for naming the new field.\n#   tag_key = \"name\"\n#   ## Field to use as the value of the new field.\n#   value_key = \"value\"\n\n\n# # Print all metrics that pass through this filter.\n# [[processors.printer]]\n\n\n# # Transforms tag and field values with regex pattern\n# [[processors.regex]]\n#   ## Tag and field conversions defined in a separate sub-tables\n#   # [[processors.regex.tags]]\n#   #   ## Tag to change\n#   #   key = \"resp_code\"\n#   #   ## Regular expression to match on a tag value\n#   #   pattern = \"^(\\\\d)\\\\d\\\\d$\"\n#   #   ## Matches of the pattern will be replaced with this string.  Use ${1}\n#   #   ## notation to use the text of the first submatch.\n#   #   replacement = \"${1}xx\"\n#\n#   # [[processors.regex.fields]]\n#   #   ## Field to change\n#   #   key = \"request\"\n#   #   ## All the power of the Go regular expressions available here\n#   #   ## For example, named subgroups\n#   #   pattern = \"^/api(?P<method>/[\\\\w/]+)\\\\S*\"\n#   #   replacement = \"${method}\"\n#   #   ## If result_key is present, a new field will be created\n#   #   ## instead of changing existing field\n#   #   result_key = \"method\"\n#\n#   ## Multiple conversions may be applied for one field sequentially\n#   ## Let's extract one more value\n#   # [[processors.regex.fields]]\n#   #   key = \"request\"\n#   #   pattern = \".*category=(\\\\w+).*\"\n#   #   replacement = \"${1}\"\n#   #   result_key = \"search_category\"\n\n\n# # Rename measurements, tags, and fields that pass through this filter.\n# [[processors.rename]]\n\n\n# # Add the S2 Cell ID as a tag based on latitude and longitude fields\n# [[processors.s2geo]]\n#   ## The name of the lat and lon fields containing WGS-84 latitude and\n#   ## longitude in decimal degrees.\n#   # lat_field = \"lat\"\n#   # lon_field = \"lon\"\n#\n#   ## New tag to create\n#   # tag_key = \"s2_cell_id\"\n#\n#   ## Cell level (see https://s2geometry.io/resources/s2cell_statistics.html)\n#   # cell_level = 9\n\n\n# # Perform string processing on tags, fields, and measurements\n# [[processors.strings]]\n#   ## Convert a tag value to uppercase\n#   # [[processors.strings.uppercase]]\n#   #   tag = \"method\"\n#\n#   ## Convert a field value to lowercase and store in a new field\n#   # [[processors.strings.lowercase]]\n#   #   field = \"uri_stem\"\n#   #   dest = \"uri_stem_normalised\"\n#\n#   ## Convert a field value to titlecase\n#   # [[processors.strings.titlecase]]\n#   #   field = \"status\"\n#\n#   ## Trim leading and trailing whitespace using the default cutset\n#   # [[processors.strings.trim]]\n#   #   field = \"message\"\n#\n#   ## Trim leading characters in cutset\n#   # [[processors.strings.trim_left]]\n#   #   field = \"message\"\n#   #   cutset = \"\\t\"\n#\n#   ## Trim trailing characters in cutset\n#   # [[processors.strings.trim_right]]\n#   #   field = \"message\"\n#   #   cutset = \"\\r\\n\"\n#\n#   ## Trim the given prefix from the field\n#   # [[processors.strings.trim_prefix]]\n#   #   field = \"my_value\"\n#   #   prefix = \"my_\"\n#\n#   ## Trim the given suffix from the field\n#   # [[processors.strings.trim_suffix]]\n#   #   field = \"read_count\"\n#   #   suffix = \"_count\"\n#\n#   ## Replace all non-overlapping instances of old with new\n#   # [[processors.strings.replace]]\n#   #   measurement = \"*\"\n#   #   old = \":\"\n#   #   new = \"_\"\n#\n#   ## Trims strings based on width\n#   # [[processors.strings.left]]\n#   #   field = \"message\"\n#   #   width = 10\n#\n#   ## Decode a base64 encoded utf-8 string\n#   # [[processors.strings.base64decode]]\n#   #   field = \"message\"\n\n\n# # Restricts the number of tags that can pass through this filter and chooses which tags to preserve when over the limit.\n# [[processors.tag_limit]]\n#   ## Maximum number of tags to preserve\n#   limit = 10\n#\n#   ## List of tags to preferentially preserve\n#   keep = [\"foo\", \"bar\", \"baz\"]\n\n\n# # Uses a Go template to create a new tag\n# [[processors.template]]\n#   ## Tag to set with the output of the template.\n#   tag = \"topic\"\n#\n#   ## Go template used to create the tag value.  In order to ease TOML\n#   ## escaping requirements, you may wish to use single quotes around the\n#   ## template string.\n#   template = '{{ .Tag \"hostname\" }}.{{ .Tag \"level\" }}'\n\n\n# # Print all metrics that pass through this filter.\n# [[processors.topk]]\n#   ## How many seconds between aggregations\n#   # period = 10\n#\n#   ## How many top metrics to return\n#   # k = 10\n#\n#   ## Over which tags should the aggregation be done. Globs can be specified, in\n#   ## which case any tag matching the glob will aggregated over. If set to an\n#   ## empty list is no aggregation over tags is done\n#   # group_by = ['*']\n#\n#   ## Over which fields are the top k are calculated\n#   # fields = [\"value\"]\n#\n#   ## What aggregation to use. Options: sum, mean, min, max\n#   # aggregation = \"mean\"\n#\n#   ## Instead of the top k largest metrics, return the bottom k lowest metrics\n#   # bottomk = false\n#\n#   ## The plugin assigns each metric a GroupBy tag generated from its name and\n#   ## tags. If this setting is different than \"\" the plugin will add a\n#   ## tag (which name will be the value of this setting) to each metric with\n#   ## the value of the calculated GroupBy tag. Useful for debugging\n#   # add_groupby_tag = \"\"\n#\n#   ## These settings provide a way to know the position of each metric in\n#   ## the top k. The 'add_rank_field' setting allows to specify for which\n#   ## fields the position is required. If the list is non empty, then a field\n#   ## will be added to each and every metric for each string present in this\n#   ## setting. This field will contain the ranking of the group that\n#   ## the metric belonged to when aggregated over that field.\n#   ## The name of the field will be set to the name of the aggregation field,\n#   ## suffixed with the string '_topk_rank'\n#   # add_rank_fields = []\n#\n#   ## These settings provide a way to know what values the plugin is generating\n#   ## when aggregating metrics. The 'add_agregate_field' setting allows to\n#   ## specify for which fields the final aggregation value is required. If the\n#   ## list is non empty, then a field will be added to each every metric for\n#   ## each field present in this setting. This field will contain\n#   ## the computed aggregation for the group that the metric belonged to when\n#   ## aggregated over that field.\n#   ## The name of the field will be set to the name of the aggregation field,\n#   ## suffixed with the string '_topk_aggregate'\n#   # add_aggregate_fields = []\n\n\n# # Rotate multi field metric into several single field metrics\n# [[processors.unpivot]]\n#   ## Tag to use for the name.\n#   tag_key = \"name\"\n#   ## Field to use for the name of the value.\n#   value_key = \"value\"\n\n\n###############################################################################\n#                            AGGREGATOR PLUGINS                               #\n###############################################################################\n\n\n# # Keep the aggregate basicstats of each metric passing through.\n# [[aggregators.basicstats]]\n#   ## The period on which to flush & clear the aggregator.\n#   period = \"30s\"\n#\n#   ## If true, the original metric will be dropped by the\n#   ## aggregator and will not get sent to the output plugins.\n#   drop_original = false\n#\n#   ## Configures which basic stats to push as fields\n#   # stats = [\"count\", \"min\", \"max\", \"mean\", \"stdev\", \"s2\", \"sum\"]\n\n\n# # Report the final metric of a series\n# [[aggregators.final]]\n#   ## The period on which to flush & clear the aggregator.\n#   period = \"30s\"\n#   ## If true, the original metric will be dropped by the\n#   ## aggregator and will not get sent to the output plugins.\n#   drop_original = false\n#\n#   ## The time that a series is not updated until considering it final.\n#   series_timeout = \"5m\"\n\n\n# # Create aggregate histograms.\n# [[aggregators.histogram]]\n#   ## The period in which to flush the aggregator.\n#   period = \"30s\"\n#\n#   ## If true, the original metric will be dropped by the\n#   ## aggregator and will not get sent to the output plugins.\n#   drop_original = false\n#\n#   ## If true, the histogram will be reset on flush instead\n#   ## of accumulating the results.\n#   reset = false\n#\n#   ## Whether bucket values should be accumulated. If set to false, \"gt\" tag will be added.\n#   ## Defaults to true.\n#   cumulative = true\n#\n#   ## Example config that aggregates all fields of the metric.\n#   # [[aggregators.histogram.config]]\n#   #   ## Right borders of buckets (with +Inf implicitly added).\n#   #   buckets = [0.0, 15.6, 34.5, 49.1, 71.5, 80.5, 94.5, 100.0]\n#   #   ## The name of metric.\n#   #   measurement_name = \"cpu\"\n#\n#   ## Example config that aggregates only specific fields of the metric.\n#   # [[aggregators.histogram.config]]\n#   #   ## Right borders of buckets (with +Inf implicitly added).\n#   #   buckets = [0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0]\n#   #   ## The name of metric.\n#   #   measurement_name = \"diskio\"\n#   #   ## The concrete fields of metric\n#   #   fields = [\"io_time\", \"read_time\", \"write_time\"]\n\n\n# # Merge metrics into multifield metrics by series key\n# [[aggregators.merge]]\n#   ## If true, the original metric will be dropped by the\n#   ## aggregator and will not get sent to the output plugins.\n#   drop_original = true\n\n\n# # Keep the aggregate min/max of each metric passing through.\n# [[aggregators.minmax]]\n#   ## General Aggregator Arguments:\n#   ## The period on which to flush & clear the aggregator.\n#   period = \"30s\"\n#   ## If true, the original metric will be dropped by the\n#   ## aggregator and will not get sent to the output plugins.\n#   drop_original = false\n\n\n# # Count the occurrence of values in fields.\n# [[aggregators.valuecounter]]\n#   ## General Aggregator Arguments:\n#   ## The period on which to flush & clear the aggregator.\n#   period = \"30s\"\n#   ## If true, the original metric will be dropped by the\n#   ## aggregator and will not get sent to the output plugins.\n#   drop_original = false\n#   ## The fields for which the values will be counted\n#   fields = []\n\n\n###############################################################################\n#                            INPUT PLUGINS                                    #\n###############################################################################\n\n\n# Read metrics about cpu usage\n[[inputs.cpu]]\n  ## Whether to report per-cpu stats or not\n  percpu = true\n  ## Whether to report total system cpu stats or not\n  totalcpu = true\n  ## If true, collect raw CPU time metrics.\n  collect_cpu_time = false\n  ## If true, compute and report the sum of all non-idle CPU states.\n  report_active = false\n\n\n# Read metrics about disk usage by mount point\n[[inputs.disk]]\n  ## By default stats will be gathered for all mount points.\n  ## Set mount_points will restrict the stats to only the specified mount points.\n  # mount_points = [\"/\"]\n\n  ## Ignore mount points by filesystem type.\n  ignore_fs = [\"tmpfs\", \"devtmpfs\", \"devfs\", \"iso9660\", \"overlay\", \"aufs\", \"squashfs\"]\n\n\n# Read metrics about disk IO by device\n[[inputs.diskio]]\n  ## By default, telegraf will gather stats for all devices including\n  ## disk partitions.\n  ## Setting devices will restrict the stats to the specified devices.\n  # devices = [\"sda\", \"sdb\", \"vd*\"]\n  ## Uncomment the following line if you need disk serial numbers.\n  # skip_serial_number = false\n  #\n  ## On systems which support it, device metadata can be added in the form of\n  ## tags.\n  ## Currently only Linux is supported via udev properties. You can view\n  ## available properties for a device by running:\n  ## 'udevadm info -q property -n /dev/sda'\n  ## Note: Most, but not all, udev properties can be accessed this way. Properties\n  ## that are currently inaccessible include DEVTYPE, DEVNAME, and DEVPATH.\n  # device_tags = [\"ID_FS_TYPE\", \"ID_FS_USAGE\"]\n  #\n  ## Using the same metadata source as device_tags, you can also customize the\n  ## name of the device via templates.\n  ## The 'name_templates' parameter is a list of templates to try and apply to\n  ## the device. The template may contain variables in the form of '$PROPERTY' or\n  ## '${PROPERTY}'. The first template which does not contain any variables not\n  ## present for the device is used as the device name tag.\n  ## The typical use case is for LVM volumes, to get the VG/LV name instead of\n  ## the near-meaningless DM-0 name.\n  # name_templates = [\"$ID_FS_LABEL\",\"$DM_VG_NAME/$DM_LV_NAME\"]\n\n\n# Get kernel statistics from /proc/stat\n[[inputs.kernel]]\n  # no configuration\n\n\n# Read metrics about memory usage\n[[inputs.mem]]\n  # no configuration\n\n\n# Get the number of processes and group them by status\n[[inputs.processes]]\n  # no configuration\n\n\n# Read metrics about swap memory usage\n[[inputs.swap]]\n  # no configuration\n\n\n# Read metrics about system load & uptime\n[[inputs.system]]\n  ## Uncomment to remove deprecated metrics.\n  # fielddrop = [\"uptime_format\"]\n\n\n###############################################################################\n#                            SERVICE INPUT PLUGINS                            #\n###############################################################################\n\n\n[[inputs.syslog]]\n  server = \"tcp://localhost:6514\"\n\n# Statsd UDP/TCP Server\n[[inputs.statsd]]\n  ## Protocol, must be \"tcp\", \"udp\", \"udp4\" or \"udp6\" (default=udp)\n  protocol = \"udp\"\n\n  ## MaxTCPConnection - applicable when protocol is set to tcp (default=250)\n  max_tcp_connections = 250\n\n  ## Enable TCP keep alive probes (default=false)\n  tcp_keep_alive = false\n\n  ## Specifies the keep-alive period for an active network connection.\n  ## Only applies to TCP sockets and will be ignored if tcp_keep_alive is false.\n  ## Defaults to the OS configuration.\n  # tcp_keep_alive_period = \"2h\"\n\n  ## Address and port to host UDP listener on\n  service_address = \":8125\"\n\n  ## The following configuration options control when telegraf clears it's cache\n  ## of previous values. If set to false, then telegraf will only clear it's\n  ## cache when the daemon is restarted.\n  ## Reset gauges every interval (default=true)\n  delete_gauges = true\n  ## Reset counters every interval (default=true)\n  delete_counters = true\n  ## Reset sets every interval (default=true)\n  delete_sets = true\n  ## Reset timings & histograms every interval (default=true)\n  delete_timings = true\n\n  ## Percentiles to calculate for timing & histogram stats\n  percentiles = [50.0, 90.0, 99.0, 99.9, 99.95, 100.0]\n\n  ## separator to use between elements of a statsd metric\n  metric_separator = \"_\"\n\n  ## Parses tags in the datadog statsd format\n  ## http://docs.datadoghq.com/guides/dogstatsd/\n  parse_data_dog_tags = false\n\n  ## Parses datadog extensions to the statsd format\n  datadog_extensions = false\n\n  ## Statsd data translation templates, more info can be read here:\n  ## https://github.com/influxdata/telegraf/blob/master/docs/TEMPLATE_PATTERN.md\n  # templates = [\n  #     \"cpu.* measurement*\"\n  # ]\n\n  ## Number of UDP messages allowed to queue up, once filled,\n  ## the statsd server will start dropping packets\n  allowed_pending_messages = 10000\n\n  ## Number of timing/histogram values to track per-measurement in the\n  ## calculation of percentiles. Raising this limit increases the accuracy\n  ## of percentiles but also increases the memory usage and cpu time.\n  percentile_limit = 1000\n\n\n# Synology\n[[inputs.snmp]]\n   agents = [  \"172.17.0.1\" ]\n   interval = \"60s\"\n   timeout = \"30s\"\n   retries = 3\n   version = 2\n   community = \"public\"\n   max_repetitions = 30\n   name = \"snmp.SYNO\"\n   [[inputs.snmp.field]]\n     is_tag = true\n     name = \"sysName\"\n     oid = \"SNMPv2-MIB::sysName.0\"\n   #  System vendor OID\n   [[inputs.snmp.field]]\n     name = \"sysObjectID\"\n     oid = \"SNMPv2-MIB::sysObjectID.0\"\n   #  System description\n   [[inputs.snmp.field]]\n     name = \"sysDescr\"\n     oid = \"SNMPv2-MIB::sysDescr.0\"\n   #  System contact\n   [[inputs.snmp.field]]\n     name = \"sysContact\"\n     oid = \"SNMPv2-MIB::sysContact.0\"\n   #  System location\n   [[inputs.snmp.field]]\n     name = \"sysLocation\"\n     oid = \"SNMPv2-MIB::sysLocation.0\"\n   #  System uptime\n   [[inputs.snmp.field]]\n     name = \"sysUpTime\"\n     oid = \"DISMAN-EVENT-MIB::sysUpTimeInstance\"\n   # Inet interface\n   [[inputs.snmp.table]]\n     oid = \"IF-MIB::ifTable\"\n     [[inputs.snmp.table.field]]\n       is_tag = true\n     oid = \"IF-MIB::ifDescr\"\n     [[inputs.snmp.table.field]]\n      name = \"in\"\n     oid = \"IF-MIB::ifHCInOctets\"\n     [[inputs.snmp.table.field]]\n      name = \"out\"\n     oid = \"IF-MIB::ifHCOutOctets\"\n\n   #Syno disk\n   [[inputs.snmp.table]]\n     oid = \"SYNOLOGY-DISK-MIB::diskTable\"\n     [[inputs.snmp.table.field]]\n       is_tag = true\n     oid = \"SYNOLOGY-DISK-MIB::diskID\" \n   #Syno raid\n   [[inputs.snmp.table]]\n     oid = \"SYNOLOGY-RAID-MIB::raidTable\"\n     [[inputs.snmp.table.field]]\n       is_tag = true\n     oid = \"SYNOLOGY-RAID-MIB::raidName\" \n     [[inputs.snmp.table.field]]\n       name = 'raidStatus'\n     oid = \"SYNOLOGY-RAID-MIB::raidStatus\" \n   #Syno load\n   [[inputs.snmp.table]]\n     oid = \"UCD-SNMP-MIB::laTable\"\n     [[inputs.snmp.table.field]]\n       is_tag = true\n     oid = \"UCD-SNMP-MIB::laNames\"\n   #  System memTotalSwap\n   [[inputs.snmp.field]]\n     name = \"memTotalSwap\"\n     oid = \"UCD-SNMP-MIB::memTotalSwap.0\"\n   #  System memAvailSwap\n   [[inputs.snmp.field]]\n     name = \"memAvailSwap\"\n     oid = \"UCD-SNMP-MIB::memAvailSwap.0\"\n   #  System memTotalReal\n   [[inputs.snmp.field]]\n     name = \"memTotalReal\"\n     oid = \"UCD-SNMP-MIB::memTotalReal.0\"\n   #  System memAvailReal\n   [[inputs.snmp.field]]\n     name = \"memAvailReal\"\n     oid = \"UCD-SNMP-MIB::memAvailReal.0\"\n   #  System memTotalFree\n   [[inputs.snmp.field]]\n     name = \"memTotalFree\"\n     oid = \"UCD-SNMP-MIB::memTotalFree.0\"\n   #  System Status\n   [[inputs.snmp.field]]\n     name = \"systemStatus\"\n     oid = \"SYNOLOGY-SYSTEM-MIB::systemStatus.0\"\n   #  System temperature\n   [[inputs.snmp.field]]\n     name = \"temperature\"\n     oid = \"SYNOLOGY-SYSTEM-MIB::temperature.0\"\n   #  System powerStatus\n   [[inputs.snmp.field]]\n     name = \"powerStatus\"\n     oid = \"SYNOLOGY-SYSTEM-MIB::powerStatus.0\"\n   #  System systemFanStatus\n   [[inputs.snmp.field]]\n     name = \"systemFanStatus\"\n     oid = \"SYNOLOGY-SYSTEM-MIB::systemFanStatus.0\"\n   #  System cpuFanStatus\n   [[inputs.snmp.field]]\n     name = \"cpuFanStatus\"\n     oid = \"SYNOLOGY-SYSTEM-MIB::cpuFanStatus.0\"\n   #  System modelName\n   [[inputs.snmp.field]]\n     name = \"modelName\"\n     oid = \"SYNOLOGY-SYSTEM-MIB::modelName.0\"\n   #  System serialNumber\n   [[inputs.snmp.field]]\n     name = \"serialNumber\"\n     oid = \"SYNOLOGY-SYSTEM-MIB::serialNumber.0\"\n   #  System version\n   [[inputs.snmp.field]]\n     name = \"version\"\n     oid = \"SYNOLOGY-SYSTEM-MIB::version.0\"\n   #  System upgradeAvailable\n   [[inputs.snmp.field]]\n     name = \"upgradeAvailable\"\n     oid = \"SYNOLOGY-SYSTEM-MIB::upgradeAvailable.0\"\n   # System volume   \n   [[inputs.snmp.table]]\n     oid = \"HOST-RESOURCES-MIB::hrStorageTable\"\n   [[inputs.snmp.table.field]]\n       is_tag = true\n     oid = \"HOST-RESOURCES-MIB::hrStorageDescr\"\n   # System ssCpuUser \n   [[inputs.snmp.field]]\n     name = \"ssCpuUser\"\n     oid = \".1.3.6.1.4.1.2021.11.9.0\"\n   # System ssCpuSystem  \n   [[inputs.snmp.field]]\n     name = \"ssCpuSystem\"\n     oid = \".1.3.6.1.4.1.2021.11.10.0\"\n   # System ssCpuIdle   \n   [[inputs.snmp.field]]\n     name = \"ssCpuIdle\"\n     oid = \".1.3.6.1.4.1.2021.11.11.0\"\n   # Service users CIFS\n   [[inputs.snmp.field]]\n     name = \"usersCIFS\"\n     oid = \"SYNOLOGY-SERVICES-MIB::serviceUsers.1\"\n   # Service users AFP\n   [[inputs.snmp.field]]\n     name = \"usersAFP\"\n     oid = \"SYNOLOGY-SERVICES-MIB::serviceUsers.2\"\n   # Service users NFS\n   [[inputs.snmp.field]]\n     name = \"usersNFS\"\n     oid = \"SYNOLOGY-SERVICES-MIB::serviceUsers.3\"\n   # Service users FTP\n   [[inputs.snmp.field]]\n     name = \"usersFTP\"\n     oid = \"SYNOLOGY-SERVICES-MIB::serviceUsers.4\"\n   # Service users SFTP\n   [[inputs.snmp.field]]\n     name = \"usersSFTP\"\n     oid = \"SYNOLOGY-SERVICES-MIB::serviceUsers.5\"\n   # Service users HTTP\n   [[inputs.snmp.field]]\n     name = \"usersHTTP\"\n     oid = \"SYNOLOGY-SERVICES-MIB::serviceUsers.6\"\n   # Service users TELNET\n   [[inputs.snmp.field]]\n     name = \"usersTELNET\"\n     oid = \"SYNOLOGY-SERVICES-MIB::serviceUsers.7\"\n   # Service users SSH\n   [[inputs.snmp.field]]\n     name = \"usersSSH\"\n     oid = \"SYNOLOGY-SERVICES-MIB::serviceUsers.8\"\n   # Service users OTHER\n   [[inputs.snmp.field]]\n     name = \"usersOTHER\"\n     oid = \"SYNOLOGY-SERVICES-MIB::serviceUsers.9\"\n"
  },
  {
    "path": "docker-compose.yml",
    "content": "version: '3'\r\nservices:\r\n  grafana:\r\n    build: ./docker/\r\n    container_name: grafana\r\n    environment:\r\n      TZ: Europe/London\r\n    restart: unless-stopped\r\n    volumes:\r\n      - ./grafana:/var/lib/grafana\r\n      - ./grafana/influxdb:/var/lib/influxdb\r\n    ports:\r\n      - 3003:3003\r\n      - 8086:8086\r\n      - 5144:514/udp\r\n"
  }
]