dotnet-monitor can be easily configured to automatically collect dumps, traces and logs based on conditions detected within the monitored process. For example you could elect to capture a maximum of ten dumps over a sliding windows of 24 hours. Here is how I would define this in dotnet-monitor’s settings.json file (note the Limits section):
"CollectionRules": { "LargeGCHeapSize": { "Trigger": { "Type": "EventCounter", "Settings": { "ProviderName": "System.Runtime", "CounterName": "gc-heap-size", "GreaterThan": 10 } }, "Limits": { "ActionCount": 10, "ActionCountSlidingWindowDuration": "1.00:00:00" }, "Actions": [ { "Type": "CollectGCDump", "Settings": { "Egress": "artifactStorage" } } ] } }
Up until recently the only way to see the state of the trigger was to look at dotnet-monitors logs, and even then you would only see if the trigger had been successfully started:
For my collection rule (“LargeGCHeapSize”) I could check the “state” by counting how many dumps have been created in the last 24 hours, however, our team had a customer request to provide a more intuitive way to query trigger state.
Thankfully our latest dotnet-monitor preview provides an endpoint to get the state of collection rules for a given process. To be clear this is just about viewing the current state via the API, this does not include functionality for enabling/disabling rules through the API, if you think that feature is important please let us know. Now when you navigate to the /collectionrules end point you get details about the trigger status and state reason as follows:
{ "LargeGCHeapSize": { "state":"Running", "stateReason":"This collection rule is active and waiting for its triggering conditions to be satisfied." } }
To get even more details I can navigate to the specific rule /collectionrules/LargeGCHeapSize and that gives this output:
{ "lifetimeOccurrences":0, "slidingWindowOccurrences":0, "actionCountLimit":10, "actionCountSlidingWindowDurationLimit":"1.00:00:00", "slidingWindowDurationCountdown":null, "ruleFinishedCountdown":null, "state":"Running", "stateReason":"This collection rule is active and waiting for its triggering conditions to be satisfied." }
Check out the latest preview if you want to try this new feature.
Comments are closed.