diff --git a/Cargo.lock b/Cargo.lock index 4a1cf01..30e4677 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -216,9 +216,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.32" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41daef31d7a747c5c847246f36de49ced6f7403b4cdabc807a97b5cc184cda7a" +checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" dependencies = [ "android-tzdata", "iana-time-zone", @@ -1215,18 +1215,18 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", diff --git a/docker-compose.yml b/docker-compose.yml index 6346062..b7d110f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,11 @@ services: file: support/clickhouse/docker-compose.yml service: clickhouse + grafana: + extends: + file: support/grafana/docker-compose.yml + service: grafana + qrust: build: context: . @@ -20,3 +25,4 @@ services: volumes: clickhouse-lib: clickhouse-log: + grafana-lib: diff --git a/support/grafana/datasources/clickhouse.yaml b/support/grafana/datasources/clickhouse.yaml new file mode 100644 index 0000000..08acef2 --- /dev/null +++ b/support/grafana/datasources/clickhouse.yaml @@ -0,0 +1,12 @@ +apiVersion: 1 + +datasources: + - name: ClickHouse + type: grafana-clickhouse-datasource + jsonData: + server: localhost + port: 9000 + username: ${CLICKHOUSE_USER} + defaultDatabase: ${CLICKHOUSE_DB} + secureJsonData: + password: ${CLICKHOUSE_PASSWORD} diff --git a/support/grafana/docker-compose.yml b/support/grafana/docker-compose.yml new file mode 100644 index 0000000..aacd8de --- /dev/null +++ b/support/grafana/docker-compose.yml @@ -0,0 +1,19 @@ +services: + grafana: + image: grafana/grafana + hostname: grafana + restart: unless-stopped + volumes: + - grafana-lib:/var/lib/grafana + - ./datasources:/etc/grafana/provisioning/datasources + environment: + - GF_INSTALL_PLUGINS=grafana-clickhouse-datasource + - GF_SECURITY_ADMIN_USER=${GRAFANA_USER} + - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD} + - CLICKHOUSE_USER=${CLICKHOUSE_USER} + - CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} + - CLICKHOUSE_DB=${CLICKHOUSE_DB} + network_mode: host + +volumes: + grafana-lib: diff --git a/support/grafana/queries.sql b/support/grafana/queries.sql new file mode 100644 index 0000000..1a2e357 --- /dev/null +++ b/support/grafana/queries.sql @@ -0,0 +1,17 @@ +SELECT $__timeInterval(time), + any(open) as open, + max(high) as high, + min(low) as low, + anyLast(close) as close, + sum(volume) as volume +FROM bars FINAL +WHERE $__timeFilter(time) + AND symbol = '${bars}' +GROUP BY time; + +SELECT time_created AS time, + headline +FROM news FINAL +WHERE $__timeFilter(time) + AND hasAny(symbols, [${news}]) +ORDER BY time ASC;