Ultimate UNRAID Dashboard (UUD)


Recommended Posts

Hi everyone. I am pleased how far the Ultimate UNRAID Dashboard has come since version 1.0

 

Since I started developing this thing, one of the most frequent questions I still get is "Do you have a way I can support you and the UUD? Do you have a donations page?" Even UNRAID themselves have asked this question when posting the UUD across social media platforms and the official newsletter.

 

Up until now, I have not engaged in this kind of support because this was just a fun hobby I did in my spare time. Now that we are at version 1.5, supporting the UUD & assisting users with questions/issues/custom panels/1-on-1 virtual meetings, has become very time consuming. My Wife has even asked me "are you even getting paid for this?" ha ha. I blush and say no, it's not that kind of thing...

 

However, I very much appreciate every single one of you and your positive feedback. And if you would like to officially support the UUD and my work, I have finally set up something for you. Click the link below to show your LOVE.

 

support.png.c55558d7263112a1338d235445cfa44e.png

 

There is still much more to come in future versions of the UUD, and I am already hard at work on version 1.6. Thanks again guys for your enthusiasm and support of this thing. It's been a fantastic experience!

Link to comment
17 hours ago, falconexe said:

Hey corgan. I am looking for some new additions to the Ultimate UNRAID Dashboard (UUD) version 1.6. I am ready to give this is shot and would like to see if we can include this. Can you please share your code/API/Instructions with me so we can get this done? I'll add you as an official contribute to the project. Let me know. Thanks.

 

 

 

Hey, yeah sorry, i wanted to write this down for quite some time.

So the goal was to view and controll dockers and VMs from in Grafana.

 

- Status of Container / VMs

- display the container/vm Icons

- Enable/disable Container / VMs


Short:

install Unraid API Plugin

install Grafana JSON API Plugin

install Grafana dynamic Image Plugin


Long:

To get these Infos, i use the Electric Brain Unraid API

 

firefox_6Cv0mzltg6.thumb.png.29153417384835f0911aca8f9cbf8cc5.png


Luckily, this Unraid Addon creates an Json API, wich we can use. There is nothing special about the APi. Just install and setup.

 

The second Part is to show the Data from the Unraid API in Grafana. Therefore im using the Grafana Plugin grafana-json-datasource
https://grafana.com/grafana/plugins/marcusolsson-json-datasource?pg=plugins&plcmt=featured-undefined&src=grafana_footer

https://github.com/marcusolsson/grafana-json-datasource?utm_source=grafana_add_ds

 

Install this in Datasource Plugin in Grafana and create a new Datasource.
Enter your Unraid IP, with the Port of the API and add /api/getServers

 

like http://192.168.x.x:3005/api/getServers

 

grafik.thumb.png.1b15421d2ea26a058e091ac1ed8c242b.png

 

 

From here, we just have to display the Unraid API Data in some nice way.

 

firefox_LvXJpWlZ8u.thumb.png.882ed27553fcb7866a0a19855f32e2a5.png

 

So how to use the new created Json Datasource

Examples

 

Get all VMs

$.['servers']['192.168.2.254']['vm']['details'][*].name

Get the status of theses VMs

$.['servers']['192.168.2.254']['vm']['details'][*].status

firefox_ZAWQQym25d.thumb.png.79362e05eb42504dbfac366bccdea523.png

 

Get all Docker Container

 

$.['servers']['192.168.2.254']['docker']['details']['containers'][*].name
$.['servers']['192.168.2.254']['docker']['details']['containers'][*].status
$.['servers']['192.168.2.254']['docker']['details']['containers'][*].imageUrl

 

If you only want to see the running Container

 

$.['servers']['192.168.2.254']['docker']['details']['containers'][?(@.status== 'started')].name

 

From here we can make a Panel which show only the running Container as Icons. For this we need another Grafana Plugin, called Dynamic image panel

https://grafana.com/grafana/plugins/dalvany-image-panel?pg=plugins&plcmt=featured-undefined&src=grafana_footer

 

We use again our JSON Datasource and seraching for all started container, get the imageurl and the Container Name as Tooltip. You have to add your Unraid URL as Base URL.

 

$.['servers']['192.168.2.254']['docker']['details']['containers'][?(@.status== 'started')].imageUrl
$.['servers']['192.168.2.254']['docker']['details']['containers'][?(@.status== 'started')].name

firefox_pZGAKZPGei.thumb.png.fe123d0b37bf107fc05de1a9186f2ba9.png


 

