Queries & Suggestion about Licode Monitoring

Hi Team,

Currently initLicode .sh script will only bring the licode node process up.
But it won’t monitor (up & running?) those node process. @Suggestion - Better we can come up with monitoring scripts.

To overcome this, we have a python script integrated to upstart, which monitor and ensures licode service is always up & running.

NOTE: Upstart is a linux monitoring utility.

Please find our current monitoring flow:

  • Python script - Accepts 2 arguments - start/stop

  • Python script - start - executes initLicode .sh script (It stores pid’s of all licode node process)

  • In a infinite loop, It fetches current pid’s of licode node process and matches with stored values.

  • If there is a mismatch/pid doesn’t exists (even for 1 node process) , it will kill all the licode node process & executes the start up flow again.

  • Python script - stop - will kill all the licode node process (This is issued through upstart command)

We are thinking to revamp our current approach for better solution.

Our new Approach:

  • Replacing initLicode .sh script with 3 upstart configurations for all licode process - nuve, erizoController, erizoAgent

  • Upstart will bring those node process up and monitors. (It wont follow any sequence - all are independent)

  • NOTE: In case, if one process is down, it will just bring that specific one up.

Is this fine?
Can you please guide us, which way is the ideal way?


  1. Is there any dependency between licode node process - nuve, erizoController & erizoAgent?

  2. If erizoAgent is down, is it enough to start only the erizoAgent process (or) do we need to kill all and start all again?

  3. Is there any sequence that we need to follow while bringing up the licode node process - nuve, erizoController, erizoAgent?

If any better solutions are already available, please share here.

Thanks & Regards,

I think you are in the right path with

Replacing initLicode .sh script with 3 upstart configurations for all licode process - nuve, erizoController, erizoAgent

I also use this approach with initV.
there are also other “easier” way to do that: ex. pm2 but I like the old fashioned way

Thanks for the reply Francesco.

But how about dependency between nuve, erizoController & erizoAgent?
We need not start them in a specific sequence at any point of time?

obviously nuve has to be running since it handles the cloudhandler. then controller and agents self register them in nuve, so no problem with timings

You are saying sequence matters? … It have to be like nuve, erizoController, erizoAgent?


Just can we be bring all three up … irrespective of the sequence?

My script starts them all in order (nuve, controller, agent), for sure nuve has to be started before the other 2. Idk if you can start agent before controller.
Anyway it’s a simple test to make