Você precisa de uma sub-rotina de pós-inicialização que consultará o serviço para saber se ele está ou não fornecendo o serviço esperado. Então, algo parecido com
post-start script
for try in 1 2 3 4 5 ; do
if xyzadmin --ping ; then
exit 0
fi
sleep 1
done
logger -t xyz-upstart -p daemon.err "failed to start within $try seconds, aborting"
exit 1
end script
Ao adicionar a capacidade de daemonizar seu serviço, se possível, certifique-se de que ele não bifurque até que esteja pronto para lidar com as solicitações, então 'esperar bifurcação' atrasará a condição 'iniciada' corretamente, caso contrário você ainda precisa deste pós-início.