just ask, if there are any Questions left.

 

 

  • Like 1
  • Thanks 1
Link to comment
16 hours ago, corgan said:

 

 

Hey, yeah sorry, i wanted to write this down for quite some time.

So the goal was to view and controll dockers and VMs from in Grafana.

 

- Status of Container / VMs

- display the container/vm Icons

- Enable/disable Container / VMs


Short:

install Unraid API Plugin

install Grafana JSON API Plugin

install Grafana dynamic Image Plugin


Long:

To get these Infos, i use the Electric Brain Unraid API

 

firefox_pZGAKZPGei.thumb.png.fe123d0b37bf107fc05de1a9186f2ba9.png


 

just ask, if there are any Questions left.

 

 

 

Fantastic man. I’ll dive into this and see if I can natively and easily incorporate this into the UUD version 1.6. Thanks for sharing your knowledge!

 

Edited by falconexe
  • Like 1
Link to comment

Another really cool thing happened today. @SpencerJ has featured the UUD as the very FIRST recipient of the "Best of the Forum" blog.🥇

 

 

image.png.d34922cfe3218be657a0a79be9a7ddc8.png

 

 

I wanted to personally thank him for writing up this article and for his continued support of our work.

 

 

You can check out the blog post here. ☺️

 

https://unraid.net/blog/ultimate-unraid-dashboard

 

Edited by falconexe
  • Like 1
  • Thanks 2
Link to comment
On 9/14/2020 at 4:32 AM, falconexe said:

Telegraf Pugin - [[inputs.diskio]]

Noticed a typo in the first page btw..

 

I'm really looking forward to giving this a shot. Bit confused on the various tutorials and all, but I'll dive into the one GilbN has on his blog first and follow along.

 

Thanks much for the hard work you guys have done on this.

  • Like 1
  • Thanks 1
Link to comment
1 minute ago, rs5050 said:

Noticed a typo in the first page btw..

 

I'm really looking forward to giving this a shot. Bit confused on the various tutorials and all, but I'll dive into the one GilbN has on his blog first and follow along.

 

Thanks much for the hard work you guys have done on this.

 

Thanks. I'll get that updated. I'm mulling over creating a FULL tutorial. Yeah, I'll just do it ha ha. Let me know if you need any help! Welcome to the community.

  • Like 1
  • Thanks 1
Link to comment
4 minutes ago, falconexe said:

I'm mulling over creating a FULL tutorial. Yeah, I'll just do it ha ha. Let me know if you need any help! Welcome to the community.

haha sounds good. I'm happy to hold off to test any steps if you'd like as well. I haven't done much with dashboards in unraid yet, but I do database work for the day job, so I'm looking forward to diving into it here.

  • Like 1
Link to comment
15 minutes ago, rs5050 said:

haha sounds good. I'm happy to hold off to test any steps if you'd like as well. I haven't done much with dashboards in unraid yet, but I do database work for the day job, so I'm looking forward to diving into it here.

 

If your a DB person then you'll love Grafana. I'm a SQL/DBA guy professionally, among other IT things. I'd say follow Gilbn's website for starters, but don't hold off on my account. I knew absolute zero when I first started and here we are... I have a second server that I will start from the ground up on and document each and every install step, It will take me some time, but I'll post it on page 1 once ready. I would say stick with installing the 3 main dockers (Grafana/Telegraf/InfluxDB) manually. Good luck!

 

Edited by falconexe
  • Thanks 1
Link to comment
On 1/6/2021 at 1:12 AM, falconexe said:

 

Ah that makes COMPLETE sense now. Thanks for pointing this out!

 

People using GUS have a different hardcoded path due to using the all in one package (which testdasi set in the GUS docker parameters), whereas most UUD users, including myself, who use the standalone dockers, it just works as currently coded.

 

I’ll add Gilbn’s trick to a development panel, and then I’ll need some people to test the dev code on GUS. If resolved for both flavors of docker setup, I’ll release the fix officially in UUD version 1.6.

 

I’ll be in touch once we’re ready to test. Thanks guys.

 

No problem, glad to help. I’d be happy to test it.

Link to comment

When I install Telegraf with post args of 

/bin/sh -c 'apk update && apk upgrade && apk add ipmitool && apk add smartmontools && telegraf'

Then Telegraf doesn't run, container logs return

/bin/sh: 1: apk: not found

I assume I'm doing something wrong but would like to see if anyone knows what based on this, thanks!

Edited by CorneliousJD
Link to comment
17 minutes ago, ElBurrito said:

