Coder logo

Usage metrics

Metrics allow you to track the number of people using Coder on a day-to-day basis. Access the following view from Manage > Metrics.

Filters

You can filter the report by the following properties:

  • Organization: Only show user activity within a specific organization

  • Action: Only show users who performed a specific action within the time period

    • Any: Any of the below actions count towards activity

    • IDE: Used a web IDE in a workspace (Code Web, JetBrains, PyCharm, Jupyter, RStudio)

    • Login: Logged in to Coder

    • App: Used a custom workspace application in a workspace (measures long-lived requests e.g. WebSockets)

    • Tunnel: Connected to a workspace over SSH (VS Code Remote, JetBrains Gateway) or directly used coder tunnel

    • Web Terminal: Used a web terminal in a workspace

Activity API

You can use the REST API to generate reports for specific time periods and intervals. For example, "active IDE users in August, by week."

ACCESS_URL=https://coder.example.com
API_ROUTE=api/private
API_KEY=PLACEHOLDER # Use `coder tokens create`

curl --request GET \
  --url "$ACCESS_URL/$API_ROUTE/metrics/activity?\
start=2022-08-01T00:00:00.000000Z&end=2022-08-31T00:00:00.000000Z\
&category=ide\
&interval=1 week" \
--header "Session-Token: $API_KEY"

Filter by organization with org=id Other intervals include 1 week, 1 year, 90 day

Coder will return a list of active users over the time period as well as how much time each user spent with the activity (in milliseconds)

{
   // 1 week intervals
    "activity": [
        {
            "time": "2022-08-01T00:00:00Z",
            "duration": 604800000000000,
            "user_activity": [
                {
                    "user_id": "6004ad77-a7a69a24d779dd9f44357014",
                    "duration": 72000000000000, // 20h (in nanoseconds)
                    "count": 1200
                },
                {
                    "user_id": "5f905429-ba6e4ac480eb4c0ead160b47",
                    "duration": 30780000000000, // 8h 33m
                    "count": 513
                },
                {
                    "user_id": "627935e2-838713a0437b43f006b26244",
                    "duration": 2760000000000, // 46m
                    "count": 46
                }
            ]
        },
        // +3 weeks...
    ],
    // All active users from 2022-08-01 -> 2922-08-31
    "users": {
        "6004ad77-a7a69a24d779dd9f44357014": {
            "id": "6004ad77-a7a69a24d779dd9f44357014",
            "name": "Joe",
            "username": "joe2",
            "roles": [
                "site-member",
                "site-manager"
            ],
            "avatar_hash": "671b4b1db753a55396036354ff526c8df02e0a53bb4ce4990010a96ab8782ffd",
            "total_count": 4713,
            "total_duration": 282780000000000 // 78h 36m
        },
        "needs-id": {
            "id": "627935e2-838713a0437b43f006b26244",
            "name": "Bob",
            "username": "bob12",
            "roles": [
                "site-member"
            ],
            "avatar_hash": "51fb9f8ed9f17d919c62055a81db00015662af958edd91e52e14149f64aae434",
            "total_count": 3708,
            "total_duration": 360000000000 // 61h 48m
        }
        "5f905429-ba6e4ac480eb4c0ead160b47": {
            "id": "5f905429-ba6e4ac480eb4c0ead160b47",
            "name": "Alice",
            "username": "alice92",
            "roles": [
                "site-member"
            ],
            "avatar_hash": "970ee9aa01c30411825a1f90208c2ce5cffffda643973260bf10fa35b4a188c4",
            "total_count": 3468,
            "total_duration": 2640000000000  // 57h 48m
        },
    }
}