outline-server/src/metrics_server
2024-08-12 10:56:11 -04:00
..
infrastructure Feature metrics (#577) 2020-02-26 12:49:52 -05:00
app_dev.yaml clean: add missing license headers and add a CI check (#1572) 2024-08-12 10:56:11 -04:00
app_prod.yaml clean: add missing license headers and add a CI check (#1572) 2024-08-12 10:56:11 -04:00
config_dev.json Feature metrics (#577) 2020-02-26 12:49:52 -05:00
config_prod.json Feature metrics (#577) 2020-02-26 12:49:52 -05:00
connection_metrics.spec.ts chore: add lint rule to prevent unnecessary public modifiers (#1557) 2024-07-23 14:28:57 -04:00
connection_metrics.ts feat(metrics_server): add support for ASN (#1542) 2024-04-26 20:08:49 -04:00
dispatch.yaml clean: add missing license headers and add a CI check (#1572) 2024-08-12 10:56:11 -04:00
feature_metrics.spec.ts chore: add lint rule to prevent unnecessary public modifiers (#1557) 2024-07-23 14:28:57 -04:00
feature_metrics.ts Migrate to eslint 2022-03-10 01:50:59 +00:00
index.ts Fix lint 2022-03-09 23:10:15 +00:00
model.ts feat(metrics_server): add support for ASN (#1542) 2024-04-26 20:08:49 -04:00
package.json fix(server): restore country metrics (#1242) 2022-12-02 10:13:59 -06:00
README.md docs(metrics_server): add note about promoting the prod version (#1547) 2024-05-14 13:09:54 -04:00
Taskfile.yml clean: add missing license headers and add a CI check (#1572) 2024-08-12 10:56:11 -04:00
test_integration.sh feat(metrics_server): add support for ASN (#1542) 2024-04-26 20:08:49 -04:00
tsconfig.json chore: upgrade webpack to v5 to support lts/hydrogen (#1422) 2023-10-11 10:44:36 -04:00

Outline Metrics Server

The Outline Metrics Server is a Google App Engine project that writes feature and connections metrics to BigQuery, as reported by opted-in Outline servers.

API

Endpoints

The metrics server deploys two services: dev, used for development testing and debugging; and prod, used for production metrics. The dev environment is deployed to https://dev.metrics.getoutline.org; the prod environment is deployed to https://prod.metrics.getoutline.org. Each environment posts metrics to its own BigQuery dataset (see config_[dev|prod].json).

URLs

The metrics server supports two URL paths:

  • POST /connections: report server data usage broken down by user.

    {
      serverId: string,
      startUtcMs: number,
      endUtcMs: number,
      userReports: [{
          countries: string[],
          asn: number,
          bytesTransferred: number,
          tunnelTimeSec: number,
      }]
    }
    
  • POST /features: report feature usage.

    {
        serverId: string,
        serverVersion: string,
        timestampUtcMs: number,
        dataLimit: {
            enabled: boolean
            perKeyLimitCount: number
        }
    }
    

Requirements

Build

task metrics_server:build

Run

Run a local development metrics server:

task metrics_server:start

Deploy

  • Authenticate with gcloud:
    gcloud auth login
    
  • To deploy to dev:
    task metrics_server:deploy:dev
    
  • To deploy to prod:
    task metrics_server:deploy:prod
    
    Once deployed, you will need to manually migrate all traffic to the new version via the Google Cloud console.

Test

  • Unit test
    task metrics_server:test
    
  • Integration test
    task metrics_server:integration_test