As far as I know, one way to do it is to check frequently the
remaining of battery which is complicated (using more hardware and
I just need to trigger the remote server when it is in low-power, no
need to define the accuracy measurement of remaining in battery.
You have the scope with this design to collect data which will help you to trigger this event at the best time - this is the great advantage of IoT designs compared with trying to implement a feature without two-way connectivity.
The lead-acid battery is a fairly simple beast. On charge, the voltage rises to around 14.2V, and will drop over time (at rest) to 12V. With a load, the voltage will drop a little - depending on the load. Close to discharge, it will drop faster. See this answer for an example discharge curve.
With a 10V zenner dropper and a clamping circuit, you can measure 10-13.3V full-scale using the ADC. This is enough to identify discharge, but you will want to monitor and adjust the threshold that you use. You might find that temperature affects the threshold that you use, along with time since the engine was running (and many other variables).
By collecting more data, you have the opportunity to make indirect measurements, and even to identify changes in behaviour which can give you early warning of faults.