No problem, glad to help. I’d be happy to test it.

 

Here you go. Please test this with the Grafana UNRAID Stack (GUS). This is confirmed working with the manual docker install setup on my end.

 

image.png.517151be59fc897b20124e178e041c2f.png

 

Create a new panel and post the following JSON into it. Then apply.

 

{
  "datasource": "$Datasource_Telegraf",
  "description": "Note: Change Path to \"mnt/user\" if Cache Drive is Not Present",
  "fieldConfig": {
    "defaults": {
      "custom": {
        "align": null
      },
      "unit": "decbytes",
      "thresholds": {
        "mode": "absolute",
        "steps": [
          {
            "color": "rgb(64, 138, 255)",
            "value": null
          }
        ]
      },
      "mappings": []
    },
    "overrides": []
  },
  "gridPos": {
    "h": 6,
    "w": 3,
    "x": 3,
    "y": 5
  },
  "id": 173,
  "links": [],
  "options": {
    "reduceOptions": {
      "values": false,
      "calcs": [
        "lastNotNull"
      ],
      "fields": ""
    },
    "orientation": "auto",
    "textMode": "auto",
    "colorMode": "value",
    "graphMode": "area",
    "justifyMode": "auto"
  },
  "pluginVersion": "7.3.3",
  "targets": [
    {
      "alias": "Array Total",
      "dsType": "influxdb",
      "groupBy": [
        {
          "params": [
            "$__interval"
          ],
          "type": "time"
        }
      ],
      "measurement": "disk",
      "orderByTime": "ASC",
      "policy": "default",
      "query": "SELECT last(\"used\") AS \"Used\", last(\"free\") AS \"Free\", last(\"total\") AS \"Total\" FROM \"disk\" WHERE (\"path\" = '/rootfs/mnt/user0' AND \"host\" =~ /^$host$/) AND $timeFilter GROUP BY \"path\"",
      "rawQuery": false,
      "refId": "A",
      "resultFormat": "time_series",
      "select": [
        [
          {
            "params": [
              "total"
            ],
            "type": "field"
          },
          {
            "params": [],
            "type": "last"
          }
        ]
      ],
      "tags": [
        {
          "key": "path",
          "operator": "=~",
          "value": "/.*user0/"
        },
        {
          "condition": "AND",
          "key": "host",
          "operator": "=~",
          "value": "/^$Host$/"
        }
      ]
    }
  ],
  "title": "Array Total",
  "type": "stat",
  "hideTimeOverride": false,
  "interval": "",
  "timeFrom": null,
  "timeShift": null
}

 

Link to comment
9 minutes ago, CorneliousJD said:

When I install Telegraf with post args of 


/bin/sh -c 'apk update && apk upgrade && apk add ipmitool && apk add smartmontools && telegraf'

Then Telegraf doesn't run, container logs return


/bin/sh: 1: apk: not found

I assume I'm doing something wrong but would like to see if anyone knows what based on this, thanks!

 

Did you create and place the Telegraf config in the appdata folder?

Link to comment
1 hour ago, CorneliousJD said:

When I install Telegraf with post args of 


/bin/sh -c 'apk update && apk upgrade && apk add ipmitool && apk add smartmontools && telegraf'

Then Telegraf doesn't run, container logs return


/bin/sh: 1: apk: not found

I assume I'm doing something wrong but would like to see if anyone knows what based on this, thanks!

Use the alpine tag in the Repository field. 

Link to comment
On 1/5/2021 at 10:12 PM, ElBurrito said:

@RockDawgI think i saw you're the GUS docker for your Grafana? I believe when I setup Grafana on my server to test a while back, i used the standalone docker and those I had to manually configure the paths i wanted (/mnt/user or /mnt/user0 or /) for the container. When I started messing with this dashboard, I installed the GUS docker and in that / is mapped to /rootfs/ for the container. 

Not sure if that kinda of answers/helps you with anything but I can say, you aren't alone. The array stats didn't work for me either I had to go in and adjust the panels to point to "/rootfs/mnt/user0"

Screen Shot 2021-01-05 at 9.00.43 PM.png

Screen Shot 2021-01-05 at 9.04.37 PM.png

 

You are correct that I am running GUS.  

Link to comment
4 hours ago, falconexe said:

 

Here you go. Please test this with the Grafana UNRAID Stack (GUS). This is confirmed working with the manual docker install setup on my end.

 

image.png.517151be59fc897b20124e178e041c2f.png

 

Create a new panel and post the following JSON into it. Then apply.

 


