diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml
deleted file mode 100644
index 2a843320ca..0000000000
--- a/.github/release-drafter.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-name-template: $NEXT_PATCH_VERSION
-tag-template: $NEXT_PATCH_VERSION
-categories:
- - title: 💥 Breaking changes
- labels:
- - breaking
- - title: 🚀 New features and improvements
- labels:
- - enhancement
- - feat
- - feature
- - title: 🐛 Bug fixes
- labels:
- - bug
- - fix
- - title: 📦 Dependency updates
- labels:
- - dependencies
- - deps
- collapse-after: 15
- - title: 📝 Documentation updates
- labels:
- - documentation
- - docs
- - doc
- - title: 🌐 Localization and translation
- labels:
- - localization
- - title: 🌐 Community-related changes
- labels:
- - community
- - title: 👻 Maintenance
- labels:
- - chore
- - maintenance
- - title: 🚦 Tests
- labels:
- - test
- - title: ✍ Other changes
-exclude-labels:
- - skip-changelog
- - invalid
-template: |
- $CHANGES
-
-autolabeler:
- - label: 'documentation'
- files:
- - '*.md'
- branch:
- - '/docs{0,1}\/.+/'
- - label: 'bug'
- branch:
- - '/fix\/.+/'
- - label: 'deps'
- branch:
- - '/deps\/.+/'
- - label: 'enhancement'
- branch:
- - '/feature\/.+/'
- - '/feat\/.+/'
diff --git a/.github/workflows/blazor.yml b/.github/workflows/blazor.yml
deleted file mode 100644
index 1939d2b8db..0000000000
--- a/.github/workflows/blazor.yml
+++ /dev/null
@@ -1,55 +0,0 @@
-name: Build / Publish Blazor WebAssembly Project
-
-on:
- workflow_dispatch:
-
- push:
- branches:
- - main
- paths:
- - "src/apps/blazor/**"
- - "src/Directory.Packages.props"
- - "src/Dockerfile.Blazor"
-
- pull_request:
- branches:
- - main
- paths:
- - "src/apps/blazor/**"
- - "src/Directory.Packages.props"
- - "src/Dockerfile.Blazor"
-
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: setup dotnet
- uses: actions/setup-dotnet@v4
- with:
- dotnet-version: 9.x
- - name: restore dependencies
- run: dotnet restore ./src/apps/blazor/client/Client.csproj
- - name: build
- run: dotnet build ./src/apps/blazor/client/Client.csproj --no-restore
- - name: test
- run: dotnet test ./src/apps/blazor/client/Client.csproj --no-build --verbosity normal
-
- publish:
- needs: build
- if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
- runs-on: ubuntu-latest
- steps:
- - name: checkout
- uses: actions/checkout@v4
- - name: docker login
- uses: docker/login-action@v3
- with:
- registry: ghcr.io
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
- - name: build and publish to github container registry
- working-directory: ./src/
- run: |
- docker build -t ghcr.io/${{ github.repository_owner }}/blazor:latest -f Dockerfile.Blazor .
- docker push ghcr.io/${{ github.repository_owner }}/blazor:latest
diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml
deleted file mode 100644
index 7a88fcb9b4..0000000000
--- a/.github/workflows/changelog.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-name: Release Drafter
-
-on:
- workflow_dispatch:
- push:
- branches:
- - main
-
-permissions:
- contents: read
-
-jobs:
- update_release_draft:
- permissions:
- # write permission is required to create a github release
- contents: write
- # write permission is required for autolabeler
- # otherwise, read permission is required at least
- pull-requests: write
- runs-on: ubuntu-latest
- steps:
- - uses: release-drafter/release-drafter@v6
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/nuget.yml b/.github/workflows/nuget.yml
deleted file mode 100644
index 4ee62a6ff5..0000000000
--- a/.github/workflows/nuget.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-name: Publish Package to NuGet.org
-on:
- push:
- branches:
- - main
- paths:
- - "FSH.StarterKit.nuspec"
-jobs:
- publish:
- name: publish nuget
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- name: checkout code
- - uses: nuget/setup-nuget@v2
- name: setup nuget
- with:
- nuget-version: "latest"
- nuget-api-key: ${{ secrets.NUGET_API_KEY }}
- - name: generate package
- run: nuget pack FSH.StarterKit.nuspec -NoDefaultExcludes
- - name: publish package
- run: nuget push *.nupkg -Source 'https://api.nuget.org/v3/index.json' -SkipDuplicate
diff --git a/.github/workflows/webapi.yml b/.github/workflows/webapi.yml
deleted file mode 100644
index a84e28f03a..0000000000
--- a/.github/workflows/webapi.yml
+++ /dev/null
@@ -1,57 +0,0 @@
-name: Build / Publish .NET WebAPI Project
-
-on:
- workflow_dispatch:
-
- push:
- branches:
- - main
- paths:
- - "src/api/**"
- - "src/Directory.Packages.props"
-
- pull_request:
- branches:
- - main
- paths:
- - "src/api/**"
- - "src/Directory.Packages.props"
-
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: setup dotnet
- uses: actions/setup-dotnet@v4
- with:
- dotnet-version: 9.x
- - name: restore dependencies
- run: dotnet restore ./src/api/server/Server.csproj
- - name: build
- run: dotnet build ./src/api/server/Server.csproj --no-restore
- - name: test
- run: dotnet test ./src/api/server/Server.csproj --no-build --verbosity normal
-
- publish:
- needs: build
- if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
- runs-on: ubuntu-latest
- steps:
- - name: checkout
- uses: actions/checkout@v4
- - name: setup dotnet
- uses: actions/setup-dotnet@v4
- with:
- dotnet-version: 9.x
- - name: docker login
- uses: docker/login-action@v3
- with:
- registry: ghcr.io
- username: ${{ github.actor }}
- password: ${{ secrets.GITHUB_TOKEN }}
- - name: publish to github container registry
- working-directory: ./src/api/server/
- run: |
- dotnet publish -c Release -p:ContainerRepository=ghcr.io/${{ github.repository_owner}}/webapi -p:RuntimeIdentifier=linux-x64
- docker push ghcr.io/${{ github.repository_owner}}/webapi --all-tags
diff --git a/.template.config/icon.png b/.template.config/icon.png
deleted file mode 100644
index fd9fa41873..0000000000
Binary files a/.template.config/icon.png and /dev/null differ
diff --git a/.template.config/ide.host.json b/.template.config/ide.host.json
deleted file mode 100644
index c98f871c6d..0000000000
--- a/.template.config/ide.host.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/vs-2017.3.host",
- "order": 0,
- "icon": "icon.png"
-}
\ No newline at end of file
diff --git a/.template.config/template.json b/.template.config/template.json
deleted file mode 100644
index a5415e836e..0000000000
--- a/.template.config/template.json
+++ /dev/null
@@ -1,62 +0,0 @@
-{
- "$schema": "http://json.schemastore.org/template",
- "author": "Mukesh Murugan",
- "classifications": [
- "WebAPI",
- "Clean Architecture",
- "Boilerplate",
- "ASP.NET Core",
- "Starter Kit",
- "Cloud",
- "Web"
- ],
- "tags": {
- "language": "C#",
- "type": "project"
- },
- "identity": "FullStackHero.NET.StarterKit",
- "name": "FullStackHero .NET Starter Kit",
- "description": "The best way to start a full-stack .NET 9 Web App.",
- "shortName": "fsh",
- "sourceName": "FSH.Starter",
- "preferNameDirectory": true,
- "sources": [
- {
- "source": "./",
- "target": "./",
- "exclude": [
- ".template.config/**",
- ".idea/**",
- ".vscode/**",
- ".vs/**",
- ".github/**",
- "templates/**/*",
- "**/*.filelist",
- "**/*.user",
- "**/images",
- "**/*.lock.json",
- "*.nuspec"
- ],
- "rename": {
- "README-template.md": "README.md"
- }
- }
- ],
- "primaryOutputs": [
- {
- "path": "./src"
- }
- ],
- "postActions": [
- {
- "description": "restore webapi project dependencies",
- "manualInstructions": [
- {
- "text": "Run 'dotnet restore'"
- }
- ],
- "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025",
- "continueOnError": false
- }
- ]
-}
\ No newline at end of file
diff --git a/FSH.StarterKit.nuspec b/FSH.StarterKit.nuspec
deleted file mode 100644
index a96e4b69f1..0000000000
--- a/FSH.StarterKit.nuspec
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
- FullStackHero.NET.StarterKit
- FullStackHero .NET Starter Kit
- 2.0.4-rc
- Mukesh Murugan
- The best way to start a full-stack Multi-tenant .NET 9 Web App.
- en-US
- ./content/LICENSE
- 2024
- ./content/README.md
- https://fullstackhero.net/dotnet-starter-kit/general/getting-started/
-
-
-
-
- cleanarchitecture clean architecture WebAPI mukesh codewithmukesh fullstackhero solution csharp
- ./content/icon.png
-
-
-
-
-
\ No newline at end of file
diff --git a/README-template.md b/README-template.md
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/README.md b/README.md
deleted file mode 100644
index 7682ba1331..0000000000
--- a/README.md
+++ /dev/null
@@ -1,95 +0,0 @@
-# FullStackHero .NET 9 Starter Kit 🚀
-
-> With ASP.NET Core Web API & Blazor Client
-
-FullStackHero .NET Starter Kit is a starting point for your next `.NET 9 Clean Architecture` Solution that incorporates the most essential packages and features your projects will ever need including out-of-the-box Multi-Tenancy support. This project can save well over 200+ hours of development time for your team.
-
-
-
-# Important
-
-This project is currently work in progress. The NuGet package is not yet available for v2. For now, you can fork this repository to try it out. [Follow @iammukeshm on X](https://x.com/iammukeshm) for project related updates.
-
-# Quick Start Guide
-
-As the project is still in beta, the NuGet packages are not yet available. You can try out the project by pulling the code directly from this repository.
-
-Prerequisites:
-
-- .NET 9 SDK installed.
-- Visual Studio IDE.
-- Docker Desktop.
-- PostgreSQL instance running on your machine or docker container.
-
-Please follow the below instructions.
-
-1. Fork this repository to your local.
-2. Open up the `./src/FSH.Starter.sln`.
-3. This would up the FSH Starter solution which has 3 main components.
- 1. Aspire Dashboard (set as the default project)
- 2. Web API
- 3. Blazor
-4. Now we will have to set the connection string for the API. Navigate to `./src/api/server/appsettings.Development.json` and change the `ConnectionString` under `DatabaseOptions`. Save it.
-5. Once that is done, run the application via Visual Studio, with Aspire as the default project. This will open up Aspire Dashboard at `https://localhost:7200/`.
-6. API will be running at `https://localhost:7000/swagger/index.html`.
-7. Blazor will be running at `https://localhost:7100/`.
-
-# 🔎 The Project
-
-# ✨ Technologies
-
-- .NET 9
-- Entity Framework Core 9
-- Blazor
-- MediatR
-- PostgreSQL
-- Redis
-- FluentValidation
-
-# 👨🚀 Architecture
-
-# 📬 Service Endpoints
-
-| Endpoint | Method | Description |
-| -------- | ------ | ---------------- |
-| `/token` | POST | Generates Token. |
-
-# 🧪 Running Locally
-
-# 🐳 Docker Support
-
-# ☁️ Deploying to AWS
-
-# 🤝 Contributing
-
-# 🍕 Community
-
-Thanks to the community who contribute to this repository! [Submit your PR and join the elite list!](CONTRIBUTING.md)
-
-[](https://github.com/fullstackhero/dotnet-starter-kit/graphs/contributors)
-
-# 📝 Notes
-
-## Add Migrations
-
-Navigate to `./api/server` and run the following EF CLI commands.
-
-```bash
-dotnet ef migrations add "Add Identity Schema" --project .././migrations/postgresql/ --context IdentityDbContext -o Identity
-dotnet ef migrations add "Add Tenant Schema" --project .././migrations/postgresql/ --context TenantDbContext -o Tenant
-dotnet ef migrations add "Add Todo Schema" --project .././migrations/postgresql/ --context TodoDbContext -o Todo
-dotnet ef migrations add "Add Catalog Schema" --project .././migrations/postgresql/ --context CatalogDbContext -o Catalog
-```
-
-## What's Pending?
-
-- Few Identity Endpoints
-- Blazor Client
-- File Storage Service
-- NuGet Generation Pipeline
-- Source Code Generation
-- Searching / Sorting
-
-# ⚖️ LICENSE
-
-MIT © [fullstackhero](LICENSE)
diff --git a/assets/fullstackhero-dotnet-starter-kit.png b/assets/fullstackhero-dotnet-starter-kit.png
deleted file mode 100644
index d5ac1f26ff..0000000000
Binary files a/assets/fullstackhero-dotnet-starter-kit.png and /dev/null differ
diff --git a/compose/.env b/compose/.env
deleted file mode 100644
index 1226475d10..0000000000
--- a/compose/.env
+++ /dev/null
@@ -1,11 +0,0 @@
-#BASE_PATH=/mnt/c/docker-services/fsh-dotnet-starter-kit
-BASE_PATH=.
-############################################################################################################################################################################
-# API Services
-############################################################################################################################################################################
-FSH_DOTNETSTARTERKIT_WEBAPI_IMAGE=ghcr.io/fullstackhero/webapi:latest
-
-############################################################################################################################################################################
-# Websites
-############################################################################################################################################################################
-FSH_DOTNETSTARTERKIT_BLAZOR_IMAGE=ghcr.io/fullstackhero/blazor:latest
diff --git a/compose/docker-compose.yml b/compose/docker-compose.yml
deleted file mode 100644
index 8d75bcb074..0000000000
--- a/compose/docker-compose.yml
+++ /dev/null
@@ -1,195 +0,0 @@
-version: "4" #on wsl linux replace 3.8
-name: fullstackhero #on wsl linux replace with export COMPOSE_PROJECT_NAME=fullstackhero before docker-compose up command
-
-services:
- webapi:
- image: ${FSH_DOTNETSTARTERKIT_WEBAPI_IMAGE}
- pull_policy: always
- container_name: webapi
- networks:
- - fullstackhero
- environment:
- ASPNETCORE_ENVIRONMENT: docker
- ASPNETCORE_URLS: https://+:7000;http://+:5000
- ASPNETCORE_HTTPS_PORT: 7000
- ASPNETCORE_Kestrel__Certificates__Default__Password: password!
- ASPNETCORE_Kestrel__Certificates__Default__Path: /https/cert.pfx
- DatabaseOptions__ConnectionString: Server=postgres;Port=5433;Database=fullstackhero;User Id=pgadmin;Password=pgadmin
- DatabaseOptions__Provider: postgresql
- JwtOptions__Key: QsJbczCNysv/5SGh+U7sxedX8C07TPQPBdsnSDKZ/aE=
- HangfireOptions__Username: admin
- HangfireOptions__Password: Secure1234!Me
- MailOptions__From: mukesh@fullstackhero.net
- MailOptions__Host: smtp.ethereal.email
- MailOptions__Port: 587
- MailOptions__UserName: sherman.oconnell47@ethereal.email
- MailOptions__Password: KbuTCFv4J6Fy7256vh
- MailOptions__DisplayName: Mukesh Murugan
- CorsOptions__AllowedOrigins__0: http://localhost:5010
- CorsOptions__AllowedOrigins__1: http://localhost:7100
- CorsOptions__AllowedOrigins__2: https://localhost:7020
- OpenTelemetryOptions__Endpoint: http://otel-collector:4317
- RateLimitOptions__EnableRateLimiting: "false"
- OTEL_EXPORTER_OTLP_ENDPOINT: http://otel-collector:4317
- OTEL_SERVICE_NAME: FSH.Starter.WebApi.Host
- volumes:
- - ~/.aspnet/https:/https:ro #on wsl linux
- #- /mnt/c/Users/eduar/.aspnet/https:/https:ro
- ports:
- - 7000:7000
- - 5000:5000
- depends_on:
- postgres:
- condition: service_healthy
- restart: on-failure
-
- blazor:
- image: ${FSH_DOTNETSTARTERKIT_BLAZOR_IMAGE}
- pull_policy: always
- container_name: blazor
- environment:
- Frontend_FSHStarterBlazorClient_Settings__AppSettingsTemplate: /usr/share/nginx/html/appsettings.json.TEMPLATE
- Frontend_FSHStarterBlazorClient_Settings__AppSettingsJson: /usr/share/nginx/html/appsettings.json
- FSHStarterBlazorClient_ApiBaseUrl: https://localhost:7000
- ApiBaseUrl: https://localhost:7000
- networks:
- - fullstackhero
- entrypoint: [
- "/bin/sh",
- "-c",
- "envsubst <
- $${Frontend_FSHStarterBlazorClient_Settings__AppSettingsTemplate} >
- $${Frontend_FSHStarterBlazorClient_Settings__AppSettingsJson} && find
- /usr/share/nginx/html -type f | xargs chmod +r && exec nginx -g
- 'daemon off;'",
- ]
- volumes:
- - ~/.aspnet/https:/https:ro
- ports:
- - 7100:80
- depends_on:
- postgres:
- condition: service_healthy
- restart: on-failure
-
- postgres:
- container_name: postgres
- image: postgres:15-alpine
- networks:
- - fullstackhero
- environment:
- POSTGRES_USER: pgadmin
- POSTGRES_PASSWORD: pgadmin
- PGPORT: 5433
- ports:
- - 5433:5433
- volumes:
- - postgres-data:/var/lib/postgresql/data
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U pgadmin"]
- interval: 10s
- timeout: 5s
- retries: 5
-
- prometheus:
- image: prom/prometheus:latest
- container_name: prometheus
- restart: unless-stopped
- networks:
- - fullstackhero
- volumes:
- - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- - prometheus-data:/prometheus
- ports:
- - 9090:9090
-
- grafana:
- container_name: grafana
- image: grafana/grafana:latest
- user: "472"
- environment:
- GF_INSTALL_PLUGINS: "grafana-clock-panel,grafana-simple-json-datasource"
- ports:
- - 3000:3000
- volumes:
- - grafana-data:/var/lib/grafana
- - ./grafana/config/:/etc/grafana/
- - ./grafana/dashboards/:/var/lib/grafana/dashboards
- depends_on:
- - prometheus
- restart: unless-stopped
- networks:
- - fullstackhero
-
- otel-collector:
- image: otel/opentelemetry-collector-contrib:latest
- container_name: otel-collector
- command: --config /etc/otel/config.yaml
- environment:
- JAEGER_ENDPOINT: "jaeger:4317"
- LOKI_ENDPOINT: "http://loki:3100/loki/api/v1/push"
- volumes:
- - $BASE_PATH/otel-collector/otel-config.yaml:/etc/otel/config.yaml
- - $BASE_PATH/otel-collector/log:/log/otel
- depends_on:
- - jaeger
- - loki
- - prometheus
- ports:
- - 8888:8888 # Prometheus metrics exposed by the collector
- - 8889:8889 # Prometheus metrics exporter (scrape endpoint)
- - 13133:13133 # health_check extension
- - "55679:55679" # ZPages extension
- - 4317:4317 # OTLP gRPC receiver
- - 4318:4318 # OTLP Http receiver (Protobuf)
- networks:
- - fullstackhero
-
- jaeger:
- container_name: jaeger
- image: jaegertracing/all-in-one:latest
- command: --query.ui-config /etc/jaeger/jaeger-ui.json
- environment:
- - METRICS_STORAGE_TYPE=prometheus
- - PROMETHEUS_SERVER_URL=http://prometheus:9090
- - COLLECTOR_OTLP_ENABLED=true
- volumes:
- - $BASE_PATH/jaeger/jaeger-ui.json:/etc/jaeger/jaeger-ui.json
- depends_on:
- - prometheus
- ports:
- - "16686:16686"
- networks:
- - fullstackhero
-
- loki:
- container_name: loki
- image: grafana/loki:3.1.0
- command: -config.file=/mnt/config/loki-config.yml
- volumes:
- - $BASE_PATH/loki/loki.yml:/mnt/config/loki-config.yml
- ports:
- - "3100:3100"
- networks:
- - fullstackhero
-
- node_exporter:
- image: quay.io/prometheus/node-exporter:v1.5.0
- container_name: node_exporter
- command: "--path.rootfs=/host"
- pid: host
- restart: unless-stopped
- volumes:
- - /proc:/host/proc:ro
- - /sys:/host/sys:ro
- - /:/rootfs:ro
- networks:
- - fullstackhero
-
-volumes:
- postgres-data:
- grafana-data:
- prometheus-data:
-
-networks:
- fullstackhero:
diff --git a/compose/grafana/config/grafana.ini b/compose/grafana/config/grafana.ini
deleted file mode 100644
index 4277397334..0000000000
--- a/compose/grafana/config/grafana.ini
+++ /dev/null
@@ -1,16 +0,0 @@
-[auth.anonymous]
-enabled = true
-
-# Organization name that should be used for unauthenticated users
-org_name = Main Org.
-
-# Role for unauthenticated users, other valid values are `Editor` and `Admin`
-org_role = Admin
-
-# Hide the Grafana version text from the footer and help tooltip for unauthenticated users (default: false)
-hide_version = true
-
-[dashboards]
-default_home_dashboard_path = /var/lib/grafana/dashboards/aspnet-core.json
-
-min_refresh_interval = 1s
\ No newline at end of file
diff --git a/compose/grafana/config/provisioning/dashboards/default.yml b/compose/grafana/config/provisioning/dashboards/default.yml
deleted file mode 100644
index d2f0a7ca80..0000000000
--- a/compose/grafana/config/provisioning/dashboards/default.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-apiVersion: 1
-
-providers:
-- name: 'Prometheus'
- orgId: 1
- folder: ''
- type: file
- disableDeletion: false
- editable: true
- options:
- path: /var/lib/grafana/dashboards
\ No newline at end of file
diff --git a/compose/grafana/config/provisioning/datasources/default.yml b/compose/grafana/config/provisioning/datasources/default.yml
deleted file mode 100644
index 428d40e2ed..0000000000
--- a/compose/grafana/config/provisioning/datasources/default.yml
+++ /dev/null
@@ -1,69 +0,0 @@
-# config file version
-apiVersion: 1
-
-# list of datasources that should be deleted from the database
-deleteDatasources:
- - name: Prometheus
- orgId: 1
-
-# list of datasources to insert/update depending
-# whats available in the database
-datasources:
-- name: Prometheus
- type: prometheus
- access: proxy
- # Access mode - proxy (server in the UI) or direct (browser in the UI).
- url: http://host.docker.internal:9090
- uid: prom
-
-- name: Loki
- uid: loki
- type: loki
- access: proxy
- url: http://loki:3100
- # allow users to edit datasources from the UI.
- editable: true
- jsonData:
- derivedFields:
- - datasourceUid: jaeger
- matcherRegex: (?:"traceid"):"(\w+)"
- name: TraceID
- url: $${__value.raw}
-
-- name: Jaeger
- type: jaeger
- uid: jaeger
- access: proxy
- url: http://jaeger:16686
- readOnly: false
- isDefault: false
- # allow users to edit datasources from the UI.
- editable: true
- jsonData:
- tracesToLogsV2:
- # Field with an internal link pointing to a logs data source in Grafana.
- # datasourceUid value must match the uid value of the logs data source.
- datasourceUid: 'loki'
- spanStartTimeShift: '1h'
- spanEndTimeShift: '-1h'
- tags: [{ key: 'service.names', value: 'service_name' }]
- filterByTraceID: false
- filterBySpanID: false
- customQuery: true
- query: '{$${__tags}} |="$${__trace.traceId}"'
- tracesToMetrics:
- datasourceUid: 'prom'
- spanStartTimeShift: '1h'
- spanEndTimeShift: '-1h'
- tags: [{ key: 'service.name', value: 'service' }, { key: 'job' }]
- queries:
- - name: 'Sample query'
- query: 'sum(rate(traces_spanmetrics_latency_bucket{$$__tags}[5m]))'
- nodeGraph:
- enabled: true
- traceQuery:
- timeShiftEnabled: true
- spanStartTimeShift: '1h'
- spanEndTimeShift: '-1h'
- spanBar:
- type: 'None'
\ No newline at end of file
diff --git a/compose/grafana/dashboards/aspnet-core-endpoint.json b/compose/grafana/dashboards/aspnet-core-endpoint.json
deleted file mode 100644
index 05b5496712..0000000000
--- a/compose/grafana/dashboards/aspnet-core-endpoint.json
+++ /dev/null
@@ -1,933 +0,0 @@
-{
- "annotations": {
- "list": [
- {
- "builtIn": 1,
- "datasource": {
- "type": "grafana",
- "uid": "-- Grafana --"
- },
- "enable": true,
- "hide": true,
- "iconColor": "rgba(0, 211, 255, 1)",
- "name": "Annotations & Alerts",
- "target": {
- "limit": 100,
- "matchAny": false,
- "tags": [],
- "type": "dashboard"
- },
- "type": "dashboard"
- }
- ]
- },
- "description": "ASP.NET Core endpoint metrics from OpenTelemetry",
- "editable": true,
- "fiscalYearStartMonth": 0,
- "gnetId": 19925,
- "graphTooltip": 0,
- "id": 10,
- "links": [
- {
- "asDropdown": false,
- "icon": "dashboard",
- "includeVars": false,
- "keepTime": true,
- "tags": [],
- "targetBlank": false,
- "title": " ASP.NET Core",
- "tooltip": "",
- "type": "link",
- "url": "/d/KdDACDp4z/asp-net-core-metrics"
- }
- ],
- "liveNow": false,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "dark-green",
- "mode": "continuous-GrYlRd",
- "seriesBy": "max"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "axisSoftMin": 0,
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 50,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "smooth",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [
- {
- "options": {
- "match": "null+nan",
- "result": {
- "index": 0,
- "text": "0 ms"
- }
- },
- "type": "special"
- }
- ],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- }
- ]
- },
- "unit": "s"
- },
- "overrides": [
- {
- "__systemRef": "hideSeriesFrom",
- "matcher": {
- "id": "byNames",
- "options": {
- "mode": "exclude",
- "names": [
- "p50"
- ],
- "prefix": "All except:",
- "readOnly": true
- }
- },
- "properties": [
- {
- "id": "custom.hideFrom",
- "value": {
- "legend": false,
- "tooltip": false,
- "viz": false
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 9,
- "w": 12,
- "x": 0,
- "y": 0
- },
- "id": 40,
- "options": {
- "legend": {
- "calcs": [
- "lastNotNull",
- "min",
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.50, sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\", http_route=\"$route\", http_request_method=\"$method\"}[5m])) by (le))",
- "legendFormat": "p50",
- "range": true,
- "refId": "p50"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.75, sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\", http_route=\"$route\", http_request_method=\"$method\"}[5m])) by (le))",
- "hide": false,
- "legendFormat": "p75",
- "range": true,
- "refId": "p75"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.90, sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\", http_route=\"$route\", http_request_method=\"$method\"}[5m])) by (le))",
- "hide": false,
- "legendFormat": "p90",
- "range": true,
- "refId": "p90"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.95, sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\", http_route=\"$route\", http_request_method=\"$method\"}[5m])) by (le))",
- "hide": false,
- "legendFormat": "p95",
- "range": true,
- "refId": "p95"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.98, sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\", http_route=\"$route\", http_request_method=\"$method\"}[5m])) by (le))",
- "hide": false,
- "legendFormat": "p98",
- "range": true,
- "refId": "p98"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.99, sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\", http_route=\"$route\", http_request_method=\"$method\"}[5m])) by (le))",
- "hide": false,
- "legendFormat": "p99",
- "range": true,
- "refId": "p99"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.999, sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\", http_route=\"$route\", http_request_method=\"$method\"}[5m])) by (le))",
- "hide": false,
- "legendFormat": "p99.9",
- "range": true,
- "refId": "p99.9"
- }
- ],
- "title": "Requests Duration - $method $route",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic",
- "seriesBy": "max"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 50,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "smooth",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [
- {
- "options": {
- "match": "null+nan",
- "result": {
- "index": 0,
- "text": "0%"
- }
- },
- "type": "special"
- }
- ],
- "max": 1,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- }
- ]
- },
- "unit": "percentunit"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "All"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-orange",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "4XX"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "yellow",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "5XX"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-red",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 9,
- "w": 12,
- "x": 12,
- "y": 0
- },
- "id": 46,
- "options": {
- "legend": {
- "calcs": [
- "lastNotNull",
- "min",
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum(rate(http_server_request_duration_seconds_count{job=\"$job\", instance=\"$instance\", http_route=\"$route\", http_request_method=\"$method\", http_response_status_code=~\"4..|5..\"}[5m]) or vector(0)) / sum(rate(http_server_request_duration_seconds_count{job=\"$job\", instance=\"$instance\", http_route=\"$route\", http_request_method=\"$method\"}[5m]))",
- "legendFormat": "All",
- "range": true,
- "refId": "All"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum(rate(http_server_request_duration_seconds_count{job=\"$job\", instance=\"$instance\", http_route=\"$route\", http_request_method=\"$method\", http_response_status_code=~\"4..\"}[5m]) or vector(0)) / sum(rate(http_server_request_duration_seconds_count{job=\"$job\", instance=\"$instance\", http_route=\"$route\", http_request_method=\"$method\"}[5m]))",
- "hide": false,
- "legendFormat": "4XX",
- "range": true,
- "refId": "4XX"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum(rate(http_server_request_duration_seconds_count{job=\"$job\", instance=\"$instance\", http_route=\"$route\", http_request_method=\"$method\", http_response_status_code=~\"5..\"}[5m]) or vector(0)) / sum(rate(http_server_request_duration_seconds_count{job=\"$job\", instance=\"$instance\", http_route=\"$route\", http_request_method=\"$method\"}[5m]))",
- "hide": false,
- "legendFormat": "5XX",
- "range": true,
- "refId": "5XX"
- }
- ],
- "title": "Errors Rate - $method $route",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "custom": {
- "align": "auto",
- "cellOptions": {
- "type": "auto"
- },
- "inspect": false
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Requests"
- },
- "properties": [
- {
- "id": "custom.width",
- "value": 300
- },
- {
- "id": "custom.cellOptions",
- "value": {
- "mode": "gradient",
- "type": "gauge"
- }
- },
- {
- "id": "color",
- "value": {
- "mode": "continuous-YlRd"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Route"
- },
- "properties": [
- {
- "id": "links",
- "value": [
- {
- "title": "",
- "url": "/d/NagEsjE4z/asp-net-core-endpoint-details?var-route=${__data.fields.Route}&var-method=${__data.fields.Method}&${__url_time_range}"
- }
- ]
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 8,
- "w": 12,
- "x": 0,
- "y": 9
- },
- "hideTimeOverride": false,
- "id": 44,
- "options": {
- "cellHeight": "sm",
- "footer": {
- "countRows": false,
- "fields": "",
- "reducer": [
- "sum"
- ],
- "show": false
- },
- "showHeader": true,
- "sortBy": [
- {
- "desc": true,
- "displayName": "Value"
- }
- ]
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "sum by (error_type) (\r\n max_over_time(http_server_request_duration_seconds_count{http_route=\"$route\", http_request_method=\"$method\", error_type!=\"\"}[$__rate_interval])\r\n)",
- "format": "table",
- "instant": true,
- "interval": "",
- "legendFormat": "{{route}}",
- "range": false,
- "refId": "A"
- }
- ],
- "title": "Unhandled Exceptions",
- "transformations": [
- {
- "id": "organize",
- "options": {
- "excludeByName": {
- "Time": true,
- "method": false
- },
- "indexByName": {
- "Time": 0,
- "Value": 2,
- "error_type": 1
- },
- "renameByName": {
- "Value": "Requests",
- "error_type": "Exception",
- "http_request_method": "Method",
- "http_route": "Route"
- }
- }
- }
- ],
- "type": "table"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "blue",
- "mode": "fixed"
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 12,
- "x": 12,
- "y": 9
- },
- "id": 42,
- "options": {
- "colorMode": "background",
- "graphMode": "area",
- "justifyMode": "auto",
- "orientation": "auto",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": [
- "max"
- ],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "textMode": "value_and_name",
- "wideLayout": true
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum by (http_response_status_code) (\r\n max_over_time(http_server_request_duration_seconds_count{http_route=\"$route\", http_request_method=\"$method\"}[$__rate_interval])\r\n )",
- "legendFormat": "Status {{http_response_status_code}}",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Requests HTTP Status Code",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "green",
- "mode": "fixed"
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 6,
- "x": 12,
- "y": 13
- },
- "id": 48,
- "options": {
- "colorMode": "background",
- "graphMode": "area",
- "justifyMode": "auto",
- "orientation": "auto",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": [
- "max"
- ],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "textMode": "value_and_name",
- "wideLayout": true
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum by (url_scheme) (\r\n max_over_time(http_server_request_duration_seconds_count{job=\"$job\", instance=\"$instance\", http_route=\"$route\", http_request_method=\"$method\"}[$__rate_interval])\r\n )",
- "legendFormat": "{{scheme}}",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Requests Secured",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "purple",
- "mode": "fixed"
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 6,
- "x": 18,
- "y": 13
- },
- "id": 50,
- "options": {
- "colorMode": "background",
- "graphMode": "area",
- "justifyMode": "auto",
- "orientation": "auto",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": [
- "max"
- ],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "textMode": "value_and_name",
- "wideLayout": true
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum by (method_route) (\r\n label_replace(max_over_time(http_server_request_duration_seconds_count{job=\"$job\", instance=\"$instance\", http_route=\"$route\", http_request_method=\"$method\"}[$__rate_interval]), \"method_route\", \"http/$1\", \"network_protocol_version\", \"(.*)\")\r\n )",
- "legendFormat": "{{protocol}}",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Requests HTTP Protocol",
- "type": "stat"
- }
- ],
- "refresh": "",
- "revision": 1,
- "schemaVersion": 39,
- "tags": [
- "dotnet",
- "prometheus",
- "aspnetcore"
- ],
- "templating": {
- "list": [
- {
- "current": {
- "selected": false,
- "text": "fullstackhero.api",
- "value": "fullstackhero.api"
- },
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "definition": "label_values(http_server_active_requests,job)",
- "hide": 0,
- "includeAll": false,
- "label": "Job",
- "multi": false,
- "name": "job",
- "options": [],
- "query": {
- "query": "label_values(http_server_active_requests,job)",
- "refId": "PrometheusVariableQueryEditor-VariableQuery"
- },
- "refresh": 1,
- "regex": "",
- "skipUrlSync": false,
- "sort": 1,
- "type": "query"
- },
- {
- "current": {
- "selected": false,
- "text": "host.docker.internal:5000",
- "value": "host.docker.internal:5000"
- },
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "definition": "label_values(http_server_active_requests{job=~\"$job\"},instance)",
- "hide": 0,
- "includeAll": false,
- "label": "Instance",
- "multi": false,
- "name": "instance",
- "options": [],
- "query": {
- "query": "label_values(http_server_active_requests{job=~\"$job\"},instance)",
- "refId": "PrometheusVariableQueryEditor-VariableQuery"
- },
- "refresh": 1,
- "regex": "",
- "skipUrlSync": false,
- "sort": 1,
- "type": "query"
- },
- {
- "current": {
- "selected": false,
- "text": "api/roles/",
- "value": "api/roles/"
- },
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "definition": "label_values(http_server_request_duration_seconds_count,http_route)",
- "description": "Route",
- "hide": 0,
- "includeAll": false,
- "label": "Route",
- "multi": false,
- "name": "route",
- "options": [],
- "query": {
- "query": "label_values(http_server_request_duration_seconds_count,http_route)",
- "refId": "PrometheusVariableQueryEditor-VariableQuery"
- },
- "refresh": 1,
- "regex": "",
- "skipUrlSync": false,
- "sort": 1,
- "type": "query"
- },
- {
- "current": {
- "selected": false,
- "text": "GET",
- "value": "GET"
- },
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "definition": "label_values(http_server_request_duration_seconds_count{http_route=~\"$route\"},http_request_method)",
- "hide": 0,
- "includeAll": false,
- "label": "Method",
- "multi": false,
- "name": "method",
- "options": [],
- "query": {
- "query": "label_values(http_server_request_duration_seconds_count{http_route=~\"$route\"},http_request_method)",
- "refId": "PrometheusVariableQueryEditor-VariableQuery"
- },
- "refresh": 1,
- "regex": "",
- "skipUrlSync": false,
- "sort": 1,
- "type": "query"
- }
- ]
- },
- "time": {
- "from": "now-15m",
- "to": "now"
- },
- "timepicker": {
- "refresh_intervals": [
- "1s",
- "5s",
- "10s",
- "30s",
- "1m",
- "5m",
- "15m",
- "30m",
- "1h",
- "2h",
- "1d"
- ]
- },
- "timezone": "",
- "title": "ASP.NET Core Endpoint",
- "uid": "NagEsjE4j",
- "version": 2,
- "weekStart": ""
-}
\ No newline at end of file
diff --git a/compose/grafana/dashboards/aspnet-core.json b/compose/grafana/dashboards/aspnet-core.json
deleted file mode 100644
index a0d2aa1740..0000000000
--- a/compose/grafana/dashboards/aspnet-core.json
+++ /dev/null
@@ -1,1332 +0,0 @@
-{
- "annotations": {
- "list": [
- {
- "builtIn": 1,
- "datasource": {
- "type": "grafana",
- "uid": "-- Grafana --"
- },
- "enable": true,
- "hide": true,
- "iconColor": "rgba(0, 211, 255, 1)",
- "name": "Annotations & Alerts",
- "target": {
- "limit": 100,
- "matchAny": false,
- "tags": [],
- "type": "dashboard"
- },
- "type": "dashboard"
- }
- ]
- },
- "description": "ASP.NET Core metrics from OpenTelemetry",
- "editable": true,
- "fiscalYearStartMonth": 0,
- "gnetId": 19924,
- "graphTooltip": 0,
- "id": 9,
- "links": [],
- "liveNow": false,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "dark-green",
- "mode": "continuous-GrYlRd",
- "seriesBy": "max"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "axisSoftMin": 0,
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 50,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "smooth",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [
- {
- "options": {
- "match": "null+nan",
- "result": {
- "index": 1,
- "text": "0 ms"
- }
- },
- "type": "special"
- }
- ],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- }
- ]
- },
- "unit": "s"
- },
- "overrides": [
- {
- "__systemRef": "hideSeriesFrom",
- "matcher": {
- "id": "byNames",
- "options": {
- "mode": "exclude",
- "names": [
- "p50"
- ],
- "prefix": "All except:",
- "readOnly": true
- }
- },
- "properties": [
- {
- "id": "custom.hideFrom",
- "value": {
- "legend": false,
- "tooltip": false,
- "viz": false
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 9,
- "w": 12,
- "x": 0,
- "y": 0
- },
- "id": 40,
- "options": {
- "legend": {
- "calcs": [
- "lastNotNull",
- "min",
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.50, sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\"}[$__rate_interval])) by (le))",
- "legendFormat": "p50",
- "range": true,
- "refId": "p50"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.75, sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p75",
- "range": true,
- "refId": "p75"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.90, sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p90",
- "range": true,
- "refId": "p90"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.95, sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p95",
- "range": true,
- "refId": "p95"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.98, sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p98",
- "range": true,
- "refId": "p98"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.99, sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p99",
- "range": true,
- "refId": "p99"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.999, sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p99.9",
- "range": true,
- "refId": "p99.9"
- }
- ],
- "title": "Requests Duration",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic",
- "seriesBy": "max"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 50,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "smooth",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [
- {
- "options": {
- "match": "null+nan",
- "result": {
- "index": 1,
- "text": "0%"
- }
- },
- "type": "special"
- }
- ],
- "max": 1,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- }
- ]
- },
- "unit": "percentunit"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "All"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-orange",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "4XX"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "yellow",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "5XX"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-red",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 9,
- "w": 12,
- "x": 12,
- "y": 0
- },
- "id": 47,
- "options": {
- "legend": {
- "calcs": [
- "lastNotNull",
- "min",
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\", http_response_status_code=~\"4..|5..\"}[$__rate_interval]) or vector(0)) / sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\"}[$__rate_interval]))",
- "legendFormat": "All",
- "range": true,
- "refId": "All"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\", http_response_status_code=~\"4..\"}[$__rate_interval]) or vector(0)) / sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\"}[$__rate_interval]))",
- "hide": false,
- "legendFormat": "4XX",
- "range": true,
- "refId": "4XX"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\", http_response_status_code=~\"5..\"}[$__rate_interval]) or vector(0)) / sum(rate(http_server_request_duration_seconds_bucket{job=\"$job\", instance=\"$instance\"}[$__rate_interval]))",
- "hide": false,
- "legendFormat": "5XX",
- "range": true,
- "refId": "5XX"
- }
- ],
- "title": "Errors Rate",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 8,
- "w": 6,
- "x": 0,
- "y": 9
- },
- "id": 49,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": false
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum(kestrel_active_connections{job=\"$job\", instance=\"$instance\"})",
- "legendFormat": "__auto",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Current Connections",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 8,
- "w": 6,
- "x": 6,
- "y": 9
- },
- "id": 55,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": false
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum(http_server_active_requests{job=\"$job\", instance=\"$instance\"})",
- "legendFormat": "__auto",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Current Requests",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "blue",
- "mode": "fixed"
- },
- "mappings": [],
- "noValue": "0",
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 6,
- "x": 12,
- "y": 9
- },
- "id": 58,
- "options": {
- "colorMode": "background",
- "graphMode": "area",
- "justifyMode": "center",
- "orientation": "auto",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "text": {},
- "textMode": "value",
- "wideLayout": true
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "sum(http_server_request_duration_seconds_count{job=\"$job\", instance=\"$instance\"})",
- "instant": false,
- "legendFormat": "__auto",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Total Requests",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "dark-red",
- "mode": "fixed"
- },
- "mappings": [],
- "noValue": "0",
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 6,
- "x": 18,
- "y": 9
- },
- "id": 59,
- "options": {
- "colorMode": "background",
- "graphMode": "area",
- "justifyMode": "center",
- "orientation": "auto",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "text": {},
- "textMode": "value",
- "wideLayout": true
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "sum(http_server_request_duration_seconds_count{job=\"$job\", instance=\"$instance\", error_type!=\"\"})",
- "instant": false,
- "legendFormat": "__auto",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Total Unhandled Exceptions",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "green",
- "mode": "fixed"
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 6,
- "x": 12,
- "y": 13
- },
- "id": 60,
- "options": {
- "colorMode": "background",
- "graphMode": "area",
- "justifyMode": "auto",
- "orientation": "auto",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": [
- "max"
- ],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "textMode": "value_and_name",
- "wideLayout": true
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum by (url_scheme) (\r\n max_over_time(http_server_request_duration_seconds_count{job=\"$job\", instance=\"$instance\"}[$__rate_interval])\r\n )",
- "legendFormat": "{{scheme}}",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Requests Secured",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "purple",
- "mode": "fixed"
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 6,
- "x": 18,
- "y": 13
- },
- "id": 42,
- "options": {
- "colorMode": "background",
- "graphMode": "area",
- "justifyMode": "auto",
- "orientation": "auto",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": [
- "max"
- ],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "textMode": "value_and_name",
- "wideLayout": true
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum by (method_route) (\r\n label_replace(max_over_time(http_server_request_duration_seconds_count{job=\"$job\", instance=\"$instance\"}[$__rate_interval]), \"method_route\", \"http/$1\", \"network_protocol_version\", \"(.*)\")\r\n )",
- "legendFormat": "{{protocol}}",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Requests HTTP Protocol",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "custom": {
- "align": "auto",
- "cellOptions": {
- "type": "auto"
- },
- "inspect": false
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Requests"
- },
- "properties": [
- {
- "id": "custom.width",
- "value": 300
- },
- {
- "id": "custom.cellOptions",
- "value": {
- "mode": "gradient",
- "type": "gauge"
- }
- },
- {
- "id": "color",
- "value": {
- "mode": "continuous-BlPu"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Endpoint"
- },
- "properties": [
- {
- "id": "links",
- "value": [
- {
- "targetBlank": false,
- "title": "Test",
- "url": "/d/NagEsjE4z/asp-net-core-endpoint-details?var-route=${__data.fields.http_route}&var-method=${__data.fields.http_request_method}&${__url_time_range}"
- }
- ]
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "http_route"
- },
- "properties": [
- {
- "id": "custom.hidden",
- "value": true
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "http_request_method"
- },
- "properties": [
- {
- "id": "custom.hidden",
- "value": true
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 8,
- "w": 12,
- "x": 0,
- "y": 17
- },
- "hideTimeOverride": false,
- "id": 51,
- "options": {
- "cellHeight": "sm",
- "footer": {
- "countRows": false,
- "fields": "",
- "reducer": [
- "sum"
- ],
- "show": false
- },
- "showHeader": true,
- "sortBy": [
- {
- "desc": true,
- "displayName": "Value"
- }
- ]
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": " topk(10,\r\n sum by (http_route, http_request_method, method_route) (\r\n label_join(max_over_time(http_server_request_duration_seconds_count{job=\"$job\", instance=\"$instance\", http_route!=\"\"}[$__rate_interval]), \"method_route\", \" \", \"http_request_method\", \"http_route\")\r\n ))",
- "format": "table",
- "instant": true,
- "interval": "",
- "legendFormat": "{{route}}",
- "range": false,
- "refId": "A"
- }
- ],
- "title": "Top 10 Requested Endpoints",
- "transformations": [
- {
- "id": "organize",
- "options": {
- "excludeByName": {
- "Time": true,
- "method": false,
- "route": false
- },
- "indexByName": {
- "Time": 0,
- "Value": 4,
- "method": 2,
- "method_route": 3,
- "route": 1
- },
- "renameByName": {
- "Value": "Requests",
- "method": "",
- "method_route": "Endpoint",
- "route": ""
- }
- }
- }
- ],
- "type": "table"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "custom": {
- "align": "auto",
- "cellOptions": {
- "type": "auto"
- },
- "inspect": false
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Requests"
- },
- "properties": [
- {
- "id": "custom.width",
- "value": 300
- },
- {
- "id": "custom.cellOptions",
- "value": {
- "mode": "gradient",
- "type": "gauge"
- }
- },
- {
- "id": "color",
- "value": {
- "mode": "continuous-YlRd"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Endpoint"
- },
- "properties": [
- {
- "id": "links",
- "value": [
- {
- "title": "",
- "url": "/d/NagEsjE4z/asp-net-core-endpoint-details?var-route=${__data.fields.http_route}&var-method=${__data.fields.http_request_method}&${__url_time_range}"
- }
- ]
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "http_route"
- },
- "properties": [
- {
- "id": "custom.hidden",
- "value": true
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "http_request_method"
- },
- "properties": [
- {
- "id": "custom.hidden",
- "value": true
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 8,
- "w": 12,
- "x": 12,
- "y": 17
- },
- "hideTimeOverride": false,
- "id": 54,
- "options": {
- "cellHeight": "sm",
- "footer": {
- "countRows": false,
- "fields": "",
- "reducer": [
- "sum"
- ],
- "show": false
- },
- "showHeader": true,
- "sortBy": [
- {
- "desc": true,
- "displayName": "Value"
- }
- ]
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": " topk(10,\r\n sum by (http_route, http_request_method, method_route) (\r\n label_join(max_over_time(http_server_request_duration_seconds_count{job=\"$job\", instance=\"$instance\", http_route!=\"\", error_type!=\"\"}[$__rate_interval]), \"method_route\", \" \", \"http_request_method\", \"http_route\")\r\n ))",
- "format": "table",
- "instant": true,
- "interval": "",
- "legendFormat": "{{route}}",
- "range": false,
- "refId": "A"
- }
- ],
- "title": "Top 10 Unhandled Exception Endpoints",
- "transformations": [
- {
- "id": "organize",
- "options": {
- "excludeByName": {
- "Time": true,
- "method": false
- },
- "indexByName": {
- "Time": 0,
- "Value": 4,
- "method": 2,
- "method_route": 3,
- "route": 1
- },
- "renameByName": {
- "Value": "Requests",
- "method": "",
- "method_route": "Endpoint",
- "route": ""
- }
- }
- }
- ],
- "type": "table"
- }
- ],
- "refresh": "",
- "revision": 1,
- "schemaVersion": 39,
- "tags": [
- "dotnet",
- "prometheus",
- "aspnetcore"
- ],
- "templating": {
- "list": [
- {
- "current": {
- "selected": false,
- "text": "fullstackhero.api",
- "value": "fullstackhero.api"
- },
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "definition": "label_values(http_server_active_requests,job)",
- "hide": 0,
- "includeAll": false,
- "label": "Job",
- "multi": false,
- "name": "job",
- "options": [],
- "query": {
- "query": "label_values(http_server_active_requests,job)",
- "refId": "PrometheusVariableQueryEditor-VariableQuery"
- },
- "refresh": 2,
- "regex": "",
- "skipUrlSync": false,
- "sort": 1,
- "type": "query"
- },
- {
- "current": {
- "selected": false,
- "text": "host.docker.internal:5000",
- "value": "host.docker.internal:5000"
- },
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "definition": "label_values(http_server_active_requests{job=~\"$job\"},instance)",
- "hide": 0,
- "includeAll": false,
- "label": "Instance",
- "multi": false,
- "name": "instance",
- "options": [],
- "query": {
- "query": "label_values(http_server_active_requests{job=~\"$job\"},instance)",
- "refId": "PrometheusVariableQueryEditor-VariableQuery"
- },
- "refresh": 2,
- "regex": "",
- "skipUrlSync": false,
- "sort": 1,
- "type": "query"
- }
- ]
- },
- "time": {
- "from": "now-15m",
- "to": "now"
- },
- "timepicker": {
- "refresh_intervals": [
- "1s",
- "5s",
- "10s",
- "30s",
- "1m",
- "5m",
- "15m",
- "30m",
- "1h",
- "2h",
- "1d"
- ]
- },
- "timezone": "",
- "title": "ASP.NET Core",
- "uid": "KdDACDp4z",
- "version": 2,
- "weekStart": ""
-}
\ No newline at end of file
diff --git a/compose/grafana/dashboards/dotnet-otel-dashboard.json b/compose/grafana/dashboards/dotnet-otel-dashboard.json
deleted file mode 100644
index 1b179c6791..0000000000
--- a/compose/grafana/dashboards/dotnet-otel-dashboard.json
+++ /dev/null
@@ -1,2031 +0,0 @@
-{
- "annotations": {
- "list": [
- {
- "builtIn": 1,
- "datasource": {
- "type": "grafana",
- "uid": "-- Grafana --"
- },
- "enable": true,
- "hide": true,
- "iconColor": "rgba(0, 211, 255, 1)",
- "name": "Annotations & Alerts",
- "target": {
- "limit": 100,
- "matchAny": false,
- "tags": [],
- "type": "dashboard"
- },
- "type": "dashboard"
- }
- ]
- },
- "description": "Shows ASP.NET metrics from OpenTelemetry NuGet",
- "editable": true,
- "fiscalYearStartMonth": 0,
- "graphTooltip": 0,
- "id": 9,
- "links": [],
- "liveNow": false,
- "panels": [
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 0
- },
- "id": 15,
- "panels": [],
- "title": "Process",
- "type": "row"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 90,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "smooth",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "normal"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- }
- ]
- },
- "unit": "percentunit"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "system"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-orange",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "user"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-green",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 9,
- "w": 11,
- "x": 0,
- "y": 1
- },
- "id": 19,
- "options": {
- "legend": {
- "calcs": [
- "lastNotNull",
- "min",
- "max",
- "mean"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "irate(process_cpu_time{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])",
- "legendFormat": "__auto",
- "range": true,
- "refId": "CPU Usage"
- }
- ],
- "title": "CPU Usage",
- "transformations": [
- {
- "id": "labelsToFields",
- "options": {
- "keepLabels": [
- "state"
- ],
- "valueLabel": "state"
- }
- }
- ],
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "dark-green",
- "mode": "fixed"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 90,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "smooth",
- "lineStyle": {
- "fill": "solid"
- },
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 9,
- "w": 10,
- "x": 11,
- "y": 1
- },
- "id": 16,
- "options": {
- "legend": {
- "calcs": [
- "lastNotNull",
- "min",
- "max",
- "mean"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "max_over_time(process_memory_usage{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])",
- "legendFormat": "Memory Usage",
- "range": true,
- "refId": "Memory Usage"
- }
- ],
- "title": "Memory Usage",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "dark-green",
- "value": null
- },
- {
- "color": "dark-yellow",
- "value": 50
- },
- {
- "color": "dark-orange",
- "value": 100
- },
- {
- "color": "dark-red",
- "value": 150
- }
- ]
- },
- "unit": "none"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 9,
- "w": 3,
- "x": 21,
- "y": 1
- },
- "id": 12,
- "options": {
- "colorMode": "value",
- "graphMode": "area",
- "justifyMode": "auto",
- "orientation": "auto",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
- },
- "textMode": "value"
- },
- "pluginVersion": "10.0.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "max_over_time(process_threads{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])",
- "legendFormat": "Threads",
- "range": true,
- "refId": "Threads"
- }
- ],
- "title": "Threads",
- "type": "stat"
- },
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 10
- },
- "id": 2,
- "panels": [],
- "title": "Runtime",
- "type": "row"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "continuous-GrYlRd",
- "seriesBy": "max"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 50,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "smooth",
- "lineStyle": {
- "fill": "solid"
- },
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 9,
- "w": 8,
- "x": 0,
- "y": 11
- },
- "id": 6,
- "options": {
- "legend": {
- "calcs": [
- "lastNotNull",
- "min",
- "max",
- "mean"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "max_over_time(process_runtime_dotnet_gc_committed_memory_size{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])",
- "hide": false,
- "legendFormat": "Committed Memory Size",
- "range": true,
- "refId": "Committed Memory Size"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "max_over_time(process_runtime_dotnet_gc_committed_memory_size{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])",
- "legendFormat": "Objects Size",
- "range": true,
- "refId": "Objects Size"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "irate(process_runtime_dotnet_gc_committed_memory_size{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])",
- "hide": false,
- "instant": false,
- "legendFormat": "Allocations Size",
- "range": true,
- "refId": "Allocations Size"
- }
- ],
- "title": "General Memory Usage",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "text",
- "mode": "fixed"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 60,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "smooth",
- "lineWidth": 0,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "normal"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "gen0"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-green",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "gen1"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-yellow",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "gen2"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-red",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "loh"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-orange",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "poh"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-blue",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 9,
- "w": 8,
- "x": 8,
- "y": 11
- },
- "id": 8,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "max_over_time(process_runtime_dotnet_gc_heap_size{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])",
- "legendFormat": "__auto",
- "range": true,
- "refId": "Heap Size"
- }
- ],
- "title": "Heap Generations (bytes)",
- "transformations": [
- {
- "id": "labelsToFields",
- "options": {
- "keepLabels": [
- "generation"
- ],
- "valueLabel": "generation"
- }
- }
- ],
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "text",
- "mode": "fixed"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 60,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "smooth",
- "lineWidth": 0,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "normal"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "gen0"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-green",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "gen1"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-yellow",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "gen2"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-red",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "loh"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-orange",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "poh"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-blue",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 9,
- "w": 8,
- "x": 16,
- "y": 11
- },
- "id": 9,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "max_over_time(process_runtime_dotnet_gc_heap_fragmentation_size{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])",
- "legendFormat": "__auto",
- "range": true,
- "refId": "Heap Fragmentation"
- }
- ],
- "title": "Heap Fragmentation (bytes)",
- "transformations": [
- {
- "id": "labelsToFields",
- "options": {
- "keepLabels": [
- "generation"
- ],
- "valueLabel": "generation"
- }
- }
- ],
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "green",
- "mode": "fixed"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": -1,
- "drawStyle": "bars",
- "fillOpacity": 100,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 0,
- "pointSize": 1,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "normal"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [
- {
- "options": {
- "0": {
- "color": "transparent",
- "index": 0,
- "text": "None"
- }
- },
- "type": "value"
- }
- ],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- }
- ]
- },
- "unit": "none"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "gen0"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-green",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "gen1"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-yellow",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "gen2"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-red",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 9,
- "w": 8,
- "x": 0,
- "y": 20
- },
- "id": 4,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.3.2",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "idelta(process_runtime_dotnet_gc_collections_count{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])",
- "hide": false,
- "instant": false,
- "legendFormat": "__auto",
- "range": true,
- "refId": "gc"
- }
- ],
- "title": "GC Collections",
- "transformations": [
- {
- "id": "labelsToFields",
- "options": {
- "keepLabels": [
- "generation"
- ],
- "mode": "columns",
- "valueLabel": "generation"
- }
- }
- ],
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "dark-red",
- "mode": "fixed"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 90,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "smooth",
- "lineStyle": {
- "fill": "solid"
- },
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- }
- ]
- },
- "unit": "none"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 9,
- "w": 8,
- "x": 8,
- "y": 20
- },
- "id": 13,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": false
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "increase(process_runtime_dotnet_exceptions_count{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])",
- "legendFormat": "Exceptions",
- "range": true,
- "refId": "Exceptions"
- }
- ],
- "title": "Exceptions",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "dark-green",
- "mode": "fixed"
- },
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- }
- ]
- },
- "unit": "none"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 9,
- "w": 4,
- "x": 16,
- "y": 20
- },
- "id": 11,
- "options": {
- "colorMode": "value",
- "graphMode": "area",
- "justifyMode": "auto",
- "orientation": "auto",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
- },
- "textMode": "auto"
- },
- "pluginVersion": "10.0.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "max_over_time(process_runtime_dotnet_thread_pool_threads_count{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])",
- "legendFormat": "ThreadPool Threads",
- "range": true,
- "refId": "ThreadPool Threads"
- }
- ],
- "title": "ThreadPool Threads",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "dark-green",
- "mode": "fixed"
- },
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- }
- ]
- },
- "unit": "none"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 9,
- "w": 4,
- "x": 20,
- "y": 20
- },
- "id": 17,
- "options": {
- "colorMode": "value",
- "graphMode": "area",
- "justifyMode": "auto",
- "orientation": "auto",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
- },
- "textMode": "auto"
- },
- "pluginVersion": "10.0.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "max_over_time(process_runtime_dotnet_thread_pool_queue_length{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])",
- "legendFormat": "ThreadPool Threads Queue Length",
- "range": true,
- "refId": "ThreadPool Threads Queue Length"
- }
- ],
- "title": "ThreadPool Threads Queue Length",
- "type": "stat"
- },
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 29
- },
- "id": 33,
- "panels": [],
- "title": "HTTP Server",
- "type": "row"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "dark-green",
- "mode": "continuous-GrYlRd",
- "seriesBy": "max"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 50,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "smooth",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- }
- ]
- },
- "unit": "ms"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 9,
- "w": 12,
- "x": 0,
- "y": 30
- },
- "id": 40,
- "options": {
- "legend": {
- "calcs": [
- "lastNotNull",
- "min",
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.50, sum(rate(http_server_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])) by (le))",
- "legendFormat": "p50",
- "range": true,
- "refId": "p50"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.75, sum(rate(http_server_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p75",
- "range": true,
- "refId": "p75"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.90, sum(rate(http_server_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p90",
- "range": true,
- "refId": "p90"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.95, sum(rate(http_server_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p95",
- "range": true,
- "refId": "p95"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.98, sum(rate(http_server_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p98",
- "range": true,
- "refId": "p98"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.99, sum(rate(http_server_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p99",
- "range": true,
- "refId": "p99"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.999, sum(rate(http_server_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p99.9",
- "range": true,
- "refId": "p99.9"
- }
- ],
- "title": "Responses Duration",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic",
- "seriesBy": "max"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 50,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "smooth",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- }
- ]
- },
- "unit": "percentunit"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "All"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-orange",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "4XX"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "yellow",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "5XX"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-red",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 9,
- "w": 12,
- "x": 12,
- "y": 30
- },
- "id": 47,
- "options": {
- "legend": {
- "calcs": [
- "lastNotNull",
- "min",
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum(rate(http_server_duration_count{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\", http_status_code!~\"2..\"}[$__rate_interval]) or vector(0)) / sum(rate(http_server_duration_count{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval]))",
- "legendFormat": "All",
- "range": true,
- "refId": "All"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum(rate(http_server_duration_count{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\", http_status_code=~\"4..\"}[$__rate_interval]) or vector(0)) / sum(rate(http_server_duration_count{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval]))",
- "hide": false,
- "legendFormat": "4XX",
- "range": true,
- "refId": "4XX"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum(rate(http_server_duration_count{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\", http_status_code=~\"5..\"}[$__rate_interval]) or vector(0)) / sum(rate(http_server_duration_count{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\"}[$__rate_interval]))",
- "hide": false,
- "legendFormat": "5XX",
- "range": true,
- "refId": "5XX"
- }
- ],
- "title": "Errors Rate",
- "type": "timeseries"
- },
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 39
- },
- "id": 21,
- "panels": [],
- "repeat": "http_client_peer_name",
- "repeatDirection": "h",
- "title": "HTTP Client ($http_client_peer_name)",
- "type": "row"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "fixedColor": "dark-green",
- "mode": "continuous-GrYlRd",
- "seriesBy": "max"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 50,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "smooth",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- }
- ]
- },
- "unit": "ms"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 9,
- "w": 12,
- "x": 0,
- "y": 40
- },
- "id": 23,
- "options": {
- "legend": {
- "calcs": [
- "lastNotNull",
- "min",
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.50, sum(rate(http_client_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\", net_peer_name=\"$http_client_peer_name\"}[$__rate_interval])) by (le))",
- "legendFormat": "p50",
- "range": true,
- "refId": "p50"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.75, sum(rate(http_client_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\", net_peer_name=\"$http_client_peer_name\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p75",
- "range": true,
- "refId": "p75"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.90, sum(rate(http_client_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\", net_peer_name=\"$http_client_peer_name\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p90",
- "range": true,
- "refId": "p90"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.95, sum(rate(http_client_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\", net_peer_name=\"$http_client_peer_name\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p95",
- "range": true,
- "refId": "p95"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.98, sum(rate(http_client_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\", net_peer_name=\"$http_client_peer_name\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p98",
- "range": true,
- "refId": "p98"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.99, sum(rate(http_client_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\", net_peer_name=\"$http_client_peer_name\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p99",
- "range": true,
- "refId": "p99"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.999, sum(rate(http_client_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\", net_peer_name=\"$http_client_peer_name\"}[$__rate_interval])) by (le))",
- "hide": false,
- "legendFormat": "p99.9",
- "range": true,
- "refId": "p99.9"
- }
- ],
- "title": "Requests Duration",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic",
- "seriesBy": "max"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 50,
- "gradientMode": "opacity",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "smooth",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- }
- ]
- },
- "unit": "percentunit"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "All"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-orange",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "4XX"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "light-yellow",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "5XX"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-red",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 9,
- "w": 12,
- "x": 12,
- "y": 40
- },
- "id": 25,
- "options": {
- "legend": {
- "calcs": [
- "lastNotNull",
- "min",
- "max"
- ],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum(rate(http_client_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\", net_peer_name=\"$http_client_peer_name\", http_status_code!~\"2..\"}[$__rate_interval]) or vector(0)) / sum(rate(http_client_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\", net_peer_name=\"$http_client_peer_name\"}[$__rate_interval]))",
- "legendFormat": "All",
- "range": true,
- "refId": "All"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum(rate(http_client_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\", net_peer_name=\"$http_client_peer_name\", http_status_code=~\"4..\"}[$__rate_interval]) or vector(0)) / sum(rate(http_client_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\", net_peer_name=\"$http_client_peer_name\"}[$__rate_interval]))",
- "hide": false,
- "legendFormat": "4XX",
- "range": true,
- "refId": "4XX"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "editorMode": "code",
- "expr": "sum(rate(http_client_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\", net_peer_name=\"$http_client_peer_name\", http_status_code=~\"5..\"}[$__rate_interval]) or vector(0)) / sum(rate(http_client_duration_bucket{exported_job=\"$exported_job\", exported_instance=\"$exported_instance\", net_peer_name=\"$http_client_peer_name\"}[$__rate_interval]))",
- "hide": false,
- "legendFormat": "5XX",
- "range": true,
- "refId": "5XX"
- }
- ],
- "title": "Errors Rate",
- "type": "timeseries"
- }
- ],
- "refresh": "1m",
- "schemaVersion": 38,
- "style": "dark",
- "tags": [],
- "templating": {
- "list": [
- {
- "current": {
- "selected": false,
- "text": "FST.TAG.Manager",
- "value": "FST.TAG.Manager"
- },
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "definition": "label_values(process_runtime_dotnet_gc_collections_count,exported_job)",
- "hide": 0,
- "includeAll": false,
- "label": "Job",
- "multi": false,
- "name": "exported_job",
- "options": [],
- "query": {
- "query": "label_values(process_runtime_dotnet_gc_collections_count,exported_job)",
- "refId": "PrometheusVariableQueryEditor-VariableQuery"
- },
- "refresh": 2,
- "regex": "",
- "skipUrlSync": false,
- "sort": 1,
- "type": "query"
- },
- {
- "current": {
- "selected": false,
- "text": "39230ae2-5527-47b3-b546-6f8d4cfc9ab0",
- "value": "39230ae2-5527-47b3-b546-6f8d4cfc9ab0"
- },
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "definition": "label_values(process_runtime_dotnet_gc_collections_count{exported_job=~\"$exported_job\"},exported_instance)",
- "hide": 0,
- "includeAll": false,
- "label": "Instance",
- "multi": false,
- "name": "exported_instance",
- "options": [],
- "query": {
- "query": "label_values(process_runtime_dotnet_gc_collections_count{exported_job=~\"$exported_job\"},exported_instance)",
- "refId": "PrometheusVariableQueryEditor-VariableQuery"
- },
- "refresh": 2,
- "regex": "",
- "skipUrlSync": false,
- "sort": 1,
- "type": "query"
- },
- {
- "current": {
- "selected": false,
- "text": "All",
- "value": "$__all"
- },
- "datasource": {
- "type": "prometheus",
- "uid": "prom"
- },
- "definition": "label_values(http_client_duration_bucket{exported_job=~\"$exported_job\",exported_instance=~\"$exported_instance\"},net_peer_name)",
- "hide": 2,
- "includeAll": true,
- "label": "HTTP Client Pear Name",
- "multi": false,
- "name": "http_client_peer_name",
- "options": [],
- "query": {
- "query": "label_values(http_client_duration_bucket{exported_job=~\"$exported_job\",exported_instance=~\"$exported_instance\"},net_peer_name)",
- "refId": "PrometheusVariableQueryEditor-VariableQuery"
- },
- "refresh": 2,
- "regex": "",
- "skipUrlSync": false,
- "sort": 5,
- "type": "query"
- }
- ]
- },
- "time": {
- "from": "now-5m",
- "to": "now"
- },
- "timepicker": {},
- "timezone": "",
- "title": "ASP.NET OTEL Metrics",
- "uid": "bc47b423-0b3c-4538-8e20-f84f84deefe5",
- "version": 6,
- "weekStart": ""
-}
\ No newline at end of file
diff --git a/compose/grafana/dashboards/logs-dashboard.json b/compose/grafana/dashboards/logs-dashboard.json
deleted file mode 100644
index f4ddf3b973..0000000000
--- a/compose/grafana/dashboards/logs-dashboard.json
+++ /dev/null
@@ -1,334 +0,0 @@
-{
- "annotations": {
- "list": [
- {
- "builtIn": 1,
- "datasource": {
- "type": "grafana",
- "uid": "-- Grafana --"
- },
- "enable": true,
- "hide": true,
- "iconColor": "rgba(0, 211, 255, 1)",
- "name": "Annotations & Alerts",
- "target": {
- "limit": 100,
- "matchAny": false,
- "tags": [],
- "type": "dashboard"
- },
- "type": "dashboard"
- }
- ]
- },
- "editable": true,
- "fiscalYearStartMonth": 0,
- "graphTooltip": 0,
- "links": [],
- "liveNow": false,
- "panels": [
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 0
- },
- "id": 6,
- "panels": [],
- "title": "Logs by Level",
- "type": "row"
- },
- {
- "datasource": {
- "type": "loki",
- "uid": "loki"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 1,
- "drawStyle": "bars",
- "fillOpacity": 100,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "stepBefore",
- "lineStyle": {
- "fill": "solid"
- },
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "auto",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "normal"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 8,
- "w": 24,
- "x": 0,
- "y": 1
- },
- "id": 3,
- "interval": "1m",
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "loki",
- "uid": "loki"
- },
- "editorMode": "code",
- "expr": "sum by (level) (count_over_time({service_name=\"$service_name\", level=~\"$level\"} [$__interval]))",
- "legendFormat": "{{level}}",
- "queryType": "range",
- "refId": "A"
- }
- ],
- "title": "Log Volume",
- "type": "timeseries"
- },
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 9
- },
- "id": 5,
- "panels": [],
- "title": "Logs Detailed Information",
- "type": "row"
- },
- {
- "datasource": {
- "type": "loki",
- "uid": "loki"
- },
- "gridPos": {
- "h": 11,
- "w": 24,
- "x": 0,
- "y": 10
- },
- "id": 2,
- "options": {
- "dedupStrategy": "none",
- "enableLogDetails": true,
- "prettifyLogMessage": false,
- "showCommonLabels": false,
- "showLabels": false,
- "showTime": true,
- "sortOrder": "Descending",
- "wrapLogMessage": false
- },
- "pluginVersion": "9.3.2",
- "targets": [
- {
- "datasource": {
- "type": "loki",
- "uid": "loki"
- },
- "editorMode": "code",
- "expr": "{service_name=\"$service_name\", severity_text=~\"$level\"} |=\"$search\" | line_format `[{{ .severity_text }}] {{ .message_template_text }}`",
- "queryType": "range",
- "refId": "A"
- }
- ],
- "title": "Logs",
- "type": "logs"
- },
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 21
- },
- "id": 4,
- "panels": [],
- "title": "Logs with TraceId Link",
- "type": "row"
- },
- {
- "datasource": {
- "type": "loki",
- "uid": "loki"
- },
- "gridPos": {
- "h": 13,
- "w": 24,
- "x": 0,
- "y": 22
- },
- "id": 7,
- "options": {
- "dedupStrategy": "none",
- "enableLogDetails": true,
- "prettifyLogMessage": false,
- "showCommonLabels": false,
- "showLabels": false,
- "showTime": false,
- "sortOrder": "Descending",
- "wrapLogMessage": false
- },
- "targets": [
- {
- "datasource": {
- "type": "loki",
- "uid": "loki"
- },
- "editorMode": "code",
- "expr": "{service_name=\"$service_name\", level=~\"$level\"} |=\"$search\" | json ",
- "key": "Q-b242453d-acff-49f2-9239-12ceaf57fa43-0",
- "queryType": "range",
- "refId": "A"
- }
- ],
- "title": "Log Entries with Trace Link",
- "type": "logs"
- }
- ],
- "refresh": "",
- "schemaVersion": 39,
- "tags": [],
- "templating": {
- "list": [
- {
- "current": {
- "selected": false,
- "text": "FSH.Starter.WebApi.Host",
- "value": "FSH.Starter.WebApi.Host"
- },
- "datasource": {
- "type": "loki",
- "uid": "loki"
- },
- "definition": "",
- "hide": 0,
- "includeAll": false,
- "label": "Service",
- "multi": false,
- "name": "service_name",
- "options": [],
- "query": {
- "label": "service_name",
- "refId": "LokiVariableQueryEditor-VariableQuery",
- "stream": "",
- "type": 1
- },
- "refresh": 1,
- "regex": "",
- "skipUrlSync": false,
- "sort": 1,
- "type": "query"
- },
- {
- "current": {
- "selected": false,
- "text": "All",
- "value": "$__all"
- },
- "datasource": {
- "type": "loki",
- "uid": "loki"
- },
- "definition": "",
- "hide": 0,
- "includeAll": true,
- "multi": false,
- "name": "level",
- "options": [],
- "query": {
- "label": "severity_text",
- "refId": "LokiVariableQueryEditor-VariableQuery",
- "stream": "",
- "type": 1
- },
- "refresh": 1,
- "regex": "",
- "skipUrlSync": false,
- "sort": 0,
- "type": "query"
- },
- {
- "current": {
- "selected": false,
- "text": "",
- "value": ""
- },
- "hide": 0,
- "label": "Search Text",
- "name": "search",
- "options": [
- {
- "selected": true,
- "text": "",
- "value": ""
- }
- ],
- "query": "",
- "skipUrlSync": false,
- "type": "textbox"
- }
- ]
- },
- "time": {
- "from": "now-15m",
- "to": "now"
- },
- "timepicker": {},
- "timezone": "",
- "title": "Logs",
- "uid": "f4463c33-40c8-4def-aac2-95d365040f2e",
- "version": 1,
- "weekStart": ""
-}
\ No newline at end of file
diff --git a/compose/grafana/dashboards/node-exporter.json b/compose/grafana/dashboards/node-exporter.json
deleted file mode 100644
index cb734d8060..0000000000
--- a/compose/grafana/dashboards/node-exporter.json
+++ /dev/null
@@ -1,23870 +0,0 @@
-{
- "annotations": {
- "list": [
- {
- "$$hashKey": "object:1058",
- "builtIn": 1,
- "datasource": {
- "type": "datasource",
- "uid": "grafana"
- },
- "enable": true,
- "hide": true,
- "iconColor": "rgba(0, 211, 255, 1)",
- "name": "Annotations & Alerts",
- "target": {
- "limit": 100,
- "matchAny": false,
- "tags": [],
- "type": "dashboard"
- },
- "type": "dashboard"
- }
- ]
- },
- "editable": true,
- "fiscalYearStartMonth": 0,
- "gnetId": 1860,
- "graphTooltip": 1,
- "id": 8,
- "links": [
- {
- "icon": "external link",
- "tags": [],
- "targetBlank": true,
- "title": "GitHub",
- "type": "link",
- "url": "https://github.com/rfmoz/grafana-dashboards"
- },
- {
- "icon": "external link",
- "tags": [],
- "targetBlank": true,
- "title": "Grafana",
- "type": "link",
- "url": "https://grafana.com/grafana/dashboards/1860"
- }
- ],
- "liveNow": false,
- "panels": [
- {
- "collapsed": false,
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 0
- },
- "id": 261,
- "panels": [],
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "refId": "A"
- }
- ],
- "title": "Quick CPU / Mem / Disk",
- "type": "row"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Resource pressure via PSI",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "decimals": 1,
- "links": [],
- "mappings": [],
- "max": 1,
- "min": 0,
- "thresholds": {
- "mode": "percentage",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "dark-yellow",
- "value": 70
- },
- {
- "color": "dark-red",
- "value": 90
- }
- ]
- },
- "unit": "percentunit"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 3,
- "x": 0,
- "y": 1
- },
- "id": 323,
- "options": {
- "displayMode": "basic",
- "maxVizHeight": 300,
- "minVizHeight": 10,
- "minVizWidth": 0,
- "namePlacement": "auto",
- "orientation": "horizontal",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
- },
- "showUnfilled": true,
- "sizing": "auto",
- "text": {},
- "valueMode": "color"
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "irate(node_pressure_cpu_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "instant": true,
- "intervalFactor": 1,
- "legendFormat": "CPU",
- "range": false,
- "refId": "CPU some",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "irate(node_pressure_memory_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "instant": true,
- "intervalFactor": 1,
- "legendFormat": "Mem",
- "range": false,
- "refId": "Memory some",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "irate(node_pressure_io_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "instant": true,
- "intervalFactor": 1,
- "legendFormat": "I/O",
- "range": false,
- "refId": "I/O some",
- "step": 240
- }
- ],
- "title": "Pressure",
- "type": "bargauge"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Busy state of all CPU cores together",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "decimals": 1,
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "max": 100,
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "rgba(50, 172, 45, 0.97)",
- "value": null
- },
- {
- "color": "rgba(237, 129, 40, 0.89)",
- "value": 85
- },
- {
- "color": "rgba(245, 54, 54, 0.9)",
- "value": 95
- }
- ]
- },
- "unit": "percent"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 3,
- "x": 3,
- "y": 1
- },
- "id": 20,
- "options": {
- "minVizHeight": 75,
- "minVizWidth": 75,
- "orientation": "auto",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
- },
- "showThresholdLabels": false,
- "showThresholdMarkers": true,
- "sizing": "auto"
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "100 * (1 - avg(rate(node_cpu_seconds_total{mode=\"idle\", instance=\"$node\"}[$__rate_interval])))",
- "hide": false,
- "instant": true,
- "intervalFactor": 1,
- "legendFormat": "",
- "range": false,
- "refId": "A",
- "step": 240
- }
- ],
- "title": "CPU Busy",
- "type": "gauge"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "System load over all CPU cores together",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "decimals": 1,
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "max": 100,
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "rgba(50, 172, 45, 0.97)",
- "value": null
- },
- {
- "color": "rgba(237, 129, 40, 0.89)",
- "value": 85
- },
- {
- "color": "rgba(245, 54, 54, 0.9)",
- "value": 95
- }
- ]
- },
- "unit": "percent"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 3,
- "x": 6,
- "y": 1
- },
- "id": 155,
- "options": {
- "minVizHeight": 75,
- "minVizWidth": 75,
- "orientation": "auto",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
- },
- "showThresholdLabels": false,
- "showThresholdMarkers": true,
- "sizing": "auto"
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "scalar(node_load1{instance=\"$node\",job=\"$job\"}) * 100 / count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu))",
- "format": "time_series",
- "hide": false,
- "instant": true,
- "intervalFactor": 1,
- "range": false,
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Sys Load",
- "type": "gauge"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Non available RAM memory",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "decimals": 1,
- "mappings": [],
- "max": 100,
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "rgba(50, 172, 45, 0.97)",
- "value": null
- },
- {
- "color": "rgba(237, 129, 40, 0.89)",
- "value": 80
- },
- {
- "color": "rgba(245, 54, 54, 0.9)",
- "value": 90
- }
- ]
- },
- "unit": "percent"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 3,
- "x": 9,
- "y": 1
- },
- "hideTimeOverride": false,
- "id": 16,
- "options": {
- "minVizHeight": 75,
- "minVizWidth": 75,
- "orientation": "auto",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
- },
- "showThresholdLabels": false,
- "showThresholdMarkers": true,
- "sizing": "auto"
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "((node_memory_MemTotal_bytes{instance=\"$node\", job=\"$job\"} - node_memory_MemFree_bytes{instance=\"$node\", job=\"$job\"}) / node_memory_MemTotal_bytes{instance=\"$node\", job=\"$job\"}) * 100",
- "format": "time_series",
- "hide": true,
- "instant": true,
- "intervalFactor": 1,
- "range": false,
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "(1 - (node_memory_MemAvailable_bytes{instance=\"$node\", job=\"$job\"} / node_memory_MemTotal_bytes{instance=\"$node\", job=\"$job\"})) * 100",
- "format": "time_series",
- "hide": false,
- "instant": true,
- "intervalFactor": 1,
- "range": false,
- "refId": "B",
- "step": 240
- }
- ],
- "title": "RAM Used",
- "type": "gauge"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Used Swap",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "decimals": 1,
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "max": 100,
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "rgba(50, 172, 45, 0.97)",
- "value": null
- },
- {
- "color": "rgba(237, 129, 40, 0.89)",
- "value": 10
- },
- {
- "color": "rgba(245, 54, 54, 0.9)",
- "value": 25
- }
- ]
- },
- "unit": "percent"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 3,
- "x": 12,
- "y": 1
- },
- "id": 21,
- "options": {
- "minVizHeight": 75,
- "minVizWidth": 75,
- "orientation": "auto",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
- },
- "showThresholdLabels": false,
- "showThresholdMarkers": true,
- "sizing": "auto"
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "((node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_SwapFree_bytes{instance=\"$node\",job=\"$job\"}) / (node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"})) * 100",
- "instant": true,
- "intervalFactor": 1,
- "range": false,
- "refId": "A",
- "step": 240
- }
- ],
- "title": "SWAP Used",
- "type": "gauge"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Used Root FS",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "decimals": 1,
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "max": 100,
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "rgba(50, 172, 45, 0.97)",
- "value": null
- },
- {
- "color": "rgba(237, 129, 40, 0.89)",
- "value": 80
- },
- {
- "color": "rgba(245, 54, 54, 0.9)",
- "value": 90
- }
- ]
- },
- "unit": "percent"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 3,
- "x": 15,
- "y": 1
- },
- "id": 154,
- "options": {
- "minVizHeight": 75,
- "minVizWidth": 75,
- "orientation": "auto",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
- },
- "showThresholdLabels": false,
- "showThresholdMarkers": true,
- "sizing": "auto"
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "100 - ((node_filesystem_avail_bytes{instance=\"$node\",job=\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"} * 100) / node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"})",
- "format": "time_series",
- "instant": true,
- "intervalFactor": 1,
- "range": false,
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Root FS Used",
- "type": "gauge"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Total number of CPU cores",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 2,
- "w": 2,
- "x": 18,
- "y": 1
- },
- "id": 14,
- "maxDataPoints": 100,
- "options": {
- "colorMode": "none",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "horizontal",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "textMode": "auto",
- "wideLayout": true
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu))",
- "instant": true,
- "legendFormat": "__auto",
- "range": false,
- "refId": "A"
- }
- ],
- "title": "CPU Cores",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "System uptime",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "decimals": 1,
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "s"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 2,
- "w": 4,
- "x": 20,
- "y": 1
- },
- "hideTimeOverride": true,
- "id": 15,
- "maxDataPoints": 100,
- "options": {
- "colorMode": "none",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "horizontal",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "textMode": "auto",
- "wideLayout": true
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "node_time_seconds{instance=\"$node\",job=\"$job\"} - node_boot_time_seconds{instance=\"$node\",job=\"$job\"}",
- "instant": true,
- "intervalFactor": 1,
- "range": false,
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Uptime",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Total RootFS",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "decimals": 0,
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "rgba(50, 172, 45, 0.97)",
- "value": null
- },
- {
- "color": "rgba(237, 129, 40, 0.89)",
- "value": 70
- },
- {
- "color": "rgba(245, 54, 54, 0.9)",
- "value": 90
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 2,
- "w": 2,
- "x": 18,
- "y": 3
- },
- "id": 23,
- "maxDataPoints": 100,
- "options": {
- "colorMode": "none",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "horizontal",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "textMode": "auto",
- "wideLayout": true
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",mountpoint=\"/\",fstype!=\"rootfs\"}",
- "format": "time_series",
- "hide": false,
- "instant": true,
- "intervalFactor": 1,
- "range": false,
- "refId": "A",
- "step": 240
- }
- ],
- "title": "RootFS Total",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Total RAM",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "decimals": 0,
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 2,
- "w": 2,
- "x": 20,
- "y": 3
- },
- "id": 75,
- "maxDataPoints": 100,
- "options": {
- "colorMode": "none",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "horizontal",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "textMode": "auto",
- "wideLayout": true
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"}",
- "instant": true,
- "intervalFactor": 1,
- "range": false,
- "refId": "A",
- "step": 240
- }
- ],
- "title": "RAM Total",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Total SWAP",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "decimals": 0,
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 2,
- "w": 2,
- "x": 22,
- "y": 3
- },
- "id": 18,
- "maxDataPoints": 100,
- "options": {
- "colorMode": "none",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "horizontal",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "textMode": "auto",
- "wideLayout": true
- },
- "pluginVersion": "11.1.1",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"}",
- "instant": true,
- "intervalFactor": 1,
- "range": false,
- "refId": "A",
- "step": 240
- }
- ],
- "title": "SWAP Total",
- "type": "stat"
- },
- {
- "collapsed": false,
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 5
- },
- "id": 263,
- "panels": [],
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "refId": "A"
- }
- ],
- "title": "Basic CPU / Mem / Net / Disk",
- "type": "row"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Basic CPU info",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 40,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "smooth",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "percent"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "percentunit"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Busy Iowait"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#890F02",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Idle"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Busy Iowait"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#890F02",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Idle"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Busy System"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Busy User"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A437C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Busy Other"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 7,
- "w": 12,
- "x": 0,
- "y": 6
- },
- "id": 77,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true,
- "width": 250
- },
- "tooltip": {
- "mode": "multi",
- "sort": "desc"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "sum(irate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=\"system\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
- "format": "time_series",
- "hide": false,
- "instant": false,
- "intervalFactor": 1,
- "legendFormat": "Busy System",
- "range": true,
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(irate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=\"user\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Busy User",
- "range": true,
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(irate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=\"iowait\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Busy Iowait",
- "range": true,
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(irate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=~\".*irq\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Busy IRQs",
- "range": true,
- "refId": "D",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(irate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode!='idle',mode!='user',mode!='system',mode!='iowait',mode!='irq',mode!='softirq'}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Busy Other",
- "range": true,
- "refId": "E",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(irate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=\"idle\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Idle",
- "range": true,
- "refId": "F",
- "step": 240
- }
- ],
- "title": "CPU Basic",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Basic memory usage",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 40,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "normal"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Apps"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#629E51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A437C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#CFFAFF",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "RAM_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "SWAP Used"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#806EB7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap Used"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#2F575E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Unused"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "RAM Total"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.fillOpacity",
- "value": 0
- },
- {
- "id": "custom.stacking",
- "value": {
- "group": false,
- "mode": "normal"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "RAM Cache + Buffer"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "RAM Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Available"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#DEDAF7",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.fillOpacity",
- "value": 0
- },
- {
- "id": "custom.stacking",
- "value": {
- "group": false,
- "mode": "normal"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 7,
- "w": 12,
- "x": 12,
- "y": 6
- },
- "id": 78,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true,
- "width": 350
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "RAM Total",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_MemFree_bytes{instance=\"$node\",job=\"$job\"} - (node_memory_Cached_bytes{instance=\"$node\",job=\"$job\"} + node_memory_Buffers_bytes{instance=\"$node\",job=\"$job\"} + node_memory_SReclaimable_bytes{instance=\"$node\",job=\"$job\"})",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "RAM Used",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Cached_bytes{instance=\"$node\",job=\"$job\"} + node_memory_Buffers_bytes{instance=\"$node\",job=\"$job\"} + node_memory_SReclaimable_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "RAM Cache + Buffer",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_MemFree_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "RAM Free",
- "refId": "D",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "(node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_SwapFree_bytes{instance=\"$node\",job=\"$job\"})",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "SWAP Used",
- "refId": "E",
- "step": 240
- }
- ],
- "title": "Memory Basic",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Basic network info per interface",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 40,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bps"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Recv_bytes_eth2"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Recv_bytes_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Recv_drop_eth2"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Recv_drop_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Recv_errs_eth2"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Recv_errs_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#CCA300",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Trans_bytes_eth2"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Trans_bytes_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Trans_drop_eth2"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Trans_drop_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Trans_errs_eth2"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Trans_errs_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#CCA300",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "recv_bytes_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "recv_drop_eth0"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#99440A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "recv_drop_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#967302",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "recv_errs_eth0"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "recv_errs_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#890F02",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "trans_bytes_eth0"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "trans_bytes_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "trans_drop_eth0"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#99440A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "trans_drop_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#967302",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "trans_errs_eth0"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "trans_errs_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#890F02",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*trans.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 7,
- "w": 12,
- "x": 0,
- "y": 13
- },
- "id": 74,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_receive_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])*8",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "recv {{device}}",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_transmit_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])*8",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "trans {{device}} ",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Network Traffic Basic",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Disk space used of all filesystems mounted",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 40,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "max": 100,
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "percent"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 7,
- "w": 12,
- "x": 12,
- "y": 13
- },
- "id": 152,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "100 - ((node_filesystem_avail_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'} * 100) / node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'})",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{mountpoint}}",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Disk Space Used Basic",
- "type": "timeseries"
- },
- {
- "collapsed": true,
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 20
- },
- "id": 265,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "percentage",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 70,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "smooth",
- "lineWidth": 2,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "percent"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "percentunit"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Idle - Waiting for something to happen"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Iowait - Waiting for I/O to complete"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Irq - Servicing interrupts"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Nice - Niced processes executing in user mode"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Softirq - Servicing softirqs"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Steal - Time spent in other operating systems when running in a virtualized environment"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#FCE2DE",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "System - Processes executing in kernel mode"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "User - Normal processes executing in user mode"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#5195CE",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 12,
- "w": 12,
- "x": 0,
- "y": 21
- },
- "id": 3,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 250
- },
- "tooltip": {
- "mode": "multi",
- "sort": "desc"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(irate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=\"system\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "System - Processes executing in kernel mode",
- "range": true,
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(irate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=\"user\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "User - Normal processes executing in user mode",
- "range": true,
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(irate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=\"nice\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Nice - Niced processes executing in user mode",
- "range": true,
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum by(instance) (irate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=\"iowait\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Iowait - Waiting for I/O to complete",
- "range": true,
- "refId": "E",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(irate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=\"irq\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Irq - Servicing interrupts",
- "range": true,
- "refId": "F",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(irate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=\"softirq\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Softirq - Servicing softirqs",
- "range": true,
- "refId": "G",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(irate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=\"steal\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Steal - Time spent in other operating systems when running in a virtualized environment",
- "range": true,
- "refId": "H",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(irate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\", mode=\"idle\"}[$__rate_interval])) / scalar(count(count(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}) by (cpu)))",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Idle - Waiting for something to happen",
- "range": true,
- "refId": "J",
- "step": 240
- }
- ],
- "title": "CPU",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 40,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "normal"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Apps"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#629E51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A437C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#CFFAFF",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "RAM_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#806EB7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap - Swap memory usage"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#2F575E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Unused"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Unused - Free memory unassigned"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Hardware Corrupted - *./"
- },
- "properties": [
- {
- "id": "custom.stacking",
- "value": {
- "group": false,
- "mode": "normal"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 12,
- "w": 12,
- "x": 12,
- "y": 21
- },
- "id": 24,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 350
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_MemTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_MemFree_bytes{instance=\"$node\",job=\"$job\"} - node_memory_Buffers_bytes{instance=\"$node\",job=\"$job\"} - node_memory_Cached_bytes{instance=\"$node\",job=\"$job\"} - node_memory_Slab_bytes{instance=\"$node\",job=\"$job\"} - node_memory_PageTables_bytes{instance=\"$node\",job=\"$job\"} - node_memory_SwapCached_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Apps - Memory used by user-space applications",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_PageTables_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "PageTables - Memory used to map between virtual and physical memory addresses",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_SwapCached_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "SwapCache - Memory that keeps track of pages that have been fetched from swap but not yet been modified",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Slab_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Slab - Memory used by the kernel to cache data structures for its own use (caches like inode, dentry, etc)",
- "refId": "D",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Cached_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Cache - Parked file data (file content) cache",
- "refId": "E",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Buffers_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Buffers - Block device (e.g. harddisk) cache",
- "refId": "F",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_MemFree_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Unused - Free memory unassigned",
- "refId": "G",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "(node_memory_SwapTotal_bytes{instance=\"$node\",job=\"$job\"} - node_memory_SwapFree_bytes{instance=\"$node\",job=\"$job\"})",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Swap - Swap space used",
- "refId": "H",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_HardwareCorrupted_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working",
- "refId": "I",
- "step": 240
- }
- ],
- "title": "Memory Stack",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bits out (-) / in (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 40,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bps"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "receive_packets_eth0"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "receive_packets_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "transmit_packets_eth0"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "transmit_packets_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Trans.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 12,
- "w": 12,
- "x": 0,
- "y": 33
- },
- "id": 84,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_receive_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])*8",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Receive",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_transmit_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])*8",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Transmit",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Network Traffic",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 40,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 12,
- "w": 12,
- "x": 12,
- "y": 33
- },
- "id": 156,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'} - node_filesystem_avail_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{mountpoint}}",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Disk Space Used",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "IO read (-) / write (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "iops"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Read.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EF843C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda2_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BA43A9",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda3_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F4D598",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#962D82",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#9AC48A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#65C5DB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9934E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#FCEACA",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9E2D2",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 12,
- "w": 12,
- "x": 0,
- "y": 45
- },
- "id": 229,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_reads_completed_total{instance=\"$node\",job=\"$job\",device=~\"$diskdevices\"}[$__rate_interval])",
- "intervalFactor": 4,
- "legendFormat": "{{device}} - Reads completed",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_writes_completed_total{instance=\"$node\",job=\"$job\",device=~\"$diskdevices\"}[$__rate_interval])",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Writes completed",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Disk IOps",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes read (-) / write (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 40,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "Bps"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "io time"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#890F02",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*read*./"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EF843C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byType",
- "options": "time"
- },
- "properties": [
- {
- "id": "custom.axisPlacement",
- "value": "hidden"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 12,
- "w": 12,
- "x": 12,
- "y": 45
- },
- "id": 42,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_read_bytes_total{instance=\"$node\",job=\"$job\",device=~\"$diskdevices\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Successfully read bytes",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_written_bytes_total{instance=\"$node\",job=\"$job\",device=~\"$diskdevices\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Successfully written bytes",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "I/O Usage Read / Write",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "%util",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 40,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "percentunit"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "io time"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#890F02",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byType",
- "options": "time"
- },
- "properties": [
- {
- "id": "custom.axisPlacement",
- "value": "hidden"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 12,
- "w": 12,
- "x": 0,
- "y": 57
- },
- "id": 127,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_io_time_seconds_total{instance=\"$node\",job=\"$job\",device=~\"$diskdevices\"} [$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{device}}",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "I/O Utilization",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "percentage",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "bars",
- "fillOpacity": 70,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "smooth",
- "lineWidth": 2,
- "pointSize": 3,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "max": 1,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "percentunit"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/^Guest - /"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#5195ce",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/^GuestNice - /"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#c15c17",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 12,
- "w": 12,
- "x": 12,
- "y": 57
- },
- "id": 319,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "desc"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum by(instance) (irate(node_cpu_guest_seconds_total{instance=\"$node\",job=\"$job\", mode=\"user\"}[1m])) / on(instance) group_left sum by (instance)((irate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}[1m])))",
- "hide": false,
- "legendFormat": "Guest - Time spent running a virtual CPU for a guest operating system",
- "range": true,
- "refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum by(instance) (irate(node_cpu_guest_seconds_total{instance=\"$node\",job=\"$job\", mode=\"nice\"}[1m])) / on(instance) group_left sum by (instance)((irate(node_cpu_seconds_total{instance=\"$node\",job=\"$job\"}[1m])))",
- "hide": false,
- "legendFormat": "GuestNice - Time spent running a niced guest (virtual CPU for guest operating system)",
- "range": true,
- "refId": "B"
- }
- ],
- "title": "CPU spent seconds in guests (VMs)",
- "type": "timeseries"
- }
- ],
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "refId": "A"
- }
- ],
- "title": "CPU / Memory / Net / Disk",
- "type": "row"
- },
- {
- "collapsed": true,
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 21
- },
- "id": 266,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "normal"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Apps"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#629E51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A437C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#CFFAFF",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "RAM_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#806EB7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#2F575E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Unused"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 22
- },
- "id": 136,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 350
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Inactive_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Inactive - Memory which has been less recently used. It is more eligible to be reclaimed for other purposes",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Active_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Active - Memory that has been used more recently and usually not reclaimed unless absolutely necessary",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory Active / Inactive",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Apps"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#629E51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A437C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#CFFAFF",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "RAM_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#806EB7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#2F575E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Unused"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*CommitLimit - *./"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.fillOpacity",
- "value": 0
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 22
- },
- "id": 135,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 350
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Committed_AS_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Committed_AS - Amount of memory presently allocated on the system",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_CommitLimit_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "CommitLimit - Amount of memory currently available to be allocated on the system",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory Committed",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "normal"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Apps"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#629E51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A437C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#CFFAFF",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "RAM_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#806EB7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#2F575E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Unused"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 32
- },
- "id": 191,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 350
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Inactive_file_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Inactive_file - File-backed memory on inactive LRU list",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Inactive_anon_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Inactive_anon - Anonymous and swap cache on inactive LRU list, including tmpfs (shmem)",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Active_file_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Active_file - File-backed memory on active LRU list",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Active_anon_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Active_anon - Anonymous and swap cache on active least-recently-used (LRU) list, including tmpfs",
- "refId": "D",
- "step": 240
- }
- ],
- "title": "Memory Active / Inactive Detail",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Active"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#99440A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#58140C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Dirty"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#B7DBAB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Mapped"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM + Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "VmallocUsed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 32
- },
- "id": 130,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Writeback_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Writeback - Memory which is actively being written back to disk",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_WritebackTmp_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "WritebackTmp - Memory used by FUSE for temporary writeback buffers",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Dirty_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Dirty - Memory which is waiting to get written back to the disk",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Memory Writeback and Dirty",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Apps"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#629E51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A437C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#CFFAFF",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "RAM_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#806EB7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#2F575E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Unused"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages"
- },
- "properties": [
- {
- "id": "custom.fillOpacity",
- "value": 0
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages"
- },
- "properties": [
- {
- "id": "custom.fillOpacity",
- "value": 0
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 42
- },
- "id": 138,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 350
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Mapped_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Mapped - Used memory in mapped pages files which have been mapped, such as libraries",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Shmem_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Shmem - Used shared memory (shared between several processes, thus including RAM disks)",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_ShmemHugePages_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_ShmemPmdMapped_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "ShmemPmdMapped - Amount of shared (shmem/tmpfs) memory backed by huge pages",
- "refId": "D",
- "step": 240
- }
- ],
- "title": "Memory Shared and Mapped",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "normal"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Active"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#99440A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#58140C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Dirty"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#B7DBAB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Mapped"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM + Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "VmallocUsed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 42
- },
- "id": 131,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_SUnreclaim_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "SUnreclaim - Part of Slab, that cannot be reclaimed on memory pressure",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_SReclaimable_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "SReclaimable - Part of Slab, that might be reclaimed, such as caches",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory Slab",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Active"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#99440A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#58140C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Dirty"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#B7DBAB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Mapped"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM + Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "VmallocUsed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 52
- },
- "id": 70,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_VmallocChunk_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "VmallocChunk - Largest contiguous block of vmalloc area which is free",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_VmallocTotal_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "VmallocTotal - Total size of vmalloc memory area",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_VmallocUsed_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "VmallocUsed - Amount of vmalloc area which is used",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Memory Vmalloc",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Apps"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#629E51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A437C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#CFFAFF",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "RAM_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#806EB7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#2F575E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Unused"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 52
- },
- "id": 159,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 350
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Bounce_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Bounce - Memory used for block device bounce buffers",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Memory Bounce",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Active"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#99440A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#58140C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Dirty"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#B7DBAB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Mapped"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM + Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "VmallocUsed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Inactive *./"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 62
- },
- "id": 129,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_AnonHugePages_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "AnonHugePages - Memory in anonymous huge pages",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_AnonPages_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "AnonPages - Memory in user pages not backed by files",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory Anonymous",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Apps"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#629E51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A437C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#CFFAFF",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "RAM_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#806EB7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#2F575E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Unused"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 62
- },
- "id": 160,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 350
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_KernelStack_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "KernelStack - Kernel memory stack. This is not reclaimable",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Percpu_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "PerCPU - Per CPU memory allocated dynamically by loadable modules",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory Kernel / CPU",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "pages",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Active"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#99440A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#58140C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Dirty"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#B7DBAB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Mapped"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#806EB7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM + Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#806EB7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "VmallocUsed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 72
- },
- "id": 140,
- "options": {
- "legend": {
- "calcs": [
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_HugePages_Free{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "HugePages_Free - Huge pages in the pool that are not yet allocated",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_HugePages_Rsvd{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "HugePages_Rsvd - Huge pages for which a commitment to allocate from the pool has been made, but no allocation has yet been made",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_HugePages_Surp{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "HugePages_Surp - Huge pages in the pool above the value in /proc/sys/vm/nr_hugepages",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Memory HugePages Counter",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Active"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#99440A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#58140C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Dirty"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#B7DBAB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Mapped"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#806EB7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM + Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#806EB7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "VmallocUsed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 72
- },
- "id": 71,
- "options": {
- "legend": {
- "calcs": [
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_HugePages_Total{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "HugePages - Total size of the pool of huge pages",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Hugepagesize_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Hugepagesize - Huge Page size",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory HugePages Size",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Active"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#99440A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#58140C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Dirty"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#B7DBAB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Mapped"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM + Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "VmallocUsed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 82
- },
- "id": 128,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_DirectMap1G_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "DirectMap1G - Amount of pages mapped as this size",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_DirectMap2M_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "DirectMap2M - Amount of pages mapped as this size",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_DirectMap4k_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "DirectMap4K - Amount of pages mapped as this size",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Memory DirectMap",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Apps"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#629E51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A437C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#CFFAFF",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "RAM_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#806EB7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#2F575E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Unused"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 82
- },
- "id": 137,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 350
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Unevictable_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Unevictable - Amount of unevictable memory that can't be swapped out for a variety of reasons",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_Mlocked_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "MLocked - Size of pages locked to memory using the mlock() system call",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory Unevictable and MLocked",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Active"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#99440A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#58140C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Dirty"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#B7DBAB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Mapped"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM + Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "VmallocUsed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 92
- },
- "id": 132,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_memory_NFS_Unstable_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "NFS Unstable - Memory in NFS pages sent to the server, but not yet committed to the storage",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Memory NFS",
- "type": "timeseries"
- }
- ],
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "refId": "A"
- }
- ],
- "title": "Memory Meminfo",
- "type": "row"
- },
- {
- "collapsed": true,
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 22
- },
- "id": 267,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "pages out (-) / in (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*out/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 23
- },
- "id": 176,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_vmstat_pgpgin{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Pagesin - Page in operations",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_vmstat_pgpgout{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Pagesout - Page out operations",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory Pages In / Out",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "pages out (-) / in (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*out/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 23
- },
- "id": 22,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_vmstat_pswpin{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Pswpin - Pages swapped in",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_vmstat_pswpout{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Pswpout - Pages swapped out",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory Pages Swap In / Out",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "faults",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "normal"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Apps"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#629E51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A437C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#CFFAFF",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "RAM_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#806EB7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#2F575E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Unused"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Pgfault - Page major and minor fault operations"
- },
- "properties": [
- {
- "id": "custom.fillOpacity",
- "value": 0
- },
- {
- "id": "custom.stacking",
- "value": {
- "group": false,
- "mode": "normal"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 33
- },
- "id": 175,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 350
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_vmstat_pgfault{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Pgfault - Page major and minor fault operations",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_vmstat_pgmajfault{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Pgmajfault - Major page fault operations",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_vmstat_pgfault{instance=\"$node\",job=\"$job\"}[$__rate_interval]) - irate(node_vmstat_pgmajfault{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Pgminfault - Minor page fault operations",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Memory Page Faults",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Active"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#99440A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#58140C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Dirty"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#B7DBAB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Mapped"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total RAM + Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Total Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "VmallocUsed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 33
- },
- "id": 307,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_vmstat_oom_kill{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "oom killer invocations ",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "OOM Killer",
- "type": "timeseries"
- }
- ],
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "refId": "A"
- }
- ],
- "title": "Memory Vmstat",
- "type": "row"
- },
- {
- "collapsed": true,
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 23
- },
- "id": 293,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "seconds",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "s"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Variation*./"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#890F02",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 24
- },
- "id": 260,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_timex_estimated_error_seconds{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Estimated error in seconds",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_timex_offset_seconds{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Time offset in between local system and reference clock",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_timex_maxerror_seconds{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Maximum error in seconds",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Time Synchronized Drift",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 24
- },
- "id": 291,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_timex_loop_time_constant{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Phase-locked loop time adjust",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Time PLL Adjust",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Variation*./"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#890F02",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 34
- },
- "id": 168,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_timex_sync_status{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Is clock synchronized to a reliable server (1 = yes, 0 = no)",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_timex_frequency_adjustment_ratio{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Local clock frequency adjustment",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Time Synchronized Status",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "seconds",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "s"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 34
- },
- "id": 294,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_timex_tick_seconds{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Seconds between clock ticks",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_timex_tai_offset_seconds{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "International Atomic Time (TAI) offset",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Time Misc",
- "type": "timeseries"
- }
- ],
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "refId": "A"
- }
- ],
- "title": "System Timesync",
- "type": "row"
- },
- {
- "collapsed": true,
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 24
- },
- "id": 312,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 73
- },
- "id": 62,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_procs_blocked{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Processes blocked waiting for I/O to complete",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_procs_running{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Processes in runnable state",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Processes Status",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Enable with --collector.processes argument on node-exporter",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "normal"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 73
- },
- "id": 315,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_processes_state{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ state }}",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Processes State",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "forks / sec",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 83
- },
- "id": 148,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_forks_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Processes forks second",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Processes Forks",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "decbytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Max.*/"
- },
- "properties": [
- {
- "id": "custom.fillOpacity",
- "value": 0
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 83
- },
- "id": 149,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(process_virtual_memory_bytes{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Processes virtual memory size in bytes",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "process_resident_memory_max_bytes{instance=\"$node\",job=\"$job\"}",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Maximum amount of virtual memory available in bytes",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(process_virtual_memory_bytes{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Processes virtual memory size in bytes",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(process_virtual_memory_max_bytes{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Maximum amount of virtual memory available in bytes",
- "refId": "D",
- "step": 240
- }
- ],
- "title": "Processes Memory",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Enable with --collector.processes argument on node-exporter",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "PIDs limit"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F2495C",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.fillOpacity",
- "value": 0
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 93
- },
- "id": 313,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_processes_pids{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Number of PIDs",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_processes_max_processes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "PIDs limit",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "PIDs Number and Limit",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "seconds",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "s"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*waiting.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 93
- },
- "id": 305,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_schedstat_running_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "CPU {{ cpu }} - seconds spent running a process",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_schedstat_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "CPU {{ cpu }} - seconds spent by processing waiting for this CPU",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Process schedule stats Running / Waiting",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Enable with --collector.processes argument on node-exporter",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Threads limit"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F2495C",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.fillOpacity",
- "value": 0
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 103
- },
- "id": 314,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_processes_threads{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Allocated threads",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_processes_max_threads{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Threads limit",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Threads Number and Limit",
- "type": "timeseries"
- }
- ],
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "refId": "A"
- }
- ],
- "title": "System Processes",
- "type": "row"
- },
- {
- "collapsed": true,
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 25
- },
- "id": 269,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 26
- },
- "id": 8,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_context_switches_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Context switches",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_intr_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Interrupts",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Context Switches / Interrupts",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 26
- },
- "id": 7,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_load1{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 4,
- "legendFormat": "Load 1m",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_load5{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 4,
- "legendFormat": "Load 5m",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_load15{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 4,
- "legendFormat": "Load 15m",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "System Load",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "hertz"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Max"
- },
- "properties": [
- {
- "id": "custom.lineStyle",
- "value": {
- "dash": [
- 10,
- 10
- ],
- "fill": "dash"
- }
- },
- {
- "id": "color",
- "value": {
- "fixedColor": "blue",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.fillOpacity",
- "value": 10
- },
- {
- "id": "custom.hideFrom",
- "value": {
- "legend": true,
- "tooltip": false,
- "viz": false
- }
- },
- {
- "id": "custom.fillBelowTo",
- "value": "Min"
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Min"
- },
- "properties": [
- {
- "id": "custom.lineStyle",
- "value": {
- "dash": [
- 10,
- 10
- ],
- "fill": "dash"
- }
- },
- {
- "id": "color",
- "value": {
- "fixedColor": "blue",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.hideFrom",
- "value": {
- "legend": true,
- "tooltip": false,
- "viz": false
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 36
- },
- "id": 321,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "desc"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "node_cpu_scaling_frequency_hertz{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "CPU {{ cpu }}",
- "range": true,
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "avg(node_cpu_scaling_frequency_max_hertz{instance=\"$node\",job=\"$job\"})",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Max",
- "range": true,
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "avg(node_cpu_scaling_frequency_min_hertz{instance=\"$node\",job=\"$job\"})",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Min",
- "range": true,
- "refId": "C",
- "step": 240
- }
- ],
- "title": "CPU Frequency Scaling",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "https://docs.kernel.org/accounting/psi.html",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 10,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "percentunit"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Memory some"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-red",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Memory full"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "light-red",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "I/O some"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "dark-blue",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "I/O full"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "light-blue",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 36
- },
- "id": 322,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "rate(node_pressure_cpu_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "CPU some",
- "range": true,
- "refId": "CPU some",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "rate(node_pressure_memory_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Memory some",
- "range": true,
- "refId": "Memory some",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "rate(node_pressure_memory_stalled_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Memory full",
- "range": true,
- "refId": "Memory full",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "rate(node_pressure_io_waiting_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "I/O some",
- "range": true,
- "refId": "I/O some",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "rate(node_pressure_io_stalled_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "I/O full",
- "range": true,
- "refId": "I/O full",
- "step": 240
- }
- ],
- "title": "Pressure Stall Information",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Enable with --collector.interrupts argument on node-exporter",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Critical*./"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.fillOpacity",
- "value": 0
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Max*./"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EF843C",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.fillOpacity",
- "value": 0
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 46
- },
- "id": 259,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_interrupts_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ type }} - {{ info }}",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Interrupts Detail",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 46
- },
- "id": 306,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_schedstat_timeslices_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "CPU {{ cpu }}",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Schedule timeslices executed by each cpu",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 56
- },
- "id": 151,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_entropy_available_bits{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Entropy available to random number generators",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Entropy",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "seconds",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "s"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 56
- },
- "id": 308,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(process_cpu_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Time spent",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "CPU time spent in user and system contexts",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Max*./"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#890F02",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.fillOpacity",
- "value": 0
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 66
- },
- "id": 64,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "process_max_fds{instance=\"$node\",job=\"$job\"}",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Maximum open file descriptors",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "process_open_fds{instance=\"$node\",job=\"$job\"}",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Open file descriptors",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "File Descriptors",
- "type": "timeseries"
- }
- ],
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "refId": "A"
- }
- ],
- "title": "System Misc",
- "type": "row"
- },
- {
- "collapsed": true,
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 26
- },
- "id": 304,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "temperature",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "celsius"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Critical*./"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.fillOpacity",
- "value": 0
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Max*./"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EF843C",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.fillOpacity",
- "value": 0
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 59
- },
- "id": 158,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_hwmon_temp_celsius{instance=\"$node\",job=\"$job\"} * on(chip) group_left(chip_name) node_hwmon_chip_names{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ chip_name }} {{ sensor }} temp",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_hwmon_temp_crit_alarm_celsius{instance=\"$node\",job=\"$job\"} * on(chip) group_left(chip_name) node_hwmon_chip_names{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": true,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ chip_name }} {{ sensor }} Critical Alarm",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_hwmon_temp_crit_celsius{instance=\"$node\",job=\"$job\"} * on(chip) group_left(chip_name) node_hwmon_chip_names{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ chip_name }} {{ sensor }} Critical",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_hwmon_temp_crit_hyst_celsius{instance=\"$node\",job=\"$job\"} * on(chip) group_left(chip_name) node_hwmon_chip_names{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": true,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ chip_name }} {{ sensor }} Critical Historical",
- "refId": "D",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_hwmon_temp_max_celsius{instance=\"$node\",job=\"$job\"} * on(chip) group_left(chip_name) node_hwmon_chip_names{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": true,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ chip_name }} {{ sensor }} Max",
- "refId": "E",
- "step": 240
- }
- ],
- "title": "Hardware temperature monitor",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Max*./"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EF843C",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.fillOpacity",
- "value": 0
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 59
- },
- "id": 300,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_cooling_device_cur_state{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Current {{ name }} in {{ type }}",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_cooling_device_max_state{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Max {{ name }} in {{ type }}",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Throttle cooling device",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 69
- },
- "id": 302,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_power_supply_online{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ power_supply }} online",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Power supply",
- "type": "timeseries"
- }
- ],
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "refId": "A"
- }
- ],
- "title": "Hardware Misc",
- "type": "row"
- },
- {
- "collapsed": true,
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 27
- },
- "id": 296,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 46
- },
- "id": 297,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_systemd_socket_accepted_connections_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ name }} Connections",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Systemd Sockets",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "normal"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Failed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F2495C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#FF9830",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Active"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#73BF69",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Deactivating"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#FFCB7D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Activating"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C8F2C2",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 46
- },
- "id": 298,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"activating\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Activating",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"active\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Active",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"deactivating\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Deactivating",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"failed\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Failed",
- "refId": "D",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_systemd_units{instance=\"$node\",job=\"$job\",state=\"inactive\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Inactive",
- "refId": "E",
- "step": 240
- }
- ],
- "title": "Systemd Units State",
- "type": "timeseries"
- }
- ],
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "refId": "A"
- }
- ],
- "title": "Systemd",
- "type": "row"
- },
- {
- "collapsed": true,
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 28
- },
- "id": 270,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "The number (after merges) of I/O requests completed per second for the device",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "IO read (-) / write (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "iops"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Read.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EF843C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda2_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BA43A9",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda3_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F4D598",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#962D82",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#9AC48A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#65C5DB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9934E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#FCEACA",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9E2D2",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 47
- },
- "id": 9,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_reads_completed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "intervalFactor": 4,
- "legendFormat": "{{device}} - Reads completed",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_writes_completed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Writes completed",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Disk IOps Completed",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "The number of bytes read from or written to the device per second",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes read (-) / write (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "Bps"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Read.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EF843C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda2_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BA43A9",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda3_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F4D598",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#962D82",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#9AC48A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#65C5DB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9934E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#FCEACA",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9E2D2",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 47
- },
- "id": 33,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_read_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 4,
- "legendFormat": "{{device}} - Read bytes",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_written_bytes_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Written bytes",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Disk R/W Data",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "The average time for requests issued to the device to be served. This includes the time spent by the requests in queue and the time spent servicing them.",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "time. read (-) / write (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 30,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "s"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Read.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EF843C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda2_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BA43A9",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda3_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F4D598",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#962D82",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#9AC48A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#65C5DB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9934E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#FCEACA",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9E2D2",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 57
- },
- "id": 37,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_read_time_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval]) / irate(node_disk_reads_completed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "hide": false,
- "interval": "",
- "intervalFactor": 4,
- "legendFormat": "{{device}} - Read wait time avg",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_write_time_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval]) / irate(node_disk_writes_completed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Write wait time avg",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Disk Average Wait Time",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "The average queue length of the requests that were issued to the device",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "aqu-sz",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "none"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EF843C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda2_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BA43A9",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda3_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F4D598",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#962D82",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#9AC48A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#65C5DB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9934E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#FCEACA",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9E2D2",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 57
- },
- "id": 35,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_io_time_weighted_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "interval": "",
- "intervalFactor": 4,
- "legendFormat": "{{device}}",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Average Queue Size",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "The number of read and write requests merged per second that were queued to the device",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "I/Os",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "iops"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Read.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EF843C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda2_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BA43A9",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda3_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F4D598",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#962D82",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#9AC48A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#65C5DB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9934E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#FCEACA",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9E2D2",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 67
- },
- "id": 133,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_reads_merged_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Read merged",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_writes_merged_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Write merged",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Disk R/W Merged",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Percentage of elapsed time during which I/O requests were issued to the device (bandwidth utilization for the device). Device saturation occurs when this value is close to 100% for devices serving requests serially. But for devices serving requests in parallel, such as RAID arrays and modern SSDs, this number does not reflect their performance limits.",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "%util",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 30,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "percentunit"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EF843C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda2_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BA43A9",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda3_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F4D598",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#962D82",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#9AC48A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#65C5DB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9934E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#FCEACA",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9E2D2",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 67
- },
- "id": 36,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_io_time_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "interval": "",
- "intervalFactor": 4,
- "legendFormat": "{{device}} - IO",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_discard_time_seconds_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "interval": "",
- "intervalFactor": 4,
- "legendFormat": "{{device}} - discard",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Time Spent Doing I/Os",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "The number of outstanding requests at the instant the sample was taken. Incremented as requests are given to appropriate struct request_queue and decremented as they finish.",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "Outstanding req.",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "none"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EF843C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda2_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BA43A9",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda3_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F4D598",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#962D82",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#9AC48A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#65C5DB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9934E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#FCEACA",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9E2D2",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 77
- },
- "id": 34,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_disk_io_now{instance=\"$node\",job=\"$job\"}",
- "interval": "",
- "intervalFactor": 4,
- "legendFormat": "{{device}} - IO now",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Instantaneous Queue Size",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "IOs",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "iops"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EF843C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda2_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BA43A9",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sda3_.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F4D598",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdb3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#962D82",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdc3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#9AC48A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#65C5DB",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9934E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EA6460",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde1.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sdd2.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#FCEACA",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*sde3.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F9E2D2",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 77
- },
- "id": 301,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_discards_completed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "interval": "",
- "intervalFactor": 4,
- "legendFormat": "{{device}} - Discards completed",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_disk_discards_merged_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Discards merged",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Disk IOps Discards completed / merged",
- "type": "timeseries"
- }
- ],
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "refId": "A"
- }
- ],
- "title": "Storage Disk",
- "type": "row"
- },
- {
- "collapsed": true,
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 29
- },
- "id": 271,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 62
- },
- "id": 43,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_filesystem_avail_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "{{mountpoint}} - Available",
- "metric": "",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_filesystem_free_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
- "format": "time_series",
- "hide": true,
- "intervalFactor": 1,
- "legendFormat": "{{mountpoint}} - Free",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_filesystem_size_bytes{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
- "format": "time_series",
- "hide": true,
- "intervalFactor": 1,
- "legendFormat": "{{mountpoint}} - Size",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Filesystem space available",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "file nodes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 62
- },
- "id": 41,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_filesystem_files_free{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "{{mountpoint}} - Free file nodes",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "File Nodes Free",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "files",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 72
- },
- "id": 28,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_filefd_maximum{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 4,
- "legendFormat": "Max open files",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_filefd_allocated{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Open files",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "File Descriptor",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "file Nodes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 72
- },
- "id": 219,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_filesystem_files{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "{{mountpoint}} - File nodes total",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "File Nodes Size",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "normal"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "max": 1,
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "/ ReadOnly"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#890F02",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 82
- },
- "id": 44,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_filesystem_readonly{instance=\"$node\",job=\"$job\",device!~'rootfs'}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{mountpoint}} - ReadOnly",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_filesystem_device_error{instance=\"$node\",job=\"$job\",device!~'rootfs',fstype!~'tmpfs'}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{mountpoint}} - Device error",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Filesystem in ReadOnly / Error",
- "type": "timeseries"
- }
- ],
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "refId": "A"
- }
- ],
- "title": "Storage Filesystem",
- "type": "row"
- },
- {
- "collapsed": true,
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 30
- },
- "id": 272,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "packets out (-) / in (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "pps"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "receive_packets_eth0"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "receive_packets_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "transmit_packets_eth0"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "transmit_packets_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Trans.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 47
- },
- "id": 60,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_receive_packets_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Receive",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_transmit_packets_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Transmit",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Network Traffic by Packets",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "packets out (-) / in (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "pps"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Trans.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 47
- },
- "id": 142,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_receive_errs_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Receive errors",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_transmit_errs_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Transmit errors",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Network Traffic Errors",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "packets out (-) / in (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "pps"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Trans.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 57
- },
- "id": 143,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_receive_drop_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Receive drop",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_transmit_drop_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Transmit drop",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Network Traffic Drop",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "packets out (-) / in (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "pps"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Trans.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 57
- },
- "id": 141,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_receive_compressed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Receive compressed",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_transmit_compressed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Transmit compressed",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Network Traffic Compressed",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "packets out (-) / in (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "pps"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Trans.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 67
- },
- "id": 146,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_receive_multicast_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Receive multicast",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Network Traffic Multicast",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "packets out (-) / in (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "pps"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Trans.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 67
- },
- "id": 144,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_receive_fifo_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Receive fifo",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_transmit_fifo_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Transmit fifo",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Network Traffic Fifo",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "packets out (-) / in (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "pps"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Trans.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 77
- },
- "id": 145,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_receive_frame_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Receive frame",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Network Traffic Frame",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 77
- },
- "id": 231,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_transmit_carrier_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Statistic transmit_carrier",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Network Traffic Carrier",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Trans.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 87
- },
- "id": 232,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_network_transmit_colls_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Transmit colls",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Network Traffic Colls",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "entries",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "NF conntrack limit"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#890F02",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.fillOpacity",
- "value": 0
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 87
- },
- "id": 61,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_nf_conntrack_entries{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "NF conntrack entries",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_nf_conntrack_entries_limit{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "NF conntrack limit",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "NF Conntrack",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "Entries",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 97
- },
- "id": 230,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_arp_entries{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{ device }} - ARP entries",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "ARP Entries",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "decimals": 0,
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 97
- },
- "id": 288,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_network_mtu_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{ device }} - Bytes",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "MTU",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "decimals": 0,
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 107
- },
- "id": 280,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_network_speed_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{ device }} - Speed",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Speed",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "packets",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "decimals": 0,
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "none"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 107
- },
- "id": 289,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_network_transmit_queue_length{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{ device }} - Interface transmit queue length",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Queue Length",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "packetes drop (-) / process (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Dropped.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 117
- },
- "id": 290,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_softnet_processed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "CPU {{cpu}} - Processed",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_softnet_dropped_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "CPU {{cpu}} - Dropped",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Softnet Packets",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 117
- },
- "id": 310,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_softnet_times_squeezed_total{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "CPU {{cpu}} - Squeezed",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Softnet Out of Quota",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 127
- },
- "id": 309,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_network_up{operstate=\"up\",instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{interface}} - Operational state UP",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_network_carrier{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "instant": false,
- "legendFormat": "{{device}} - Physical link state",
- "refId": "B"
- }
- ],
- "title": "Network Operational Status",
- "type": "timeseries"
- }
- ],
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "refId": "A"
- }
- ],
- "title": "Network Traffic",
- "type": "row"
- },
- {
- "collapsed": true,
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 31
- },
- "id": 273,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 48
- },
- "id": 63,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_sockstat_TCP_alloc{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "TCP_alloc - Allocated sockets",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_sockstat_TCP_inuse{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "TCP_inuse - Tcp sockets currently in use",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_sockstat_TCP_mem{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": true,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "TCP_mem - Used memory for tcp",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_sockstat_TCP_orphan{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "TCP_orphan - Orphan sockets",
- "refId": "D",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_sockstat_TCP_tw{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "TCP_tw - Sockets waiting close",
- "refId": "E",
- "step": 240
- }
- ],
- "title": "Sockstat TCP",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 48
- },
- "id": 124,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_sockstat_UDPLITE_inuse{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "UDPLITE_inuse - Udplite sockets currently in use",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_sockstat_UDP_inuse{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "UDP_inuse - Udp sockets currently in use",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_sockstat_UDP_mem{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "UDP_mem - Used memory for udp",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Sockstat UDP",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 58
- },
- "id": 125,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_sockstat_FRAG_inuse{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "FRAG_inuse - Frag sockets currently in use",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_sockstat_RAW_inuse{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "RAW_inuse - Raw sockets currently in use",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Sockstat FRAG / RAW",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "bytes",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 58
- },
- "id": 220,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_sockstat_TCP_mem_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "mem_bytes - TCP sockets in that state",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_sockstat_UDP_mem_bytes{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "mem_bytes - UDP sockets in that state",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_sockstat_FRAG_memory{instance=\"$node\",job=\"$job\"}",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "FRAG_memory - Used memory for frag",
- "refId": "C"
- }
- ],
- "title": "Sockstat Memory Size",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "sockets",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 68
- },
- "id": 126,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_sockstat_sockets_used{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Sockets_used - Sockets currently in use",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Sockstat Used",
- "type": "timeseries"
- }
- ],
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "refId": "A"
- }
- ],
- "title": "Network Sockstat",
- "type": "row"
- },
- {
- "collapsed": true,
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 32
- },
- "id": 274,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "octets out (-) / in (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Out.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 33
- },
- "id": 221,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_IpExt_InOctets{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "InOctets - Received octets",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_IpExt_OutOctets{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "OutOctets - Sent octets",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Netstat IP In / Out Octets",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "datagrams",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 33
- },
- "id": 81,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true,
- "width": 300
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_Ip_Forwarding{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Forwarding - IP forwarding",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Netstat IP Forwarding",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "messages out (-) / in (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Out.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 43
- },
- "id": 115,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_Icmp_InMsgs{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "InMsgs - Messages which the entity received. Note that this counter includes all those counted by icmpInErrors",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_Icmp_OutMsgs{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "OutMsgs - Messages which this entity attempted to send. Note that this counter includes all those counted by icmpOutErrors",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "ICMP In / Out",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "messages out (-) / in (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Out.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 43
- },
- "id": 50,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_Icmp_InErrors{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "InErrors - Messages which the entity received but determined as having ICMP-specific errors (bad ICMP checksums, bad length, etc.)",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "ICMP Errors",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "datagrams out (-) / in (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Out.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Snd.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 53
- },
- "id": 55,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_Udp_InDatagrams{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "InDatagrams - Datagrams received",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_Udp_OutDatagrams{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "OutDatagrams - Datagrams sent",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "UDP In / Out",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "datagrams",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 53
- },
- "id": 109,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_Udp_InErrors{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "InErrors - UDP Datagrams that could not be delivered to an application",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_Udp_NoPorts{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "NoPorts - UDP Datagrams received on a port with no listener",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_UdpLite_InErrors{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "interval": "",
- "legendFormat": "InErrors Lite - UDPLite Datagrams that could not be delivered to an application",
- "refId": "C"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_Udp_RcvbufErrors{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "RcvbufErrors - UDP buffer errors received",
- "refId": "D",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_Udp_SndbufErrors{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "SndbufErrors - UDP buffer errors send",
- "refId": "E",
- "step": 240
- }
- ],
- "title": "UDP Errors",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "datagrams out (-) / in (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Out.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Snd.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 63
- },
- "id": 299,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_Tcp_InSegs{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "instant": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "InSegs - Segments received, including those received in error. This count includes segments received on currently established connections",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_Tcp_OutSegs{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "OutSegs - Segments sent, including those on current connections but excluding those containing only retransmitted octets",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "TCP In / Out",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 63
- },
- "id": 104,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_TcpExt_ListenOverflows{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "ListenOverflows - Times the listen queue of a socket overflowed",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_TcpExt_ListenDrops{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "ListenDrops - SYNs to LISTEN sockets ignored",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_TcpExt_TCPSynRetrans{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "TCPSynRetrans - SYN-SYN/ACK retransmits to break down retransmissions in SYN, fast/timeout retransmits",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_Tcp_RetransSegs{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "interval": "",
- "legendFormat": "RetransSegs - Segments retransmitted - that is, the number of TCP segments transmitted containing one or more previously transmitted octets",
- "refId": "D"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_Tcp_InErrs{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "interval": "",
- "legendFormat": "InErrs - Segments received in error (e.g., bad TCP checksums)",
- "refId": "E"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_Tcp_OutRsts{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "interval": "",
- "legendFormat": "OutRsts - Segments sent with RST flag",
- "refId": "F"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "irate(node_netstat_TcpExt_TCPRcvQDrop{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "hide": false,
- "interval": "",
- "legendFormat": "TCPRcvQDrop - Packets meant to be queued in rcv queue but dropped because socket rcvbuf limit hit",
- "range": true,
- "refId": "G"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "irate(node_netstat_TcpExt_TCPOFOQueue{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "hide": false,
- "interval": "",
- "legendFormat": "TCPOFOQueue - TCP layer receives an out of order packet and has enough memory to queue it",
- "range": true,
- "refId": "H"
- }
- ],
- "title": "TCP Errors",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "connections",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*MaxConn *./"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#890F02",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.fillOpacity",
- "value": 0
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 73
- },
- "id": 85,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_netstat_Tcp_CurrEstab{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "CurrEstab - TCP connections for which the current state is either ESTABLISHED or CLOSE- WAIT",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_netstat_Tcp_MaxConn{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "MaxConn - Limit on the total number of TCP connections the entity can support (Dynamic is \"-1\")",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "TCP Connections",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter out (-) / in (+)",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*Sent.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 73
- },
- "id": 91,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_TcpExt_SyncookiesFailed{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "SyncookiesFailed - Invalid SYN cookies received",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_TcpExt_SyncookiesRecv{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "SyncookiesRecv - SYN cookies received",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_TcpExt_SyncookiesSent{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "SyncookiesSent - SYN cookies sent",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "TCP SynCookie",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "connections",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 83
- },
- "id": 82,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_Tcp_ActiveOpens{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "ActiveOpens - TCP connections that have made a direct transition to the SYN-SENT state from the CLOSED state",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "irate(node_netstat_Tcp_PassiveOpens{instance=\"$node\",job=\"$job\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "PassiveOpens - TCP connections that have made a direct transition to the SYN-RCVD state from the LISTEN state",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "TCP Direct Transition",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "Enable with --collector.tcpstat argument on node-exporter",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "connections",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 83
- },
- "id": 320,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "node_tcp_connection_states{state=\"established\",instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "established - TCP sockets in established state",
- "range": true,
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "node_tcp_connection_states{state=\"fin_wait2\",instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "fin_wait2 - TCP sockets in fin_wait2 state",
- "range": true,
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "node_tcp_connection_states{state=\"listen\",instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "listen - TCP sockets in listen state",
- "range": true,
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "node_tcp_connection_states{state=\"time_wait\",instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "time_wait - TCP sockets in time_wait state",
- "range": true,
- "refId": "D",
- "step": 240
- }
- ],
- "title": "TCP Stat",
- "type": "timeseries"
- }
- ],
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "refId": "A"
- }
- ],
- "title": "Network Netstat",
- "type": "row"
- },
- {
- "collapsed": true,
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 33
- },
- "id": 279,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "seconds",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "normal"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "s"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 66
- },
- "id": 40,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_scrape_collector_duration_seconds{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{collector}} - Scrape duration",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Node Exporter Scrape Time",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "counter",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 20,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineStyle": {
- "fill": "solid"
- },
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*error.*/"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#F2495C",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 66
- },
- "id": 157,
- "links": [],
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max",
- "min"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "9.2.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_scrape_collector_success{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{collector}} - Scrape success",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "expr": "node_textfile_scrape_error{instance=\"$node\",job=\"$job\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{collector}} - Scrape textfile error (1 = true)",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Node Exporter Scrape",
- "type": "timeseries"
- }
- ],
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "000000001"
- },
- "refId": "A"
- }
- ],
- "title": "Node Exporter",
- "type": "row"
- }
- ],
- "refresh": "1m",
- "revision": 1,
- "schemaVersion": 39,
- "tags": [
- "linux"
- ],
- "templating": {
- "list": [
- {
- "current": {
- "selected": false,
- "text": "default",
- "value": "default"
- },
- "hide": 0,
- "includeAll": false,
- "label": "Datasource",
- "multi": false,
- "name": "datasource",
- "options": [],
- "query": "prometheus",
- "queryValue": "",
- "refresh": 1,
- "regex": "",
- "skipUrlSync": false,
- "type": "datasource"
- },
- {
- "current": {
- "selected": false,
- "text": "node-exporter",
- "value": "node-exporter"
- },
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "definition": "",
- "hide": 0,
- "includeAll": false,
- "label": "Job",
- "multi": false,
- "name": "job",
- "options": [],
- "query": {
- "query": "label_values(node_uname_info, job)",
- "refId": "Prometheus-job-Variable-Query"
- },
- "refresh": 1,
- "regex": "",
- "skipUrlSync": false,
- "sort": 1,
- "tagValuesQuery": "",
- "tagsQuery": "",
- "type": "query",
- "useTags": false
- },
- {
- "current": {
- "selected": false,
- "text": "node_exporter:9100",
- "value": "node_exporter:9100"
- },
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "definition": "label_values(node_uname_info{job=\"$job\"}, instance)",
- "hide": 0,
- "includeAll": false,
- "label": "Host",
- "multi": false,
- "name": "node",
- "options": [],
- "query": {
- "query": "label_values(node_uname_info{job=\"$job\"}, instance)",
- "refId": "Prometheus-node-Variable-Query"
- },
- "refresh": 1,
- "regex": "",
- "skipUrlSync": false,
- "sort": 1,
- "tagValuesQuery": "",
- "tagsQuery": "",
- "type": "query",
- "useTags": false
- },
- {
- "current": {
- "selected": false,
- "text": "[a-z]+|nvme[0-9]+n[0-9]+|mmcblk[0-9]+",
- "value": "[a-z]+|nvme[0-9]+n[0-9]+|mmcblk[0-9]+"
- },
- "hide": 2,
- "includeAll": false,
- "multi": false,
- "name": "diskdevices",
- "options": [
- {
- "selected": true,
- "text": "[a-z]+|nvme[0-9]+n[0-9]+|mmcblk[0-9]+",
- "value": "[a-z]+|nvme[0-9]+n[0-9]+|mmcblk[0-9]+"
- }
- ],
- "query": "[a-z]+|nvme[0-9]+n[0-9]+|mmcblk[0-9]+",
- "skipUrlSync": false,
- "type": "custom"
- }
- ]
- },
- "time": {
- "from": "now-15m",
- "to": "now"
- },
- "timepicker": {
- "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": "Node Exporter Full",
- "uid": "rYdddlPWk",
- "version": 3,
- "weekStart": ""
-}
\ No newline at end of file
diff --git a/compose/jaeger/jaeger-ui.json b/compose/jaeger/jaeger-ui.json
deleted file mode 100644
index 0f06f2fcda..0000000000
--- a/compose/jaeger/jaeger-ui.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "monitor": {
- "menuEnabled": true
- },
- "dependencies": {
- "menuEnabled": true
- }
- }
\ No newline at end of file
diff --git a/compose/loki/loki.yml b/compose/loki/loki.yml
deleted file mode 100644
index a63d16c7ff..0000000000
--- a/compose/loki/loki.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-auth_enabled: false
-
-limits_config:
- allow_structured_metadata: true
-
-server:
- http_listen_port: 3100
- grpc_listen_port: 9096
-
-common:
- instance_addr: localhost
- path_prefix: /tmp/loki
- storage:
- filesystem:
- chunks_directory: /tmp/loki/chunks
- rules_directory: /tmp/loki/rules
- replication_factor: 1
- ring:
- kvstore:
- store: inmemory
-
-query_range:
- results_cache:
- cache:
- embedded_cache:
- enabled: true
- max_size_mb: 100
-
-schema_config:
- configs:
- - from: 2020-10-24
- store: tsdb
- object_store: filesystem
- schema: v13
- index:
- prefix: index_
- period: 24h
-
-storage_config:
- boltdb:
- directory: /tmp/loki/index
-
- filesystem:
- directory: /tmp/loki/chunks
diff --git a/compose/otel-collector/otel-config.yaml b/compose/otel-collector/otel-config.yaml
deleted file mode 100644
index 191edae04c..0000000000
--- a/compose/otel-collector/otel-config.yaml
+++ /dev/null
@@ -1,78 +0,0 @@
-extensions:
- health_check:
- zpages:
- endpoint: 0.0.0.0:55679
-
-receivers:
- otlp:
- protocols:
- grpc:
- endpoint: 0.0.0.0:4317
- http:
- endpoint: 0.0.0.0:4318
- zipkin:
- endpoint: 0.0.0.0:9411
-
-processors:
- batch:
-
- resource:
- attributes:
- - action: insert
- key: service_name
- from_attribute: service.name
- - action: insert
- key: loki.resource.labels
- value: service_name
-
-exporters:
- debug:
- verbosity: detailed
- file/traces:
- path: /log/otel/traces.log
- file/metrics:
- path: /log/otel/metrics.log
- file/logs:
- path: /log/otel/logs.log
- otlp:
- endpoint: "${JAEGER_ENDPOINT}"
- tls:
- insecure: true
- prometheus:
- endpoint: "0.0.0.0:8889"
- otlphttp:
- endpoint: "http://loki:3100/otlp"
-
-service:
- telemetry:
- logs:
- level: debug
- pipelines:
- traces:
- receivers:
- - otlp
- - zipkin
- processors: [batch]
- exporters:
- - debug
- - file/traces
- - otlp
- metrics:
- receivers:
- - otlp
- processors: [batch]
- exporters:
- - debug
- - file/metrics
- - prometheus
- logs:
- receivers:
- - otlp
- processors: [batch, resource]
- exporters:
- - debug
- - file/logs
- - otlphttp
- extensions:
- - health_check
- - zpages
\ No newline at end of file
diff --git a/compose/prometheus/prometheus.yml b/compose/prometheus/prometheus.yml
deleted file mode 100644
index 647cfda1af..0000000000
--- a/compose/prometheus/prometheus.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-global:
- scrape_interval: 10s
-
-scrape_configs:
- - job_name: 'fullstackhero.api'
- static_configs:
- - targets: ['host.docker.internal:5000']
-
- - job_name: otel
- static_configs:
- - targets:
- - 'otel-collector:8889'
-
- - job_name: otel-collector
- static_configs:
- - targets:
- - 'otel-collector:8888'
-
- - job_name: 'node-exporter'
- # Override the global default and scrape targets from this job every 5 seconds.
- scrape_interval: 5s
- static_configs:
- - targets:
- - 'node_exporter:9100'
\ No newline at end of file
diff --git a/src/global.json b/global.json
similarity index 58%
rename from src/global.json
rename to global.json
index d5bf446d0c..4b378a34be 100644
--- a/src/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
{
"sdk": {
- "version": "9.0.100",
+ "version": "10.0.100-preview.7",
"rollForward": "latestFeature"
}
}
\ No newline at end of file
diff --git a/src/.dockerignore b/src/.dockerignore
deleted file mode 100644
index 3aae53927b..0000000000
--- a/src/.dockerignore
+++ /dev/null
@@ -1,32 +0,0 @@
-# Include any files or directories that you don't want to be copied to your
-# container here (e.g., local build artifacts, temporary files, etc.).
-#
-# For more help, visit the .dockerignore file reference guide at
-# https://docs.docker.com/engine/reference/builder/#dockerignore-file
-
-**/.DS_Store
-**/.classpath
-**/.dockerignore
-**/.env
-**/.git
-**/.gitignore
-**/.project
-**/.settings
-**/.toolstarget
-**/.vs
-**/.vscode
-**/*.*proj.user
-**/*.dbmdl
-**/*.jfm
-**/bin
-**/charts
-**/docker-compose*
-**/compose*
-**/Dockerfile*
-**/node_modules
-**/npm-debug.log
-**/obj
-**/secrets.dev.yaml
-**/values.dev.yaml
-LICENSE
-README.md
diff --git a/src/.editorconfig b/src/.editorconfig
index b3fa9a701e..c23f336542 100644
--- a/src/.editorconfig
+++ b/src/.editorconfig
@@ -1,17 +1,6 @@
+# Remove the line below if you want to inherit .editorconfig settings from higher directories
root = true
-# All files
-[*]
-indent_style = space
-
-# Xml files
-[*.{xml,csproj,props,targets,ruleset,nuspec,resx}]
-indent_size = 2
-
-# Json files
-[*.{json,config,nswag}]
-indent_size = 2
-
# C# files
[*.cs]
@@ -19,115 +8,152 @@ indent_size = 2
# Indentation and spacing
indent_size = 4
+indent_style = space
tab_width = 4
# New line preferences
-end_of_line = lf
-insert_final_newline = true
+end_of_line = crlf
+insert_final_newline = false
+
+#### .NET Code Actions ####
+
+# Type members
+dotnet_hide_advanced_members = false
+dotnet_member_insertion_location = with_other_members_of_the_same_kind
+dotnet_property_generation_behavior = prefer_throwing_properties
+
+# Symbol search
+dotnet_search_reference_assemblies = true
#### .NET Coding Conventions ####
-[*.{cs,vb}]
# Organize usings
dotnet_separate_import_directive_groups = false
-dotnet_sort_system_directives_first = true
+dotnet_sort_system_directives_first = false
file_header_template = unset
# this. and Me. preferences
-dotnet_style_qualification_for_event = false:silent
-dotnet_style_qualification_for_field = false:silent
-dotnet_style_qualification_for_method = false:silent
-dotnet_style_qualification_for_property = false:silent
+dotnet_style_qualification_for_event = false
+dotnet_style_qualification_for_field = false
+dotnet_style_qualification_for_method = false
+dotnet_style_qualification_for_property = false
# Language keywords vs BCL types preferences
-dotnet_style_predefined_type_for_locals_parameters_members = true:silent
-dotnet_style_predefined_type_for_member_access = true:silent
+dotnet_style_predefined_type_for_locals_parameters_members = true
+dotnet_style_predefined_type_for_member_access = true
# Parentheses preferences
-dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
-dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
-dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
-dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
+dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary:suggestion
+dotnet_style_parentheses_in_other_binary_operators = never_if_unnecessary:suggestion
+dotnet_style_parentheses_in_other_operators = never_if_unnecessary:suggestion
+dotnet_style_parentheses_in_relational_binary_operators = never_if_unnecessary:suggestion
# Modifier preferences
-dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
+dotnet_style_require_accessibility_modifiers = for_non_interface_members
# Expression-level preferences
-dotnet_style_coalesce_expression = true:suggestion
-dotnet_style_collection_initializer = true:suggestion
-dotnet_style_explicit_tuple_names = true:suggestion
-dotnet_style_null_propagation = true:suggestion
-dotnet_style_object_initializer = true:suggestion
+dotnet_prefer_system_hash_code = true
+dotnet_style_coalesce_expression = true
+dotnet_style_collection_initializer = true
+dotnet_style_explicit_tuple_names = true
+dotnet_style_namespace_match_folder = true
+dotnet_style_null_propagation = true
+dotnet_style_object_initializer = true
dotnet_style_operator_placement_when_wrapping = beginning_of_line
dotnet_style_prefer_auto_properties = true:suggestion
-dotnet_style_prefer_compound_assignment = true:suggestion
+dotnet_style_prefer_collection_expression = when_types_loosely_match
+dotnet_style_prefer_compound_assignment = true:error
dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion
dotnet_style_prefer_conditional_expression_over_return = true:suggestion
-dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
-dotnet_style_prefer_inferred_tuple_names = true:suggestion
-dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
-dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
-dotnet_style_prefer_simplified_interpolation = true:suggestion
+dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed
+dotnet_style_prefer_inferred_anonymous_type_member_names = true
+dotnet_style_prefer_inferred_tuple_names = true
+dotnet_style_prefer_is_null_check_over_reference_equality_method = true
+dotnet_style_prefer_simplified_boolean_expressions = true
+dotnet_style_prefer_simplified_interpolation = true
# Field preferences
-dotnet_style_readonly_field = true:warning
+dotnet_style_readonly_field = true
# Parameter preferences
-dotnet_code_quality_unused_parameters = all:suggestion
+dotnet_code_quality_unused_parameters = all:error
# Suppression preferences
dotnet_remove_unnecessary_suppression_exclusions = none
+# New line preferences
+dotnet_style_allow_multiple_blank_lines_experimental = true
+dotnet_style_allow_statement_immediately_after_block_experimental = true
+
#### C# Coding Conventions ####
-[*.cs]
# var preferences
-csharp_style_var_elsewhere = false:silent
-csharp_style_var_for_built_in_types = false:silent
-csharp_style_var_when_type_is_apparent = false:silent
+csharp_style_var_elsewhere = false
+csharp_style_var_for_built_in_types = false
+csharp_style_var_when_type_is_apparent = false
# Expression-bodied members
csharp_style_expression_bodied_accessors = true:silent
csharp_style_expression_bodied_constructors = false:silent
csharp_style_expression_bodied_indexers = true:silent
-csharp_style_expression_bodied_lambdas = true:suggestion
-csharp_style_expression_bodied_local_functions = false:silent
+csharp_style_expression_bodied_lambdas = true:none
+csharp_style_expression_bodied_local_functions = true:error
csharp_style_expression_bodied_methods = false:silent
csharp_style_expression_bodied_operators = false:silent
csharp_style_expression_bodied_properties = true:silent
# Pattern matching preferences
-csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
-csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
-csharp_style_prefer_not_pattern = true:suggestion
-csharp_style_prefer_pattern_matching = true:silent
-csharp_style_prefer_switch_expression = true:suggestion
+csharp_style_pattern_matching_over_as_with_null_check = true
+csharp_style_pattern_matching_over_is_with_cast_check = true
+csharp_style_prefer_extended_property_pattern = true
+csharp_style_prefer_not_pattern = true
+csharp_style_prefer_pattern_matching = true
+csharp_style_prefer_switch_expression = true
# Null-checking preferences
-csharp_style_conditional_delegate_call = true:suggestion
+csharp_style_conditional_delegate_call = true
# Modifier preferences
-csharp_prefer_static_local_function = true:warning
-csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:silent
+csharp_prefer_static_anonymous_function = true
+csharp_prefer_static_local_function = true:error
+csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async
+csharp_style_prefer_readonly_struct = true
+csharp_style_prefer_readonly_struct_member = true
# Code-block preferences
csharp_prefer_braces = true:silent
csharp_prefer_simple_using_statement = true:suggestion
+csharp_prefer_system_threading_lock = true:suggestion
+csharp_style_namespace_declarations = file_scoped:silent
+csharp_style_prefer_method_group_conversion = true:silent
+csharp_style_prefer_primary_constructors = true:suggestion
+csharp_style_prefer_top_level_statements = true:silent
# Expression-level preferences
-csharp_prefer_simple_default_expression = true:suggestion
-csharp_style_deconstructed_variable_declaration = true:suggestion
-csharp_style_inlined_variable_declaration = true:suggestion
-csharp_style_pattern_local_over_anonymous_function = true:suggestion
-csharp_style_prefer_index_operator = true:suggestion
-csharp_style_prefer_range_operator = true:suggestion
-csharp_style_throw_expression = true:suggestion
-csharp_style_unused_value_assignment_preference = discard_variable:suggestion
-csharp_style_unused_value_expression_statement_preference = discard_variable:silent
+csharp_prefer_simple_default_expression = true
+csharp_style_deconstructed_variable_declaration = true
+csharp_style_implicit_object_creation_when_type_is_apparent = true
+csharp_style_inlined_variable_declaration = true
+csharp_style_prefer_index_operator = true:silent
+csharp_style_prefer_local_over_anonymous_function = true
+csharp_style_prefer_null_check_over_type_check = true
+csharp_style_prefer_range_operator = true:silent
+csharp_style_prefer_tuple_swap = true
+csharp_style_prefer_utf8_string_literals = true
+csharp_style_throw_expression = true
+csharp_style_unused_value_assignment_preference = discard_variable
+csharp_style_unused_value_expression_statement_preference = discard_variable
# 'using' directive preferences
csharp_using_directive_placement = outside_namespace:silent
+# New line preferences
+csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true
+csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true
+csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true
+csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true
+csharp_style_allow_embedded_statements_on_same_line_experimental = true
+
#### C# Formatting Rules ####
# New line preferences
@@ -174,224 +200,98 @@ csharp_space_between_square_brackets = false
# Wrapping preferences
csharp_preserve_single_line_blocks = true
csharp_preserve_single_line_statements = true
-csharp_style_namespace_declarations = file_scoped:silent
-csharp_style_prefer_method_group_conversion = true:silent
-csharp_style_prefer_top_level_statements = true:silent
-csharp_style_prefer_primary_constructors = true:suggestion
-csharp_style_prefer_null_check_over_type_check = true:suggestion
-csharp_style_prefer_local_over_anonymous_function = true:suggestion
-csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion
-csharp_style_prefer_tuple_swap = true:suggestion
-csharp_style_prefer_utf8_string_literals = true:suggestion
-dotnet_diagnostic.CA1032.severity = none
-dotnet_diagnostic.CA1812.severity = none
-dotnet_diagnostic.S6667.severity = none
#### Naming styles ####
-[*.{cs,vb}]
# Naming rules
-dotnet_naming_rule.types_and_namespaces_should_be_pascalcase.severity = suggestion
-dotnet_naming_rule.types_and_namespaces_should_be_pascalcase.symbols = types_and_namespaces
-dotnet_naming_rule.types_and_namespaces_should_be_pascalcase.style = pascalcase
-
-dotnet_naming_rule.interfaces_should_be_ipascalcase.severity = suggestion
-dotnet_naming_rule.interfaces_should_be_ipascalcase.symbols = interfaces
-dotnet_naming_rule.interfaces_should_be_ipascalcase.style = ipascalcase
-
-dotnet_naming_rule.type_parameters_should_be_tpascalcase.severity = suggestion
-dotnet_naming_rule.type_parameters_should_be_tpascalcase.symbols = type_parameters
-dotnet_naming_rule.type_parameters_should_be_tpascalcase.style = tpascalcase
-
-dotnet_naming_rule.methods_should_be_pascalcase.severity = suggestion
-dotnet_naming_rule.methods_should_be_pascalcase.symbols = methods
-dotnet_naming_rule.methods_should_be_pascalcase.style = pascalcase
-
-dotnet_naming_rule.properties_should_be_pascalcase.severity = suggestion
-dotnet_naming_rule.properties_should_be_pascalcase.symbols = properties
-dotnet_naming_rule.properties_should_be_pascalcase.style = pascalcase
-
-dotnet_naming_rule.events_should_be_pascalcase.severity = suggestion
-dotnet_naming_rule.events_should_be_pascalcase.symbols = events
-dotnet_naming_rule.events_should_be_pascalcase.style = pascalcase
-
-dotnet_naming_rule.local_variables_should_be_camelcase.severity = suggestion
-dotnet_naming_rule.local_variables_should_be_camelcase.symbols = local_variables
-dotnet_naming_rule.local_variables_should_be_camelcase.style = camelcase
-
-dotnet_naming_rule.local_constants_should_be_camelcase.severity = suggestion
-dotnet_naming_rule.local_constants_should_be_camelcase.symbols = local_constants
-dotnet_naming_rule.local_constants_should_be_camelcase.style = camelcase
-
-dotnet_naming_rule.parameters_should_be_camelcase.severity = suggestion
-dotnet_naming_rule.parameters_should_be_camelcase.symbols = parameters
-dotnet_naming_rule.parameters_should_be_camelcase.style = camelcase
-
-dotnet_naming_rule.public_fields_should_be_pascalcase.severity = suggestion
-dotnet_naming_rule.public_fields_should_be_pascalcase.symbols = public_fields
-dotnet_naming_rule.public_fields_should_be_pascalcase.style = pascalcase
+dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
+dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
+dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
-dotnet_naming_rule.private_fields_should_be__camelcase.severity = suggestion
-dotnet_naming_rule.private_fields_should_be__camelcase.symbols = private_fields
-dotnet_naming_rule.private_fields_should_be__camelcase.style = _camelcase
+dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
+dotnet_naming_rule.types_should_be_pascal_case.symbols = types
+dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
-dotnet_naming_rule.private_static_fields_should_be_s_camelcase.severity = suggestion
-dotnet_naming_rule.private_static_fields_should_be_s_camelcase.symbols = private_static_fields
-dotnet_naming_rule.private_static_fields_should_be_s_camelcase.style = s_camelcase
-
-dotnet_naming_rule.public_constant_fields_should_be_pascalcase.severity = suggestion
-dotnet_naming_rule.public_constant_fields_should_be_pascalcase.symbols = public_constant_fields
-dotnet_naming_rule.public_constant_fields_should_be_pascalcase.style = pascalcase
-
-dotnet_naming_rule.private_constant_fields_should_be_pascalcase.severity = suggestion
-dotnet_naming_rule.private_constant_fields_should_be_pascalcase.symbols = private_constant_fields
-dotnet_naming_rule.private_constant_fields_should_be_pascalcase.style = pascalcase
-
-dotnet_naming_rule.public_static_readonly_fields_should_be_pascalcase.severity = suggestion
-dotnet_naming_rule.public_static_readonly_fields_should_be_pascalcase.symbols = public_static_readonly_fields
-dotnet_naming_rule.public_static_readonly_fields_should_be_pascalcase.style = pascalcase
-
-dotnet_naming_rule.private_static_readonly_fields_should_be_pascalcase.severity = suggestion
-dotnet_naming_rule.private_static_readonly_fields_should_be_pascalcase.symbols = private_static_readonly_fields
-dotnet_naming_rule.private_static_readonly_fields_should_be_pascalcase.style = pascalcase
-
-dotnet_naming_rule.enums_should_be_pascalcase.severity = suggestion
-dotnet_naming_rule.enums_should_be_pascalcase.symbols = enums
-dotnet_naming_rule.enums_should_be_pascalcase.style = pascalcase
-
-dotnet_naming_rule.local_functions_should_be_pascalcase.severity = suggestion
-dotnet_naming_rule.local_functions_should_be_pascalcase.symbols = local_functions
-dotnet_naming_rule.local_functions_should_be_pascalcase.style = pascalcase
-
-dotnet_naming_rule.non_field_members_should_be_pascalcase.severity = suggestion
-dotnet_naming_rule.non_field_members_should_be_pascalcase.symbols = non_field_members
-dotnet_naming_rule.non_field_members_should_be_pascalcase.style = pascalcase
+dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
+dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
+dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
# Symbol specifications
-dotnet_naming_symbols.interfaces.applicable_kinds = interface
-dotnet_naming_symbols.interfaces.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.interfaces.required_modifiers =
-
-dotnet_naming_symbols.enums.applicable_kinds = enum
-dotnet_naming_symbols.enums.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.enums.required_modifiers =
-
-dotnet_naming_symbols.events.applicable_kinds = event
-dotnet_naming_symbols.events.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.events.required_modifiers =
-
-dotnet_naming_symbols.methods.applicable_kinds = method
-dotnet_naming_symbols.methods.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.methods.required_modifiers =
+dotnet_naming_symbols.interface.applicable_kinds = interface
+dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.interface.required_modifiers =
-dotnet_naming_symbols.properties.applicable_kinds = property
-dotnet_naming_symbols.properties.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.properties.required_modifiers =
-
-dotnet_naming_symbols.public_fields.applicable_kinds = field
-dotnet_naming_symbols.public_fields.applicable_accessibilities = public, internal
-dotnet_naming_symbols.public_fields.required_modifiers =
-
-dotnet_naming_symbols.private_fields.applicable_kinds = field
-dotnet_naming_symbols.private_fields.applicable_accessibilities = private, protected, protected_internal, private_protected
-dotnet_naming_symbols.private_fields.required_modifiers =
-
-dotnet_naming_symbols.private_static_fields.applicable_kinds = field
-dotnet_naming_symbols.private_static_fields.applicable_accessibilities = private, protected, protected_internal, private_protected
-dotnet_naming_symbols.private_static_fields.required_modifiers = static
-
-dotnet_naming_symbols.types_and_namespaces.applicable_kinds = namespace, class, struct, interface, enum
-dotnet_naming_symbols.types_and_namespaces.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.types_and_namespaces.required_modifiers =
+dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
+dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.types.required_modifiers =
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.required_modifiers =
-dotnet_naming_symbols.type_parameters.applicable_kinds = namespace
-dotnet_naming_symbols.type_parameters.applicable_accessibilities = *
-dotnet_naming_symbols.type_parameters.required_modifiers =
-
-dotnet_naming_symbols.private_constant_fields.applicable_kinds = field
-dotnet_naming_symbols.private_constant_fields.applicable_accessibilities = private, protected, protected_internal, private_protected
-dotnet_naming_symbols.private_constant_fields.required_modifiers = const
-
-dotnet_naming_symbols.local_variables.applicable_kinds = local
-dotnet_naming_symbols.local_variables.applicable_accessibilities = local
-dotnet_naming_symbols.local_variables.required_modifiers =
-
-dotnet_naming_symbols.local_constants.applicable_kinds = local
-dotnet_naming_symbols.local_constants.applicable_accessibilities = local
-dotnet_naming_symbols.local_constants.required_modifiers = const
+# Naming styles
-dotnet_naming_symbols.parameters.applicable_kinds = parameter
-dotnet_naming_symbols.parameters.applicable_accessibilities = *
-dotnet_naming_symbols.parameters.required_modifiers =
+dotnet_naming_style.pascal_case.required_prefix =
+dotnet_naming_style.pascal_case.required_suffix =
+dotnet_naming_style.pascal_case.word_separator =
+dotnet_naming_style.pascal_case.capitalization = pascal_case
-dotnet_naming_symbols.public_constant_fields.applicable_kinds = field
-dotnet_naming_symbols.public_constant_fields.applicable_accessibilities = public, internal
-dotnet_naming_symbols.public_constant_fields.required_modifiers = const
+dotnet_naming_style.begins_with_i.required_prefix = I
+dotnet_naming_style.begins_with_i.required_suffix =
+dotnet_naming_style.begins_with_i.word_separator =
+dotnet_naming_style.begins_with_i.capitalization = pascal_case
-dotnet_naming_symbols.public_static_readonly_fields.applicable_kinds = field
-dotnet_naming_symbols.public_static_readonly_fields.applicable_accessibilities = public, internal
-dotnet_naming_symbols.public_static_readonly_fields.required_modifiers = readonly, static
+# Static code analysis rule customizations
-dotnet_naming_symbols.private_static_readonly_fields.applicable_kinds = field
-dotnet_naming_symbols.private_static_readonly_fields.applicable_accessibilities = private, protected, protected_internal, private_protected
-dotnet_naming_symbols.private_static_readonly_fields.required_modifiers = readonly, static
+# CA2007: Consider calling ConfigureAwait on the awaited task
+dotnet_diagnostic.CA2007.severity = none
-dotnet_naming_symbols.local_functions.applicable_kinds = local_function
-dotnet_naming_symbols.local_functions.applicable_accessibilities = *
-dotnet_naming_symbols.local_functions.required_modifiers =
+# CA1515: Consider making public types internal
+dotnet_diagnostic.CA1515.severity = none
-# Naming styles
+# CA1724: Type name conflicts with namespace
+dotnet_diagnostic.CA1724.severity = none
-dotnet_naming_style.pascalcase.required_prefix =
-dotnet_naming_style.pascalcase.required_suffix =
-dotnet_naming_style.pascalcase.word_separator =
-dotnet_naming_style.pascalcase.capitalization = pascal_case
+# S2094: Classes should not be empty
+dotnet_diagnostic.S2094.severity = none
-dotnet_naming_style.ipascalcase.required_prefix = I
-dotnet_naming_style.ipascalcase.required_suffix =
-dotnet_naming_style.ipascalcase.word_separator =
-dotnet_naming_style.ipascalcase.capitalization = pascal_case
+# IDE0058: Expression value is never used
+dotnet_diagnostic.IDE0058.severity = none
-dotnet_naming_style.tpascalcase.required_prefix = T
-dotnet_naming_style.tpascalcase.required_suffix =
-dotnet_naming_style.tpascalcase.word_separator =
-dotnet_naming_style.tpascalcase.capitalization = pascal_case
+# IDE0005: Remove unnecessary usings/imports
+dotnet_diagnostic.IDE0005.severity = none
-dotnet_naming_style._camelcase.required_prefix = _
-dotnet_naming_style._camelcase.required_suffix =
-dotnet_naming_style._camelcase.word_separator =
-dotnet_naming_style._camelcase.capitalization = camel_case
+# CA1062: Validate arguments of public methods
+dotnet_diagnostic.CA1062.severity = none
-dotnet_naming_style.camelcase.required_prefix =
-dotnet_naming_style.camelcase.required_suffix =
-dotnet_naming_style.camelcase.word_separator =
-dotnet_naming_style.camelcase.capitalization = camel_case
+# S125: Remove commented out code
+dotnet_diagnostic.S125.severity = none
-dotnet_naming_style.s_camelcase.required_prefix = s_
-dotnet_naming_style.s_camelcase.required_suffix =
-dotnet_naming_style.s_camelcase.word_separator =
-dotnet_naming_style.s_camelcase.capitalization = camel_case
+# IDE0053: Use expression body for lambda expression
+dotnet_diagnostic.IDE0053.severity = none
-dotnet_style_namespace_match_folder = true:suggestion
+# IDE0130: Namespace should match project structure
+dotnet_diagnostic.IDE0130.severity = none
+dotnet_diagnostic.CA1032.severity = none
+dotnet_diagnostic.S2326.severity = none
-dotnet_diagnostic.CS1591.severity = none
-dotnet_diagnostic.CA1724.severity = none
-dotnet_diagnostic.CA1305.severity = none
-dotnet_diagnostic.CA1040.severity = none
-dotnet_diagnostic.CA1848.severity = none
-dotnet_diagnostic.CA1034.severity = none
+[*.{cs,vb}]
+dotnet_style_operator_placement_when_wrapping = beginning_of_line
tab_width = 4
indent_size = 4
-end_of_line = lf
+end_of_line = crlf
+dotnet_style_coalesce_expression = true:suggestion
+dotnet_style_null_propagation = true:suggestion
+dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
+dotnet_style_prefer_auto_properties = true:suggestion
+dotnet_style_object_initializer = true:suggestion
+dotnet_diagnostic.CA1034.severity = none
+dotnet_style_collection_initializer = true:suggestion
+dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
+dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion
+dotnet_style_prefer_conditional_expression_over_return = true:suggestion
dotnet_diagnostic.CA1711.severity = none
-dotnet_diagnostic.CA1716.severity = none
-dotnet_diagnostic.CA1062.severity = none
-dotnet_diagnostic.CA1031.severity = none
-dotnet_diagnostic.CA1861.severity = none
-dotnet_diagnostic.CA2007.severity = none
\ No newline at end of file
+dotnet_diagnostic.CA1040.severity = none
+dotnet_diagnostic.CA1707.severity = none
\ No newline at end of file
diff --git a/src/Core/Core.csproj b/src/Core/Core.csproj
new file mode 100644
index 0000000000..43569d6522
--- /dev/null
+++ b/src/Core/Core.csproj
@@ -0,0 +1,12 @@
+
+
+ FSH.Framework.Core
+ FSH.Framework.Core
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Core/Domain/Entities/AuditableEntity.cs b/src/Core/Domain/Entities/AuditableEntity.cs
new file mode 100644
index 0000000000..e520273c34
--- /dev/null
+++ b/src/Core/Domain/Entities/AuditableEntity.cs
@@ -0,0 +1,32 @@
+using FSH.Framework.Core.Domain.Interfaces;
+
+namespace FSH.Framework.Core.Domain.Entities;
+public abstract class AuditableEntity : Entity, IAuditable, ISoftDelete
+{
+ public string? CreatedBy { get; protected set; }
+ public DateTime CreatedOnUtc { get; protected set; }
+ public string? LastModifiedBy { get; protected set; }
+ public DateTime? LastModifiedOnUtc { get; protected set; }
+ public bool IsDeleted { get; protected set; }
+ public DateTime? DeletedOnUtc { get; protected set; }
+ public string? DeletedBy { get; protected set; }
+ public void SoftDelete(string? by, DateTime whenUtc)
+ {
+ if (IsDeleted) return;
+ IsDeleted = true;
+ DeletedBy = by;
+ DeletedOnUtc = whenUtc;
+ }
+ public void Restore()
+ {
+ if (!IsDeleted) return;
+ IsDeleted = false;
+ DeletedBy = null;
+ DeletedOnUtc = null;
+ }
+}
+
+public abstract class AuditableEntity : AuditableEntity
+{
+ protected AuditableEntity() => Id = Guid.NewGuid();
+}
\ No newline at end of file
diff --git a/src/Core/Domain/Entities/Entity.cs b/src/Core/Domain/Entities/Entity.cs
new file mode 100644
index 0000000000..31b71a9904
--- /dev/null
+++ b/src/Core/Domain/Entities/Entity.cs
@@ -0,0 +1,12 @@
+using FSH.Framework.Core.Domain.Interfaces;
+
+namespace FSH.Framework.Core.Domain.Entities;
+
+public abstract class Entity : IHasDomainEvents
+{
+ public TId Id { get; protected set; } = default!;
+ private readonly List _domainEvents = new();
+ public IReadOnlyCollection DomainEvents => _domainEvents.AsReadOnly();
+ protected void QueueDomainEvent(IDomainEvent @event) => _domainEvents.Add(@event);
+ public void ClearDomainEvents() => _domainEvents.Clear();
+}
\ No newline at end of file
diff --git a/src/Core/Domain/Interfaces/IAuditable.cs b/src/Core/Domain/Interfaces/IAuditable.cs
new file mode 100644
index 0000000000..c8b0748f2d
--- /dev/null
+++ b/src/Core/Domain/Interfaces/IAuditable.cs
@@ -0,0 +1,8 @@
+namespace FSH.Framework.Core.Domain.Interfaces;
+public interface IAuditable
+{
+ string? CreatedBy { get; }
+ DateTime CreatedOnUtc { get; }
+ string? LastModifiedBy { get; }
+ DateTime? LastModifiedOnUtc { get; }
+}
\ No newline at end of file
diff --git a/src/Core/Domain/Interfaces/IDomainEvent.cs b/src/Core/Domain/Interfaces/IDomainEvent.cs
new file mode 100644
index 0000000000..61ea72b346
--- /dev/null
+++ b/src/Core/Domain/Interfaces/IDomainEvent.cs
@@ -0,0 +1,5 @@
+namespace FSH.Framework.Core.Domain.Interfaces;
+public interface IDomainEvent
+{
+ DateTime OccurredOnUtc { get; }
+}
\ No newline at end of file
diff --git a/src/Core/Domain/Interfaces/IHasDomainEvents.cs b/src/Core/Domain/Interfaces/IHasDomainEvents.cs
new file mode 100644
index 0000000000..fae9cec771
--- /dev/null
+++ b/src/Core/Domain/Interfaces/IHasDomainEvents.cs
@@ -0,0 +1,7 @@
+namespace FSH.Framework.Core.Domain.Interfaces;
+
+public interface IHasDomainEvents
+{
+ IReadOnlyCollection DomainEvents { get; }
+ void ClearDomainEvents();
+}
\ No newline at end of file
diff --git a/src/Core/Domain/Interfaces/ISoftDelete.cs b/src/Core/Domain/Interfaces/ISoftDelete.cs
new file mode 100644
index 0000000000..6ecbe7464c
--- /dev/null
+++ b/src/Core/Domain/Interfaces/ISoftDelete.cs
@@ -0,0 +1,7 @@
+namespace FSH.Framework.Core.Domain.Interfaces;
+public interface ISoftDelete
+{
+ bool IsDeleted { get; }
+ DateTime? DeletedOnUtc { get; }
+ string? DeletedBy { get; }
+}
\ No newline at end of file
diff --git a/src/Core/Domain/Interfaces/ITenantOwned.cs b/src/Core/Domain/Interfaces/ITenantOwned.cs
new file mode 100644
index 0000000000..672dac31f9
--- /dev/null
+++ b/src/Core/Domain/Interfaces/ITenantOwned.cs
@@ -0,0 +1,6 @@
+namespace FSH.Framework.Core.Domain.Interfaces;
+
+public interface ITenantOwned
+{
+ string? TenantId { get; }
+}
\ No newline at end of file
diff --git a/src/api/framework/Core/Identity/Users/Abstractions/ICurrentUser.cs b/src/Core/Runtime/ICurrentUser.cs
similarity index 82%
rename from src/api/framework/Core/Identity/Users/Abstractions/ICurrentUser.cs
rename to src/Core/Runtime/ICurrentUser.cs
index aa5314b007..363df8f40d 100644
--- a/src/api/framework/Core/Identity/Users/Abstractions/ICurrentUser.cs
+++ b/src/Core/Runtime/ICurrentUser.cs
@@ -1,6 +1,6 @@
using System.Security.Claims;
-namespace FSH.Framework.Core.Identity.Users.Abstractions;
+namespace FSH.Framework.Core.ExecutionContext;
public interface ICurrentUser
{
string? Name { get; }
@@ -16,4 +16,4 @@ public interface ICurrentUser
bool IsInRole(string role);
IEnumerable? GetUserClaims();
-}
+}
\ No newline at end of file
diff --git a/src/api/framework/Core/Identity/Users/Abstractions/ICurrentUserInitializer.cs b/src/Core/Runtime/ICurrentUserInitializer.cs
similarity index 73%
rename from src/api/framework/Core/Identity/Users/Abstractions/ICurrentUserInitializer.cs
rename to src/Core/Runtime/ICurrentUserInitializer.cs
index 2342d75b8d..93bf622e69 100644
--- a/src/api/framework/Core/Identity/Users/Abstractions/ICurrentUserInitializer.cs
+++ b/src/Core/Runtime/ICurrentUserInitializer.cs
@@ -1,9 +1,9 @@
using System.Security.Claims;
-namespace FSH.Framework.Core.Identity.Users.Abstractions;
+namespace FSH.Framework.Core.ExecutionContext;
public interface ICurrentUserInitializer
{
void SetCurrentUser(ClaimsPrincipal user);
void SetCurrentUserId(string userId);
-}
+}
\ No newline at end of file
diff --git a/src/Core/Storage/FileType.cs b/src/Core/Storage/FileType.cs
new file mode 100644
index 0000000000..31d82817d7
--- /dev/null
+++ b/src/Core/Storage/FileType.cs
@@ -0,0 +1,24 @@
+namespace FSH.Framework.Core.Storage;
+public enum FileType
+{
+ Image,
+ Document,
+ Pdf
+}
+
+public class FileValidationRules
+{
+ public IReadOnlyList AllowedExtensions { get; init; } = Array.Empty();
+ public int MaxSizeInMB { get; init; } = 5;
+}
+
+public static class FileTypeMetadata
+{
+ public static FileValidationRules GetRules(FileType type) =>
+ type switch
+ {
+ FileType.Image => new() { AllowedExtensions = [".jpg", ".jpeg", ".png"], MaxSizeInMB = 5 },
+ FileType.Pdf => new() { AllowedExtensions = [".pdf"], MaxSizeInMB = 10 },
+ _ => throw new NotSupportedException($"Unsupported file type: {type}")
+ };
+}
\ No newline at end of file
diff --git a/src/Core/Storage/FileUploadRequest.cs b/src/Core/Storage/FileUploadRequest.cs
new file mode 100644
index 0000000000..6b7d529013
--- /dev/null
+++ b/src/Core/Storage/FileUploadRequest.cs
@@ -0,0 +1,7 @@
+namespace FSH.Framework.Core.Storage;
+public class FileUploadRequest
+{
+ public string FileName { get; init; } = default!;
+ public string ContentType { get; init; } = default!;
+ public IReadOnlyList Data { get; init; } = Array.Empty();
+}
\ No newline at end of file
diff --git a/src/Core/Storage/IStorageService.cs b/src/Core/Storage/IStorageService.cs
new file mode 100644
index 0000000000..ce166d4c4d
--- /dev/null
+++ b/src/Core/Storage/IStorageService.cs
@@ -0,0 +1,10 @@
+namespace FSH.Framework.Core.Storage;
+public interface IStorageService
+{
+ Task UploadAsync(
+ FileUploadRequest request,
+ FileType fileType,
+ CancellationToken cancellationToken = default) where T : class;
+
+ Task RemoveAsync(string path, CancellationToken cancellationToken = default);
+}
\ No newline at end of file
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index cf4b4bb3de..33780ee01b 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -1,18 +1,48 @@
-
- net9.0
- false
- false
- true
- true
- enable
- enable
- true
- latest
- All
- 2.0.4-rc;latest
-
-
-
-
-
\ No newline at end of file
+
+
+ net10.0
+
+
+ latest
+ enable
+ enable
+
+
+ true
+ true
+ true
+ latest
+ AllEnabledByDefault
+
+
+ true
+ 1591
+
+
+
+ 3.0.0-alpha;latest
+
+
+ true
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers
+
+
+
+
+
+ Mukesh Murugan
+ FullStackHero
+ 3.0.0
+ https://github.com/fullstackhero/dotnet-starter-kit
+ FSH;Modular;CQRS;VerticalSlice
+
+ true
+
+
diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props
index 7015fadbab..a9a9673d40 100644
--- a/src/Directory.Packages.props
+++ b/src/Directory.Packages.props
@@ -9,88 +9,13 @@
true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/src/Dockerfile.Blazor b/src/Dockerfile.Blazor
deleted file mode 100644
index 2438ffea64..0000000000
--- a/src/Dockerfile.Blazor
+++ /dev/null
@@ -1,13 +0,0 @@
-FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build-env
-WORKDIR /app
-
-COPY . ./
-RUN dotnet publish ./apps/blazor/client/Client.csproj -c Release -o output
-
-FROM nginx:alpine
-WORKDIR /usr/share/nginx/html
-COPY --from=build-env /app/output/wwwroot .
-
-COPY ./apps/blazor/nginx.conf /etc/nginx/nginx.conf
-
-EXPOSE 80
\ No newline at end of file
diff --git a/src/FSH.Framework.slnx b/src/FSH.Framework.slnx
new file mode 100644
index 0000000000..bd888462c7
--- /dev/null
+++ b/src/FSH.Framework.slnx
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/FSH.Starter.sln b/src/FSH.Starter.sln
deleted file mode 100644
index 904c59f770..0000000000
--- a/src/FSH.Starter.sln
+++ /dev/null
@@ -1,287 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.0.31903.59
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Modules", "Modules", "{F3DF5AC5-8CDC-46D4-969D-1245A6880215}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A32CEFB3-4E50-401E-8835-787534414F41}"
- ProjectSection(SolutionItems) = preProject
- .editorconfig = .editorconfig
- Directory.Build.props = Directory.Build.props
- Directory.Packages.props = Directory.Packages.props
- README.md = README.md
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Catalog", "Catalog", "{93324D12-DE1B-4C1B-934A-92AA140FF6F6}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Todo", "Todo", "{79981A5A-207A-4A16-A21B-5E80394082F6}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Framework", "_Framework", "{05248A38-0F34-4E59-A3D1-B07097987AFB}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Migrations", "Migrations", "{12F8343D-20A6-4E24-B0F5-3A66F2228CF6}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WebApi", "WebApi", "{CE64E92B-E088-46FB-9028-7FB6B67DEC55}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Blazor", "Blazor", "{2B1F75CE-07A6-4C19-A2E3-F9E062CFDDFB}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Infrastructure", "api\framework\Infrastructure\Infrastructure.csproj", "{294D6FF8-9379-4AB8-A203-8D0CC85FBFBB}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core", "api\framework\Core\Core.csproj", "{A1D828E4-6B83-4BA2-B8E9-B21CE3BE8A31}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Server", "api\server\Server.csproj", "{86BD3DF6-A3E9-4839-8036-813A20DC8AD6}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MSSQL", "api\migrations\MSSQL\MSSQL.csproj", "{ECCEA352-8953-49D6-8F87-8AB361499420}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PostgreSQL", "api\migrations\PostgreSQL\PostgreSQL.csproj", "{D64AD07C-A711-42D8-8653-EDCD7A825A44}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Todo", "api\modules\Todo\Todo.csproj", "{B3866EEF-8F46-4302-ABAC-A95EE2F27331}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Catalog.Application", "api\modules\Catalog\Catalog.Application\Catalog.Application.csproj", "{8C7DAF8E-F792-4092-8BBF-31A6B898B39A}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Catalog.Domain", "api\modules\Catalog\Catalog.Domain\Catalog.Domain.csproj", "{B15705B5-041C-4F1E-8342-AD03182EDD42}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Catalog.Infrastructure", "api\modules\Catalog\Catalog.Infrastructure\Catalog.Infrastructure.csproj", "{89FE1C3B-29D3-48A8-8E7D-90C261D266C5}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Client", "apps\blazor\client\Client.csproj", "{BCE4A428-8B97-4B56-AE45-496EE3906667}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Infrastructure", "apps\blazor\infrastructure\Infrastructure.csproj", "{27BEF279-AE73-43DC-92A9-FD7021A999D0}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Shared", "apps\blazor\shared\Shared.csproj", "{34359707-CE66-4DF0-9EF4-D7544B615564}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Aspire", "Aspire", "{D36E77BC-4568-4BC8-9506-1EFB7B1CD335}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ServiceDefaults", "aspire\service-defaults\ServiceDefaults.csproj", "{990CA37A-86D3-4FE6-B777-3CF0DDAC6BF6}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Host", "aspire\host\Host.csproj", "{2119CE89-308D-4932-BFCE-8CDC0A05EB9E}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared", "Shared\Shared.csproj", "{49AA63BF-3DBA-4490-9470-5AE0EB7F49F0}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{FE1B1E84-F993-4840-9CAB-9082EB523FDD}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Auth", "Auth", "{F17769D7-0E41-4E80-BDD4-282EBE7B5199}"
- ProjectSection(SolutionItems) = preProject
- GetToken.http = GetToken.http
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|Any CPU = Release|Any CPU
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {294D6FF8-9379-4AB8-A203-8D0CC85FBFBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {294D6FF8-9379-4AB8-A203-8D0CC85FBFBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {294D6FF8-9379-4AB8-A203-8D0CC85FBFBB}.Debug|x64.ActiveCfg = Debug|Any CPU
- {294D6FF8-9379-4AB8-A203-8D0CC85FBFBB}.Debug|x64.Build.0 = Debug|Any CPU
- {294D6FF8-9379-4AB8-A203-8D0CC85FBFBB}.Debug|x86.ActiveCfg = Debug|Any CPU
- {294D6FF8-9379-4AB8-A203-8D0CC85FBFBB}.Debug|x86.Build.0 = Debug|Any CPU
- {294D6FF8-9379-4AB8-A203-8D0CC85FBFBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {294D6FF8-9379-4AB8-A203-8D0CC85FBFBB}.Release|Any CPU.Build.0 = Release|Any CPU
- {294D6FF8-9379-4AB8-A203-8D0CC85FBFBB}.Release|x64.ActiveCfg = Release|Any CPU
- {294D6FF8-9379-4AB8-A203-8D0CC85FBFBB}.Release|x64.Build.0 = Release|Any CPU
- {294D6FF8-9379-4AB8-A203-8D0CC85FBFBB}.Release|x86.ActiveCfg = Release|Any CPU
- {294D6FF8-9379-4AB8-A203-8D0CC85FBFBB}.Release|x86.Build.0 = Release|Any CPU
- {A1D828E4-6B83-4BA2-B8E9-B21CE3BE8A31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A1D828E4-6B83-4BA2-B8E9-B21CE3BE8A31}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A1D828E4-6B83-4BA2-B8E9-B21CE3BE8A31}.Debug|x64.ActiveCfg = Debug|Any CPU
- {A1D828E4-6B83-4BA2-B8E9-B21CE3BE8A31}.Debug|x64.Build.0 = Debug|Any CPU
- {A1D828E4-6B83-4BA2-B8E9-B21CE3BE8A31}.Debug|x86.ActiveCfg = Debug|Any CPU
- {A1D828E4-6B83-4BA2-B8E9-B21CE3BE8A31}.Debug|x86.Build.0 = Debug|Any CPU
- {A1D828E4-6B83-4BA2-B8E9-B21CE3BE8A31}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A1D828E4-6B83-4BA2-B8E9-B21CE3BE8A31}.Release|Any CPU.Build.0 = Release|Any CPU
- {A1D828E4-6B83-4BA2-B8E9-B21CE3BE8A31}.Release|x64.ActiveCfg = Release|Any CPU
- {A1D828E4-6B83-4BA2-B8E9-B21CE3BE8A31}.Release|x64.Build.0 = Release|Any CPU
- {A1D828E4-6B83-4BA2-B8E9-B21CE3BE8A31}.Release|x86.ActiveCfg = Release|Any CPU
- {A1D828E4-6B83-4BA2-B8E9-B21CE3BE8A31}.Release|x86.Build.0 = Release|Any CPU
- {86BD3DF6-A3E9-4839-8036-813A20DC8AD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {86BD3DF6-A3E9-4839-8036-813A20DC8AD6}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {86BD3DF6-A3E9-4839-8036-813A20DC8AD6}.Debug|x64.ActiveCfg = Debug|Any CPU
- {86BD3DF6-A3E9-4839-8036-813A20DC8AD6}.Debug|x64.Build.0 = Debug|Any CPU
- {86BD3DF6-A3E9-4839-8036-813A20DC8AD6}.Debug|x86.ActiveCfg = Debug|Any CPU
- {86BD3DF6-A3E9-4839-8036-813A20DC8AD6}.Debug|x86.Build.0 = Debug|Any CPU
- {86BD3DF6-A3E9-4839-8036-813A20DC8AD6}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {86BD3DF6-A3E9-4839-8036-813A20DC8AD6}.Release|Any CPU.Build.0 = Release|Any CPU
- {86BD3DF6-A3E9-4839-8036-813A20DC8AD6}.Release|x64.ActiveCfg = Release|Any CPU
- {86BD3DF6-A3E9-4839-8036-813A20DC8AD6}.Release|x64.Build.0 = Release|Any CPU
- {86BD3DF6-A3E9-4839-8036-813A20DC8AD6}.Release|x86.ActiveCfg = Release|Any CPU
- {86BD3DF6-A3E9-4839-8036-813A20DC8AD6}.Release|x86.Build.0 = Release|Any CPU
- {ECCEA352-8953-49D6-8F87-8AB361499420}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {ECCEA352-8953-49D6-8F87-8AB361499420}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {ECCEA352-8953-49D6-8F87-8AB361499420}.Debug|x64.ActiveCfg = Debug|Any CPU
- {ECCEA352-8953-49D6-8F87-8AB361499420}.Debug|x64.Build.0 = Debug|Any CPU
- {ECCEA352-8953-49D6-8F87-8AB361499420}.Debug|x86.ActiveCfg = Debug|Any CPU
- {ECCEA352-8953-49D6-8F87-8AB361499420}.Debug|x86.Build.0 = Debug|Any CPU
- {ECCEA352-8953-49D6-8F87-8AB361499420}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {ECCEA352-8953-49D6-8F87-8AB361499420}.Release|Any CPU.Build.0 = Release|Any CPU
- {ECCEA352-8953-49D6-8F87-8AB361499420}.Release|x64.ActiveCfg = Release|Any CPU
- {ECCEA352-8953-49D6-8F87-8AB361499420}.Release|x64.Build.0 = Release|Any CPU
- {ECCEA352-8953-49D6-8F87-8AB361499420}.Release|x86.ActiveCfg = Release|Any CPU
- {ECCEA352-8953-49D6-8F87-8AB361499420}.Release|x86.Build.0 = Release|Any CPU
- {D64AD07C-A711-42D8-8653-EDCD7A825A44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {D64AD07C-A711-42D8-8653-EDCD7A825A44}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D64AD07C-A711-42D8-8653-EDCD7A825A44}.Debug|x64.ActiveCfg = Debug|Any CPU
- {D64AD07C-A711-42D8-8653-EDCD7A825A44}.Debug|x64.Build.0 = Debug|Any CPU
- {D64AD07C-A711-42D8-8653-EDCD7A825A44}.Debug|x86.ActiveCfg = Debug|Any CPU
- {D64AD07C-A711-42D8-8653-EDCD7A825A44}.Debug|x86.Build.0 = Debug|Any CPU
- {D64AD07C-A711-42D8-8653-EDCD7A825A44}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {D64AD07C-A711-42D8-8653-EDCD7A825A44}.Release|Any CPU.Build.0 = Release|Any CPU
- {D64AD07C-A711-42D8-8653-EDCD7A825A44}.Release|x64.ActiveCfg = Release|Any CPU
- {D64AD07C-A711-42D8-8653-EDCD7A825A44}.Release|x64.Build.0 = Release|Any CPU
- {D64AD07C-A711-42D8-8653-EDCD7A825A44}.Release|x86.ActiveCfg = Release|Any CPU
- {D64AD07C-A711-42D8-8653-EDCD7A825A44}.Release|x86.Build.0 = Release|Any CPU
- {B3866EEF-8F46-4302-ABAC-A95EE2F27331}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B3866EEF-8F46-4302-ABAC-A95EE2F27331}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B3866EEF-8F46-4302-ABAC-A95EE2F27331}.Debug|x64.ActiveCfg = Debug|Any CPU
- {B3866EEF-8F46-4302-ABAC-A95EE2F27331}.Debug|x64.Build.0 = Debug|Any CPU
- {B3866EEF-8F46-4302-ABAC-A95EE2F27331}.Debug|x86.ActiveCfg = Debug|Any CPU
- {B3866EEF-8F46-4302-ABAC-A95EE2F27331}.Debug|x86.Build.0 = Debug|Any CPU
- {B3866EEF-8F46-4302-ABAC-A95EE2F27331}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B3866EEF-8F46-4302-ABAC-A95EE2F27331}.Release|Any CPU.Build.0 = Release|Any CPU
- {B3866EEF-8F46-4302-ABAC-A95EE2F27331}.Release|x64.ActiveCfg = Release|Any CPU
- {B3866EEF-8F46-4302-ABAC-A95EE2F27331}.Release|x64.Build.0 = Release|Any CPU
- {B3866EEF-8F46-4302-ABAC-A95EE2F27331}.Release|x86.ActiveCfg = Release|Any CPU
- {B3866EEF-8F46-4302-ABAC-A95EE2F27331}.Release|x86.Build.0 = Release|Any CPU
- {8C7DAF8E-F792-4092-8BBF-31A6B898B39A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {8C7DAF8E-F792-4092-8BBF-31A6B898B39A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {8C7DAF8E-F792-4092-8BBF-31A6B898B39A}.Debug|x64.ActiveCfg = Debug|Any CPU
- {8C7DAF8E-F792-4092-8BBF-31A6B898B39A}.Debug|x64.Build.0 = Debug|Any CPU
- {8C7DAF8E-F792-4092-8BBF-31A6B898B39A}.Debug|x86.ActiveCfg = Debug|Any CPU
- {8C7DAF8E-F792-4092-8BBF-31A6B898B39A}.Debug|x86.Build.0 = Debug|Any CPU
- {8C7DAF8E-F792-4092-8BBF-31A6B898B39A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {8C7DAF8E-F792-4092-8BBF-31A6B898B39A}.Release|Any CPU.Build.0 = Release|Any CPU
- {8C7DAF8E-F792-4092-8BBF-31A6B898B39A}.Release|x64.ActiveCfg = Release|Any CPU
- {8C7DAF8E-F792-4092-8BBF-31A6B898B39A}.Release|x64.Build.0 = Release|Any CPU
- {8C7DAF8E-F792-4092-8BBF-31A6B898B39A}.Release|x86.ActiveCfg = Release|Any CPU
- {8C7DAF8E-F792-4092-8BBF-31A6B898B39A}.Release|x86.Build.0 = Release|Any CPU
- {B15705B5-041C-4F1E-8342-AD03182EDD42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B15705B5-041C-4F1E-8342-AD03182EDD42}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B15705B5-041C-4F1E-8342-AD03182EDD42}.Debug|x64.ActiveCfg = Debug|Any CPU
- {B15705B5-041C-4F1E-8342-AD03182EDD42}.Debug|x64.Build.0 = Debug|Any CPU
- {B15705B5-041C-4F1E-8342-AD03182EDD42}.Debug|x86.ActiveCfg = Debug|Any CPU
- {B15705B5-041C-4F1E-8342-AD03182EDD42}.Debug|x86.Build.0 = Debug|Any CPU
- {B15705B5-041C-4F1E-8342-AD03182EDD42}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B15705B5-041C-4F1E-8342-AD03182EDD42}.Release|Any CPU.Build.0 = Release|Any CPU
- {B15705B5-041C-4F1E-8342-AD03182EDD42}.Release|x64.ActiveCfg = Release|Any CPU
- {B15705B5-041C-4F1E-8342-AD03182EDD42}.Release|x64.Build.0 = Release|Any CPU
- {B15705B5-041C-4F1E-8342-AD03182EDD42}.Release|x86.ActiveCfg = Release|Any CPU
- {B15705B5-041C-4F1E-8342-AD03182EDD42}.Release|x86.Build.0 = Release|Any CPU
- {89FE1C3B-29D3-48A8-8E7D-90C261D266C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {89FE1C3B-29D3-48A8-8E7D-90C261D266C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {89FE1C3B-29D3-48A8-8E7D-90C261D266C5}.Debug|x64.ActiveCfg = Debug|Any CPU
- {89FE1C3B-29D3-48A8-8E7D-90C261D266C5}.Debug|x64.Build.0 = Debug|Any CPU
- {89FE1C3B-29D3-48A8-8E7D-90C261D266C5}.Debug|x86.ActiveCfg = Debug|Any CPU
- {89FE1C3B-29D3-48A8-8E7D-90C261D266C5}.Debug|x86.Build.0 = Debug|Any CPU
- {89FE1C3B-29D3-48A8-8E7D-90C261D266C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {89FE1C3B-29D3-48A8-8E7D-90C261D266C5}.Release|Any CPU.Build.0 = Release|Any CPU
- {89FE1C3B-29D3-48A8-8E7D-90C261D266C5}.Release|x64.ActiveCfg = Release|Any CPU
- {89FE1C3B-29D3-48A8-8E7D-90C261D266C5}.Release|x64.Build.0 = Release|Any CPU
- {89FE1C3B-29D3-48A8-8E7D-90C261D266C5}.Release|x86.ActiveCfg = Release|Any CPU
- {89FE1C3B-29D3-48A8-8E7D-90C261D266C5}.Release|x86.Build.0 = Release|Any CPU
- {BCE4A428-8B97-4B56-AE45-496EE3906667}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {BCE4A428-8B97-4B56-AE45-496EE3906667}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {BCE4A428-8B97-4B56-AE45-496EE3906667}.Debug|x64.ActiveCfg = Debug|Any CPU
- {BCE4A428-8B97-4B56-AE45-496EE3906667}.Debug|x64.Build.0 = Debug|Any CPU
- {BCE4A428-8B97-4B56-AE45-496EE3906667}.Debug|x86.ActiveCfg = Debug|Any CPU
- {BCE4A428-8B97-4B56-AE45-496EE3906667}.Debug|x86.Build.0 = Debug|Any CPU
- {BCE4A428-8B97-4B56-AE45-496EE3906667}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {BCE4A428-8B97-4B56-AE45-496EE3906667}.Release|Any CPU.Build.0 = Release|Any CPU
- {BCE4A428-8B97-4B56-AE45-496EE3906667}.Release|x64.ActiveCfg = Release|Any CPU
- {BCE4A428-8B97-4B56-AE45-496EE3906667}.Release|x64.Build.0 = Release|Any CPU
- {BCE4A428-8B97-4B56-AE45-496EE3906667}.Release|x86.ActiveCfg = Release|Any CPU
- {BCE4A428-8B97-4B56-AE45-496EE3906667}.Release|x86.Build.0 = Release|Any CPU
- {27BEF279-AE73-43DC-92A9-FD7021A999D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {27BEF279-AE73-43DC-92A9-FD7021A999D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {27BEF279-AE73-43DC-92A9-FD7021A999D0}.Debug|x64.ActiveCfg = Debug|Any CPU
- {27BEF279-AE73-43DC-92A9-FD7021A999D0}.Debug|x64.Build.0 = Debug|Any CPU
- {27BEF279-AE73-43DC-92A9-FD7021A999D0}.Debug|x86.ActiveCfg = Debug|Any CPU
- {27BEF279-AE73-43DC-92A9-FD7021A999D0}.Debug|x86.Build.0 = Debug|Any CPU
- {27BEF279-AE73-43DC-92A9-FD7021A999D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {27BEF279-AE73-43DC-92A9-FD7021A999D0}.Release|Any CPU.Build.0 = Release|Any CPU
- {27BEF279-AE73-43DC-92A9-FD7021A999D0}.Release|x64.ActiveCfg = Release|Any CPU
- {27BEF279-AE73-43DC-92A9-FD7021A999D0}.Release|x64.Build.0 = Release|Any CPU
- {27BEF279-AE73-43DC-92A9-FD7021A999D0}.Release|x86.ActiveCfg = Release|Any CPU
- {27BEF279-AE73-43DC-92A9-FD7021A999D0}.Release|x86.Build.0 = Release|Any CPU
- {34359707-CE66-4DF0-9EF4-D7544B615564}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {34359707-CE66-4DF0-9EF4-D7544B615564}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {34359707-CE66-4DF0-9EF4-D7544B615564}.Debug|x64.ActiveCfg = Debug|Any CPU
- {34359707-CE66-4DF0-9EF4-D7544B615564}.Debug|x64.Build.0 = Debug|Any CPU
- {34359707-CE66-4DF0-9EF4-D7544B615564}.Debug|x86.ActiveCfg = Debug|Any CPU
- {34359707-CE66-4DF0-9EF4-D7544B615564}.Debug|x86.Build.0 = Debug|Any CPU
- {34359707-CE66-4DF0-9EF4-D7544B615564}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {34359707-CE66-4DF0-9EF4-D7544B615564}.Release|Any CPU.Build.0 = Release|Any CPU
- {34359707-CE66-4DF0-9EF4-D7544B615564}.Release|x64.ActiveCfg = Release|Any CPU
- {34359707-CE66-4DF0-9EF4-D7544B615564}.Release|x64.Build.0 = Release|Any CPU
- {34359707-CE66-4DF0-9EF4-D7544B615564}.Release|x86.ActiveCfg = Release|Any CPU
- {34359707-CE66-4DF0-9EF4-D7544B615564}.Release|x86.Build.0 = Release|Any CPU
- {990CA37A-86D3-4FE6-B777-3CF0DDAC6BF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {990CA37A-86D3-4FE6-B777-3CF0DDAC6BF6}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {990CA37A-86D3-4FE6-B777-3CF0DDAC6BF6}.Debug|x64.ActiveCfg = Debug|Any CPU
- {990CA37A-86D3-4FE6-B777-3CF0DDAC6BF6}.Debug|x64.Build.0 = Debug|Any CPU
- {990CA37A-86D3-4FE6-B777-3CF0DDAC6BF6}.Debug|x86.ActiveCfg = Debug|Any CPU
- {990CA37A-86D3-4FE6-B777-3CF0DDAC6BF6}.Debug|x86.Build.0 = Debug|Any CPU
- {990CA37A-86D3-4FE6-B777-3CF0DDAC6BF6}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {990CA37A-86D3-4FE6-B777-3CF0DDAC6BF6}.Release|Any CPU.Build.0 = Release|Any CPU
- {990CA37A-86D3-4FE6-B777-3CF0DDAC6BF6}.Release|x64.ActiveCfg = Release|Any CPU
- {990CA37A-86D3-4FE6-B777-3CF0DDAC6BF6}.Release|x64.Build.0 = Release|Any CPU
- {990CA37A-86D3-4FE6-B777-3CF0DDAC6BF6}.Release|x86.ActiveCfg = Release|Any CPU
- {990CA37A-86D3-4FE6-B777-3CF0DDAC6BF6}.Release|x86.Build.0 = Release|Any CPU
- {2119CE89-308D-4932-BFCE-8CDC0A05EB9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {2119CE89-308D-4932-BFCE-8CDC0A05EB9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {2119CE89-308D-4932-BFCE-8CDC0A05EB9E}.Debug|x64.ActiveCfg = Debug|Any CPU
- {2119CE89-308D-4932-BFCE-8CDC0A05EB9E}.Debug|x64.Build.0 = Debug|Any CPU
- {2119CE89-308D-4932-BFCE-8CDC0A05EB9E}.Debug|x86.ActiveCfg = Debug|Any CPU
- {2119CE89-308D-4932-BFCE-8CDC0A05EB9E}.Debug|x86.Build.0 = Debug|Any CPU
- {2119CE89-308D-4932-BFCE-8CDC0A05EB9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {2119CE89-308D-4932-BFCE-8CDC0A05EB9E}.Release|Any CPU.Build.0 = Release|Any CPU
- {2119CE89-308D-4932-BFCE-8CDC0A05EB9E}.Release|x64.ActiveCfg = Release|Any CPU
- {2119CE89-308D-4932-BFCE-8CDC0A05EB9E}.Release|x64.Build.0 = Release|Any CPU
- {2119CE89-308D-4932-BFCE-8CDC0A05EB9E}.Release|x86.ActiveCfg = Release|Any CPU
- {2119CE89-308D-4932-BFCE-8CDC0A05EB9E}.Release|x86.Build.0 = Release|Any CPU
- {49AA63BF-3DBA-4490-9470-5AE0EB7F49F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {49AA63BF-3DBA-4490-9470-5AE0EB7F49F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {49AA63BF-3DBA-4490-9470-5AE0EB7F49F0}.Debug|x64.ActiveCfg = Debug|Any CPU
- {49AA63BF-3DBA-4490-9470-5AE0EB7F49F0}.Debug|x64.Build.0 = Debug|Any CPU
- {49AA63BF-3DBA-4490-9470-5AE0EB7F49F0}.Debug|x86.ActiveCfg = Debug|Any CPU
- {49AA63BF-3DBA-4490-9470-5AE0EB7F49F0}.Debug|x86.Build.0 = Debug|Any CPU
- {49AA63BF-3DBA-4490-9470-5AE0EB7F49F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {49AA63BF-3DBA-4490-9470-5AE0EB7F49F0}.Release|Any CPU.Build.0 = Release|Any CPU
- {49AA63BF-3DBA-4490-9470-5AE0EB7F49F0}.Release|x64.ActiveCfg = Release|Any CPU
- {49AA63BF-3DBA-4490-9470-5AE0EB7F49F0}.Release|x64.Build.0 = Release|Any CPU
- {49AA63BF-3DBA-4490-9470-5AE0EB7F49F0}.Release|x86.ActiveCfg = Release|Any CPU
- {49AA63BF-3DBA-4490-9470-5AE0EB7F49F0}.Release|x86.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {F3DF5AC5-8CDC-46D4-969D-1245A6880215} = {CE64E92B-E088-46FB-9028-7FB6B67DEC55}
- {93324D12-DE1B-4C1B-934A-92AA140FF6F6} = {F3DF5AC5-8CDC-46D4-969D-1245A6880215}
- {79981A5A-207A-4A16-A21B-5E80394082F6} = {F3DF5AC5-8CDC-46D4-969D-1245A6880215}
- {05248A38-0F34-4E59-A3D1-B07097987AFB} = {CE64E92B-E088-46FB-9028-7FB6B67DEC55}
- {12F8343D-20A6-4E24-B0F5-3A66F2228CF6} = {CE64E92B-E088-46FB-9028-7FB6B67DEC55}
- {294D6FF8-9379-4AB8-A203-8D0CC85FBFBB} = {05248A38-0F34-4E59-A3D1-B07097987AFB}
- {A1D828E4-6B83-4BA2-B8E9-B21CE3BE8A31} = {05248A38-0F34-4E59-A3D1-B07097987AFB}
- {86BD3DF6-A3E9-4839-8036-813A20DC8AD6} = {CE64E92B-E088-46FB-9028-7FB6B67DEC55}
- {ECCEA352-8953-49D6-8F87-8AB361499420} = {12F8343D-20A6-4E24-B0F5-3A66F2228CF6}
- {D64AD07C-A711-42D8-8653-EDCD7A825A44} = {12F8343D-20A6-4E24-B0F5-3A66F2228CF6}
- {B3866EEF-8F46-4302-ABAC-A95EE2F27331} = {79981A5A-207A-4A16-A21B-5E80394082F6}
- {8C7DAF8E-F792-4092-8BBF-31A6B898B39A} = {93324D12-DE1B-4C1B-934A-92AA140FF6F6}
- {B15705B5-041C-4F1E-8342-AD03182EDD42} = {93324D12-DE1B-4C1B-934A-92AA140FF6F6}
- {89FE1C3B-29D3-48A8-8E7D-90C261D266C5} = {93324D12-DE1B-4C1B-934A-92AA140FF6F6}
- {BCE4A428-8B97-4B56-AE45-496EE3906667} = {2B1F75CE-07A6-4C19-A2E3-F9E062CFDDFB}
- {27BEF279-AE73-43DC-92A9-FD7021A999D0} = {2B1F75CE-07A6-4C19-A2E3-F9E062CFDDFB}
- {34359707-CE66-4DF0-9EF4-D7544B615564} = {2B1F75CE-07A6-4C19-A2E3-F9E062CFDDFB}
- {990CA37A-86D3-4FE6-B777-3CF0DDAC6BF6} = {D36E77BC-4568-4BC8-9506-1EFB7B1CD335}
- {2119CE89-308D-4932-BFCE-8CDC0A05EB9E} = {D36E77BC-4568-4BC8-9506-1EFB7B1CD335}
- {FE1B1E84-F993-4840-9CAB-9082EB523FDD} = {CE64E92B-E088-46FB-9028-7FB6B67DEC55}
- {F17769D7-0E41-4E80-BDD4-282EBE7B5199} = {FE1B1E84-F993-4840-9CAB-9082EB523FDD}
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {EA8248C2-3877-4AF7-8777-A17E7881E030}
- EndGlobalSection
-EndGlobal
diff --git a/src/GetToken.http b/src/GetToken.http
deleted file mode 100644
index 0de6481c71..0000000000
--- a/src/GetToken.http
+++ /dev/null
@@ -1,10 +0,0 @@
-@Host = https://localhost:7000
-
-POST {{Host}}/api/token/
-Accept: application/json
-Content-Type: application/json
-tenant: root
-{
- "email":"admin@root.com",
- "password":"123Pa$$word!"
-}
diff --git a/src/Infrastructure/Infrastructure.csproj b/src/Infrastructure/Infrastructure.csproj
new file mode 100644
index 0000000000..3da9a12c1b
--- /dev/null
+++ b/src/Infrastructure/Infrastructure.csproj
@@ -0,0 +1,21 @@
+
+
+ FSH.Framework.Infrastructure
+ FSH.Framework.Infrastructure
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Infrastructure/Mediator/Extensions.cs b/src/Infrastructure/Mediator/Extensions.cs
new file mode 100644
index 0000000000..65bb8343eb
--- /dev/null
+++ b/src/Infrastructure/Mediator/Extensions.cs
@@ -0,0 +1,31 @@
+using FSH.Framework.Infrastructure.Mediator.Validation;
+using Microsoft.Extensions.DependencyInjection;
+using System.Reflection;
+
+namespace FSH.Framework.Infrastructure.Mediator;
+public static class Extensions
+{
+ public static IServiceCollection AddMediator(this IServiceCollection services, params Assembly[] assemblies)
+ {
+ ArgumentNullException.ThrowIfNull(services);
+
+ services.AddScoped();
+ RegisterHandlers(services, assemblies);
+ services.Decorate();
+
+ return services;
+ }
+
+ internal static void RegisterHandlers(IServiceCollection services, Assembly[] assemblies)
+ {
+ // Deduplicate Assemblies
+ var distinctAssemblies = assemblies.Distinct().ToArray();
+
+ // Scan for handlers in provided assemblies
+ services.Scan(scan => scan
+ .FromAssemblies(distinctAssemblies)
+ .AddClasses(c => c.AssignableTo(typeof(IRequestHandler<,>)))
+ .AsImplementedInterfaces()
+ .WithScopedLifetime());
+ }
+}
\ No newline at end of file
diff --git a/src/Infrastructure/Mediator/IMediator.cs b/src/Infrastructure/Mediator/IMediator.cs
new file mode 100644
index 0000000000..83c05fd8f8
--- /dev/null
+++ b/src/Infrastructure/Mediator/IMediator.cs
@@ -0,0 +1,7 @@
+namespace FSH.Framework.Infrastructure.Mediator;
+
+public interface IMediator
+{
+ Task SendAsync(IRequest request, CancellationToken cancellationToken = default);
+ Task SendAsync(IRequest request, CancellationToken cancellationToken = default);
+}
diff --git a/src/Infrastructure/Mediator/IRequest.cs b/src/Infrastructure/Mediator/IRequest.cs
new file mode 100644
index 0000000000..54dc1106a8
--- /dev/null
+++ b/src/Infrastructure/Mediator/IRequest.cs
@@ -0,0 +1,9 @@
+namespace FSH.Framework.Infrastructure.Mediator;
+
+public interface IRequest
+{
+}
+
+public interface IRequest
+{
+}
\ No newline at end of file
diff --git a/src/Infrastructure/Mediator/IRequestHandler.cs b/src/Infrastructure/Mediator/IRequestHandler.cs
new file mode 100644
index 0000000000..d77c56e5f2
--- /dev/null
+++ b/src/Infrastructure/Mediator/IRequestHandler.cs
@@ -0,0 +1,10 @@
+namespace FSH.Framework.Infrastructure.Mediator;
+public interface IRequestHandler where TRequest : IRequest
+{
+ Task HandleAsync(TRequest request, CancellationToken cancellationToken);
+}
+
+public interface IRequestHandler where TRequest : IRequest
+{
+ Task HandleAsync(TRequest request, CancellationToken cancellationToken);
+}
\ No newline at end of file
diff --git a/src/Infrastructure/Mediator/Mediator.cs b/src/Infrastructure/Mediator/Mediator.cs
new file mode 100644
index 0000000000..fc3b7679e1
--- /dev/null
+++ b/src/Infrastructure/Mediator/Mediator.cs
@@ -0,0 +1,56 @@
+namespace FSH.Framework.Infrastructure.Mediator;
+
+public class Mediator : IMediator
+{
+ private readonly IServiceProvider _serviceProvider;
+
+ public Mediator(IServiceProvider serviceProvider)
+ {
+ _serviceProvider = serviceProvider;
+ }
+
+ public async Task SendAsync(IRequest request, CancellationToken cancellationToken = default)
+ {
+ var requestType = request.GetType();
+ var responseType = typeof(TResponse);
+ var handlerType = typeof(IRequestHandler<,>).MakeGenericType(requestType, responseType);
+
+ var handler = _serviceProvider.GetService(handlerType);
+ if (handler == null)
+ {
+ throw new InvalidOperationException($"No handler registered for {requestType.Name}");
+ }
+
+ var method = handlerType.GetMethod(nameof(IRequestHandler, TResponse>.HandleAsync));
+ if (method == null)
+ {
+ throw new InvalidOperationException($"HandleAsync method not found on {handlerType.Name}");
+ }
+
+ var result = await (Task)method.Invoke(handler, new object[] { request, cancellationToken })!;
+ return result;
+ }
+
+ public async Task SendAsync(IRequest request, CancellationToken cancellationToken = default)
+ {
+ var requestType = request.GetType();
+ var handlerType = typeof(IRequestHandler<>).MakeGenericType(requestType);
+
+ var handler = _serviceProvider.GetService(handlerType);
+ if (handler == null)
+ {
+ throw new InvalidOperationException($"No handler registered for {requestType.Name}");
+ }
+
+ var method = handlerType.GetMethod(nameof(IRequestHandler.HandleAsync));
+ if (method == null)
+ {
+ throw new InvalidOperationException($"HandleAsync method not found on {handlerType.Name}");
+ }
+
+ await (Task)method.Invoke(handler, new object[] { request, cancellationToken })!;
+ }
+}
+
+
+
diff --git a/src/Infrastructure/Mediator/Validation/RequestValidation.cs b/src/Infrastructure/Mediator/Validation/RequestValidation.cs
new file mode 100644
index 0000000000..f1be86e0bc
--- /dev/null
+++ b/src/Infrastructure/Mediator/Validation/RequestValidation.cs
@@ -0,0 +1,25 @@
+namespace FSH.Framework.Infrastructure.Mediator.Validation;
+
+public sealed class RequestValidation : IMediator
+{
+ private readonly IMediator _inner;
+ private readonly IServiceProvider _serviceProvider;
+
+ public RequestValidation(IMediator inner, IServiceProvider serviceProvider)
+ {
+ _inner = inner;
+ _serviceProvider = serviceProvider;
+ }
+
+ public async Task SendAsync(IRequest request, CancellationToken cancellationToken = default)
+ {
+ await ValidationHelper.ValidateAsync(request, _serviceProvider, cancellationToken);
+ return await _inner.SendAsync(request, cancellationToken);
+ }
+
+ public async Task SendAsync(IRequest request, CancellationToken cancellationToken = default)
+ {
+ await ValidationHelper.ValidateAsync(request, _serviceProvider, cancellationToken);
+ await _inner.SendAsync(request, cancellationToken);
+ }
+}
\ No newline at end of file
diff --git a/src/Infrastructure/Mediator/Validation/ValidationHelper.cs b/src/Infrastructure/Mediator/Validation/ValidationHelper.cs
new file mode 100644
index 0000000000..2b89c89f54
--- /dev/null
+++ b/src/Infrastructure/Mediator/Validation/ValidationHelper.cs
@@ -0,0 +1,38 @@
+using FluentValidation;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace FSH.Framework.Infrastructure.Mediator.Validation;
+internal static class ValidationHelper
+{
+ public static async Task ValidateAsync(T request, IServiceProvider provider, CancellationToken ct = default)
+ {
+ ArgumentNullException.ThrowIfNull(request);
+ ArgumentNullException.ThrowIfNull(provider);
+
+ var requestType = request.GetType();
+ var validatorType = typeof(IValidator<>).MakeGenericType(requestType);
+ var validators = provider.GetServices(validatorType).Cast().ToList();
+
+ if (validators.Count == 0) return;
+
+ var contextType = typeof(ValidationContext<>).MakeGenericType(requestType);
+ var context = Activator.CreateInstance(contextType, request)!;
+
+ var failures = new List();
+
+ foreach (var validator in validators)
+ {
+ var validateAsyncMethod = validator.GetType()
+ .GetMethod("ValidateAsync", new[] { contextType, typeof(CancellationToken) })!;
+
+ var task = (Task)
+ validateAsyncMethod.Invoke(validator, new[] { context, ct })!;
+
+ var result = await task;
+ failures.AddRange(result.Errors.Where(f => f != null));
+ }
+
+ if (failures.Count > 0)
+ throw new ValidationException(failures);
+ }
+}
\ No newline at end of file
diff --git a/src/Shared/Authorization/AppConstants.cs b/src/Shared/Authorization/AppConstants.cs
deleted file mode 100644
index 5334ee902f..0000000000
--- a/src/Shared/Authorization/AppConstants.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System.Collections.ObjectModel;
-
-namespace FSH.Starter.Shared.Authorization;
-public static class AppConstants
-{
- public static readonly Collection SupportedImageFormats =
- [
- ".jpeg",
- ".jpg",
- ".png"
- ];
- public static readonly string StandardImageFormat = "image/jpeg";
- public static readonly int MaxImageWidth = 1500;
- public static readonly int MaxImageHeight = 1500;
- public static readonly long MaxAllowedSize = 1000000; // Allows Max File Size of 1 Mb.
-}
diff --git a/src/Shared/Authorization/ClaimsPrincipalExtensions.cs b/src/Shared/Authorization/ClaimsPrincipalExtensions.cs
deleted file mode 100644
index 4c4398d73a..0000000000
--- a/src/Shared/Authorization/ClaimsPrincipalExtensions.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using System.Security.Claims;
-
-namespace FSH.Starter.Shared.Authorization;
-public static class ClaimsPrincipalExtensions
-{
- public static string? GetEmail(this ClaimsPrincipal principal)
- => principal.FindFirstValue(ClaimTypes.Email);
-
- public static string? GetTenant(this ClaimsPrincipal principal)
- => principal.FindFirstValue(FshClaims.Tenant);
-
- public static string? GetFullName(this ClaimsPrincipal principal)
- => principal?.FindFirst(FshClaims.Fullname)?.Value;
-
- public static string? GetFirstName(this ClaimsPrincipal principal)
- => principal?.FindFirst(ClaimTypes.Name)?.Value;
-
- public static string? GetSurname(this ClaimsPrincipal principal)
- => principal?.FindFirst(ClaimTypes.Surname)?.Value;
-
- public static string? GetPhoneNumber(this ClaimsPrincipal principal)
- => principal.FindFirstValue(ClaimTypes.MobilePhone);
-
- public static string? GetUserId(this ClaimsPrincipal principal)
- => principal.FindFirstValue(ClaimTypes.NameIdentifier);
-
- public static Uri? GetImageUrl(this ClaimsPrincipal principal)
- {
- var imageUrl = principal.FindFirstValue(FshClaims.ImageUrl);
- return Uri.TryCreate(imageUrl, UriKind.Absolute, out var uri) ? uri : null;
- }
-
- public static DateTimeOffset GetExpiration(this ClaimsPrincipal principal) =>
- DateTimeOffset.FromUnixTimeSeconds(Convert.ToInt64(
- principal.FindFirstValue(FshClaims.Expiration)));
-
- private static string? FindFirstValue(this ClaimsPrincipal principal, string claimType) =>
- principal is null
- ? throw new ArgumentNullException(nameof(principal))
- : principal.FindFirst(claimType)?.Value;
-}
diff --git a/src/Shared/Authorization/FshActions.cs b/src/Shared/Authorization/FshActions.cs
deleted file mode 100644
index a29f17e51e..0000000000
--- a/src/Shared/Authorization/FshActions.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-namespace FSH.Starter.Shared.Authorization;
-public static class FshActions
-{
- public const string View = nameof(View);
- public const string Search = nameof(Search);
- public const string Create = nameof(Create);
- public const string Update = nameof(Update);
- public const string Delete = nameof(Delete);
- public const string Export = nameof(Export);
- public const string Generate = nameof(Generate);
- public const string Clean = nameof(Clean);
- public const string UpgradeSubscription = nameof(UpgradeSubscription);
-}
diff --git a/src/Shared/Authorization/FshClaims.cs b/src/Shared/Authorization/FshClaims.cs
deleted file mode 100644
index bdf9020684..0000000000
--- a/src/Shared/Authorization/FshClaims.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-namespace FSH.Starter.Shared.Authorization;
-
-public static class FshClaims
-{
- public const string Tenant = "tenant";
- public const string Fullname = "fullName";
- public const string Permission = "permission";
- public const string ImageUrl = "image_url";
- public const string IpAddress = "ipAddress";
- public const string Expiration = "exp";
-}
diff --git a/src/Shared/Authorization/FshPermissions.cs b/src/Shared/Authorization/FshPermissions.cs
deleted file mode 100644
index fad6676ee8..0000000000
--- a/src/Shared/Authorization/FshPermissions.cs
+++ /dev/null
@@ -1,77 +0,0 @@
-using System.Collections.ObjectModel;
-
-namespace FSH.Starter.Shared.Authorization;
-
-public static class FshPermissions
-{
- private static readonly FshPermission[] AllPermissions =
- [
- //tenants
- new("View Tenants", FshActions.View, FshResources.Tenants, IsRoot: true),
- new("Create Tenants", FshActions.Create, FshResources.Tenants, IsRoot: true),
- new("Update Tenants", FshActions.Update, FshResources.Tenants, IsRoot: true),
- new("Upgrade Tenant Subscription", FshActions.UpgradeSubscription, FshResources.Tenants, IsRoot: true),
-
- //identity
- new("View Users", FshActions.View, FshResources.Users),
- new("Search Users", FshActions.Search, FshResources.Users),
- new("Create Users", FshActions.Create, FshResources.Users),
- new("Update Users", FshActions.Update, FshResources.Users),
- new("Delete Users", FshActions.Delete, FshResources.Users),
- new("Export Users", FshActions.Export, FshResources.Users),
- new("View UserRoles", FshActions.View, FshResources.UserRoles),
- new("Update UserRoles", FshActions.Update, FshResources.UserRoles),
- new("View Roles", FshActions.View, FshResources.Roles),
- new("Create Roles", FshActions.Create, FshResources.Roles),
- new("Update Roles", FshActions.Update, FshResources.Roles),
- new("Delete Roles", FshActions.Delete, FshResources.Roles),
- new("View RoleClaims", FshActions.View, FshResources.RoleClaims),
- new("Update RoleClaims", FshActions.Update, FshResources.RoleClaims),
-
- //products
- new("View Products", FshActions.View, FshResources.Products, IsBasic: true),
- new("Search Products", FshActions.Search, FshResources.Products, IsBasic: true),
- new("Create Products", FshActions.Create, FshResources.Products),
- new("Update Products", FshActions.Update, FshResources.Products),
- new("Delete Products", FshActions.Delete, FshResources.Products),
- new("Export Products", FshActions.Export, FshResources.Products),
-
- //brands
- new("View Brands", FshActions.View, FshResources.Brands, IsBasic: true),
- new("Search Brands", FshActions.Search, FshResources.Brands, IsBasic: true),
- new("Create Brands", FshActions.Create, FshResources.Brands),
- new("Update Brands", FshActions.Update, FshResources.Brands),
- new("Delete Brands", FshActions.Delete, FshResources.Brands),
- new("Export Brands", FshActions.Export, FshResources.Brands),
-
- //todos
- new("View Todos", FshActions.View, FshResources.Todos, IsBasic: true),
- new("Search Todos", FshActions.Search, FshResources.Todos, IsBasic: true),
- new("Create Todos", FshActions.Create, FshResources.Todos),
- new("Update Todos", FshActions.Update, FshResources.Todos),
- new("Delete Todos", FshActions.Delete, FshResources.Todos),
- new("Export Todos", FshActions.Export, FshResources.Todos),
-
- new("View Hangfire", FshActions.View, FshResources.Hangfire),
- new("View Dashboard", FshActions.View, FshResources.Dashboard),
-
- //audit
- new("View Audit Trails", FshActions.View, FshResources.AuditTrails),
- ];
-
- public static IReadOnlyList All { get; } = new ReadOnlyCollection(AllPermissions);
- public static IReadOnlyList Root { get; } = new ReadOnlyCollection(AllPermissions.Where(p => p.IsRoot).ToArray());
- public static IReadOnlyList Admin { get; } = new ReadOnlyCollection(AllPermissions.Where(p => !p.IsRoot).ToArray());
- public static IReadOnlyList Basic { get; } = new ReadOnlyCollection(AllPermissions.Where(p => p.IsBasic).ToArray());
-}
-
-public record FshPermission(string Description, string Action, string Resource, bool IsBasic = false, bool IsRoot = false)
-{
- public string Name => NameFor(Action, Resource);
- public static string NameFor(string action, string resource)
- {
- return $"Permissions.{resource}.{action}";
- }
-}
-
-
diff --git a/src/Shared/Authorization/FshResources.cs b/src/Shared/Authorization/FshResources.cs
deleted file mode 100644
index e8d276c470..0000000000
--- a/src/Shared/Authorization/FshResources.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace FSH.Starter.Shared.Authorization;
-public static class FshResources
-{
- public const string Tenants = nameof(Tenants);
- public const string Dashboard = nameof(Dashboard);
- public const string Hangfire = nameof(Hangfire);
- public const string Users = nameof(Users);
- public const string UserRoles = nameof(UserRoles);
- public const string Roles = nameof(Roles);
- public const string RoleClaims = nameof(RoleClaims);
- public const string Products = nameof(Products);
- public const string Brands = nameof(Brands);
- public const string Todos = nameof(Todos);
- public const string AuditTrails = nameof(AuditTrails);
-}
diff --git a/src/Shared/Authorization/FshRoles.cs b/src/Shared/Authorization/FshRoles.cs
deleted file mode 100644
index e471e50930..0000000000
--- a/src/Shared/Authorization/FshRoles.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System.Collections.ObjectModel;
-
-namespace FSH.Starter.Shared.Authorization;
-
-public static class FshRoles
-{
- public const string Admin = nameof(Admin);
- public const string Basic = nameof(Basic);
-
- public static IReadOnlyList DefaultRoles { get; } = new ReadOnlyCollection(new[]
- {
- Admin,
- Basic
- });
-
- public static bool IsDefault(string roleName) => DefaultRoles.Any(r => r == roleName);
-}
diff --git a/src/Shared/Authorization/IdentityConstants.cs b/src/Shared/Authorization/IdentityConstants.cs
deleted file mode 100644
index 7d15a098be..0000000000
--- a/src/Shared/Authorization/IdentityConstants.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace FSH.Starter.Shared.Authorization;
-public static class IdentityConstants
-{
- public const int PasswordLength = 6;
- public const string SchemaName = "identity";
-}
diff --git a/src/Shared/Authorization/TenantConstants.cs b/src/Shared/Authorization/TenantConstants.cs
deleted file mode 100644
index 984fe77e1a..0000000000
--- a/src/Shared/Authorization/TenantConstants.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-namespace FSH.Starter.Shared.Authorization;
-public static class TenantConstants
-{
- public static class Root
- {
- public const string Id = "root";
- public const string Name = "Root";
- public const string EmailAddress = "admin@root.com";
- public const string DefaultProfilePicture = "assets/defaults/profile-picture.webp";
- }
-
- public const string DefaultPassword = "123Pa$$word!";
-
- public const string Identifier = "tenant";
-
-}
diff --git a/src/Shared/Constants/SchemaNames.cs b/src/Shared/Constants/SchemaNames.cs
deleted file mode 100644
index 6f6763a8b2..0000000000
--- a/src/Shared/Constants/SchemaNames.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Shared.Constants;
-public static class SchemaNames
-{
- public const string Todo = "todo";
- public const string Catalog = "catalog";
- public const string Tenant = "tenant";
-}
diff --git a/src/Shared/Shared.csproj b/src/Shared/Shared.csproj
index 125f4c93bc..33fe52ad7e 100644
--- a/src/Shared/Shared.csproj
+++ b/src/Shared/Shared.csproj
@@ -1,9 +1,6 @@
-
-
- net9.0
- enable
- enable
-
-
+
+ FSH.Framework.Shared
+ FSH.Framework.Shared
+
diff --git a/src/Web/Endpoints/Abstractions/IEndpointDefinition.cs b/src/Web/Endpoints/Abstractions/IEndpointDefinition.cs
new file mode 100644
index 0000000000..ef7871ae5b
--- /dev/null
+++ b/src/Web/Endpoints/Abstractions/IEndpointDefinition.cs
@@ -0,0 +1,8 @@
+using Microsoft.AspNetCore.Builder;
+
+namespace FSH.Framework.Web.Endpoints.Abstractions;
+
+public interface IEndpointDefinition
+{
+ void DefineEndpoints(WebApplication app);
+}
\ No newline at end of file
diff --git a/src/Web/Endpoints/Extensions.cs b/src/Web/Endpoints/Extensions.cs
new file mode 100644
index 0000000000..d6571d7870
--- /dev/null
+++ b/src/Web/Endpoints/Extensions.cs
@@ -0,0 +1,25 @@
+using FSH.Framework.Web.Endpoints.Abstractions;
+using Microsoft.AspNetCore.Builder;
+using System.Reflection;
+
+namespace FSH.Framework.Web.Endpoints;
+public static class Extensions
+{
+ public static WebApplication MapEndpointsFromAssembly(this WebApplication app, Assembly assembly)
+ {
+ var endpointDefinitions = assembly
+ .GetTypes()
+ .Where(t => t.IsAssignableTo(typeof(IEndpointDefinition))
+ && !t.IsAbstract
+ && !t.IsInterface)
+ .Select(Activator.CreateInstance)
+ .Cast();
+
+ foreach (var endpointDefinition in endpointDefinitions)
+ {
+ endpointDefinition.DefineEndpoints(app);
+ }
+
+ return app;
+ }
+}
\ No newline at end of file
diff --git a/src/Web/Observability/Logging/Enrichers/TenantIdEnricher.cs b/src/Web/Observability/Logging/Enrichers/TenantIdEnricher.cs
new file mode 100644
index 0000000000..2eb7225ce7
--- /dev/null
+++ b/src/Web/Observability/Logging/Enrichers/TenantIdEnricher.cs
@@ -0,0 +1,39 @@
+using Microsoft.AspNetCore.Http;
+using Serilog.Core;
+using Serilog.Events;
+using System.Security.Claims;
+
+namespace FSH.Framework.Web.Observability.Logging.Enrichers;
+
+public sealed class TenantIdEnricher : ILogEventEnricher
+{
+ public const string PropertyName = "TenantId";
+ private static readonly HttpContextAccessor Accessor = new();
+
+ public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
+ {
+ ArgumentNullException.ThrowIfNull(logEvent);
+ ArgumentNullException.ThrowIfNull(propertyFactory);
+
+ var http = Accessor.HttpContext;
+ string tenantId =
+ GetFromClaims(http?.User) ??
+ GetFromItems(http) ??
+ GetFromHeader(http) ??
+ "unknown";
+
+ var prop = propertyFactory.CreateProperty(PropertyName, tenantId, false);
+ logEvent.AddPropertyIfAbsent(prop);
+ }
+
+ private static string? GetFromClaims(ClaimsPrincipal? user) =>
+ user?.FindFirstValue("tenant_id")
+ ?? user?.FindFirstValue("tid")
+ ?? user?.FindFirstValue("TenantId");
+
+ private static string? GetFromItems(HttpContext? ctx) =>
+ ctx is not null && ctx.Items.TryGetValue("TenantId", out var v) ? v?.ToString() : null;
+
+ private static string? GetFromHeader(HttpContext? ctx) =>
+ ctx?.Request?.Headers.TryGetValue("X-Tenant", out var val) == true ? val.ToString() : null;
+}
\ No newline at end of file
diff --git a/src/Web/Observability/Logging/SerilogExtensions.cs b/src/Web/Observability/Logging/SerilogExtensions.cs
new file mode 100644
index 0000000000..4e5f034098
--- /dev/null
+++ b/src/Web/Observability/Logging/SerilogExtensions.cs
@@ -0,0 +1,28 @@
+using FSH.Framework.Web.Observability.Logging.Enrichers;
+using Microsoft.AspNetCore.Builder;
+using Serilog;
+using Serilog.Events;
+using Serilog.Filters;
+
+namespace FSH.Framework.Web.Observability.Logging;
+public static class SerilogExtensions
+{
+ public static WebApplicationBuilder UseStructuredLogging(this WebApplicationBuilder builder)
+ {
+ ArgumentNullException.ThrowIfNull(builder);
+ builder.Host.UseSerilog((context, logger) =>
+ {
+ logger.ReadFrom.Configuration(context.Configuration);
+ logger.Enrich.FromLogContext();
+ logger.Enrich.With(new TenantIdEnricher());
+ logger
+ .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
+ .MinimumLevel.Override("Microsoft.Hosting.Lifetime", LogEventLevel.Information)
+ .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Error)
+ .MinimumLevel.Override("Hangfire", LogEventLevel.Warning)
+ .MinimumLevel.Override("Finbuckle.MultiTenant", LogEventLevel.Warning)
+ .Filter.ByExcluding(Matching.FromSource("Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware"));
+ });
+ return builder;
+ }
+}
\ No newline at end of file
diff --git a/src/Web/Web.csproj b/src/Web/Web.csproj
new file mode 100644
index 0000000000..cb47d1d60e
--- /dev/null
+++ b/src/Web/Web.csproj
@@ -0,0 +1,18 @@
+
+
+ FSH.Framework.Web
+ FSH.Framework.Web
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/api/framework/Core/Audit/AuditTrail.cs b/src/api/framework/Core/Audit/AuditTrail.cs
deleted file mode 100644
index 97448ac39f..0000000000
--- a/src/api/framework/Core/Audit/AuditTrail.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-namespace FSH.Framework.Core.Audit;
-public class AuditTrail
-{
- public Guid Id { get; set; }
- public Guid UserId { get; set; }
- public string? Operation { get; set; }
- public string? Entity { get; set; }
- public DateTimeOffset DateTime { get; set; }
- public string? PreviousValues { get; set; }
- public string? NewValues { get; set; }
- public string? ModifiedProperties { get; set; }
- public string? PrimaryKey { get; set; }
-}
diff --git a/src/api/framework/Core/Audit/IAuditService.cs b/src/api/framework/Core/Audit/IAuditService.cs
deleted file mode 100644
index 9c62f4d0db..0000000000
--- a/src/api/framework/Core/Audit/IAuditService.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-namespace FSH.Framework.Core.Audit;
-public interface IAuditService
-{
- Task> GetUserTrailsAsync(Guid userId);
-}
diff --git a/src/api/framework/Core/Audit/TrailDto.cs b/src/api/framework/Core/Audit/TrailDto.cs
deleted file mode 100644
index 8268e4b172..0000000000
--- a/src/api/framework/Core/Audit/TrailDto.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using System.Collections.ObjectModel;
-using System.Text.Json;
-
-namespace FSH.Framework.Core.Audit;
-public class TrailDto()
-{
- public Guid Id { get; set; }
- public DateTimeOffset DateTime { get; set; }
- public Guid UserId { get; set; }
- public Dictionary KeyValues { get; } = [];
- public Dictionary OldValues { get; } = [];
- public Dictionary NewValues { get; } = [];
- public Collection ModifiedProperties { get; } = [];
- public TrailType Type { get; set; }
- public string? TableName { get; set; }
-
- private static readonly JsonSerializerOptions SerializerOptions = new()
- {
- WriteIndented = false,
- };
-
- public AuditTrail ToAuditTrail()
- {
- return new()
- {
- Id = Guid.NewGuid(),
- UserId = UserId,
- Operation = Type.ToString(),
- Entity = TableName,
- DateTime = DateTime,
- PrimaryKey = JsonSerializer.Serialize(KeyValues, SerializerOptions),
- PreviousValues = OldValues.Count == 0 ? null : JsonSerializer.Serialize(OldValues, SerializerOptions),
- NewValues = NewValues.Count == 0 ? null : JsonSerializer.Serialize(NewValues, SerializerOptions),
- ModifiedProperties = ModifiedProperties.Count == 0 ? null : JsonSerializer.Serialize(ModifiedProperties, SerializerOptions)
- };
- }
-}
diff --git a/src/api/framework/Core/Audit/TrailType.cs b/src/api/framework/Core/Audit/TrailType.cs
deleted file mode 100644
index a98bfa29b6..0000000000
--- a/src/api/framework/Core/Audit/TrailType.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace FSH.Framework.Core.Audit;
-public enum TrailType
-{
- None = 0,
- Create = 1,
- Update = 2,
- Delete = 3
-}
diff --git a/src/api/framework/Core/Auth/Jwt/JwtOptions.cs b/src/api/framework/Core/Auth/Jwt/JwtOptions.cs
deleted file mode 100644
index 5d99d6702f..0000000000
--- a/src/api/framework/Core/Auth/Jwt/JwtOptions.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace FSH.Framework.Core.Auth.Jwt;
-public class JwtOptions : IValidatableObject
-{
- public string Key { get; set; } = string.Empty;
-
- public int TokenExpirationInMinutes { get; set; } = 60;
-
- public int RefreshTokenExpirationInDays { get; set; } = 7;
-
- public IEnumerable Validate(ValidationContext validationContext)
- {
- if (string.IsNullOrEmpty(Key))
- {
- yield return new ValidationResult("No Key defined in JwtSettings config", [nameof(Key)]);
- }
- }
-}
diff --git a/src/api/framework/Core/Caching/CacheOptions.cs b/src/api/framework/Core/Caching/CacheOptions.cs
deleted file mode 100644
index b861c2e06a..0000000000
--- a/src/api/framework/Core/Caching/CacheOptions.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace FSH.Framework.Core.Caching;
-
-public class CacheOptions
-{
- public string Redis { get; set; } = string.Empty;
-}
diff --git a/src/api/framework/Core/Caching/CacheServiceExtensions.cs b/src/api/framework/Core/Caching/CacheServiceExtensions.cs
deleted file mode 100644
index c03f94cc1f..0000000000
--- a/src/api/framework/Core/Caching/CacheServiceExtensions.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-namespace FSH.Framework.Core.Caching;
-
-public static class CacheServiceExtensions
-{
- public static T? GetOrSet(this ICacheService cache, string key, Func getItemCallback, TimeSpan? slidingExpiration = null)
- {
- T? value = cache.Get(key);
-
- if (value is not null)
- {
- return value;
- }
-
- value = getItemCallback();
-
- if (value is not null)
- {
- cache.Set(key, value, slidingExpiration);
- }
-
- return value;
- }
-
- public static async Task GetOrSetAsync(this ICacheService cache, string key, Func> task, TimeSpan? slidingExpiration = null, CancellationToken cancellationToken = default)
- {
- T? value = await cache.GetAsync(key, cancellationToken);
-
- if (value is not null)
- {
- return value;
- }
-
- value = await task();
-
- if (value is not null)
- {
- await cache.SetAsync(key, value, slidingExpiration, cancellationToken);
- }
-
- return value;
- }
-}
diff --git a/src/api/framework/Core/Caching/ICacheService.cs b/src/api/framework/Core/Caching/ICacheService.cs
deleted file mode 100644
index 54f3c09048..0000000000
--- a/src/api/framework/Core/Caching/ICacheService.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-namespace FSH.Framework.Core.Caching;
-
-public interface ICacheService
-{
- T? Get(string key);
- Task GetAsync(string key, CancellationToken token = default);
-
- void Refresh(string key);
- Task RefreshAsync(string key, CancellationToken token = default);
-
- void Remove(string key);
- Task RemoveAsync(string key, CancellationToken token = default);
-
- void Set(string key, T value, TimeSpan? slidingExpiration = null);
- Task SetAsync(string key, T value, TimeSpan? slidingExpiration = null, CancellationToken cancellationToken = default);
-}
\ No newline at end of file
diff --git a/src/api/framework/Core/Core.csproj b/src/api/framework/Core/Core.csproj
deleted file mode 100644
index 13d0f1dbc8..0000000000
--- a/src/api/framework/Core/Core.csproj
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
- FSH.Framework.Core
- FSH.Framework.Core
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/api/framework/Core/Domain/AuditableEntity.cs b/src/api/framework/Core/Domain/AuditableEntity.cs
deleted file mode 100644
index 6639a02156..0000000000
--- a/src/api/framework/Core/Domain/AuditableEntity.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using FSH.Framework.Core.Domain.Contracts;
-
-namespace FSH.Framework.Core.Domain;
-
-public class AuditableEntity : BaseEntity, IAuditable, ISoftDeletable
-{
- public DateTimeOffset Created { get; set; }
- public Guid CreatedBy { get; set; }
- public DateTimeOffset LastModified { get; set; }
- public Guid? LastModifiedBy { get; set; }
- public DateTimeOffset? Deleted { get; set; }
- public Guid? DeletedBy { get; set; }
-}
-
-public abstract class AuditableEntity : AuditableEntity
-{
- protected AuditableEntity() => Id = Guid.NewGuid();
-}
diff --git a/src/api/framework/Core/Domain/BaseEntity.cs b/src/api/framework/Core/Domain/BaseEntity.cs
deleted file mode 100644
index 1c2e98daaf..0000000000
--- a/src/api/framework/Core/Domain/BaseEntity.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System.Collections.ObjectModel;
-using System.ComponentModel.DataAnnotations.Schema;
-using FSH.Framework.Core.Domain.Contracts;
-using FSH.Framework.Core.Domain.Events;
-
-namespace FSH.Framework.Core.Domain;
-
-public abstract class BaseEntity : IEntity
-{
- public TId Id { get; protected init; } = default!;
- [NotMapped]
- public Collection DomainEvents { get; } = new Collection();
- public void QueueDomainEvent(DomainEvent @event)
- {
- if (!DomainEvents.Contains(@event))
- DomainEvents.Add(@event);
- }
-}
-
-public abstract class BaseEntity : BaseEntity
-{
- protected BaseEntity() => Id = Guid.NewGuid();
-}
diff --git a/src/api/framework/Core/Domain/Contracts/IAggregateRoot.cs b/src/api/framework/Core/Domain/Contracts/IAggregateRoot.cs
deleted file mode 100644
index cc98c00dba..0000000000
--- a/src/api/framework/Core/Domain/Contracts/IAggregateRoot.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace FSH.Framework.Core.Domain.Contracts;
-
-// Apply this marker interface only to aggregate root entities
-// Repositories will only work with aggregate roots, not their children
-public interface IAggregateRoot : IEntity
-{
-}
diff --git a/src/api/framework/Core/Domain/Contracts/IAuditable.cs b/src/api/framework/Core/Domain/Contracts/IAuditable.cs
deleted file mode 100644
index edfa8ab9f3..0000000000
--- a/src/api/framework/Core/Domain/Contracts/IAuditable.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace FSH.Framework.Core.Domain.Contracts;
-
-public interface IAuditable
-{
- DateTimeOffset Created { get; }
- Guid CreatedBy { get; }
- DateTimeOffset LastModified { get; }
- Guid? LastModifiedBy { get; }
-}
diff --git a/src/api/framework/Core/Domain/Contracts/IEntity.cs b/src/api/framework/Core/Domain/Contracts/IEntity.cs
deleted file mode 100644
index 1d48d306d6..0000000000
--- a/src/api/framework/Core/Domain/Contracts/IEntity.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System.Collections.ObjectModel;
-using FSH.Framework.Core.Domain.Events;
-
-namespace FSH.Framework.Core.Domain.Contracts;
-
-public interface IEntity
-{
- Collection DomainEvents { get; }
-}
-
-public interface IEntity : IEntity
-{
- TId Id { get; }
-}
diff --git a/src/api/framework/Core/Domain/Contracts/ISoftDeletable.cs b/src/api/framework/Core/Domain/Contracts/ISoftDeletable.cs
deleted file mode 100644
index d129d02e4a..0000000000
--- a/src/api/framework/Core/Domain/Contracts/ISoftDeletable.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace FSH.Framework.Core.Domain.Contracts;
-
-public interface ISoftDeletable
-{
- DateTimeOffset? Deleted { get; set; }
- Guid? DeletedBy { get; set; }
-}
diff --git a/src/api/framework/Core/Domain/Events/DomainEvent.cs b/src/api/framework/Core/Domain/Events/DomainEvent.cs
deleted file mode 100644
index 5350854602..0000000000
--- a/src/api/framework/Core/Domain/Events/DomainEvent.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using MediatR;
-
-namespace FSH.Framework.Core.Domain.Events;
-public abstract record DomainEvent : IDomainEvent, INotification
-{
- public DateTime RaisedOn { get; protected set; } = DateTime.UtcNow;
-}
diff --git a/src/api/framework/Core/Domain/Events/IDomainEvent.cs b/src/api/framework/Core/Domain/Events/IDomainEvent.cs
deleted file mode 100644
index 68d4c8f6c2..0000000000
--- a/src/api/framework/Core/Domain/Events/IDomainEvent.cs
+++ /dev/null
@@ -1,4 +0,0 @@
-namespace FSH.Framework.Core.Domain.Events;
-public interface IDomainEvent
-{
-}
diff --git a/src/api/framework/Core/Exceptions/CustomException.cs b/src/api/framework/Core/Exceptions/CustomException.cs
deleted file mode 100644
index 4d1af9af97..0000000000
--- a/src/api/framework/Core/Exceptions/CustomException.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System.Net;
-
-namespace FSH.Framework.Core.Exceptions;
-
-public class CustomException : Exception
-{
- public List? ErrorMessages { get; }
-
- public HttpStatusCode StatusCode { get; }
-
- public CustomException(string message, List? errors = default, HttpStatusCode statusCode = HttpStatusCode.InternalServerError)
- : base(message)
- {
- ErrorMessages = errors;
- StatusCode = statusCode;
- }
-}
diff --git a/src/api/framework/Core/Exceptions/ForbiddenException.cs b/src/api/framework/Core/Exceptions/ForbiddenException.cs
deleted file mode 100644
index fdafead902..0000000000
--- a/src/api/framework/Core/Exceptions/ForbiddenException.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System.Net;
-
-namespace FSH.Framework.Core.Exceptions;
-public class ForbiddenException : FshException
-{
- public ForbiddenException()
- : base("unauthorized", [], HttpStatusCode.Forbidden)
- {
- }
- public ForbiddenException(string message)
- : base(message, [], HttpStatusCode.Forbidden)
- {
- }
-}
diff --git a/src/api/framework/Core/Exceptions/FshException.cs b/src/api/framework/Core/Exceptions/FshException.cs
deleted file mode 100644
index 28597c5297..0000000000
--- a/src/api/framework/Core/Exceptions/FshException.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System.Net;
-
-namespace FSH.Framework.Core.Exceptions;
-public class FshException : Exception
-{
- public IEnumerable ErrorMessages { get; }
-
- public HttpStatusCode StatusCode { get; }
-
- public FshException(string message, IEnumerable errors, HttpStatusCode statusCode = HttpStatusCode.InternalServerError)
- : base(message)
- {
- ErrorMessages = errors;
- StatusCode = statusCode;
- }
-
- public FshException(string message) : base(message)
- {
- ErrorMessages = new List();
- }
-}
diff --git a/src/api/framework/Core/Exceptions/NotFoundException.cs b/src/api/framework/Core/Exceptions/NotFoundException.cs
deleted file mode 100644
index 351e25cfc7..0000000000
--- a/src/api/framework/Core/Exceptions/NotFoundException.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System.Collections.ObjectModel;
-using System.Net;
-
-namespace FSH.Framework.Core.Exceptions;
-public class NotFoundException : FshException
-{
- public NotFoundException(string message)
- : base(message, new Collection(), HttpStatusCode.NotFound)
- {
- }
-}
diff --git a/src/api/framework/Core/Exceptions/UnauthorizedException.cs b/src/api/framework/Core/Exceptions/UnauthorizedException.cs
deleted file mode 100644
index 559eb060c8..0000000000
--- a/src/api/framework/Core/Exceptions/UnauthorizedException.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using System.Collections.ObjectModel;
-using System.Net;
-
-namespace FSH.Framework.Core.Exceptions;
-public class UnauthorizedException : FshException
-{
- public UnauthorizedException()
- : base("authentication failed", new Collection(), HttpStatusCode.Unauthorized)
- {
- }
- public UnauthorizedException(string message)
- : base(message, new Collection(), HttpStatusCode.Unauthorized)
- {
- }
-}
diff --git a/src/api/framework/Core/FshCore.cs b/src/api/framework/Core/FshCore.cs
deleted file mode 100644
index 1891dc8d21..0000000000
--- a/src/api/framework/Core/FshCore.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-namespace FSH.Framework.Core;
-public static class FshCore
-{
- public static string Name { get; set; } = "FshCore";
-}
diff --git a/src/api/framework/Core/Identity/Roles/Features/CreateOrUpdateRole/CreateOrUpdateRoleCommand.cs b/src/api/framework/Core/Identity/Roles/Features/CreateOrUpdateRole/CreateOrUpdateRoleCommand.cs
deleted file mode 100644
index 5774c40ae9..0000000000
--- a/src/api/framework/Core/Identity/Roles/Features/CreateOrUpdateRole/CreateOrUpdateRoleCommand.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace FSH.Framework.Core.Identity.Roles.Features.CreateOrUpdateRole;
-
-public class CreateOrUpdateRoleCommand
-{
- public string Id { get; set; } = default!;
- public string Name { get; set; } = default!;
- public string? Description { get; set; }
-}
diff --git a/src/api/framework/Core/Identity/Roles/Features/CreateOrUpdateRole/CreateOrUpdateRoleValidator.cs b/src/api/framework/Core/Identity/Roles/Features/CreateOrUpdateRole/CreateOrUpdateRoleValidator.cs
deleted file mode 100644
index 68f4526661..0000000000
--- a/src/api/framework/Core/Identity/Roles/Features/CreateOrUpdateRole/CreateOrUpdateRoleValidator.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using FluentValidation;
-
-namespace FSH.Framework.Core.Identity.Roles.Features.CreateOrUpdateRole;
-
-public class CreateOrUpdateRoleValidator : AbstractValidator
-{
- public CreateOrUpdateRoleValidator()
- {
- RuleFor(x => x.Name).NotEmpty().WithMessage("Role name is required.");
- }
-}
diff --git a/src/api/framework/Core/Identity/Roles/Features/UpdatePermissions/UpdatePermissionsCommand.cs b/src/api/framework/Core/Identity/Roles/Features/UpdatePermissions/UpdatePermissionsCommand.cs
deleted file mode 100644
index 900c153956..0000000000
--- a/src/api/framework/Core/Identity/Roles/Features/UpdatePermissions/UpdatePermissionsCommand.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace FSH.Framework.Core.Identity.Roles.Features.UpdatePermissions;
-public class UpdatePermissionsCommand
-{
- public string RoleId { get; set; } = default!;
- public List Permissions { get; set; } = default!;
-}
diff --git a/src/api/framework/Core/Identity/Roles/Features/UpdatePermissions/UpdatePermissionsValidator.cs b/src/api/framework/Core/Identity/Roles/Features/UpdatePermissions/UpdatePermissionsValidator.cs
deleted file mode 100644
index 34b0b7f01c..0000000000
--- a/src/api/framework/Core/Identity/Roles/Features/UpdatePermissions/UpdatePermissionsValidator.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using FluentValidation;
-
-namespace FSH.Framework.Core.Identity.Roles.Features.UpdatePermissions;
-public class UpdatePermissionsValidator : AbstractValidator
-{
- public UpdatePermissionsValidator()
- {
- RuleFor(r => r.RoleId)
- .NotEmpty();
- RuleFor(r => r.Permissions)
- .NotNull();
- }
-}
diff --git a/src/api/framework/Core/Identity/Roles/IRoleService.cs b/src/api/framework/Core/Identity/Roles/IRoleService.cs
deleted file mode 100644
index dca61839af..0000000000
--- a/src/api/framework/Core/Identity/Roles/IRoleService.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using FSH.Framework.Core.Identity.Roles.Features.CreateOrUpdateRole;
-using FSH.Framework.Core.Identity.Roles.Features.UpdatePermissions;
-
-namespace FSH.Framework.Core.Identity.Roles;
-
-public interface IRoleService
-{
- Task> GetRolesAsync();
- Task GetRoleAsync(string id);
- Task CreateOrUpdateRoleAsync(CreateOrUpdateRoleCommand command);
- Task DeleteRoleAsync(string id);
- Task GetWithPermissionsAsync(string id, CancellationToken cancellationToken);
-
- Task UpdatePermissionsAsync(UpdatePermissionsCommand request);
-}
-
diff --git a/src/api/framework/Core/Identity/Roles/RoleDto.cs b/src/api/framework/Core/Identity/Roles/RoleDto.cs
deleted file mode 100644
index 0a0fc7559b..0000000000
--- a/src/api/framework/Core/Identity/Roles/RoleDto.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace FSH.Framework.Core.Identity.Roles;
-
-public class RoleDto
-{
- public string Id { get; set; } = default!;
- public string Name { get; set; } = default!;
- public string? Description { get; set; }
- public List? Permissions { get; set; }
-}
diff --git a/src/api/framework/Core/Identity/Tokens/Features/Generate/TokenGenerationCommand.cs b/src/api/framework/Core/Identity/Tokens/Features/Generate/TokenGenerationCommand.cs
deleted file mode 100644
index dccc1e15d7..0000000000
--- a/src/api/framework/Core/Identity/Tokens/Features/Generate/TokenGenerationCommand.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using System.ComponentModel;
-using FluentValidation;
-using FSH.Starter.Shared.Authorization;
-
-namespace FSH.Framework.Core.Identity.Tokens.Features.Generate;
-public record TokenGenerationCommand(
- [property: DefaultValue(TenantConstants.Root.EmailAddress)] string Email,
- [property: DefaultValue(TenantConstants.DefaultPassword)] string Password);
-
-public class GenerateTokenValidator : AbstractValidator
-{
- public GenerateTokenValidator()
- {
- RuleFor(p => p.Email).Cascade(CascadeMode.Stop).NotEmpty().EmailAddress();
-
- RuleFor(p => p.Password).Cascade(CascadeMode.Stop).NotEmpty();
- }
-}
diff --git a/src/api/framework/Core/Identity/Tokens/Features/Refresh/RefreshTokenCommand.cs b/src/api/framework/Core/Identity/Tokens/Features/Refresh/RefreshTokenCommand.cs
deleted file mode 100644
index 8fc45b8d24..0000000000
--- a/src/api/framework/Core/Identity/Tokens/Features/Refresh/RefreshTokenCommand.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using FluentValidation;
-
-namespace FSH.Framework.Core.Identity.Tokens.Features.Refresh;
-public record RefreshTokenCommand(string Token, string RefreshToken);
-
-public class RefreshTokenValidator : AbstractValidator
-{
- public RefreshTokenValidator()
- {
- RuleFor(p => p.Token).Cascade(CascadeMode.Stop).NotEmpty();
-
- RuleFor(p => p.RefreshToken).Cascade(CascadeMode.Stop).NotEmpty();
- }
-}
diff --git a/src/api/framework/Core/Identity/Tokens/ITokenService.cs b/src/api/framework/Core/Identity/Tokens/ITokenService.cs
deleted file mode 100644
index 86665ec818..0000000000
--- a/src/api/framework/Core/Identity/Tokens/ITokenService.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using FSH.Framework.Core.Identity.Tokens.Features.Generate;
-using FSH.Framework.Core.Identity.Tokens.Features.Refresh;
-using FSH.Framework.Core.Identity.Tokens.Models;
-
-namespace FSH.Framework.Core.Identity.Tokens;
-public interface ITokenService
-{
- Task GenerateTokenAsync(TokenGenerationCommand request, string ipAddress, CancellationToken cancellationToken);
- Task RefreshTokenAsync(RefreshTokenCommand request, string ipAddress, CancellationToken cancellationToken);
-
-}
diff --git a/src/api/framework/Core/Identity/Tokens/Models/TokenResponse.cs b/src/api/framework/Core/Identity/Tokens/Models/TokenResponse.cs
deleted file mode 100644
index fc56f00d89..0000000000
--- a/src/api/framework/Core/Identity/Tokens/Models/TokenResponse.cs
+++ /dev/null
@@ -1,2 +0,0 @@
-namespace FSH.Framework.Core.Identity.Tokens.Models;
-public record TokenResponse(string Token, string RefreshToken, DateTime RefreshTokenExpiryTime);
diff --git a/src/api/framework/Core/Identity/Users/Abstractions/IUserService.cs b/src/api/framework/Core/Identity/Users/Abstractions/IUserService.cs
deleted file mode 100644
index 95fbf9f577..0000000000
--- a/src/api/framework/Core/Identity/Users/Abstractions/IUserService.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-using System.Security.Claims;
-using FSH.Framework.Core.Identity.Users.Dtos;
-using FSH.Framework.Core.Identity.Users.Features.AssignUserRole;
-using FSH.Framework.Core.Identity.Users.Features.ChangePassword;
-using FSH.Framework.Core.Identity.Users.Features.ForgotPassword;
-using FSH.Framework.Core.Identity.Users.Features.RegisterUser;
-using FSH.Framework.Core.Identity.Users.Features.ResetPassword;
-using FSH.Framework.Core.Identity.Users.Features.ToggleUserStatus;
-using FSH.Framework.Core.Identity.Users.Features.UpdateUser;
-
-namespace FSH.Framework.Core.Identity.Users.Abstractions;
-public interface IUserService
-{
- Task ExistsWithNameAsync(string name);
- Task ExistsWithEmailAsync(string email, string? exceptId = null);
- Task ExistsWithPhoneNumberAsync(string phoneNumber, string? exceptId = null);
- Task> GetListAsync(CancellationToken cancellationToken);
- Task GetCountAsync(CancellationToken cancellationToken);
- Task GetAsync(string userId, CancellationToken cancellationToken);
- Task ToggleStatusAsync(ToggleUserStatusCommand request, CancellationToken cancellationToken);
- Task GetOrCreateFromPrincipalAsync(ClaimsPrincipal principal);
- Task RegisterAsync(RegisterUserCommand request, string origin, CancellationToken cancellationToken);
- Task UpdateAsync(UpdateUserCommand request, string userId);
- Task DeleteAsync(string userId);
- Task ConfirmEmailAsync(string userId, string code, string tenant, CancellationToken cancellationToken);
- Task ConfirmPhoneNumberAsync(string userId, string code);
-
- // permisions
- Task HasPermissionAsync(string userId, string permission, CancellationToken cancellationToken = default);
-
- // passwords
- Task ForgotPasswordAsync(ForgotPasswordCommand request, string origin, CancellationToken cancellationToken);
- Task ResetPasswordAsync(ResetPasswordCommand request, CancellationToken cancellationToken);
- Task?> GetPermissionsAsync(string userId, CancellationToken cancellationToken);
-
- Task ChangePasswordAsync(ChangePasswordCommand request, string userId);
- Task AssignRolesAsync(string userId, AssignUserRoleCommand request, CancellationToken cancellationToken);
- Task> GetUserRolesAsync(string userId, CancellationToken cancellationToken);
-}
diff --git a/src/api/framework/Core/Identity/Users/Dtos/UserDetail.cs b/src/api/framework/Core/Identity/Users/Dtos/UserDetail.cs
deleted file mode 100644
index 23941ad86c..0000000000
--- a/src/api/framework/Core/Identity/Users/Dtos/UserDetail.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-namespace FSH.Framework.Core.Identity.Users.Dtos;
-public class UserDetail
-{
- public Guid Id { get; set; }
-
- public string? UserName { get; set; }
-
- public string? FirstName { get; set; }
-
- public string? LastName { get; set; }
-
- public string? Email { get; set; }
-
- public bool IsActive { get; set; } = true;
-
- public bool EmailConfirmed { get; set; }
-
- public string? PhoneNumber { get; set; }
-
- public Uri? ImageUrl { get; set; }
-}
diff --git a/src/api/framework/Core/Identity/Users/Dtos/UserRoleDetail.cs b/src/api/framework/Core/Identity/Users/Dtos/UserRoleDetail.cs
deleted file mode 100644
index 935fd79b6e..0000000000
--- a/src/api/framework/Core/Identity/Users/Dtos/UserRoleDetail.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace FSH.Framework.Core.Identity.Users.Dtos;
-public class UserRoleDetail
-{
- public string? RoleId { get; set; }
- public string? RoleName { get; set; }
- public string? Description { get; set; }
- public bool Enabled { get; set; }
-}
diff --git a/src/api/framework/Core/Identity/Users/Features/AssignUserRole/AssignUserRoleCommand.cs b/src/api/framework/Core/Identity/Users/Features/AssignUserRole/AssignUserRoleCommand.cs
deleted file mode 100644
index 34f3fadb89..0000000000
--- a/src/api/framework/Core/Identity/Users/Features/AssignUserRole/AssignUserRoleCommand.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using FSH.Framework.Core.Identity.Users.Dtos;
-
-namespace FSH.Framework.Core.Identity.Users.Features.AssignUserRole;
-public class AssignUserRoleCommand
-{
- public List UserRoles { get; set; } = new();
-}
diff --git a/src/api/framework/Core/Identity/Users/Features/ChangePassword/ChangePasswordCommand.cs b/src/api/framework/Core/Identity/Users/Features/ChangePassword/ChangePasswordCommand.cs
deleted file mode 100644
index 82abe1323c..0000000000
--- a/src/api/framework/Core/Identity/Users/Features/ChangePassword/ChangePasswordCommand.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace FSH.Framework.Core.Identity.Users.Features.ChangePassword;
-public class ChangePasswordCommand
-{
- public string Password { get; set; } = default!;
- public string NewPassword { get; set; } = default!;
- public string ConfirmNewPassword { get; set; } = default!;
-}
diff --git a/src/api/framework/Core/Identity/Users/Features/ChangePassword/ChangePasswordValidator.cs b/src/api/framework/Core/Identity/Users/Features/ChangePassword/ChangePasswordValidator.cs
deleted file mode 100644
index 9d52f78856..0000000000
--- a/src/api/framework/Core/Identity/Users/Features/ChangePassword/ChangePasswordValidator.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using FluentValidation;
-
-namespace FSH.Framework.Core.Identity.Users.Features.ChangePassword;
-public class ChangePasswordValidator : AbstractValidator
-{
- public ChangePasswordValidator()
- {
- RuleFor(p => p.Password)
- .NotEmpty();
-
- RuleFor(p => p.NewPassword)
- .NotEmpty();
-
- RuleFor(p => p.ConfirmNewPassword)
- .Equal(p => p.NewPassword)
- .WithMessage("passwords do not match.");
- }
-}
diff --git a/src/api/framework/Core/Identity/Users/Features/ForgotPassword/ForgotPasswordCommand.cs b/src/api/framework/Core/Identity/Users/Features/ForgotPassword/ForgotPasswordCommand.cs
deleted file mode 100644
index 5419a554fb..0000000000
--- a/src/api/framework/Core/Identity/Users/Features/ForgotPassword/ForgotPasswordCommand.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-namespace FSH.Framework.Core.Identity.Users.Features.ForgotPassword;
-public class ForgotPasswordCommand
-{
- public string Email { get; set; } = default!;
-}
diff --git a/src/api/framework/Core/Identity/Users/Features/ForgotPassword/ForgotPasswordValidator.cs b/src/api/framework/Core/Identity/Users/Features/ForgotPassword/ForgotPasswordValidator.cs
deleted file mode 100644
index 2df57f5be4..0000000000
--- a/src/api/framework/Core/Identity/Users/Features/ForgotPassword/ForgotPasswordValidator.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using FluentValidation;
-
-namespace FSH.Framework.Core.Identity.Users.Features.ForgotPassword;
-public class ForgotPasswordValidator : AbstractValidator
-{
- public ForgotPasswordValidator()
- {
- RuleFor(p => p.Email).Cascade(CascadeMode.Stop)
- .NotEmpty()
- .EmailAddress();
- }
-}
diff --git a/src/api/framework/Core/Identity/Users/Features/RegisterUser/RegisterUserCommand.cs b/src/api/framework/Core/Identity/Users/Features/RegisterUser/RegisterUserCommand.cs
deleted file mode 100644
index 34089d0470..0000000000
--- a/src/api/framework/Core/Identity/Users/Features/RegisterUser/RegisterUserCommand.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System.Text.Json.Serialization;
-using MediatR;
-
-namespace FSH.Framework.Core.Identity.Users.Features.RegisterUser;
-public class RegisterUserCommand : IRequest
-{
- public string FirstName { get; set; } = default!;
- public string LastName { get; set; } = default!;
- public string Email { get; set; } = default!;
- public string UserName { get; set; } = default!;
- public string Password { get; set; } = default!;
- public string ConfirmPassword { get; set; } = default!;
- public string? PhoneNumber { get; set; }
-
- [JsonIgnore]
- public string? Origin { get; set; }
-}
diff --git a/src/api/framework/Core/Identity/Users/Features/RegisterUser/RegisterUserResponse.cs b/src/api/framework/Core/Identity/Users/Features/RegisterUser/RegisterUserResponse.cs
deleted file mode 100644
index 967539ae78..0000000000
--- a/src/api/framework/Core/Identity/Users/Features/RegisterUser/RegisterUserResponse.cs
+++ /dev/null
@@ -1,2 +0,0 @@
-namespace FSH.Framework.Core.Identity.Users.Features.RegisterUser;
-public record RegisterUserResponse(string UserId);
diff --git a/src/api/framework/Core/Identity/Users/Features/ResetPassword/ResetPasswordCommand.cs b/src/api/framework/Core/Identity/Users/Features/ResetPassword/ResetPasswordCommand.cs
deleted file mode 100644
index 244aff2e93..0000000000
--- a/src/api/framework/Core/Identity/Users/Features/ResetPassword/ResetPasswordCommand.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace FSH.Framework.Core.Identity.Users.Features.ResetPassword;
-public class ResetPasswordCommand
-{
- public string Email { get; set; } = default!;
-
- public string Password { get; set; } = default!;
-
- public string Token { get; set; } = default!;
-}
diff --git a/src/api/framework/Core/Identity/Users/Features/ResetPassword/ResetPasswordValidator.cs b/src/api/framework/Core/Identity/Users/Features/ResetPassword/ResetPasswordValidator.cs
deleted file mode 100644
index 4141905651..0000000000
--- a/src/api/framework/Core/Identity/Users/Features/ResetPassword/ResetPasswordValidator.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using FluentValidation;
-
-namespace FSH.Framework.Core.Identity.Users.Features.ResetPassword;
-
-public class ResetPasswordValidator : AbstractValidator
-{
- public ResetPasswordValidator()
- {
- RuleFor(x => x.Email).NotEmpty().EmailAddress();
- RuleFor(x => x.Password).NotEmpty();
- RuleFor(x => x.Token).NotEmpty();
- }
-}
diff --git a/src/api/framework/Core/Identity/Users/Features/ToggleUserStatus/ToggleUserStatusCommand.cs b/src/api/framework/Core/Identity/Users/Features/ToggleUserStatus/ToggleUserStatusCommand.cs
deleted file mode 100644
index 8b3697293e..0000000000
--- a/src/api/framework/Core/Identity/Users/Features/ToggleUserStatus/ToggleUserStatusCommand.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace FSH.Framework.Core.Identity.Users.Features.ToggleUserStatus;
-public class ToggleUserStatusCommand
-{
- public bool ActivateUser { get; set; }
- public string? UserId { get; set; }
-}
diff --git a/src/api/framework/Core/Identity/Users/Features/UpdateUser/UpdateUserCommand.cs b/src/api/framework/Core/Identity/Users/Features/UpdateUser/UpdateUserCommand.cs
deleted file mode 100644
index 470516218e..0000000000
--- a/src/api/framework/Core/Identity/Users/Features/UpdateUser/UpdateUserCommand.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using FSH.Framework.Core.Storage.File.Features;
-using MediatR;
-
-namespace FSH.Framework.Core.Identity.Users.Features.UpdateUser;
-public class UpdateUserCommand : IRequest
-{
- public string Id { get; set; } = default!;
- public string? FirstName { get; set; }
- public string? LastName { get; set; }
- public string? PhoneNumber { get; set; }
- public string? Email { get; set; }
- public FileUploadCommand? Image { get; set; }
- public bool DeleteCurrentImage { get; set; }
-}
diff --git a/src/api/framework/Core/Jobs/IJobService.cs b/src/api/framework/Core/Jobs/IJobService.cs
deleted file mode 100644
index 7016ae79d5..0000000000
--- a/src/api/framework/Core/Jobs/IJobService.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using System.Linq.Expressions;
-
-namespace FSH.Framework.Core.Jobs;
-
-public interface IJobService
-{
- bool Delete(string jobId);
-
- bool Delete(string jobId, string fromState);
-
- string Enqueue(Expression methodCall);
-
- string Enqueue(string queue, Expression> methodCall);
-
- string Enqueue(Expression> methodCall);
-
- string Enqueue(Expression> methodCall);
-
- string Enqueue(Expression> methodCall);
-
- bool Requeue(string jobId);
-
- bool Requeue(string jobId, string fromState);
-
- string Schedule(Expression methodCall, TimeSpan delay);
-
- string Schedule(Expression> methodCall, TimeSpan delay);
-
- string Schedule(Expression methodCall, DateTimeOffset enqueueAt);
-
- string Schedule(Expression> methodCall, DateTimeOffset enqueueAt);
-
- string Schedule(Expression> methodCall, TimeSpan delay);
-
- string Schedule(Expression> methodCall, TimeSpan delay);
-
- string Schedule(Expression> methodCall, DateTimeOffset enqueueAt);
-
- string Schedule(Expression> methodCall, DateTimeOffset enqueueAt);
-}
diff --git a/src/api/framework/Core/Mail/IMailService.cs b/src/api/framework/Core/Mail/IMailService.cs
deleted file mode 100644
index c5e000951b..0000000000
--- a/src/api/framework/Core/Mail/IMailService.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-namespace FSH.Framework.Core.Mail;
-public interface IMailService
-{
- Task SendAsync(MailRequest request, CancellationToken ct);
-}
diff --git a/src/api/framework/Core/Mail/MailOptions.cs b/src/api/framework/Core/Mail/MailOptions.cs
deleted file mode 100644
index 4b01169572..0000000000
--- a/src/api/framework/Core/Mail/MailOptions.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace FSH.Framework.Core.Mail;
-public class MailOptions
-{
- public string? From { get; set; }
-
- public string? Host { get; set; }
-
- public int Port { get; set; }
-
- public string? UserName { get; set; }
-
- public string? Password { get; set; }
-
- public string? DisplayName { get; set; }
-}
diff --git a/src/api/framework/Core/Mail/MailRequest.cs b/src/api/framework/Core/Mail/MailRequest.cs
deleted file mode 100644
index 662dcd4010..0000000000
--- a/src/api/framework/Core/Mail/MailRequest.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using System.Collections.ObjectModel;
-
-namespace FSH.Framework.Core.Mail;
-public class MailRequest(Collection to, string subject, string? body = null, string? from = null, string? displayName = null, string? replyTo = null, string? replyToName = null, Collection? bcc = null, Collection? cc = null, IDictionary? attachmentData = null, IDictionary? headers = null)
-{
- public Collection To { get; } = to;
-
- public string Subject { get; } = subject;
-
- public string? Body { get; } = body;
-
- public string? From { get; } = from;
-
- public string? DisplayName { get; } = displayName;
-
- public string? ReplyTo { get; } = replyTo;
-
- public string? ReplyToName { get; } = replyToName;
-
- public Collection Bcc { get; } = bcc ?? new Collection();
-
- public Collection Cc { get; } = cc ?? new Collection();
-
- public IDictionary AttachmentData { get; } = attachmentData ?? new Dictionary();
-
- public IDictionary Headers { get; } = headers ?? new Dictionary();
-}
diff --git a/src/api/framework/Core/Origin/OriginOptions.cs b/src/api/framework/Core/Origin/OriginOptions.cs
deleted file mode 100644
index 97e1c35423..0000000000
--- a/src/api/framework/Core/Origin/OriginOptions.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace FSH.Framework.Core.Origin;
-
-public class OriginOptions
-{
- public Uri? OriginUrl { get; set; }
-}
diff --git a/src/api/framework/Core/Paging/BaseFilter.cs b/src/api/framework/Core/Paging/BaseFilter.cs
deleted file mode 100644
index 2bb5b099be..0000000000
--- a/src/api/framework/Core/Paging/BaseFilter.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-namespace FSH.Framework.Core.Paging;
-
-public class BaseFilter
-{
- ///
- /// Column Wise Search is Supported.
- ///
- public Search? AdvancedSearch { get; set; }
-
- ///
- /// Keyword to Search in All the available columns of the Resource.
- ///
- public string? Keyword { get; set; }
-
- ///
- /// Advanced column filtering with logical operators and query operators is supported.
- ///
- public Filter? AdvancedFilter { get; set; }
-}
diff --git a/src/api/framework/Core/Paging/Extensions.cs b/src/api/framework/Core/Paging/Extensions.cs
deleted file mode 100644
index a9c5544eb9..0000000000
--- a/src/api/framework/Core/Paging/Extensions.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using Ardalis.Specification;
-
-namespace FSH.Framework.Core.Paging;
-public static class Extensions
-{
- public static async Task> PaginatedListAsync(
- this IReadRepositoryBase repository, ISpecification spec, PaginationFilter filter, CancellationToken cancellationToken = default)
- where T : class
- where TDestination : class
- {
- ArgumentNullException.ThrowIfNull(repository);
-
- var items = await repository.ListAsync(spec, cancellationToken).ConfigureAwait(false);
- int totalCount = await repository.CountAsync(spec, cancellationToken).ConfigureAwait(false);
-
- return new PagedList(items, filter.PageNumber, filter.PageSize, totalCount);
- }
-}
diff --git a/src/api/framework/Core/Paging/Filter.cs b/src/api/framework/Core/Paging/Filter.cs
deleted file mode 100644
index fdbdc29387..0000000000
--- a/src/api/framework/Core/Paging/Filter.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-namespace FSH.Framework.Core.Paging;
-
-public static class FilterOperator
-{
- public const string EQ = "eq";
- public const string NEQ = "neq";
- public const string LT = "lt";
- public const string LTE = "lte";
- public const string GT = "gt";
- public const string GTE = "gte";
- public const string STARTSWITH = "startswith";
- public const string ENDSWITH = "endswith";
- public const string CONTAINS = "contains";
-}
-
-public static class FilterLogic
-{
- public const string AND = "and";
- public const string OR = "or";
- public const string XOR = "xor";
-}
-
-public class Filter
-{
- public string? Logic { get; set; }
-
- public IEnumerable? Filters { get; set; }
-
- public string? Field { get; set; }
-
- public string? Operator { get; set; }
-
- public object? Value { get; set; }
-}
diff --git a/src/api/framework/Core/Paging/IPageRequest.cs b/src/api/framework/Core/Paging/IPageRequest.cs
deleted file mode 100644
index c4a2a7f147..0000000000
--- a/src/api/framework/Core/Paging/IPageRequest.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace FSH.Framework.Core.Paging;
-
-public interface IPageRequest
-{
- int PageNumber { get; init; }
- int PageSize { get; init; }
- string? Filters { get; init; }
- string? SortOrder { get; init; }
-}
diff --git a/src/api/framework/Core/Paging/IPagedList.cs b/src/api/framework/Core/Paging/IPagedList.cs
deleted file mode 100644
index e2950b3984..0000000000
--- a/src/api/framework/Core/Paging/IPagedList.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-namespace FSH.Framework.Core.Paging;
-
-public interface IPagedList
- where T : class
-{
- int TotalPages { get; }
- bool HasPrevious { get; }
- bool HasNext { get; }
- IReadOnlyList Items { get; init; }
- int TotalCount { get; init; }
- int PageNumber { get; init; }
- int PageSize { get; init; }
-
- IPagedList MapTo
(Func map)
- where TR : class;
- IPagedList MapTo
()
- where TR : class;
-}
diff --git a/src/api/framework/Core/Paging/PagedList.cs b/src/api/framework/Core/Paging/PagedList.cs
deleted file mode 100644
index 7f48292f7c..0000000000
--- a/src/api/framework/Core/Paging/PagedList.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using Mapster;
-
-namespace FSH.Framework.Core.Paging;
-
-public record PagedList(IReadOnlyList Items, int PageNumber, int PageSize, int TotalCount) : IPagedList
- where T : class
-{
- public int TotalPages => (int)Math.Ceiling(TotalCount / (double)PageSize);
- public bool HasPrevious => PageNumber > 1;
- public bool HasNext => PageNumber < TotalPages;
- public IPagedList MapTo
(Func map)
- where TR : class
- {
- return new PagedList(Items.Select(map).ToList(), PageNumber, PageSize, TotalCount);
- }
- public IPagedList
MapTo
()
- where TR : class
- {
- return new PagedList
(Items.Adapt>(), PageNumber, PageSize, TotalCount);
- }
-}
diff --git a/src/api/framework/Core/Paging/PaginationFilter.cs b/src/api/framework/Core/Paging/PaginationFilter.cs
deleted file mode 100644
index 13be4026ee..0000000000
--- a/src/api/framework/Core/Paging/PaginationFilter.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace FSH.Framework.Core.Paging;
-
-public class PaginationFilter : BaseFilter
-{
- public int PageNumber { get; set; }
-
- public int PageSize { get; set; } = int.MaxValue;
- public string[]? OrderBy { get; set; }
-}
-
-public static class PaginationFilterExtensions
-{
- public static bool HasOrderBy(this PaginationFilter filter) =>
- filter.OrderBy?.Any() is true;
-}
diff --git a/src/api/framework/Core/Paging/Search.cs b/src/api/framework/Core/Paging/Search.cs
deleted file mode 100644
index a2f2624980..0000000000
--- a/src/api/framework/Core/Paging/Search.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace FSH.Framework.Core.Paging;
-
-public class Search
-{
- public List Fields { get; set; } = new();
- public string? Keyword { get; set; }
-}
diff --git a/src/api/framework/Core/Persistence/DatabaseOptions.cs b/src/api/framework/Core/Persistence/DatabaseOptions.cs
deleted file mode 100644
index 5be4fb9e02..0000000000
--- a/src/api/framework/Core/Persistence/DatabaseOptions.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace FSH.Framework.Core.Persistence;
-public class DatabaseOptions : IValidatableObject
-{
- public string Provider { get; set; } = "postgresql";
- public string ConnectionString { get; set; } = string.Empty;
-
- public IEnumerable Validate(ValidationContext validationContext)
- {
- if (string.IsNullOrEmpty(ConnectionString))
- {
- yield return new ValidationResult("connection string cannot be empty.", new[] { nameof(ConnectionString) });
- }
- }
-}
diff --git a/src/api/framework/Core/Persistence/IConnectionStringValidator.cs b/src/api/framework/Core/Persistence/IConnectionStringValidator.cs
deleted file mode 100644
index 413e4fc76c..0000000000
--- a/src/api/framework/Core/Persistence/IConnectionStringValidator.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-namespace FSH.Framework.Core.Persistence;
-public interface IConnectionStringValidator
-{
- bool TryValidate(string connectionString, string? dbProvider = null);
-}
diff --git a/src/api/framework/Core/Persistence/IDbInitializer.cs b/src/api/framework/Core/Persistence/IDbInitializer.cs
deleted file mode 100644
index ed4a08c844..0000000000
--- a/src/api/framework/Core/Persistence/IDbInitializer.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace FSH.Framework.Core.Persistence;
-public interface IDbInitializer
-{
- Task MigrateAsync(CancellationToken cancellationToken);
- Task SeedAsync(CancellationToken cancellationToken);
-}
diff --git a/src/api/framework/Core/Persistence/IRepository.cs b/src/api/framework/Core/Persistence/IRepository.cs
deleted file mode 100644
index 3915bb3caa..0000000000
--- a/src/api/framework/Core/Persistence/IRepository.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using Ardalis.Specification;
-using FSH.Framework.Core.Domain.Contracts;
-
-namespace FSH.Framework.Core.Persistence;
-public interface IRepository : IRepositoryBase
- where T : class, IAggregateRoot
-{
-}
-
-public interface IReadRepository : IReadRepositoryBase
- where T : class, IAggregateRoot
-{
-}
diff --git a/src/api/framework/Core/Specifications/EntitiesByBaseFilterSpec.cs b/src/api/framework/Core/Specifications/EntitiesByBaseFilterSpec.cs
deleted file mode 100644
index 643bcb675a..0000000000
--- a/src/api/framework/Core/Specifications/EntitiesByBaseFilterSpec.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using Ardalis.Specification;
-using FSH.Framework.Core.Paging;
-
-namespace FSH.Framework.Core.Specifications;
-
-public class EntitiesByBaseFilterSpec : Specification
-{
- public EntitiesByBaseFilterSpec(BaseFilter filter) =>
- Query.SearchBy(filter);
-}
-
-public class EntitiesByBaseFilterSpec : Specification
-{
- public EntitiesByBaseFilterSpec(BaseFilter filter) =>
- Query.SearchBy(filter);
-}
diff --git a/src/api/framework/Core/Specifications/EntitiesByPaginationFilterSpec.cs b/src/api/framework/Core/Specifications/EntitiesByPaginationFilterSpec.cs
deleted file mode 100644
index abdf49eeb7..0000000000
--- a/src/api/framework/Core/Specifications/EntitiesByPaginationFilterSpec.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using FSH.Framework.Core.Paging;
-
-namespace FSH.Framework.Core.Specifications;
-
-public class EntitiesByPaginationFilterSpec : EntitiesByBaseFilterSpec
-{
- public EntitiesByPaginationFilterSpec(PaginationFilter filter)
- : base(filter) =>
- Query.PaginateBy(filter);
-}
-
-public class EntitiesByPaginationFilterSpec : EntitiesByBaseFilterSpec
-{
- public EntitiesByPaginationFilterSpec(PaginationFilter filter)
- : base(filter) =>
- Query.PaginateBy(filter);
-}
diff --git a/src/api/framework/Core/Specifications/SpecificationBuilderExtensions.cs b/src/api/framework/Core/Specifications/SpecificationBuilderExtensions.cs
deleted file mode 100644
index 81b352056d..0000000000
--- a/src/api/framework/Core/Specifications/SpecificationBuilderExtensions.cs
+++ /dev/null
@@ -1,348 +0,0 @@
-using System.Linq.Expressions;
-using System.Reflection;
-using System.Text.Json;
-using Ardalis.Specification;
-using FSH.Framework.Core.Exceptions;
-using FSH.Framework.Core.Paging;
-
-namespace FSH.Framework.Core.Specifications;
-
-// See https://github.com/ardalis/Specification/issues/53
-public static class SpecificationBuilderExtensions
-{
- public static ISpecificationBuilder SearchBy(this ISpecificationBuilder query, BaseFilter filter) =>
- query
- .SearchByKeyword(filter.Keyword)
- .AdvancedSearch(filter.AdvancedSearch)
- .AdvancedFilter(filter.AdvancedFilter);
-
- public static ISpecificationBuilder PaginateBy(this ISpecificationBuilder query, PaginationFilter filter)
- {
- if (filter.PageNumber <= 0)
- {
- filter.PageNumber = 1;
- }
-
- if (filter.PageSize <= 0)
- {
- filter.PageSize = 10;
- }
-
- if (filter.PageNumber > 1)
- {
- query = query.Skip((filter.PageNumber - 1) * filter.PageSize);
- }
-
- return query
- .Take(filter.PageSize)
- .OrderBy(filter.OrderBy);
- }
-
- public static IOrderedSpecificationBuilder SearchByKeyword(
- this ISpecificationBuilder specificationBuilder,
- string? keyword) =>
- specificationBuilder.AdvancedSearch(new Search { Keyword = keyword });
-
- public static IOrderedSpecificationBuilder AdvancedSearch(
- this ISpecificationBuilder specificationBuilder,
- Search? search)
- {
- if (!string.IsNullOrEmpty(search?.Keyword))
- {
- if (search.Fields?.Any() is true)
- {
- // search seleted fields (can contain deeper nested fields)
- foreach (string field in search.Fields)
- {
- var paramExpr = Expression.Parameter(typeof(T));
- MemberExpression propertyExpr = GetPropertyExpression(field, paramExpr);
-
- specificationBuilder.AddSearchPropertyByKeyword(propertyExpr, paramExpr, search.Keyword);
- }
- }
- else
- {
- // search all fields (only first level)
- foreach (var property in typeof(T).GetProperties()
- .Where(prop => (Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType) is { } propertyType
- && !propertyType.IsEnum
- && Type.GetTypeCode(propertyType) != TypeCode.Object))
- {
- var paramExpr = Expression.Parameter(typeof(T));
- var propertyExpr = Expression.Property(paramExpr, property);
-
- specificationBuilder.AddSearchPropertyByKeyword(propertyExpr, paramExpr, search.Keyword);
- }
- }
- }
-
- return new OrderedSpecificationBuilder(specificationBuilder.Specification);
- }
-
- private static void AddSearchPropertyByKeyword(
- this ISpecificationBuilder specificationBuilder,
- Expression propertyExpr,
- ParameterExpression paramExpr,
- string keyword,
- string operatorSearch = FilterOperator.CONTAINS)
- {
- if (propertyExpr is not MemberExpression memberExpr || memberExpr.Member is not PropertyInfo property)
- {
- throw new ArgumentException("propertyExpr must be a property expression.", nameof(propertyExpr));
- }
-
- string searchTerm = operatorSearch switch
- {
- FilterOperator.STARTSWITH => $"{keyword.ToLower()}%",
- FilterOperator.ENDSWITH => $"%{keyword.ToLower()}",
- FilterOperator.CONTAINS => $"%{keyword.ToLower()}%",
- _ => throw new ArgumentException("operatorSearch is not valid.", nameof(operatorSearch))
- };
-
- // Generate lambda [ x => x.Property ] for string properties
- // or [ x => ((object)x.Property) == null ? null : x.Property.ToString() ] for other properties
- Expression selectorExpr =
- property.PropertyType == typeof(string)
- ? propertyExpr
- : Expression.Condition(
- Expression.Equal(Expression.Convert(propertyExpr, typeof(object)), Expression.Constant(null, typeof(object))),
- Expression.Constant(null, typeof(string)),
- Expression.Call(propertyExpr, "ToString", null, null));
-
- var toLowerMethod = typeof(string).GetMethod("ToLower", Type.EmptyTypes);
- Expression callToLowerMethod = Expression.Call(selectorExpr, toLowerMethod!);
-
- var selector = Expression.Lambda>(callToLowerMethod, paramExpr);
-
- ((List>)specificationBuilder.Specification.SearchCriterias)
- .Add(new SearchExpressionInfo(selector, searchTerm, 1));
- }
-
- public static IOrderedSpecificationBuilder AdvancedFilter(
- this ISpecificationBuilder specificationBuilder,
- Filter? filter)
- {
- if (filter is not null)
- {
- var parameter = Expression.Parameter(typeof(T));
-
- Expression binaryExpresioFilter;
-
- if (!string.IsNullOrEmpty(filter.Logic))
- {
- if (filter.Filters is null) throw new CustomException("The Filters attribute is required when declaring a logic");
- binaryExpresioFilter = CreateFilterExpression(filter.Logic, filter.Filters, parameter);
- }
- else
- {
- var filterValid = GetValidFilter(filter);
- binaryExpresioFilter = CreateFilterExpression(filterValid.Field!, filterValid.Operator!, filterValid.Value, parameter);
- }
-
- ((List>)specificationBuilder.Specification.WhereExpressions)
- .Add(new WhereExpressionInfo(Expression.Lambda>(binaryExpresioFilter, parameter)));
- }
-
- return new OrderedSpecificationBuilder(specificationBuilder.Specification);
- }
-
- private static Expression CreateFilterExpression(
- string logic,
- IEnumerable filters,
- ParameterExpression parameter)
- {
- Expression filterExpression = default!;
-
- foreach (var filter in filters)
- {
- Expression bExpresionFilter;
-
- if (!string.IsNullOrEmpty(filter.Logic))
- {
- if (filter.Filters is null) throw new CustomException("The Filters attribute is required when declaring a logic");
- bExpresionFilter = CreateFilterExpression(filter.Logic, filter.Filters, parameter);
- }
- else
- {
- var filterValid = GetValidFilter(filter);
- bExpresionFilter = CreateFilterExpression(filterValid.Field!, filterValid.Operator!, filterValid.Value, parameter);
- }
-
- filterExpression = filterExpression is null ? bExpresionFilter : CombineFilter(logic, filterExpression, bExpresionFilter);
- }
-
- return filterExpression;
- }
-
- private static Expression CreateFilterExpression(
- string field,
- string filterOperator,
- object? value,
- ParameterExpression parameter)
- {
- var propertyExpresion = GetPropertyExpression(field, parameter);
- var valueExpresion = GeValuetExpression(field, value, propertyExpresion.Type);
- return CreateFilterExpression(propertyExpresion, valueExpresion, filterOperator);
- }
-
- private static Expression CreateFilterExpression(
- Expression memberExpression,
- Expression constantExpression,
- string filterOperator)
- {
- if (memberExpression.Type == typeof(string))
- {
- constantExpression = Expression.Call(constantExpression, "ToLower", null);
- memberExpression = Expression.Call(memberExpression, "ToLower", null);
- }
-
- return filterOperator switch
- {
- FilterOperator.EQ => Expression.Equal(memberExpression, constantExpression),
- FilterOperator.NEQ => Expression.NotEqual(memberExpression, constantExpression),
- FilterOperator.LT => Expression.LessThan(memberExpression, constantExpression),
- FilterOperator.LTE => Expression.LessThanOrEqual(memberExpression, constantExpression),
- FilterOperator.GT => Expression.GreaterThan(memberExpression, constantExpression),
- FilterOperator.GTE => Expression.GreaterThanOrEqual(memberExpression, constantExpression),
- FilterOperator.CONTAINS => Expression.Call(memberExpression, "Contains", null, constantExpression),
- FilterOperator.STARTSWITH => Expression.Call(memberExpression, "StartsWith", null, constantExpression),
- FilterOperator.ENDSWITH => Expression.Call(memberExpression, "EndsWith", null, constantExpression),
- _ => throw new CustomException("Filter Operator is not valid."),
- };
- }
-
- private static Expression CombineFilter(
- string filterOperator,
- Expression bExpresionBase,
- Expression bExpresion) => filterOperator switch
- {
- FilterLogic.AND => Expression.And(bExpresionBase, bExpresion),
- FilterLogic.OR => Expression.Or(bExpresionBase, bExpresion),
- FilterLogic.XOR => Expression.ExclusiveOr(bExpresionBase, bExpresion),
- _ => throw new ArgumentException("FilterLogic is not valid."),
- };
-
- private static MemberExpression GetPropertyExpression(
- string propertyName,
- ParameterExpression parameter)
- {
- Expression propertyExpression = parameter;
- foreach (string member in propertyName.Split('.'))
- {
- propertyExpression = Expression.PropertyOrField(propertyExpression, member);
- }
-
- return (MemberExpression)propertyExpression;
- }
-
- private static string GetStringFromJsonElement(object value)
- => ((JsonElement)value).GetString()!;
-
- private static ConstantExpression GeValuetExpression(
- string field,
- object? value,
- Type propertyType)
- {
- if (value == null) return Expression.Constant(null, propertyType);
-
- if (propertyType.IsEnum)
- {
- string? stringEnum = GetStringFromJsonElement(value);
-
- if (!Enum.TryParse(propertyType, stringEnum, true, out object? valueparsed)) throw new CustomException(string.Format("Value {0} is not valid for {1}", value, field));
-
- return Expression.Constant(valueparsed, propertyType);
- }
-
- if (propertyType == typeof(Guid))
- {
- string? stringGuid = GetStringFromJsonElement(value);
-
- if (!Guid.TryParse(stringGuid, out Guid valueparsed)) throw new CustomException(string.Format("Value {0} is not valid for {1}", value, field));
-
- return Expression.Constant(valueparsed, propertyType);
- }
-
- if (propertyType == typeof(string))
- {
- string? text = GetStringFromJsonElement(value);
-
- return Expression.Constant(text, propertyType);
- }
-
- if (propertyType == typeof(DateTime) || propertyType == typeof(DateTime?))
- {
- string? text = GetStringFromJsonElement(value);
- return Expression.Constant(ChangeType(text, propertyType), propertyType);
- }
-
- return Expression.Constant(ChangeType(((JsonElement)value).GetRawText(), propertyType), propertyType);
- }
-
- public static dynamic? ChangeType(object value, Type conversion)
- {
- var t = conversion;
-
- if (t.IsGenericType && t.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
- {
- if (value == null)
- {
- return null;
- }
-
- t = Nullable.GetUnderlyingType(t);
- }
-
- return Convert.ChangeType(value, t!);
- }
-
- private static Filter GetValidFilter(Filter filter)
- {
- if (string.IsNullOrEmpty(filter.Field)) throw new CustomException("The field attribute is required when declaring a filter");
- if (string.IsNullOrEmpty(filter.Operator)) throw new CustomException("The Operator attribute is required when declaring a filter");
- return filter;
- }
-
- public static IOrderedSpecificationBuilder OrderBy(
- this ISpecificationBuilder specificationBuilder,
- string[]? orderByFields)
- {
- if (orderByFields is not null)
- {
- foreach (var field in ParseOrderBy(orderByFields))
- {
- var paramExpr = Expression.Parameter(typeof(T));
-
- Expression propertyExpr = paramExpr;
- foreach (string member in field.Key.Split('.'))
- {
- propertyExpr = Expression.PropertyOrField(propertyExpr, member);
- }
-
- var keySelector = Expression.Lambda>(
- Expression.Convert(propertyExpr, typeof(object)),
- paramExpr);
-
- ((List>)specificationBuilder.Specification.OrderExpressions)
- .Add(new OrderExpressionInfo(keySelector, field.Value));
- }
- }
-
- return new OrderedSpecificationBuilder(specificationBuilder.Specification);
- }
-
- private static Dictionary ParseOrderBy(string[] orderByFields) =>
- new(orderByFields.Select((orderByfield, index) =>
- {
- string[] fieldParts = orderByfield.Split(' ');
- string field = fieldParts[0];
- bool descending = fieldParts.Length > 1 && fieldParts[1].StartsWith("Desc", StringComparison.OrdinalIgnoreCase);
- var orderBy = index == 0
- ? descending ? OrderTypeEnum.OrderByDescending
- : OrderTypeEnum.OrderBy
- : descending ? OrderTypeEnum.ThenByDescending
- : OrderTypeEnum.ThenBy;
-
- return new KeyValuePair(field, orderBy);
- }));
-}
diff --git a/src/api/framework/Core/Storage/File/Features/FileUploadCommand.cs b/src/api/framework/Core/Storage/File/Features/FileUploadCommand.cs
deleted file mode 100644
index c4e5cb0e53..0000000000
--- a/src/api/framework/Core/Storage/File/Features/FileUploadCommand.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using MediatR;
-
-namespace FSH.Framework.Core.Storage.File.Features;
-
-public class FileUploadCommand : IRequest
-{
- public string Name { get; set; } = default!;
- public string Extension { get; set; } = default!;
- public string Data { get; set; } = default!;
-}
-
diff --git a/src/api/framework/Core/Storage/File/Features/FileUploadResponse.cs b/src/api/framework/Core/Storage/File/Features/FileUploadResponse.cs
deleted file mode 100644
index f3af35debf..0000000000
--- a/src/api/framework/Core/Storage/File/Features/FileUploadResponse.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace FSH.Framework.Core.Storage.File.Features;
-
-public class FileUploadResponse
-{
- public Uri Url { get; set; } = default!;
-}
-
diff --git a/src/api/framework/Core/Storage/File/Features/FileUploadValidator.cs b/src/api/framework/Core/Storage/File/Features/FileUploadValidator.cs
deleted file mode 100644
index c064cf93f3..0000000000
--- a/src/api/framework/Core/Storage/File/Features/FileUploadValidator.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using FluentValidation;
-
-namespace FSH.Framework.Core.Storage.File.Features;
-
-public class FileUploadRequestValidator : AbstractValidator
-{
- public FileUploadRequestValidator()
- {
- RuleFor(p => p.Name)
- .NotEmpty()
- .MaximumLength(150);
-
- RuleFor(p => p.Extension)
- .NotEmpty()
- .MaximumLength(5);
-
- RuleFor(p => p.Data)
- .NotEmpty();
- }
-}
-
diff --git a/src/api/framework/Core/Storage/File/FileType.cs b/src/api/framework/Core/Storage/File/FileType.cs
deleted file mode 100644
index 267968aaa6..0000000000
--- a/src/api/framework/Core/Storage/File/FileType.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using System.ComponentModel;
-
-namespace FSH.Framework.Core.Storage.File;
-
-public enum FileType
-{
- [Description(".jpg,.png,.jpeg")]
- Image
-}
diff --git a/src/api/framework/Core/Storage/IStorageService.cs b/src/api/framework/Core/Storage/IStorageService.cs
deleted file mode 100644
index 5e13d6ddec..0000000000
--- a/src/api/framework/Core/Storage/IStorageService.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using FSH.Framework.Core.Storage.File;
-using FSH.Framework.Core.Storage.File.Features;
-
-namespace FSH.Framework.Core.Storage;
-
-public interface IStorageService
-{
- public Task UploadAsync(FileUploadCommand? request, FileType supportedFileType, CancellationToken cancellationToken = default)
- where T : class;
-
- public void Remove(Uri? path);
-}
diff --git a/src/api/framework/Core/Tenant/Abstractions/ITenantService.cs b/src/api/framework/Core/Tenant/Abstractions/ITenantService.cs
deleted file mode 100644
index d2540a2ff3..0000000000
--- a/src/api/framework/Core/Tenant/Abstractions/ITenantService.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using FSH.Framework.Core.Tenant.Dtos;
-using FSH.Framework.Core.Tenant.Features.CreateTenant;
-
-namespace FSH.Framework.Core.Tenant.Abstractions;
-
-public interface ITenantService
-{
- Task> GetAllAsync();
-
- Task ExistsWithIdAsync(string id);
-
- Task ExistsWithNameAsync(string name);
-
- Task GetByIdAsync(string id);
-
- Task CreateAsync(CreateTenantCommand request, CancellationToken cancellationToken);
-
- Task ActivateAsync(string id, CancellationToken cancellationToken);
-
- Task DeactivateAsync(string id);
-
- Task UpgradeSubscription(string id, DateTime extendedExpiryDate);
-}
diff --git a/src/api/framework/Core/Tenant/Dtos/TenantDetail.cs b/src/api/framework/Core/Tenant/Dtos/TenantDetail.cs
deleted file mode 100644
index c9e44f8b7d..0000000000
--- a/src/api/framework/Core/Tenant/Dtos/TenantDetail.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-namespace FSH.Framework.Core.Tenant.Dtos;
-public class TenantDetail
-{
- public string Id { get; set; } = default!;
- public string Name { get; set; } = default!;
- public string? ConnectionString { get; set; }
- public string AdminEmail { get; set; } = default!;
- public bool IsActive { get; set; }
- public DateTime ValidUpto { get; set; }
- public string? Issuer { get; set; }
-}
diff --git a/src/api/framework/Core/Tenant/Features/ActivateTenant/ActivateTenantCommand.cs b/src/api/framework/Core/Tenant/Features/ActivateTenant/ActivateTenantCommand.cs
deleted file mode 100644
index 01f902dfc9..0000000000
--- a/src/api/framework/Core/Tenant/Features/ActivateTenant/ActivateTenantCommand.cs
+++ /dev/null
@@ -1,4 +0,0 @@
-using MediatR;
-
-namespace FSH.Framework.Core.Tenant.Features.ActivateTenant;
-public record ActivateTenantCommand(string TenantId) : IRequest;
diff --git a/src/api/framework/Core/Tenant/Features/ActivateTenant/ActivateTenantHandler.cs b/src/api/framework/Core/Tenant/Features/ActivateTenant/ActivateTenantHandler.cs
deleted file mode 100644
index ab018e532e..0000000000
--- a/src/api/framework/Core/Tenant/Features/ActivateTenant/ActivateTenantHandler.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using FSH.Framework.Core.Tenant.Abstractions;
-using MediatR;
-
-namespace FSH.Framework.Core.Tenant.Features.ActivateTenant;
-public sealed class ActivateTenantHandler(ITenantService service) : IRequestHandler
-{
- public async Task Handle(ActivateTenantCommand request, CancellationToken cancellationToken)
- {
- var status = await service.ActivateAsync(request.TenantId, cancellationToken);
- return new ActivateTenantResponse(status);
- }
-}
diff --git a/src/api/framework/Core/Tenant/Features/ActivateTenant/ActivateTenantResponse.cs b/src/api/framework/Core/Tenant/Features/ActivateTenant/ActivateTenantResponse.cs
deleted file mode 100644
index bd396891df..0000000000
--- a/src/api/framework/Core/Tenant/Features/ActivateTenant/ActivateTenantResponse.cs
+++ /dev/null
@@ -1,2 +0,0 @@
-namespace FSH.Framework.Core.Tenant.Features.ActivateTenant;
-public record ActivateTenantResponse(string Status);
diff --git a/src/api/framework/Core/Tenant/Features/ActivateTenant/ActivateTenantValidator.cs b/src/api/framework/Core/Tenant/Features/ActivateTenant/ActivateTenantValidator.cs
deleted file mode 100644
index de9bceb45e..0000000000
--- a/src/api/framework/Core/Tenant/Features/ActivateTenant/ActivateTenantValidator.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using FluentValidation;
-
-namespace FSH.Framework.Core.Tenant.Features.ActivateTenant;
-public sealed class ActivateTenantValidator : AbstractValidator
-{
- public ActivateTenantValidator() =>
- RuleFor(t => t.TenantId)
- .NotEmpty();
-}
diff --git a/src/api/framework/Core/Tenant/Features/CreateTenant/CreateTenantCommand.cs b/src/api/framework/Core/Tenant/Features/CreateTenant/CreateTenantCommand.cs
deleted file mode 100644
index a6bec85931..0000000000
--- a/src/api/framework/Core/Tenant/Features/CreateTenant/CreateTenantCommand.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using MediatR;
-
-namespace FSH.Framework.Core.Tenant.Features.CreateTenant;
-public sealed record CreateTenantCommand(string Id,
- string Name,
- string? ConnectionString,
- string AdminEmail,
- string? Issuer) : IRequest;
diff --git a/src/api/framework/Core/Tenant/Features/CreateTenant/CreateTenantHandler.cs b/src/api/framework/Core/Tenant/Features/CreateTenant/CreateTenantHandler.cs
deleted file mode 100644
index d948367cb8..0000000000
--- a/src/api/framework/Core/Tenant/Features/CreateTenant/CreateTenantHandler.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using FSH.Framework.Core.Tenant.Abstractions;
-using MediatR;
-
-namespace FSH.Framework.Core.Tenant.Features.CreateTenant;
-public sealed class CreateTenantHandler(ITenantService service) : IRequestHandler
-{
- public async Task Handle(CreateTenantCommand request, CancellationToken cancellationToken)
- {
- var tenantId = await service.CreateAsync(request, cancellationToken);
- return new CreateTenantResponse(tenantId);
- }
-}
diff --git a/src/api/framework/Core/Tenant/Features/CreateTenant/CreateTenantResponse.cs b/src/api/framework/Core/Tenant/Features/CreateTenant/CreateTenantResponse.cs
deleted file mode 100644
index 7a778e4f79..0000000000
--- a/src/api/framework/Core/Tenant/Features/CreateTenant/CreateTenantResponse.cs
+++ /dev/null
@@ -1,2 +0,0 @@
-namespace FSH.Framework.Core.Tenant.Features.CreateTenant;
-public record CreateTenantResponse(string Id);
diff --git a/src/api/framework/Core/Tenant/Features/CreateTenant/CreateTenantValidator.cs b/src/api/framework/Core/Tenant/Features/CreateTenant/CreateTenantValidator.cs
deleted file mode 100644
index 16e9816afb..0000000000
--- a/src/api/framework/Core/Tenant/Features/CreateTenant/CreateTenantValidator.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using FluentValidation;
-using FSH.Framework.Core.Persistence;
-using FSH.Framework.Core.Tenant.Abstractions;
-
-namespace FSH.Framework.Core.Tenant.Features.CreateTenant;
-public class CreateTenantValidator : AbstractValidator
-{
- public CreateTenantValidator(
- ITenantService tenantService,
- IConnectionStringValidator connectionStringValidator)
- {
- RuleFor(t => t.Id).Cascade(CascadeMode.Stop)
- .NotEmpty()
- .MustAsync(async (id, _) => !await tenantService.ExistsWithIdAsync(id).ConfigureAwait(false))
- .WithMessage((_, id) => $"Tenant {id} already exists.");
-
- RuleFor(t => t.Name).Cascade(CascadeMode.Stop)
- .NotEmpty()
- .MustAsync(async (name, _) => !await tenantService.ExistsWithNameAsync(name!).ConfigureAwait(false))
- .WithMessage((_, name) => $"Tenant {name} already exists.");
-
- RuleFor(t => t.ConnectionString).Cascade(CascadeMode.Stop)
- .Must((_, cs) => string.IsNullOrWhiteSpace(cs) || connectionStringValidator.TryValidate(cs))
- .WithMessage("Connection string invalid.");
-
- RuleFor(t => t.AdminEmail).Cascade(CascadeMode.Stop)
- .NotEmpty()
- .EmailAddress();
- }
-}
diff --git a/src/api/framework/Core/Tenant/Features/DisableTenant/DisableTenantCommand.cs b/src/api/framework/Core/Tenant/Features/DisableTenant/DisableTenantCommand.cs
deleted file mode 100644
index bc0dc1fa95..0000000000
--- a/src/api/framework/Core/Tenant/Features/DisableTenant/DisableTenantCommand.cs
+++ /dev/null
@@ -1,4 +0,0 @@
-using MediatR;
-
-namespace FSH.Framework.Core.Tenant.Features.DisableTenant;
-public record DisableTenantCommand(string TenantId) : IRequest;
diff --git a/src/api/framework/Core/Tenant/Features/DisableTenant/DisableTenantHandler.cs b/src/api/framework/Core/Tenant/Features/DisableTenant/DisableTenantHandler.cs
deleted file mode 100644
index d9cad8dcbd..0000000000
--- a/src/api/framework/Core/Tenant/Features/DisableTenant/DisableTenantHandler.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using FSH.Framework.Core.Tenant.Abstractions;
-using MediatR;
-
-namespace FSH.Framework.Core.Tenant.Features.DisableTenant;
-public sealed class DisableTenantHandler(ITenantService service) : IRequestHandler
-{
- public async Task Handle(DisableTenantCommand request, CancellationToken cancellationToken)
- {
- var status = await service.DeactivateAsync(request.TenantId);
- return new DisableTenantResponse(status);
- }
-}
diff --git a/src/api/framework/Core/Tenant/Features/DisableTenant/DisableTenantResponse.cs b/src/api/framework/Core/Tenant/Features/DisableTenant/DisableTenantResponse.cs
deleted file mode 100644
index 89ce0c0538..0000000000
--- a/src/api/framework/Core/Tenant/Features/DisableTenant/DisableTenantResponse.cs
+++ /dev/null
@@ -1,2 +0,0 @@
-namespace FSH.Framework.Core.Tenant.Features.DisableTenant;
-public record DisableTenantResponse(string Status);
diff --git a/src/api/framework/Core/Tenant/Features/DisableTenant/DisableTenantValidator.cs b/src/api/framework/Core/Tenant/Features/DisableTenant/DisableTenantValidator.cs
deleted file mode 100644
index 2c0831e209..0000000000
--- a/src/api/framework/Core/Tenant/Features/DisableTenant/DisableTenantValidator.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using FluentValidation;
-
-namespace FSH.Framework.Core.Tenant.Features.DisableTenant;
-public sealed class DisableTenantValidator : AbstractValidator
-{
- public DisableTenantValidator() =>
- RuleFor(t => t.TenantId)
- .NotEmpty();
-}
diff --git a/src/api/framework/Core/Tenant/Features/GetTenantById/GetTenantByIdHandler.cs b/src/api/framework/Core/Tenant/Features/GetTenantById/GetTenantByIdHandler.cs
deleted file mode 100644
index ec8e68737c..0000000000
--- a/src/api/framework/Core/Tenant/Features/GetTenantById/GetTenantByIdHandler.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using FSH.Framework.Core.Tenant.Abstractions;
-using FSH.Framework.Core.Tenant.Dtos;
-using MediatR;
-
-namespace FSH.Framework.Core.Tenant.Features.GetTenantById;
-public sealed class GetTenantByIdHandler(ITenantService service) : IRequestHandler
-{
- public async Task Handle(GetTenantByIdQuery request, CancellationToken cancellationToken)
- {
- return await service.GetByIdAsync(request.TenantId);
- }
-}
diff --git a/src/api/framework/Core/Tenant/Features/GetTenantById/GetTenantByIdQuery.cs b/src/api/framework/Core/Tenant/Features/GetTenantById/GetTenantByIdQuery.cs
deleted file mode 100644
index 9f75bc68c4..0000000000
--- a/src/api/framework/Core/Tenant/Features/GetTenantById/GetTenantByIdQuery.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-using FSH.Framework.Core.Tenant.Dtos;
-using MediatR;
-
-namespace FSH.Framework.Core.Tenant.Features.GetTenantById;
-public record GetTenantByIdQuery(string TenantId) : IRequest;
diff --git a/src/api/framework/Core/Tenant/Features/GetTenants/GetTenantsHandler.cs b/src/api/framework/Core/Tenant/Features/GetTenants/GetTenantsHandler.cs
deleted file mode 100644
index 1ccd5f90eb..0000000000
--- a/src/api/framework/Core/Tenant/Features/GetTenants/GetTenantsHandler.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using FSH.Framework.Core.Tenant.Abstractions;
-using FSH.Framework.Core.Tenant.Dtos;
-using MediatR;
-
-namespace FSH.Framework.Core.Tenant.Features.GetTenants;
-public sealed class GetTenantsHandler(ITenantService service) : IRequestHandler>
-{
- public Task> Handle(GetTenantsQuery request, CancellationToken cancellationToken)
- {
- return service.GetAllAsync();
- }
-}
diff --git a/src/api/framework/Core/Tenant/Features/GetTenants/GetTenantsQuery.cs b/src/api/framework/Core/Tenant/Features/GetTenants/GetTenantsQuery.cs
deleted file mode 100644
index dba6bc1896..0000000000
--- a/src/api/framework/Core/Tenant/Features/GetTenants/GetTenantsQuery.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-using FSH.Framework.Core.Tenant.Dtos;
-using MediatR;
-
-namespace FSH.Framework.Core.Tenant.Features.GetTenants;
-public sealed class GetTenantsQuery : IRequest>;
diff --git a/src/api/framework/Core/Tenant/Features/UpgradeSubscription/UpgradeSubscriptionCommand.cs b/src/api/framework/Core/Tenant/Features/UpgradeSubscription/UpgradeSubscriptionCommand.cs
deleted file mode 100644
index f132f455b7..0000000000
--- a/src/api/framework/Core/Tenant/Features/UpgradeSubscription/UpgradeSubscriptionCommand.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using MediatR;
-
-namespace FSH.Framework.Core.Tenant.Features.UpgradeSubscription;
-public class UpgradeSubscriptionCommand : IRequest
-{
- public string Tenant { get; set; } = default!;
- public DateTime ExtendedExpiryDate { get; set; }
-}
diff --git a/src/api/framework/Core/Tenant/Features/UpgradeSubscription/UpgradeSubscriptionHandler.cs b/src/api/framework/Core/Tenant/Features/UpgradeSubscription/UpgradeSubscriptionHandler.cs
deleted file mode 100644
index e4cbbb4e7a..0000000000
--- a/src/api/framework/Core/Tenant/Features/UpgradeSubscription/UpgradeSubscriptionHandler.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using FSH.Framework.Core.Tenant.Abstractions;
-using MediatR;
-
-namespace FSH.Framework.Core.Tenant.Features.UpgradeSubscription;
-
-public class UpgradeSubscriptionHandler : IRequestHandler
-{
- private readonly ITenantService _tenantService;
-
- public UpgradeSubscriptionHandler(ITenantService tenantService) => _tenantService = tenantService;
-
- public async Task Handle(UpgradeSubscriptionCommand request, CancellationToken cancellationToken)
- {
- var validUpto = await _tenantService.UpgradeSubscription(request.Tenant, request.ExtendedExpiryDate);
- return new UpgradeSubscriptionResponse(validUpto, request.Tenant);
- }
-}
diff --git a/src/api/framework/Core/Tenant/Features/UpgradeSubscription/UpgradeSubscriptionResponse.cs b/src/api/framework/Core/Tenant/Features/UpgradeSubscription/UpgradeSubscriptionResponse.cs
deleted file mode 100644
index ef14487b74..0000000000
--- a/src/api/framework/Core/Tenant/Features/UpgradeSubscription/UpgradeSubscriptionResponse.cs
+++ /dev/null
@@ -1,2 +0,0 @@
-namespace FSH.Framework.Core.Tenant.Features.UpgradeSubscription;
-public record UpgradeSubscriptionResponse(DateTime NewValidity, string Tenant);
diff --git a/src/api/framework/Core/Tenant/Features/UpgradeSubscription/UpgradeSubscriptionValidator.cs b/src/api/framework/Core/Tenant/Features/UpgradeSubscription/UpgradeSubscriptionValidator.cs
deleted file mode 100644
index daddf1fbf1..0000000000
--- a/src/api/framework/Core/Tenant/Features/UpgradeSubscription/UpgradeSubscriptionValidator.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using FluentValidation;
-
-namespace FSH.Framework.Core.Tenant.Features.UpgradeSubscription;
-public class UpgradeSubscriptionValidator : AbstractValidator
-{
- public UpgradeSubscriptionValidator()
- {
- RuleFor(t => t.Tenant).NotEmpty();
- RuleFor(t => t.ExtendedExpiryDate).GreaterThan(DateTime.UtcNow);
- }
-}
diff --git a/src/api/framework/Infrastructure/Auth/CurrentUserMiddleware.cs b/src/api/framework/Infrastructure/Auth/CurrentUserMiddleware.cs
deleted file mode 100644
index b4deef0872..0000000000
--- a/src/api/framework/Infrastructure/Auth/CurrentUserMiddleware.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using FSH.Framework.Core.Identity.Users.Abstractions;
-using Microsoft.AspNetCore.Http;
-
-namespace FSH.Framework.Infrastructure.Auth;
-public class CurrentUserMiddleware(ICurrentUserInitializer currentUserInitializer) : IMiddleware
-{
- private readonly ICurrentUserInitializer _currentUserInitializer = currentUserInitializer;
-
- public async Task InvokeAsync(HttpContext context, RequestDelegate next)
- {
- _currentUserInitializer.SetCurrentUser(context.User);
- await next(context);
- }
-}
diff --git a/src/api/framework/Infrastructure/Auth/Jwt/ConfigureJwtBearerOptions.cs b/src/api/framework/Infrastructure/Auth/Jwt/ConfigureJwtBearerOptions.cs
deleted file mode 100644
index 8e495d207b..0000000000
--- a/src/api/framework/Infrastructure/Auth/Jwt/ConfigureJwtBearerOptions.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-using System.Security.Claims;
-using System.Text;
-using FSH.Framework.Core.Auth.Jwt;
-using FSH.Framework.Core.Exceptions;
-using Microsoft.AspNetCore.Authentication.JwtBearer;
-using Microsoft.Extensions.Options;
-using Microsoft.IdentityModel.Tokens;
-
-namespace FSH.Framework.Infrastructure.Auth.Jwt;
-public class ConfigureJwtBearerOptions : IConfigureNamedOptions