summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicolargo <nicolashennion@gmail.com>2024-04-28 11:16:27 +0200
committernicolargo <nicolashennion@gmail.com>2024-04-28 11:16:27 +0200
commit610ee081c2d259c41f62171fff91d1fdeccd7873 (patch)
tree060a9ba1e0ea3c9aa2ac5722021f8ec57ce16ef1
parent6b0de5d6beedf519068c3c6da1f9a938211ac937 (diff)
Refactor the Wifi plugin
-rw-r--r--conf/glances.conf2
-rwxr-xr-xdocker-compose/glances.conf2
-rw-r--r--docs/aoa/wifi.rst4
-rw-r--r--docs/api.rst318
-rw-r--r--glances/outputs/static/js/components/plugin-wifi.vue10
-rw-r--r--glances/outputs/static/public/glances.js2
-rw-r--r--glances/plugins/wifi/__init__.py134
7 files changed, 208 insertions, 264 deletions
diff --git a/conf/glances.conf b/conf/glances.conf
index bc9ed9e5..10f48a6d 100644
--- a/conf/glances.conf
+++ b/conf/glances.conf
@@ -248,7 +248,7 @@ nf_conntrack_percent_critical=90
[wifi]
disable=False
-# Define SIGNAL thresholds in db (lower is better...)
+# Define SIGNAL thresholds in dBm (lower is better...)
# Based on: http://serverfault.com/questions/501025/industry-standard-for-minimum-wifi-signal-strength
careful=-65
warning=-75
diff --git a/docker-compose/glances.conf b/docker-compose/glances.conf
index 45504a1d..24868117 100755
--- a/docker-compose/glances.conf
+++ b/docker-compose/glances.conf
@@ -248,7 +248,7 @@ nf_conntrack_percent_critical=90
[wifi]
disable=False
-# Define SIGNAL thresholds in db (lower is better...)
+# Define SIGNAL thresholds in dBm (lower is better...)
# Based on: http://serverfault.com/questions/501025/industry-standard-for-minimum-wifi-signal-strength
careful=-65
warning=-75
diff --git a/docs/aoa/wifi.rst b/docs/aoa/wifi.rst
index 2624b083..31222290 100644
--- a/docs/aoa/wifi.rst
+++ b/docs/aoa/wifi.rst
@@ -3,9 +3,7 @@
Wi-Fi
=====
-*Availability: Linux only*
-
-*Dependency: this plugin uses the optional wifi Python lib*
+*Availability: Linux (with an /proc/net/wireless file) only*
.. image:: ../_static/wifi.png
diff --git a/docs/api.rst b/docs/api.rst
index df651109..e5774d95 100644
--- a/docs/api.rst
+++ b/docs/api.rst
@@ -141,7 +141,7 @@ Get plugin stats::
"refresh": 3.0,
"regex": True,
"result": None,
- "timer": 0.4435689449310303},
+ "timer": 0.4298982620239258},
{"count": 0,
"countmax": 20.0,
"countmin": None,
@@ -150,7 +150,7 @@ Get plugin stats::
"refresh": 3.0,
"regex": True,
"result": None,
- "timer": 0.4434678554534912}]
+ "timer": 0.42979884147644043}]
Fields descriptions:
@@ -178,7 +178,7 @@ Get a specific item when field matches the given value::
"refresh": 3.0,
"regex": True,
"result": None,
- "timer": 0.4435689449310303}]}
+ "timer": 0.4298982620239258}]}
GET cloud
---------
@@ -265,19 +265,19 @@ Get plugin stats::
# curl http://localhost:61208/api/4/cpu
{"cpucore": 16,
- "ctx_switches": 39237833,
+ "ctx_switches": 60035404,
"guest": 0.0,
- "idle": 93.8,
- "interrupts": 29865357,
+ "idle": 93.2,
+ "interrupts": 52181153,
"iowait": 0.2,
"irq": 0.0,
"nice": 0.0,
- "soft_interrupts": 10773150,
+ "soft_interrupts": 18620599,
"steal": 0.0,
"syscalls": 0,
- "system": 2.9,
- "total": 6.0,
- "user": 3.1}
+ "system": 3.3,
+ "total": 6.6,
+ "user": 3.4}
Fields descriptions:
@@ -310,7 +310,7 @@ Fields descriptions:
Get a specific field::
# curl http://localhost:61208/api/4/cpu/total
- {"total": 6.0}
+ {"total": 6.6}
GET diskio
----------
@@ -320,10 +320,10 @@ Get plugin stats::
# curl http://localhost:61208/api/4/diskio
[{"disk_name": "nvme0n1",
"key": "disk_name",
- "read_bytes": 3895486976,
- "read_count": 128023,
- "write_bytes": 61977265152,
- "write_count": 545336},
+ "read_bytes": 4044614144,
+ "read_count": 131487,
+ "write_bytes": 62513415168,
+ "write_count": 580555},
{"disk_name": "nvme0n1p1",
"key": "disk_name",
"read_bytes": 7476224,
@@ -363,10 +363,10 @@ Get a specific item when field matches the given value::
# curl http://localhost:61208/api/4/diskio/disk_name/nvme0n1
{"nvme0n1": [{"disk_name": "nvme0n1",
"key": "disk_name",
- "read_bytes": 3895486976,
- "read_count": 128023,
- "write_bytes": 61977265152,
- "write_count": 545336}]}
+ "read_bytes": 4044614144,
+ "read_count": 131487,
+ "write_bytes": 62513415168,
+ "write_count": 580555}]}
GET folders
-----------
@@ -393,13 +393,13 @@ Get plugin stats::
# curl http://localhost:61208/api/4/fs
[{"device_name": "/dev/mapper/ubuntu--vg-ubuntu--lv",
- "free": 929687998464,
+ "free": 929623175168,
"fs_type": "ext4",
"key": "mnt_point",
"mnt_point": "/",
"percent": 2.4,
"size": 1003736440832,
- "used": 22985936896}]
+ "used": 23050760192}]
Fields descriptions:
@@ -420,13 +420,13 @@ Get a specific item when field matches the given value::
# curl http://localhost:61208/api/4/fs/mnt_point//
{"/": [{"device_name": "/dev/mapper/ubuntu--vg-ubuntu--lv",
- "free": 929687998464,
+ "free": 929623175168,
"fs_type": "ext4",
"key": "mnt_point",
"mnt_point": "/",
"percent": 2.4,
"size": 1003736440832,
- "used": 22985936896}]}
+ "used": 23050760192}]}
GET gpu
-------
@@ -499,10 +499,7 @@ GET load
Get plugin stats::
# curl http://localhost:61208/api/4/load
- {"cpucore": 16,
- "min1": 0.6142578125,
- "min15": 0.798828125,
- "min5": 0.70751953125}
+ {"cpucore": 16, "min1": 0.890625, "min15": 0.8359375, "min5": 0.91357421875}
Fields descriptions:
@@ -514,7 +511,7 @@ Fields descriptions:
Get a specific field::
# curl http://localhost:61208/api/4/load/min1
- {"min1": 0.6142578125}
+ {"min1": 0.890625}
GET mem
-------
@@ -522,16 +519,16 @@ GET mem
Get plugin stats::
# curl http://localhost:61208/api/4/mem
- {"active": 5535404032,
- "available": 10599366656,
- "buffers": 126631936,
- "cached": 8819142656,
- "free": 10599366656,
- "inactive": 6060847104,
- "percent": 35.5,
- "shared": 1044340736,
+ {"active": 5997711360,
+ "available": 10299539456,
+ "buffers": 157093888,
+ "cached": 8925323264,
+ "free": 10299539456,
+ "inactive": 6265548800,
+ "percent": 37.3,
+ "shared": 920862720,
"total": 16422477824,
- "used": 5823111168}
+ "used": 6122938368}
Fields descriptions:
@@ -589,15 +586,15 @@ Get plugin stats::
# curl http://localhost:61208/api/4/network
[{"alias": None,
"bytes_all": 0,
- "bytes_all_gauge": 1514070334,
+ "bytes_all_gauge": 1547190245,
"bytes_recv": 0,
- "bytes_recv_gauge": 1489901157,
+ "bytes_recv_gauge": 1513755950,
"bytes_sent": 0,
- "bytes_sent_gauge": 24169177,
+ "bytes_sent_gauge": 33434295,
"interface_name": "wlp0s20f3",
"key": "interface_name",
"speed": 0,
- "time_since_update": 0.44727373123168945}]
+ "time_since_update": 0.43319129943847656}]
Fields descriptions:
@@ -626,15 +623,15 @@ Get a specific item when field matches the given value::
# curl http://localhost:61208/api/4/network/interface_name/wlp0s20f3
{"wlp0s20f3": [{"alias": None,
"bytes_all": 0,
- "bytes_all_gauge": 1514070334,
+ "bytes_all_gauge": 1547190245,
"bytes_recv": 0,
- "bytes_recv_gauge": 1489901157,
+ "bytes_recv_gauge": 1513755950,
"bytes_sent": 0,
- "bytes_sent_gauge": 24169177,
+ "bytes_sent_gauge": 33434295,
"interface_name": "wlp0s20f3",
"key": "interface_name",
"speed": 0,
- "time_since_update": 0.44727373123168945}]}
+ "time_since_update": 0.43319129943847656}]}
GET now
-------
@@ -642,7 +639,7 @@ GET now
Get plugin stats::
# curl http://localhost:61208/api/4/now
- {"custom": "2024-04-28 09:21:31 CEST", "iso": "2024-04-28T09:21:31+02:00"}
+ {"custom": "2024-04-28 10:56:08 CEST", "iso": "2024-04-28T10:56:08+02:00"}
Fields descriptions:
@@ -652,7 +649,7 @@ Fields descriptions:
Get a specific field::
# curl http://localhost:61208/api/4/now/iso
- {"iso": "2024-04-28T09:21:31+02:00"}
+ {"iso": "2024-04-28T10:56:08+02:00"}
GET percpu
----------
@@ -663,28 +660,28 @@ Get plugin stats::
[{"cpu_number": 0,
"guest": 0.0,
"guest_nice": 0.0,
- "idle": 71.0,
+ "idle": 68.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
- "system": 0.0,
- "total": 29.0,
- "user": 0.0},
+ "system": 1.0,
+ "total": 32.0,
+ "user": 1.0},
{"cpu_number": 1,
"guest": 0.0,
"guest_nice": 0.0,
- "idle": 61.0,
+ "idle": 60.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
- "system": 8.0,
- "total": 39.0,
+ "system": 11.0,
+ "total": 40.0,
"user": 0.0}]
Fields descriptions:
@@ -719,7 +716,7 @@ Get plugin stats::
"port": 0,
"refresh": 30,
"rtt_warning": None,
- "status": 0.007499,
+ "status": 0.006369,
"timeout": 3}]
Fields descriptions:
@@ -747,7 +744,7 @@ Get a specific item when field matches the given value::
"port": 0,
"refresh": 30,
"rtt_warning": None,
- "status": 0.007499,
+ "status": 0.006369,
"timeout": 3}]}
GET processcount
@@ -756,7 +753,7 @@ GET processcount
Get plugin stats::
# curl http://localhost:61208/api/4/processcount
- {"pid_max": 0, "running": 1, "sleeping": 281, "thread": 1585, "total": 413}
+ {"pid_max": 0, "running": 1, "sleeping": 287, "thread": 1654, "total": 422}
Fields descriptions:
@@ -769,7 +766,7 @@ Fields descriptions:
Get a specific field::
# curl http://localhost:61208/api/4/processcount/total
- {"total": 413}
+ {"total": 422}
GET processlist
---------------
@@ -777,32 +774,7 @@ GET processlist
Get plugin stats::
# curl http://localhost:61208/api/4/processlist
- [{"cmdline": ["/snap/firefox/4173/usr/lib/firefox/firefox"],
- "cpu_percent": 0.0,
- "cpu_times": {"children_system": 89.02,
- "children_user": 378.12,
- "iowait": 0.0,
- "system": 168.9,
- "user": 529.45},
- "gids": {"effective": 1000, "real": 1000, "saved": 1000},
- "io_counters": [313785344, 1549873152, 0, 0, 0],
- "key": "pid",
- "memory_info": {"data": 792616960,
- "dirty": 0,
- "lib": 0,
- "rss": 539623424,
- "shared": 263446528,
- "text": 925696,
- "vms": 12552966144},
- "memory_percent": 3.285883103531356,
- "name": "firefox",
- "nice": 0,
- "num_threads": 130,
- "pid": 4355,
- "status": "S",
- "time_since_update": 1,
- "username": "nicolargo"},
- {"cmdline": ["/snap/code/157/usr/share/code/code",
+ [{"cmdline": ["/snap/code/157/usr/share/code/code",
"--type=renderer",
"--crashpad-handler-pid=10971",
"--enable-crash-reporter=864d4bb7-dd20-4851-830f-29e81dd93517,no_channel",
@@ -834,25 +806,50 @@ Get plugin stats::
"cpu_times": {"children_system": 0.0,
"children_user": 0.0,
"iowait": 0.0,
- "system": 22.3,
- "user": 268.19},
+ "system": 84.88,
+ "user": 1012.96},
"gids": {"effective": 1000, "real": 1000, "saved": 1000},
- "io_counters": [19295232, 3268608, 0, 0, 0],
+ "io_counters": [19295232, 3309568, 0, 0, 0],
"key": "pid",
- "memory_info": {"data": 876601344,
+ "memory_info": {"data": 1031561216,
"dirty": 0,
"lib": 0,
- "rss": 457019392,
- "shared": 120274944,
+ "rss": 546623488,
+ "shared": 122777600,
"text": 128315392,
- "vms": 1221639925760},
- "memory_percent": 2.782889384281016,
+ "vms": 1221642571776},
+ "memory_percent": 3.328507998964432,
"name": "code",
"nice": 0,
"num_threads": 26,
"pid": 11022,
"status": "S",
"time_since_update": 1,
+ "username": "nicolargo"},
+ {"cmdline": ["/snap/firefox/4173/usr/lib/firefox/firefox"],
+ "cpu_percent": 0.0,
+ "cpu_times": {"children_system": 99.72,
+ "children_user": 417.85,
+ "iowait": 0.0,
+ "system": 216.13,
+ "user": 678.02},
+ "gids": {"effective": 1000, "real": 1000, "saved": 1000},
+ "io_counters": [322292736, 1855184896, 0, 0, 0],
+ "key": "pid",
+ "memory_info": {"data": 799129600,
+ "dirty": 0,
+ "lib": 0,
+ "rss": 530989056,
+ "shared": 253530112,
+ "text": 925696,
+ "vms": 12588711936},
+ "memory_percent": 3.2333065794980484,
+ "name": "firefox",
+ "nice": 0,
+ "num_threads": 129,
+ "pid": 4355,
+ "status": "S",
+ "time_since_update": 1,
"username": "nicolargo"}]
Fields descriptions:
@@ -885,57 +882,57 @@ GET quicklook
Get plugin stats::
# curl http://localhost:61208/api/4/quicklook
- {"cpu": 6.0,
+ {"cpu": 6.6,
"cpu_hz": 4475000000.0,
- "cpu_hz_current": 1090839125.0,
+ "cpu_hz_current": 945092312.5,
"cpu_log_core": 16,
"cpu_name": "13th Gen Intel(R) Core(TM) i7-13620H",
"cpu_phys_core": 10,
- "load": 5.0,
- "mem": 35.5,
+ "load": 5.2,
+ "mem": 37.3,
"percpu": [{"cpu_number": 0,
"guest": 0.0,
"guest_nice": 0.0,
- "idle": 71.0,
+ "idle": 68.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
- "system": 0.0,
- "total": 29.0,
- "user": 0.0},
+ "system": 1.0,
+ "total": 32.0,
+ "user": 1.0},
{"cpu_number": 1,
"guest": 0.0,
"guest_nice": 0.0,
- "idle": 61.0,
+ "idle": 60.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
- "system": 8.0,
- "total": 39.0,
+ "system": 11.0,
+ "total": 40.0,
"user": 0.0},
{"cpu_number": 2,
"guest": 0.0,
"guest_nice": 0.0,
- "idle": 68.0,
- "iowait": 2.0,
+ "idle": 70.0,
+ "iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
"system": 1.0,
- "total": 32.0,
+ "total": 30.0,
"user": 1.0},
{"cpu_number": 3,
"guest": 0.0,
"guest_nice": 0.0,
- "idle": 71.0,
+ "idle": 72.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
@@ -943,21 +940,21 @@ Get plugin stats::
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
- "total": 29.0,
+ "total": 28.0,
"user": 0.0},
{"cpu_number": 4,
"guest": 0.0,
"guest_nice": 0.0,
- "idle": 40.0,
- "iowait": 0.0,
+ "idle": 25.0,
+ "iowait": 1.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
- "system": 6.0,
- "total": 60.0,
- "user": 24.0},
+ "system": 13.0,
+ "total": 75.0,
+ "user": 30.0},
{"cpu_number": 5,
"guest": 0.0,
"guest_nice": 0.0,
@@ -970,20 +967,20 @@ Get plugin stats::
"steal": 0.0,
"system": 0.0,
"total": 29.0,
- "user": 0.0},
+ "user": 1.0},
{"cpu_number": 6,
"guest": 0.0,
"guest_nice": 0.0,
- "idle": 46.0,
+ "idle": 61.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
- "system": 15.0,
- "total": 54.0,
- "user": 8.0},
+ "system": 8.0,
+ "total": 39.0,
+ "user": 2.0},
{"cpu_number": 7,
"guest": 0.0,
"guest_nice": 0.0,
@@ -994,7 +991,7 @@ Get plugin stats::
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
- "system": 0.0,
+ "system": 1.0,
"total": 29.0,
"user": 0.0},
{"cpu_number": 8,
@@ -1013,7 +1010,7 @@ Get plugin stats::
{"cpu_number": 9,
"guest": 0.0,
"guest_nice": 0.0,
- "idle": 71.0,
+ "idle": 72.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
@@ -1021,12 +1018,12 @@ Get plugin stats::
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
- "total": 29.0,
+ "total": 28.0,
"user": 0.0},
{"cpu_number": 10,
"guest": 0.0,
"guest_nice": 0.0,
- "idle": 70.0,
+ "idle": 71.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
@@ -1034,12 +1031,12 @@ Get plugin stats::
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
- "total": 30.0,
- "user": 1.0},
+ "total": 29.0,
+ "user": 0.0},
{"cpu_number": 11,
"guest": 0.0,
"guest_nice": 0.0,
- "idle": 72.0,
+ "idle": 71.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
@@ -1047,21 +1044,21 @@ Get plugin stats::
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
- "total": 28.0,
+ "total": 29.0,
"user": 0.0},
{"cpu_number": 12,
"guest": 0.0,
"guest_nice": 0.0,
- "idle": 71.0,
+ "idle": 70.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.0,
"steal": 0.0,
- "system": 0.0,
- "total": 29.0,
- "user": 0.0},
+ "system": 1.0,
+ "total": 30.0,
+ "user": 1.0},
{"cpu_number": 13,
"guest": 0.0,
"guest_nice": 0.0,
@@ -1074,7 +1071,7 @@ Get plugin stats::
"steal": 0.0,
"system": 0.0,
"total": 29.0,
- "user": 0.0},
+ "user": 1.0},
{"cpu_number": 14,
"guest": 0.0,
"guest_nice": 0.0,
@@ -1091,7 +1088,7 @@ Get plugin stats::
{"cpu_number": 15,
"guest": 0.0,
"guest_nice": 0.0,
- "idle": 71.0,
+ "idle": 72.0,
"iowait": 0.0,
"irq": 0.0,
"key": "cpu_number",
@@ -1099,7 +1096,7 @@ Get plugin stats::
"softirq": 0.0,
"steal": 0.0,
"system": 0.0,
- "total": 29.0,
+ "total": 28.0,
"user": 0.0}],
"swap": 0.0}
@@ -1139,14 +1136,14 @@ Get plugin stats::
"label": "Composite",
"type": "temperature_core",
"unit": "C",
- "value": 30,
+ "value": 32,
"warning": 82},
{"critical": 65261,
"key": "label",
"label": "Sensor 1",
"type": "temperature_core",
"unit": "C",
- "value": 30,
+ "value": 32,
"warning": 65261}]
Fields descriptions:
@@ -1207,7 +1204,7 @@ Get a specific item when field matches the given value::
"label": "Composite",
"type": "temperature_core",
"unit": "C",
- "value": 30,
+ "value": 32,
"warning": 82}]}
GET smart
@@ -1251,7 +1248,7 @@ GET uptime
Get plugin stats::
# curl http://localhost:61208/api/4/uptime
- "15:09:42"
+ "16:44:18"
GET version
-----------
@@ -1267,7 +1264,20 @@ GET wifi
Get plugin stats::
# curl http://localhost:61208/api/4/wifi
- []
+ [{"key": "ssid", "security": "", "signal": -61.0, "ssid": "wlp0s20f3"}]
+
+Get a specific field::
+
+ # curl http://localhost:61208/api/4/wifi/ssid
+ {"ssid": ["wlp0s20f3"]}
+
+Get a specific item when field matches the given value::
+
+ # curl http://localhost:61208/api/4/wifi/ssid/wlp0s20f3
+ {"wlp0s20f3": [{"key": "ssid",
+ "security": "",
+ "signal": -61.0,
+ "ssid": "wlp0s20f3"}]}
GET all stats
-------------
@@ -1311,34 +1321,34 @@ GET stats history
History of a plugin::
# curl http://localhost:61208/api/4/cpu/history
- {"system": [["2024-04-28T09:21:32.041308", 2.9],
- ["2024-04-28T09:21:33.119919", 0.8],
- ["2024-04-28T09:21:34.129945", 0.8]],
- "user": [["2024-04-28T09:21:32.041304", 3.1],
- ["2024-04-28T09:21:33.119916", 0.9],
- ["2024-04-28T09:21:34.129938", 0.9]]}
+ {"system": [["2024-04-28T10:56:09.972866", 3.3],
+ ["2024-04-28T10:56:11.049288", 0.9],
+ ["2024-04-28T10:56:12.060736", 0.9]],
+ "user": [["2024-04-28T10:56:09.972858", 3.4],
+ ["2024-04-28T10:56:11.049285", 3.0],
+ ["2024-04-28T10:56:12.060731", 3.0]]}
Limit history to last 2 values::
# curl http://localhost:61208/api/4/cpu/history/2
- {"system": [["2024-04-28T09:21:33.119919", 0.8],
- ["2024-04-28T09:21:34.129945", 0.8]],
- "user": [["2024-04-28T09:21:33.119916", 0.9],
- ["2024-04-28T09:21:34.129938", 0.9]]}
+ {"system": [["2024-04-28T10:56:11.049288", 0.9],
+ ["2024-04-28T10:56:12.060736", 0.9]],
+ "user": [["2024-04-28T10:56:11.049285", 3.0],
+ ["2024-04-28T10:56:12.060731", 3.0]]}
History for a specific field::
# curl http://localhost:61208/api/4/cpu/system/history
- {"system": [["2024-04-28T09:21:30.769936", 2.9],
- ["2024-04-28T09:21:32.041308", 2.9],
- ["2024-04-28T09:21:33.119919", 0.8],
- ["2024-04-28T09:21:34.129945", 0.8]]}
+ {"system": [["2024-04-28T10:56:08.688127", 3.3],
+ ["2024-04-28T10:56:09.972866", 3.3],
+ ["2024-04-28T10:56:11.049288", 0.9],
+ ["2024-04-28T10:56:12.060736", 0.9]]}
Limit history for a specific field to last 2 values::
# curl http://localhost:61208/api/4/cpu/system/history
- {"system": [["2024-04-28T09:21:33.119919", 0.8],
- ["2024-04-28T09:21:34.129945", 0.8]]}
+ {"system": [["2024-04-28T10:56:11.049288", 0.9],
+ ["2024-04-28T10:56:12.060736", 0.9]]}
GET limits (used for thresholds)
--------------------------------
diff --git a/glances/outputs/static/js/components/plugin-wifi.vue b/glances/outputs/static/js/components/plugin-wifi.vue
index 9fa0aa52..b907d0b6 100644
--- a/glances/outputs/static/js/components/plugin-wifi.vue
+++ b/glances/outputs/static/js/components/plugin-wifi.vue
@@ -8,13 +8,10 @@
<div class="table-row" v-for="(hotspot, hotspotId) in hotspots" :key="hotspotId">
<div class="table-cell text-left">
{{ $filters.limitTo(hotspot.ssid, 20) }}
- <span>
- {{ hotspot.security }}
- </span>
</div>
<div class="table-cell"></div>
- <div class="table-cell" :class="getDecoration(hotspot, 'signal')">
- {{ hotspot.signal }}
+ <div class="table-cell" :class="getDecoration(hotspot, 'quality_level')">
+ {{ hotspot.quality_level }}
</div>
</div>
</section>
@@ -44,8 +41,7 @@ export default {
}
return {
ssid: hotspotData['ssid'],
- signal: hotspotData['signal'],
- security: hotspotData['security']
+ quality_level: hotspotData['quality_level']
};
})
.filter(Boolean);
diff --git a/glances/outputs/static/public/glances.js b/glances/outputs/static/public/glances.js
index dcc393de..afa87b09 100644
--- a/glances/outputs/static/public/glances.js
+++ b/glances/outputs/static/public/glances.js
@@ -28,4 +28,4 @@ function n(e){return"[object Object]"===Object.prototype.toString.call(e)}Object
* https://jaywcjlove.github.io/hotkeys-js
* Licensed under the MIT license
*/
-var mo="undefined"!=typeof navigator&&navigator.userAgent.toLowerCase().indexOf("firefox")>0;function bo(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r):e.attachEvent&&e.attachEvent("on".concat(t),(function(){n(window.event)}))}function vo(e,t){for(var n=t.slice(0,t.length-1),r=0;r<n.length;r++)n[r]=e[n[r].toLowerCase()];return n}function yo(e){"string"!=typeof e&&(e="");for(var t=(e=e.replace(/\s/g,"")).split(","),n=t.lastIndexOf("");n>=0;)t[n-1]+=",",t.splice(n,1),n=t.lastIndexOf("");return t}for(var wo={backspace:8,"⌫":8,tab:9,clear:12,enter:13,"↩":13,return:13,esc:27,escape:27,space:32,left:37,up:38,right:39,down:40,del:46,delete:46,ins:45,insert:45,home:36,end:35,pageup:33,pagedown:34,capslock:20,num_0:96,num_1:97,num_2:98,num_3:99,num_4:100,num_5:101,num_6:102,num_7:103,num_8:104,num_9:105,num_multiply:106,num_add:107,num_enter:108,num_subtract:109,num_decimal:110,num_divide:111,"⇪":20,",":188,".":190,"/":191,"`":192,"-":mo?173:189,"=":mo?61:187,";":mo?59:186,"'":222,"[":219,"]":221,"\\":220},xo={"⇧":16,shift:16,"⌥":18,alt:18,option:18,"⌃":17,ctrl:17,control:17,"⌘":91,cmd:91,command:91},_o={16:"shiftKey",18:"altKey",17:"ctrlKey",91:"metaKey",shiftKey:16,ctrlKey:17,altKey:18,metaKey:91},ko={16:!1,18:!1,17:!1,91:!1},So={},Co=1;Co<20;Co++)wo["f".concat(Co)]=111+Co;var To=[],Ao=!1,Eo="all",Oo=[],Io=function(e){return wo[e.toLowerCase()]||xo[e.toLowerCase()]||e.toUpperCase().charCodeAt(0)};function Po(e){Eo=e||"all"}function No(){return Eo||"all"}var Lo=function(e){var t=e.key,n=e.scope,r=e.method,i=e.splitKey,s=void 0===i?"+":i;yo(t).forEach((function(e){var t=e.split(s),i=t.length,o=t[i-1],a="*"===o?"*":Io(o);if(So[a]){n||(n=No());var l=i>1?vo(xo,t):[];So[a]=So[a].filter((function(e){return!((!r||e.method===r)&&e.scope===n&&function(e,t){for(var n=e.length>=t.length?e:t,r=e.length>=t.length?t:e,i=!0,s=0;s<n.length;s++)-1===r.indexOf(n[s])&&(i=!1);return i}(e.mods,l))}))}}))};function Do(e,t,n,r){var i;if(t.element===r&&(t.scope===n||"all"===t.scope)){for(var s in i=t.mods.length>0,ko)Object.prototype.hasOwnProperty.call(ko,s)&&(!ko[s]&&t.mods.indexOf(+s)>-1||ko[s]&&-1===t.mods.indexOf(+s))&&(i=!1);(0!==t.mods.length||ko[16]||ko[18]||ko[17]||ko[91])&&!i&&"*"!==t.shortcut||(t.keys=[],t.keys=t.keys.concat(To),!1===t.method(e,t)&&(e.preventDefault?e.preventDefault():e.returnValue=!1,e.stopPropagation&&e.stopPropagation(),e.cancelBubble&&(e.cancelBubble=!0)))}}function Mo(e,t){var n=So["*"],r=e.keyCode||e.which||e.charCode;if(jo.filter.call(this,e)){if(93!==r&&224!==r||(r=91),-1===To.indexOf(r)&&229!==r&&To.push(r),["ctrlKey","altKey","shiftKey","metaKey"].forEach((function(t){var n=_o[t];e[t]&&-1===To.indexOf(n)?To.push(n):!e[t]&&To.indexOf(n)>-1?To.splice(To.indexOf(n),1):"metaKey"===t&&e[t]&&3===To.length&&(e.ctrlKey||e.shiftKey||e.altKey||(To=To.slice(To.indexOf(n))))})),r in ko){for(var i in ko[r]=!0,xo)xo[i]===r&&(jo[i]=!0);if(!n)return}for(var s in ko)Object.prototype.hasOwnProperty.call(ko,s)&&(ko[s]=e[_o[s]]);e.getModifierState&&(!e.altKey||e.ctrlKey)&&e.getModifierState("AltGraph")&&(-1===To.indexOf(17)&&To.push(17),-1===To.indexOf(18)&&To.push(18),ko[17]=!0,ko[18]=!0);var o=No();if(n)for(var a=0;a<n.length;a++)n[a].scope===o&&("keydown"===e.type&&n[a].keydown||"keyup"===e.type&&n[a].keyup)&&Do(e,n[a],o,t);if(r in So)for(var l=0;l<So[r].length;l++)if(("keydown"===e.type&&So[r][l].keydown||"keyup"===e.type&&So[r][l].keyup)&&So[r][l].key){for(var c=So[r][l],u=c.splitKey,d=c.key.split(u),f=[],p=0;p<d.length;p++)f.push(Io(d[p]));f.sort().join("")===To.sort().join("")&&Do(e,c,o,t)}}}function jo(e,t,n){To=[];var r=yo(e),i=[],s="all",o=document,a=0,l=!1,c=!0,u="+",d=!1;for(void 0===n&&"function"==typeof t&&(n=t),"[object Object]"===Object.prototype.toString.call(t)&&(t.scope&&(s=t.scope),t.element&&(o=t.element),t.keyup&&(l=t.keyup),void 0!==t.keydown&&(c=t.keydown),void 0!==t.capture&&(d=t.capture),"string"==typeof t.splitKey&&(u=t.splitKey)),"string"==typeof t&&(s=t);a<r.length;a++)i=[],(e=r[a].split(u)).length>1&&(i=vo(xo,e)),(e="*"===(e=e[e.length-1])?"*":Io(e))in So||(So[e]=[]),So[e].push({keyup:l,keydown:c,scope:s,mods:i,shortcut:r[a],method:n,key:r[a],splitKey:u,element:o});void 0!==o&&!function(e){return Oo.indexOf(e)>-1}(o)&&window&&(Oo.push(o),bo(o,"keydown",(function(e){Mo(e,o)}),d),Ao||(Ao=!0,bo(window,"focus",(function(){To=[]}),d)),bo(o,"keyup",(function(e){Mo(e,o),function(e){var t=e.keyCode||e.which||e.charCode,n=To.indexOf(t);if(n>=0&&To.splice(n,1),e.key&&"meta"===e.key.toLowerCase()&&To.splice(0,To.length),93!==t&&224!==t||(t=91),t in ko)for(var r in ko[t]=!1,xo)xo[r]===t&&(jo[r]=!1)}(e)}),d))}var Ro={getPressedKeyString:function(){return To.map((function(e){return t=e,Object.keys(wo).find((function(e){return wo[e]===t}))||function(e){return Object.keys(xo).find((function(t){return xo[t]===e}))}(e)||String.fromCharCode(e);var t}))},setScope:Po,getScope:No,deleteScope:function(e,t){var n,r;for(var i in e||(e=No()),So)if(Object.prototype.hasOwnProperty.call(So,i))for(n=So[i],r=0;r<n.length;)n[r].scope===e?n.splice(r,1):r++;No()===e&&Po(t||"all")},getPressedKeyCodes:function(){return To.slice(0)},getAllKeyCodes:function(){var e=[];return Object.keys(So).forEach((function(t){So[t].forEach((function(t){var n=t.key,r=t.scope,i=t.mods,s=t.shortcut;e.push({scope:r,shortcut:s,mods:i,keys:n.split("+").map((function(e){return Io(e)}))})}))})),e},isPressed:function(e){return"string"==typeof e&&(e=Io(e)),-1!==To.indexOf(e)},filter:function(e){var t=e.target||e.srcElement,n=t.tagName,r=!0;return!t.isContentEditable&&("INPUT"!==n&&"TEXTAREA"!==n&&"SELECT"!==n||t.readOnly)||(r=!1),r},trigger:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"all";Object.keys(So).forEach((function(n){So[n].filter((function(n){return n.scope===t&&n.shortcut===e})).forEach((function(e){e&&e.method&&e.method()}))}))},unbind:function(e){if(void 0===e)Object.keys(So).forEach((function(e){return delete So[e]}));else if(Array.isArray(e))e.forEach((function(e){e.key&&Lo(e)}));else if("object"==typeof e)e.key&&Lo(e);else if("string"==typeof e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var i=n[0],s=n[1];"function"==typeof i&&(s=i,i=""),Lo({key:e,scope:i,method:s,splitKey:"+"})}},keyMap:wo,modifier:xo,modifierMap:_o};for(var qo in Ro)Object.prototype.hasOwnProperty.call(Ro,qo)&&(jo[qo]=Ro[qo]);if("undefined"!=typeof window){var Bo=window.hotkeys;jo.noConflict=function(e){return e&&window.hotkeys===jo&&(window.hotkeys=Bo),jo},window.hotkeys=jo}const Uo=kt({args:void 0,config:void 0,data:void 0,status:"IDLE"});var Fo=n(9049),zo=n.n(Fo);const $o=new class{limits={};limitSuffix=["critical","careful","warning"];setLimits(e){this.limits=e}getAlert(e,t,n,r,i){var s=(i=i||!1)?"_log":"",o=100*(n=n||0)/(r=r||100);if(null!=this.limits[e])for(var a=0;a<this.limitSuffix.length;a++){var l=t+this.limitSuffix[a];if(o>=this.limits[e][l]){var c=l.lastIndexOf("_");return l.substring(c+1)+s}}return"ok"+s}getAlertLog(e,t,n,r){return this.getAlert(e,t,n,r,!0)}};const Ho=new class{data=void 0;init(e=60){let t;const n=()=>(Uo.status="PENDING",Promise.all([fetch("api/4/all",{method:"GET"}).then((e=>e.json())),fetch("api/4/all/views",{method:"GET"}).then((e=>e.json()))]).then((e=>{const t={stats:e[0],views:e[1],isBsd:"FreeBSD"===e[0].system.os_name,isLinux:"Linux"===e[0].system.os_name,isSunOS:"SunOS"===e[0].system.os_name,isMac:"Darwin"===e[0].system.os_name,isWindows:"Windows"===e[0].system.os_name};this.data=t,Uo.data=t,Uo.status="SUCCESS"})).catch((e=>{console.log(e),Uo.status="FAILURE"})).then((()=>{t&&clearTimeout(t),t=setTimeout(n,1e3*e)})));n(),fetch("api/4/all/limits",{method:"GET"}).then((e=>e.json())).then((e=>{$o.setLimits(e)})),fetch("api/4/args",{method:"GET"}).then((e=>e.json())).then(((e={})=>{Uo.arg