{
  "datasource": "$Datasource_Telegraf",
  "description": "Note: Change Path to \"mnt/user\" if Cache Drive is Not Present",
  "fieldConfig": {
    "defaults": {
      "custom": {
        "align": null
      },
      "unit": "decbytes",
      "thresholds": {
        "mode": "absolute",
        "steps": [
          {
            "color": "rgb(64, 138, 255)",
            "value": null
          }
        ]
      },
      "mappings": []
    },
    "overrides": []
  },
  "gridPos": {
    "h": 6,
    "w": 3,
    "x": 3,
    "y": 5
  },
  "id": 173,
  "links": [],
  "options": {
    "reduceOptions": {
      "values": false,
      "calcs": [
        "lastNotNull"
      ],
      "fields": ""
    },
    "orientation": "auto",
    "textMode": "auto",
    "colorMode": "value",
    "graphMode": "area",
    "justifyMode": "auto"
  },
  "pluginVersion": "7.3.3",
  "targets": [
    {
      "alias": "Array Total",
      "dsType": "influxdb",
      "groupBy": [
        {
          "params": [
            "$__interval"
          ],
          "type": "time"
        }
      ],
      "measurement": "disk",
      "orderByTime": "ASC",
      "policy": "default",
      "query": "SELECT last(\"used\") AS \"Used\", last(\"free\") AS \"Free\", last(\"total\") AS \"Total\" FROM \"disk\" WHERE (\"path\" = '/rootfs/mnt/user0' AND \"host\" =~ /^$host$/) AND $timeFilter GROUP BY \"path\"",
      "rawQuery": false,
      "refId": "A",
      "resultFormat": "time_series",
      "select": [
        [
          {
            "params": [
              "total"
            ],
            "type": "field"
          },
          {
            "params": [],
            "type": "last"
          }
        ]
      ],
      "tags": [
        {
          "key": "path",
          "operator": "=~",
          "value": "/.*user0/"
        },
        {
          "condition": "AND",
          "key": "host",
          "operator": "=~",
          "value": "/^$Host$/"
        }
      ]
    }
  ],
  "title": "Array Total",
  "type": "stat",
  "hideTimeOverride": false,
  "interval": "",
  "timeFrom": null,
  "timeShift": null
}

 

 

That works for me in GUS.

  • Thanks 1
Link to comment
1 minute ago, CorneliousJD said:

Where is your guide at? I was going off the install guidance in the first post of this thread, but if you have something more detailed I'd like to take a look, thanks in advance!

https://technicalramblings.com/blog/how-to-setup-grafana-influxdb-and-telegraf-to-monitor-your-unraid-system/

You still need to do some of the "Dependencies" part in the instructions from this topic after you follow that guide btw. 

  • Like 1
  • Thanks 1
Link to comment
3 minutes ago, GilbN said:

@falconexe Btw, you should add a Datasource dropdown for the Varken panels. Not all have called their data source "Varken"

 

I instruct them to call it “Varken”. We’ll see if everyone follows directions. I suppose that makes sense if someone already has a datasource for Varken that is not called “Varken”. I’ll look into it. Thx.

 

Edited by falconexe
  • Like 1
Link to comment
1 hour ago, CorneliousJD said:

Where is your guide at? I was going off the install guidance in the first post of this thread, but if you have something more detailed I'd like to take a look, thanks in advance!


This is also found in the tutorials section on POST #3 of this topic.

 

Edited by falconexe
Link to comment

I had to install the grafana-worldmap-panel and the grafana-piechart-panel for those specific panels to show up under my plex section.

image.thumb.png.d322641ac0ec87ac31e6341d78e68a1c.png

 

Just paste these 2 commands in the Grafana docker console and then restart the container 😁

grafana-cli plugins install grafana-worldmap-panel
grafana-cli plugins install grafana-piechart-panel 

 

Great progress in 1.5!

Link to comment
31 minutes ago, MammothJerk said:

I had to install the grafana-worldmap-panel and the grafana-piechart-panel for those specific panels to show up under my plex section.

image.thumb.png.d322641ac0ec87ac31e6341d78e68a1c.png

 

Just paste these 2 commands in the Grafana docker console and then restart the container 😁


grafana-cli plugins install grafana-worldmap-panel

grafana-cli plugins install grafana-piechart-panel 

 

Great progress in 1.5!


Thanks man. Yep those commands are included in the Varken github install guide that I linked in the release notes. Thanks for sharing! Glad you are loving 1.5.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.