{
  "leansignal_demand_export": "1.0",
  "exported_at": "2026-07-17T00:00:00Z",
  "source_tenant": "leansignal-catalog",
  "catalog": {
    "slug": "host-metrics-otel-demand-standard",
    "integration": "host-metrics",
    "variant": "standard",
    "title": "Host Metrics — Standard",
    "category": "Infrastructure",
    "dashboards": 1,
    "panels": 7,
    "alerts": 5,
    "docs_url": "https://docs.leansignal.io/integrations/host-metrics/"
  },
  "demand": {
    "ref": "demand",
    "name": "Host Metrics — Standard (OpenTelemetry)",
    "description": "A well-rounded host overview: adds per-state memory, disk I/O, and network errors, with paired warning/critical alerting. Still default-enabled metrics only. The recommended default for most fleets.",
    "dashboards": [
      {
        "ref": "dash-host-metrics",
        "name": "Host Metrics — Standard",
        "description": "Host-level metrics from the OpenTelemetry hostmetrics receiver (standard variant).",
        "data": {
          "display": {
            "name": "Host Metrics — Standard"
          },
          "panels": {
            "load_average": {
              "kind": "Panel",
              "spec": {
                "display": {
                  "name": "Load average",
                  "description": "Runnable tasks averaged over 1/5/15 minutes — sustained load above the cores line means saturation."
                },
                "plugin": {
                  "kind": "TimeSeriesChart",
                  "spec": {
                    "legend": {
                      "position": "bottom",
                      "mode": "table",
                      "values": [
                        "last-number",
                        "mean",
                        "max"
                      ]
                    },
                    "yAxis": {
                      "format": {
                        "unit": "decimal"
                      },
                      "min": 0
                    }
                  }
                },
                "queries": [
                  {
                    "kind": "TimeSeriesQuery",
                    "spec": {
                      "plugin": {
                        "kind": "PrometheusTimeSeriesQuery",
                        "spec": {
                          "query": "max by (host_name) (system_cpu_load_average_1m{host_name=~\"$instance\"})",
                          "seriesNameFormat": "{{host_name}} · 1m"
                        }
                      }
                    }
                  },
                  {
                    "kind": "TimeSeriesQuery",
                    "spec": {
                      "plugin": {
                        "kind": "PrometheusTimeSeriesQuery",
                        "spec": {
                          "query": "max by (host_name) (system_cpu_load_average_5m{host_name=~\"$instance\"})",
                          "seriesNameFormat": "{{host_name}} · 5m"
                        }
                      }
                    }
                  },
                  {
                    "kind": "TimeSeriesQuery",
                    "spec": {
                      "plugin": {
                        "kind": "PrometheusTimeSeriesQuery",
                        "spec": {
                          "query": "max by (host_name) (system_cpu_load_average_15m{host_name=~\"$instance\"})",
                          "seriesNameFormat": "{{host_name}} · 15m"
                        }
                      }
                    }
                  },
                  {
                    "kind": "TimeSeriesQuery",
                    "spec": {
                      "plugin": {
                        "kind": "PrometheusTimeSeriesQuery",
                        "spec": {
                          "query": "count by (host_name) (count by (host_name, cpu) (system_cpu_time_seconds_total{host_name=~\"$instance\",state=\"idle\"}))",
                          "seriesNameFormat": "{{host_name}} · cores"
                        }
                      }
                    }
                  }
                ]
              }
            },
            "memory_utilization": {
              "kind": "Panel",
              "spec": {
                "display": {
                  "name": "Memory utilization",
                  "description": "Fraction of physical memory in use per host (used state over all states)."
                },
                "plugin": {
                  "kind": "TimeSeriesChart",
                  "spec": {
                    "legend": {
                      "position": "bottom",
                      "mode": "table",
                      "values": [
                        "last-number",
                        "mean",
                        "max"
                      ]
                    },
                    "yAxis": {
                      "format": {
                        "unit": "percent-decimal"
                      },
                      "min": 0,
                      "max": 1
                    }
                  }
                },
                "queries": [
                  {
                    "kind": "TimeSeriesQuery",
                    "spec": {
                      "plugin": {
                        "kind": "PrometheusTimeSeriesQuery",
                        "spec": {
                          "query": "sum by (host_name) (system_memory_usage_bytes{host_name=~\"$instance\",state=\"used\"}) / sum by (host_name) (system_memory_usage_bytes{host_name=~\"$instance\"})",
                          "seriesNameFormat": "{{host_name}}"
                        }
                      }
                    }
                  }
                ]
              }
            },
            "memory_by_state": {
              "kind": "Panel",
              "spec": {
                "display": {
                  "name": "Memory usage by state",
                  "description": "Used vs cached vs buffered vs free, per host."
                },
                "plugin": {
                  "kind": "TimeSeriesChart",
                  "spec": {
                    "legend": {
                      "position": "bottom",
                      "mode": "table",
                      "values": [
                        "last-number",
                        "mean",
                        "max"
                      ]
                    },
                    "yAxis": {
                      "format": {
                        "unit": "bytes"
                      },
                      "min": 0
                    }
                  }
                },
                "queries": [
                  {
                    "kind": "TimeSeriesQuery",
                    "spec": {
                      "plugin": {
                        "kind": "PrometheusTimeSeriesQuery",
                        "spec": {
                          "query": "sum by (host_name, state) (system_memory_usage_bytes{host_name=~\"$instance\"})",
                          "seriesNameFormat": "{{host_name}} · {{state}}"
                        }
                      }
                    }
                  }
                ]
              }
            },
            "filesystem_utilization": {
              "kind": "Panel",
              "spec": {
                "display": {
                  "name": "Filesystem utilization",
                  "description": "Fill level per mount point — used space over used + free."
                },
                "plugin": {
                  "kind": "TimeSeriesChart",
                  "spec": {
                    "legend": {
                      "position": "bottom",
                      "mode": "table",
                      "values": [
                        "last-number",
                        "mean",
                        "max"
                      ]
                    },
                    "yAxis": {
                      "format": {
                        "unit": "percent-decimal"
                      },
                      "min": 0,
                      "max": 1
                    }
                  }
                },
                "queries": [
                  {
                    "kind": "TimeSeriesQuery",
                    "spec": {
                      "plugin": {
                        "kind": "PrometheusTimeSeriesQuery",
                        "spec": {
                          "query": "sum by (host_name, mountpoint) (system_filesystem_usage_bytes{host_name=~\"$instance\",state=\"used\"}) / sum by (host_name, mountpoint) (system_filesystem_usage_bytes{host_name=~\"$instance\",state=~\"used|free\"})",
                          "seriesNameFormat": "{{host_name}} · {{mountpoint}}"
                        }
                      }
                    }
                  }
                ]
              }
            },
            "disk_io": {
              "kind": "Panel",
              "spec": {
                "display": {
                  "name": "Disk I/O",
                  "description": "Read/write throughput per device."
                },
                "plugin": {
                  "kind": "TimeSeriesChart",
                  "spec": {
                    "legend": {
                      "position": "bottom",
                      "mode": "table",
                      "values": [
                        "last-number",
                        "mean",
                        "max"
                      ]
                    },
                    "yAxis": {
                      "format": {
                        "unit": "decbytes/sec"
                      },
                      "min": 0
                    }
                  }
                },
                "queries": [
                  {
                    "kind": "TimeSeriesQuery",
                    "spec": {
                      "plugin": {
                        "kind": "PrometheusTimeSeriesQuery",
                        "spec": {
                          "query": "sum by (host_name, device, direction) (rate(system_disk_io_bytes_total{host_name=~\"$instance\"}[5m]))",
                          "seriesNameFormat": "{{host_name}} · {{device}} {{direction}}"
                        }
                      }
                    }
                  }
                ]
              }
            },
            "network_io": {
              "kind": "Panel",
              "spec": {
                "display": {
                  "name": "Network I/O",
                  "description": "Receive/transmit throughput per interface."
                },
                "plugin": {
                  "kind": "TimeSeriesChart",
                  "spec": {
                    "legend": {
                      "position": "bottom",
                      "mode": "table",
                      "values": [
                        "last-number",
                        "mean",
                        "max"
                      ]
                    },
                    "yAxis": {
                      "format": {
                        "unit": "decbytes/sec"
                      },
                      "min": 0
                    }
                  }
                },
                "queries": [
                  {
                    "kind": "TimeSeriesQuery",
                    "spec": {
                      "plugin": {
                        "kind": "PrometheusTimeSeriesQuery",
                        "spec": {
                          "query": "sum by (host_name, device, direction) (rate(system_network_io_bytes_total{host_name=~\"$instance\"}[5m]))",
                          "seriesNameFormat": "{{host_name}} · {{device}} {{direction}}"
                        }
                      }
                    }
                  }
                ]
              }
            },
            "network_errors": {
              "kind": "Panel",
              "spec": {
                "display": {
                  "name": "Network errors",
                  "description": "Interface errors — zero on a healthy link."
                },
                "plugin": {
                  "kind": "TimeSeriesChart",
                  "spec": {
                    "legend": {
                      "position": "bottom",
                      "mode": "table",
                      "values": [
                        "last-number",
                        "mean",
                        "max"
                      ]
                    },
                    "yAxis": {
                      "format": {
                        "unit": "packets/sec"
                      },
                      "min": 0
                    }
                  }
                },
                "queries": [
                  {
                    "kind": "TimeSeriesQuery",
                    "spec": {
                      "plugin": {
                        "kind": "PrometheusTimeSeriesQuery",
                        "spec": {
                          "query": "sum by (host_name, device, direction) (rate(system_network_errors_total{host_name=~\"$instance\"}[5m]))",
                          "seriesNameFormat": "{{host_name}} · {{device}} {{direction}}"
                        }
                      }
                    }
                  }
                ]
              }
            }
          },
          "layouts": [
            {
              "kind": "Grid",
              "spec": {
                "display": {
                  "title": "CPU",
                  "collapse": {
                    "open": true
                  }
                },
                "items": [
                  {
                    "x": 0,
                    "y": 0,
                    "width": 12,
                    "height": 8,
                    "content": {
                      "$ref": "#/spec/panels/load_average"
                    }
                  }
                ]
              }
            },
            {
              "kind": "Grid",
              "spec": {
                "display": {
                  "title": "Memory",
                  "collapse": {
                    "open": true
                  }
                },
                "items": [
                  {
                    "x": 0,
                    "y": 0,
                    "width": 12,
                    "height": 8,
                    "content": {
                      "$ref": "#/spec/panels/memory_utilization"
                    }
                  },
                  {
                    "x": 12,
                    "y": 0,
                    "width": 12,
                    "height": 8,
                    "content": {
                      "$ref": "#/spec/panels/memory_by_state"
                    }
                  }
                ]
              }
            },
            {
              "kind": "Grid",
              "spec": {
                "display": {
                  "title": "Filesystem",
                  "collapse": {
                    "open": true
                  }
                },
                "items": [
                  {
                    "x": 0,
                    "y": 0,
                    "width": 12,
                    "height": 8,
                    "content": {
                      "$ref": "#/spec/panels/filesystem_utilization"
                    }
                  }
                ]
              }
            },
            {
              "kind": "Grid",
              "spec": {
                "display": {
                  "title": "Disk",
                  "collapse": {
                    "open": true
                  }
                },
                "items": [
                  {
                    "x": 0,
                    "y": 0,
                    "width": 12,
                    "height": 8,
                    "content": {
                      "$ref": "#/spec/panels/disk_io"
                    }
                  }
                ]
              }
            },
            {
              "kind": "Grid",
              "spec": {
                "display": {
                  "title": "Network",
                  "collapse": {
                    "open": true
                  }
                },
                "items": [
                  {
                    "x": 0,
                    "y": 0,
                    "width": 12,
                    "height": 8,
                    "content": {
                      "$ref": "#/spec/panels/network_io"
                    }
                  },
                  {
                    "x": 12,
                    "y": 0,
                    "width": 12,
                    "height": 8,
                    "content": {
                      "$ref": "#/spec/panels/network_errors"
                    }
                  }
                ]
              }
            }
          ],
          "variables": [
            {
              "kind": "ListVariable",
              "spec": {
                "name": "instance",
                "display": {
                  "name": "Instance"
                },
                "allowAllValue": true,
                "allowMultiple": true,
                "customAllValue": ".*",
                "defaultValue": ".*",
                "plugin": {
                  "kind": "PrometheusLabelValuesVariable",
                  "spec": {
                    "labelName": "host_name"
                  }
                }
              }
            }
          ],
          "duration": "1h",
          "refreshInterval": "30s",
          "datasources": {}
        }
      }
    ],
    "alert_rules": [
      {
        "ref": "alert-load-critical",
        "name": "Host load high (critical)",
        "description": null,
        "query": "max by (host_name) (system_cpu_load_average_5m) / count by (host_name) (count by (host_name, cpu) (system_cpu_time_seconds_total{state=\"idle\"}))",
        "condition_op": "gt",
        "threshold": 3,
        "interval": "1m",
        "for": "10m",
        "severity": "critical",
        "message": "5m load on {{labels.host_name}} is {{value}}× its core count — the host is heavily saturated.",
        "notify_on_resolve": true,
        "paused": false,
        "channels": []
      },
      {
        "ref": "alert-load-warning",
        "name": "Host load high (warning)",
        "description": null,
        "query": "max by (host_name) (system_cpu_load_average_5m) / count by (host_name) (count by (host_name, cpu) (system_cpu_time_seconds_total{state=\"idle\"}))",
        "condition_op": "gt",
        "threshold": 1.5,
        "interval": "1m",
        "for": "15m",
        "severity": "warning",
        "message": "5m load on {{labels.host_name}} is {{value}}× its core count — runnable tasks exceed the cores.",
        "notify_on_resolve": true,
        "paused": false,
        "channels": []
      },
      {
        "ref": "alert-memory-critical",
        "name": "Host memory usage high (critical)",
        "description": null,
        "query": "sum by (host_name) (system_memory_usage_bytes{state=\"used\"}) / sum by (host_name) (system_memory_usage_bytes)",
        "condition_op": "gt",
        "threshold": 0.9,
        "interval": "1m",
        "for": "5m",
        "severity": "critical",
        "message": "Memory utilization on {{labels.host_name}} is above 90% ({{value}}).",
        "notify_on_resolve": true,
        "paused": false,
        "channels": []
      },
      {
        "ref": "alert-filesystem-critical",
        "name": "Host filesystem usage high (critical)",
        "description": null,
        "query": "sum by (host_name, mountpoint) (system_filesystem_usage_bytes{state=\"used\"}) / sum by (host_name, mountpoint) (system_filesystem_usage_bytes{state=~\"used|free\"})",
        "condition_op": "gt",
        "threshold": 0.9,
        "interval": "1m",
        "for": "10m",
        "severity": "critical",
        "message": "Filesystem {{labels.mountpoint}} on {{labels.host_name}} is above 90% full ({{value}}).",
        "notify_on_resolve": true,
        "paused": false,
        "channels": []
      },
      {
        "ref": "alert-filesystem-warning",
        "name": "Host filesystem usage high (warning)",
        "description": null,
        "query": "sum by (host_name, mountpoint) (system_filesystem_usage_bytes{state=\"used\"}) / sum by (host_name, mountpoint) (system_filesystem_usage_bytes{state=~\"used|free\"})",
        "condition_op": "gt",
        "threshold": 0.8,
        "interval": "1m",
        "for": "15m",
        "severity": "warning",
        "message": "Filesystem {{labels.mountpoint}} on {{labels.host_name}} is above 80% full ({{value}}).",
        "notify_on_resolve": true,
        "paused": false,
        "channels": []
      }
    ]
  }
}
