diff --git a/src/homework/10-monitoring/10.3/img/grafana_discord_test_alert.png b/src/homework/10-monitoring/10.3/img/grafana_discord_test_alert.png new file mode 100644 index 0000000..5ee24b9 Binary files /dev/null and b/src/homework/10-monitoring/10.3/img/grafana_discord_test_alert.png differ diff --git a/src/homework/10-monitoring/10.3/img/grafana_node_exporter_dashboard.png b/src/homework/10-monitoring/10.3/img/grafana_node_exporter_dashboard.png new file mode 100644 index 0000000..280fc48 Binary files /dev/null and b/src/homework/10-monitoring/10.3/img/grafana_node_exporter_dashboard.png differ diff --git a/src/homework/10-monitoring/10.3/img/grafana_node_exporter_dashboard_alerts.png b/src/homework/10-monitoring/10.3/img/grafana_node_exporter_dashboard_alerts.png new file mode 100644 index 0000000..d03f943 Binary files /dev/null and b/src/homework/10-monitoring/10.3/img/grafana_node_exporter_dashboard_alerts.png differ diff --git a/src/homework/10-monitoring/10.3/readme.md b/src/homework/10-monitoring/10.3/readme.md index f94af95..28dc7df 100644 --- a/src/homework/10-monitoring/10.3/readme.md +++ b/src/homework/10-monitoring/10.3/readme.md @@ -55,8 +55,41 @@ avg(node_load15{}) - Количество свободной оперативной памяти -// todo +```text +node_memory_MemTotal_bytes - node_memory_Active_bytes +``` - Количество места на файловой системе -// todo +```text +node_filesystem_avail_bytes{mountpoint="/"} +``` + +![grafana_node_exporter_dashboard](./img/grafana_node_exporter_dashboard.png) + +### Задание 3 + +> Создайте для каждой Dashboard подходящее правило alert (можно обратиться к первой лекции в блоке "Мониторинг"). +> Дополнительно нужно завести удобный для вас канал нотификации, например Telegram или Email и отправить туда тестовые события. +> +> Для решения ДЗ - приведите скриншот вашей итоговой Dashboard и скриншоты тестовых событий из каналов нотификаций. + +Dashboard с настроенными alerts: + +![grafana_node_exporter_dashboard_alerts](./img/grafana_node_exporter_dashboard_alerts.png) + +Тестовая нотификация в `discord`: + +[grafana_discord_test_alert](./img/grafana_discord_test_alert.png) + +### Задание 4 + +> Сохраните ваш Dashboard. +> +> Для этого перейдите в настройки Dashboard, выберите в боковом меню "JSON MODEL". +> +> Далее скопируйте отображаемое json-содержимое в отдельный файл и сохраните его. +> +> В решении задания - приведите листинг этого файла. + +Файл с dashboard: [stack/grafana/dashboard_backup.json](./stack/grafana/dashboard_backup.json) diff --git a/src/homework/10-monitoring/10.3/stack/docker-compose.yml b/src/homework/10-monitoring/10.3/stack/docker-compose.yml index df212a2..f474eb8 100644 --- a/src/homework/10-monitoring/10.3/stack/docker-compose.yml +++ b/src/homework/10-monitoring/10.3/stack/docker-compose.yml @@ -32,7 +32,7 @@ services: - 9090 depends_on: node-exporter: - condition: service_completed_successfully + condition: service_started grafana: image: grafana/grafana:9.1.7 diff --git a/src/homework/10-monitoring/10.3/stack/grafana/dashboard_backup.json b/src/homework/10-monitoring/10.3/stack/grafana/dashboard_backup.json index 407e8d3..7b9ed54 100644 --- a/src/homework/10-monitoring/10.3/stack/grafana/dashboard_backup.json +++ b/src/homework/10-monitoring/10.3/stack/grafana/dashboard_backup.json @@ -162,6 +162,101 @@ "title": "CPU Load Average", "type": "gauge" }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "smooth", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "dashed" + } + }, + "displayName": "mem available", + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 1073741824 + } + ] + }, + "unit": "decbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 11, + "x": 13, + "y": 0 + }, + "id": 6, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "editorMode": "code", + "expr": "node_memory_MemTotal_bytes - node_memory_Active_bytes", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Свободная оперативная память", + "type": "timeseries" + }, { "datasource": { "type": "prometheus", @@ -276,6 +371,101 @@ ], "title": "Нагрузка на node", "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "dashed" + } + }, + "displayName": "fs available", + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 10737418240 + } + ] + }, + "unit": "decbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 11, + "x": 13, + "y": 8 + }, + "id": 8, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "editorMode": "code", + "expr": "node_filesystem_avail_bytes{mountpoint=\"/\"}", + "legendFormat": "__auto", + "range": true, + "refId": "A" + } + ], + "title": "Свободное место на диске", + "type": "timeseries" } ], "refresh": false, @@ -293,6 +483,6 @@ "timezone": "", "title": "node-exporter", "uid": "NwsNrL44z", - "version": 1, + "version": 4, "weekStart": "" }