--stdout plugin.attr is not compliant with plugins returning list of dicts #2446

This commit is contained in:
nicolargo 2024-04-24 19:47:57 +02:00
parent c2fe2de355
commit 0df1371513
7 changed files with 182 additions and 154 deletions

View File

@ -141,7 +141,7 @@ Get plugin stats::
"refresh": 3.0, "refresh": 3.0,
"regex": True, "regex": True,
"result": None, "result": None,
"timer": 1.0572876930236816}, "timer": 0.924252986907959},
{"count": 0, {"count": 0,
"countmax": 20.0, "countmax": 20.0,
"countmin": None, "countmin": None,
@ -150,7 +150,7 @@ Get plugin stats::
"refresh": 3.0, "refresh": 3.0,
"regex": True, "regex": True,
"result": None, "result": None,
"timer": 1.0569162368774414}] "timer": 0.9241466522216797}]
Fields descriptions: Fields descriptions:
@ -178,7 +178,7 @@ Get a specific item when field matches the given value::
"refresh": 3.0, "refresh": 3.0,
"regex": True, "regex": True,
"result": None, "result": None,
"timer": 1.0572876930236816}]} "timer": 0.924252986907959}]}
GET cloud GET cloud
--------- ---------
@ -226,16 +226,16 @@ Get plugin stats::
"engine": "docker", "engine": "docker",
"id": "3abd51c615968482d9ccff5afc629f267f6dda113ed68b75b432615fae3b49fb", "id": "3abd51c615968482d9ccff5afc629f267f6dda113ed68b75b432615fae3b49fb",
"image": ["portainer/portainer-ce:2.9.3"], "image": ["portainer/portainer-ce:2.9.3"],
"io": {"cumulative_ior": 31543296, "cumulative_iow": 6189056}, "io": {"cumulative_ior": 65536, "cumulative_iow": 839680},
"key": "name", "key": "name",
"memory": {"cache": None, "memory": {"cache": None,
"limit": 7823499264, "limit": 7823499264,
"max_usage": None, "max_usage": None,
"rss": None, "rss": None,
"usage": 21929984}, "usage": 14393344},
"memory_usage": 21929984, "memory_usage": 14393344,
"name": "portainer", "name": "portainer",
"network": {"cumulative_rx": 809260, "cumulative_tx": 0}, "network": {"cumulative_rx": 1619220, "cumulative_tx": 0},
"status": "running", "status": "running",
"uptime": "yesterday"}] "uptime": "yesterday"}]
@ -273,16 +273,16 @@ Get a specific item when field matches the given value::
"engine": "docker", "engine": "docker",
"id": "3abd51c615968482d9ccff5afc629f267f6dda113ed68b75b432615fae3b49fb", "id": "3abd51c615968482d9ccff5afc629f267f6dda113ed68b75b432615fae3b49fb",
"image": ["portainer/portainer-ce:2.9.3"], "image": ["portainer/portainer-ce:2.9.3"],
"io": {"cumulative_ior": 31543296, "cumulative_iow": 6189056}, "io": {"cumulative_ior": 65536, "cumulative_iow": 839680},
"key": "name", "key": "name",
"memory": {"cache": None, "memory": {"cache": None,
"limit": 7823499264, "limit": 7823499264,
"max_usage": None, "max_usage": None,
"rss": None, "rss": None,
"usage": 21929984}, "usage": 14393344},
"memory_usage": 21929984, "memory_usage": 14393344,
"name": "portainer", "name": "portainer",
"network": {"cumulative_rx": 809260, "cumulative_tx": 0}, "network": {"cumulative_rx": 1619220, "cumulative_tx": 0},
"status": "running", "status": "running",
"uptime": "yesterday"}]} "uptime": "yesterday"}]}
@ -311,19 +311,19 @@ Get plugin stats::
# curl http://localhost:61208/api/4/cpu # curl http://localhost:61208/api/4/cpu
{"cpucore": 4, {"cpucore": 4,
"ctx_switches": 49762424, "ctx_switches": 239191661,
"guest": 0.0, "guest": 0.0,
"idle": 69.2, "idle": 81.6,
"interrupts": 21528778, "interrupts": 120974887,
"iowait": 1.7, "iowait": 0.4,
"irq": 0.0, "irq": 0.0,
"nice": 0.0, "nice": 0.0,
"soft_interrupts": 14048210, "soft_interrupts": 64042196,
"steal": 0.0, "steal": 0.0,
"syscalls": 0, "syscalls": 0,
"system": 5.6, "system": 2.7,
"total": 29.1, "total": 18.0,
"user": 23.2} "user": 15.3}
Fields descriptions: Fields descriptions:
@ -356,7 +356,7 @@ Fields descriptions:
Get a specific field:: Get a specific field::
# curl http://localhost:61208/api/4/cpu/total # curl http://localhost:61208/api/4/cpu/total
{"total": 29.1} {"total": 18.0}
GET diskio GET diskio
---------- ----------
@ -366,16 +366,16 @@ Get plugin stats::
# curl http://localhost:61208/api/4/diskio # curl http://localhost:61208/api/4/diskio
[{"disk_name": "sda", [{"disk_name": "sda",
"key": "disk_name", "key": "disk_name",
"read_bytes": 5258122240, "read_bytes": 21587683840,
"read_count": 180256, "read_count": 1376851,
"write_bytes": 4720267264, "write_bytes": 25792397312,
"write_count": 137068}, "write_count": 710177},
{"disk_name": "sda1", {"disk_name": "sda1",
"key": "disk_name", "key": "disk_name",
"read_bytes": 3715072, "read_bytes": 3837952,
"read_count": 123, "read_count": 135,
"write_bytes": 0, "write_bytes": 0,
"write_count": 19}] "write_count": 25}]
Fields descriptions: Fields descriptions:
@ -404,10 +404,10 @@ Get a specific item when field matches the given value::
# curl http://localhost:61208/api/4/diskio/disk_name/sda # curl http://localhost:61208/api/4/diskio/disk_name/sda
{"sda": [{"disk_name": "sda", {"sda": [{"disk_name": "sda",
"key": "disk_name", "key": "disk_name",
"read_bytes": 5258122240, "read_bytes": 21587683840,
"read_count": 180256, "read_count": 1376851,
"write_bytes": 4720267264, "write_bytes": 25792397312,
"write_count": 137068}]} "write_count": 710177}]}
GET folders GET folders
----------- -----------
@ -434,13 +434,13 @@ Get plugin stats::
# curl http://localhost:61208/api/4/fs # curl http://localhost:61208/api/4/fs
[{"device_name": "/dev/mapper/ubuntu--gnome--vg-root", [{"device_name": "/dev/mapper/ubuntu--gnome--vg-root",
"free": 36169797632, "free": 30779019264,
"fs_type": "ext4", "fs_type": "ext4",
"key": "mnt_point", "key": "mnt_point",
"mnt_point": "/", "mnt_point": "/",
"percent": 84.3, "percent": 86.7,
"size": 243334156288, "size": 243334156288,
"used": 194776903680}, "used": 200167682048},
{"device_name": "zsfpool", {"device_name": "zsfpool",
"free": 31195136, "free": 31195136,
"fs_type": "zfs", "fs_type": "zfs",
@ -469,13 +469,13 @@ Get a specific item when field matches the given value::
# curl http://localhost:61208/api/4/fs/mnt_point// # curl http://localhost:61208/api/4/fs/mnt_point//
{"/": [{"device_name": "/dev/mapper/ubuntu--gnome--vg-root", {"/": [{"device_name": "/dev/mapper/ubuntu--gnome--vg-root",
"free": 36169797632, "free": 30779019264,
"fs_type": "ext4", "fs_type": "ext4",
"key": "mnt_point", "key": "mnt_point",
"mnt_point": "/", "mnt_point": "/",
"percent": 84.3, "percent": 86.7,
"size": 243334156288, "size": 243334156288,
"used": 194776903680}]} "used": 200167682048}]}
GET gpu GET gpu
------- -------
@ -549,9 +549,9 @@ Get plugin stats::
# curl http://localhost:61208/api/4/load # curl http://localhost:61208/api/4/load
{"cpucore": 4, {"cpucore": 4,
"min1": 2.4365234375, "min1": 0.88818359375,
"min15": 1.41748046875, "min15": 1.0537109375,
"min5": 1.76123046875} "min5": 1.0107421875}
Fields descriptions: Fields descriptions:
@ -563,7 +563,7 @@ Fields descriptions:
Get a specific field:: Get a specific field::
# curl http://localhost:61208/api/4/load/min1 # curl http://localhost:61208/api/4/load/min1
{"min1": 2.4365234375} {"min1": 0.88818359375}
GET mem GET mem
------- -------
@ -571,16 +571,16 @@ GET mem
Get plugin stats:: Get plugin stats::
# curl http://localhost:61208/api/4/mem # curl http://localhost:61208/api/4/mem
{"active": 1829126144, {"active": 3001933824,
"available": 2252705792, "available": 2005618688,
"buffers": 195567616, "buffers": 248893440,
"cached": 2715656192, "cached": 2834280448,
"free": 2252705792, "free": 2005618688,
"inactive": 4596236288, "inactive": 3382648832,
"percent": 71.2, "percent": 74.4,
"shared": 777666560, "shared": 988557312,
"total": 7823499264, "total": 7823499264,
"used": 5570793472} "used": 5817880576}
Fields descriptions: Fields descriptions:
@ -607,13 +607,13 @@ GET memswap
Get plugin stats:: Get plugin stats::
# curl http://localhost:61208/api/4/memswap # curl http://localhost:61208/api/4/memswap
{"free": 7855878144, {"free": 6126551040,
"percent": 2.8, "percent": 24.2,
"sin": 10948608, "sin": 1005674496,
"sout": 235782144, "sout": 3159068672,
"time_since_update": 1, "time_since_update": 1,
"total": 8082419712, "total": 8082419712,
"used": 226541568} "used": 1955868672}
Fields descriptions: Fields descriptions:
@ -638,26 +638,26 @@ Get plugin stats::
# curl http://localhost:61208/api/4/network # curl http://localhost:61208/api/4/network
[{"alias": None, [{"alias": None,
"bytes_all": 0, "bytes_all": 0,
"bytes_all_gauge": 535068344, "bytes_all_gauge": 2981693329,
"bytes_recv": 0, "bytes_recv": 0,
"bytes_recv_gauge": 499170928, "bytes_recv_gauge": 2799888851,
"bytes_sent": 0, "bytes_sent": 0,
"bytes_sent_gauge": 35897416, "bytes_sent_gauge": 181804478,
"interface_name": "wlp2s0", "interface_name": "wlp2s0",
"key": "interface_name", "key": "interface_name",
"speed": 0, "speed": 0,
"time_since_update": 0.8122844696044922}, "time_since_update": 0.8728673458099365},
{"alias": None, {"alias": None,
"bytes_all": 0, "bytes_all": 0,
"bytes_all_gauge": 0, "bytes_all_gauge": 393003,
"bytes_recv": 0, "bytes_recv": 0,
"bytes_recv_gauge": 0, "bytes_recv_gauge": 88482,
"bytes_sent": 0, "bytes_sent": 0,
"bytes_sent_gauge": 0, "bytes_sent_gauge": 304521,
"interface_name": "br-40875d2e2716", "interface_name": "br_grafana",
"key": "interface_name", "key": "interface_name",
"speed": 0, "speed": 0,
"time_since_update": 0.8122844696044922}] "time_since_update": 0.8728673458099365}]
Fields descriptions: Fields descriptions:
@ -680,28 +680,27 @@ Get a specific field::
# curl http://localhost:61208/api/4/network/interface_name # curl http://localhost:61208/api/4/network/interface_name
{"interface_name": ["wlp2s0", {"interface_name": ["wlp2s0",
"br-40875d2e2716",
"br_grafana", "br_grafana",
"veth0785bc8",
"lxdbr0", "lxdbr0",
"vethe9985946", "vethe9985946",
"veth20c434a2", "veth20c434a2",
"mpqemubr0"]} "mpqemubr0",
"veth26f9c1d"]}
Get a specific item when field matches the given value:: Get a specific item when field matches the given value::
# curl http://localhost:61208/api/4/network/interface_name/wlp2s0 # curl http://localhost:61208/api/4/network/interface_name/wlp2s0
{"wlp2s0": [{"alias": None, {"wlp2s0": [{"alias": None,
"bytes_all": 0, "bytes_all": 0,
"bytes_all_gauge": 535068344, "bytes_all_gauge": 2981693329,
"bytes_recv": 0, "bytes_recv": 0,
"bytes_recv_gauge": 499170928, "bytes_recv_gauge": 2799888851,
"bytes_sent": 0, "bytes_sent": 0,
"bytes_sent_gauge": 35897416, "bytes_sent_gauge": 181804478,
"interface_name": "wlp2s0", "interface_name": "wlp2s0",
"key": "interface_name", "key": "interface_name",
"speed": 0, "speed": 0,
"time_since_update": 0.8122844696044922}]} "time_since_update": 0.8728673458099365}]}
GET now GET now
------- -------
@ -709,7 +708,7 @@ GET now
Get plugin stats:: Get plugin stats::
# curl http://localhost:61208/api/4/now # curl http://localhost:61208/api/4/now
"2024-04-21 16:51:51 CEST" "2024-04-24 19:39:29 CEST"
GET percpu GET percpu
---------- ----------
@ -720,29 +719,29 @@ Get plugin stats::
[{"cpu_number": 0, [{"cpu_number": 0,
"guest": 0.0, "guest": 0.0,
"guest_nice": 0.0, "guest_nice": 0.0,
"idle": 84.4, "idle": 73.2,
"iowait": 0.6, "iowait": 0.0,
"irq": 0.0, "irq": 0.0,
"key": "cpu_number", "key": "cpu_number",
"nice": 0.0, "nice": 0.0,
"softirq": 0.0, "softirq": 0.0,
"steal": 0.0, "steal": 0.0,
"system": 3.9, "system": 3.6,
"total": 15.6, "total": 26.8,
"user": 11.2}, "user": 23.2},
{"cpu_number": 1, {"cpu_number": 1,
"guest": 0.0, "guest": 0.0,
"guest_nice": 0.0, "guest_nice": 0.0,
"idle": 52.8, "idle": 75.2,
"iowait": 1.7, "iowait": 0.0,
"irq": 0.0, "irq": 0.0,
"key": "cpu_number", "key": "cpu_number",
"nice": 0.0, "nice": 0.0,
"softirq": 0.0, "softirq": 0.0,
"steal": 0.0, "steal": 0.0,
"system": 5.6, "system": 5.1,
"total": 47.2, "total": 24.8,
"user": 40.0}] "user": 19.7}]
Fields descriptions: Fields descriptions:
@ -776,7 +775,7 @@ Get plugin stats::
"port": 0, "port": 0,
"refresh": 30, "refresh": 30,
"rtt_warning": None, "rtt_warning": None,
"status": 0.007086, "status": 0.004414,
"timeout": 3}] "timeout": 3}]
Fields descriptions: Fields descriptions:
@ -804,7 +803,7 @@ Get a specific item when field matches the given value::
"port": 0, "port": 0,
"refresh": 30, "refresh": 30,
"rtt_warning": None, "rtt_warning": None,
"status": 0.007086, "status": 0.004414,
"timeout": 3}]} "timeout": 3}]}
GET processcount GET processcount
@ -813,7 +812,7 @@ GET processcount
Get plugin stats:: Get plugin stats::
# curl http://localhost:61208/api/4/processcount # curl http://localhost:61208/api/4/processcount
{"pid_max": 0, "running": 1, "sleeping": 321, "thread": 1477, "total": 391} {"pid_max": 0, "running": 1, "sleeping": 332, "thread": 1612, "total": 402}
Fields descriptions: Fields descriptions:
@ -826,7 +825,7 @@ Fields descriptions:
Get a specific field:: Get a specific field::
# curl http://localhost:61208/api/4/processcount/total # curl http://localhost:61208/api/4/processcount/total
{"total": 391} {"total": 402}
GET processlist GET processlist
--------------- ---------------
@ -866,67 +865,67 @@ GET quicklook
Get plugin stats:: Get plugin stats::
# curl http://localhost:61208/api/4/quicklook # curl http://localhost:61208/api/4/quicklook
{"cpu": 29.1, {"cpu": 18.0,
"cpu_hz": 2025000000.0, "cpu_hz": 3000000000.0,
"cpu_hz_current": 1574552500.0, "cpu_hz_current": 2549918750.0,
"cpu_log_core": 4, "cpu_log_core": 4,
"cpu_name": "Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz", "cpu_name": "Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz",
"cpu_phys_core": 2, "cpu_phys_core": 2,
"load": 35.4, "load": 26.3,
"mem": 71.2, "mem": 74.4,
"percpu": [{"cpu_number": 0, "percpu": [{"cpu_number": 0,
"guest": 0.0, "guest": 0.0,
"guest_nice": 0.0, "guest_nice": 0.0,
"idle": 84.4, "idle": 73.2,
"iowait": 0.6, "iowait": 0.0,
"irq": 0.0, "irq": 0.0,
"key": "cpu_number", "key": "cpu_number",
"nice": 0.0, "nice": 0.0,
"softirq": 0.0, "softirq": 0.0,
"steal": 0.0, "steal": 0.0,
"system": 3.9, "system": 3.6,
"total": 15.6, "total": 26.8,
"user": 11.2}, "user": 23.2},
{"cpu_number": 1, {"cpu_number": 1,
"guest": 0.0, "guest": 0.0,
"guest_nice": 0.0, "guest_nice": 0.0,
"idle": 52.8, "idle": 75.2,
"iowait": 1.7, "iowait": 0.0,
"irq": 0.0, "irq": 0.0,
"key": "cpu_number", "key": "cpu_number",
"nice": 0.0, "nice": 0.0,
"softirq": 0.0, "softirq": 0.0,
"steal": 0.0, "steal": 0.0,
"system": 5.6, "system": 5.1,
"total": 47.2, "total": 24.8,
"user": 40.0}, "user": 19.7},
{"cpu_number": 2, {"cpu_number": 2,
"guest": 0.0, "guest": 0.0,
"guest_nice": 0.0, "guest_nice": 0.0,
"idle": 62.8, "idle": 89.5,
"iowait": 1.6, "iowait": 1.8,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 1.1,
"steal": 0.0,
"system": 6.6,
"total": 37.2,
"user": 27.9},
{"cpu_number": 3,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 77.3,
"iowait": 2.8,
"irq": 0.0, "irq": 0.0,
"key": "cpu_number", "key": "cpu_number",
"nice": 0.0, "nice": 0.0,
"softirq": 0.0, "softirq": 0.0,
"steal": 0.0, "steal": 0.0,
"system": 7.2, "system": 1.8,
"total": 22.7, "total": 10.5,
"user": 12.7}], "user": 7.0},
"swap": 2.8} {"cpu_number": 3,
"guest": 0.0,
"guest_nice": 0.0,
"idle": 87.0,
"iowait": 0.9,
"irq": 0.0,
"key": "cpu_number",
"nice": 0.0,
"softirq": 0.9,
"steal": 0.0,
"system": 0.9,
"total": 13.0,
"user": 10.4}],
"swap": 24.2}
Fields descriptions: Fields descriptions:
@ -1048,7 +1047,7 @@ GET uptime
Get plugin stats:: Get plugin stats::
# curl http://localhost:61208/api/4/uptime # curl http://localhost:61208/api/4/uptime
"1 day, 5:31:59" "4 days, 8:19:34"
GET version GET version
----------- -----------
@ -1056,7 +1055,7 @@ GET version
Get plugin stats:: Get plugin stats::
# curl http://localhost:61208/api/4/version # curl http://localhost:61208/api/4/version
"4.0.0_beta01" "4.0.0_beta04"
GET wifi GET wifi
-------- --------
@ -1108,34 +1107,34 @@ GET stats history
History of a plugin:: History of a plugin::
# curl http://localhost:61208/api/4/cpu/history # curl http://localhost:61208/api/4/cpu/history
{"system": [["2024-04-21T16:51:53.555669", 5.6], {"system": [["2024-04-24T19:39:30.842812", 2.7],
["2024-04-21T16:51:54.620159", 3.6], ["2024-04-24T19:39:31.868404", 1.4],
["2024-04-21T16:51:56.063781", 3.6]], ["2024-04-24T19:39:32.992936", 1.4]],
"user": [["2024-04-21T16:51:53.555642", 23.2], "user": [["2024-04-24T19:39:30.842803", 15.3],
["2024-04-21T16:51:54.620131", 12.2], ["2024-04-24T19:39:31.868395", 3.4],
["2024-04-21T16:51:56.063754", 12.2]]} ["2024-04-24T19:39:32.992925", 3.4]]}
Limit history to last 2 values:: Limit history to last 2 values::
# curl http://localhost:61208/api/4/cpu/history/2 # curl http://localhost:61208/api/4/cpu/history/2
{"system": [["2024-04-21T16:51:54.620159", 3.6], {"system": [["2024-04-24T19:39:31.868404", 1.4],
["2024-04-21T16:51:56.063781", 3.6]], ["2024-04-24T19:39:32.992936", 1.4]],
"user": [["2024-04-21T16:51:54.620131", 12.2], "user": [["2024-04-24T19:39:31.868395", 3.4],
["2024-04-21T16:51:56.063754", 12.2]]} ["2024-04-24T19:39:32.992925", 3.4]]}
History for a specific field:: History for a specific field::
# curl http://localhost:61208/api/4/cpu/system/history # curl http://localhost:61208/api/4/cpu/system/history
{"system": [["2024-04-21T16:51:51.876628", 5.6], {"system": [["2024-04-24T19:39:29.207977", 2.7],
["2024-04-21T16:51:53.555669", 5.6], ["2024-04-24T19:39:30.842812", 2.7],
["2024-04-21T16:51:54.620159", 3.6], ["2024-04-24T19:39:31.868404", 1.4],
["2024-04-21T16:51:56.063781", 3.6]]} ["2024-04-24T19:39:32.992936", 1.4]]}
Limit history for a specific field to last 2 values:: Limit history for a specific field to last 2 values::
# curl http://localhost:61208/api/4/cpu/system/history # curl http://localhost:61208/api/4/cpu/system/history
{"system": [["2024-04-21T16:51:54.620159", 3.6], {"system": [["2024-04-24T19:39:31.868404", 1.4],
["2024-04-21T16:51:56.063781", 3.6]]} ["2024-04-24T19:39:32.992936", 1.4]]}
GET limits (used for thresholds) GET limits (used for thresholds)
-------------------------------- --------------------------------

