24 changed files with 16100 additions and 1 deletions
-
11README.md
-
11alertmanager/config.yml
-
207docker-compose.yml
-
12grafana/provisioning/dashboards/dashboard.yml
-
7grafana/provisioning/dashboards/dashboards.md
-
1270grafana/provisioning/dashboards/docker_containers.json
-
926grafana/provisioning/dashboards/i-o-statistics.json
-
3412grafana/provisioning/dashboards/monitor_services.json
-
1441grafana/provisioning/dashboards/nexus_host.json
-
567grafana/provisioning/dashboards/nginx-2.json
-
398grafana/provisioning/dashboards/nginx_container.json
-
3750grafana/provisioning/dashboards/node-exporter.json
-
1511grafana/provisioning/dashboards/smart-1.json
-
923grafana/provisioning/dashboards/smart-2.json
-
650grafana/provisioning/dashboards/smart-3.json
-
653grafana/provisioning/dashboards/smart-4.json
-
18grafana/provisioning/datasources/datasource.yml
-
1nodeexporter/.gitignore
-
40prometheus/alert.rules
-
44prometheus/prometheus.yml
-
26promtail/etc/promtail/config.yml
-
16smartctl/Dockerfile
-
13smartctl/script/entrypoint.sh
-
194smartctl/script/smartmon.sh
@ -1,2 +1,11 @@ |
|||
# monitoring |
|||
### info |
|||
|
|||
- [Loki/Promtail](https://github.com/grafana/loki) |
|||
- [Prometheus](https://github.com/prometheus/prometheus) |
|||
- [NodeExporter](https://github.com/prometheus/node_exporter) |
|||
- [cAdvisor](https://github.com/google/cadvisor) |
|||
- [Pushgateway](https://github.com/prometheus/pushgateway) |
|||
- [Grafana](https://github.com/grafana/grafana) |
|||
- [Alertmanager](https://github.com/prometheus/alertmanager) |
|||
- [dockprom](https://github.com/stefanprodan/dockprom) |
|||
- [loki](https://github.com/grafana/loki) |
@ -0,0 +1,11 @@ |
|||
route: |
|||
receiver: 'slack' |
|||
|
|||
receivers: |
|||
- name: 'slack' |
|||
slack_configs: |
|||
- send_resolved: true |
|||
text: "{{ .CommonAnnotations.description }}" |
|||
username: 'Prometheus' |
|||
channel: '#<channel-name>' |
|||
api_url: 'https://hooks.slack.com/services/<webhook-id>' |
@ -0,0 +1,207 @@ |
|||
version: "3" |
|||
|
|||
networks: |
|||
monitor-net: |
|||
driver: bridge |
|||
|
|||
volumes: |
|||
grafana_data: {} |
|||
prometheus_data: {} |
|||
promtail-data: {} |
|||
|
|||
services: |
|||
alertmanager: |
|||
image: prom/alertmanager:v0.21.0 |
|||
container_name: alertmanager |
|||
hostname: alertmanager |
|||
restart: unless-stopped |
|||
|
|||
volumes: |
|||
- ./alertmanager:/etc/alertmanager |
|||
command: |
|||
- '--config.file=/etc/alertmanager/config.yml' |
|||
- '--storage.path=/alertmanager' |
|||
|
|||
expose: |
|||
- "9093" |
|||
networks: |
|||
- monitor-net |
|||
labels: |
|||
org.label-schema.group: "monitoring" |
|||
|
|||
cadvisor: |
|||
image: gcr.io/cadvisor/cadvisor:v0.37.0 |
|||
container_name: cadvisor |
|||
hostname: cadvisor |
|||
restart: unless-stopped |
|||
|
|||
volumes: |
|||
- /:/rootfs:ro |
|||
- /var/run:/var/run:rw |
|||
- /sys:/sys:ro |
|||
- /var/lib/docker:/var/lib/docker:ro |
|||
|
|||
expose: |
|||
- "8080" |
|||
networks: |
|||
- monitor-net |
|||
labels: |
|||
org.label-schema.group: "monitoring" |
|||
|
|||
grafana: |
|||
image: grafana/grafana:7.1.1 |
|||
container_name: grafana |
|||
hostname: grafana |
|||
restart: unless-stopped |
|||
|
|||
volumes: |
|||
- grafana_data:/var/lib/grafana |
|||
- ./grafana/provisioning:/etc/grafana/provisioning |
|||
environment: |
|||
- GF_SECURITY_ADMIN_USER=${ADMIN_USER:-admin} |
|||
- GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin} |
|||
- GF_USERS_ALLOW_SIGN_UP=false |
|||
|
|||
ports: |
|||
- "3002:3000" |
|||
networks: |
|||
- monitor-net |
|||
labels: |
|||
org.label-schema.group: "monitoring" |
|||
|
|||
loki: |
|||
image: grafana/loki:1.6.0 |
|||
container_name: loki |
|||
hostname: loki |
|||
restart: on-failure |
|||
|
|||
command: |
|||
- '-config.file=/etc/loki/local-config.yaml' |
|||
|
|||
expose: |
|||
- "3100" |
|||
networks: |
|||
- monitor-net |
|||
labels: |
|||
org.label-schema.group: "monitoring" |
|||
|
|||
nginxexporter: |
|||
image: nginx/nginx-prometheus-exporter:0.5.0 |
|||
container_name: nginxexporter |
|||
hostname: nginxexporter |
|||
restart: on-failure |
|||
|
|||
logging: |
|||
driver: json-file |
|||
options: |
|||
max-size: "10m" |
|||
max-file: "5" |
|||
|
|||
environment: |
|||
- SCRAPE_URI=http://nginx:80/nginx_status |
|||
- TELEMETRY_PATH=/metrics |
|||
- NGINX_RETRIES=10 |
|||
expose: |
|||
- "9113" |
|||
networks: |
|||
- monitor-net |
|||
labels: |
|||
org.label-schema.group: "monitoring" |
|||
|
|||
|
|||
nodeexporter: |
|||
image: prom/node-exporter:v1.0.1 |
|||
container_name: nodeexporter |
|||
hostname: nodeexporter |
|||
restart: unless-stopped |
|||
|
|||
volumes: |
|||
- /proc:/host/proc:ro |
|||
- /sys:/host/sys:ro |
|||
- /:/rootfs:ro |
|||
- ./nodeexporter/etc:/var/lib/node_exporter |
|||
command: |
|||
- '--path.procfs=/host/proc' |
|||
- '--path.sysfs=/host/sys' |
|||
- '--path.rootfs=/rootfs' |
|||
- '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)' |
|||
- '--collector.textfile.directory=/var/lib/node_exporter' |
|||
ports: |
|||
- "3003:9100" |
|||
networks: |
|||
- monitor-net |
|||
labels: |
|||
org.label-schema.group: "monitoring" |
|||
|
|||
prometheus: |
|||
image: prom/prometheus:v2.20.0 |
|||
container_name: prometheus |
|||
hostname: prometheus |
|||
restart: unless-stopped |
|||
|
|||
volumes: |
|||
- ./prometheus:/etc/prometheus |
|||
- prometheus_data:/prometheus |
|||
command: |
|||
- '--config.file=/etc/prometheus/prometheus.yml' |
|||
- '--storage.tsdb.path=/prometheus' |
|||
- '--web.console.libraries=/etc/prometheus/console_libraries' |
|||
- '--web.console.templates=/etc/prometheus/consoles' |
|||
- '--storage.tsdb.retention.time=200h' |
|||
- '--web.enable-lifecycle' |
|||
|
|||
ports: |
|||
- "3004:9090" |
|||
networks: |
|||
- monitor-net |
|||
labels: |
|||
org.label-schema.group: "monitoring" |
|||
|
|||
promtail: |
|||
image: grafana/promtail:1.6.0 |
|||
container_name: promtail |
|||
hostname: promtail |
|||
restart: on-failure |
|||
|
|||
volumes: |
|||
- promtail-data:/var/lib/promtail/positions |
|||
- ./promtail/etc/promtail/config.yml:/etc/promtail/config.yml |
|||
- /var/lib/docker/containers:/var/lib/docker/containers:ro |
|||
- /var/log:/var/log |
|||
command: |
|||
- '-config.file=/etc/promtail/config.yml' |
|||
|
|||
networks: |
|||
- monitor-net |
|||
labels: |
|||
org.label-schema.group: "monitoring" |
|||
|
|||
pushgateway: |
|||
image: prom/pushgateway:v1.2.0 |
|||
container_name: pushgateway |
|||
hostname: pushgateway |
|||
restart: unless-stopped |
|||
|
|||
expose: |
|||
- "9091" |
|||
networks: |
|||
- monitor-net |
|||
labels: |
|||
org.label-schema.group: "monitoring" |
|||
|
|||
smartctl: |
|||
build: |
|||
context: ./smartctl |
|||
container_name: smartctl |
|||
hostname: smartctl |
|||
restart: on-failure |
|||
privileged: true |
|||
|
|||
volumes: |
|||
- ./nodeexporter/etc:/var/lib/node_exporter |
|||
environment: |
|||
- INTERVAL=300 |
|||
networks: |
|||
- monitor-net |
|||
labels: |
|||
org.label-schema.group: "monitoring" |
@ -0,0 +1,12 @@ |
|||
apiVersion: 1 |
|||
|
|||
providers: |
|||
- name: 'Prometheus' |
|||
orgId: 1 |
|||
folder: '' |
|||
type: file |
|||
disableDeletion: false |
|||
editable: true |
|||
allowUiUpdates: true |
|||
options: |
|||
path: /etc/grafana/provisioning/dashboards |
@ -0,0 +1,7 @@ |
|||
### custom dashboards |
|||
|
|||
- nginx |
|||
- https://github.com/nginxinc/nginx-prometheus-exporter/blob/master/grafana/dashboard.json |
|||
|
|||
- smart |
|||
- https://grafana.com/grafana/dashboards?search=Smartmon |
1270
grafana/provisioning/dashboards/docker_containers.json
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,926 @@ |
|||
{ |
|||
"__inputs": [ |
|||
{ |
|||
"name": "DS_PROMETHEUS", |
|||
"label": "Prometheus", |
|||
"description": "", |
|||
"type": "datasource", |
|||
"pluginId": "prometheus", |
|||
"pluginName": "Prometheus" |
|||
} |
|||
], |
|||
"__requires": [ |
|||
{ |
|||
"type": "grafana", |
|||
"id": "grafana", |
|||
"name": "Grafana", |
|||
"version": "6.6.2" |
|||
}, |
|||
{ |
|||
"type": "panel", |
|||
"id": "graph", |
|||
"name": "Graph", |
|||
"version": "" |
|||
}, |
|||
{ |
|||
"type": "datasource", |
|||
"id": "prometheus", |
|||
"name": "Prometheus", |
|||
"version": "1.0.0" |
|||
} |
|||
], |
|||
"annotations": { |
|||
"list": [ |
|||
{ |
|||
"builtIn": 1, |
|||
"datasource": "-- Grafana --", |
|||
"enable": true, |
|||
"hide": true, |
|||
"iconColor": "rgba(0, 211, 255, 1)", |
|||
"name": "Annotations & Alerts", |
|||
"type": "dashboard" |
|||
} |
|||
] |
|||
}, |
|||
"editable": true, |
|||
"gnetId": 11801, |
|||
"graphTooltip": 0, |
|||
"id": null, |
|||
"iteration": 1582642997792, |
|||
"links": [], |
|||
"panels": [ |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"datasource": "Prometheus", |
|||
"fill": 0, |
|||
"fillGradient": 0, |
|||
"gridPos": { |
|||
"h": 11, |
|||
"w": 11, |
|||
"x": 0, |
|||
"y": 0 |
|||
}, |
|||
"hiddenSeries": false, |
|||
"id": 6, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": true, |
|||
"rightSide": false, |
|||
"show": true, |
|||
"sort": "avg", |
|||
"sortDesc": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 2, |
|||
"nullPointMode": "null", |
|||
"options": { |
|||
"dataLinks": [] |
|||
}, |
|||
"percentage": false, |
|||
"pointradius": 2, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "rate(node_disk_reads_completed_total{instance=~\"$hostname\", job=~\"$job\", device=~\"$device\"}[1m]) ", |
|||
"legendFormat": "{{instance}} - {{device}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"thresholds": [], |
|||
"timeFrom": null, |
|||
"timeRegions": [], |
|||
"timeShift": null, |
|||
"title": "Read IOPS", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 2, |
|||
"value_type": "individual" |
|||
}, |
|||
"transparent": true, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"format": "iops", |
|||
"label": "Reads", |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
], |
|||
"yaxis": { |
|||
"align": false, |
|||
"alignLevel": null |
|||
} |
|||
}, |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"datasource": "Prometheus", |
|||
"fill": 0, |
|||
"fillGradient": 0, |
|||
"gridPos": { |
|||
"h": 11, |
|||
"w": 13, |
|||
"x": 11, |
|||
"y": 0 |
|||
}, |
|||
"hiddenSeries": false, |
|||
"id": 8, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": true, |
|||
"rightSide": false, |
|||
"show": true, |
|||
"sort": "avg", |
|||
"sortDesc": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 2, |
|||
"nullPointMode": "null", |
|||
"options": { |
|||
"dataLinks": [] |
|||
}, |
|||
"percentage": false, |
|||
"pointradius": 2, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "rate(node_disk_writes_completed_total{instance=~\"$hostname\", job=~\"$job\", device=~\"$device\"}[1m]) ", |
|||
"legendFormat": "{{instance}} - {{device}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"thresholds": [], |
|||
"timeFrom": null, |
|||
"timeRegions": [], |
|||
"timeShift": null, |
|||
"title": "Write IOPS", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 2, |
|||
"value_type": "individual" |
|||
}, |
|||
"transparent": true, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"format": "iops", |
|||
"label": "Reads", |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
], |
|||
"yaxis": { |
|||
"align": false, |
|||
"alignLevel": null |
|||
} |
|||
}, |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"datasource": "Prometheus", |
|||
"fill": 0, |
|||
"fillGradient": 0, |
|||
"gridPos": { |
|||
"h": 11, |
|||
"w": 11, |
|||
"x": 0, |
|||
"y": 11 |
|||
}, |
|||
"hiddenSeries": false, |
|||
"id": 2, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": true, |
|||
"rightSide": false, |
|||
"show": true, |
|||
"sort": "avg", |
|||
"sortDesc": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 2, |
|||
"nullPointMode": "null", |
|||
"options": { |
|||
"dataLinks": [] |
|||
}, |
|||
"percentage": false, |
|||
"pointradius": 2, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [ |
|||
{ |
|||
"alias": "nl-t1-mon01.tst.nan:9100 - vda - lat", |
|||
"yaxis": 1 |
|||
}, |
|||
{ |
|||
"alias": "nl-t1-graph01.tst.nan:9100 - vda - lat", |
|||
"yaxis": 1 |
|||
}, |
|||
{ |
|||
"alias": "nl-t1-graph01.tst.nan:9100 - vda - iops", |
|||
"yaxis": 2 |
|||
}, |
|||
{ |
|||
"alias": "nl-t1-mon01.tst.nan:9100 - vda - iops", |
|||
"yaxis": 2 |
|||
} |
|||
], |
|||
"spaceLength": 10, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "rate(node_disk_read_time_seconds_total{instance=~\"$hostname\", job=~\"$job\", device=~\"$device\"}[1m]) / rate(node_disk_reads_completed_total{instance=~\"$hostname\", job=~\"$job\", device=~\"$device\"}[1m]) * 1000000", |
|||
"hide": false, |
|||
"instant": false, |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{instance}} - {{device}} ", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"thresholds": [ |
|||
{ |
|||
"colorMode": "critical", |
|||
"fill": true, |
|||
"line": true, |
|||
"op": "gt", |
|||
"value": 20000, |
|||
"yaxis": "left" |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeRegions": [], |
|||
"timeShift": null, |
|||
"title": "Read Latency", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 1, |
|||
"value_type": "individual" |
|||
}, |
|||
"transparent": true, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"decimals": null, |
|||
"format": "µs", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"decimals": null, |
|||
"format": "iops", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
], |
|||
"yaxis": { |
|||
"align": false, |
|||
"alignLevel": null |
|||
} |
|||
}, |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"datasource": "Prometheus", |
|||
"fill": 0, |
|||
"fillGradient": 0, |
|||
"gridPos": { |
|||
"h": 11, |
|||
"w": 13, |
|||
"x": 11, |
|||
"y": 11 |
|||
}, |
|||
"hiddenSeries": false, |
|||
"id": 4, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": true, |
|||
"rightSide": false, |
|||
"show": true, |
|||
"sort": "avg", |
|||
"sortDesc": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 2, |
|||
"nullPointMode": "null", |
|||
"options": { |
|||
"dataLinks": [] |
|||
}, |
|||
"percentage": false, |
|||
"pointradius": 2, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "rate(node_disk_write_time_seconds_total{instance=~\"$hostname\", job=~\"$job\", device=~\"$device\"}[1m]) / rate(node_disk_writes_completed_total{instance=~\"$hostname\", job=~\"$job\", device=~\"$device\"}[1m]) * 1000000", |
|||
"legendFormat": "{{instance}} - {{device}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"thresholds": [ |
|||
{ |
|||
"colorMode": "critical", |
|||
"fill": true, |
|||
"line": true, |
|||
"op": "gt", |
|||
"value": 20000, |
|||
"yaxis": "left" |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeRegions": [], |
|||
"timeShift": null, |
|||
"title": "Write Latency", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 2, |
|||
"value_type": "individual" |
|||
}, |
|||
"transparent": true, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"format": "µs", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
], |
|||
"yaxis": { |
|||
"align": false, |
|||
"alignLevel": null |
|||
} |
|||
}, |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"datasource": "Prometheus", |
|||
"fill": 0, |
|||
"fillGradient": 0, |
|||
"gridPos": { |
|||
"h": 9, |
|||
"w": 11, |
|||
"x": 0, |
|||
"y": 22 |
|||
}, |
|||
"hiddenSeries": false, |
|||
"id": 13, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": true, |
|||
"rightSide": false, |
|||
"show": true, |
|||
"sort": "avg", |
|||
"sortDesc": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 2, |
|||
"nullPointMode": "null", |
|||
"options": { |
|||
"dataLinks": [] |
|||
}, |
|||
"percentage": false, |
|||
"pointradius": 2, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "sum(rate(node_disk_read_bytes_total{instance=~\"$hostname\", job=~\"$job\", device=~\"$device\"}[1m])) by (instance) ", |
|||
"legendFormat": "{{instance}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"thresholds": [], |
|||
"timeFrom": null, |
|||
"timeRegions": [], |
|||
"timeShift": null, |
|||
"title": "Read Troughput", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 2, |
|||
"value_type": "individual" |
|||
}, |
|||
"transparent": true, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"format": "Bps", |
|||
"label": "Reads", |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
], |
|||
"yaxis": { |
|||
"align": false, |
|||
"alignLevel": null |
|||
} |
|||
}, |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"datasource": "Prometheus", |
|||
"fill": 0, |
|||
"fillGradient": 0, |
|||
"gridPos": { |
|||
"h": 9, |
|||
"w": 13, |
|||
"x": 11, |
|||
"y": 22 |
|||
}, |
|||
"hiddenSeries": false, |
|||
"id": 15, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": true, |
|||
"rightSide": false, |
|||
"show": true, |
|||
"sort": "avg", |
|||
"sortDesc": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 2, |
|||
"nullPointMode": "null", |
|||
"options": { |
|||
"dataLinks": [] |
|||
}, |
|||
"percentage": false, |
|||
"pointradius": 2, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "sum(rate(node_disk_written_bytes_total{instance=~\"$hostname\", job=~\"$job\", device=~\"$device\"}[1m])) by (instance) ", |
|||
"legendFormat": "{{instance}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"thresholds": [], |
|||
"timeFrom": null, |
|||
"timeRegions": [], |
|||
"timeShift": null, |
|||
"title": "Write Troughput", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 2, |
|||
"value_type": "individual" |
|||
}, |
|||
"transparent": true, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"format": "Bps", |
|||
"label": "Reads", |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
], |
|||
"yaxis": { |
|||
"align": false, |
|||
"alignLevel": null |
|||
} |
|||
}, |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"datasource": "Prometheus", |
|||
"fill": 0, |
|||
"fillGradient": 0, |
|||
"gridPos": { |
|||
"h": 11, |
|||
"w": 11, |
|||
"x": 0, |
|||
"y": 31 |
|||
}, |
|||
"hiddenSeries": false, |
|||
"id": 10, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": true, |
|||
"rightSide": false, |
|||
"show": true, |
|||
"sort": "avg", |
|||
"sortDesc": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 2, |
|||
"nullPointMode": "null", |
|||
"options": { |
|||
"dataLinks": [] |
|||
}, |
|||
"percentage": false, |
|||
"pointradius": 2, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "rate(node_disk_read_bytes_total{instance=~\"$hostname\", job=~\"$job\", device=~\"$device\"}[1m]) / rate(node_disk_reads_completed_total{instance=~\"$hostname\", job=~\"$job\", device=~\"$device\"}[1m]) ", |
|||
"legendFormat": "{{instance}} - {{device}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"thresholds": [], |
|||
"timeFrom": null, |
|||
"timeRegions": [], |
|||
"timeShift": null, |
|||
"title": "Read Request Size", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 2, |
|||
"value_type": "individual" |
|||
}, |
|||
"transparent": true, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"format": "decbytes", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
], |
|||
"yaxis": { |
|||
"align": false, |
|||
"alignLevel": null |
|||
} |
|||
}, |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"datasource": "Prometheus", |
|||
"fill": 0, |
|||
"fillGradient": 0, |
|||
"gridPos": { |
|||
"h": 11, |
|||
"w": 13, |
|||
"x": 11, |
|||
"y": 31 |
|||
}, |
|||
"hiddenSeries": false, |
|||
"id": 12, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": true, |
|||
"rightSide": false, |
|||
"show": true, |
|||
"sort": "avg", |
|||
"sortDesc": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 2, |
|||
"nullPointMode": "null", |
|||
"options": { |
|||
"dataLinks": [] |
|||
}, |
|||
"percentage": false, |
|||
"pointradius": 2, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "rate(node_disk_written_bytes_total{instance=~\"$hostname\", job=~\"$job\", device=~\"$device\"}[1m]) / rate(node_disk_writes_completed_total{instance=~\"$hostname\", job=~\"$job\", device=~\"$device\"}[1m])", |
|||
"legendFormat": "{{instance}} - {{device}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"thresholds": [], |
|||
"timeFrom": null, |
|||
"timeRegions": [], |
|||
"timeShift": null, |
|||
"title": "Write Request Size", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 2, |
|||
"value_type": "individual" |
|||
}, |
|||
"transparent": true, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"format": "decbytes", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
], |
|||
"yaxis": { |
|||
"align": false, |
|||
"alignLevel": null |
|||
} |
|||
} |
|||
], |
|||
"refresh": "5s", |
|||
"schemaVersion": 22, |
|||
"style": "dark", |
|||
"tags": [], |
|||
"templating": { |
|||
"list": [ |
|||
{ |
|||
"allValue": null, |
|||
"current": {}, |
|||
"datasource": "Prometheus", |
|||
"definition": "label_values(node_uname_info, instance)", |
|||
"hide": 0, |
|||
"includeAll": true, |
|||
"label": "Hostname", |
|||
"multi": true, |
|||
"name": "hostname", |
|||
"options": [], |
|||
"query": "label_values(node_uname_info, instance)", |
|||
"refresh": 1, |
|||
"regex": "", |
|||
"skipUrlSync": false, |
|||
"sort": 0, |
|||
"tagValuesQuery": "", |
|||
"tags": [], |
|||
"tagsQuery": "", |
|||
"type": "query", |
|||
"useTags": false |
|||
}, |
|||
{ |
|||
"allValue": null, |
|||
"current": {}, |
|||
"datasource": "Prometheus", |
|||
"definition": "label_values(node_disk_io_now{instance=~\"$hostname\"}, device)", |
|||
"hide": 0, |
|||
"includeAll": true, |
|||
"label": "Devicename", |
|||
"multi": true, |
|||
"name": "device", |
|||
"options": [], |
|||
"query": "label_values(node_disk_io_now{instance=~\"$hostname\"}, device)", |
|||
"refresh": 1, |
|||
"regex": "/.*sd|dm|vd.*/", |
|||
"skipUrlSync": false, |
|||
"sort": 0, |
|||
"tagValuesQuery": "", |
|||
"tags": [], |
|||
"tagsQuery": "", |
|||
"type": "query", |
|||
"useTags": false |
|||
}, |
|||
{ |
|||
"allValue": null, |
|||
"current": {}, |
|||
"datasource": "Prometheus", |
|||
"definition": "label_values(node_uname_info, job)", |
|||
"hide": 0, |
|||
"includeAll": true, |
|||
"label": "Job", |
|||
"multi": true, |
|||
"name": "job", |
|||
"options": [], |
|||
"query": "label_values(node_uname_info, job)", |
|||
"refresh": 1, |
|||
"regex": "", |
|||
"skipUrlSync": false, |
|||
"sort": 0, |
|||
"tagValuesQuery": "", |
|||
"tags": [], |
|||
"tagsQuery": "", |
|||
"type": "query", |
|||
"useTags": false |
|||
} |
|||
] |
|||
}, |
|||
"time": { |
|||
"from": "now-15m", |
|||
"to": "now" |
|||
}, |
|||
"timepicker": { |
|||
"refresh_intervals": [ |
|||
"5s", |
|||
"10s", |
|||
"30s", |
|||
"1m", |
|||
"5m", |
|||
"15m", |
|||
"30m", |
|||
"1h", |
|||
"2h", |
|||
"1d" |
|||
] |
|||
}, |
|||
"timezone": "browser", |
|||
"title": "Storage I/O Statistics", |
|||
"uid": "RzrUuuQZk", |
|||
"version": 42, |
|||
"description": "This dashboards shows IOPS, I/O Latency, Average Request size and throughput. Alerts are configured for latency." |
|||
} |
3412
grafana/provisioning/dashboards/monitor_services.json
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
1441
grafana/provisioning/dashboards/nexus_host.json
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,567 @@ |
|||
{ |
|||
"__inputs": [ |
|||
{ |
|||
"name": "DS_PROMETHEUS", |
|||
"label": "Prometheus", |
|||
"description": "", |
|||
"type": "datasource", |
|||
"pluginId": "prometheus", |
|||
"pluginName": "Prometheus" |
|||
} |
|||
], |
|||
"__requires": [ |
|||
{ |
|||
"type": "grafana", |
|||
"id": "grafana", |
|||
"name": "Grafana", |
|||
"version": "5.0.0" |
|||
}, |
|||
{ |
|||
"type": "panel", |
|||
"id": "graph", |
|||
"name": "Graph", |
|||
"version": "" |
|||
}, |
|||
{ |
|||
"type": "datasource", |
|||
"id": "prometheus", |
|||
"name": "Prometheus", |
|||
"version": "1.0.0" |
|||
}, |
|||
{ |
|||
"type": "panel", |
|||
"id": "singlestat", |
|||
"name": "Singlestat", |
|||
"version": "" |
|||
} |
|||
], |
|||
"annotations": { |
|||
"list": [ |
|||
{ |
|||
"builtIn": 1, |
|||
"datasource": "-- Grafana --", |
|||
"enable": true, |
|||
"hide": true, |
|||
"iconColor": "rgba(0, 211, 255, 1)", |
|||
"name": "Annotations & Alerts", |
|||
"type": "dashboard" |
|||
} |
|||
] |
|||
}, |
|||
"description": "Official dashboard for NGINX Prometheus exporter", |
|||
"editable": true, |
|||
"gnetId": null, |
|||
"graphTooltip": 0, |
|||
"id": null, |
|||
"iteration": 1562682051068, |
|||
"links": [], |
|||
"panels": [ |
|||
{ |
|||
"datasource": "${DS_PROMETHEUS}", |
|||
"collapsed": false, |
|||
"gridPos": { |
|||
"h": 1, |
|||
"w": 24, |
|||
"x": 0, |
|||
"y": 0 |
|||
}, |
|||
"id": 4, |
|||
"panels": [], |
|||
"title": "Status", |
|||
"type": "row" |
|||
}, |
|||
{ |
|||
"datasource": "${DS_PROMETHEUS}", |
|||
"cacheTimeout": null, |
|||
"colorBackground": true, |
|||
"colorPostfix": false, |
|||
"colorPrefix": false, |
|||
"colorValue": false, |
|||
"colors": [ |
|||
"#E02F44", |
|||
"#FF9830", |
|||
"#299c46" |
|||
], |
|||
"decimals": null, |
|||
"description": "", |
|||
"format": "none", |
|||
"gauge": { |
|||
"maxValue": 100, |
|||
"minValue": 0, |
|||
"show": false, |
|||
"thresholdLabels": false, |
|||
"thresholdMarkers": true |
|||
}, |
|||
"gridPos": { |
|||
"h": 3, |
|||
"w": 12, |
|||
"x": 0, |
|||
"y": 1 |
|||
}, |
|||
"id": 8, |
|||
"interval": null, |
|||
"links": [], |
|||
"mappingType": 1, |
|||
"mappingTypes": [ |
|||
{ |
|||
"name": "value to text", |
|||
"value": 1 |
|||
}, |
|||
{ |
|||
"name": "range to text", |
|||
"value": 2 |
|||
} |
|||
], |
|||
"maxDataPoints": 100, |
|||
"nullPointMode": "connected", |
|||
"nullText": null, |
|||
"options": {}, |
|||
"postfix": "", |
|||
"postfixFontSize": "50%", |
|||
"prefix": "", |
|||
"prefixFontSize": "50%", |
|||
"rangeMaps": [ |
|||
{ |
|||
"from": "null", |
|||
"text": "N/A", |
|||
"to": "null" |
|||
} |
|||
], |
|||
"repeat": "instance", |
|||
"repeatDirection": "h", |
|||
"sparkline": { |
|||
"fillColor": "rgba(31, 118, 189, 0.18)", |
|||
"full": false, |
|||
"lineColor": "rgb(31, 120, 193)", |
|||
"show": false |
|||
}, |
|||
"tableColumn": "", |
|||
"targets": [ |
|||
{ |
|||
"expr": "nginx_up{instance=~\"$instance\"}", |
|||
"format": "time_series", |
|||
"instant": false, |
|||
"intervalFactor": 1, |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"thresholds": "1,1", |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "NGINX Status for $instance", |
|||
"type": "singlestat", |
|||
"valueFontSize": "100%", |
|||
"valueMaps": [ |
|||
{ |
|||
"op": "=", |
|||
"text": "Down", |
|||
"value": "0" |
|||
}, |
|||
{ |
|||
"op": "=", |
|||
"text": "Up", |
|||
"value": "1" |
|||
} |
|||
], |
|||
"valueName": "current" |
|||
}, |
|||
{ |
|||
"datasource": "${DS_PROMETHEUS}", |
|||
"collapsed": false, |
|||
"gridPos": { |
|||
"h": 1, |
|||
"w": 24, |
|||
"x": 0, |
|||
"y": 4 |
|||
}, |
|||
"id": 6, |
|||
"panels": [], |
|||
"title": "Metrics", |
|||
"type": "row" |
|||
}, |
|||
{ |
|||
"datasource": "${DS_PROMETHEUS}", |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"decimals": null, |
|||
"description": "", |
|||
"fill": 1, |
|||
"gridPos": { |
|||
"h": 10, |
|||
"w": 12, |
|||
"x": 0, |
|||
"y": 5 |
|||
}, |
|||
"id": 10, |
|||
"legend": { |
|||
"alignAsTable": false, |
|||
"avg": false, |
|||
"current": false, |
|||
"hideEmpty": false, |
|||
"max": false, |
|||
"min": false, |
|||
"rightSide": false, |
|||
"show": true, |
|||
"total": false, |
|||
"values": false |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 1, |
|||
"links": [], |
|||
"nullPointMode": "null", |
|||
"options": {}, |
|||
"percentage": false, |
|||
"pointradius": 2, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "irate(nginx_connections_accepted{instance=~\"$instance\"}[5m])", |
|||
"format": "time_series", |
|||
"instant": false, |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{instance}} accepted", |
|||
"refId": "A" |
|||
}, |
|||
{ |
|||
"expr": "irate(nginx_connections_handled{instance=~\"$instance\"}[5m])", |
|||
"format": "time_series", |
|||
"instant": false, |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{instance}} handled", |
|||
"refId": "B" |
|||
} |
|||
], |
|||
"thresholds": [], |
|||
"timeFrom": null, |
|||
"timeRegions": [], |
|||
"timeShift": null, |
|||
"title": "Processed connections", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 0, |
|||
"value_type": "individual" |
|||
}, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"decimals": 1, |
|||
"format": "short", |
|||
"label": "Connections (rate)", |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": "", |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
], |
|||
"yaxis": { |
|||
"align": false, |
|||
"alignLevel": null |
|||
} |
|||
}, |
|||
{ |
|||
"datasource": "${DS_PROMETHEUS}", |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"decimals": 0, |
|||
"fill": 1, |
|||
"gridPos": { |
|||
"h": 10, |
|||
"w": 12, |
|||
"x": 12, |
|||
"y": 5 |
|||
}, |
|||
"id": 12, |
|||
"legend": { |
|||
"alignAsTable": false, |
|||
"avg": false, |
|||
"current": false, |
|||
"max": false, |
|||
"min": false, |
|||
"rightSide": false, |
|||
"show": true, |
|||
"total": false, |
|||
"values": false |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 1, |
|||
"links": [], |
|||
"nullPointMode": "null", |
|||
"options": {}, |
|||
"percentage": false, |
|||
"pointradius": 2, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "nginx_connections_active{instance=~\"$instance\"}", |
|||
"format": "time_series", |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{instance}} active", |
|||
"refId": "A" |
|||
}, |
|||
{ |
|||
"expr": "nginx_connections_reading{instance=~\"$instance\"}", |
|||
"format": "time_series", |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{instance}} reading", |
|||
"refId": "B" |
|||
}, |
|||
{ |
|||
"expr": "nginx_connections_waiting{instance=~\"$instance\"}", |
|||
"format": "time_series", |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{instance}} waiting", |
|||
"refId": "C" |
|||
}, |
|||
{ |
|||
"expr": "nginx_connections_writing{instance=~\"$instance\"}", |
|||
"format": "time_series", |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{instance}} writing", |
|||
"refId": "D" |
|||
} |
|||
], |
|||
"thresholds": [], |
|||
"timeFrom": null, |
|||
"timeRegions": [], |
|||
"timeShift": null, |
|||
"title": "Active Connections", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 0, |
|||
"value_type": "individual" |
|||
}, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"decimals": 0, |
|||
"format": "short", |
|||
"label": "Connections", |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
], |
|||
"yaxis": { |
|||
"align": false, |
|||
"alignLevel": null |
|||
} |
|||
}, |
|||
{ |
|||
"datasource": "${DS_PROMETHEUS}", |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"fill": 1, |
|||
"gridPos": { |
|||
"h": 8, |
|||
"w": 24, |
|||
"x": 0, |
|||
"y": 15 |
|||
}, |
|||
"id": 15, |
|||
"legend": { |
|||
"avg": false, |
|||
"current": false, |
|||
"max": false, |
|||
"min": false, |
|||
"show": true, |
|||
"total": false, |
|||
"values": false |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 1, |
|||
"links": [], |
|||
"nullPointMode": "null", |
|||
"options": {}, |
|||
"percentage": false, |
|||
"pointradius": 2, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "irate(nginx_http_requests_total{instance=~\"$instance\"}[5m])", |
|||
"format": "time_series", |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{instance}} total requests", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"thresholds": [], |
|||
"timeFrom": null, |
|||
"timeRegions": [], |
|||
"timeShift": null, |
|||
"title": "Total requests", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 0, |
|||
"value_type": "individual" |
|||
}, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
], |
|||
"yaxis": { |
|||
"align": false, |
|||
"alignLevel": null |
|||
} |
|||
} |
|||
], |
|||
"refresh": "5s", |
|||
"schemaVersion": 18, |
|||
"style": "dark", |
|||
"tags": [ |
|||
"nginx", |
|||
"prometheus", |
|||
"nginx prometheus exporter" |
|||
], |
|||
"templating": { |
|||
"list": [ |
|||
{ |
|||
"current": { |
|||
"selected": false, |
|||
"tags": [], |
|||
"text": "default", |
|||
"value": "default" |
|||
}, |
|||
"hide": 0, |
|||
"includeAll": false, |
|||
"label": "datasource", |
|||
"multi": false, |
|||
"name": "DS_PROMETHEUS", |
|||
"options": [], |
|||
"query": "prometheus", |
|||
"refresh": 1, |
|||
"regex": "", |
|||
"skipUrlSync": false, |
|||
"type": "datasource" |
|||
}, |
|||
{ |
|||
"allValue": null, |
|||
"current": {}, |
|||
"datasource": "${DS_PROMETHEUS}", |
|||
"definition": "label_values(nginx_up, instance)", |
|||
"hide": 0, |
|||
"includeAll": true, |
|||
"label": "", |
|||
"multi": true, |
|||
"name": "instance", |
|||
"options": [], |
|||
"query": "label_values(nginx_up, instance)", |
|||
"refresh": 1, |
|||
"regex": "", |
|||
"skipUrlSync": false, |
|||
"sort": 0, |
|||
"tagValuesQuery": "", |
|||
"tags": [], |
|||
"tagsQuery": "", |
|||
"type": "query", |
|||
"useTags": false |
|||
} |
|||
] |
|||
}, |
|||
"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": "", |
|||
"title": "nginx-2", |
|||
"uid": "MsjffzSZz", |
|||
"version": 1 |
|||
} |
@ -0,0 +1,398 @@ |
|||
{ |
|||
"id": null, |
|||
"title": "Nginx", |
|||
"description": "Nginx exporter metrics", |
|||
"tags": [ |
|||
"nginx" |
|||
], |
|||
"style": "dark", |
|||
"timezone": "browser", |
|||
"editable": true, |
|||
"hideControls": false, |
|||
"sharedCrosshair": true, |
|||
"rows": [ |
|||
{ |
|||
"collapse": false, |
|||
"editable": true, |
|||
"height": "250px", |
|||
"panels": [ |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"datasource": "Prometheus", |
|||
"decimals": 2, |
|||
"editable": true, |
|||
"error": false, |
|||
"fill": 1, |
|||
"grid": { |
|||
"threshold1": null, |
|||
"threshold1Color": "rgba(216, 200, 27, 0.27)", |
|||
"threshold2": null, |
|||
"threshold2Color": "rgba(234, 112, 112, 0.22)" |
|||
}, |
|||
"id": 3, |
|||
"isNew": true, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": true, |
|||
"rightSide": true, |
|||
"show": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 2, |
|||
"links": [], |
|||
"nullPointMode": "connected", |
|||
"percentage": false, |
|||
"pointradius": 5, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"span": 12, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "sum(irate(nginx_connections_processed_total{stage=\"any\"}[5m])) by (stage)", |
|||
"hide": false, |
|||
"interval": "", |
|||
"intervalFactor": 10, |
|||
"legendFormat": "requests", |
|||
"metric": "", |
|||
"refId": "B", |
|||
"step": 10 |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Requests/sec", |
|||
"tooltip": { |
|||
"msResolution": false, |
|||
"shared": true, |
|||
"sort": 0, |
|||
"value_type": "cumulative" |
|||
}, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"show": true |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": 0, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
] |
|||
}, |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"datasource": "Prometheus", |
|||
"decimals": 2, |
|||
"editable": true, |
|||
"error": false, |
|||
"fill": 1, |
|||
"grid": { |
|||
"threshold1": null, |
|||
"threshold1Color": "rgba(216, 200, 27, 0.27)", |
|||
"threshold2": null, |
|||
"threshold2Color": "rgba(234, 112, 112, 0.22)" |
|||
}, |
|||
"id": 2, |
|||
"isNew": true, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": true, |
|||
"rightSide": true, |
|||
"show": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 2, |
|||
"links": [], |
|||
"nullPointMode": "connected", |
|||
"percentage": false, |
|||
"pointradius": 5, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"span": 12, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "sum(nginx_connections_current) by (state)", |
|||
"interval": "", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "{{state}}", |
|||
"metric": "", |
|||
"refId": "A", |
|||
"step": 2 |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Connections", |
|||
"tooltip": { |
|||
"msResolution": false, |
|||
"shared": true, |
|||
"sort": 0, |
|||
"value_type": "cumulative" |
|||
}, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"show": true |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": 0, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
] |
|||
}, |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"datasource": "Prometheus", |
|||
"decimals": 2, |
|||
"editable": true, |
|||
"error": false, |
|||
"fill": 1, |
|||
"grid": { |
|||
"threshold1": null, |
|||
"threshold1Color": "rgba(216, 200, 27, 0.27)", |
|||
"threshold2": null, |
|||
"threshold2Color": "rgba(234, 112, 112, 0.22)" |
|||
}, |
|||
"id": 1, |
|||
"isNew": true, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": true, |
|||
"rightSide": true, |
|||
"show": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 2, |
|||
"links": [], |
|||
"nullPointMode": "connected", |
|||
"percentage": false, |
|||
"pointradius": 5, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"span": 12, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "sum(irate(nginx_connections_processed_total{stage!=\"any\"}[5m])) by (stage)", |
|||
"hide": false, |
|||
"interval": "", |
|||
"intervalFactor": 10, |
|||
"legendFormat": "{{stage}}", |
|||
"metric": "", |
|||
"refId": "B", |
|||
"step": 10 |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Connections rate", |
|||
"tooltip": { |
|||
"msResolution": false, |
|||
"shared": true, |
|||
"sort": 0, |
|||
"value_type": "cumulative" |
|||
}, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"show": true |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": 0, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
] |
|||
} |
|||
], |
|||
"title": "Nginx exporter metrics" |
|||
}, |
|||
{ |
|||
"collapse": false, |
|||
"editable": true, |
|||
"height": "250px", |
|||
"panels": [ |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"datasource": null, |
|||
"editable": true, |
|||
"error": false, |
|||
"fill": 1, |
|||
"grid": { |
|||
"threshold1": null, |
|||
"threshold1Color": "rgba(216, 200, 27, 0.27)", |
|||
"threshold2": null, |
|||
"threshold2Color": "rgba(234, 112, 112, 0.22)" |
|||
}, |
|||
"id": 4, |
|||
"isNew": true, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": true, |
|||
"rightSide": true, |
|||
"show": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 2, |
|||
"links": [], |
|||
"nullPointMode": "connected", |
|||
"percentage": false, |
|||
"pointradius": 5, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"span": 12, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "sum(rate(container_cpu_usage_seconds_total{name=~\"nginx\"}[5m])) / count(node_cpu_seconds_total{mode=\"system\"}) * 100", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "nginx", |
|||
"refId": "A", |
|||
"step": 2 |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "CPU usage", |
|||
"tooltip": { |
|||
"msResolution": false, |
|||
"shared": true, |
|||
"sort": 0, |
|||
"value_type": "cumulative" |
|||
}, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"show": true |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
] |
|||
} |
|||
], |
|||
"title": "Nginx container metrics" |
|||
} |
|||
], |
|||
"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" |
|||
] |
|||
}, |
|||
"templating": { |
|||
"list": [] |
|||
}, |
|||
"annotations": { |
|||
"list": [] |
|||
}, |
|||
"refresh": "10s", |
|||
"schemaVersion": 12, |
|||
"version": 9, |
|||
"links": [], |
|||
"gnetId": null |
|||
} |
3750
grafana/provisioning/dashboards/node-exporter.json
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
1511
grafana/provisioning/dashboards/smart-1.json
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,923 @@ |
|||
{ |
|||
"__inputs": [ |
|||
{ |
|||
"name": "DS_PROMETHEUS", |
|||
"label": "Prometheus", |
|||
"description": "", |
|||
"type": "datasource", |
|||
"pluginId": "prometheus", |
|||
"pluginName": "Prometheus" |
|||
} |
|||
], |
|||
"__requires": [ |
|||
{ |
|||
"type": "panel", |
|||
"id": "gauge", |
|||
"name": "Gauge", |
|||
"version": "" |
|||
}, |
|||
{ |
|||
"type": "grafana", |
|||
"id": "grafana", |
|||
"name": "Grafana", |
|||
"version": "6.4.4" |
|||
}, |
|||
{ |
|||
"type": "panel", |
|||
"id": "graph", |
|||
"name": "Graph", |
|||
"version": "" |
|||
}, |
|||
{ |
|||
"type": "datasource", |
|||
"id": "prometheus", |
|||
"name": "Prometheus", |
|||
"version": "1.0.0" |
|||
}, |
|||
{ |
|||
"type": "panel", |
|||
"id": "table", |
|||
"name": "Table", |
|||
"version": "" |
|||
} |
|||
], |
|||
"annotations": { |
|||
"list": [ |
|||
{ |
|||
"builtIn": 1, |
|||
"datasource": "-- Grafana --", |
|||
"enable": true, |
|||
"hide": true, |
|||
"iconColor": "rgba(0, 211, 255, 1)", |
|||
"name": "Annotations & Alerts", |
|||
"type": "dashboard" |
|||
} |
|||
] |
|||
}, |
|||
"description": "Extended smartmon Dashboard for disk SMART data", |
|||
"editable": true, |
|||
"gnetId": 10664, |
|||
"graphTooltip": 0, |
|||
"id": null, |
|||
"iteration": 1574521336451, |
|||
"links": [], |
|||
"panels": [ |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"datasource": "Prometheus", |
|||
"fill": 0, |
|||
"fillGradient": 0, |
|||
"gridPos": { |
|||
"h": 7, |
|||
"w": 13, |
|||
"x": 0, |
|||
"y": 0 |
|||
}, |
|||
"id": 1, |
|||
"interval": "", |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": false, |
|||
"rightSide": true, |
|||
"show": true, |
|||
"sideWidth": null, |
|||
"sort": "current", |
|||
"sortDesc": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 1, |
|||
"links": [], |
|||
"nullPointMode": "connected", |
|||
"options": { |
|||
"dataLinks": [] |
|||
}, |
|||
"percentage": false, |
|||
"pointradius": 1, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "avg(smartmon_temperature_celsius_raw_value{instance=~\"$instance\",disk=~\"$disk\",type=~\"$type\",serial_number=~\"$serial_number\",model_family=~\"$model_family\",device_model=~\"$device_model\"}) by (device_model,serial_number)", |
|||
"format": "time_series", |
|||
"hide": false, |
|||
"instant": false, |
|||
"interval": "1m", |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{device_model}} (S/N: {{serial_number}})", |
|||
"refId": "B" |
|||
} |
|||
], |
|||
"thresholds": [], |
|||
"timeFrom": null, |
|||
"timeRegions": [], |
|||
"timeShift": null, |
|||
"title": "Disk Temperature", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 0, |
|||
"value_type": "individual" |
|||
}, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"decimals": null, |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": "60", |
|||
"min": "20", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": false |
|||
} |
|||
], |
|||
"yaxis": { |
|||
"align": false, |
|||
"alignLevel": null |
|||
} |
|||
}, |
|||
{ |
|||
"columns": [], |
|||
"datasource": "Prometheus", |
|||
"fontSize": "100%", |
|||
"gridPos": { |
|||
"h": 5, |
|||
"w": 11, |
|||
"x": 13, |
|||
"y": 0 |
|||
}, |
|||
"id": 12, |
|||
"links": [], |
|||
"options": {}, |
|||
"pageSize": null, |
|||
"scroll": true, |
|||
"showHeader": true, |
|||
"sort": { |
|||
"col": 0, |
|||
"desc": true |
|||
}, |
|||
"styles": [ |
|||
{ |
|||
"alias": "Time", |
|||
"dateFormat": "YYYY-MM-DD HH:mm:ss", |
|||
"pattern": "Time", |
|||
"type": "hidden" |
|||
}, |
|||
{ |
|||
"alias": "Healthy", |
|||
"colorMode": "row", |
|||
"colors": [ |
|||
"rgba(245, 54, 54, 0.9)", |
|||
"#73BF69", |
|||
"#73BF69" |
|||
], |
|||
"decimals": 2, |
|||
"mappingType": 1, |
|||
"pattern": "Value", |
|||
"thresholds": [ |
|||
"1" |
|||
], |
|||
"type": "string", |
|||
"unit": "short", |
|||
"valueMaps": [ |
|||
{ |
|||
"text": "Yes", |
|||
"value": "1" |
|||
}, |
|||
{ |
|||
"text": "No", |
|||
"value": "0" |
|||
} |
|||
] |
|||
} |
|||
], |
|||
"targets": [ |
|||
{ |
|||
"expr": " max(smartmon_device_smart_healthy{instance=~\"$instance\",disk=~\"$disk\",type=~\"$type\",serial_number=~\"$serial_number\",model_family=~\"$model_family\",device_model=~\"$device_model\"}) by (disk,device_model,serial_number) < 1", |
|||
"format": "table", |
|||
"instant": true, |
|||
"intervalFactor": 1, |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Unhealthy Disks", |
|||
"transform": "table", |
|||
"type": "table" |
|||
}, |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": true, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"datasource": "Prometheus", |
|||
"decimals": 0, |
|||
"fill": 1, |
|||
"fillGradient": 0, |
|||
"gridPos": { |
|||
"h": 5, |
|||
"w": 11, |
|||
"x": 13, |
|||
"y": 5 |
|||
}, |
|||
"id": 5, |
|||
"legend": { |
|||
"alignAsTable": false, |
|||
"avg": false, |
|||
"current": true, |
|||
"hideEmpty": false, |
|||
"hideZero": true, |
|||
"max": false, |
|||
"min": false, |
|||
"rightSide": false, |
|||
"show": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": false, |
|||
"linewidth": 1, |
|||
"links": [], |
|||
"nullPointMode": "null", |
|||
"options": { |
|||
"dataLinks": [] |
|||
}, |
|||
"percentage": false, |
|||
"pointradius": 5, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"stack": false, |
|||
"steppedLine": true, |
|||
"targets": [ |
|||
{ |
|||
"expr": "smartmon_reallocated_sector_ct_raw_value{instance=~\"$instance\",disk=~\"$disk\",type=~\"$type\",serial_number=~\"$serial_number\",model_family=~\"$model_family\",device_model=~\"$device_model\"} > 0", |
|||
"format": "time_series", |
|||
"interval": "", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "Reallocated {{disk}}", |
|||
"refId": "B" |
|||
}, |
|||
{ |
|||
"expr": "smartmon_current_pending_sector_raw_value{instance=~\"$instance\",disk=~\"$disk\",type=~\"$type\",serial_number=~\"$serial_number\",model_family=~\"$model_family\",device_model=~\"$device_model\"} > 0", |
|||
"format": "time_series", |
|||
"interval": "", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "Pending {{disk}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"thresholds": [], |
|||
"timeFrom": null, |
|||
"timeRegions": [], |
|||
"timeShift": null, |
|||
"title": "Pending and Reallocated Sectors", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 2, |
|||
"value_type": "individual" |
|||
}, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"decimals": 0, |
|||
"format": "short", |
|||
"label": "", |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": "0", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": false |
|||
} |
|||
], |
|||
"yaxis": { |
|||
"align": false, |
|||
"alignLevel": null |
|||
} |
|||
}, |
|||
{ |
|||
"columns": [], |
|||
"datasource": "Prometheus", |
|||
"fontSize": "100%", |
|||
"gridPos": { |
|||
"h": 10, |
|||
"w": 13, |
|||
"x": 0, |
|||
"y": 7 |
|||
}, |
|||
"id": 10, |
|||
"interval": "1h", |
|||
"links": [], |
|||
"options": {}, |
|||
"pageSize": null, |
|||
"scroll": true, |
|||
"showHeader": true, |
|||
"sort": { |
|||
"col": 4, |
|||
"desc": true |
|||
}, |
|||
"styles": [ |
|||
{ |
|||
"alias": "", |
|||
"colorMode": null, |
|||
"colors": [ |
|||
"rgba(245, 54, 54, 0.9)", |
|||
"rgba(237, 129, 40, 0.89)", |
|||
"rgba(50, 172, 45, 0.97)" |
|||
], |
|||
"dateFormat": "YYYY-MM-DD HH:mm:ss", |
|||
"decimals": 2, |
|||
"mappingType": 1, |
|||
"pattern": "Time", |
|||
"thresholds": [], |
|||
"type": "hidden", |
|||
"unit": "short" |
|||
}, |
|||
{ |
|||
"alias": "Power On Time", |
|||
"colorMode": null, |
|||
"colors": [ |
|||
"rgba(245, 54, 54, 0.9)", |
|||
"rgba(237, 129, 40, 0.89)", |
|||
"rgba(50, 172, 45, 0.97)" |
|||
], |
|||
"decimals": 2, |
|||
"pattern": "Value #A", |
|||
"thresholds": [], |
|||
"type": "number", |
|||
"unit": "h" |
|||
}, |
|||
{ |
|||
"alias": "", |
|||
"colorMode": null, |
|||
"colors": [ |
|||
"rgba(245, 54, 54, 0.9)", |
|||
"rgba(237, 129, 40, 0.89)", |
|||
"rgba(50, 172, 45, 0.97)" |
|||
], |
|||
"dateFormat": "YYYY-MM-DD HH:mm:ss", |
|||
"decimals": 2, |
|||
"mappingType": 1, |
|||
"pattern": "instance", |
|||
"thresholds": [], |
|||
"type": "hidden", |
|||
"unit": "short" |
|||
}, |
|||
{ |
|||
"alias": "Load Cycles", |
|||
"colorMode": "value", |
|||
"colors": [ |
|||
"rgba(50, 172, 45, 0.97)", |
|||
"rgba(237, 129, 40, 0.89)", |
|||
"rgba(245, 54, 54, 0.9)" |
|||
], |
|||
"dateFormat": "YYYY-MM-DD HH:mm:ss", |
|||
"decimals": 1, |
|||
"mappingType": 1, |
|||
"pattern": "Value #B", |
|||
"thresholds": [ |
|||
"20000", |
|||
"50000" |
|||
], |
|||
"type": "number", |
|||
"unit": "short", |
|||
"valueMaps": [ |
|||
{ |
|||
"text": "", |
|||
"value": "" |
|||
}, |
|||
{ |
|||
"text": "", |
|||
"value": "" |
|||
} |
|||
] |
|||
}, |
|||
{ |
|||
"alias": "Healthy", |
|||
"colorMode": "row", |
|||
"colors": [ |
|||
"#F2495C", |
|||
"#F2495C", |
|||
"rgb(14, 54, 10)" |
|||
], |
|||
"dateFormat": "YYYY-MM-DD HH:mm:ss", |
|||
"decimals": 2, |
|||
"mappingType": 1, |
|||
"pattern": "Value #C", |
|||
"thresholds": [ |
|||
"0", |
|||
"1" |
|||
], |
|||
"type": "string", |
|||
"unit": "short", |
|||
"valueMaps": [ |
|||
{ |
|||
"text": "Yes", |
|||
"value": "1" |
|||
}, |
|||
{ |
|||
"text": "No", |
|||
"value": "0" |
|||
} |
|||
] |
|||
} |
|||
], |
|||
"targets": [ |
|||
{ |
|||
"expr": "max(smartmon_power_on_hours_raw_value{instance=~\"$instance\",disk=~\"$disk\",type=~\"$type\",serial_number=~\"$serial_number\",model_family=~\"$model_family\",device_model=~\"$device_model\"}) by (device_model,serial_number)", |
|||
"format": "table", |
|||
"instant": true, |
|||
"interval": "", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "", |
|||
"refId": "A" |
|||
}, |
|||
{ |
|||
"expr": "max(smartmon_load_cycle_count_raw_value{instance=~\"$instance\",disk=~\"$disk\",type=~\"$type\",serial_number=~\"$serial_number\",model_family=~\"$model_family\",device_model=~\"$device_model\"}) by (device_model,serial_number)", |
|||
"format": "table", |
|||
"instant": true, |
|||
"interval": "", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "Load Cycles", |
|||
"refId": "B" |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Disk Lifetime", |
|||
"transform": "table", |
|||
"type": "table" |
|||
}, |
|||
{ |
|||
"datasource": "Prometheus", |
|||
"gridPos": { |
|||
"h": 6, |
|||
"w": 11, |
|||
"x": 13, |
|||
"y": 10 |
|||
}, |
|||
"id": 8, |
|||
"links": [], |
|||
"options": { |
|||
"fieldOptions": { |
|||
"calcs": [ |
|||
"last" |
|||
], |
|||
"defaults": { |
|||
"mappings": [], |
|||
"max": 100, |
|||
"min": 0, |
|||
"thresholds": [ |
|||
{ |
|||
"color": "green", |
|||
"value": null |
|||
}, |
|||
{ |
|||
"color": "#EAB839", |
|||
"value": 60 |
|||
}, |
|||
{ |
|||
"color": "red", |
|||
"value": 80 |
|||
} |
|||
], |
|||
"title": "", |
|||
"unit": "percent" |
|||
}, |
|||
"override": {}, |
|||
"values": false |
|||
}, |
|||
"orientation": "horizontal", |
|||
"showThresholdLabels": false, |
|||
"showThresholdMarkers": true |
|||
}, |
|||
"pluginVersion": "6.4.4", |
|||
"targets": [ |
|||
{ |
|||
"expr": "sort_desc(100 - smartmon_wear_leveling_count_value {instance=~\"$instance\",disk=~\"$disk\",type=~\"$type\",serial_number=~\"$serial_number\",model_family=~\"$model_family\",device_model=~\"$device_model\"})", |
|||
"format": "time_series", |
|||
"instant": true, |
|||
"interval": "", |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{disk}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Wear Level on SSDs", |
|||
"type": "gauge" |
|||
}, |
|||
{ |
|||
"cacheTimeout": null, |
|||
"columns": [], |
|||
"datasource": "Prometheus", |
|||
"fontSize": "100%", |
|||
"gridPos": { |
|||
"h": 6, |
|||
"w": 11, |
|||
"x": 13, |
|||
"y": 16 |
|||
}, |
|||
"id": 3, |
|||
"links": [], |
|||
"options": {}, |
|||
"pageSize": null, |
|||
"pluginVersion": "6.2.5", |
|||
"scroll": true, |
|||
"showHeader": true, |
|||
"sort": { |
|||
"col": 2, |
|||
"desc": false |
|||
}, |
|||
"styles": [ |
|||
{ |
|||
"alias": "Total Written", |
|||
"colorMode": null, |
|||
"colors": [ |
|||
"rgba(245, 54, 54, 0.9)", |
|||
"rgba(237, 129, 40, 0.89)", |
|||
"rgba(50, 172, 45, 0.97)" |
|||
], |
|||
"decimals": 1, |
|||
"pattern": "Value #B", |
|||
"thresholds": [], |
|||
"type": "number", |
|||
"unit": "bytes" |
|||
}, |
|||
{ |
|||
"alias": "", |
|||
"colorMode": null, |
|||
"colors": [ |
|||
"rgba(245, 54, 54, 0.9)", |
|||
"rgba(237, 129, 40, 0.89)", |
|||
"rgba(50, 172, 45, 0.97)" |
|||
], |
|||
"dateFormat": "YYYY-MM-DD HH:mm:ss", |
|||
"decimals": 2, |
|||
"link": false, |
|||
"mappingType": 1, |
|||
"pattern": "Time|instance|model_family|job|lun_id|product|revision|smart_id|type|vendor|firmware_version", |
|||
"thresholds": [], |
|||
"type": "hidden", |
|||
"unit": "short" |
|||
}, |
|||
{ |
|||
"alias": "Wear Level", |
|||
"colorMode": "value", |
|||
"colors": [ |
|||
"rgba(50, 172, 45, 0.97)", |
|||
"rgba(237, 129, 40, 0.89)", |
|||
"rgba(245, 54, 54, 0.9)" |
|||
], |
|||
"dateFormat": "YYYY-MM-DD HH:mm:ss", |
|||
"decimals": 0, |
|||
"mappingType": 1, |
|||
"pattern": "Value #A", |
|||
"thresholds": [ |
|||
"60", |
|||
"80" |
|||
], |
|||
"type": "number", |
|||
"unit": "percent" |
|||
} |
|||
], |
|||
"targets": [ |
|||
{ |
|||
"expr": "(smartmon_total_lbas_written_raw_value{instance=~\"$instance\",disk=~\"$disk\",type=~\"$type\",serial_number=~\"$serial_number\",model_family=~\"$model_family\",device_model=~\"$device_model\"} * on(disk,instance,device_model,serial_number) smartmon_device_sector_size_logical)", |
|||
"format": "table", |
|||
"instant": true, |
|||
"interval": "", |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{disk}} ({{device_model}}, sn: {{serial_number}})", |
|||
"refId": "B" |
|||
}, |
|||
{ |
|||
"expr": "(100 - smartmon_wear_leveling_count_value {instance=~\"$instance\",disk=~\"$disk\",type=~\"$type\",serial_number=~\"$serial_number\",model_family=~\"$model_family\",device_model=~\"$device_model\"})", |
|||
"format": "table", |
|||
"instant": true, |
|||
"intervalFactor": 1, |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Total Data Written on SSDs", |
|||
"transform": "table", |
|||
"type": "table" |
|||
}, |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"datasource": "Prometheus", |
|||
"decimals": 0, |
|||
"fill": 1, |
|||
"fillGradient": 0, |
|||
"gridPos": { |
|||
"h": 5, |
|||
"w": 13, |
|||
"x": 0, |
|||
"y": 17 |
|||
}, |
|||
"id": 2, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": false, |
|||
"current": true, |
|||
"hideEmpty": false, |
|||
"hideZero": true, |
|||
"max": false, |
|||
"min": false, |
|||
"rightSide": true, |
|||
"show": true, |
|||
"sort": "current", |
|||
"sortDesc": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 1, |
|||
"links": [], |
|||
"nullPointMode": "null", |
|||
"options": { |
|||
"dataLinks": [] |
|||
}, |
|||
"percentage": false, |
|||
"pointradius": 5, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"stack": false, |
|||
"steppedLine": true, |
|||
"targets": [ |
|||
{ |
|||
"expr": "avg(smartmon_raw_read_error_rate_raw_value{instance=~\"$instance\",disk=~\"$disk\",type=~\"$type\",serial_number=~\"$serial_number\",model_family=~\"$model_family\",device_model=~\"$device_model\"}) by (device_model,serial_number) > 0", |
|||
"format": "time_series", |
|||
"hide": false, |
|||
"interval": "", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "{{device_model}} (S/N: {{serial_number}})", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"thresholds": [], |
|||
"timeFrom": null, |
|||
"timeRegions": [], |
|||
"timeShift": null, |
|||
"title": "Raw Error Read Rate", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 2, |
|||
"value_type": "individual" |
|||
}, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"decimals": 0, |
|||
"format": "short", |
|||
"label": "", |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": false |
|||
} |
|||
], |
|||
"yaxis": { |
|||
"align": false, |
|||
"alignLevel": null |
|||
} |
|||
} |
|||
], |
|||
"refresh": "1m", |
|||
"schemaVersion": 20, |
|||
"style": "dark", |
|||
"tags": [ |
|||
"prometheus", |
|||
"node_exporter", |
|||
"smartmon" |
|||
], |
|||
"templating": { |
|||
"list": [ |
|||
{ |
|||
"allValue": null, |
|||
"current": {}, |
|||
"datasource": "Prometheus", |
|||
"definition": "", |
|||
"hide": 0, |
|||
"includeAll": true, |
|||
"label": null, |
|||
"multi": true, |
|||
"name": "instance", |
|||
"options": [], |
|||
"query": "label_values(smartmon_smartctl_version, instance)", |
|||
"refresh": 1, |
|||
"regex": "", |
|||
"skipUrlSync": false, |
|||
"sort": 1, |
|||
"tagValuesQuery": "", |
|||
"tags": [], |
|||
"tagsQuery": "", |
|||
"type": "query", |
|||
"useTags": false |
|||
}, |
|||
{ |
|||
"allValue": null, |
|||
"current": {}, |
|||
"datasource": "Prometheus", |
|||
"definition": "label_values(smartmon_device_smart_available, disk)", |
|||
"hide": 0, |
|||
"includeAll": true, |
|||
"label": null, |
|||
"multi": true, |
|||
"name": "disk", |
|||
"options": [], |
|||
"query": "label_values(smartmon_device_smart_available, disk)", |
|||
"refresh": 1, |
|||
"regex": "", |
|||
"skipUrlSync": false, |
|||
"sort": 1, |
|||
"tagValuesQuery": "", |
|||
"tags": [], |
|||
"tagsQuery": "", |
|||
"type": "query", |
|||
"useTags": false |
|||
}, |
|||
{ |
|||
"allValue": null, |
|||
"current": {}, |
|||
"datasource": "Prometheus", |
|||
"definition": "label_values(smartmon_device_smart_available, type)", |
|||
"hide": 0, |
|||
"includeAll": true, |
|||
"label": null, |
|||
"multi": true, |
|||
"name": "type", |
|||
"options": [], |
|||
"query": "label_values(smartmon_device_smart_available, type)", |
|||
"refresh": 1, |
|||
"regex": "", |
|||
"skipUrlSync": false, |
|||
"sort": 1, |
|||
"tagValuesQuery": "", |
|||
"tags": [], |
|||
"tagsQuery": "", |
|||
"type": "query", |
|||
"useTags": false |
|||
}, |
|||
{ |
|||
"allValue": null, |
|||
"current": {}, |
|||
"datasource": "Prometheus", |
|||
"definition": "label_values(smartmon_device_smart_available, device_model)", |
|||
"hide": 0, |
|||
"includeAll": true, |
|||
"label": null, |
|||
"multi": true, |
|||
"name": "device_model", |
|||
"options": [], |
|||
"query": "label_values(smartmon_device_smart_available, device_model)", |
|||
"refresh": 1, |
|||
"regex": "", |
|||
"skipUrlSync": false, |
|||
"sort": 1, |
|||
"tagValuesQuery": "", |
|||
"tags": [], |
|||
"tagsQuery": "", |
|||
"type": "query", |
|||
"useTags": false |
|||
}, |
|||
{ |
|||
"allValue": null, |
|||
"current": {}, |
|||
"datasource": "Prometheus", |
|||
"definition": "label_values(smartmon_device_smart_available, serial_number)", |
|||
"hide": 0, |
|||
"includeAll": true, |
|||
"label": null, |
|||
"multi": true, |
|||
"name": "serial_number", |
|||
"options": [], |
|||
"query": "label_values(smartmon_device_smart_available, serial_number)", |
|||
"refresh": 1, |
|||
"regex": "", |
|||
"skipUrlSync": false, |
|||
"sort": 1, |
|||
"tagValuesQuery": "", |
|||
"tags": [], |
|||
"tagsQuery": "", |
|||
"type": "query", |
|||
"useTags": false |
|||
}, |
|||
{ |
|||
"allValue": null, |
|||
"current": {}, |
|||
"datasource": "Prometheus", |
|||
"definition": "label_values(smartmon_device_smart_available, model_family)", |
|||
"hide": 0, |
|||
"includeAll": true, |
|||
"label": null, |
|||
"multi": true, |
|||
"name": "model_family", |
|||
"options": [], |
|||
"query": "label_values(smartmon_device_smart_available, model_family)", |
|||
"refresh": 1, |
|||
"regex": "", |
|||
"skipUrlSync": false, |
|||
"sort": 1, |
|||
"tagValuesQuery": "", |
|||
"tags": [], |
|||
"tagsQuery": "", |
|||
"type": "query", |
|||
"useTags": false |
|||
} |
|||
] |
|||
}, |
|||
"time": { |
|||
"from": "now-7d", |
|||
"to": "now" |
|||
}, |
|||
"timepicker": { |
|||
"refresh_intervals": [ |
|||
"1m", |
|||
"5m", |
|||
"15m", |
|||
"30m", |
|||
"1h", |
|||
"2h", |
|||
"1d" |
|||
], |
|||
"time_options": [ |
|||
"5m", |
|||
"15m", |
|||
"1h", |
|||
"6h", |
|||
"12h", |
|||
"24h", |
|||
"2d", |
|||
"7d", |
|||
"30d" |
|||
] |
|||
}, |
|||
"timezone": "browser", |
|||
"title": "smart-2", |
|||
"uid": "eak7BovZk", |
|||
"version": 24 |
|||
} |
@ -0,0 +1,650 @@ |
|||
{ |
|||
"__inputs": [ |
|||
{ |
|||
"name": "DS_PROMETHEUS-INFRA", |
|||
"label": "prometheus-infra", |
|||
"description": "Prometheus with node_exporter that collects smartmon.sh script output", |
|||
"type": "datasource", |
|||
"pluginId": "prometheus", |
|||
"pluginName": "Prometheus" |
|||
} |
|||
], |
|||
"__requires": [ |
|||
{ |
|||
"type": "grafana", |
|||
"id": "grafana", |
|||
"name": "Grafana", |
|||
"version": "4.6.1" |
|||
}, |
|||
{ |
|||
"type": "panel", |
|||
"id": "graph", |
|||
"name": "Graph", |
|||
"version": "" |
|||
}, |
|||
{ |
|||
"type": "datasource", |
|||
"id": "prometheus", |
|||
"name": "Prometheus", |
|||
"version": "1.0.0" |
|||
}, |
|||
{ |
|||
"type": "panel", |
|||
"id": "table", |
|||
"name": "Table", |
|||
"version": "" |
|||
} |
|||
], |
|||
"annotations": { |
|||
"list": [ |
|||
{ |
|||
"builtIn": 1, |
|||
"datasource": "-- Grafana --", |
|||
"enable": true, |
|||
"hide": true, |
|||
"iconColor": "rgba(0, 211, 255, 1)", |
|||
"name": "Annotations & Alerts", |
|||
"type": "dashboard" |
|||
} |
|||
] |
|||
}, |
|||
"description": "Smartmon Texfile node_exporter Dashboard", |
|||
"editable": true, |
|||
"gnetId": 3992, |
|||
"graphTooltip": 0, |
|||
"hideControls": false, |
|||
"id": null, |
|||
"links": [], |
|||
"rows": [ |
|||
{ |
|||
"collapse": false, |
|||
"height": "170px", |
|||
"panels": [ |
|||
{ |
|||
"columns": [], |
|||
"datasource": "Prometheus", |
|||
"fontSize": "100%", |
|||
"height": "170px", |
|||
"id": 4, |
|||
"links": [], |
|||
"pageSize": null, |
|||
"scroll": true, |
|||
"showHeader": true, |
|||
"sort": { |
|||
"col": 0, |
|||
"desc": true |
|||
}, |
|||
"span": 12, |
|||
"styles": [ |
|||
{ |
|||
"alias": "Time", |
|||
"dateFormat": "YYYY-MM-DD HH:mm:ss", |
|||
"pattern": "Time", |
|||
"type": "date" |
|||
}, |
|||
{ |
|||
"alias": "", |
|||
"colorMode": null, |
|||
"colors": [ |
|||
"rgba(245, 54, 54, 0.9)", |
|||
"rgba(237, 129, 40, 0.89)", |
|||
"rgba(50, 172, 45, 0.97)" |
|||
], |
|||
"decimals": 2, |
|||
"pattern": "/.*/", |
|||
"thresholds": [], |
|||
"type": "number", |
|||
"unit": "short" |
|||
} |
|||
], |
|||
"targets": [ |
|||
{ |
|||
"expr": "smartmon_device_smart_healthy{instance=~\"$instance\"} < 1", |
|||
"format": "table", |
|||
"interval": "", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"title": "Unhealthy Disks", |
|||
"transform": "table", |
|||
"type": "table" |
|||
} |
|||
], |
|||
"repeat": null, |
|||
"repeatIteration": null, |
|||
"repeatRowId": null, |
|||
"showTitle": false, |
|||
"title": "Dashboard Row", |
|||
"titleSize": "h6" |
|||
}, |
|||
{ |
|||
"collapse": false, |
|||
"height": "250px", |
|||
"panels": [ |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"datasource": "Prometheus", |
|||
"fill": 0, |
|||
"id": 1, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": true, |
|||
"rightSide": true, |
|||
"show": true, |
|||
"sideWidth": null, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": false, |
|||
"linewidth": 1, |
|||
"links": [], |
|||
"nullPointMode": "null", |
|||
"percentage": false, |
|||
"pointradius": 1, |
|||
"points": true, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"span": 12, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "avg(smartmon_airflow_temperature_cel_value{instance=~\"$instance\"}) by (instance, disk)", |
|||
"format": "time_series", |
|||
"hide": false, |
|||
"interval": "1m", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "val {{instance}} {{disk}}", |
|||
"refId": "B" |
|||
}, |
|||
{ |
|||
"expr": "avg(smartmon_airflow_temperature_cel_raw_value{instance=~\"$instance\"}) by (instance, disk)", |
|||
"format": "time_series", |
|||
"hide": false, |
|||
"interval": "1m", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "raw {{instance}} {{disk}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"thresholds": [], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Disk Temperature", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 0, |
|||
"value_type": "individual" |
|||
}, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
] |
|||
} |
|||
], |
|||
"repeat": null, |
|||
"repeatIteration": null, |
|||
"repeatRowId": null, |
|||
"showTitle": false, |
|||
"title": "Dashboard Row", |
|||
"titleSize": "h6" |
|||
}, |
|||
{ |
|||
"collapse": false, |
|||
"height": 250, |
|||
"panels": [ |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"datasource": "Prometheus", |
|||
"fill": 1, |
|||
"id": 2, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": true, |
|||
"rightSide": true, |
|||
"show": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 1, |
|||
"links": [], |
|||
"nullPointMode": "null", |
|||
"percentage": false, |
|||
"pointradius": 5, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"span": 6, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "avg(smartmon_raw_read_error_rate_value{instance=~\"$instance\"}) by (instance, disk)", |
|||
"format": "time_series", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "val {{instance}} {{disk}}", |
|||
"refId": "A" |
|||
}, |
|||
{ |
|||
"expr": "avg(smartmon_spin_retry_count_raw_value{instance=~\"$instance\"}) by (instance, disk)", |
|||
"format": "time_series", |
|||
"interval": "", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "raw {{instance}} {{disk}}", |
|||
"refId": "B" |
|||
} |
|||
], |
|||
"thresholds": [], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Raw Error Read Rate", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 0, |
|||
"value_type": "individual" |
|||
}, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
] |
|||
}, |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"datasource": "Prometheus", |
|||
"fill": 1, |
|||
"id": 3, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": true, |
|||
"rightSide": true, |
|||
"show": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 1, |
|||
"links": [], |
|||
"nullPointMode": "null", |
|||
"percentage": false, |
|||
"pointradius": 5, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"span": 6, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "avg(smartmon_total_lbas_written_value{instance=~\"$instance\"}) by (instance, disk)", |
|||
"format": "time_series", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "val {{instance}} {{disk}}", |
|||
"refId": "A" |
|||
}, |
|||
{ |
|||
"expr": "avg(smartmon_total_lbas_written_raw_value{instance=~\"$instance\"}) by (instance, disk)", |
|||
"format": "time_series", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "raw {{instance}} {{disk}}", |
|||
"refId": "B" |
|||
} |
|||
], |
|||
"thresholds": [], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Raw Error Read Rate", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 0, |
|||
"value_type": "individual" |
|||
}, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
] |
|||
} |
|||
], |
|||
"repeat": null, |
|||
"repeatIteration": null, |
|||
"repeatRowId": null, |
|||
"showTitle": false, |
|||
"title": "Dashboard Row", |
|||
"titleSize": "h6" |
|||
}, |
|||
{ |
|||
"collapse": false, |
|||
"height": 250, |
|||
"panels": [ |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"datasource": "Prometheus", |
|||
"fill": 1, |
|||
"id": 5, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": true, |
|||
"rightSide": true, |
|||
"show": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 1, |
|||
"links": [], |
|||
"nullPointMode": "null", |
|||
"percentage": false, |
|||
"pointradius": 5, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"span": 6, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "smartmon_reallocated_sector_ct_raw_value{instance=~\"$instance\"}", |
|||
"format": "time_series", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "raw {{instance}} {{disk}}", |
|||
"refId": "B" |
|||
}, |
|||
{ |
|||
"expr": "smartmon_reallocated_sector_ct_value{instance=~\"$instance\"}", |
|||
"format": "time_series", |
|||
"interval": "", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "val {{instance}} {{disk}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"thresholds": [], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Reallocated Sectors", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 0, |
|||
"value_type": "individual" |
|||
}, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": "0", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
] |
|||
}, |
|||
{ |
|||
"aliasColors": {}, |
|||
"bars": false, |
|||
"dashLength": 10, |
|||
"dashes": false, |
|||
"datasource": "Prometheus", |
|||
"fill": 1, |
|||
"id": 6, |
|||
"legend": { |
|||
"alignAsTable": true, |
|||
"avg": true, |
|||
"current": true, |
|||
"max": true, |
|||
"min": true, |
|||
"rightSide": true, |
|||
"show": true, |
|||
"total": false, |
|||
"values": true |
|||
}, |
|||
"lines": true, |
|||
"linewidth": 1, |
|||
"links": [], |
|||
"nullPointMode": "null", |
|||
"percentage": false, |
|||
"pointradius": 5, |
|||
"points": false, |
|||
"renderer": "flot", |
|||
"seriesOverrides": [], |
|||
"spaceLength": 10, |
|||
"span": 6, |
|||
"stack": false, |
|||
"steppedLine": false, |
|||
"targets": [ |
|||
{ |
|||
"expr": "smartmon_current_pending_sector_raw_value{instance=~\"$instance\"}", |
|||
"format": "time_series", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "raw {{instance}} {{disk}}", |
|||
"refId": "B" |
|||
}, |
|||
{ |
|||
"expr": "smartmon_current_pending_sector_value{instance=~\"$instance\"}", |
|||
"format": "time_series", |
|||
"interval": "", |
|||
"intervalFactor": 2, |
|||
"legendFormat": "val {{instance}} {{disk}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"thresholds": [], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Current Pending Sectors", |
|||
"tooltip": { |
|||
"shared": true, |
|||
"sort": 0, |
|||
"value_type": "individual" |
|||
}, |
|||
"type": "graph", |
|||
"xaxis": { |
|||
"buckets": null, |
|||
"mode": "time", |
|||
"name": null, |
|||
"show": true, |
|||
"values": [] |
|||
}, |
|||
"yaxes": [ |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": "0", |
|||
"show": true |
|||
}, |
|||
{ |
|||
"format": "short", |
|||
"label": null, |
|||
"logBase": 1, |
|||
"max": null, |
|||
"min": null, |
|||
"show": true |
|||
} |
|||
] |
|||
} |
|||
], |
|||
"repeat": null, |
|||
"repeatIteration": null, |
|||
"repeatRowId": null, |
|||
"showTitle": false, |
|||
"title": "Dashboard Row", |
|||
"titleSize": "h6" |
|||
} |
|||
], |
|||
"schemaVersion": 14, |
|||
"style": "dark", |
|||
"tags": [ |
|||
"prometheus", |
|||
"node_exporter", |
|||
"smartmon" |
|||
], |
|||
"templating": { |
|||
"list": [ |
|||
{ |
|||
"allValue": null, |
|||
"current": {}, |
|||
"datasource": "Prometheus", |
|||
"hide": 0, |
|||
"includeAll": true, |
|||
"label": null, |
|||
"multi": true, |
|||
"name": "instance", |
|||
"options": [], |
|||
"query": "label_values(smartmon_smartctl_version, instance)", |
|||
"refresh": 1, |
|||
"regex": "", |
|||
"sort": 1, |
|||
"tagValuesQuery": "", |
|||
"tags": [], |
|||
"tagsQuery": "", |
|||
"type": "query", |
|||
"useTags": false |
|||
} |
|||
] |
|||
}, |
|||
"time": { |
|||
"from": "now-24h", |
|||
"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": "smart-3", |
|||
"version": 6 |
|||
} |
@ -0,0 +1,653 @@ |
|||
{ |
|||
"__inputs": [ |
|||
{ |
|||
"name": "DS_PROMETHEUS", |
|||
"label": "Prometheus", |
|||
"description": "", |
|||
"type": "datasource", |
|||
"pluginId": "prometheus", |
|||
"pluginName": "Prometheus" |
|||
} |
|||
], |
|||
"__requires": [ |
|||
{ |
|||
"type": "panel", |
|||
"id": "gauge", |
|||
"name": "Gauge", |
|||
"version": "" |
|||
}, |
|||
{ |
|||
"type": "grafana", |
|||
"id": "grafana", |
|||
"name": "Grafana", |
|||
"version": "6.2.5" |
|||
}, |
|||
{ |
|||
"type": "datasource", |
|||
"id": "prometheus", |
|||
"name": "Prometheus", |
|||
"version": "1.0.0" |
|||
}, |
|||
{ |
|||
"type": "panel", |
|||
"id": "text", |
|||
"name": "Text", |
|||
"version": "" |
|||
} |
|||
], |
|||
"annotations": { |
|||
"list": [ |
|||
{ |
|||
"builtIn": 1, |
|||
"datasource": "-- Grafana --", |
|||
"enable": true, |
|||
"hide": true, |
|||
"iconColor": "rgba(0, 211, 255, 1)", |
|||
"name": "Annotations & Alerts", |
|||
"type": "dashboard" |
|||
} |
|||
] |
|||
}, |
|||
"description": "Smartmon Texfile node_exporter Dashboard\n\nExtends the following dashboard:\n\nhttps://grafana.com/dashboards/10530", |
|||
"editable": true, |
|||
"gnetId": 10531, |
|||
"graphTooltip": 0, |
|||
"id": null, |
|||
"iteration": 1563096551333, |
|||
"links": [], |
|||
"panels": [ |
|||
{ |
|||
"content": "<p></p>\n<p style=\"text-align: center;font-size: x-large;face:arial;\">__________ General Errors __________</p>", |
|||
"gridPos": { |
|||
"h": 2, |
|||
"w": 24, |
|||
"x": 0, |
|||
"y": 0 |
|||
}, |
|||
"id": 22, |
|||
"links": [], |
|||
"mode": "html", |
|||
"options": {}, |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "", |
|||
"type": "text" |
|||
}, |
|||
{ |
|||
"gridPos": { |
|||
"h": 4, |
|||
"w": 12, |
|||
"x": 0, |
|||
"y": 2 |
|||
}, |
|||
"id": 18, |
|||
"links": [], |
|||
"options": { |
|||
"fieldOptions": { |
|||
"calcs": [ |
|||
"mean" |
|||
], |
|||
"defaults": { |
|||
"decimals": null, |
|||
"max": "50", |
|||
"min": 0, |
|||
"unit": "none" |
|||
}, |
|||
"mappings": [], |
|||
"override": {}, |
|||
"thresholds": [ |
|||
{ |
|||
"color": "green", |
|||
"index": 0, |
|||
"value": null |
|||
}, |
|||
{ |
|||
"color": "red", |
|||
"index": 1, |
|||
"value": 10 |
|||
} |
|||
], |
|||
"values": false |
|||
}, |
|||
"orientation": "auto", |
|||
"showThresholdLabels": false, |
|||
"showThresholdMarkers": true |
|||
}, |
|||
"pluginVersion": "6.2.5", |
|||
"targets": [ |
|||
{ |
|||
"expr": "smartmon_raw_read_error_rate_raw_value{ instance=~\"$instance\", disk=~\"$disk\" }", |
|||
"format": "time_series", |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{disk}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Read_Error_Rate", |
|||
"type": "gauge" |
|||
}, |
|||
{ |
|||
"description": "Number of reallocation events.\nCaused by read errors and broken sectors.", |
|||
"gridPos": { |
|||
"h": 4, |
|||
"w": 12, |
|||
"x": 12, |
|||
"y": 2 |
|||
}, |
|||
"id": 38, |
|||
"links": [], |
|||
"options": { |
|||
"fieldOptions": { |
|||
"calcs": [ |
|||
"mean" |
|||
], |
|||
"defaults": { |
|||
"max": 200, |
|||
"min": 0 |
|||
}, |
|||
"mappings": [], |
|||
"override": {}, |
|||
"thresholds": [ |
|||
{ |
|||
"color": "green", |
|||
"index": 0, |
|||
"value": null |
|||
}, |
|||
{ |
|||
"color": "red", |
|||
"index": 1, |
|||
"value": 50 |
|||
} |
|||
], |
|||
"values": false |
|||
}, |
|||
"orientation": "auto", |
|||
"showThresholdLabels": false, |
|||
"showThresholdMarkers": true |
|||
}, |
|||
"pluginVersion": "6.2.5", |
|||
"targets": [ |
|||
{ |
|||
"expr": "smartmon_reallocated_event_count_raw_value{ instance=~\"$instance\", disk=~\"$disk\"}", |
|||
"format": "time_series", |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{disk}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Reallocate_Events", |
|||
"type": "gauge" |
|||
}, |
|||
{ |
|||
"description": "Number of unstable sectors.\nCaused by read errors. \nWill possibly be remapped.", |
|||
"gridPos": { |
|||
"h": 4, |
|||
"w": 8, |
|||
"x": 0, |
|||
"y": 6 |
|||
}, |
|||
"id": 39, |
|||
"links": [], |
|||
"options": { |
|||
"fieldOptions": { |
|||
"calcs": [ |
|||
"mean" |
|||
], |
|||
"defaults": { |
|||
"max": 200, |
|||
"min": 0 |
|||
}, |
|||
"mappings": [], |
|||
"override": {}, |
|||
"thresholds": [ |
|||
{ |
|||
"color": "green", |
|||
"index": 0, |
|||
"value": null |
|||
}, |
|||
{ |
|||
"color": "red", |
|||
"index": 1, |
|||
"value": 50 |
|||
} |
|||
], |
|||
"values": false |
|||
}, |
|||
"orientation": "auto", |
|||
"showThresholdLabels": false, |
|||
"showThresholdMarkers": true |
|||
}, |
|||
"pluginVersion": "6.2.5", |
|||
"targets": [ |
|||
{ |
|||
"expr": "smartmon_current_pending_sector_raw_value{ instance=~\"$instance\", disk=~\"$disk\"}", |
|||
"format": "time_series", |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{disk}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Pending_Sectors", |
|||
"type": "gauge" |
|||
}, |
|||
{ |
|||
"description": "Number of uncorrectable sectors.\nDetected by a self-test (called offline scan)", |
|||
"gridPos": { |
|||
"h": 4, |
|||
"w": 8, |
|||
"x": 8, |
|||
"y": 6 |
|||
}, |
|||
"id": 40, |
|||
"links": [], |
|||
"options": { |
|||
"fieldOptions": { |
|||
"calcs": [ |
|||
"mean" |
|||
], |
|||
"defaults": { |
|||
"max": 200, |
|||
"min": 0 |
|||
}, |
|||
"mappings": [], |
|||
"override": {}, |
|||
"thresholds": [ |
|||
{ |
|||
"color": "green", |
|||
"index": 0, |
|||
"value": null |
|||
}, |
|||
{ |
|||
"color": "red", |
|||
"index": 1, |
|||
"value": 50 |
|||
} |
|||
], |
|||
"values": false |
|||
}, |
|||
"orientation": "auto", |
|||
"showThresholdLabels": false, |
|||
"showThresholdMarkers": true |
|||
}, |
|||
"pluginVersion": "6.2.5", |
|||
"targets": [ |
|||
{ |
|||
"expr": "smartmon_offline_uncorrectable_raw_value{ instance=~\"$instance\", disk=~\"$disk\"}", |
|||
"format": "time_series", |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{disk}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Offline_Uncorrectable_Sectors", |
|||
"type": "gauge" |
|||
}, |
|||
{ |
|||
"description": "Monitors connection quality between disk and motherboard.\nIndicates bad cable connection/cables.", |
|||
"gridPos": { |
|||
"h": 4, |
|||
"w": 8, |
|||
"x": 16, |
|||
"y": 6 |
|||
}, |
|||
"id": 41, |
|||
"links": [], |
|||
"options": { |
|||
"fieldOptions": { |
|||
"calcs": [ |
|||
"mean" |
|||
], |
|||
"defaults": { |
|||
"max": 200, |
|||
"min": 0 |
|||
}, |
|||
"mappings": [], |
|||
"override": {}, |
|||
"thresholds": [ |
|||
{ |
|||
"color": "green", |
|||
"index": 0, |
|||
"value": null |
|||
}, |
|||
{ |
|||
"color": "#EAB839", |
|||
"index": 1, |
|||
"value": 25 |
|||
}, |
|||
{ |
|||
"color": "red", |
|||
"index": 2, |
|||
"value": 100 |
|||
} |
|||
], |
|||
"values": false |
|||
}, |
|||
"orientation": "auto", |
|||
"showThresholdLabels": false, |
|||
"showThresholdMarkers": true |
|||
}, |
|||
"pluginVersion": "6.2.5", |
|||
"targets": [ |
|||
{ |
|||
"expr": "smartmon_udma_crc_error_count_raw_value{ instance=~\"$instance\", disk=~\"$disk\"}", |
|||
"format": "time_series", |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{disk}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "UDMA_CRC_Errors", |
|||
"type": "gauge" |
|||
}, |
|||
{ |
|||
"content": "<p></p>\n<p style=\"text-align: center;font-size: x-large;face:arial;\">__________ HDD Specific Values __________</p>", |
|||
"gridPos": { |
|||
"h": 2, |
|||
"w": 24, |
|||
"x": 0, |
|||
"y": 10 |
|||
}, |
|||
"id": 43, |
|||
"links": [], |
|||
"mode": "html", |
|||
"options": {}, |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "", |
|||
"type": "text" |
|||
}, |
|||
{ |
|||
"description": "Errors during read action.\nPossible positioning problem of read/write unit", |
|||
"gridPos": { |
|||
"h": 4, |
|||
"w": 9, |
|||
"x": 0, |
|||
"y": 12 |
|||
}, |
|||
"id": 28, |
|||
"links": [], |
|||
"options": { |
|||
"fieldOptions": { |
|||
"calcs": [ |
|||
"mean" |
|||
], |
|||
"defaults": { |
|||
"max": 200, |
|||
"min": 0 |
|||
}, |
|||
"mappings": [], |
|||
"override": {}, |
|||
"thresholds": [ |
|||
{ |
|||
"color": "green", |
|||
"index": 0, |
|||
"value": null |
|||
}, |
|||
{ |
|||
"color": "#EAB839", |
|||
"index": 1, |
|||
"value": 20 |
|||
}, |
|||
{ |
|||
"color": "red", |
|||
"index": 2, |
|||
"value": 100 |
|||
} |
|||
], |
|||
"values": false |
|||
}, |
|||
"orientation": "auto", |
|||
"showThresholdLabels": false, |
|||
"showThresholdMarkers": true |
|||
}, |
|||
"pluginVersion": "6.2.5", |
|||
"targets": [ |
|||
{ |
|||
"expr": "smartmon_seek_error_rate_raw_value{ instance=~\"$instance\", disk=~\"$disk\" }", |
|||
"format": "time_series", |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{disk}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Seek_Error_Rate", |
|||
"type": "gauge" |
|||
}, |
|||
{ |
|||
"description": "Errors during write", |
|||
"gridPos": { |
|||
"h": 4, |
|||
"w": 8, |
|||
"x": 9, |
|||
"y": 12 |
|||
}, |
|||
"id": 42, |
|||
"links": [], |
|||
"options": { |
|||
"fieldOptions": { |
|||
"calcs": [ |
|||
"last" |
|||
], |
|||
"defaults": { |
|||
"max": 200, |
|||
"min": 0 |
|||
}, |
|||
"mappings": [], |
|||
"override": {}, |
|||
"thresholds": [ |
|||
{ |
|||
"color": "green", |
|||
"index": 0, |
|||
"value": null |
|||
}, |
|||
{ |
|||
"color": "red", |
|||
"index": 1, |
|||
"value": 50 |
|||
} |
|||
], |
|||
"values": false |
|||
}, |
|||
"orientation": "auto", |
|||
"showThresholdLabels": false, |
|||
"showThresholdMarkers": true |
|||
}, |
|||
"pluginVersion": "6.2.5", |
|||
"targets": [ |
|||
{ |
|||
"expr": "smartmon_multi_zone_error_rate_raw_value{ instance=~\"$instance\", disk=~\"$disk\"}", |
|||
"format": "time_series", |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{disk}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Multi_Zone_Error_Rate", |
|||
"type": "gauge" |
|||
}, |
|||
{ |
|||
"description": "Cont unsuccessful attempts to spin up to operational speed. \nCritical value indicating a mechanical problem of the motor.", |
|||
"gridPos": { |
|||
"h": 4, |
|||
"w": 7, |
|||
"x": 17, |
|||
"y": 12 |
|||
}, |
|||
"id": 30, |
|||
"links": [], |
|||
"options": { |
|||
"fieldOptions": { |
|||
"calcs": [ |
|||
"mean" |
|||
], |
|||
"defaults": { |
|||
"max": 100, |
|||
"min": 0 |
|||
}, |
|||
"mappings": [], |
|||
"override": {}, |
|||
"thresholds": [ |
|||
{ |
|||
"color": "green", |
|||
"index": 0, |
|||
"value": null |
|||
}, |
|||
{ |
|||
"color": "#EAB839", |
|||
"index": 1, |
|||
"value": 10 |
|||
}, |
|||
{ |
|||
"color": "red", |
|||
"index": 2, |
|||
"value": 50 |
|||
} |
|||
], |
|||
"values": false |
|||
}, |
|||
"orientation": "auto", |
|||
"showThresholdLabels": false, |
|||
"showThresholdMarkers": true |
|||
}, |
|||
"pluginVersion": "6.2.5", |
|||
"targets": [ |
|||
{ |
|||
"expr": "smartmon_spin_retry_count_raw_value{ instance=~\"$instance\", disk=~\"$disk\"}", |
|||
"format": "time_series", |
|||
"intervalFactor": 1, |
|||
"legendFormat": "{{disk}}", |
|||
"refId": "A" |
|||
} |
|||
], |
|||
"timeFrom": null, |
|||
"timeShift": null, |
|||
"title": "Spin_Retry_Count", |
|||
"type": "gauge" |
|||
} |
|||
], |
|||
"refresh": false, |
|||
"schemaVersion": 18, |
|||
"style": "dark", |
|||
"tags": [ |
|||
"prometheus", |
|||
"node_exporter", |
|||
"smartmon" |
|||
], |
|||
"templating": { |
|||
"list": [ |
|||
{ |
|||
"allValue": null, |
|||
"current": {}, |
|||
"datasource": "Prometheus", |
|||
"definition": "", |
|||
"hide": 0, |
|||
"includeAll": true, |
|||
"label": null, |
|||
"multi": true, |
|||
"name": "instance", |
|||
"options": [], |
|||
"query": "label_values(smartmon_smartctl_version, instance)", |
|||
"refresh": 1, |
|||
"regex": "", |
|||
"skipUrlSync": false, |
|||
"sort": 1, |
|||
"tagValuesQuery": "", |
|||
"tags": [], |
|||
"tagsQuery": "", |
|||
"type": "query", |
|||
"useTags": false |
|||
}, |
|||
{ |
|||
"allValue": null, |
|||
"current": {}, |
|||
"datasource": "Prometheus", |
|||
"definition": "label_values(smartmon_device_info, device_model)", |
|||
"hide": 2, |
|||
"includeAll": true, |
|||
"label": null, |
|||
"multi": true, |
|||
"name": "device_model", |
|||
"options": [], |
|||
"query": "label_values(smartmon_device_info, device_model)", |
|||
"refresh": 1, |
|||
"regex": "", |
|||
"skipUrlSync": false, |
|||
"sort": 1, |
|||
"tagValuesQuery": "", |
|||
"tags": [], |
|||
"tagsQuery": "", |
|||
"type": "query", |
|||
"useTags": false |
|||
}, |
|||
{ |
|||
"allValue": null, |
|||
"current": {}, |
|||
"datasource": "Prometheus", |
|||
"definition": "label_values(smartmon_device_info, disk)", |
|||
"hide": 0, |
|||
"includeAll": true, |
|||
"label": null, |
|||
"multi": true, |
|||
"name": "disk", |
|||
"options": [], |
|||
"query": "label_values(smartmon_device_info, disk)", |
|||
"refresh": 1, |
|||
"regex": "", |
|||
"skipUrlSync": false, |
|||
"sort": 1, |
|||
"tagValuesQuery": "", |
|||
"tags": [], |
|||
"tagsQuery": "", |
|||
"type": "query", |
|||
"useTags": false |
|||
} |
|||
] |
|||
}, |
|||
"time": { |
|||
"from": "now-7d", |
|||
"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": "smart-4", |
|||
"uid": "HIwbBGIZk", |
|||
"version": 7 |
|||
} |
@ -0,0 +1,18 @@ |
|||
apiVersion: 1 |
|||
|
|||
datasources: |
|||
- name: Prometheus |
|||
type: prometheus |
|||
access: proxy |
|||
orgId: 1 |
|||
url: http://prometheus:9090 |
|||
basicAuth: false |
|||
isDefault: true |
|||
editable: true |
|||
- name: Loki |
|||
type: loki |
|||
access: proxy |
|||
url: http://loki:3100 |
|||
basicAuth: false |
|||
isDefault: false |
|||
editable: true |
@ -0,0 +1 @@ |
|||
/etc |
@ -0,0 +1,40 @@ |
|||
groups: |
|||
- name: targets |
|||
rules: |
|||
- alert: monitor_service_down |
|||
expr: up == 0 |
|||
for: 30s |
|||
labels: |
|||
severity: critical |
|||
annotations: |
|||
summary: "Monitor service non-operational" |
|||
description: "Service {{ $labels.instance }} is down." |
|||
|
|||
- name: host |
|||
rules: |
|||
- alert: high_cpu_load |
|||
expr: node_load1 > 1.5 |
|||
for: 30s |
|||
labels: |
|||
severity: warning |
|||
annotations: |
|||
summary: "Server under high load" |
|||
description: "Docker host is under high load, the avg load 1m is at {{ $value}}. Reported by instance {{ $labels.instance }} of job {{ $labels.job }}." |
|||
|
|||
- alert: high_memory_load |
|||
expr: (sum(node_memory_MemTotal_bytes) - sum(node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes) ) / sum(node_memory_MemTotal_bytes) * 100 > 85 |
|||
for: 30s |
|||
labels: |
|||
severity: warning |
|||
annotations: |
|||
summary: "Server memory is almost full" |
|||
description: "Docker host memory usage is {{ humanize $value}}%. Reported by instance {{ $labels.instance }} of job {{ $labels.job }}." |
|||
|
|||
- alert: high_storage_load |
|||
expr: (node_filesystem_size_bytes{fstype="aufs"} - node_filesystem_free_bytes{fstype="aufs"}) / node_filesystem_size_bytes{fstype="aufs"} * 100 > 85 |
|||
for: 30s |
|||
labels: |
|||
severity: warning |
|||
annotations: |
|||
summary: "Server storage is almost full" |
|||
description: "Docker host storage usage is {{ humanize $value}}%. Reported by instance {{ $labels.instance }} of job {{ $labels.job }}." |
@ -0,0 +1,44 @@ |
|||
global: |
|||
scrape_interval: 15s |
|||
evaluation_interval: 15s |
|||
|
|||
external_labels: |
|||
monitor: 'docker-host-alpha' |
|||
|
|||
rule_files: |
|||
- "alert.rules" |
|||
|
|||
scrape_configs: |
|||
- job_name: 'prometheus' |
|||
scrape_interval: 10s |
|||
static_configs: |
|||
- targets: ['localhost:9090'] |
|||
|
|||
- job_name: 'nodeexporter' |
|||
scrape_interval: 5s |
|||
static_configs: |
|||
- targets: ['nodeexporter:9100'] |
|||
|
|||
- job_name: 'nginxexporter' |
|||
scrape_interval: 5s |
|||
static_configs: |
|||
- targets: ['nginxexporter:9113'] |
|||
|
|||
- job_name: 'cadvisor' |
|||
scrape_interval: 5s |
|||
static_configs: |
|||
- targets: ['cadvisor:8080'] |
|||
|
|||
- job_name: 'pushgateway' |
|||
scrape_interval: 10s |
|||
honor_labels: true |
|||
static_configs: |
|||
- targets: ['pushgateway:9091'] |
|||
|
|||
|
|||
alerting: |
|||
alertmanagers: |
|||
- scheme: http |
|||
static_configs: |
|||
- targets: |
|||
- 'alertmanager:9093' |
@ -0,0 +1,26 @@ |
|||
server: |
|||
http_listen_port: 9080 |
|||
grpc_listen_port: 0 |
|||
|
|||
positions: |
|||
filename: /tmp/positions.yaml |
|||
|
|||
clients: |
|||
- url: http://loki:3100/loki/api/v1/push |
|||
|
|||
scrape_configs: |
|||
- job_name: containers |
|||
entry_parser: docker |
|||
static_configs: |
|||
- targets: |
|||
- localhost |
|||
labels: |
|||
job: containerlogs |
|||
__path__: /var/lib/docker/containers/*/*log |
|||
- job_name: system |
|||
static_configs: |
|||
- targets: |
|||
- localhost |
|||
labels: |
|||
job: varlogs |
|||
__path__: /var/log/*log |
@ -0,0 +1,16 @@ |
|||
FROM ubuntu:20.04 |
|||
|
|||
RUN apt-get -q update && \ |
|||
apt-get install -y --no-install-recommends smartmontools && \ |
|||
apt-get clean && \ |
|||
rm -rf /tmp/* && \ |
|||
rm -rf /var/lib/apt/lists/* && \ |
|||
rm -rf /var/tmp/* |
|||
|
|||
ADD script/entrypoint.sh /entrypoint.sh |
|||
ADD script/smartmon.sh /smartmon.sh |
|||
|
|||
RUN chmod +x /entrypoint.sh && \ |
|||
chmod +x /smartmon.sh |
|||
|
|||
ENTRYPOINT ["/entrypoint.sh"] |
@ -0,0 +1,13 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
if [ -n "$DEBUG" ]; then |
|||
set -ex |
|||
fi |
|||
|
|||
INTERVAL="${INTERVAL:-300}" |
|||
|
|||
echo "Starting smartmon.sh loop ..." |
|||
while true; do |
|||
/smartmon.sh > /var/lib/node_exporter/smartmon.prom |
|||
sleep "$INTERVAL" |
|||
done |
@ -0,0 +1,194 @@ |
|||
#!/bin/bash |
|||
|
|||
# https://github.com/prometheus-community/node-exporter-textfile-collector-scripts |
|||
# Script informed by the collectd monitoring script for smartmontools (using smartctl) |
|||
# by Samuel B. <samuel_._behan_(at)_dob_._sk> (c) 2012 |
|||
# source at: http://devel.dob.sk/collectd-scripts/ |
|||
|
|||
parse_smartctl_attributes_awk="$( |
|||
cat <<'SMARTCTLAWK' |
|||
$1 ~ /^ *[0-9]+$/ && $2 ~ /^[a-zA-Z0-9_-]+$/ { |
|||
gsub(/-/, "_"); |
|||
printf "%s_value{%s,smart_id=\"%s\"} %d\n", $2, labels, $1, $4 |
|||
printf "%s_worst{%s,smart_id=\"%s\"} %d\n", $2, labels, $1, $5 |
|||
printf "%s_threshold{%s,smart_id=\"%s\"} %d\n", $2, labels, $1, $6 |
|||
printf "%s_raw_value{%s,smart_id=\"%s\"} %e\n", $2, labels, $1, $10 |
|||
} |
|||
SMARTCTLAWK |
|||
)" |
|||
|
|||
smartmon_attrs="$( |
|||
cat <<'SMARTMONATTRS' |
|||
airflow_temperature_cel |
|||
command_timeout |
|||
current_pending_sector |
|||
end_to_end_error |
|||
erase_fail_count |
|||
g_sense_error_rate |
|||
hardware_ecc_recovered |
|||
host_reads_32mib |
|||
host_reads_mib |
|||
host_writes_32mib |
|||
host_writes_mib |
|||
load_cycle_count |
|||
media_wearout_indicator |
|||
nand_writes_1gib |
|||
offline_uncorrectable |
|||
power_cycle_count |
|||
power_on_hours |
|||
program_fail_cnt_total |
|||
program_fail_count |
|||
raw_read_error_rate |
|||
reallocated_event_count |
|||
reallocated_sector_ct |
|||
reported_uncorrect |
|||
runtime_bad_block |
|||
sata_downshift_count |
|||
seek_error_rate |
|||
spin_retry_count |
|||
spin_up_time |
|||
start_stop_count |
|||
temperature_case |
|||
temperature_celsius |
|||
temperature_internal |
|||
total_lbas_read |
|||
total_lbas_written |
|||
udma_crc_error_count |
|||
unsafe_shutdown_count |
|||
unused_rsvd_blk_cnt_tot |
|||
wear_leveling_count |
|||
workld_host_reads_perc |
|||
workld_media_wear_indic |
|||
workload_minutes |
|||
SMARTMONATTRS |
|||
)" |
|||
smartmon_attrs="$(echo "${smartmon_attrs}" | xargs | tr ' ' '|')" |
|||
|
|||
parse_smartctl_attributes() { |
|||
local disk="$1" |
|||
local disk_type="$2" |
|||
local labels="disk=\"${disk}\",type=\"${disk_type}\"" |
|||
sed 's/^ \+//g' | |
|||
awk -v labels="${labels}" "${parse_smartctl_attributes_awk}" 2>/dev/null | |
|||
tr '[:upper:]' '[:lower:]' | |
|||
grep -E "(${smartmon_attrs})" |
|||
} |
|||
|
|||
parse_smartctl_scsi_attributes() { |
|||
local disk="$1" |
|||
local disk_type="$2" |
|||
local labels="disk=\"${disk}\",type=\"${disk_type}\"" |
|||
while read -r line; do |
|||
attr_type="$(echo "${line}" | tr '=' ':' | cut -f1 -d: | sed 's/^ \+//g' | tr ' ' '_')" |
|||
attr_value="$(echo "${line}" | tr '=' ':' | cut -f2 -d: | sed 's/^ \+//g')" |
|||
case "${attr_type}" in |
|||
number_of_hours_powered_up_) power_on="$(echo "${attr_value}" | awk '{ printf "%e\n", $1 }')" ;; |
|||
Current_Drive_Temperature) temp_cel="$(echo "${attr_value}" | cut -f1 -d' ' | awk '{ printf "%e\n", $1 }')" ;; |
|||
Blocks_sent_to_initiator_) lbas_read="$(echo "${attr_value}" | awk '{ printf "%e\n", $1 }')" ;; |
|||
Blocks_received_from_initiator_) lbas_written="$(echo "${attr_value}" | awk '{ printf "%e\n", $1 }')" ;; |
|||
Accumulated_start-stop_cycles) power_cycle="$(echo "${attr_value}" | awk '{ printf "%e\n", $1 }')" ;; |
|||
Elements_in_grown_defect_list) grown_defects="$(echo "${attr_value}" | awk '{ printf "%e\n", $1 }')" ;; |
|||
esac |
|||
done |
|||
[ -n "$power_on" ] && echo "power_on_hours_raw_value{${labels},smart_id=\"9\"} ${power_on}" |
|||
[ -n "$temp_cel" ] && echo "temperature_celsius_raw_value{${labels},smart_id=\"194\"} ${temp_cel}" |
|||
[ -n "$lbas_read" ] && echo "total_lbas_read_raw_value{${labels},smart_id=\"242\"} ${lbas_read}" |
|||
[ -n "$lbas_written" ] && echo "total_lbas_written_raw_value{${labels},smart_id=\"242\"} ${lbas_written}" |
|||
[ -n "$power_cycle" ] && echo "power_cycle_count_raw_value{${labels},smart_id=\"12\"} ${power_cycle}" |
|||
[ -n "$grown_defects" ] && echo "grown_defects_count_raw_value{${labels},smart_id=\"12\"} ${grown_defects}" |
|||
} |
|||
|
|||
parse_smartctl_info() { |
|||
local -i smart_available=0 smart_enabled=0 smart_healthy= |
|||
local disk="$1" disk_type="$2" |
|||
local model_family='' device_model='' serial_number='' fw_version='' vendor='' product='' revision='' lun_id='' |
|||
while read -r line; do |
|||
info_type="$(echo "${line}" | cut -f1 -d: | tr ' ' '_')" |
|||
info_value="$(echo "${line}" | cut -f2- -d: | sed 's/^ \+//g' | sed 's/"/\\"/')" |
|||
case "${info_type}" in |
|||
Model_Family) model_family="${info_value}" ;; |
|||
Device_Model) device_model="${info_value}" ;; |
|||
Serial_Number) serial_number="${info_value}" ;; |
|||
Firmware_Version) fw_version="${info_value}" ;; |
|||
Vendor) vendor="${info_value}" ;; |
|||
Product) product="${info_value}" ;; |
|||
Revision) revision="${info_value}" ;; |
|||
Logical_Unit_id) lun_id="${info_value}" ;; |
|||
esac |
|||
if [[ "${info_type}" == 'SMART_support_is' ]]; then |
|||
case "${info_value:0:7}" in |
|||
Enabled) smart_available=1; smart_enabled=1 ;; |
|||
Availab) smart_available=1; smart_enabled=0 ;; |
|||
Unavail) smart_available=0; smart_enabled=0 ;; |
|||
esac |
|||
fi |
|||
if [[ "${info_type}" == 'SMART_overall-health_self-assessment_test_result' ]]; then |
|||
case "${info_value:0:6}" in |
|||
PASSED) smart_healthy=1 ;; |
|||
*) smart_healthy=0 ;; |
|||
esac |
|||
elif [[ "${info_type}" == 'SMART_Health_Status' ]]; then |
|||
case "${info_value:0:2}" in |
|||
OK) smart_healthy=1 ;; |
|||
*) smart_healthy=0 ;; |
|||
esac |
|||
fi |
|||
done |
|||
echo "device_info{disk=\"${disk}\",type=\"${disk_type}\",vendor=\"${vendor}\",product=\"${product}\",revision=\"${revision}\",lun_id=\"${lun_id}\",model_family=\"${model_family}\",device_model=\"${device_model}\",serial_number=\"${serial_number}\",firmware_version=\"${fw_version}\"} 1" |
|||
echo "device_smart_available{disk=\"${disk}\",type=\"${disk_type}\"} ${smart_available}" |
|||
echo "device_smart_enabled{disk=\"${disk}\",type=\"${disk_type}\"} ${smart_enabled}" |
|||
[[ "${smart_healthy}" != "" ]] && echo "device_smart_healthy{disk=\"${disk}\",type=\"${disk_type}\"} ${smart_healthy}" |
|||
} |
|||
|
|||
output_format_awk="$( |
|||
cat <<'OUTPUTAWK' |
|||
BEGIN { v = "" } |
|||
v != $1 { |
|||
print "# HELP smartmon_" $1 " SMART metric " $1; |
|||
print "# TYPE smartmon_" $1 " gauge"; |
|||
v = $1 |
|||
} |
|||
{print "smartmon_" $0} |
|||
OUTPUTAWK |
|||
)" |
|||
|
|||
format_output() { |
|||
sort | |
|||
awk -F'{' "${output_format_awk}" |
|||
} |
|||
|
|||
smartctl_version="$(/usr/sbin/smartctl -V | head -n1 | awk '$1 == "smartctl" {print $2}')" |
|||
|
|||
echo "smartctl_version{version=\"${smartctl_version}\"} 1" | format_output |
|||
|
|||
if [[ "$(expr "${smartctl_version}" : '\([0-9]*\)\..*')" -lt 6 ]]; then |
|||
exit |
|||
fi |
|||
|
|||
device_list="$(/usr/sbin/smartctl --scan-open | awk '/^\/dev/{print $1 "|" $3}')" |
|||
|
|||
for device in ${device_list}; do |
|||
disk="$(echo "${device}" | cut -f1 -d'|')" |
|||
type="$(echo "${device}" | cut -f2 -d'|')" |
|||
active=1 |
|||
echo "smartctl_run{disk=\"${disk}\",type=\"${type}\"}" "$(TZ=UTC date '+%s')" |
|||
# Check if the device is in a low-power mode |
|||
/usr/sbin/smartctl -n standby -d "${type}" "${disk}" > /dev/null || active=0 |
|||
echo "device_active{disk=\"${disk}\",type=\"${type}\"}" "${active}" |
|||
# Skip further metrics to prevent the disk from spinning up |
|||
test ${active} -eq 0 && continue |
|||
# Get the SMART information and health |
|||
/usr/sbin/smartctl -i -H -d "${type}" "${disk}" | parse_smartctl_info "${disk}" "${type}" |
|||
# Get the SMART attributes |
|||
case ${type} in |
|||
sat) /usr/sbin/smartctl -A -d "${type}" "${disk}" | parse_smartctl_attributes "${disk}" "${type}" ;; |
|||
sat+megaraid*) /usr/sbin/smartctl -A -d "${type}" "${disk}" | parse_smartctl_attributes "${disk}" "${type}" ;; |
|||
scsi) /usr/sbin/smartctl -A -d "${type}" "${disk}" | parse_smartctl_scsi_attributes "${disk}" "${type}" ;; |
|||
megaraid*) /usr/sbin/smartctl -A -d "${type}" "${disk}" | parse_smartctl_scsi_attributes "${disk}" "${type}" ;; |
|||
nvme*) /usr/sbin/smartctl -A -d "${type}" "${disk}" | parse_smartctl_scsi_attributes "${disk}" "${type}" ;; |
|||
*) |
|||
(>&2 echo "disk type is not sat, scsi, nvme or megaraid but ${type}") |
|||
exit |
|||
;; |
|||
esac |
|||
done | format_output |
Reference in new issue