The overall monitoring app can be written as a web app (and probably should - so the admin can check it from anywhere - like if he's on a call working on a failed kiosk
) The actual app on the kiosk can be too, with a few wrinkles. An overall working/not working can be done easily with a simple request to the machine - but this doesn't say what failed - machine could be down - broken or someone just tripped over the cord and unplugged it, or network could be out somewhere between the monitoring app and the kiosk. Monitoring the printer is a little more difficult - unless the printer has some sort of web interface that your app can query - because if your kiosk app is a web app - it's not printing directly to the printer - the web browser on that machine is - so you don't get "Out of Paper" or "Printer Disconnected" errors directly in your app. You may need a separate program to do this, depending on the printer.