View File

@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u .in \\n[rst2man-indent\\n[rst2man-indent-level]]u
.. ..
.TH "GLANCES" "1" "Apr 21, 2024" "4.0.0_beta01" "Glances" .TH "GLANCES" "1" "Apr 24, 2024" "4.0.0_beta04" "Glances"
.SH NAME .SH NAME
glances \- An eye on your system glances \- An eye on your system
.SH SYNOPSIS .SH SYNOPSIS

View File

@ -28,16 +28,18 @@ It is also possible to display RAW (Python) stats directly to stdout using:
.. code-block:: console .. code-block:: console
$ glances --stdout cpu.user,mem.used,load $ glances --stdout cpu.user,mem.used,load,network.wlp2s0.bytes_all
cpu.user: 30.7 cpu.user: 30.7
mem.used: 3278204928 mem.used: 3278204928
load: {'cpucore': 4, 'min1': 0.21, 'min5': 0.4, 'min15': 0.27} load: {'cpucore': 4, 'min1': 0.21, 'min5': 0.4, 'min15': 0.27}
network.wlp2s0.bytes_all: 13479
cpu.user: 3.4 cpu.user: 3.4
mem.used: 3275251712 mem.used: 3275251712
load: {'cpucore': 4, 'min1': 0.19, 'min5': 0.39, 'min15': 0.27} load: {'cpucore': 4, 'min1': 0.19, 'min5': 0.39, 'min15': 0.27}
network.wlp2s0.bytes_all: 12868
... ...
or in a CSV format thanks to the stdout-csv option: or in a CSV format thanks to the stdout-csv option (key not supported in this mode):
.. code-block:: console .. code-block:: console

