pm2 file, grafana dasboard file, readme
This commit is contained in:
parent
abc65134fc
commit
f29e6563db
21
README.md
Normal file
21
README.md
Normal file
@ -0,0 +1,21 @@
|
||||
# FDLogUp
|
||||
This project uses [Bun](https://bun.sh/) to build a client executable and to run the server with. To install use this oneliner:
|
||||
```sh
|
||||
curl -fsSL https://bun.sh/install | bash
|
||||
```
|
||||
|
||||
To build the client:
|
||||
```sh
|
||||
cd client
|
||||
bun run exe
|
||||
```
|
||||
|
||||
To run the server:
|
||||
```sh
|
||||
cd server
|
||||
bun start
|
||||
```
|
||||
|
||||
The provided docker-compose file sets up a PostgreSQL server and a Grafana instance.
|
||||
There is also a Grafana dashboard JSON file for an example use of the data.
|
||||
Make sure to import the `server/schema.sql` into PostgreSQL before using it.
|
852
grafana-dashboard.json
Normal file
852
grafana-dashboard.json
Normal file
@ -0,0 +1,852 @@
|
||||
{
|
||||
"annotations": {
|
||||
"list": [
|
||||
{
|
||||
"builtIn": 1,
|
||||
"datasource": {
|
||||
"type": "grafana",
|
||||
"uid": "-- Grafana --"
|
||||
},
|
||||
"enable": true,
|
||||
"hide": true,
|
||||
"iconColor": "rgba(0, 211, 255, 1)",
|
||||
"name": "Annotations & Alerts",
|
||||
"type": "dashboard"
|
||||
}
|
||||
]
|
||||
},
|
||||
"editable": true,
|
||||
"fiscalYearStartMonth": 0,
|
||||
"graphTooltip": 0,
|
||||
"id": 1,
|
||||
"links": [],
|
||||
"panels": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "grafana-postgresql-datasource",
|
||||
"uid": "edpbbm8hqv9j4e"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "thresholds"
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": null
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 11,
|
||||
"w": 3,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
"id": 5,
|
||||
"options": {
|
||||
"colorMode": "value",
|
||||
"graphMode": "area",
|
||||
"justifyMode": "auto",
|
||||
"orientation": "auto",
|
||||
"reduceOptions": {
|
||||
"calcs": [
|
||||
"lastNotNull"
|
||||
],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"showPercentChange": false,
|
||||
"textMode": "auto",
|
||||
"wideLayout": true
|
||||
},
|
||||
"pluginVersion": "11.0.0",
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "grafana-postgresql-datasource",
|
||||
"uid": "edpbbm8hqv9j4e"
|
||||
},
|
||||
"editorMode": "builder",
|
||||
"format": "table",
|
||||
"rawSql": "SELECT COUNT(*) FROM contacts LIMIT 50 ",
|
||||
"refId": "A",
|
||||
"sql": {
|
||||
"columns": [
|
||||
{
|
||||
"name": "COUNT",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "*",
|
||||
"type": "functionParameter"
|
||||
}
|
||||
],
|
||||
"type": "function"
|
||||
}
|
||||
],
|
||||
"groupBy": [
|
||||
{
|
||||
"property": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "groupBy"
|
||||
}
|
||||
],
|
||||
"limit": 50
|
||||
},
|
||||
"table": "contacts"
|
||||
}
|
||||
],
|
||||
"title": "Total Contact Count",
|
||||
"type": "stat"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "grafana-postgresql-datasource",
|
||||
"uid": "edpbbm8hqv9j4e"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "thresholds"
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": null
|
||||
},
|
||||
{
|
||||
"color": "#EAB839",
|
||||
"value": 15
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 30
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 11,
|
||||
"w": 8,
|
||||
"x": 3,
|
||||
"y": 0
|
||||
},
|
||||
"id": 3,
|
||||
"options": {
|
||||
"basemap": {
|
||||
"config": {
|
||||
"showLabels": true,
|
||||
"theme": "auto"
|
||||
},
|
||||
"type": "carto"
|
||||
},
|
||||
"controls": {
|
||||
"mouseWheelZoom": true,
|
||||
"showAttribution": true,
|
||||
"showDebug": false,
|
||||
"showLayercontrol": false,
|
||||
"showScale": true,
|
||||
"showZoom": true
|
||||
},
|
||||
"layers": [
|
||||
{
|
||||
"config": {
|
||||
"cluster": false,
|
||||
"clusterDistance": 6,
|
||||
"clusterMinDistance": 0,
|
||||
"clusterValue": "size",
|
||||
"color": {
|
||||
"field": "Contacts",
|
||||
"fixed": "dark-green"
|
||||
},
|
||||
"enableGradient": false,
|
||||
"enableShadow": false,
|
||||
"fillOpacity": 0.2,
|
||||
"iconSize": 9,
|
||||
"pinShape": "triangle",
|
||||
"selectIcon": "",
|
||||
"shape": "circle",
|
||||
"showLegend": false,
|
||||
"showPin": false,
|
||||
"size": {
|
||||
"fixed": 1,
|
||||
"max": 15,
|
||||
"min": 2
|
||||
}
|
||||
},
|
||||
"displayProperties": [
|
||||
"Contacts"
|
||||
],
|
||||
"location": {
|
||||
"geojson": "geojson",
|
||||
"mode": "geojson"
|
||||
},
|
||||
"name": "Contacts",
|
||||
"query": "A",
|
||||
"titleField": "state",
|
||||
"type": "markers"
|
||||
}
|
||||
],
|
||||
"view": {
|
||||
"id": "north-america",
|
||||
"lat": 40,
|
||||
"lon": -100,
|
||||
"zoom": 4
|
||||
}
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "grafana-postgresql-datasource",
|
||||
"uid": "edpbbm8hqv9j4e"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"format": "table",
|
||||
"rawQuery": true,
|
||||
"rawSql": "SELECT s.name as \"state\", s.geojson, COUNT(*) AS \"Contacts\"\r\nFROM contacts c\r\nJOIN states s ON c.state = s.id\r\nGROUP BY s.name, s.geojson;",
|
||||
"refId": "A",
|
||||
"sql": {
|
||||
"columns": [
|
||||
{
|
||||
"parameters": [
|
||||
{
|
||||
"name": "*",
|
||||
"type": "functionParameter"
|
||||
}
|
||||
],
|
||||
"type": "function"
|
||||
}
|
||||
],
|
||||
"groupBy": [
|
||||
{
|
||||
"property": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "groupBy"
|
||||
}
|
||||
],
|
||||
"limit": 50,
|
||||
"whereJsonTree": {
|
||||
"children1": [],
|
||||
"id": "aa8bb9bb-0123-4456-b89a-b19037fa2cf6",
|
||||
"type": "group"
|
||||
}
|
||||
},
|
||||
"table": "states"
|
||||
}
|
||||
],
|
||||
"title": "All Contacts (Map)",
|
||||
"type": "orchestracities-map-panel"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "grafana-postgresql-datasource",
|
||||
"uid": "edpbbm8hqv9j4e"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "thresholds"
|
||||
},
|
||||
"custom": {
|
||||
"align": "auto",
|
||||
"cellOptions": {
|
||||
"type": "auto"
|
||||
},
|
||||
"inspect": false
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": null
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Contacts"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "custom.width",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 11,
|
||||
"w": 4,
|
||||
"x": 11,
|
||||
"y": 0
|
||||
},
|
||||
"id": 4,
|
||||
"options": {
|
||||
"cellHeight": "sm",
|
||||
"footer": {
|
||||
"countRows": false,
|
||||
"enablePagination": true,
|
||||
"fields": "",
|
||||
"reducer": [
|
||||
"sum"
|
||||
],
|
||||
"show": true
|
||||
},
|
||||
"showHeader": true
|
||||
},
|
||||
"pluginVersion": "11.0.0",
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "grafana-postgresql-datasource",
|
||||
"uid": "edpbbm8hqv9j4e"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"format": "table",
|
||||
"rawQuery": true,
|
||||
"rawSql": "SELECT s.name as \"State\", COUNT(*) AS \"Contacts\"\r\nFROM contacts c\r\nJOIN states s ON c.state = s.id\r\nGROUP BY s.name;",
|
||||
"refId": "A",
|
||||
"sql": {
|
||||
"columns": [
|
||||
{
|
||||
"parameters": [],
|
||||
"type": "function"
|
||||
}
|
||||
],
|
||||
"groupBy": [
|
||||
{
|
||||
"property": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "groupBy"
|
||||
}
|
||||
],
|
||||
"limit": 50
|
||||
}
|
||||
}
|
||||
],
|
||||
"title": "All Contacts",
|
||||
"type": "table"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "grafana-postgresql-datasource",
|
||||
"uid": "edpbbm8hqv9j4e"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "thresholds"
|
||||
},
|
||||
"custom": {
|
||||
"align": "auto",
|
||||
"cellOptions": {
|
||||
"type": "auto"
|
||||
},
|
||||
"inspect": false
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": null
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Contacts"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "custom.width",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 11,
|
||||
"w": 4,
|
||||
"x": 15,
|
||||
"y": 0
|
||||
},
|
||||
"id": 9,
|
||||
"options": {
|
||||
"cellHeight": "sm",
|
||||
"footer": {
|
||||
"countRows": false,
|
||||
"enablePagination": false,
|
||||
"fields": "",
|
||||
"reducer": [
|
||||
"sum"
|
||||
],
|
||||
"show": false
|
||||
},
|
||||
"showHeader": true
|
||||
},
|
||||
"pluginVersion": "11.0.0",
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "grafana-postgresql-datasource",
|
||||
"uid": "edpbbm8hqv9j4e"
|
||||
},
|
||||
"editorMode": "builder",
|
||||
"format": "table",
|
||||
"rawQuery": true,
|
||||
"rawSql": "SELECT operator AS \"Operator\", COUNT(*) AS \"Count\" FROM contacts GROUP BY operator ORDER BY COUNT(*) DESC LIMIT 10 ",
|
||||
"refId": "A",
|
||||
"sql": {
|
||||
"columns": [
|
||||
{
|
||||
"alias": "\"Operator\"",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "operator",
|
||||
"type": "functionParameter"
|
||||
}
|
||||
],
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"alias": "\"Count\"",
|
||||
"name": "COUNT",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "*",
|
||||
"type": "functionParameter"
|
||||
}
|
||||
],
|
||||
"type": "function"
|
||||
}
|
||||
],
|
||||
"groupBy": [
|
||||
{
|
||||
"property": {
|
||||
"name": "operator",
|
||||
"type": "string"
|
||||
},
|
||||
"type": "groupBy"
|
||||
}
|
||||
],
|
||||
"limit": 10,
|
||||
"orderBy": {
|
||||
"property": {
|
||||
"name": "COUNT(*)",
|
||||
"type": "string"
|
||||
},
|
||||
"type": "property"
|
||||
},
|
||||
"orderByDirection": "DESC"
|
||||
},
|
||||
"table": "contacts"
|
||||
}
|
||||
],
|
||||
"title": "Top Operators",
|
||||
"type": "table"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "grafana-postgresql-datasource",
|
||||
"uid": "edpbbm8hqv9j4e"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "thresholds"
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": null
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 11,
|
||||
"w": 3,
|
||||
"x": 0,
|
||||
"y": 11
|
||||
},
|
||||
"id": 6,
|
||||
"options": {
|
||||
"colorMode": "value",
|
||||
"graphMode": "area",
|
||||
"justifyMode": "auto",
|
||||
"orientation": "auto",
|
||||
"reduceOptions": {
|
||||
"calcs": [
|
||||
"lastNotNull"
|
||||
],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"showPercentChange": false,
|
||||
"textMode": "auto",
|
||||
"wideLayout": true
|
||||
},
|
||||
"pluginVersion": "11.0.0",
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "grafana-postgresql-datasource",
|
||||
"uid": "edpbbm8hqv9j4e"
|
||||
},
|
||||
"editorMode": "builder",
|
||||
"format": "table",
|
||||
"rawSql": "SELECT COUNT(*) FROM contacts WHERE $__timeFilter(\"time\") LIMIT 50 ",
|
||||
"refId": "A",
|
||||
"sql": {
|
||||
"columns": [
|
||||
{
|
||||
"name": "COUNT",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "*",
|
||||
"type": "functionParameter"
|
||||
}
|
||||
],
|
||||
"type": "function"
|
||||
}
|
||||
],
|
||||
"groupBy": [
|
||||
{
|
||||
"property": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "groupBy"
|
||||
}
|
||||
],
|
||||
"limit": 50,
|
||||
"whereJsonTree": {
|
||||
"children1": [
|
||||
{
|
||||
"id": "a88a9ba9-4567-489a-bcde-f1903e7c367e",
|
||||
"properties": {
|
||||
"field": "\"time\"",
|
||||
"fieldSrc": "field",
|
||||
"operator": "macros",
|
||||
"value": [
|
||||
"timeFilter"
|
||||
],
|
||||
"valueSrc": [
|
||||
"value"
|
||||
],
|
||||
"valueType": [
|
||||
"datetime"
|
||||
]
|
||||
},
|
||||
"type": "rule"
|
||||
}
|
||||
],
|
||||
"id": "98bab9aa-0123-4456-b89a-b1903e74eda4",
|
||||
"type": "group"
|
||||
},
|
||||
"whereString": "$__timeFilter(\"time\")"
|
||||
},
|
||||
"table": "contacts"
|
||||
}
|
||||
],
|
||||
"title": "Recent Contact Count",
|
||||
"type": "stat"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "grafana-postgresql-datasource",
|
||||
"uid": "edpbbm8hqv9j4e"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "thresholds"
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": null
|
||||
},
|
||||
{
|
||||
"color": "#EAB839",
|
||||
"value": 15
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 30
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 11,
|
||||
"w": 8,
|
||||
"x": 3,
|
||||
"y": 11
|
||||
},
|
||||
"id": 7,
|
||||
"options": {
|
||||
"basemap": {
|
||||
"config": {
|
||||
"showLabels": true,
|
||||
"theme": "auto"
|
||||
},
|
||||
"type": "carto"
|
||||
},
|
||||
"controls": {
|
||||
"mouseWheelZoom": true,
|
||||
"showAttribution": true,
|
||||
"showDebug": false,
|
||||
"showLayercontrol": false,
|
||||
"showScale": true,
|
||||
"showZoom": true
|
||||
},
|
||||
"layers": [
|
||||
{
|
||||
"config": {
|
||||
"cluster": false,
|
||||
"clusterDistance": 6,
|
||||
"clusterMinDistance": 0,
|
||||
"clusterValue": "size",
|
||||
"color": {
|
||||
"field": "Contacts",
|
||||
"fixed": "dark-green"
|
||||
},
|
||||
"enableGradient": false,
|
||||
"enableShadow": false,
|
||||
"fillOpacity": 0.2,
|
||||
"iconSize": 9,
|
||||
"pinShape": "triangle",
|
||||
"selectIcon": "",
|
||||
"shape": "circle",
|
||||
"showLegend": false,
|
||||
"showPin": false,
|
||||
"size": {
|
||||
"fixed": 1,
|
||||
"max": 15,
|
||||
"min": 2
|
||||
}
|
||||
},
|
||||
"displayProperties": [
|
||||
"Contacts"
|
||||
],
|
||||
"location": {
|
||||
"geojson": "geojson",
|
||||
"mode": "geojson"
|
||||
},
|
||||
"name": "Contacts",
|
||||
"query": "A",
|
||||
"titleField": "state",
|
||||
"type": "markers"
|
||||
}
|
||||
],
|
||||
"view": {
|
||||
"id": "north-america",
|
||||
"lat": 40,
|
||||
"lon": -100,
|
||||
"zoom": 4
|
||||
}
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "grafana-postgresql-datasource",
|
||||
"uid": "edpbbm8hqv9j4e"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"format": "table",
|
||||
"rawQuery": true,
|
||||
"rawSql": "SELECT s.name as \"state\", s.geojson, COUNT(*) AS \"Contacts\"\r\nFROM contacts c\r\nJOIN states s ON c.state = s.id\r\nWHERE $__timeFilter(\"time\")\r\nGROUP BY s.name, s.geojson;",
|
||||
"refId": "A",
|
||||
"sql": {
|
||||
"columns": [
|
||||
{
|
||||
"parameters": [
|
||||
{
|
||||
"name": "*",
|
||||
"type": "functionParameter"
|
||||
}
|
||||
],
|
||||
"type": "function"
|
||||
}
|
||||
],
|
||||
"groupBy": [
|
||||
{
|
||||
"property": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "groupBy"
|
||||
}
|
||||
],
|
||||
"limit": 50,
|
||||
"whereJsonTree": {
|
||||
"children1": [],
|
||||
"id": "aa8bb9bb-0123-4456-b89a-b19037fa2cf6",
|
||||
"type": "group"
|
||||
}
|
||||
},
|
||||
"table": "states"
|
||||
}
|
||||
],
|
||||
"title": "Recent Contacts (Map)",
|
||||
"type": "orchestracities-map-panel"
|
||||
},
|
||||
{
|
||||
"datasource": {
|
||||
"type": "grafana-postgresql-datasource",
|
||||
"uid": "edpbbm8hqv9j4e"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "thresholds"
|
||||
},
|
||||
"custom": {
|
||||
"align": "auto",
|
||||
"cellOptions": {
|
||||
"type": "auto"
|
||||
},
|
||||
"inspect": false
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": null
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Contacts"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "custom.width",
|
||||
"value": 80
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"gridPos": {
|
||||
"h": 11,
|
||||
"w": 4,
|
||||
"x": 11,
|
||||
"y": 11
|
||||
},
|
||||
"id": 8,
|
||||
"options": {
|
||||
"cellHeight": "sm",
|
||||
"footer": {
|
||||
"countRows": false,
|
||||
"enablePagination": true,
|
||||
"fields": "",
|
||||
"reducer": [
|
||||
"sum"
|
||||
],
|
||||
"show": true
|
||||
},
|
||||
"showHeader": true
|
||||
},
|
||||
"pluginVersion": "11.0.0",
|
||||
"targets": [
|
||||
{
|
||||
"datasource": {
|
||||
"type": "grafana-postgresql-datasource",
|
||||
"uid": "edpbbm8hqv9j4e"
|
||||
},
|
||||
"editorMode": "code",
|
||||
"format": "table",
|
||||
"rawQuery": true,
|
||||
"rawSql": "SELECT s.name as \"State\", COUNT(*) AS \"Contacts\"\r\nFROM contacts c\r\nJOIN states s ON c.state = s.id\r\nWHERE $__timeFilter(\"time\")\r\nGROUP BY s.name;",
|
||||
"refId": "A",
|
||||
"sql": {
|
||||
"columns": [
|
||||
{
|
||||
"parameters": [],
|
||||
"type": "function"
|
||||
}
|
||||
],
|
||||
"groupBy": [
|
||||
{
|
||||
"property": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "groupBy"
|
||||
}
|
||||
],
|
||||
"limit": 50
|
||||
}
|
||||
}
|
||||
],
|
||||
"title": "Recent Contacts",
|
||||
"type": "table"
|
||||
}
|
||||
],
|
||||
"schemaVersion": 39,
|
||||
"tags": [],
|
||||
"templating": {
|
||||
"list": []
|
||||
},
|
||||
"time": {
|
||||
"from": "now-6h",
|
||||
"to": "now"
|
||||
},
|
||||
"timeRangeUpdatedDuringEditOrView": false,
|
||||
"timepicker": {},
|
||||
"timezone": "browser",
|
||||
"title": "New dashboard",
|
||||
"uid": "fdpbhdsbrhs74f",
|
||||
"version": 10,
|
||||
"weekStart": ""
|
||||
}
|
10
server/pm2.json
Normal file
10
server/pm2.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"apps": [
|
||||
{
|
||||
"name": "FDLogUp",
|
||||
"script": "index.ts",
|
||||
"interpreter": "bun",
|
||||
"interpreter_args": "run"
|
||||
}
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue
Block a user