diff options
author | nicolargo <nicolashennion@gmail.com> | 2024-06-29 09:54:13 +0200 |
---|---|---|
committer | nicolargo <nicolashennion@gmail.com> | 2024-06-29 09:54:13 +0200 |
commit | afa1da59d11275660a55175f344ec8aadbf7b0ae (patch) | |
tree | 5e95b77eeb404a98157323643752edd33bb10e9e | |
parent | 183265579348fecb5a9dbe077222eca63b7aa0ed (diff) | |
parent | 582ca0771678210d01beea0ff0cb914005f54bf9 (diff) |
Merge branch 'develop'v4.1.0
37 files changed, 1014 insertions, 827 deletions
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 46d4fe7b..95522c53 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -6,6 +6,9 @@ labels: '' assignees: '' --- +**Check the bug** +Before filling this bug report, please search if a similar issue already exists. +In this case, just add a comment on this existing issue. **Describe the bug** A clear and concise description of what the bug is. @@ -26,11 +29,7 @@ If applicable, add screenshots to help explain your problem. - Operating System (lsb_release -a or OS name/version): `To be completed with result of: lsb_release -a` - Glances & psutil versions: `To be completed with result of: glances -V` - How do you install Glances (Pypi package, script, package manager, source): `To be completed` - - Glances test (only available with Glances 3.1.7 or higher): - - ``` - To be completed with result of: glances --issue - ``` + - Glances test: ` To be completed with result of: glances --issue` **Additional context** Add any other context about the problem here. diff --git a/.github/workflows/inactive_issues.yml b/.github/workflows/inactive_issues.yml new file mode 100644 index 00000000..21762cbb --- /dev/null +++ b/.github/workflows/inactive_issues.yml @@ -0,0 +1,22 @@ +name: Label inactive issues +on: + schedule: + - cron: "30 1 * * *" + +jobs: + close-issues: + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + steps: + - uses: actions/stale@v5 + with: + days-before-issue-stale: 90 + days-before-issue-close: -1 + stale-issue-label: "inactive" + stale-issue-message: "This issue is stale because it has been open for 3 months with no activity." + close-issue-message: "This issue was closed because it has been inactive for 30 days since being marked as stale." + days-before-pr-stale: -1 + days-before-pr-close: -1 + repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/needs_contributor.yml b/.github/workflows/needs_contributor.yml new file mode 100644 index 00000000..b9a5bb8b --- /dev/null +++ b/.github/workflows/needs_contributor.yml @@ -0,0 +1,22 @@ +name: Add a message when needs contributor tag is used +on: + issues: + types: + - labeled +jobs: + add-comment: + if: github.event.label.name == 'needs contributor' + runs-on: ubuntu-latest + permissions: + issues: write + steps: + - name: Add comment + run: gh issue comment "$NUMBER" --body "$BODY" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_REPO: ${{ github.repository }} + NUMBER: ${{ github.event.issue.number }} + BODY: > + This issue is available for anyone to work on. + **Make sure to reference this issue in your pull request.** + :sparkles: Thank you for your contribution ! :sparkles:
\ No newline at end of file diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 00000000..cf9b7a17 --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,34 @@ +# Read the Docs configuration file for Glances projects + +# Required +version: 2 + +# Set the OS, Python version and other tools you might need +build: + os: ubuntu-22.04 + tools: + python: "3.12" + # You can also specify other tool versions: + # nodejs: "20" + # rust: "1.70" + # golang: "1.20" + +# Build documentation in the "docs/" directory with Sphinx +sphinx: + configuration: docs/conf.py + # You can configure Sphinx to use a different builder, for instance use the dirhtml builder for simpler URLs + # builder: "dirhtml" + # Fail on all warnings to avoid broken references + # fail_on_warning: true + +# Optionally build your docs in additional formats such as PDF and ePub +# formats: +# - pdf +# - epub + +# Optional but recommended, declare the Python requirements required +# to build your documentation +# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html +python: + install: + - requirements: doc-requirements.txt
\ No newline at end of file @@ -3,62 +3,39 @@ ============================================================================== =============== -Version 4.0.8 -=============== - -* Make CORS option configurable security webui #2812 -* When Glances is installed via venv, default configuration file is not used documentation packaging #2803 -* GET /1272f6e9e8f9d6bfd6de.png results in 404 bug webui #2781 by Emporea was closed May 25, 2024 -* Screen frequently flickers when outputting to local display bug needs test #2490 -* Retire ujson for being in maintenance mode dependencies enhancement #2791 - -Minor breaking change in AMP: please use && instead of ; as command line separator. - -=============== -Version 4.0.7 -=============== - -* cpu_hz_current not available on NetBSD #2792 -* SensorType change in REST API breaks compatibility in 4.0.4 #2788 - -=============== -Version 4.0.6 -=============== - -* No GPU info on Web View #2796 - -=============== -Version 4.0.5 +Version 4.1.0 =============== -* SensorType change in REST API breaks compatibility in 4.0.4 #2788 -* Please make pydantic optional dependency, not required one #2777 -* Update the Grafana dashboard #2780 -* 4.0.4 - On Glances startup "ERROR -- Can not init battery class #2776 -* In codeSpace (with Python 3.8), an error occurs in ./unittest-restful.py #2773 +Enhancements: -Use Ruff as default Linter. +* Call process_iter.clear_cache() (PsUtil 6+) when Glances user force a refresh (F5 or CTRL-R) #2753 +* PsUtil 6+ no longer check PID reused #2755 +* Add support for automatically hiding network interfaces that are down or that don't have any IP addresses #2799 -=============== -Version 4.0.4 -=============== +Bug corrected: -Hostfix release for support sensors plugin on python 3.8 +* API: Network module is disabled but appears in endpoint "all" #2815 +* API is not compatible with requests containing spcial/encoding char #2820 +* 'j' hot key crashs Glances #2831 +* Raspberry PI - CPU info is not correct #2616 +* Graph export is broken if there is no graph section in Glances configuration file #2839 +* Glances API status check returns Error 405 - Method Not Allowed #2841 +* Rootless podman containers cause glances to fail with KeyError #2827 +* --export-process-filter Filter using complete command #2824 +* Exception when Glances is ran with limited plugin list #2822 +* Disable separator option do not work #2823 -=============== -Version 4.0.3 -=============== +Continious integration and documentation: -Additional fixes for Sensor plugin +* test test_107_fs_plugin_method fails on aarch64-linux #2819 -=============== -Version 4.0.2 -=============== +Thanks to all contibutors and bug reporters ! -* hotfix: plugin(sensors) - race conditions btw fan_speed & temperature… #2766 -* fix: include requirements.txt and SECURITY.md for pypi dist #2761 +Special thanks to: -Thanks to RazCrimson for the sensors patch ! +* Bharath Vignesh J K +* RazCrimson +* Vadim Smal =============== Version 4.0.8 @@ -221,8 +221,6 @@ Run last version of Glances container in *console mode*: By default, the /etc/glances/glances.conf file is used (based on docker-compose/glances.conf). -By default, the /etc/glances/glances.conf file is used (based on docker-compose/glances.conf). - Additionally, if you want to use your own glances.conf file, you can create your own Dockerfile: diff --git a/SECURITY.md b/SECURITY.md index 5b2c9628..7b112925 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,13 +2,10 @@ ## Supported Versions -Use this section to tell people about which versions of your project are -currently being supported with security updates. - | Version | Support security updates | | ------- | ------------------------ | -| 3.x | :white_check_mark: | -| < 3.0 | :x: | +| 4.x | :white_check_mark: | +| < 4.0 | :x: | ## Reporting a Vulnerability @@ -31,4 +28,3 @@ If there are any vulnerabilities in {{cookiecutter.project_name}}, don't hesitat 4. Please do not disclose the vulnerability publicly until a fix is released! Once we have either a) published a fix, or b) declined to address the vulnerability for whatever reason, you are free to publicly disclose it. - diff --git a/conf/glances.conf b/conf/glances.conf index 4de3d3a9..7bba30aa 100644 --- a/conf/glances.conf +++ b/conf/glances.conf @@ -26,7 +26,7 @@ history_size=1200 # Options for all UIs #-------------------- # Separator in the Curses and WebUI interface (between top and others plugins) -separator=True +#separator=True # Set the the Curses and WebUI interface left menu plugin list (comma-separated) #left_menu=network,wifi,connections,ports,diskio,fs,irq,folders,raid,smart,sensors,now # Limit the number of processes to display (in the WebUI) @@ -217,9 +217,9 @@ hide=docker.*,lo # Define the list of wireless network interfaces to be show (comma-separated) #show=docker.* # Automatically hide interface not up (default is False) -#hide_no_up=True +hide_no_up=True # Automatically hide interface with no IP address (default is False) -#hide_no_ip=True +hide_no_ip=True # It is possible to overwrite the bitrate thresholds per interface # WLAN 0 Default limits (in bits per second aka bps) for interface bitrate #wlan0_rx_careful=4000000 diff --git a/doc-requirements.txt b/doc-requirements.txt index 74d6796a..28ee5654 100644 --- a/doc-requirements.txt +++ b/doc-requirements.txt @@ -1,3 +1,5 @@ +psutil +defusedxml orjson reuse setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability diff --git a/docker-compose/glances.conf b/docker-compose/glances.conf index 792a155d..11bcb951 100755 --- a/docker-compose/glances.conf +++ b/docker-compose/glances.conf @@ -26,7 +26,7 @@ history_size=1200 # Options for all UIs #-------------------- # Separator in the Curses and WebUI interface (between top and others plugins) -separator=True +#separator=True # Set the the Curses and WebUI interface left menu plugin list (comma-separated) #left_menu=network,wifi,connections,ports,diskio,fs,irq,folders,raid,smart,sensors,now # Limit the number of processes to display (in the WebUI) @@ -60,7 +60,7 @@ max_processes_display=25 #cors_headers=* ############################################################################## -# plugins +# Plugins ############################################################################## [quicklook] diff --git a/docs/aoa/network.rst b/docs/aoa/network.rst index d6b02d91..8359ad0e 100644 --- a/docs/aoa/network.rst +++ b/docs/aoa/network.rst @@ -48,7 +48,7 @@ virtual docker interface (docker0, docker1, ...): # Automatically hide interface with no IP address (default is False) hide_no_ip=True # WLAN 0 alias - wlan0_alias=Wireless IF + alias=wlan0:Wireless IF # It is possible to overwrite the bitrate thresholds per interface # WLAN 0 Default limits (in bits per second aka bps) for interface bitrate wlan0_rx_careful=4000000 @@ -64,4 +64,4 @@ Filtering is based on regular expression. Please be sure that your regular expression works as expected. You can use an online tool like `regex101`_ in order to test your regular expression. -.. _regex101: https://regex101.com/
\ No newline at end of file +.. _regex101: https://regex101.com/ diff --git a/docs/aoa/sensors.rst b/docs/aoa/sensors.rst index 87d64933..5ee5923f 100644 --- a/docs/aoa/sensors.rst +++ b/docs/aoa/sensors.rst @@ -27,8 +27,7 @@ There is no alert on this information. .. note 3:: If a sensors has temperature and fan speed with the same name unit, it is possible to alias it using: - unitname_temperature_core_alias=Alias for temp - unitname_fan_speed_alias=Alias for fan speed + alias=unitname_temperature_core_alias:Alias for temp,unitname_fan_speed_alias:Alias for fan speed .. note 4:: If a sensors has multiple identical features names (see #2280), then diff --git a/docs/api.rst b/docs/api.rst index e6b058fa..58999ba0 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.24439311027526855}, + "timer": 0.48795127868652344}, {"count": 0, "countmax": 20.0, "countmin": None, @@ -150,7 +150,7 @@ Get plugin stats:: "refresh": 3.0, "regex": True, "result": None, - "timer": 0.2443389892578125}] + "timer": 0.48785948753356934}] 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.24439311027526855}]} + "timer": 0.48795127868652344}]} GET cloud --------- @@ -219,21 +219,7 @@ GET containers Get plugin stats:: # curl http://localhost:61208/api/4/containers - [{"command": "/bin/sh -c /venv/bin/python3 -m glances $GLANCES_OPT", - "cpu": {"total": 0.0}, - "cpu_percent": 0.0, - "created": "2024-05-25T13:52:22.535373707Z", - "engine": "docker", - "id": "bb99d31288db8904ed4cd43db8255a926830936189bc180d77c3459cbaa7f490", - "image": ["nicolargo/glances:latest"], - "io": {}, - "key": "name", - "memory": {}, - "memory_usage": None, - "name": "wizardly_nightingale", - "network": {}, - "status": "running", - "uptime": "14 mins"}] + [] Fields descriptions: @@ -254,31 +240,6 @@ Fields descriptions: * **pod_name**: Pod name (only with Podman) (unit is *None*) * **pod_id**: Pod ID (only with Podman) (unit is *None*) -Get a specific field:: - - # curl http://localhost:61208/api/4/containers/name - {"name": ["wizardly_nightingale"]} - -Get a specific item when field matches the given value:: - - # curl http://localhost:61208/api/4/containers/name/wizardly_nightingale - {"wizardly_nightingale": [{"command": "/bin/sh -c /venv/bin/python3 -m glances " - "$GLANCES_OPT", - "cpu": {"total": 0.0}, - "cpu_percent": 0.0, - "created": "2024-05-25T13:52:22.535373707Z", - "engine": "docker", - "id": "bb99d31288db8904ed4cd43db8255a926830936189bc180d77c3459cbaa7f490", - "image": ["nicolargo/glances:latest"], - "io": {}, - "key": "name", - "memory": {}, - "memory_usage": None, - "name": "wizardly_nightingale", - "network": {}, - "status": "running", - "uptime": "14 mins"}]} - GET core -------- @@ -304,19 +265,19 @@ Get plugin stats:: # curl http://localhost:61208/api/4/cpu {"cpucore": 16, - "ctx_switches": 7772781, + "ctx_switches": 426798284, "guest": 0.0, - "idle": 3.0, - "interrupts": 6643340, - "iowait": 0.0, + "idle": 85.4, + "interrupts": 358987449, + "iowait": 0.1, "irq": 0.0, "nice": 0.0, - "soft_interrupts": 1761276, + "soft_interrupts": 133317922, "steal": 0.0, "syscalls": 0, - "system": 0.0, - "total": 16.7, - "user": 1.0} + "system": 3.2, + "total": 6.7, + "user": 11.4} Fields descriptions: @@ -349,7 +310,7 @@ Fields descriptions: Get a specific field:: # curl http://localhost:61208/api/4/cpu/total - {"total": 16.7} + {"total": 6.7} GET diskio ---------- @@ -359,14 +320,14 @@ Get plugin stats:: # curl http://localhost:61208/api/4/diskio [{"disk_name": "nvme0n1", "key": "disk_name", - "read_bytes": 3983976960, - "read_count": 115648, - "write_bytes": 3073111040, - "write_count": 91409}, + "read_bytes": 7464889856, + "read_count": 275684, + "write_bytes": 24858043392, + "write_count": 1204326}, {"disk_name": "nvme0n1p1", "key": "disk_name", - "read_bytes": 7476224, - "read_count": 576, + "read_bytes": 7558144, + "read_count": 605, "write_bytes": 1024, "write_count": 2}] @@ -402,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": 3983976960, - "read_count": 115648, - "write_bytes": 3073111040, - "write_count": 91409}]} + "read_bytes": 7464889856, + "read_count": 275684, + "write_bytes": 24858043392, + "write_count": 1204326}]} GET folders ----------- @@ -432,13 +393,13 @@ Get plugin stats:: # curl http://localhost:61208/api/4/fs [{"device_name": "/dev/mapper/ubuntu--vg-ubuntu--lv", - "free": 902284546048, + "free": 896615567360, "fs_type": "ext4", "key": "mnt_point", "mnt_point": "/", - "percent": 5.3, + "percent": 5.9, "size": 1003736440832, - "used": 50389389312}] + "used": 56058368000}] Fields descriptions: @@ -459,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": 902284546048, + "free": 896615567360, "fs_type": "ext4", "key": "mnt_point", "mnt_point": "/", - "percent": 5.3, + "percent": 5.9, "size": 1003736440832, - "used": 50389389312}]} + "used": 56058368000}]} GET gpu ------- @@ -539,9 +500,9 @@ Get plugin stats:: # curl http://localhost:61208/api/4/load {"cpucore": 16, - "min1": 0.560546875, - "min15": 0.54833984375, - "min5": 0.70166015625} + "min1": 0.69091796875, + "min15": 0.93115234375, + "min5": 0.9248046875} Fields descriptions: @@ -553,7 +514,7 @@ Fields descriptions: Get a specific field:: # curl http://localhost:61208/api/4/load/min1 - {"min1": 0.560546875} + {"min1": 0.69091796875} GET mem ------- @@ -561,16 +522,16 @@ GET mem Get plugin stats:: # curl http://localhost:61208/api/4/mem - {"active": 5540470784, - "available": 11137699840, - "buffers": 226918400, - "cached": 6333566976, - "free": 11137699840, - "inactive": 3872489472, - "percent": 32.2, - "shared": 656637952, + {"active": 8055664640, + "available": 4539228160, + "buffers": 112582656, + "cached": 4634251264, + "free": 4539228160, + "inactive": 5664567296, + "percent": 72.4, + "shared": 794791936, "total": 16422486016, - "used": 5284786176} + "used": 11883257856} Fields descriptions: @@ -597,13 +558,13 @@ GET memswap Get plugin stats:: # curl http://localhost:61208/api/4/memswap - {"free": 4294963200, - "percent": 0.0, - "sin": 0, - "sout": 0, + {"free": 3367235584, + "percent": 21.6, + "sin": 12046336, + "sout": 929779712, "time_since_update": 1, "total": 4294963200, - "used": 0} + "used": 927727616} Fields descriptions: @@ -628,26 +589,15 @@ Get plugin stats:: # curl http://localhost:61208/api/4/network [{"alias": None, "bytes_all": 0, - "bytes_all_gauge": 422462144, + "bytes_all_gauge": 5602118637, "bytes_recv": 0, - "bytes_recv_gauge": 413272561, + "bytes_recv_gauge": 5324018799, "bytes_sent": 0, - "bytes_sent_gauge": 9189583, + "bytes_sent_gauge": 278099838, "interface_name": "wlp0s20f3", "key": "interface_name", "speed": 0, - "time_since_update": 0.24814295768737793}, - {"alias": None, - "bytes_all": 0, - "bytes_all_gauge": 18987, - "bytes_recv": 0, - "bytes_recv_gauge": 528, - "bytes_sent": 0, - "bytes_sent_gauge": 18459, - "interface_name": "vethfc47299", - "key": "interface_name", - "speed": 10485760000, - "time_since_update": 0.24814295768737793}] + "time_since_update": 0.4937009811401367}] Fields descriptions: @@ -669,22 +619,22 @@ Fields descriptions: Get a specific field:: # curl http://localhost:61208/api/4/network/interface_name - {"interface_name": ["wlp0s20f3", "vethfc47299"]} + {"interface_name": ["wlp0s20f3"]} 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": 422462144, + "bytes_all_gauge": 5602118637, "bytes_recv": 0, - "bytes_recv_gauge": 413272561, |