View File

@ -611,6 +611,10 @@ Examples of use:
if getattr(args, 'enable_processlist', False): if getattr(args, 'enable_processlist', False):
enable(args, 'processcount') enable(args, 'processcount')
# Set a default export_process_filter (with all process) when using the stdout mode
if getattr(args, 'stdout', True) and args.process_filter is None:
setattr(args, 'export_process_filter', '.*')
def init_client_server(self, args): def init_client_server(self, args):
"""Init Glances client/server mode.""" """Init Glances client/server mode."""

View File

@ -2,7 +2,7 @@
# #
# This file is part of Glances. # This file is part of Glances.
# #
# SPDX-FileCopyrightText: 2022 Nicolas Hennion <nicolas@nicolargo.com> # SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
# #
# SPDX-License-Identifier: LGPL-3.0-only # SPDX-License-Identifier: LGPL-3.0-only
# #
@ -30,15 +30,21 @@ class GlancesStdout(object):
def build_list(self): def build_list(self):
"""Return a list of tuples taken from self.args.stdout """Return a list of tuples taken from self.args.stdout
:return: A list of tuples. Example -[(plugin, attribute), ... ] :return: A list of tuples. Example [(plugin, key, attribute), ... ]
""" """
ret = [] ret = []
for p in self.args.stdout.split(','): for p in self.args.stdout.split(','):
if '.' in p: pka = p.split('.')
p, a = p.split('.') if len(pka) == 1:
else: # Only plugin name is provided
a = None new = (pka[0], None, None)
ret.append((p, a)) elif len(pka) == 2:
# Plugin name and attribute is provided
new = (pka[0], None, pka[1])
elif len(pka) == 3:
# Plugin name, key and attribute are provided
new = (pka[0], pka[1], pka[2])
ret.append(new)
return ret return ret
def end(self): def end(self):
@ -49,7 +55,7 @@ class GlancesStdout(object):
Refresh every duration second. Refresh every duration second.
""" """
for plugin, attribute in self.plugins_list: for plugin, key, attribute in self.plugins_list:
# Check if the plugin exist and is enable # Check if the plugin exist and is enable
if plugin in stats.getPluginsList() and stats.get_plugin(plugin).is_enabled(): if plugin in stats.getPluginsList() and stats.get_plugin(plugin).is_enabled():
stat = stats.get_plugin(plugin).get_export() stat = stats.get_plugin(plugin).get_export()
@ -58,10 +64,26 @@ class GlancesStdout(object):
# Display stats # Display stats
if attribute is not None: if attribute is not None:
# With attribute # With attribute
try: if isinstance(stat, dict):
printandflush("{}.{}: {}".format(plugin, attribute, stat[attribute])) try:
except KeyError as err: printandflush("{}.{}: {}".format(plugin, attribute, stat[attribute]))
logger.error("Can not display stat {}.{} ({})".format(plugin, attribute, err)) except KeyError as err:
logger.error("Can not display stat {}.{} ({})".format(plugin, attribute, err))
elif isinstance(stat, list):
for i in stat:
if key is None:
i_key = i[i['key']]
elif str(key) == str(i[i['key']]):
i_key = key
else:
continue
try:
printandflush("{}.{}.{}: {}".format(plugin,
i_key,
attribute,
i[attribute]))
except KeyError as err:
logger.error("Can not display stat {}.{} ({})".format(plugin, attribute, err))
else: else:
# Without attribute # Without attribute
printandflush("{}: {}".format(plugin, stat)) printandflush("{}: {}".format(plugin, stat))

View File

@ -9,6 +9,7 @@
"""Process count plugin.""" """Process count plugin."""
from glances.logger import logger
from glances.processes import glances_processes, sort_for_human from glances.processes import glances_processes, sort_for_human
from glances.plugins.plugin.model import GlancesPluginModel from glances.plugins.plugin.model import GlancesPluginModel

View File

@ -67,7 +67,7 @@ class GlancesStandalone(object):
logger.info("Process filter is set to: {}".format(args.process_filter)) logger.info("Process filter is set to: {}".format(args.process_filter))
glances_processes.process_filter = args.process_filter glances_processes.process_filter = args.process_filter
if args.export and args.export_process_filter is not None: if (args.export or args.stdout) and args.export_process_filter is not None:
logger.info("Export process filter is set to: {}".format(args.export_process_filter)) logger.info("Export process filter is set to: {}".format(args.export_process_filter))
glances_processes.export_process_filter = args.export_process_filter glances_processes.export_process_filter = args.export_process_filter