Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
813 changes: 813 additions & 0 deletions config/grafana/dashboards/delta-notifier.json

Large diffs are not rendered by default.

995 changes: 995 additions & 0 deletions config/grafana/dashboards/mu-search.json

Large diffs are not rendered by default.

553 changes: 553 additions & 0 deletions config/grafana/dashboards/sparql-parser.json

Large diffs are not rendered by default.

14 changes: 14 additions & 0 deletions config/grafana/provisioning/dashboards/default.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
apiVersion: 1

providers:
- name: 'default'
orgId: 1
folder: ''
type: file
disableDeletion: false
editable: true
allowUiUpdates: true
updateIntervalSeconds: 60
options:
path: /var/lib/grafana/dashboards
foldersFromFilesStructure: false
10 changes: 10 additions & 0 deletions config/grafana/provisioning/datasources/prometheus.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
apiVersion: 1

datasources:
- name: Prometheus
type: prometheus
access: proxy
url: http://prometheus:9090
uid: prometheus
isDefault: true
editable: true
41 changes: 41 additions & 0 deletions config/json-exporter/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
modules:
sparql_parser:
metrics:
# Worker pool
- name: sparqlparser_workers_total
path: "{ .amount-of-workers }"
help: "Total number of worker threads"
- name: sparqlparser_workers_idle
path: "{ .workers-without-work }"
help: "Workers with empty queues"
- name: sparqlparser_workers_running
path: "{ .worker-states.RUNNING }"
help: "Workers in RUNNING state"
- name: sparqlparser_workers_decommissioned
path: "{ .worker-states.DECOMMISSIONED }"
help: "Workers in DECOMMISSIONED state"

# Request queues
- name: sparqlparser_queue_size
path: "{ .total-queue }"
help: "Total jobs across all worker queues"
- name: sparqlparser_waiting_queue_size
path: "{ .total-waiting-queue }"
help: "Jobs queued but not yet executing"

# Update sequencer (SPARQL INSERT/DELETE pipeline)
- name: sparqlparser_update_sequencer_count
path: "{ .update-sequencer-count }"
help: "Total pending SPARQL update operations"
- name: sparqlparser_update_sequencer_initialized
path: "{ .update-sequencer-states.INITIALIZED }"
help: "Update operations in INITIALIZED state"
- name: sparqlparser_update_sequencer_waiting
path: "{ .update-sequencer-states.WAITING }"
help: "Update operations in WAITING state"
- name: sparqlparser_update_sequencer_running
path: "{ .update-sequencer-states.RUNNING }"
help: "Update operations in RUNNING state"
- name: sparqlparser_update_sequencer_finished
path: "{ .update-sequencer-states.FINISHED }"
help: "Update operations in FINISHED state"
30 changes: 30 additions & 0 deletions config/prometheus/prometheus.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
global:
scrape_interval: 15s
evaluation_interval: 15s

scrape_configs:
- job_name: 'delta-notifier'
metrics_path: '/metrics'
static_configs:
- targets: ['delta-notifier:80']

# Uncomment if your project includes mu-search
# - job_name: 'mu-search'
# metrics_path: '/metrics'
# static_configs:
# - targets: ['search:80']

- job_name: 'sparql-parser'
metrics_path: /probe
params:
module: [sparql_parser]
static_configs:
- targets:
- http://database:8890/recovery-status
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: json-exporter:7979
48 changes: 48 additions & 0 deletions docker-compose.monitoring.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
x-logging:
&default-logging
driver: "json-file"
options:
max-size: "10m"
max-file: "3"

services:
json-exporter:
image: prometheuscommunity/json-exporter:v0.6.0
volumes:
- ./config/json-exporter/config.yml:/config.yml
command: ["--config.file=/config.yml"]
labels:
- "logging=true"
logging: *default-logging

prometheus:
image: prom/prometheus:v2.53.0
volumes:
- ./config/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-data:/prometheus
labels:
- "logging=true"
logging: *default-logging

grafana:
image: grafana/grafana:11.1.0
environment:
# CHANGE THIS: set a secure admin password before deploying
- GF_SECURITY_ADMIN_PASSWORD=changeme
# Anonymous access: allows viewing dashboards without logging in.
# Anyone who can reach the Grafana port gets read-only access to all
# dashboards. Disable this (set to false) if Grafana is exposed to
# untrusted networks or the internet.
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer
volumes:
- ./config/grafana/provisioning:/etc/grafana/provisioning
- ./config/grafana/dashboards:/var/lib/grafana/dashboards
- grafana-data:/var/lib/grafana
labels:
- "logging=true"
logging: *default-logging

volumes:
prometheus-data:
grafana-data: