Aspnet app with diagnostics samples using:
dotnet-countersdotnet-stackheydotnet-monitorprometheusgrafanaRunning the app will start a container with dotnet-monitor. This container is setup to get diagnostic commands from the app container through a diagnostic port. Dotnet monitor exposes endpoints with usefull information:
A full list can be seem here: https://github.com/dotnet/dotnet-monitor/blob/main/documentation/api/README.md.
The metrics endpoint captures metrics in the Prometheus exposition format.
To start grafana use the command bellow:
docker compose up grafana
The compose provisions grafana with prometheus datasource and the community provided dotnet-monitor dashboard. Once is started up go to http://localhost:3000/dashboards (user: admin, password: admin)
Run the load test:
docker compose -f docker-compose.yml -f compose.tests.yml run --rm send-load-sync
docker compose -f docker-compose.yml -f compose.tests.yml run --rm send-load-async
docker compose -f docker-compose.yml -f compose.tests.yml run --rm send-load-enumeration
docker compose -f docker-compose.yml -f compose.tests.yml run --rm send-load-multiple-enumerationdotnet-monitor allows setting the egress to export artifacts like dumps. By default it's used the filesystem.
Configuration to use AWS S3
DOTNETMONITOR_Egress__S3Storage__monitorS3Blob__bucketName: bucketname
DOTNETMONITOR_Egress__S3Storage__monitorS3Blob__accessKeyId: accesskeyid
DOTNETMONITOR_Egress__S3Storage__monitorS3Blob__secretAccessKey: secretaccesskey
DOTNETMONITOR_Egress__S3Storage__monitorS3Blob__regionName: us-east-1And the parameter egressProvider should be monitorS3Blob.
curl -X 'GET'
'http://localhost:52323/dump?egressProvider=monitorS3Blob'
-H 'accept: application/octet-stream'Docs