You could accomplish this through the API: list applications → list devices for each application → get device for each device. This will give you the last_seen for each device and you could use that to determine what devices are on or offline.
This depends on your integrations, If you plan to just use the Azure service bus, this is a per application integration, and means that you would have to configure it for each application you have. Messy, but do-able, especially if you leverage the API.
Ideally you could use a global integration that is configured in your chirpstack.toml rather than the UI or API, you can view those in the [integration] section here: Configuration - ChirpStack open-source LoRaWAN® Network Server documentation.
Again you would have to use the API to retrieve the list of devices with a certain flag, the same way I already outlined
The GPS location is sent by the gateway, so it must be configured there if possible.