I wanted to share a project we have been working on to better track our servers’ performance, along with other systems involved.
This is a work in progress, but here are some screenshots of what we’ve put together:
- InfluxDB: Time Series database to store metrics
- Custom node.js service to collect Ignition Gateway’s metrics (We are planning on building a module, but this was our shortest path to completion )
- Telegraf: service to collect Windows, VMWare, JVM MBeam, MQTT, and other sets of data
- Grafana: visualization tool
What are we tracking:
- Pretty much anything that is available in the Gateway’s homepage (related to performance and system status)
- Network Traffic
- Disk I/O
- Same as above, including stats from other machines that share the Host with the Ignition Gateway
Java Virtual Machine:
We are cleaning up the code some and will share the node service code and telegraf config files on github soon. In the meantime we’d love your feedback!
That is a really professional dashboard. Great work!
Very cool. Are you guys using this info to do anything actionable, or is it mostly a sanity/healthwatch style use case?
Either way, nice job.
We are using it to troubleshoot issues at the moment; we have visibility of all the layers involved in our environments: Gateway, guest OS, and VMWare Host - as well as the different MPLS links to remote facilities.
it’s early on, but the plan is to use the alarming features built into the Stack to warn us of trends. We are starting to design how to include application-level metrics into this framework; things like how long does a specific REST call takes, how long each production model area takes to update OEE values and so on.
Ideally, all this granularity would be built into Ignition out of the box (hint hint ), but for the time being this will suffice.
How you built Grafana inside ignition? It have amazing visualization tools.
Grafana is just the visualization layer; we wrote a node.js service that will grab the Ignition performance/etc data from the gateway itself. Nothing too fancy, but it works. I’ll share this week if I get time to clean it up!
I’m interested in the node.js service as well (I would like to integrate with zabbix)
Yes I would be interested in the node.js service as well as I am evaluating how to use Grafana to visualize the historical data in Ignition…
I’m trying to do something just like this. Amazing work! Did you get a chance to share it?
In 2022, I'm wondering how he has done that. I hope somebody has received what he has done.. can anyone share that project or the concept he is doing, and how can we take those data from the gateway?
I'm really interested... Can someone guide me on this?
Yeah, quite an interesting project, great job!
Is January 2023, do you have any update on the node.js code?
I wonder how you get data from Ignition's gateway? Is there any some sort of API?
Or is it already available in Ignitions OPCUA server?
I wanna do this also, but I am just a little bit new to ignition, but I am a nodejs programmer, so I kinda like to do the same thing and share it to community, I just need the concept on "how" you get the data wether thru API, Web scraping or etc.
What information do you want? And why?
Have a look in Tag Browser, select System from the dropdown and explore the Gateway section. You can display any of this information in an Ignition Vision or Perspective application.
Thanks for answering! So it means it is already part of the Ignition's built-in OPCUA server. In that case
We don't have to create custom nodejs apps to send data to Influxdb and view it in grafana. Telegraf or nodered can read data via opcua and store it influxdb.
Probably not what you are thinking. Ignition's OPC UA server exposes driver data and optionally Ignition tag data in a bare-bones fashion.
If you want Ignition to reach out to other services that have web APIs, Ignition's
system.net.httpClient() scripting tool can do this, using whatever data triggers or timed operations you choose. From Ignition's jython scripting capabilities.
If you want other services to reach out to Ignition to pull data or trigger actions, you will need to implement a web API within Ignition using Ignition's optional WebDev module. You implement such APIs in jython again.
You will have near zero use of any nodejs skills within Ignition.
I think you have misunderstood the subject matter of this thread. The OP is tracking the performance of the Ignition gateway. He's not discussing passing data from more general (and typical) Ignition applications out to other services. Note that you didn't answer my question about what information you want (or why) so we can't be any more helpful at this time.
The original post explains the stack pretty well. Nowadays, Ignition exposes a lot of the gateway-level metrics are being exposed via the OPC-UA Server so a nodejs service may not be necessary. JVM metrics would still need to be gathered with Jolokia (JVM Metrics - Jolokia 2 | Grafana Labs)
Yup! This is exactly the answer, thanks for clarifying it to us!