The INTJ Billing Bitcoin Lightning Network Grafana Dashboard

Posted 5 months ago by CHILLYCALENDAR

Hi Everyone,

I hope you're all well.

I wanted to let you all know about some work I have been doing recently with  Grafana which may be of interest to you as fellow node runners.

Using Grafana and the forwarding logs from my RTL instance I have created a public dashboard of my primary Bitcoin Lightning Network node CHILLYCALENDAR (which is currently the 3rd highest ranked node in terms of capacity in Australia and the highest ranked in Melbourne thanks to you, my amazing fellow node runners and this fantastic website).   My dashboard contains a connect now button which links to a lightning page on my website where other node runners can easily connect to my node and open channels.  I might add an additional button that links to this website as well.

The dashboard can be seen at this link:

I was greatly inspired by the dashboard that LQWD the publicly listed Lightning Network company in Canada developed.  I became aware of their dashboard when they opened a channel to my node recently.  My dashboard is a work in progress and it could use some further refinements but I think most of the basics are there.

As most of you will know, creating dashboards like this for Bitcoin and the Bitcoin Lightning Network at the moment is quite difficult.  It will get easier as more developers build tools which automate a lot of the programming, configuration and integration work I had to do to get all this working. 

I used Grafana with a MariaDB.  I exported the forwarding data from RTL, populated the database, connected it up to Grafana as a data source and then created the dashboards.  I utilised ChatGPT as well for some of the queries.  At the moment it's a manual process to export the forwarding logs from RTL and import them into MariaDB but I have reached out to the developers of RTL to find out the MySQL queries they use on the underlying lightning sqlite database to form the view and CSV file from RTL.  I did look at the underlying schema of the sqlite db but I thought it would be better to reach out to the RTL devs directly and find out exactly how they do it.  My Grafana instance has been set up on another VPS and not on CHILLYCALENDAR.  I created a new A record on my webhost for and pointed it to my VPS where I have Grafana running.  That VPS is running Apache with a number of virtual hosts one of which is Grafana.

As we know Bitcoin is a pseudo anonymous open public ledger.  Public dashboards like these I think can give regulators more confidence in those of you who like myself are running lightning network digital exchanges.

If any of you as my fellow node runners would like more details about how I did this and would like to set up a similar dashboard for your nodes or would like to collaborate with me on improving and refining my dashboard so we can come up with an even better one by working together on it please do feel free to reach out to me and I'll provide you with all the code and details.

I have also been hard at work recently populating links at the bottom section of my website some of those links will be of interest to you as fellow node runners as they make it easier for us to run our nodes keeping access to all the important websites  in the one place for quick access.

Almost everything I'm doing with lightning is open source and free for you all.  Just reach out to me if you see anything I have done that you like and I'll provide it to you.

With Very Best Regards,


Clarke Towson, BCMS (Bachelor of Computer & Mathematical Science)
INTJ Billing

m: +61 432 359 166
a: 7 Cullen Court Spotswood Victoria 3015 AUSTRALIA
Bitcoin Lightning Network Node Name: CHILLYCALENDAR 
Node Public Key: 025124c73ef7ecf527e0114ead02a0cc6e3ecbc0c99474ee3f5506c4503b089693 


schulzemic wrote 4 months ago

I did something similar using the forwarding data from LNDG with their postgresql backend and found it very easy to extract the data with Grafana, with a query such as:
SELECT forward_date as time, amt_out_msat / 1000 as outgoing_amt_sat, 1000000000 * fee / amt_out_msat as fee_ppm, chan_in_alias as Incoming, chan_out_alias as Outgoing from gui_forwards
WHERE $__timeFilter(forward_date)


CHILLYCALENDAR wrote 4 months ago

Thank you for that advice very much appreciated.  I will look into doing it that way.
Best Regards,

Please login to post comments.