Extensions
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

GEO MAP for Meraki Devices

GregOReilly
Advisor

I am looking for a way to present the Meraki Device Status metrics on a map/geo visual in the new dashboards.

Each device has these properties. I can also add Tags like country=france. 

GregOReilly_0-1762880495914.png

Has anyone worked this out?

15 REPLIES 15

DanielS
DynaMight Guru
DynaMight Guru

Hello @GregOReilly you have Latitude and Longitude which are the most important details to graph on a map. 
I attach some examples so you can play with this data and then create a DQL of your own with the data of the Meraki devices.

data
    record(flightNo="DT123", geo.location.latitude=48.2195335, geo.location.longitude=16.3784883), //Vienna
    record(flightNo="DT123", geo.location.latitude=41.3826807, geo.location.longitude=2.1770239), //Barcelona
    record(flightNo="DT456", geo.location.latitude=48.2195335, geo.location.longitude=16.3784883), //Vienna
    record(flightNo="DT456", geo.location.latitude=48.1379879, geo.location.longitude=11.575182), //Munich
    record(flightNo="DT354", geo.location.latitude=48.2195335, geo.location.longitude=16.3784883), //Vienna
    record(flightNo="DT354", geo.location.latitude = 51.509865, geo.location.longitude = -0.118092), //London
    record(flightNo="DT985", geo.location.latitude=48.2195335, geo.location.longitude=16.3784883), //Vienna
    record(flightNo="DT985", geo.location.latitude = 52.520008, geo.location.longitude = 13.404954), //Berlin
    record(flightNo="DT111", geo.location.latitude=48.2195335, geo.location.longitude=16.3784883), //Vienna
    record(flightNo="DT111", geo.location.latitude = 48.864716, geo.location.longitude = 2.349014) //Paris
| summarize by:{flightNo}, geo.location.latitude=collectArray(geo.location.latitude), geo.location.longitude=collectArray(geo.location.longitude)

Another example:

data
    record(latitude = 51.509865, longitude = -0.118092, value = 255),
    record(latitude = 48.864716, longitude = 2.349014, value = 72),
    record(latitude = 40.73061, longitude = -73.935242, value = 31),
    record(latitude = 35.652832, longitude = 139.839478, value = 84),
    record(latitude = -33.865143, longitude = 151.2099, value = 15),
    record(latitude = 55.751244, longitude = 37.618423, value = 66),
    record(latitude = 52.520008, longitude = 13.404954, value = 87),
    record(latitude = 41.902609, longitude = 12.494847, value = 48),
    record(latitude = 39.9042, longitude = 116.407394, value = 19),
    record(latitude = 19.432608, longitude = -99.133209, value = 5)

 

Remember to choose this type of graphs under visualization:

DanielS_0-1762881399618.png

 

Dynatrace Certified Professional @ www.dosbyte.com

GregOReilly
Advisor

Thanks for the your speedy response....so I can dynamically translate my LONG and LAT values into meaningful/workable map data?

 

GregOReilly_0-1762882338927.png

 

Yes sir, luckily you have the more important info just there. I have a case where I need to query an API by IP to retrieve Lat and Long.

Dynatrace Certified Professional @ www.dosbyte.com

We have the devices and each device already has the long and lat values as you can see. Can we perform lookup where we translate each value pair to a country/city?

I tried to add a tag country=france and this is not readable in the DQL/Metrics.

Yes, you can use the new Lookup data in Grail.

I've tried your part of data with random values to have an example for you.

DanielS_0-1762883649039.png

 

Dynatrace Certified Professional @ www.dosbyte.com

Brilliant - going to try this today!

Thank you - Greg

GregOReilly
Advisor

Thank you Daniel - this is fantastic! We now have a much nicer Meraki Dashboard that we had before!

 

GregOReilly_0-1762949860604.png

 

Great work!!!! Happy to see the results!!! Thanks,

Dynatrace Certified Professional @ www.dosbyte.com

GregOReilly
Advisor

I have actually another use case. Its simple, but effective.

Synthetic tests....lets say we have www.domain.co.uk and www.domain.ie.

Instead of mapping the location of the test agent - I want to map co.uk tests to the UK. And tests with domains .ie to Ireland. 

Would this be possible, perhaps if I add country= or location= to the tests?

I use https://ip-api.com/ with the IP address of the domain, and this site gave you lat and long to be used on the map.

Dynatrace Certified Professional @ www.dosbyte.com

vijayakumarYal
Visitor

Thanks to everyone! I’ve gone through the discussions about visualizing Meraki device information in a map view using coordinates. This helped me create a dashboard with the same view successfully!

And  I would now like to extend it further by showcasing device status directly on the same map view. Specifically, the extended view and this view should highlight/populate impacts or issues whenever they occurs on a Meraki device , so that device status is immediately visible in context.

Device Status like the below:

Device Status.png

Is it possible to implement this extended view? If yes, I would appreciate your guidance on how best to present it.

hello, yes off course, your dataset:

data
    record(deviceId="DV001", latitude=51.509865, longitude=-0.118092, status="alerting"),   // London
    record(deviceId="DV002", latitude=48.864716, longitude=2.349014, status="online"),     // Paris
    record(deviceId="DV003", latitude=40.73061, longitude=-73.935242, status="offline"),   // New York
    record(deviceId="DV004", latitude=35.652832, longitude=139.839478, status="online"),   // Tokyo
    record(deviceId="DV005", latitude=-33.865143, longitude=151.2099, status="dormant"),   // Sydney
    record(deviceId="DV006", latitude=55.751244, longitude=37.618423, status="alerting"),  // Moscow
    record(deviceId="DV007", latitude=52.520008, longitude=13.404954, status="online"),    // Berlin
    record(deviceId="DV008", latitude=41.902609, longitude=12.494847, status="offline"),   // Rome
    record(deviceId="DV009", latitude=39.9042, longitude=116.407394, status="dormant"),    // Beijing
    record(deviceId="DV010", latitude=19.432608, longitude=-99.133209, status="online")    // Mexico City

 

and your expected result should be:

map.png
Dynatrace Certified Professional @ www.dosbyte.com

Hi @DanielS , Thanks for your quick response! I think adding the device status manually as a data record won’t provide accurate or detailed insights. Actually, I have thought to fetch the device status in real-time using DQL so that we can display the alert status in a dot/world map view.

For example, If I set “DV006” with the status “alerting,” it will always display as alerting even if the device has no actual impact, but I want something which gives clear communication as the device is impacted.

    record(deviceId="DV006", latitude=55.751244, longitude=37.618423, status="alerting"),  // Moscow
    record(deviceId="DV007", latitude=52.520008, longitude=13.404954, status="online"),    // Berlin
    record(deviceId="DV008", latitude=41.902609, longitude=12.494847, status="offline"),

 

Hi, @vijayakumarYal yes, what i share is only to let you know that you can do it. Is only a test dataset, the idea is that you can use real time data through fetch and your ingested data.

Dynatrace Certified Professional @ www.dosbyte.com

GregOReilly
Advisor

Almost forgot about this thread, hopefully the Network / Meraki engineers in Dynatrace are making note. Being able to see SITE and DEVICE health across an organisation is a critical feature. Luckily thanks to this, I now use the same approach for servers, network devices, clouds(I use the LONG LAT to map region and problems). 

Very nice"!

Featured Posts