1. A method comprising: receiving an instrumentation schema defining a set of hooks and instrumentation actions in a logging service for a software program; receiving a call to the logging service when a hook is encountered during execution of the software program; comparing parameters received in the call to a set of rules to determine if an instrumentation action corresponding to the hook applies; and if the instrumentation action applies, performing the instrumentation action to allow monitoring of the execution of the software program based on the instrumentation action being performed; wherein if the instrumentation action corresponding to the hook is a local instrumentation action, performing the instrumentation action comprises determining if the instrumentation action can be locally performed and performing the instrumentation action locally by the logging service without communication with an external controller if the instrumentation action can be performed locally; wherein if the instrumentation action corresponding to the hook is an external instrumentation action, performing the instrumentation action comprises: sending the parameters to the external controller; and receiving the instrumentation action to perform from the external controller, the external controller determining the instrumentation action based on the parameters.