fix(grafana): clean management dashboard labels

This commit is contained in:
igor04091968
2026-05-29 07:51:53 +03:00
parent af4d354b54
commit 32e5c1eb4f
7 changed files with 174 additions and 121 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ pve-detmir ansible_host=10.10.10.2 ansible_user=igor ansible_password=04091968 a
aw-prod ansible_host=10.10.10.13 ansible_user=igor ansible_password=04091968 ansible_connection=ssh ansible_become=true ansible_become_method=sudo ansible_become_password=04091968 aw-prod ansible_host=10.10.10.13 ansible_user=igor ansible_password=04091968 ansible_connection=ssh ansible_become=true ansible_become_method=sudo ansible_become_password=04091968
[grafana] [grafana]
grafana-main grafana_url=http://10.10.10.11:3000 grafana_validate_tls=false grafana-main grafana_url=http://10.10.10.11:3000 grafana_validate_tls=false grafana_folder_title=DLP grafana_detmir_folder_uid=efk080s0lfc3ka grafana_pfsense_folder_uid=bfcx6gg70sagwc
[aw_windows] [aw_windows]
rdp-prod ansible_host=192.168.100.18 ansible_user=Администратор ansible_password=Sergei2009@ ansible_connection=winrm ansible_winrm_transport=ntlm ansible_port=5985 ansible_winrm_server_cert_validation=ignore rdp-prod ansible_host=192.168.100.18 ansible_user=Администратор ansible_password=Sergei2009@ ansible_connection=winrm ansible_winrm_transport=ntlm ansible_port=5985 ansible_winrm_server_cert_validation=ignore
+17 -12
View File
@@ -16,7 +16,7 @@
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"decimals": 0, "decimals": 0,
"unit": "s" "unit": "suffix: мин"
}, },
"overrides": [] "overrides": []
}, },
@@ -39,11 +39,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "value_and_name" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -7d)\n |> filter(fn: (r) => (r._measurement == \"aw_window_event\" or r._measurement == \"aw_afk_event\") and r._field == \"duration_s\")\n |> last()\n |> group()\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)\n |> map(fn: (r) => ({ r with _value: float(v: uint(v: now()) - uint(v: r._time)) / 1000000000.0 }))\n |> keep(columns: [\"_value\"])\n |> yield(name: \"freshness_seconds\")", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -7d)\n |> filter(fn: (r) => (r._measurement == \"aw_window_event\" or r._measurement == \"aw_afk_event\") and r._field == \"duration_s\")\n |> last()\n |> group()\n |> sort(columns: [\"_time\"], desc: true)\n |> limit(n: 1)\n |> map(fn: (r) => ({ r with _value: (float(v: uint(v: now()) - uint(v: r._time)) / 1000000000.0) / 60.0 }))\n |> set(key: \"_field\", value: \"Свежесть данных\")\n |> keep(columns: [\"_value\", \"_field\"])\n |> yield(name: \"freshness_minutes\")\n",
"refId": "A" "refId": "A"
} }
], ],
@@ -57,7 +58,8 @@
}, },
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"unit": "s" "unit": "suffix: мин",
"displayName": "${__field.labels.host}"
}, },
"overrides": [] "overrides": []
}, },
@@ -81,7 +83,7 @@
}, },
"targets": [ "targets": [
{ {
"query": "import \"date\"\nstartBound = if v.timeRangeStart > date.sub(d: 2h, from: now()) then date.sub(d: 2h, from: now()) else v.timeRangeStart\nfrom(bucket: \"aw_metrics\")\n |> range(start: startBound, stop: v.timeRangeStop)\n |> filter(fn: (r) => r._measurement == \"aw_window_event\" and r._field == \"duration_s\")\n |> aggregateWindow(every: 5m, fn: sum, createEmpty: false)\n |> keep(columns: [\"_time\", \"_value\", \"host\"])\n |> group(columns: [\"host\"])\n |> yield(name: \"active\")", "query": "import \"date\"\nstartBound = if v.timeRangeStart > date.sub(d: 2h, from: now()) then date.sub(d: 2h, from: now()) else v.timeRangeStart\nfrom(bucket: \"aw_metrics\")\n |> range(start: startBound, stop: v.timeRangeStop)\n |> filter(fn: (r) => r._measurement == \"aw_window_event\" and r._field == \"duration_s\")\n |> aggregateWindow(every: 5m, fn: sum, createEmpty: false)\n |> map(fn: (r) => ({ r with _value: r._value / 60.0 }))\n |> set(key: \"_field\", value: \"Активность, мин\")\n |> keep(columns: [\"_time\", \"_value\", \"_field\", \"host\"])\n |> group(columns: [\"host\"])\n |> yield(name: \"active_minutes\")\n",
"refId": "A" "refId": "A"
} }
], ],
@@ -95,7 +97,8 @@
}, },
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"unit": "s" "unit": "suffix: мин",
"displayName": "${__field.labels.host}"
}, },
"overrides": [] "overrides": []
}, },
@@ -119,7 +122,7 @@
}, },
"targets": [ "targets": [
{ {
"query": "import \"date\"\nstartBound = if v.timeRangeStart > date.sub(d: 2h, from: now()) then date.sub(d: 2h, from: now()) else v.timeRangeStart\nfrom(bucket: \"aw_metrics\")\n |> range(start: startBound, stop: v.timeRangeStop)\n |> filter(fn: (r) => r._measurement == \"aw_afk_event\" and r._field == \"duration_s\" and r.status == \"afk\")\n |> aggregateWindow(every: 5m, fn: sum, createEmpty: false)\n |> keep(columns: [\"_time\", \"_value\", \"host\"])\n |> group(columns: [\"host\"])\n |> yield(name: \"afk\")", "query": "import \"date\"\nstartBound = if v.timeRangeStart > date.sub(d: 2h, from: now()) then date.sub(d: 2h, from: now()) else v.timeRangeStart\nfrom(bucket: \"aw_metrics\")\n |> range(start: startBound, stop: v.timeRangeStop)\n |> filter(fn: (r) => r._measurement == \"aw_afk_event\" and r._field == \"duration_s\" and r.status == \"afk\")\n |> aggregateWindow(every: 5m, fn: sum, createEmpty: false)\n |> map(fn: (r) => ({ r with _value: r._value / 60.0 }))\n |> set(key: \"_field\", value: \"AFK, мин\")\n |> keep(columns: [\"_time\", \"_value\", \"_field\", \"host\"])\n |> group(columns: [\"host\"])\n |> yield(name: \"afk_minutes\")\n",
"refId": "A" "refId": "A"
} }
], ],
@@ -133,7 +136,8 @@
}, },
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"unit": "s" "unit": "suffix: ч",
"displayName": "${__field.labels.category_view}"
}, },
"overrides": [] "overrides": []
}, },
@@ -157,7 +161,7 @@
}, },
"targets": [ "targets": [
{ {
"query": "import \"date\"\nstartBound = if v.timeRangeStart > date.sub(d: 2h, from: now()) then date.sub(d: 2h, from: now()) else v.timeRangeStart\nfrom(bucket: \"aw_metrics\")\n |> range(start: startBound, stop: v.timeRangeStop)\n |> filter(fn: (r) => r._measurement == \"aw_window_event\" and r._field == \"duration_s\")\n |> map(fn: (r) => ({ r with category_view: if r.category == \"erp_1c\" then \"1С-Бухгалтерия\" else if r.category == \"file_manager\" then \"Файловый менеджер\" else if r.category == \"terminal_shell\" then \"Терминальная оболочка\" else if r.category == \"browser\" then \"Интернет-браузер\" else if r.category == \"office_docs\" then \"Офисные документы\" else if r.category == \"remote_admin\" then \"Удаленное администрирование\" else if r.category == \"development\" then \"Разработка и программирование\" else if r.category == \"communication\" then \"Средства связи\" else if r.category == \"database\" then \"Работа с базами данных\" else if r.category == \"monitoring\" then \"Мониторинг и диагностика\" else if r.category == \"virtualization\" then \"Виртуализация\" else if r.category == \"system\" or r.category == \"misc_user\" or r.category == \"other\" or r.category == \"\" then \"Системные приложения\" else r.category }))\n |> group(columns: [\"category_view\"])\n |> sum()\n |> group()\n |> sort(columns: [\"_value\"], desc: true)\n |> yield(name: \"categories\")", "query": "import \"date\"\nstartBound = if v.timeRangeStart > date.sub(d: 2h, from: now()) then date.sub(d: 2h, from: now()) else v.timeRangeStart\nfrom(bucket: \"aw_metrics\")\n |> range(start: startBound, stop: v.timeRangeStop)\n |> filter(fn: (r) => r._measurement == \"aw_window_event\" and r._field == \"duration_s\")\n |> map(fn: (r) => ({ r with category_view: if r.category == \"erp_1c\" then \"1С-Бухгалтерия\" else if r.category == \"file_manager\" then \"Файловый менеджер\" else if r.category == \"terminal_shell\" then \"Терминальная оболочка\" else if r.category == \"browser\" then \"Интернет-браузер\" else if r.category == \"office_docs\" then \"Офисные документы\" else if r.category == \"remote_admin\" then \"Удаленное администрирование\" else if r.category == \"development\" then \"Разработка и программирование\" else if r.category == \"communication\" then \"Средства связи\" else if r.category == \"database\" then \"Работа с базами данных\" else if r.category == \"monitoring\" then \"Мониторинг и диагностика\" else if r.category == \"virtualization\" then \"Виртуализация\" else if r.category == \"system\" or r.category == \"misc_user\" or r.category == \"other\" or r.category == \"\" then \"Системные приложения\" else r.category }))\n |> group(columns: [\"category_view\"])\n |> sum()\n |> map(fn: (r) => ({ r with _value: r._value / 3600.0 }))\n |> set(key: \"_field\", value: \"Часы\")\n |> keep(columns: [\"_value\", \"_field\", \"category_view\"])\n |> sort(columns: [\"_value\"], desc: true)\n |> yield(name: \"categories_hours\")\n",
"refId": "A" "refId": "A"
} }
], ],
@@ -172,7 +176,7 @@
"fieldConfig": { "fieldConfig": {
"defaults": { "defaults": {
"decimals": 0, "decimals": 0,
"unit": "s" "unit": "suffix: ч"
}, },
"overrides": [] "overrides": []
}, },
@@ -195,11 +199,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "import \"date\"\nstartBound = if v.timeRangeStart > date.sub(d: 2h, from: now()) then date.sub(d: 2h, from: now()) else v.timeRangeStart\nfrom(bucket: \"aw_metrics\")\n |> range(start: startBound, stop: v.timeRangeStop)\n |> filter(fn: (r) => r._measurement == \"aw_window_event\" and r._field == \"duration_s\")\n |> group()\n |> sum()\n |> yield(name: \"total_active\")", "query": "import \"date\"\nstartBound = if v.timeRangeStart > date.sub(d: 2h, from: now()) then date.sub(d: 2h, from: now()) else v.timeRangeStart\nfrom(bucket: \"aw_metrics\")\n |> range(start: startBound, stop: v.timeRangeStop)\n |> filter(fn: (r) => r._measurement == \"aw_window_event\" and r._field == \"duration_s\")\n |> group()\n |> sum()\n |> map(fn: (r) => ({ r with _value: r._value / 3600.0 }))\n |> set(key: \"_field\", value: \"Активное время\")\n |> keep(columns: [\"_value\", \"_field\"])\n |> yield(name: \"total_active_hours\")\n",
"refId": "A" "refId": "A"
} }
], ],
+30 -18
View File
@@ -46,7 +46,10 @@
}, },
"title": "Как читать экран", "title": "Как читать экран",
"transparent": true, "transparent": true,
"type": "text" "type": "text",
"fieldConfig": {
"defaults": {}
}
}, },
{ {
"datasource": { "datasource": {
@@ -95,11 +98,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -180d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_case\" and r._field == \"count\")\n |> group(columns:[\"case_id\"])\n |> last()\n |> filter(fn: (r) => r.status == \"open\")\n |> group()\n |> count()", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -180d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_case\" and r._field == \"count\")\n |> group(columns:[\"case_id\"])\n |> last()\n |> filter(fn: (r) => r.status == \"open\")\n |> group()\n |> count()\n |> keep(columns:[\"_value\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -153,11 +157,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -180d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_case\" and r._field == \"count\")\n |> group(columns:[\"case_id\"])\n |> last()\n |> filter(fn: (r) => r.status == \"investigating\")\n |> group()\n |> count()", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -180d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_case\" and r._field == \"count\")\n |> group(columns:[\"case_id\"])\n |> last()\n |> filter(fn: (r) => r.status == \"investigating\")\n |> group()\n |> count()\n |> keep(columns:[\"_value\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -211,11 +216,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -30d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_incident\" and r._field == \"count\" and (r.severity == \"high\" or r.severity == \"critical\"))\n |> sum()", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -30d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_incident\" and r._field == \"count\" and (r.severity == \"high\" or r.severity == \"critical\"))\n |> group()\n |> sum()\n |> keep(columns:[\"_value\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -269,11 +275,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -7d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_incident\" and r._field == \"count\")\n |> sum()", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -7d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_incident\" and r._field == \"count\")\n |> group()\n |> sum()\n |> keep(columns:[\"_value\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -327,11 +334,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -30d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_review\" and r._field == \"count\" and r.verdict == \"review_needed\")\n |> sum()", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -30d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_review\" and r._field == \"count\" and r.verdict == \"review_needed\")\n |> group()\n |> sum()\n |> keep(columns:[\"_value\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -385,11 +393,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -24h)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_endpoint_self_test\" and r._field == \"send_failures\")\n |> group()\n |> last()", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -24h)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_endpoint_self_test\" and r._field == \"send_failures\")\n |> group()\n |> last()\n |> keep(columns:[\"_value\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -466,7 +475,8 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"showUnfilled": true "showUnfilled": true,
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
@@ -505,7 +515,8 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"showUnfilled": true "showUnfilled": true,
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
@@ -544,7 +555,8 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"showUnfilled": true "showUnfilled": true,
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
@@ -623,7 +635,7 @@
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -180d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_case\" and (r._field == \"count\" or r._field == \"title\"))\n |> group(columns:[\"case_id\",\"_field\"])\n |> last()\n |> pivot(rowKey:[\"_time\",\"case_id\",\"host\",\"status\",\"severity\",\"assignee\"], columnKey:[\"_field\"], valueColumn:\"_value\")\n |> filter(fn:(r)=> r.status == \"open\" or r.status == \"investigating\")\n |> sort(columns:[\"_time\"], desc:true)\n |> limit(n:10)", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -180d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_case\" and (r._field == \"count\" or r._field == \"title\"))\n |> group(columns:[\"case_id\",\"_field\"])\n |> last()\n |> pivot(rowKey:[\"_time\",\"case_id\",\"host\",\"status\",\"severity\",\"assignee\"], columnKey:[\"_field\"], valueColumn:\"_value\")\n |> filter(fn:(r)=> r.status == \"open\" or r.status == \"investigating\")\n |> sort(columns:[\"_time\"], desc:true)\n |> limit(n:10)\n |> group()\n |> drop(columns:[\"_start\",\"_stop\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -689,7 +701,7 @@
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -30d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_incident\" and (r._field == \"count\" or r._field == \"message\" or r._field == \"document_name\" or r._field == \"printer_name\"))\n |> group(columns:[\"event_id\",\"_field\"])\n |> last()\n |> pivot(rowKey:[\"_time\",\"host\",\"username\",\"signal_type\",\"severity\",\"action\"], columnKey:[\"_field\"], valueColumn:\"_value\")\n |> sort(columns:[\"_time\"], desc:true)\n |> limit(n:15)", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -30d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_incident\" and (r._field == \"count\" or r._field == \"message\" or r._field == \"document_name\" or r._field == \"printer_name\"))\n |> group(columns:[\"event_id\",\"_field\"])\n |> last()\n |> pivot(rowKey:[\"_time\",\"host\",\"username\",\"signal_type\",\"severity\",\"action\"], columnKey:[\"_field\"], valueColumn:\"_value\")\n |> sort(columns:[\"_time\"], desc:true)\n |> limit(n:15)\n |> group()\n |> drop(columns:[\"_start\",\"_stop\"])",
"refId": "A" "refId": "A"
} }
], ],
+36 -21
View File
@@ -41,7 +41,10 @@
}, },
"title": "ИБ: как смотреть этот дашборд", "title": "ИБ: как смотреть этот дашборд",
"transparent": true, "transparent": true,
"type": "text" "type": "text",
"fieldConfig": {
"defaults": {}
}
}, },
{ {
"datasource": { "datasource": {
@@ -90,11 +93,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -7d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_incident\" and r._field == \"count\")\n |> sum()", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -7d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_incident\" and r._field == \"count\")\n |> group()\n |> sum()\n |> keep(columns:[\"_value\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -126,7 +130,8 @@
"value": 3 "value": 3
} }
] ]
} },
"displayName": "Сработок"
}, },
"overrides": [] "overrides": []
}, },
@@ -148,11 +153,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -7d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_incident\" and r._field == \"count\" and (r.severity == \"high\" or r.severity == \"critical\"))\n |> sum()", "query": "import \"array\"\n\nhigh = from(bucket: \"aw_metrics\")\n |> range(start: -7d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_incident\" and r._field == \"count\" and (r.severity == \"high\" or r.severity == \"critical\"))\n |> group()\n |> sum()\n |> keep(columns: [\"_value\"])\n\nfallback = array.from(rows: [{_value: 0}])\n\nunion(tables: [fallback, high])\n |> group()\n |> sum()\n |> set(key: \"_field\", value: \"Сработок\")\n |> keep(columns: [\"_value\", \"_field\"])\n |> yield(name: \"high_or_critical_count\")\n",
"refId": "A" "refId": "A"
} }
], ],
@@ -206,11 +212,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -180d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_case\" and r._field == \"count\")\n |> group(columns:[\"case_id\"])\n |> last()\n |> filter(fn: (r) => r.status == \"open\")\n |> group()\n |> count()", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -180d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_case\" and r._field == \"count\")\n |> group(columns:[\"case_id\"])\n |> last()\n |> filter(fn: (r) => r.status == \"open\")\n |> group()\n |> count()\n |> keep(columns:[\"_value\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -264,11 +271,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -180d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_case\" and r._field == \"count\")\n |> group(columns:[\"case_id\"])\n |> last()\n |> filter(fn: (r) => r.status == \"investigating\")\n |> group()\n |> count()", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -180d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_case\" and r._field == \"count\")\n |> group(columns:[\"case_id\"])\n |> last()\n |> filter(fn: (r) => r.status == \"investigating\")\n |> group()\n |> count()\n |> keep(columns:[\"_value\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -322,11 +330,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -24h)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_signal\" and r._field == \"count\")\n |> sum()", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -24h)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_signal\" and r._field == \"count\")\n |> group()\n |> sum()\n |> keep(columns:[\"_value\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -380,11 +389,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -24h)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_endpoint_self_test\" and r._field == \"send_failures\")\n |> sum()", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -24h)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_endpoint_self_test\" and r._field == \"send_failures\")\n |> group()\n |> sum()\n |> keep(columns:[\"_value\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -419,7 +429,8 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"showUnfilled": true "showUnfilled": true,
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
@@ -458,7 +469,8 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"showUnfilled": true "showUnfilled": true,
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
@@ -497,7 +509,8 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"showUnfilled": true "showUnfilled": true,
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
@@ -536,7 +549,8 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"showUnfilled": true "showUnfilled": true,
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
@@ -575,7 +589,8 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"showUnfilled": true "showUnfilled": true,
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
@@ -774,7 +789,7 @@
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -180d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_case\" and (r._field == \"count\" or r._field == \"title\" or r._field == \"incident_id\" or r._field == \"has_forensics\"))\n |> group(columns:[\"case_id\",\"_field\"])\n |> last()\n |> pivot(rowKey:[\"_time\",\"case_id\",\"host\",\"status\",\"severity\",\"assignee\"], columnKey:[\"_field\"], valueColumn:\"_value\")\n |> sort(columns:[\"_time\"], desc:true)\n |> limit(n:20)", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -180d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_case\" and (r._field == \"count\" or r._field == \"title\" or r._field == \"incident_id\" or r._field == \"has_forensics\"))\n |> group(columns:[\"case_id\",\"_field\"])\n |> last()\n |> pivot(rowKey:[\"_time\",\"case_id\",\"host\",\"status\",\"severity\",\"assignee\"], columnKey:[\"_field\"], valueColumn:\"_value\")\n |> sort(columns:[\"_time\"], desc:true)\n |> limit(n:20)\n |> group()\n |> drop(columns:[\"_start\",\"_stop\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -844,7 +859,7 @@
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -30d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_incident\" and (r._field == \"count\" or r._field == \"message\" or r._field == \"document_name\" or r._field == \"printer_name\" or r._field == \"incident_verdict\"))\n |> group(columns:[\"event_id\",\"_field\"])\n |> last()\n |> pivot(rowKey:[\"_time\",\"host\",\"username\",\"signal_type\",\"severity\",\"action\"], columnKey:[\"_field\"], valueColumn:\"_value\")\n |> sort(columns:[\"_time\"], desc:true)\n |> limit(n:20)", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -30d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_incident\" and (r._field == \"count\" or r._field == \"message\" or r._field == \"document_name\" or r._field == \"printer_name\" or r._field == \"incident_verdict\"))\n |> group(columns:[\"event_id\",\"_field\"])\n |> last()\n |> pivot(rowKey:[\"_time\",\"host\",\"username\",\"signal_type\",\"severity\",\"action\"], columnKey:[\"_field\"], valueColumn:\"_value\")\n |> sort(columns:[\"_time\"], desc:true)\n |> limit(n:20)\n |> group()\n |> drop(columns:[\"_start\",\"_stop\"])",
"refId": "A" "refId": "A"
} }
], ],
+40 -29
View File
@@ -36,12 +36,15 @@
}, },
"id": 1, "id": 1,
"options": { "options": {
"content": "### Как читать дашборд\n- **Верхний блок** показывает **вчерашний завершённый день**. Это основной управленческий срез.\n- **Средний блок** показывает **сегодня с начала дня**. Эти цифры оперативные и к вечеру будут меняться.\n- Если утром по блоку **сегодня** мало часов или нули, это не ошибка: день ещё не завершён.\n- Нижние графики нужны для ответа на два вопроса: **как меняется нагрузка по дням** и **кто сколько времени работал**.", "content": "### Работа пользователей в RDP\nВерхний блок — завершённый вчерашний день. Средний блок — текущий день. Нижний блок — детализация по сотрудникам и доказанным действиям.",
"mode": "markdown" "mode": "markdown"
}, },
"title": "Руководителю: как смотреть этот экран", "title": "Сводка для руководителя",
"transparent": true, "transparent": true,
"type": "text" "type": "text",
"fieldConfig": {
"defaults": {}
}
}, },
{ {
"datasource": { "datasource": {
@@ -84,7 +87,8 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
@@ -115,7 +119,7 @@
} }
] ]
}, },
"unit": "h" "unit": "suffix: ч"
}, },
"overrides": [] "overrides": []
}, },
@@ -138,11 +142,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -14d)\n |> filter(fn: (r) => r._measurement == \"aw_rdp_worktime_summary_daily\" and r._field == \"total_active_seconds\" and r.host == \"${host}\")\n |> group(columns:[\"report_date\"])\n |> last()\n |> group()\n |> sort(columns:[\"report_date\"])\n |> tail(n:2)\n |> limit(n:1)\n |> map(fn:(r)=>({ r with _value: float(v:r._value) / 3600.0 }))", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -14d)\n |> filter(fn: (r) => r._measurement == \"aw_rdp_worktime_summary_daily\" and r._field == \"total_active_seconds\" and r.host == \"${host}\")\n |> group(columns:[\"report_date\"])\n |> last()\n |> group()\n |> sort(columns:[\"report_date\"])\n |> tail(n:2)\n |> limit(n:1)\n |> map(fn:(r)=>({ r with _value: float(v:r._value) / 3600.0 }))\n |> keep(columns:[\"_value\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -169,7 +174,7 @@
} }
] ]
}, },
"unit": "h" "unit": "suffix: ч"
}, },
"overrides": [] "overrides": []
}, },
@@ -192,7 +197,8 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
@@ -223,7 +229,7 @@
} }
] ]
}, },
"unit": "h" "unit": "suffix: ч"
}, },
"overrides": [] "overrides": []
}, },
@@ -246,11 +252,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -14d)\n |> filter(fn: (r) => r._measurement == \"aw_rdp_worktime_summary_daily\" and r._field == \"total_active_seconds\" and r.host == \"${host}\")\n |> group(columns:[\"report_date\"])\n |> last()\n |> group()\n |> sort(columns:[\"report_date\"])\n |> tail(n:1)\n |> map(fn:(r)=>({ r with _value: float(v:r._value) / 3600.0 }))", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -14d)\n |> filter(fn: (r) => r._measurement == \"aw_rdp_worktime_summary_daily\" and r._field == \"total_active_seconds\" and r.host == \"${host}\")\n |> group(columns:[\"report_date\"])\n |> last()\n |> group()\n |> sort(columns:[\"report_date\"])\n |> tail(n:1)\n |> map(fn:(r)=>({ r with _value: float(v:r._value) / 3600.0 }))\n |> keep(columns:[\"_value\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -267,7 +274,7 @@
"defaults": { "defaults": {
"decimals": 1, "decimals": 1,
"displayName": "${__field.labels.user}", "displayName": "${__field.labels.user}",
"unit": "h" "unit": "suffix: ч"
}, },
"overrides": [] "overrides": []
}, },
@@ -291,7 +298,8 @@
"values": false "values": false
}, },
"showUnfilled": true, "showUnfilled": true,
"sizing": "auto" "sizing": "auto",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
@@ -312,7 +320,7 @@
"defaults": { "defaults": {
"decimals": 1, "decimals": 1,
"displayName": "${__field.labels.user}", "displayName": "${__field.labels.user}",
"unit": "h" "unit": "suffix: ч"
}, },
"overrides": [] "overrides": []
}, },
@@ -336,7 +344,8 @@
"values": false "values": false
}, },
"showUnfilled": true, "showUnfilled": true,
"sizing": "auto" "sizing": "auto",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
@@ -363,7 +372,7 @@
}, },
"decimals": 1, "decimals": 1,
"displayName": "Команда", "displayName": "Команда",
"unit": "h" "unit": "suffix: ч"
}, },
"overrides": [] "overrides": []
}, },
@@ -409,7 +418,7 @@
"showPoints": "auto" "showPoints": "auto"
}, },
"displayName": "${__field.labels.user}", "displayName": "${__field.labels.user}",
"unit": "h" "unit": "suffix: ч"
}, },
"overrides": [] "overrides": []
}, },
@@ -480,18 +489,18 @@
"indexByName": { "indexByName": {
"Дата": 0, "Дата": 0,
"Пользователь": 1, "Пользователь": 1,
"Учётная_запись": 2, "Учётная запись": 2,
"Часы": 3 "Часы": 3
}, },
"renameByName": { "renameByName": {
"Учётная_запись": "Учётная запись" "Учётная запись": "Учётная запись"
} }
} }
} }
], ],
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -14d)\n |> filter(fn: (r) => r._measurement == \"aw_rdp_worktime_daily\" and r._field == \"active_seconds\" and r.host == \"${host}\")\n |> group(columns:[\"report_date\",\"user\"])\n |> last()\n |> sort(columns:[\"report_date\",\"user\"], desc:true)\n |> map(fn:(r)=>({ r with _value: float(v:r._value) / 3600.0 }))\n |> keep(columns:[\"report_date\",\"user\",\"user_id\",\"_value\"])\n |> rename(columns:{report_date:\"Дата\", user:\"Пользователь\", user_id:\"Учётная_запись\", _value:\"Часы\"})", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -14d)\n |> filter(fn: (r) => r._measurement == \"aw_rdp_worktime_daily\" and r._field == \"active_seconds\" and r.host == \"${host}\")\n |> group(columns:[\"report_date\",\"user\"])\n |> last()\n |> sort(columns:[\"report_date\",\"user\"], desc:true)\n |> map(fn:(r)=>({ r with _value: float(v:r._value) / 3600.0 }))\n |> group()\n |> keep(columns:[\"report_date\",\"user\",\"user_id\",\"_value\"])\n |> rename(columns:{report_date:\"Дата\", user:\"Пользователь\", user_id:\"Учётная запись\", _value:\"Часы\"})",
"refId": "A" "refId": "A"
} }
], ],
@@ -518,7 +527,7 @@
} }
] ]
}, },
"unit": "h" "unit": "suffix: ч"
}, },
"overrides": [] "overrides": []
}, },
@@ -541,11 +550,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "import \"date\"\nimport \"strings\"\nimport \"timezone\"\noption location = timezone.location(name: \"Europe/Moscow\")\ntoday = strings.substring(v: string(v: date.add(d: 3h, to: date.truncate(t: now(), unit: 1d))), start: 0, end: 10)\nfrom(bucket: \"aw_metrics\")\n |> range(start: -3d)\n |> filter(fn: (r) => r._measurement == \"aw_true_active_app_daily\" and r._field == \"proved_work_seconds\" and r.host == \"${host}\" and r.report_date == today)\n |> group(columns:[\"application\"])\n |> last()\n |> group()\n |> sum()\n |> map(fn:(r)=>({ r with _value: float(v:r._value) / 3600.0 }))", "query": "import \"date\"\nimport \"strings\"\nimport \"timezone\"\noption location = timezone.location(name: \"Europe/Moscow\")\ntoday = strings.substring(v: string(v: date.add(d: 3h, to: date.truncate(t: now(), unit: 1d))), start: 0, end: 10)\nfrom(bucket: \"aw_metrics\")\n |> range(start: -3d)\n |> filter(fn: (r) => r._measurement == \"aw_true_active_app_daily\" and r._field == \"proved_work_seconds\" and r.host == \"${host}\" and r.report_date == today)\n |> set(key: \"_field\", value: \"Доказанная работа\")\n |> group(columns:[\"application\"])\n |> last()\n |> group()\n |> sum()\n |> map(fn:(r)=>({ r with _value: float(v:r._value) / 3600.0 }))\n |> keep(columns:[\"_value\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -577,7 +587,7 @@
"properties": [ "properties": [
{ {
"id": "unit", "id": "unit",
"value": "h" "value": "suffix: ч"
}, },
{ {
"id": "decimals", "id": "decimals",
@@ -588,7 +598,7 @@
{ {
"matcher": { "matcher": {
"id": "byName", "id": "byName",
"options": "Evidence" "options": "Подтверждений"
}, },
"properties": [ "properties": [
{ {
@@ -620,7 +630,7 @@
}, },
"targets": [ "targets": [
{ {
"query": "import \"date\"\nimport \"strings\"\nimport \"timezone\"\noption location = timezone.location(name: \"Europe/Moscow\")\ntoday = strings.substring(v: string(v: date.add(d: 3h, to: date.truncate(t: now(), unit: 1d))), start: 0, end: 10)\nbase = from(bucket: \"aw_metrics\")\n |> range(start: -3d)\n |> filter(fn: (r) => r._measurement == \"aw_true_active_app_daily\" and r.host == \"${host}\" and r.report_date == today)\n\nnums = base\n |> filter(fn: (r) => r._field == \"proved_work_seconds\" or r._field == \"evidence_events\")\n |> group(columns:[\"application\",\"_field\"])\n |> last()\n |> group()\n |> pivot(rowKey:[\"application\",\"report_date\"], columnKey:[\"_field\"], valueColumn:\"_value\")\n\ntexts = base\n |> filter(fn: (r) => r._field == \"last_action\" or r._field == \"last_action_local\")\n |> group(columns:[\"application\",\"_field\"])\n |> last()\n |> group()\n |> pivot(rowKey:[\"application\",\"report_date\"], columnKey:[\"_field\"], valueColumn:\"_value\")\n\njoin(tables: {n: nums, t: texts}, on: [\"application\", \"report_date\"])\n |> map(fn:(r)=>({ r with hours: float(v:r.proved_work_seconds) / 3600.0 }))\n |> sort(columns:[\"proved_work_seconds\"], desc:true)\n |> keep(columns:[\"report_date\",\"application\",\"hours\",\"last_action_local\",\"last_action\",\"evidence_events\"])\n |> rename(columns:{report_date:\"Дата\", application:\"Приложение\", hours:\"Часы\", last_action_local:\"Последнее действие\", last_action:\"Контекст\", evidence_events:\"Evidence\"})", "query": "import \"date\"\nimport \"strings\"\nimport \"timezone\"\noption location = timezone.location(name: \"Europe/Moscow\")\ntoday = strings.substring(v: string(v: date.add(d: 3h, to: date.truncate(t: now(), unit: 1d))), start: 0, end: 10)\nbase = from(bucket: \"aw_metrics\")\n |> range(start: -3d)\n |> filter(fn: (r) => r._measurement == \"aw_true_active_app_daily\" and r.host == \"${host}\" and r.report_date == today)\n\nnums = base\n |> filter(fn: (r) => r._field == \"proved_work_seconds\" or r._field == \"evidence_events\")\n |> group(columns:[\"application\",\"_field\"])\n |> last()\n |> group()\n |> pivot(rowKey:[\"application\",\"report_date\"], columnKey:[\"_field\"], valueColumn:\"_value\")\n\ntexts = base\n |> filter(fn: (r) => r._field == \"last_action\" or r._field == \"last_action_local\")\n |> group(columns:[\"application\",\"_field\"])\n |> last()\n |> group()\n |> pivot(rowKey:[\"application\",\"report_date\"], columnKey:[\"_field\"], valueColumn:\"_value\")\n\njoin(tables: {n: nums, t: texts}, on: [\"application\", \"report_date\"])\n |> map(fn:(r)=>({ r with hours: float(v:r.proved_work_seconds) / 3600.0 }))\n |> sort(columns:[\"proved_work_seconds\"], desc:true)\n |> group()\n |> keep(columns:[\"report_date\",\"application\",\"hours\",\"last_action_local\",\"last_action\",\"evidence_events\"])\n |> rename(columns:{report_date:\"Дата\", application:\"Приложение\", hours:\"Доказано, ч\", last_action_local:\"Последнее действие\", last_action:\"Окно / действие\", evidence_events:\"Подтверждений\"})",
"refId": "A" "refId": "A"
} }
], ],
@@ -666,7 +676,8 @@
"mode": "off" "mode": "off"
} }
}, },
"unit": "h" "unit": "suffix: ч",
"displayName": "${__field.labels.application}"
}, },
"overrides": [] "overrides": []
}, },
@@ -691,7 +702,7 @@
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -14d)\n |> filter(fn: (r) => r._measurement == \"aw_true_active_app_daily\" and r._field == \"proved_work_seconds\" and r.host == \"${host}\")\n |> group(columns:[\"application\",\"report_date\"])\n |> last()\n |> map(fn:(r)=>({ r with _value: float(v:r._value) / 3600.0 }))\n |> group(columns:[\"application\"])", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -14d)\n |> filter(fn: (r) => r._measurement == \"aw_true_active_app_daily\" and r._field == \"proved_work_seconds\" and r.host == \"${host}\")\n |> group(columns:[\"application\",\"report_date\"])\n |> last()\n |> map(fn:(r)=>({ r with _value: float(v:r._value) / 3600.0 }))\n |> set(key: \"_field\", value: \"Доказанная работа\")\n |> group(columns:[\"application\"])",
"refId": "A" "refId": "A"
} }
], ],
+16 -10
View File
@@ -56,11 +56,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -7d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_incident\" and r._field == \"count\")\n |> sum()", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -7d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_incident\" and r._field == \"count\")\n |> group()\n |> sum()\n |> keep(columns:[\"_value\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -92,7 +93,8 @@
"value": 3 "value": 3
} }
] ]
} },
"displayName": "Сработок"
}, },
"overrides": [] "overrides": []
}, },
@@ -114,11 +116,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -7d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_incident\" and r._field == \"count\" and (r.severity == \"high\" or r.severity == \"critical\"))\n |> sum()", "query": "import \"array\"\n\nhigh = from(bucket: \"aw_metrics\")\n |> range(start: -7d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_incident\" and r._field == \"count\" and (r.severity == \"high\" or r.severity == \"critical\"))\n |> group()\n |> sum()\n |> keep(columns: [\"_value\"])\n\nfallback = array.from(rows: [{_value: 0}])\n\nunion(tables: [fallback, high])\n |> group()\n |> sum()\n |> set(key: \"_field\", value: \"Сработок\")\n |> keep(columns: [\"_value\", \"_field\"])\n |> yield(name: \"high_or_critical_count\")\n",
"refId": "A" "refId": "A"
} }
], ],
@@ -172,11 +175,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -180d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_case\" and r._field == \"count\")\n |> group(columns:[\"case_id\"])\n |> last()\n |> filter(fn: (r) => r.status == \"open\")\n |> group()\n |> count()", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -180d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_case\" and r._field == \"count\")\n |> group(columns:[\"case_id\"])\n |> last()\n |> filter(fn: (r) => r.status == \"open\")\n |> group()\n |> count()\n |> keep(columns:[\"_value\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -230,11 +234,12 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "auto" "textMode": "value",
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
"query": "from(bucket: \"aw_metrics\")\n |> range(start: -180d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_case\" and r._field == \"count\")\n |> group(columns:[\"case_id\"])\n |> last()\n |> filter(fn: (r) => r.status == \"investigating\")\n |> group()\n |> count()", "query": "from(bucket: \"aw_metrics\")\n |> range(start: -180d)\n |> filter(fn: (r) => r._measurement == \"aw_dlp_case\" and r._field == \"count\")\n |> group(columns:[\"case_id\"])\n |> last()\n |> filter(fn: (r) => r.status == \"investigating\")\n |> group()\n |> count()\n |> keep(columns:[\"_value\"])",
"refId": "A" "refId": "A"
} }
], ],
@@ -311,7 +316,8 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"showUnfilled": true "showUnfilled": true,
"noValue": "0"
}, },
"targets": [ "targets": [
{ {
+34 -30
View File
@@ -87,11 +87,12 @@
"fields": "" "fields": ""
}, },
"orientation": "auto", "orientation": "auto",
"textMode": "auto", "textMode": "value",
"wideLayout": true, "wideLayout": true,
"colorMode": "value", "colorMode": "value",
"graphMode": "area", "graphMode": "area",
"justifyMode": "auto" "justifyMode": "auto",
"noValue": "0"
} }
}, },
{ {
@@ -157,11 +158,12 @@
"fields": "" "fields": ""
}, },
"orientation": "auto", "orientation": "auto",
"textMode": "auto", "textMode": "value",
"wideLayout": true, "wideLayout": true,
"colorMode": "value", "colorMode": "value",
"graphMode": "area", "graphMode": "area",
"justifyMode": "auto" "justifyMode": "auto",
"noValue": "0"
} }
}, },
{ {
@@ -223,11 +225,12 @@
"fields": "" "fields": ""
}, },
"orientation": "auto", "orientation": "auto",
"textMode": "auto", "textMode": "value",
"wideLayout": true, "wideLayout": true,
"colorMode": "value", "colorMode": "value",
"graphMode": "area", "graphMode": "area",
"justifyMode": "auto" "justifyMode": "auto",
"noValue": "0"
} }
}, },
{ {
@@ -289,16 +292,17 @@
"fields": "" "fields": ""
}, },
"orientation": "auto", "orientation": "auto",
"textMode": "auto", "textMode": "value",
"wideLayout": true, "wideLayout": true,
"colorMode": "value", "colorMode": "value",
"graphMode": "area", "graphMode": "area",
"justifyMode": "auto" "justifyMode": "auto",
"noValue": "0"
} }
}, },
{ {
"id": 5, "id": 5,
"title": "Динамика block/pass", "title": "Динамика блокировок и разрешений",
"type": "timeseries", "type": "timeseries",
"datasource": { "datasource": {
"type": "loki", "type": "loki",
@@ -369,12 +373,9 @@
}, },
"legend": { "legend": {
"showLegend": true, "showLegend": true,
"displayMode": "table", "displayMode": "list",
"placement": "bottom", "placement": "bottom",
"calcs": [ "calcs": []
"lastNotNull",
"max"
]
} }
} }
}, },
@@ -451,12 +452,9 @@
}, },
"legend": { "legend": {
"showLegend": true, "showLegend": true,
"displayMode": "table", "displayMode": "list",
"placement": "bottom", "placement": "bottom",
"calcs": [ "calcs": []
"lastNotNull",
"max"
]
} }
} }
}, },
@@ -517,7 +515,8 @@
"minVizWidth": 0, "minVizWidth": 0,
"minVizHeight": 10, "minVizHeight": 10,
"namePlacement": "auto", "namePlacement": "auto",
"valueMode": "color" "valueMode": "color",
"noValue": "0"
} }
}, },
{ {
@@ -577,7 +576,8 @@
"minVizWidth": 0, "minVizWidth": 0,
"minVizHeight": 10, "minVizHeight": 10,
"namePlacement": "auto", "namePlacement": "auto",
"valueMode": "color" "valueMode": "color",
"noValue": "0"
} }
}, },
{ {
@@ -637,7 +637,8 @@
"minVizWidth": 0, "minVizWidth": 0,
"minVizHeight": 10, "minVizHeight": 10,
"namePlacement": "auto", "namePlacement": "auto",
"valueMode": "color" "valueMode": "color",
"noValue": "0"
} }
}, },
{ {
@@ -697,7 +698,8 @@
"values": false "values": false
}, },
"showUnfilled": true, "showUnfilled": true,
"valueMode": "color" "valueMode": "color",
"noValue": "0"
} }
}, },
{ {
@@ -757,7 +759,8 @@
"values": false "values": false
}, },
"showUnfilled": true, "showUnfilled": true,
"valueMode": "color" "valueMode": "color",
"noValue": "0"
} }
}, },
{ {
@@ -817,7 +820,8 @@
"values": false "values": false
}, },
"showUnfilled": true, "showUnfilled": true,
"valueMode": "color" "valueMode": "color",
"noValue": "0"
} }
}, },
{ {
@@ -882,8 +886,8 @@
"text": "", "text": "",
"value": "" "value": ""
}, },
"description": "Первое слово для поиска", "description": "Первое слово для фильтрации событий",
"label": "Search Term 1", "label": "Поиск 1",
"name": "search_term_1", "name": "search_term_1",
"options": [ "options": [
{ {
@@ -901,8 +905,8 @@
"text": "", "text": "",
"value": "" "value": ""
}, },
"description": "Второе слово для поиска", "description": "Второе слово для фильтрации событий",
"label": "Search Term 2", "label": "Поиск 2",
"name": "search_term_2", "name": "search_term_2",
"options": [ "options": [
{ {
@@ -923,7 +927,7 @@
}, },
"timepicker": {}, "timepicker": {},
"timezone": "browser", "timezone": "browser",
"title": "pfSense Firewall Overview", "title": "pfSense: обзор firewall",
"uid": "pfsense-loki-dashboard", "uid": "pfsense-loki-dashboard",
"version": 6, "version": 6,
"weekStart": "" "weekStart": ""