Skip to content

Instantly share code, notes, and snippets.

@fortuna
Last active October 10, 2025 12:07
Show Gist options
  • Save fortuna/ea92f0ac0e7543ed5feea75902880ca0 to your computer and use it in GitHub Desktop.
Save fortuna/ea92f0ac0e7543ed5feea75902880ca0 to your computer and use it in GitHub Desktop.

Revisions

  1. fortuna revised this gist Feb 21, 2019. 2 changed files with 94 additions and 5 deletions.
    5 changes: 5 additions & 0 deletions Queries.md
    Original file line number Diff line number Diff line change
    @@ -20,6 +20,11 @@ Live UDP associations:
    shadowsocks_udp_nat_entries_added - shadowsocks_udp_nat_entries_removed
    ```
    Time to find cipher:
    ```
    shadowsocks_time_to_cipher_ms{access_key!=""}
    ```
    CPU seconds per second (averaged over 10m):
    ```
    rate(process_cpu_seconds_total[10m])
    94 changes: 89 additions & 5 deletions dashboard.json
    Original file line number Diff line number Diff line change
    @@ -862,6 +862,90 @@
    "alignLevel": null
    }
    },
    {
    "aliasColors": {},
    "bars": false,
    "dashLength": 10,
    "dashes": false,
    "fill": 1,
    "gridPos": {
    "h": 7,
    "w": 12,
    "x": 12,
    "y": 25
    },
    "id": 22,
    "legend": {
    "avg": false,
    "current": false,
    "max": false,
    "min": false,
    "show": true,
    "total": false,
    "values": false
    },
    "lines": true,
    "linewidth": 1,
    "links": [],
    "nullPointMode": "null",
    "percentage": false,
    "pointradius": 5,
    "points": false,
    "renderer": "flot",
    "seriesOverrides": [],
    "spaceLength": 10,
    "stack": false,
    "steppedLine": false,
    "targets": [
    {
    "expr": "shadowsocks_time_to_cipher_ms{access_key!=\"\"}",
    "format": "time_series",
    "intervalFactor": 1,
    "legendFormat": "{{access_key}} {{location}} {{proto}} {{quantile}}",
    "refId": "A"
    }
    ],
    "thresholds": [],
    "timeFrom": null,
    "timeRegions": [],
    "timeShift": null,
    "title": "Time to Cipher",
    "tooltip": {
    "shared": true,
    "sort": 0,
    "value_type": "individual"
    },
    "type": "graph",
    "xaxis": {
    "buckets": null,
    "mode": "time",
    "name": null,
    "show": true,
    "values": []
    },
    "yaxes": [
    {
    "format": "dtdurationms",
    "label": null,
    "logBase": 10,
    "max": null,
    "min": null,
    "show": true
    },
    {
    "format": "short",
    "label": "",
    "logBase": 1,
    "max": null,
    "min": null,
    "show": true
    }
    ],
    "yaxis": {
    "align": false,
    "alignLevel": null
    }
    },
    {
    "cacheTimeout": null,
    "colorBackground": false,
    @@ -882,8 +966,8 @@
    "gridPos": {
    "h": 7,
    "w": 5,
    "x": 12,
    "y": 25
    "x": 1,
    "y": 32
    },
    "id": 16,
    "interval": null,
    @@ -961,8 +1045,8 @@
    "gridPos": {
    "h": 7,
    "w": 4,
    "x": 17,
    "y": 25
    "x": 6,
    "y": 32
    },
    "id": 18,
    "interval": null,
    @@ -1061,5 +1145,5 @@
    "timezone": "browser",
    "title": "Outline",
    "uid": "kQkHzYcmz",
    "version": 4
    "version": 5
    }
  2. fortuna revised this gist Feb 21, 2019. No changes.
  3. fortuna revised this gist Feb 21, 2019. 2 changed files with 32 additions and 3 deletions.
    31 changes: 30 additions & 1 deletion Queries.md
    Original file line number Diff line number Diff line change
    @@ -1,2 +1,31 @@
    # Example Queries

    sum(max(increase(shadowsocks_data_bytes{access_key!=\"\"} [1h])) by (access_key, location) > bool 0) by (location)
    1h active keys by location:
    ```
    sum(max(increase(shadowsocks_data_bytes{access_key!=""} [1h])) by (access_key, location) > bool 0) by (location)
    ````
    1h usage by location:
    ```
    sum(increase(shadowsocks_data_bytes{dir=~"c<p|p>t"} [1h])) by (location)
    ```
    Open TCP connections:
    ```
    sum(shadowsocks_tcp_connections_opened) - sum(shadowsocks_tcp_connections_closed)
    ```
    Live UDP associations:
    ```
    shadowsocks_udp_nat_entries_added - shadowsocks_udp_nat_entries_removed
    ```
    CPU seconds per second (averaged over 10m):
    ```
    rate(process_cpu_seconds_total[10m])
    ```
    Uptime:
    ```
    time() - process_start_time_seconds{job="outline-server-main"}
    ```
    4 changes: 2 additions & 2 deletions dashboard.json
    Original file line number Diff line number Diff line change
    @@ -284,7 +284,7 @@
    "refId": "C"
    },
    {
    "expr": "sum(increase(shadowsocks_data_bytes{dir=~\"c<p|p>t\"} [10w]))",
    "expr": "sum(increase(shadowsocks_data_bytes{dir=~\"c<p|p>t\"} [4w]))",
    "format": "time_series",
    "interval": "1h",
    "intervalFactor": 1,
    @@ -1061,5 +1061,5 @@
    "timezone": "browser",
    "title": "Outline",
    "uid": "kQkHzYcmz",
    "version": 3
    "version": 4
    }
  4. fortuna revised this gist Feb 21, 2019. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions Queries.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,2 @@

    sum(max(increase(shadowsocks_data_bytes{access_key!=\"\"} [1h])) by (access_key, location) > bool 0) by (location)
  5. fortuna created this gist Feb 21, 2019.
    1,065 changes: 1,065 additions & 0 deletions dashboard.json
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,1065 @@
    {
    "annotations": {
    "list": [
    {
    "builtIn": 1,
    "datasource": "-- Grafana --",
    "enable": true,
    "hide": true,
    "iconColor": "rgba(0, 211, 255, 1)",
    "name": "Annotations & Alerts",
    "type": "dashboard"
    }
    ]
    },
    "editable": true,
    "gnetId": null,
    "graphTooltip": 0,
    "id": 2,
    "links": [],
    "panels": [
    {
    "collapsed": false,
    "gridPos": {
    "h": 1,
    "w": 24,
    "x": 0,
    "y": 0
    },
    "id": 10,
    "panels": [],
    "title": "Are users using the service?",
    "type": "row"
    },
    {
    "aliasColors": {},
    "bars": false,
    "dashLength": 10,
    "dashes": false,
    "fill": 1,
    "gridPos": {
    "h": 8,
    "w": 8,
    "x": 0,
    "y": 1
    },
    "id": 14,
    "legend": {
    "avg": false,
    "current": false,
    "max": false,
    "min": false,
    "show": true,
    "total": false,
    "values": false
    },
    "lines": true,
    "linewidth": 1,
    "links": [],
    "nullPointMode": "null",
    "percentage": false,
    "pointradius": 5,
    "points": false,
    "renderer": "flot",
    "seriesOverrides": [],
    "spaceLength": 10,
    "stack": false,
    "steppedLine": false,
    "targets": [
    {
    "expr": "sum(max(increase(shadowsocks_data_bytes{access_key!=\"\"} [1h])) by (access_key, location) > bool 0) by (location)",
    "format": "time_series",
    "hide": false,
    "interval": "",
    "intervalFactor": 1,
    "legendFormat": "1h {{location}}",
    "refId": "A"
    },
    {
    "expr": "sum(max(max_over_time(shadowsocks_data_bytes{access_key!=\"\"} [1d])) by (access_key) > bool 0)",
    "format": "time_series",
    "hide": false,
    "interval": "1h",
    "intervalFactor": 1,
    "legendFormat": "1d",
    "refId": "B"
    },
    {
    "expr": "sum(max(max_over_time(shadowsocks_data_bytes{access_key!=\"\"} [7d])) by (access_key) > bool 0)",
    "format": "time_series",
    "interval": "1h",
    "intervalFactor": 1,
    "legendFormat": "7d",
    "refId": "C"
    }
    ],
    "thresholds": [],
    "timeFrom": null,
    "timeRegions": [],
    "timeShift": null,
    "title": "Active Access Keys",
    "tooltip": {
    "shared": true,
    "sort": 0,
    "value_type": "individual"
    },
    "type": "graph",
    "xaxis": {
    "buckets": null,
    "mode": "time",
    "name": null,
    "show": true,
    "values": []
    },
    "yaxes": [
    {
    "format": "short",
    "label": null,
    "logBase": 1,
    "max": null,
    "min": null,
    "show": true
    },
    {
    "format": "short",
    "label": null,
    "logBase": 1,
    "max": null,
    "min": null,
    "show": true
    }
    ],
    "yaxis": {
    "align": false,
    "alignLevel": null
    }
    },
    {
    "aliasColors": {},
    "bars": false,
    "dashLength": 10,
    "dashes": false,
    "fill": 1,
    "gridPos": {
    "h": 8,
    "w": 8,
    "x": 8,
    "y": 1
    },
    "id": 20,
    "legend": {
    "avg": false,
    "current": false,
    "max": false,
    "min": false,
    "show": true,
    "total": false,
    "values": false
    },
    "lines": true,
    "linewidth": 1,
    "links": [],
    "nullPointMode": "null",
    "percentage": false,
    "pointradius": 5,
    "points": false,
    "renderer": "flot",
    "seriesOverrides": [],
    "spaceLength": 10,
    "stack": false,
    "steppedLine": false,
    "targets": [
    {
    "expr": "sum(rate(shadowsocks_data_bytes[1h])) by (access_key)",
    "format": "time_series",
    "intervalFactor": 1,
    "legendFormat": "{{access_key}}",
    "refId": "A"
    }
    ],
    "thresholds": [],
    "timeFrom": null,
    "timeRegions": [],
    "timeShift": null,
    "title": "Access Key 1h Activity",
    "tooltip": {
    "shared": true,
    "sort": 0,
    "value_type": "individual"
    },
    "type": "graph",
    "xaxis": {
    "buckets": null,
    "mode": "time",
    "name": null,
    "show": true,
    "values": []
    },
    "yaxes": [
    {
    "format": "Bps",
    "label": null,
    "logBase": 10,
    "max": null,
    "min": null,
    "show": true
    },
    {
    "format": "short",
    "label": null,
    "logBase": 1,
    "max": null,
    "min": null,
    "show": true
    }
    ],
    "yaxis": {
    "align": false,
    "alignLevel": null
    }
    },
    {
    "aliasColors": {},
    "bars": false,
    "dashLength": 10,
    "dashes": false,
    "editable": true,
    "error": false,
    "fill": 1,
    "grid": {},
    "gridPos": {
    "h": 8,
    "w": 8,
    "x": 16,
    "y": 1
    },
    "id": 2,
    "legend": {
    "avg": false,
    "current": false,
    "hideEmpty": true,
    "hideZero": true,
    "max": false,
    "min": false,
    "show": true,
    "total": false,
    "values": false
    },
    "lines": true,
    "linewidth": 2,
    "links": [],
    "nullPointMode": "connected",
    "percentage": false,
    "pointradius": 5,
    "points": false,
    "renderer": "flot",
    "seriesOverrides": [],
    "spaceLength": 10,
    "stack": false,
    "steppedLine": false,
    "targets": [
    {
    "expr": "sum(increase(shadowsocks_data_bytes{dir=~\"c<p|p>t\"} [1h])) by (location)",
    "format": "time_series",
    "hide": false,
    "intervalFactor": 2,
    "legendFormat": "1h {{location}}",
    "metric": "shadowsocks_data_proxy_client_bytes",
    "refId": "A"
    },
    {
    "expr": "sum(increase(shadowsocks_data_bytes{dir=~\"c<p|p>t\"} [1d]))",
    "format": "time_series",
    "interval": "1h",
    "intervalFactor": 1,
    "legendFormat": "1d",
    "refId": "B"
    },
    {
    "expr": "sum(increase(shadowsocks_data_bytes{dir=~\"c<p|p>t\"} [7d]))",
    "format": "time_series",
    "interval": "1h",
    "intervalFactor": 1,
    "legendFormat": "7d",
    "refId": "C"
    },
    {
    "expr": "sum(increase(shadowsocks_data_bytes{dir=~\"c<p|p>t\"} [10w]))",
    "format": "time_series",
    "interval": "1h",
    "intervalFactor": 1,
    "legendFormat": "4w",
    "refId": "D"
    }
    ],
    "thresholds": [],
    "timeFrom": null,
    "timeRegions": [],
    "timeShift": null,
    "title": "Total Data usage",
    "tooltip": {
    "shared": true,
    "sort": 2,
    "value_type": "cumulative"
    },
    "type": "graph",
    "xaxis": {
    "buckets": null,
    "mode": "time",
    "name": null,
    "show": true,
    "values": []
    },
    "yaxes": [
    {
    "format": "bytes",
    "logBase": 10,
    "max": null,
    "min": "0",
    "show": true
    },
    {
    "format": "short",
    "logBase": 1,
    "max": null,
    "min": null,
    "show": true
    }
    ],
    "yaxis": {
    "align": false,
    "alignLevel": null
    }
    },
    {
    "collapsed": false,
    "gridPos": {
    "h": 1,
    "w": 24,
    "x": 0,
    "y": 9
    },
    "id": 12,
    "panels": [],
    "title": "Is the service healthy?",
    "type": "row"
    },
    {
    "aliasColors": {},
    "bars": false,
    "dashLength": 10,
    "dashes": false,
    "editable": true,
    "error": false,
    "fill": 1,
    "grid": {},
    "gridPos": {
    "h": 8,
    "w": 12,
    "x": 0,
    "y": 10
    },
    "id": 4,
    "legend": {
    "alignAsTable": false,
    "avg": false,
    "current": false,
    "max": false,
    "min": false,
    "show": true,
    "total": false,
    "values": false
    },
    "lines": true,
    "linewidth": 2,
    "links": [],
    "nullPointMode": "connected",
    "percentage": false,
    "pointradius": 5,
    "points": false,
    "renderer": "flot",
    "seriesOverrides": [
    {
    "alias": "{instance=\"localhost:9091\",job=\"outline-ss-server\"}",
    "yaxis": 2
    },
    {
    "alias": "cpu",
    "yaxis": 2
    },
    {
    "alias": "cpu prometheus",
    "yaxis": 2
    },
    {
    "alias": "cpu outline-ss-server",
    "yaxis": 2
    }
    ],
    "spaceLength": 10,
    "stack": false,
    "steppedLine": false,
    "targets": [
    {
    "expr": "rate(process_cpu_seconds_total[10m])",
    "format": "time_series",
    "instant": false,
    "intervalFactor": 2,
    "legendFormat": "cpu {{job}}",
    "metric": "process_cpu_seconds_total",
    "refId": "A"
    },
    {
    "expr": "go_goroutines",
    "format": "time_series",
    "intervalFactor": 2,
    "legendFormat": "go_goroutines {{job}}",
    "metric": "go_goroutines",
    "refId": "B"
    }
    ],
    "thresholds": [],
    "timeFrom": null,
    "timeRegions": [],
    "timeShift": null,
    "title": "Process",
    "tooltip": {
    "shared": true,
    "sort": 0,
    "value_type": "cumulative"
    },
    "type": "graph",
    "xaxis": {
    "buckets": null,
    "mode": "time",
    "name": null,
    "show": true,
    "values": []
    },
    "yaxes": [
    {
    "format": "none",
    "label": "",
    "logBase": 1,
    "max": null,
    "min": 0,
    "show": true
    },
    {
    "format": "percentunit",
    "logBase": 1,
    "max": null,
    "min": 0,
    "show": true
    }
    ],
    "yaxis": {
    "align": false,
    "alignLevel": null
    }
    },
    {
    "aliasColors": {},
    "bars": false,
    "dashLength": 10,
    "dashes": false,
    "editable": true,
    "error": false,
    "fill": 1,
    "grid": {},
    "gridPos": {
    "h": 8,
    "w": 12,
    "x": 12,
    "y": 10
    },
    "id": 3,
    "legend": {
    "alignAsTable": false,
    "avg": false,
    "current": false,
    "max": false,
    "min": false,
    "show": true,
    "total": false,
    "values": false
    },
    "lines": true,
    "linewidth": 2,
    "links": [],
    "nullPointMode": "connected",
    "percentage": false,
    "pointradius": 5,
    "points": false,
    "renderer": "flot",
    "seriesOverrides": [
    {
    "alias": "udp nat entries",
    "yaxis": 2
    },
    {
    "alias": "process_open_fds{instance=\"localhost:9091\",job=\"outline-ss-server\"}",
    "yaxis": 2
    },
    {
    "alias": "process_open_fds{instance=\"localhost:9090\",job=\"prometheus\"}",
    "yaxis": 2
    },
    {
    "alias": "open_fds outline-ss-server",
    "yaxis": 2
    },
    {
    "alias": "open_fds prometheus",
    "yaxis": 2
    }
    ],
    "spaceLength": 10,
    "stack": false,
    "steppedLine": false,
    "targets": [
    {
    "expr": "process_virtual_memory_bytes",
    "format": "time_series",
    "intervalFactor": 2,
    "legendFormat": "virtual_memory {{job}}",
    "metric": "process_virtual_memory_bytes",
    "refId": "C"
    },
    {
    "expr": "shadowsocks_udp_nat_entries_added - shadowsocks_udp_nat_entries_removed",
    "format": "time_series",
    "intervalFactor": 2,
    "legendFormat": "udp nat entries",
    "metric": "",
    "refId": "A"
    },
    {
    "expr": "process_open_fds",
    "format": "time_series",
    "intervalFactor": 1,
    "legendFormat": "open_fds {{job}}",
    "refId": "B"
    }
    ],
    "thresholds": [],
    "timeFrom": null,
    "timeRegions": [],
    "timeShift": null,
    "title": "Memory",
    "tooltip": {
    "shared": true,
    "sort": 0,
    "value_type": "cumulative"
    },
    "type": "graph",
    "xaxis": {
    "buckets": null,
    "mode": "time",
    "name": null,
    "show": true,
    "values": []
    },
    "yaxes": [
    {
    "format": "bytes",
    "label": "",
    "logBase": 1,
    "max": null,
    "min": 0,
    "show": true
    },
    {
    "format": "short",
    "logBase": 1,
    "max": null,
    "min": 0,
    "show": true
    }
    ],
    "yaxis": {
    "align": false,
    "alignLevel": null
    }
    },
    {
    "aliasColors": {},
    "bars": false,
    "dashLength": 10,
    "dashes": false,
    "editable": true,
    "error": false,
    "fill": 1,
    "grid": {},
    "gridPos": {
    "h": 7,
    "w": 12,
    "x": 0,
    "y": 18
    },
    "id": 6,
    "legend": {
    "avg": false,
    "current": false,
    "hideEmpty": true,
    "hideZero": true,
    "max": false,
    "min": false,
    "show": true,
    "total": false,
    "values": false
    },
    "lines": true,
    "linewidth": 2,
    "links": [],
    "nullPointMode": "null",
    "percentage": false,
    "pointradius": 5,
    "points": false,
    "renderer": "flot",
    "seriesOverrides": [
    {
    "alias": "/count/",
    "yaxis": 2
    }
    ],
    "spaceLength": 10,
    "stack": false,
    "steppedLine": false,
    "targets": [
    {
    "expr": "sum(increase(shadowsocks_tcp_connection_duration_ms_count [10m])) by (access_key, status)",
    "format": "time_series",
    "hide": false,
    "instant": false,
    "intervalFactor": 2,
    "legendFormat": "count/s {{access_key}} {{status}}",
    "metric": "shadowsocks_tcp_connection_duration_ms",
    "refId": "A"
    },
    {
    "expr": "sum(rate(shadowsocks_tcp_connection_duration_ms_sum [10m])) by (access_key,status) / sum(rate(shadowsocks_tcp_connection_duration_ms_count [10m])) by (access_key, status)",
    "format": "time_series",
    "hide": false,
    "instant": false,
    "intervalFactor": 2,
    "legendFormat": "duration {{access_key}} {{status}}",
    "refId": "B"
    }
    ],
    "thresholds": [],
    "timeFrom": null,
    "timeRegions": [],
    "timeShift": null,
    "title": "Connections",
    "tooltip": {
    "shared": true,
    "sort": 0,
    "value_type": "cumulative"
    },
    "type": "graph",
    "xaxis": {
    "buckets": null,
    "mode": "time",
    "name": null,
    "show": true,
    "values": []
    },
    "yaxes": [
    {
    "format": "ms",
    "label": "",
    "logBase": 1,
    "max": null,
    "min": null,
    "show": true
    },
    {
    "format": "short",
    "logBase": 1,
    "max": null,
    "min": null,
    "show": true
    }
    ],
    "yaxis": {
    "align": false,
    "alignLevel": null
    }
    },
    {
    "aliasColors": {},
    "bars": false,
    "dashLength": 10,
    "dashes": false,
    "editable": true,
    "error": false,
    "fill": 1,
    "grid": {},
    "gridPos": {
    "h": 7,
    "w": 12,
    "x": 12,
    "y": 18
    },
    "id": 7,
    "legend": {
    "avg": false,
    "current": false,
    "max": false,
    "min": false,
    "show": true,
    "total": false,
    "values": false
    },
    "lines": true,
    "linewidth": 2,
    "links": [],
    "nullPointMode": "connected",
    "percentage": false,
    "pointradius": 5,
    "points": false,
    "renderer": "flot",
    "seriesOverrides": [],
    "spaceLength": 10,
    "stack": false,
    "steppedLine": false,
    "targets": [
    {
    "expr": "sum(shadowsocks_tcp_connections_opened) - sum(shadowsocks_tcp_connections_closed)",
    "format": "time_series",
    "hide": false,
    "intervalFactor": 2,
    "legendFormat": "",
    "metric": "",
    "refId": "B"
    }
    ],
    "thresholds": [],
    "timeFrom": null,
    "timeRegions": [],
    "timeShift": null,
    "title": "Open TCP Connections",
    "tooltip": {
    "shared": true,
    "sort": 0,
    "value_type": "cumulative"
    },
    "type": "graph",
    "xaxis": {
    "buckets": null,
    "mode": "time",
    "name": null,
    "show": true,
    "values": []
    },
    "yaxes": [
    {
    "format": "short",
    "logBase": 1,
    "max": null,
    "min": 0,
    "show": true
    },
    {
    "format": "short",
    "logBase": 1,
    "max": null,
    "min": null,
    "show": true
    }
    ],
    "yaxis": {
    "align": false,
    "alignLevel": null
    }
    },
    {
    "aliasColors": {},
    "bars": false,
    "dashLength": 10,
    "dashes": false,
    "editable": true,
    "error": false,
    "fill": 1,
    "grid": {},
    "gridPos": {
    "h": 7,
    "w": 12,
    "x": 0,
    "y": 25
    },
    "id": 8,
    "legend": {
    "avg": false,
    "current": false,
    "hideEmpty": true,
    "hideZero": true,
    "max": false,
    "min": false,
    "show": true,
    "total": false,
    "values": false
    },
    "lines": true,
    "linewidth": 2,
    "links": [],
    "nullPointMode": "null",
    "percentage": false,
    "pointradius": 5,
    "points": false,
    "renderer": "flot",
    "seriesOverrides": [],
    "spaceLength": 10,
    "stack": false,
    "steppedLine": false,
    "targets": [
    {
    "expr": "sum(increase(shadowsocks_tcp_connections_closed{status=~\"ERR_.*\"} [10m])) by (status, access_key)",
    "format": "time_series",
    "intervalFactor": 2,
    "legendFormat": "{{status}} {{access_key}}",
    "metric": "shadowsocks_tcp_closed_connections",
    "refId": "A"
    }
    ],
    "thresholds": [],
    "timeFrom": null,
    "timeRegions": [],
    "timeShift": null,
    "title": "Errors",
    "tooltip": {
    "shared": true,
    "sort": 2,
    "value_type": "cumulative"
    },
    "type": "graph",
    "xaxis": {
    "buckets": null,
    "mode": "time",
    "name": null,
    "show": true,
    "values": []
    },
    "yaxes": [
    {
    "format": "short",
    "logBase": 1,
    "max": null,
    "min": null,
    "show": true
    },
    {
    "format": "short",
    "logBase": 1,
    "max": null,
    "min": null,
    "show": true
    }
    ],
    "yaxis": {
    "align": false,
    "alignLevel": null
    }
    },
    {
    "cacheTimeout": null,
    "colorBackground": false,
    "colorValue": false,
    "colors": [
    "#299c46",
    "rgba(237, 129, 40, 0.89)",
    "#d44a3a"
    ],
    "format": "s",
    "gauge": {
    "maxValue": 100,
    "minValue": 0,
    "show": false,
    "thresholdLabels": false,
    "thresholdMarkers": true
    },
    "gridPos": {
    "h": 7,
    "w": 5,
    "x": 12,
    "y": 25
    },
    "id": 16,
    "interval": null,
    "links": [],
    "mappingType": 1,
    "mappingTypes": [
    {
    "name": "value to text",
    "value": 1
    },
    {
    "name": "range to text",
    "value": 2
    }
    ],
    "maxDataPoints": 100,
    "nullPointMode": "connected",
    "nullText": null,
    "postfix": "",
    "postfixFontSize": "50%",
    "prefix": "",
    "prefixFontSize": "50%",
    "rangeMaps": [
    {
    "from": "null",
    "text": "N/A",
    "to": "null"
    }
    ],
    "sparkline": {
    "fillColor": "rgba(31, 118, 189, 0.18)",
    "full": false,
    "lineColor": "rgb(31, 120, 193)",
    "show": false
    },
    "tableColumn": "",
    "targets": [
    {
    "expr": "time() - process_start_time_seconds{job=\"outline-server-main\"}",
    "format": "time_series",
    "intervalFactor": 1,
    "refId": "A"
    }
    ],
    "thresholds": "",
    "title": "uptime",
    "type": "singlestat",
    "valueFontSize": "80%",
    "valueMaps": [
    {
    "op": "=",
    "text": "N/A",
    "value": "null"
    }
    ],
    "valueName": "current"
    },
    {
    "cacheTimeout": null,
    "colorBackground": false,
    "colorValue": false,
    "colors": [
    "#299c46",
    "rgba(237, 129, 40, 0.89)",
    "#d44a3a"
    ],
    "format": "none",
    "gauge": {
    "maxValue": 100,
    "minValue": 0,
    "show": false,
    "thresholdLabels": false,
    "thresholdMarkers": true
    },
    "gridPos": {
    "h": 7,
    "w": 4,
    "x": 17,
    "y": 25
    },
    "id": 18,
    "interval": null,
    "links": [],
    "mappingType": 1,
    "mappingTypes": [
    {
    "name": "value to text",
    "value": 1
    },
    {
    "name": "range to text",
    "value": 2
    }
    ],
    "maxDataPoints": 100,
    "nullPointMode": "connected",
    "nullText": null,
    "postfix": "",
    "postfixFontSize": "50%",
    "prefix": "",
    "prefixFontSize": "50%",
    "rangeMaps": [
    {
    "from": "null",
    "text": "N/A",
    "to": "null"
    }
    ],
    "sparkline": {
    "fillColor": "rgba(31, 118, 189, 0.18)",
    "full": false,
    "lineColor": "rgb(31, 120, 193)",
    "show": false
    },
    "tableColumn": "",
    "targets": [
    {
    "expr": "shadowsocks_keys",
    "format": "time_series",
    "intervalFactor": 1,
    "refId": "A"
    }
    ],
    "thresholds": "",
    "title": "Total Access Keys",
    "type": "singlestat",
    "valueFontSize": "80%",
    "valueMaps": [
    {
    "op": "=",
    "text": "N/A",
    "value": "null"
    }
    ],
    "valueName": "avg"
    }
    ],
    "refresh": "5m",
    "schemaVersion": 16,
    "style": "dark",
    "tags": [],
    "templating": {
    "list": []
    },
    "time": {
    "from": "now-2d",
    "to": "now"
    },
    "timepicker": {
    "now": true,
    "refresh_intervals": [
    "5s",
    "10s",
    "30s",
    "1m",
    "5m",
    "15m",
    "30m",
    "1h",
    "2h",
    "1d"
    ],
    "time_options": [
    "5m",
    "15m",
    "1h",
    "6h",
    "12h",
    "24h",
    "2d",
    "7d",
    "30d"
    ]
    },
    "timezone": "browser",
    "title": "Outline",
    "uid": "kQkHzYcmz",
    "version": 3
    }