Compare commits
No commits in common. "develop" and "v3.4.0.2" have entirely different histories.
|
|
@ -0,0 +1,2 @@
|
|||
[bandit]
|
||||
exclude: ./docs,./glances/outputs/static/node_modules
|
||||
|
|
@ -4,6 +4,7 @@ include =
|
|||
*glances*
|
||||
|
||||
omit =
|
||||
setup.py
|
||||
glances/outputs/*
|
||||
glances/exports/*
|
||||
glances/compat.py
|
||||
|
|
|
|||
|
|
@ -8,15 +8,10 @@
|
|||
!/glances/outputs/static
|
||||
|
||||
# Include Requirements files
|
||||
!/all-requirements.txt
|
||||
!/requirements.txt
|
||||
!/docker-requirements.txt
|
||||
!/webui-requirements.txt
|
||||
!/optional-requirements.txt
|
||||
|
||||
# Include Config file
|
||||
!/docker-compose/glances.conf
|
||||
!/docker-files/docker-logger.json
|
||||
|
||||
# Include Binary file
|
||||
!/docker-bin.sh
|
||||
|
||||
# Include TOML file
|
||||
!/pyproject.toml
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
[flake8]
|
||||
exclude = .git,__pycache__,docs/,build,dist
|
||||
ignore =
|
||||
W504, B007, B014, B008, B902, Q000,
|
||||
N801, N802, N803, N806, N807, N811, N812, N813, N814, N815, N816, N817, N818
|
||||
|
||||
# lines should not exceed 120 characters
|
||||
max-line-length = 120
|
||||
|
|
@ -6,9 +6,6 @@ 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.
|
||||
|
|
@ -29,7 +26,11 @@ 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: ` To be completed with result of: glances --issue`
|
||||
- Glances test (only available with Glances 3.1.7 or higher):
|
||||
|
||||
```
|
||||
To be completed with result of: glances --issue
|
||||
```
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
|
|
|
|||
|
|
@ -1,82 +1,153 @@
|
|||
# This pipeline aims at building Glances Pypi packages
|
||||
# This pipeline aims at building Glances for the following targets:
|
||||
# - Docker Hub
|
||||
# - Pypi
|
||||
|
||||
name: build
|
||||
name: CI
|
||||
|
||||
env:
|
||||
DEFAULT_DOCKER_IMAGE: nicolargo/glances
|
||||
NODE_ENV: ${{ (contains('refs/heads/master', github.ref) || startsWith(github.ref, 'refs/tags/v')) && 'prod' || 'dev' }}
|
||||
PUSH_BRANCH: ${{ 'refs/heads/develop' == github.ref || 'refs/heads/master' == github.ref || startsWith(github.ref, 'refs/tags/v') }}
|
||||
# linux/arm/v7 (drop support for v6) support following issue - See issue #2120
|
||||
DOCKER_PLATFORMS: linux/amd64,linux/arm/v7,linux/arm64,linux/386
|
||||
# Ubuntu image only support linux/amd64 and linux/arm64 - See issue #2185
|
||||
DOCKER_PLATFORMS_UBUNTU: linux/amd64,linux/arm64
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
pull_request:
|
||||
branches: [ develop ]
|
||||
push:
|
||||
branches: [ master, develop ]
|
||||
tags:
|
||||
- v*
|
||||
|
||||
jobs:
|
||||
|
||||
build:
|
||||
name: Build distribution 📦
|
||||
if: github.event_name == 'push'
|
||||
pypi:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.13"
|
||||
- name: Install pypa/build
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Install pip install build tools
|
||||
run: >-
|
||||
python3 -m
|
||||
python -m
|
||||
pip install
|
||||
build
|
||||
--user
|
||||
|
||||
- name: Build a binary wheel and a source tarball
|
||||
run: python3 -m build
|
||||
- name: Store the distribution packages
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: python-package-distributions
|
||||
path: dist/
|
||||
run: >-
|
||||
python -m
|
||||
build
|
||||
--sdist
|
||||
--wheel
|
||||
--outdir dist/
|
||||
|
||||
pypi:
|
||||
name: Publish Python 🐍 distribution 📦 to PyPI
|
||||
if: startsWith(github.ref, 'refs/tags')
|
||||
needs:
|
||||
- build
|
||||
runs-on: ubuntu-latest
|
||||
environment:
|
||||
name: pypi
|
||||
url: https://pypi.org/p/glances
|
||||
permissions:
|
||||
attestations: write
|
||||
id-token: write
|
||||
steps:
|
||||
- name: Download all the dists
|
||||
uses: actions/download-artifact@v5
|
||||
- name: Publish distribution package to Test PyPI
|
||||
uses: pypa/gh-action-pypi-publish@master
|
||||
with:
|
||||
name: python-package-distributions
|
||||
path: dist/
|
||||
- name: Publish distribution 📦 to PyPI
|
||||
uses: pypa/gh-action-pypi-publish@release/v1
|
||||
with:
|
||||
skip-existing: true
|
||||
attestations: false
|
||||
print-hash: true
|
||||
user: __token__
|
||||
password: ${{ secrets.TEST_PYPI_API_TOKEN }}
|
||||
repository_url: https://test.pypi.org/legacy/
|
||||
skip_existing: true
|
||||
|
||||
pypi_test:
|
||||
name: Publish Python 🐍 distribution 📦 to TestPyPI
|
||||
if: github.ref == 'refs/heads/develop'
|
||||
needs:
|
||||
- build
|
||||
- name: Publish distribution package to PyPI
|
||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
|
||||
uses: pypa/gh-action-pypi-publish@master
|
||||
with:
|
||||
user: __token__
|
||||
password: ${{ secrets.PYPI_API_TOKEN }}
|
||||
|
||||
create_Docker_builds:
|
||||
runs-on: ubuntu-latest
|
||||
environment:
|
||||
name: testpypi
|
||||
url: https://pypi.org/p/glances
|
||||
permissions:
|
||||
attestations: write
|
||||
id-token: write
|
||||
# Make sure we release the python package first. So we are sure to get the latest.
|
||||
needs:
|
||||
- pypi
|
||||
outputs:
|
||||
tags: ${{ steps.config.outputs.tags }}
|
||||
steps:
|
||||
- name: Download all the dists
|
||||
uses: actions/download-artifact@v5
|
||||
- name: Determine image tags
|
||||
id: config
|
||||
shell: bash
|
||||
run: |
|
||||
TAG_ARRAY='['
|
||||
|
||||
if [[ $GITHUB_REF == refs/tags/* ]]; then
|
||||
VERSION=${GITHUB_REF#refs/tags/v}
|
||||
TAG_ARRAY="$TAG_ARRAY { \"target\": \"minimal\", \"tag\": \"${VERSION}\" },"
|
||||
TAG_ARRAY="$TAG_ARRAY { \"target\": \"full\", \"tag\": \"${VERSION}-full\" },"
|
||||
|
||||
elif [[ $GITHUB_REF == refs/heads/develop ]]; then
|
||||
TAG_ARRAY="$TAG_ARRAY { \"target\": \"dev\", \"tag\": \"dev\" },"
|
||||
|
||||
else
|
||||
TAG_ARRAY="$TAG_ARRAY { \"target\": \"minimal\", \"tag\": \"latest\" },"
|
||||
TAG_ARRAY="$TAG_ARRAY { \"target\": \"full\", \"tag\": \"latest-full\" },"
|
||||
fi
|
||||
|
||||
TAG_ARRAY="${TAG_ARRAY::-1} ]"
|
||||
|
||||
echo "Tags to build: $TAG_ARRAY"
|
||||
echo "::set-output name=tags::$TAG_ARRAY"
|
||||
|
||||
build_Docker_image:
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
- create_Docker_builds
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: ['alpine', 'ubuntu']
|
||||
tag: ${{ fromJson(needs.create_Docker_builds.outputs.tags) }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Retrieve Repository Docker metadata
|
||||
id: docker_meta
|
||||
uses: crazy-max/ghaction-docker-meta@v4.4.0
|
||||
with:
|
||||
name: python-package-distributions
|
||||
path: dist/
|
||||
- name: Publish distribution 📦 to TestPyPI
|
||||
uses: pypa/gh-action-pypi-publish@release/v1
|
||||
images: ${{ env.DEFAULT_DOCKER_IMAGE }}
|
||||
labels: |
|
||||
org.opencontainers.image.url=https://nicolargo.github.io/glances/
|
||||
|
||||
- name: Cache Docker layers
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
repository-url: https://test.pypi.org/legacy/
|
||||
skip-existing: true
|
||||
attestations: false
|
||||
path: /tmp/.buildx-cache
|
||||
key: ${{ runner.os }}-buildx-${{ env.NODE_ENV }}-${{ matrix.os }}-${{ matrix.tag.tag }}
|
||||
restore-keys: ${{ runner.os }}-buildx-${{ env.NODE_ENV }}-${{ matrix.os }}
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
with:
|
||||
platforms: all
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
with:
|
||||
version: latest
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v2
|
||||
if: ${{ env.PUSH_BRANCH == 'true' }}
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_TOKEN }}
|
||||
|
||||
- name: Build and push image
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
push: ${{ env.PUSH_BRANCH == 'true' }}
|
||||
tags: "${{ env.DEFAULT_DOCKER_IMAGE }}:${{ matrix.os != 'alpine' && format('{0}-', matrix.os) || '' }}${{ matrix.tag.tag }}"
|
||||
build-args: |
|
||||
CHANGING_ARG=${{ github.sha }}
|
||||
context: .
|
||||
file: "docker-files/${{ matrix.os }}.Dockerfile"
|
||||
platforms: ${{ matrix.os != 'ubuntu' && env.DOCKER_PLATFORMS || env.DOCKER_PLATFORMS_UBUNTU }}
|
||||
target: ${{ matrix.tag.target }}
|
||||
labels: ${{ steps.docker_meta.outputs.labels }}
|
||||
cache-from: type=local,src=/tmp/.buildx-cache
|
||||
cache-to: type=local,dest=/tmp/.buildx-cache,mode=max
|
||||
|
|
|
|||
|
|
@ -1,105 +0,0 @@
|
|||
# This pipeline aims at building Glances Docker images
|
||||
|
||||
name: build_docker
|
||||
|
||||
env:
|
||||
DEFAULT_DOCKER_IMAGE: nicolargo/glances
|
||||
PUSH_BRANCH: ${{ 'refs/heads/develop' == github.ref || startsWith(github.ref, 'refs/tags/v') }}
|
||||
# Alpine image platform: https://hub.docker.com/_/alpine
|
||||
# linux/arm/v6,linux/arm/v7 do not work (timeout during the build)
|
||||
DOCKER_PLATFORMS: linux/amd64,linux/arm64/v8
|
||||
# Ubuntu image platforms list: https://hub.docker.com/_/ubuntu
|
||||
# linux/arm/v7 do not work (Cargo/Rust not available)
|
||||
DOCKER_PLATFORMS_UBUNTU: linux/amd64,linux/arm64/v8
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
secrets:
|
||||
DOCKER_USERNAME:
|
||||
description: 'Docker Hub username'
|
||||
required: true
|
||||
DOCKER_TOKEN:
|
||||
description: 'Docker Hub token'
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
|
||||
create_docker_images_list:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
tags: ${{ steps.config.outputs.tags }}
|
||||
steps:
|
||||
- name: Determine image tags
|
||||
id: config
|
||||
shell: bash
|
||||
run: |
|
||||
if [[ $GITHUB_REF == refs/tags/* ]]; then
|
||||
VERSION=${GITHUB_REF#refs/tags/v}
|
||||
TAG_ARRAY="[{ \"target\": \"minimal\", \"tag\": \"${VERSION}\" },"
|
||||
TAG_ARRAY="$TAG_ARRAY { \"target\": \"minimal\", \"tag\": \"latest\" },"
|
||||
TAG_ARRAY="$TAG_ARRAY { \"target\": \"full\", \"tag\": \"${VERSION}-full\" },"
|
||||
TAG_ARRAY="$TAG_ARRAY { \"target\": \"full\", \"tag\": \"latest-full\" }]"
|
||||
elif [[ $GITHUB_REF == refs/heads/develop ]]; then
|
||||
TAG_ARRAY="[{ \"target\": \"dev\", \"tag\": \"dev\" }]"
|
||||
else
|
||||
TAG_ARRAY="[]"
|
||||
fi
|
||||
|
||||
echo "Tags to build: $TAG_ARRAY"
|
||||
echo "tags=$TAG_ARRAY" >> $GITHUB_OUTPUT
|
||||
|
||||
build_docker_images:
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
- create_docker_images_list
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: ['alpine', 'ubuntu']
|
||||
tag: ${{ fromJson(needs.create_docker_images_list.outputs.tags) }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Retrieve Repository Docker metadata
|
||||
id: docker_meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: ${{ env.DEFAULT_DOCKER_IMAGE }}
|
||||
labels: |
|
||||
org.opencontainers.image.url=https://nicolargo.github.io/glances/
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
with:
|
||||
platforms: all
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
with:
|
||||
version: latest
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v3
|
||||
if: ${{ env.PUSH_BRANCH == 'true' }}
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_TOKEN }}
|
||||
|
||||
- name: Build and push image
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
push: ${{ env.PUSH_BRANCH == 'true' }}
|
||||
tags: "${{ env.DEFAULT_DOCKER_IMAGE }}:${{ matrix.os != 'alpine' && format('{0}-', matrix.os) || '' }}${{ matrix.tag.tag }}"
|
||||
build-args: |
|
||||
CHANGING_ARG=${{ github.sha }}
|
||||
context: .
|
||||
file: "docker-files/${{ matrix.os }}.Dockerfile"
|
||||
platforms: ${{ matrix.os != 'ubuntu' && env.DOCKER_PLATFORMS || env.DOCKER_PLATFORMS_UBUNTU }}
|
||||
target: ${{ matrix.tag.target }}
|
||||
labels: ${{ steps.docker_meta.outputs.labels }}
|
||||
# GHA default behaviour overwrites last build cache. Causes alpine and ubuntu cache to overwrite each other.
|
||||
# Use `scope` with the os name to prevent that
|
||||
cache-from: 'type=gha,scope=${{ matrix.os }}'
|
||||
cache-to: 'type=gha,mode=max,scope=${{ matrix.os }}'
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
name: ci
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ develop ]
|
||||
push:
|
||||
branches: [ master, develop ]
|
||||
tags:
|
||||
- v*
|
||||
|
||||
jobs:
|
||||
quality:
|
||||
uses: ./.github/workflows/quality.yml
|
||||
test:
|
||||
uses: ./.github/workflows/test.yml
|
||||
needs: [quality]
|
||||
build:
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: ./.github/workflows/build.yml
|
||||
needs: [quality, test]
|
||||
build_docker:
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: ./.github/workflows/build_docker.yml
|
||||
secrets:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
|
||||
needs: [quality, test]
|
||||
|
|
@ -1,7 +1,24 @@
|
|||
name: quality
|
||||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
push:
|
||||
branches: [ develop ]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ develop ]
|
||||
schedule:
|
||||
- cron: '20 20 * * 0'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
|
|
@ -22,11 +39,11 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@v3
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
|
|
@ -37,7 +54,7 @@ jobs:
|
|||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v3
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
|
@ -51,4 +68,4 @@ jobs:
|
|||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v3
|
||||
uses: github/codeql-action/analyze@v2
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
name: cyber
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
|
||||
jobs:
|
||||
trivy:
|
||||
name: Trivy scan
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Run Trivy vulnerability scanner in repo mode
|
||||
uses: aquasecurity/trivy-action@master
|
||||
with:
|
||||
scan-type: 'fs'
|
||||
ignore-unfixed: true
|
||||
format: 'sarif'
|
||||
output: 'trivy-results.sarif'
|
||||
severity: 'CRITICAL'
|
||||
|
||||
- name: Upload Trivy scan results to GitHub Security tab
|
||||
uses: github/codeql-action/upload-sarif@v3
|
||||
with:
|
||||
sarif_file: 'trivy-results.sarif'
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
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@v10
|
||||
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 }}
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
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:
|
||||
|
|
@ -1,143 +1,86 @@
|
|||
# Run unitary test
|
||||
# Run unitary test + flake8
|
||||
|
||||
name: test
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
|
||||
source-code-checks:
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: Check formatting with Ruff
|
||||
uses: chartboost/ruff-action@v1
|
||||
with:
|
||||
args: 'format --check'
|
||||
|
||||
- name: Check linting with Ruff
|
||||
uses: chartboost/ruff-action@v1
|
||||
with:
|
||||
args: 'check'
|
||||
|
||||
# - name: Static type check
|
||||
# run: |
|
||||
# echo "Skipping static type check for the moment, too much error...";
|
||||
# # pip install pyright
|
||||
# # pyright glances
|
||||
|
||||
|
||||
test-linux:
|
||||
|
||||
needs: source-code-checks
|
||||
# https://github.com/actions/runner-images?tab=readme-ov-file#available-images
|
||||
runs-on: ubuntu-24.04
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
# Python EOL version are note tested
|
||||
# Multiple Python version only tested for Linux
|
||||
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
|
||||
python-version: ["2.7", "3.7", "3.8", "3.9", "3.10", "3.11"]
|
||||
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
cache: 'pip'
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
if [ -f dev-requirements.txt ]; then python -m pip install -r dev-requirements.txt; fi
|
||||
if [ -f requirements.txt ]; then python -m pip install -r requirements.txt; fi
|
||||
|
||||
- name: Unitary tests
|
||||
run: |
|
||||
python -m pytest ./tests/test_core.py
|
||||
|
||||
test-windows:
|
||||
|
||||
needs: source-code-checks
|
||||
# https://github.com/actions/runner-images?tab=readme-ov-file#available-images
|
||||
runs-on: windows-2025
|
||||
strategy:
|
||||
matrix:
|
||||
# Windows-curses not available for Python 3.14 for the moment
|
||||
# See https://github.com/zephyrproject-rtos/windows-curses/issues/76
|
||||
python-version: ["3.13"]
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v6
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
cache: 'pip'
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
if (Test-Path -PathType Leaf "dev-requirements.txt") { python -m pip install -r dev-requirements.txt }
|
||||
if (Test-Path -PathType Leaf "requirements.txt") { python -m pip install -r requirements.txt }
|
||||
pip install .
|
||||
python -m pip install --upgrade pip
|
||||
pip install flake8
|
||||
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
|
||||
|
||||
- name: Lint with flake8
|
||||
run: |
|
||||
# Stop the build if there are Python syntax errors or undefined names
|
||||
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --exclude=.git,./docs,./glances/outputs/static
|
||||
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
|
||||
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics --exclude=.git,./docs,./glances/outputs/static
|
||||
|
||||
# - name: Lint with Ruff
|
||||
# uses: chartboost/ruff-action@v1
|
||||
|
||||
- name: Static type check
|
||||
run: |
|
||||
if [ "${{ matrix.python-version }}" == "2.7" ];
|
||||
then
|
||||
echo "Skipping static type check for Python 2.7";
|
||||
else
|
||||
echo "Skipping static type check for the moment, too much error...";
|
||||
# pip install pyright
|
||||
# pyright glances
|
||||
fi
|
||||
|
||||
- name: Unitary tests
|
||||
run: |
|
||||
python -m pytest ./tests/test_core.py
|
||||
python ./unitest.py
|
||||
|
||||
test-macos:
|
||||
- name: Security issues with Bandit
|
||||
uses: jpetrucciani/bandit-check@master
|
||||
with:
|
||||
#path: '-r --exit-zero --skip B104 ./glances/'
|
||||
path: '-r --exit-zero --skip B104 ./glances/'
|
||||
|
||||
needs: source-code-checks
|
||||
# https://github.com/actions/runner-images?tab=readme-ov-file#available-images
|
||||
runs-on: macos-15
|
||||
|
||||
test-windows:
|
||||
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
matrix:
|
||||
# Only test the latest stable version
|
||||
python-version: ["3.14"]
|
||||
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
|
||||
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
cache: 'pip'
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
if [ -f dev-requirements.txt ]; then python -m pip install -r dev-requirements.txt; fi
|
||||
if [ -f requirements.txt ]; then python -m pip install -r requirements.txt; fi
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
if (Test-Path -PathType Leaf "requirements.txt") { python -m pip install -r requirements.txt }
|
||||
python setup.py install
|
||||
|
||||
- name: Unitary tests
|
||||
run: |
|
||||
python -m pytest ./tests/test_core.py
|
||||
|
||||
# Error when trying to implement #2749
|
||||
# pkg: No packages available to install matching 'py-pip' have been found in the repositories
|
||||
# test-freebsd:
|
||||
|
||||
# runs-on: ubuntu-22.04
|
||||
|
||||
# steps:
|
||||
|
||||
# - uses: actions/checkout@v4
|
||||
|
||||
# - name: Run tests
|
||||
# uses: vmactions/freebsd-vm@v1
|
||||
# with:
|
||||
# usesh: true
|
||||
# prepare: |
|
||||
# pkg install -y python3
|
||||
# run: |
|
||||
# set -e -x
|
||||
# python3 -m pip install pytest
|
||||
# python3 -m pip install --user -r dev-requirements.txt
|
||||
# python3 -m pip install --user -r requirements.txt
|
||||
# python3 -m pytest ./tests/test_core.py
|
||||
- name: Unitary tests
|
||||
run: |
|
||||
python ./unitest.py
|
||||
|
|
|
|||
|
|
@ -1,40 +0,0 @@
|
|||
name: webui
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [20.x]
|
||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- name: Glances will be build with Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v5
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
cache-dependency-path: ./glances/outputs/static/package-lock.json
|
||||
- name: Build Glances WebUI
|
||||
working-directory: ./glances/outputs/static
|
||||
# TODO: add the following line when https://github.com/nicolargo/glances/issues/2914 will be solved
|
||||
# npm audit fix
|
||||
run: |
|
||||
npm ci
|
||||
npm run build
|
||||
- name: Commit and push WebUI
|
||||
env:
|
||||
CI_COMMIT_MESSAGE: Continuous Integration Build Artifacts
|
||||
CI_COMMIT_AUTHOR: Continuous Integration
|
||||
run: |
|
||||
git config --global user.name "${{ env.CI_COMMIT_AUTHOR }}"
|
||||
git config --global user.email "username@users.noreply.github.com"
|
||||
git add glances/outputs/static
|
||||
/bin/bash -c "git commit -m '${{ env.CI_COMMIT_MESSAGE }}' || true"
|
||||
git push
|
||||
|
|
@ -23,11 +23,9 @@ local.properties
|
|||
.classpath
|
||||
.settings/
|
||||
.loadpath
|
||||
.ipynb_checkpoints/
|
||||
|
||||
# External tool builders
|
||||
.externalToolBuilders/
|
||||
*yarn.lock
|
||||
|
||||
# Locally stored "Eclipse launch configurations"
|
||||
*.launch
|
||||
|
|
@ -64,14 +62,5 @@ bower_components/
|
|||
/*_source.tar.bz2
|
||||
|
||||
# Virtual env
|
||||
.venv-uv/
|
||||
.venv/
|
||||
uv.lock
|
||||
.python-version
|
||||
/venv/
|
||||
|
||||
# Test
|
||||
.coverage
|
||||
tests-data/issues/*/config/
|
||||
|
||||
# Local SSL certificates
|
||||
glances.local*.pem
|
||||
|
|
|
|||
|
|
@ -1,107 +0,0 @@
|
|||
repos:
|
||||
- repo: https://github.com/gitleaks/gitleaks
|
||||
rev: v8.24.2
|
||||
hooks:
|
||||
- id: gitleaks
|
||||
name: "🔒 security · Detect hardcoded secrets"
|
||||
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.14.10
|
||||
hooks:
|
||||
- id: ruff-format
|
||||
name: "🐍 python · Formatter with Ruff"
|
||||
types_or: [ python, pyi ]
|
||||
args: [ --config, './pyproject.toml' ]
|
||||
- id: ruff-check
|
||||
name: "🐍 python · Linter with Ruff"
|
||||
types_or: [ python, pyi ]
|
||||
args: [ --fix, --exit-non-zero-on-fix, --config, './pyproject.toml' ]
|
||||
|
||||
# - repo: https://github.com/RobertCraigie/pyright-python
|
||||
# rev: v1.1.391
|
||||
# hooks:
|
||||
# - id: pyright
|
||||
# name: "🐍 python · Check types"
|
||||
|
||||
# - repo: https://github.com/biomejs/pre-commit
|
||||
# rev: "v2.3.7"
|
||||
# hooks:
|
||||
# - id: biome-check
|
||||
# name: "🟨 javascript · Lint, format, and safe fixes with Biome"
|
||||
|
||||
- repo: https://github.com/python-jsonschema/check-jsonschema
|
||||
rev: 0.35.0
|
||||
hooks:
|
||||
- id: check-github-workflows
|
||||
name: "🐙 github-actions · Validate gh workflow files"
|
||||
args: ["--verbose"]
|
||||
|
||||
- repo: https://github.com/shellcheck-py/shellcheck-py
|
||||
rev: v0.11.0.1
|
||||
hooks:
|
||||
- id: shellcheck
|
||||
name: "🐚 shell · Lint shell scripts"
|
||||
|
||||
- repo: https://github.com/openstack/bashate
|
||||
rev: 2.1.1
|
||||
hooks:
|
||||
- id: bashate
|
||||
name: "🐚 shell · Check shell script code style"
|
||||
entry: bashate --error . --ignore=E006
|
||||
|
||||
# - repo: https://github.com/mrtazz/checkmake.git
|
||||
# rev: 0.2.2
|
||||
# hooks:
|
||||
# - id: checkmake
|
||||
# name: "🐮 Makefile · Lint Makefile"
|
||||
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v6.0.0
|
||||
hooks:
|
||||
- id: check-executables-have-shebangs
|
||||
name: "📁 filesystem/⚙️ exec · Verify shebang presence"
|
||||
- id: check-shebang-scripts-are-executable
|
||||
name: "📁 filesystem/⚙️ exec · Verify script permissions"
|
||||
- id: check-case-conflict
|
||||
name: "📁 filesystem/📝 names · Check case sensitivity"
|
||||
- id: destroyed-symlinks
|
||||
name: "📁 filesystem/🔗 symlink · Detect broken symlinks"
|
||||
- id: check-merge-conflict
|
||||
name: "🌳 git · Detect conflict markers"
|
||||
- id: forbid-new-submodules
|
||||
name: "🌳 git · Prevent submodule creation"
|
||||
- id: no-commit-to-branch
|
||||
name: "🌳 git · Protect main branches"
|
||||
args: ["--branch", "main", "--branch", "master"]
|
||||
- id: check-added-large-files
|
||||
name: "🌳 git · Block large file commits"
|
||||
args: ['--maxkb=5000']
|
||||
- id: check-ast
|
||||
name: "🐍 python/🔍 quality · Validate Python AST"
|
||||
- id: check-docstring-first
|
||||
name: "🐍 python/📝 style · Enforce docstring at top"
|
||||
- id: check-json
|
||||
name: "📄 formats/json · Validate JSON files"
|
||||
- id: check-shebang-scripts-are-executable
|
||||
name: "📁 filesystem/⚙️ exec · Ensure scripts are executable"
|
||||
- id: check-toml
|
||||
name: "📄 formats/toml · Validate TOML files"
|
||||
- id: check-yaml
|
||||
name: "📄 formats/yaml · Validate YAML syntax"
|
||||
- id: debug-statements
|
||||
name: "🐍 python/🪲 debug · Detect debug statements"
|
||||
- id: detect-private-key
|
||||
name: "🔐 security · Detect private keys"
|
||||
- id: mixed-line-ending
|
||||
name: "📄 text/↩️ newline · Normalize line endings"
|
||||
- id: requirements-txt-fixer
|
||||
name: "🐍 python/📦 deps · Sort requirements.txt"
|
||||
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: find-duplicate-lines
|
||||
name: "❗️local script · Find duplicate lines at the end of file"
|
||||
entry: bash tests-data/tools/find-duplicate-lines.sh
|
||||
language: system
|
||||
types: [python]
|
||||
pass_filenames: false
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
# 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: dev-requirements.txt
|
||||
13
AUTHORS
|
|
@ -10,12 +10,6 @@ nicolashennion@gmail.com
|
|||
PGP Fingerprint: A0D9 628F 5A83 A879 48EA B1FE BA43 C11F 2C8B 4347
|
||||
PGP Public key: gpg --keyserver pgp.mit.edu --recv-keys 0xba43c11f2c8b4347
|
||||
|
||||
RazCrimson (maintainer of the Glances project)
|
||||
https://github.com/RazCrimson
|
||||
|
||||
Ariel Otibili (aka) ariel-anieli (for the huge work on code quality)
|
||||
https://github.com/ariel-anieli
|
||||
|
||||
Alessio Sergi (aka) Al3hex (thanks you for the great job on this project)
|
||||
https://twitter.com/al3hex
|
||||
https://github.com/asergi
|
||||
|
|
@ -23,9 +17,6 @@ https://github.com/asergi
|
|||
Floran Brutel (aka) notFloran (maintainer of the Web User Interface)
|
||||
https://github.com/notFloran
|
||||
|
||||
fr4nc0is (maintainer of the Web User Interface)
|
||||
https://github.com/fr4nc0is
|
||||
|
||||
Brandon Philips (aka) Philips
|
||||
http://ifup.org/
|
||||
https://github.com/philips
|
||||
|
|
@ -67,7 +58,3 @@ http://www.macports.org/ports.php?by=name&substr=glances
|
|||
|
||||
John Kirkham for the conda package (at conda-forge)
|
||||
https://github.com/conda-forge/glances-feedstock
|
||||
|
||||
Rui Chen for the Homebrew package
|
||||
https://chenrui.dev/
|
||||
https://formulae.brew.sh/formula/glances
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ In the interest of fostering an open and welcoming environment, we as
|
|||
contributors and maintainers pledge to making participation in our project and
|
||||
our community a harassment-free experience for everyone, regardless of age, body
|
||||
size, disability, ethnicity, gender identity and expression, level of experience,
|
||||
education, socioeconomic status, nationality, personal appearance, race,
|
||||
education, socio-economic status, nationality, personal appearance, race,
|
||||
religion, or sexual identity and orientation.
|
||||
|
||||
## Our Standards
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ the developers managing and developing this open source project. In return,
|
|||
they should reciprocate that respect in addressing your issue or assessing
|
||||
patches and features.
|
||||
|
||||
|
||||
## Using the issue tracker
|
||||
|
||||
The [issue tracker](https://github.com/nicolargo/glances/issues) is
|
||||
|
|
@ -23,6 +24,7 @@ restrictions:
|
|||
* Please **do not** derail or troll issues. Keep the discussion on topic and
|
||||
respect the opinions of others.
|
||||
|
||||
|
||||
## Bug reports
|
||||
|
||||
A bug is a _demonstrable problem_ that is caused by the code in the repository.
|
||||
|
|
@ -63,17 +65,19 @@ Example:
|
|||
> causing the bug, and potential solutions (and your opinions on their
|
||||
> merits).
|
||||
>
|
||||
> You can also run Glances in debug mode (-d) and paste/bin the glances.conf file (<https://glances.readthedocs.io/en/latest/config.html>).
|
||||
> You can also run Glances in debug mode (-d) and paste/bin the glances.conf file (https://glances.readthedocs.io/en/latest/config.html).
|
||||
>
|
||||
> Glances 3.2.0 or higher have also a --issue option to run a simple test. Please use it and copy/paste the output.
|
||||
|
||||
|
||||
## Feature requests
|
||||
|
||||
Feature requests are welcome. But take a moment to find out whether your idea
|
||||
fits with the scope and aims of the project. It's up to _you* to make a strong
|
||||
fits with the scope and aims of the project. It's up to *you* to make a strong
|
||||
case to convince the project's developers of the merits of this feature. Please
|
||||
provide as much detail and context as possible.
|
||||
|
||||
|
||||
## Pull requests
|
||||
|
||||
Good pull requests—patches, improvements, new features—are a fantastic
|
||||
|
|
@ -129,7 +133,6 @@ included in the project:
|
|||
|
||||
5. Test you code using the Makefile:
|
||||
|
||||
* make format ==> Format your code thanks to the Ruff linter
|
||||
* make run ==> Run Glances
|
||||
* make run-webserver ==> Run a Glances Web Server
|
||||
* make test ==> Run unit tests
|
||||
|
|
|
|||
|
|
@ -3,12 +3,7 @@ include CONTRIBUTING.md
|
|||
include COPYING
|
||||
include NEWS.rst
|
||||
include README.rst
|
||||
include README-pypi.rst
|
||||
include SECURITY.md
|
||||
include conf/glances.conf
|
||||
include conf/fetch-templates/*.jinja
|
||||
include requirements.txt
|
||||
include all-requirements.txt
|
||||
recursive-include docs *
|
||||
recursive-include glances *.py
|
||||
recursive-include glances/outputs/static *
|
||||
|
|
|
|||
395
Makefile
|
|
@ -1,387 +1,206 @@
|
|||
PORT ?= 8008
|
||||
CONF := conf/glances.conf
|
||||
LASTTAG = $(shell git describe --tags --abbrev=0)
|
||||
|
||||
IMAGES_TYPES := full minimal
|
||||
DISTROS := alpine ubuntu
|
||||
alpine_images := $(IMAGES_TYPES:%=docker-alpine-%)
|
||||
ubuntu_images := $(IMAGES_TYPES:%=docker-ubuntu-%)
|
||||
DOCKER_IMAGES := $(alpine_images) $(ubuntu_images)
|
||||
DOCKER_RUNTIMES := $(DOCKER_IMAGES:%=run-%)
|
||||
UNIT_TESTS := test-core test-restful test-xmlrpc
|
||||
DOCKER_BUILD := docker buildx build
|
||||
DOCKER_RUN := docker run
|
||||
PODMAN_SOCK ?= /run/user/$(shell id -u)/podman/podman.sock
|
||||
DOCKER_SOCK ?= /var/run/docker.sock
|
||||
DOCKER_SOCKS := -v $(PODMAN_SOCK):$(PODMAN_SOCK):ro -v $(DOCKER_SOCK):$(DOCKER_SOCK):ro
|
||||
DOCKER_OPTS := --rm -e TZ="${TZ}" -e GLANCES_OPT="" --pid host --network host
|
||||
UV_RUN := .venv-uv/bin/uv
|
||||
PORT?=8008
|
||||
LASTTAG = $(shell git describe --tags --abbrev=0)
|
||||
|
||||
# if the command is only `make`, the default tasks will be the printing of the help.
|
||||
.DEFAULT_GOAL := help
|
||||
|
||||
.PHONY: help test docs docs-server venv requirements profiling docker all clean all test
|
||||
|
||||
.PHONY: help
|
||||
help: ## List all make commands available
|
||||
@grep -E '^[\.a-zA-Z_%-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
|
||||
awk -F ":" '{print $1}' | \
|
||||
grep -v % | sed 's/\\//g' | sort | \
|
||||
awk 'BEGIN {FS = ":[^:]*?##"}; {printf "\033[1;34mmake %-50s\033[0m %s\n", $$1, $$2}'
|
||||
@grep -E '^[\.a-zA-Z_%-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk -F ":" '{print $1}' | grep -v % | sed 's/\\//g' | sort | awk 'BEGIN {FS = ":[^:]*?##"}; {printf "\033[1;34mmake %-50s\033[0m %s\n", $$1, $$2}'
|
||||
|
||||
# ===================================================================
|
||||
# Virtualenv
|
||||
# ===================================================================
|
||||
install: ## Open a Web Browser to the installation procedure
|
||||
sensible-browser "https://github.com/nicolargo/glances#installation"
|
||||
|
||||
# install-uv: ## Instructions to install the UV tool
|
||||
# @echo "Install the UV tool (https://astral.sh/uv/)"
|
||||
# @echo "Please install the UV tool manually"
|
||||
# @echo "For example with: curl -LsSf https://astral.sh/uv/install.sh | sh"
|
||||
# @echo "Or via a package manager of your distribution"
|
||||
# @echo "For example for Snap: snap install astral-uv"
|
||||
venv-python: ## Install Python 3 venv
|
||||
virtualenv -p /usr/bin/python3 venv
|
||||
|
||||
install-uv: ## Install UV tool in a specific virtualenv
|
||||
python3 -m venv .venv-uv
|
||||
.venv-uv/bin/pip install uv
|
||||
venv-dev: venv-python ## Install Python 3 dev dependencies
|
||||
./venv/bin/pip install -r dev-requirements.txt
|
||||
./venv/bin/pip install -r doc-requirements.txt
|
||||
|
||||
upgrade-uv: ## Upgrade the UV tool
|
||||
.venv-uv/bin/pip install --upgrade pip
|
||||
.venv-uv/bin/pip install --upgrade uv
|
||||
venv-dev-upgrade: ## Upgrade Python 3 dev dependencies
|
||||
./venv/bin/pip install --upgrade pip
|
||||
./venv/bin/pip install --upgrade -r dev-requirements.txt
|
||||
./venv/bin/pip install --upgrade -r doc-requirements.txt
|
||||
|
||||
venv: ## Create the virtualenv with all dependencies
|
||||
$(UV_RUN) sync --all-extras --no-group dev
|
||||
venv: venv-python ## Install Python 3 run-time dependencies
|
||||
./venv/bin/pip install -r requirements.txt
|
||||
./venv/bin/pip install -r optional-requirements.txt
|
||||
|
||||
venv-upgrade venv-switch-to-full: ## Upgrade the virtualenv with all dependencies
|
||||
$(UV_RUN) sync --upgrade --all-extras
|
||||
|
||||
venv-min: ## Create the virtualenv with minimal dependencies
|
||||
$(UV_RUN) sync
|
||||
|
||||
venv-upgrade-min venv-switch-to-min: ## Upgrade the virtualenv with minimal dependencies
|
||||
$(UV_RUN) sync --upgrade
|
||||
|
||||
venv-clean: ## Remove the virtualenv
|
||||
rm -rf .venv
|
||||
|
||||
venv-dev: ## Create the virtualenv with dev dependencies
|
||||
$(UV_RUN) sync --dev --all-extras
|
||||
$(UV_RUN) run pre-commit install --hook-type pre-commit
|
||||
|
||||
# ===================================================================
|
||||
# Requirements
|
||||
#
|
||||
# Note: the --no-hashes option should be used because pip (in CI) has
|
||||
# issues with hashes.
|
||||
# ===================================================================
|
||||
|
||||
requirements-min: ## Generate the requirements.txt files (minimal dependencies)
|
||||
$(UV_RUN) export --no-emit-workspace --no-hashes --no-group dev --output-file requirements.txt
|
||||
|
||||
requirements-all: ## Generate the all-requirements.txt files (all dependencies)
|
||||
$(UV_RUN) export --no-emit-workspace --no-hashes --all-extras --no-group dev --output-file all-requirements.txt
|
||||
|
||||
requirements-docker: ## Generate the docker-requirements.txt files (Docker specific dependencies)
|
||||
$(UV_RUN) export --no-emit-workspace --no-hashes --no-group dev --extra containers --extra web --output-file docker-requirements.txt
|
||||
|
||||
requirements-dev: ## Generate the dev-requirements.txt files (dev dependencies)
|
||||
$(UV_RUN) export --no-hashes --only-dev --output-file dev-requirements.txt
|
||||
|
||||
requirements: requirements-min requirements-all requirements-dev requirements-docker ## Generate all the requirements files
|
||||
|
||||
requirements-upgrade: venv-upgrade requirements ## Upgrade the virtualenv and regenerate all the requirements files
|
||||
venv-upgrade: ## Upgrade Python 3 run-time dependencies
|
||||
./venv/bin/pip install --upgrade -r requirements.txt
|
||||
./venv/bin/pip install --upgrade -r optional-requirements.txt
|
||||
|
||||
# ===================================================================
|
||||
# Tests
|
||||
# ===================================================================
|
||||
|
||||
test: ## Run All unit tests
|
||||
$(UV_RUN) run pytest
|
||||
test: ## Run unit tests
|
||||
./venv/bin/python ./unitest.py
|
||||
./venv/bin/python ./unitest-restful.py
|
||||
./venv/bin/python ./unitest-xmlrpc.py
|
||||
./venv/bin/python -m black ./glances --check --exclude outputs/static
|
||||
# ./venv/bin/pyright glances
|
||||
|
||||
test-core: ## Run Core unit tests
|
||||
$(UV_RUN) run pytest tests/test_core.py
|
||||
|
||||
test-api: ## Run API unit tests
|
||||
$(UV_RUN) run pytest tests/test_api.py
|
||||
|
||||
test-memoryleak: ## Run Memory-leak unit tests
|
||||
$(UV_RUN) run pytest tests/test_memoryleak.py
|
||||
|
||||
test-perf: ## Run Perf unit tests
|
||||
$(UV_RUN) run pytest tests/test_perf.py
|
||||
|
||||
test-restful: ## Run Restful API unit tests
|
||||
$(UV_RUN) run pytest tests/test_restful.py
|
||||
|
||||
test-webui: ## Run WebUI unit tests
|
||||
$(UV_RUN) run pytest tests/test_webui.py
|
||||
|
||||
test-xmlrpc: ## Run XMLRPC API unit tests
|
||||
$(UV_RUN) run pytest tests/test_xmlrpc.py
|
||||
|
||||
test-with-upgrade: venv-upgrade test ## Upgrade deps and run unit tests
|
||||
|
||||
test-export-csv: ## Run interface tests with CSV
|
||||
/bin/bash ./tests/test_export_csv.sh
|
||||
|
||||
test-export-json: ## Run interface tests with JSON
|
||||
/bin/bash ./tests/test_export_json.sh
|
||||
|
||||
test-export-influxdb-v1: ## Run interface tests with InfluxDB version 1 (Legacy)
|
||||
/bin/bash ./tests/test_export_influxdb_v1.sh
|
||||
|
||||
test-export-influxdb-v3: ## Run interface tests with InfluxDB version 3 (Core)
|
||||
/bin/bash ./tests/test_export_influxdb_v3.sh
|
||||
|
||||
test-export-timescaledb: ## Run interface tests with TimescaleDB
|
||||
/bin/bash ./tests/test_export_timescaledb.sh
|
||||
|
||||
test-export-nats: ## Run interface tests with NATS
|
||||
/bin/bash ./tests/test_export_nats.sh
|
||||
|
||||
test-exports: test-export-csv test-export-json test-export-influxdb-v1 test-export-influxdb-v3 test-export-timescaledb test-export-nats ## Tests all exports
|
||||
test-with-upgrade: venv-upgrade venv-dev-upgrade ## Run unit tests
|
||||
./venv/bin/python ./unitest.py
|
||||
./venv/bin/python ./unitest-restful.py
|
||||
./venv/bin/python ./unitest-xmlrpc.py
|
||||
./venv/bin/python -m black ./glances --check --exclude outputs/static
|
||||
# ./venv/bin/pyright glances
|
||||
|
||||
# ===================================================================
|
||||
# Linters, profilers and cyber security
|
||||
# Linters and profilers
|
||||
# ===================================================================
|
||||
|
||||
pre-commit: ## Run pre-commit hooks
|
||||
$(UV_RUN) run pre-commit run --all-files
|
||||
format: venv-dev-upgrade ## Format the code
|
||||
@git ls-files './glances/*.py' | xargs ./venv/bin/python -m autopep8 --in-place --jobs 0 --global-config=.flake8
|
||||
@git ls-files './glances/*.py' | xargs ./venv/bin/python -m autoflake --in-place --remove-all-unused-imports --remove-unused-variables --remove-duplicate-keys --exclude="compat.py,globals.py"
|
||||
./venv/bin/python -m black ./glances --exclude outputs/static
|
||||
|
||||
find-duplicate-lines: ## Search for duplicate lines in files
|
||||
/bin/bash tests-data/tools/find-duplicate-lines.sh
|
||||
flake8: venv-dev-upgrade ## Run flake8 linter.
|
||||
@git ls-files '*.py' | xargs ./venv/bin/python -m flake8 --config=.flake8
|
||||
|
||||
format: ## Format the code
|
||||
$(UV_RUN) run ruff format .
|
||||
ruff: venv-dev-upgrade ## Run Ruff (fastest) linter.
|
||||
./venv/bin/python -m ruff check . --config=./pyproject.toml
|
||||
|
||||
lint: ## Lint the code.
|
||||
$(UV_RUN) run ruff check . --fix
|
||||
codespell: venv-dev-upgrade ## Run codespell to fix common misspellings in text files
|
||||
./venv/bin/codespell -S .git,./docs/_build,./Glances.egg-info,./venv,./glances/outputs,*.svg -L hart,bu,te,statics
|
||||
|
||||
lint-readme: ## Lint the main README.rst file
|
||||
$(UV_RUN) run rstcheck README.rst
|
||||
$(UV_RUN) run rstcheck README-pypi.rst
|
||||
semgrep: venv-dev-upgrade ## Run semgrep to find bugs and enforce code standards
|
||||
./venv/bin/semgrep --config=auto --lang python --use-git-ignore ./glances
|
||||
|
||||
codespell: ## Run codespell to fix common misspellings in text files
|
||||
$(UV_RUN) run codespell -S .git,./docs/_build,./Glances.egg-info,./venv*,./glances/outputs,*.svg -L hart,bu,te,statics -w
|
||||
|
||||
semgrep: ## Run semgrep to find bugs and enforce code standards
|
||||
$(UV_RUN) run semgrep scan --config=auto
|
||||
|
||||
profiling-%: SLEEP = 3
|
||||
profiling-%: TIMES = 30
|
||||
profiling-%: OUT_DIR = docs/_static
|
||||
|
||||
define DISPLAY-BANNER
|
||||
@echo "Start Glances for $(TIMES) iterations (more or less 1 mins, please do not exit !)"
|
||||
sleep $(SLEEP)
|
||||
endef
|
||||
|
||||
profiling-gprof: CPROF = glances.cprof
|
||||
profiling-gprof: ## Callgraph profiling (need "apt install graphviz")
|
||||
$(DISPLAY-BANNER)
|
||||
$(UV_RUN) run python -m cProfile -o $(CPROF) run-venv.py -C $(CONF) --stop-after $(TIMES)
|
||||
$(UV_RUN) run gprof2dot -f pstats $(CPROF) | dot -Tsvg -o $(OUT_DIR)/glances-cgraph.svg
|
||||
rm -f $(CPROF)
|
||||
|
||||
profiling-pyinstrument: ## PyInstrument profiling
|
||||
$(DISPLAY-BANNER)
|
||||
$(UV_RUN) add pyinstrument
|
||||
$(UV_RUN) run pyinstrument -r html -o $(OUT_DIR)/glances-pyinstrument.html -m glances -C $(CONF) --stop-after $(TIMES)
|
||||
|
||||
profiling-pyspy: ## Flame profiling
|
||||
$(DISPLAY-BANNER)
|
||||
$(UV_RUN) run py-spy record -o $(OUT_DIR)/glances-flame.svg -d 60 -s -- .venv-uv/bin/uvrun python run-venv.py -C $(CONF) --stop-after $(TIMES)
|
||||
|
||||
profiling: profiling-gprof profiling-pyinstrument profiling-pyspy ## Profiling of the Glances software
|
||||
profiling: ## How to start the profiling of the Glances software
|
||||
@echo "Please complete and run: sudo ./venv/bin/py-spy record -o ./docs/_static/glances-flame.svg -d 60 -s --pid <GLANCES PID>"
|
||||
|
||||
trace-malloc: ## Trace the malloc() calls
|
||||
@echo "Malloc test is running, please wait ~30 secondes..."
|
||||
$(UV_RUN) run python -m glances -C $(CONF) --trace-malloc --stop-after 15 --quiet
|
||||
./venv/bin/python -m glances -C ./conf/glances.conf --trace-malloc --stop-after 15 --quiet
|
||||
|
||||
memory-leak: ## Profile memory leaks
|
||||
$(UV_RUN) run python -m glances -C $(CONF) --memory-leak
|
||||
./venv/bin/python -m glances -C ./conf/glances.conf --memory-leak
|
||||
|
||||
memory-profiling: TIMES = 2400
|
||||
memory-profiling: PROFILE = mprofile_*.dat
|
||||
memory-profiling: OUT_DIR = docs/_static
|
||||
memory-profiling: ## Profile memory usage
|
||||
@echo "It's a very long test (~4 hours)..."
|
||||
rm -f $(PROFILE)
|
||||
rm -f mprofile_*.dat
|
||||
@echo "1/2 - Start memory profiling with the history option enable"
|
||||
$(UV_RUN) run mprof run -T 1 -C run-venv.py -C $(CONF) --stop-after $(TIMES) --quiet
|
||||
$(UV_RUN) run mprof plot --output $(OUT_DIR)/glances-memory-profiling-with-history.png
|
||||
rm -f $(PROFILE)
|
||||
./venv/bin/mprof run -T 1 -C run.py -C ./conf/glances.conf --stop-after 2400 --quiet
|
||||
./venv/bin/mprof plot --output ./docs/_static/glances-memory-profiling-with-history.png
|
||||
rm -f mprofile_*.dat
|
||||
@echo "2/2 - Start memory profiling with the history option disable"
|
||||
$(UV_RUN) run mprof run -T 1 -C run-venv.py -C $(CONF) --disable-history --stop-after $(TIMES) --quiet
|
||||
$(UV_RUN) run mprof plot --output $(OUT_DIR)/glances-memory-profiling-without-history.png
|
||||
rm -f $(PROFILE)
|
||||
|
||||
# Trivy installation: https://aquasecurity.github.io/trivy/latest/getting-started/installation/
|
||||
trivy: ## Run Trivy to find vulnerabilities
|
||||
$(UV_RUN) run trivy fs ./glances/
|
||||
|
||||
bandit: ## Run Bandit to find vulnerabilities
|
||||
$(UV_RUN) run bandit glances -r
|
||||
./venv/bin/mprof run -T 1 -C run.py -C ./conf/glances.conf --disable-history --stop-after 2400 --quiet
|
||||
./venv/bin/mprof plot --output ./docs/_static/glances-memory-profiling-without-history.png
|
||||
rm -f mprofile_*.dat
|
||||
|
||||
# ===================================================================
|
||||
# Docs
|
||||
# ===================================================================
|
||||
|
||||
docs: ## Create the documentation
|
||||
$(UV_RUN) run python -m glances -C $(CONF) --api-doc > ./docs/api/python.rst
|
||||
$(UV_RUN) run python ./generate_openapi.py
|
||||
$(UV_RUN) run python -m glances -C $(CONF) --api-restful-doc > ./docs/api/restful.rst
|
||||
docs: venv-dev-upgrade ## Create the documentation
|
||||
./venv/bin/python -m glances -C ./conf/glances.conf --api-doc > ./docs/api.rst
|
||||
cd docs && ./build.sh && cd ..
|
||||
|
||||
docs-server: docs ## Start a Web server to serve the documentation
|
||||
(sleep 2 && sensible-browser "http://localhost:$(PORT)") &
|
||||
cd docs/_build/html/ && .venv-uv/bin/uvrun python -m http.server $(PORT)
|
||||
|
||||
docs-jupyter: ## Start Jupyter Notebook
|
||||
$(UV_RUN) run --with jupyter jupyter lab
|
||||
cd docs/_build/html/ && ../../../venv/bin/python -m http.server $(PORT)
|
||||
|
||||
release-note: ## Generate release note
|
||||
git --no-pager log $(LASTTAG)..HEAD --first-parent --pretty=format:"* %s"
|
||||
@echo "\n"
|
||||
git --no-pager shortlog -s -n $(LASTTAG)..HEAD
|
||||
|
||||
install: ## Open a Web Browser to the installation procedure
|
||||
sensible-browser "https://github.com/nicolargo/glances#installation"
|
||||
|
||||
# ===================================================================
|
||||
# WebUI
|
||||
# Follow ./glances/outputs/static/README.md for more information
|
||||
# ===================================================================
|
||||
|
||||
webui webui%: DIR = glances/outputs/static/
|
||||
webui: venv-dev-upgrade ## Build the Web UI
|
||||
cd glances/outputs/static/ && npm ci && npm run build
|
||||
|
||||
webui-gen-config: ## Generate the Web UI config file
|
||||
$(UV_RUN) run python ./generate_webui_conf.py > ./glances/outputs/static/js/uiconfig.json
|
||||
webui-audit: venv-dev-upgrade ## Audit the Web UI
|
||||
cd glances/outputs/static/ && npm audit
|
||||
|
||||
webui: webui-gen-config ## Build the Web UI
|
||||
cd $(DIR) && npm ci && npm run build
|
||||
|
||||
webui-audit: ## Audit the Web UI
|
||||
cd $(DIR) && npm audit
|
||||
|
||||
webui-audit-fix: webui-gen-config ## Fix audit the Web UI
|
||||
cd $(DIR) && npm audit fix && npm ci && npm run build
|
||||
|
||||
webui-update: webui-gen-config ## Update JS dependencies
|
||||
cd $(DIR) && npm update --save && npm ci && npm run build
|
||||
webui-audit-fix: venv-dev-upgrade ## Fix audit the Web UI
|
||||
cd glances/outputs/static/ && npm audit fix && npm ci && npm run build
|
||||
|
||||
# ===================================================================
|
||||
# Packaging
|
||||
# ===================================================================
|
||||
|
||||
flatpak: venv-upgrade ## Generate FlatPack JSON file
|
||||
flatpak: venv-dev-upgrade ## Generate FlatPack JSON file
|
||||
git clone https://github.com/flatpak/flatpak-builder-tools.git
|
||||
$(UV_RUN) run python ./flatpak-builder-tools/pip/flatpak-pip-generator glances
|
||||
./venv/bin/python ./flatpak-builder-tools/pip/flatpak-pip-generator glances
|
||||
rm -rf ./flatpak-builder-tools
|
||||
@echo "Now follow: https://github.com/flathub/flathub/wiki/App-Submission"
|
||||
|
||||
# Snap package is automatically build on the Snapcraft.io platform
|
||||
# https://snapcraft.io/glances
|
||||
# But you can try an offline build with the following command
|
||||
snapcraft:
|
||||
snapcraft
|
||||
|
||||
# ===================================================================
|
||||
# Docker
|
||||
# Need Docker Buildx package (apt install docker-buildx on Ubuntu)
|
||||
# ===================================================================
|
||||
|
||||
define MAKE_DOCKER_BUILD_RULES
|
||||
$($(DISTRO)_images): docker-$(DISTRO)-%: docker-files/$(DISTRO).Dockerfile
|
||||
$(DOCKER_BUILD) --target $$* -f $$< -t glances:local-$(DISTRO)-$$* .
|
||||
endef
|
||||
docker: docker-alpine docker-ubuntu## Generate local docker images
|
||||
|
||||
$(foreach DISTRO,$(DISTROS),$(eval $(MAKE_DOCKER_BUILD_RULES)))
|
||||
docker-alpine: ## Generate local docker images (Alpine)
|
||||
docker build --target full -f ./docker-files/alpine.Dockerfile -t glances:local-alpine-full .
|
||||
docker build --target minimal -f ./docker-files/alpine.Dockerfile -t glances:local-alpine-minimal .
|
||||
docker build --target dev -f ./docker-files/alpine.Dockerfile -t glances:local-alpine-dev .
|
||||
|
||||
docker: docker-alpine docker-ubuntu ## Generate local docker images
|
||||
|
||||
docker-alpine: $(alpine_images) ## Generate local docker images (Alpine)
|
||||
docker-ubuntu: $(ubuntu_images) ## Generate local docker images (Ubuntu)
|
||||
|
||||
docker-alpine-full: ## Generate local docker image (Alpine full)
|
||||
docker-alpine-minimal: ## Generate local docker image (Alpine minimal)
|
||||
docker-alpine-dev: ## Generate local docker image (Alpine dev)
|
||||
docker-ubuntu-full: ## Generate local docker image (Ubuntu full)
|
||||
docker-ubuntu-minimal: ## Generate local docker image (Ubuntu minimal)
|
||||
docker-ubuntu-dev: ## Generate local docker image (Ubuntu dev)
|
||||
|
||||
trivy-docker: ## Run Trivy to find vulnerabilities in Docker images
|
||||
$(UV_RUN) run trivy image glances:local-alpine-full
|
||||
$(UV_RUN) run trivy image glances:local-alpine-minimal
|
||||
$(UV_RUN) run trivy image glances:local-ubuntu-full
|
||||
$(UV_RUN) run trivy image glances:local-ubuntu-minimal
|
||||
docker-ubuntu: ## Generate local docker images (Ubuntu)
|
||||
docker build --target full -f ./docker-files/ubuntu.Dockerfile -t glances:local-ubuntu-full .
|
||||
docker build --target minimal -f ./docker-files/ubuntu.Dockerfile -t glances:local-ubuntu-minimal .
|
||||
docker build --target dev -f ./docker-files/ubuntu.Dockerfile -t glances:local-ubuntu-dev .
|
||||
|
||||
# ===================================================================
|
||||
# Run
|
||||
# ===================================================================
|
||||
|
||||
run: ## Start Glances in console mode (also called standalone)
|
||||
$(UV_RUN) run python -m glances -C $(CONF)
|
||||
./venv/bin/python -m glances -C ./conf/glances.conf
|
||||
|
||||
run-debug: ## Start Glances in debug console mode (also called standalone)
|
||||
$(UV_RUN) run python -m glances -C $(CONF) -d
|
||||
./venv/bin/python -m glances -C ./conf/glances.conf -d
|
||||
|
||||
run-local-conf: ## Start Glances in console mode with the system conf file
|
||||
$(UV_RUN) run python -m glances
|
||||
|
||||
run-local-conf-hide-public: ## Start Glances in console mode with the system conf file and hide public information
|
||||
$(UV_RUN) run python -m glances --hide-public-info
|
||||
|
||||
run-like-htop: ## Start Glances with the same features than Htop
|
||||
$(UV_RUN) run python -m glances --disable-plugin network,ports,wifi,connections,diskio,fs,irq,folders,raid,smart,sensors,vms,containers,ip,amps --disable-left-sidebar
|
||||
|
||||
run-fetch: ## Start Glances in fetch mode
|
||||
$(UV_RUN) run python -m glances --fetch
|
||||
|
||||
$(DOCKER_RUNTIMES): run-docker-%:
|
||||
$(DOCKER_RUN) $(DOCKER_OPTS) $(DOCKER_SOCKS) -it glances:local-$*
|
||||
./venv/bin/python -m glances
|
||||
|
||||
run-docker-alpine-minimal: ## Start Glances Alpine Docker minimal in console mode
|
||||
run-docker-alpine-full: ## Start Glances Alpine Docker full in console mode
|
||||
run-docker-alpine-dev: ## Start Glances Alpine Docker dev in console mode
|
||||
run-docker-ubuntu-minimal: ## Start Glances Ubuntu Docker minimal in console mode
|
||||
run-docker-ubuntu-full: ## Start Glances Ubuntu Docker full in console mode
|
||||
run-docker-ubuntu-dev: ## Start Glances Ubuntu Docker dev in console mode
|
||||
docker run --rm -e TZ="${TZ}" -e GLANCES_OPT="" -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host --network host -it glances:local-alpine-minimal
|
||||
|
||||
generate-ssl: ## Generate local and sel signed SSL certificates for dev (need mkcert)
|
||||
mkcert glances.local localhost 120.0.0.1 0.0.0.0
|
||||
run-docker-alpine-full: ## Start Glances Alpine Docker full in console mode
|
||||
docker run --rm -e TZ="${TZ}" -e GLANCES_OPT="" -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host --network host -it glances:local-alpine-full
|
||||
|
||||
run-docker-alpine-dev: ## Start Glances Alpine Docker dev in console mode
|
||||
docker run --rm -e TZ="${TZ}" -e GLANCES_OPT="" -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host --network host -it glances:local-alpine-dev
|
||||
|
||||
run-docker-ubuntu-minimal: ## Start Glances Ubuntu Docker minimal in console mode
|
||||
docker run --rm -e TZ="${TZ}" -e GLANCES_OPT="" -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host --network host -it glances:local-ubuntu-minimal
|
||||
|
||||
run-docker-ubuntu-full: ## Start Glances Ubuntu Docker full in console mode
|
||||
docker run --rm -e TZ="${TZ}" -e GLANCES_OPT="" -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host --network host -it glances:local-ubuntu-full
|
||||
|
||||
run-docker-ubuntu-dev: ## Start Glances Ubuntu Docker dev in console mode
|
||||
docker run --rm -e TZ="${TZ}" -e GLANCES_OPT="" -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host --network host -it glances:local-ubuntu-dev
|
||||
|
||||
run-webserver: ## Start Glances in Web server mode
|
||||
$(UV_RUN) run python -m glances -C $(CONF) -w
|
||||
|
||||
run-webserver-local-conf: ## Start Glances in Web server mode with the system conf file
|
||||
$(UV_RUN) run python -m glances -w
|
||||
|
||||
run-webserver-local-conf-hide-public: ## Start Glances in Web server mode with the system conf file and hide public info
|
||||
$(UV_RUN) run python -m glances -w --hide-public-info
|
||||
./venv/bin/python -m glances -C ./conf/glances.conf -w
|
||||
|
||||
run-restapiserver: ## Start Glances in REST API server mode
|
||||
$(UV_RUN) run python -m glances -C $(CONF) -w --disable-webui
|
||||
./venv/bin/python -m glances -C ./conf/glances.conf -w --disable-webui
|
||||
|
||||
run-server: ## Start Glances in server mode (RPC)
|
||||
$(UV_RUN) run python -m glances -C $(CONF) -s
|
||||
./venv/bin/python -m glances -C ./conf/glances.conf -s
|
||||
|
||||
run-client: ## Start Glances in client mode (RPC)
|
||||
$(UV_RUN) run python -m glances -C $(CONF) -c localhost
|
||||
./venv/bin/python -m glances -C ./conf/glances.conf -c localhost
|
||||
|
||||
run-browser: ## Start Glances in browser mode (RPC)
|
||||
$(UV_RUN) run python -m glances -C $(CONF) --browser
|
||||
|
||||
run-web-browser: ## Start Web Central Browser
|
||||
$(UV_RUN) run python -m glances -C $(CONF) -w --browser
|
||||
./venv/bin/python -m glances -C ./conf/glances.conf --browser
|
||||
|
||||
run-issue: ## Start Glances in issue mode
|
||||
$(UV_RUN) run python -m glances -C $(CONF) --issue
|
||||
|
||||
run-multipass: ## Install and start Glances in a VM (only available on Ubuntu with multipass already installed)
|
||||
multipass launch -n glances-on-lts lts
|
||||
multipass exec glances-on-lts -- sudo snap install glances
|
||||
multipass exec glances-on-lts -- glances
|
||||
multipass stop glances-on-lts
|
||||
multipass delete glances-on-lts
|
||||
./venv/bin/python -m glances -C ./conf/glances.conf --issue
|
||||
|
||||
show-version: ## Show Glances version number
|
||||
$(UV_RUN) run python -m glances -C $(CONF) -V
|
||||
./venv/bin/python -m glances -C ./conf/glances.conf -V
|
||||
|
||||
show-issue: ## Generate output for a new issue
|
||||
./venv/bin/python -m glances -C ./conf/glances.conf --issue
|
||||
|
||||
.PHONY: test docs docs-server venv
|
||||
|
|
|
|||
385
README-pypi.rst
|
|
@ -1,385 +0,0 @@
|
|||
Glances 🌟
|
||||
==========
|
||||
|
||||
**Glances** is an open-source system cross-platform monitoring tool.
|
||||
It allows real-time monitoring of various aspects of your system such as
|
||||
CPU, memory, disk, network usage etc. It also allows monitoring of running processes,
|
||||
logged in users, temperatures, voltages, fan speeds etc.
|
||||
It also supports container monitoring, it supports different container management
|
||||
systems such as Docker, LXC. The information is presented in an easy to read dashboard
|
||||
and can also be used for remote monitoring of systems via a web interface or command
|
||||
line interface. It is easy to install and use and can be customized to show only
|
||||
the information that you are interested in.
|
||||
|
||||
In client/server mode, remote monitoring could be done via terminal,
|
||||
Web interface or API (XML-RPC and RESTful).
|
||||
Stats can also be exported to files or external time/value databases, CSV or direct
|
||||
output to STDOUT.
|
||||
|
||||
Glances is written in Python and uses libraries to grab information from
|
||||
your system. It is based on an open architecture where developers can
|
||||
add new plugins or exports modules.
|
||||
|
||||
Usage 👋
|
||||
========
|
||||
|
||||
For the standalone mode, just run:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances
|
||||
|
||||
.. image:: https://github.com/nicolargo/glances/raw/refs/heads/master/docs/_static/glances-responsive-webdesign.png
|
||||
|
||||
For the Web server mode, run:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances -w
|
||||
|
||||
and enter the URL ``http://<ip>:61208`` in your favorite web browser.
|
||||
|
||||
In this mode, a HTTP/Restful API is exposed, see document `RestfulApi`_ for more details.
|
||||
|
||||
.. image:: https://github.com/nicolargo/glances/raw/refs/heads/master/docs/_static/screenshot-web.png
|
||||
|
||||
For the client/server mode (remote monitoring through XML-RPC), run the following command on the server:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances -s
|
||||
|
||||
and this one on the client:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances -c <ip>
|
||||
|
||||
You can also detect and display all Glances servers available on your
|
||||
network (or defined in the configuration file) in TUI:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances --browser
|
||||
|
||||
or WebUI:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances -w --browser
|
||||
|
||||
It possible to display raw stats on stdout:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances --stdout cpu.user,mem.used,load
|
||||
cpu.user: 30.7
|
||||
mem.used: 3278204928
|
||||
load: {'cpucore': 4, 'min1': 0.21, 'min5': 0.4, 'min15': 0.27}
|
||||
cpu.user: 3.4
|
||||
mem.used: 3275251712
|
||||
load: {'cpucore': 4, 'min1': 0.19, 'min5': 0.39, 'min15': 0.27}
|
||||
...
|
||||
|
||||
or in a CSV format thanks to the stdout-csv option:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances --stdout-csv now,cpu.user,mem.used,load
|
||||
now,cpu.user,mem.used,load.cpucore,load.min1,load.min5,load.min15
|
||||
2018-12-08 22:04:20 CEST,7.3,5948149760,4,1.04,0.99,1.04
|
||||
2018-12-08 22:04:23 CEST,5.4,5949136896,4,1.04,0.99,1.04
|
||||
...
|
||||
|
||||
or in a JSON format thanks to the stdout-json option (attribute not supported in this mode in order to have a real JSON object in output):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances --stdout-json cpu,mem
|
||||
cpu: {"total": 29.0, "user": 24.7, "nice": 0.0, "system": 3.8, "idle": 71.4, "iowait": 0.0, "irq": 0.0, "softirq": 0.0, "steal": 0.0, "guest": 0.0, "guest_nice": 0.0, "time_since_update": 1, "cpucore": 4, "ctx_switches": 0, "interrupts": 0, "soft_interrupts": 0, "syscalls": 0}
|
||||
mem: {"total": 7837949952, "available": 2919079936, "percent": 62.8, "used": 4918870016, "free": 2919079936, "active": 2841214976, "inactive": 3340550144, "buffers": 546799616, "cached": 3068141568, "shared": 788156416}
|
||||
...
|
||||
|
||||
Last but not least, you can use the fetch mode to get a quick look of a machine:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances --fetch
|
||||
|
||||
Results look like this:
|
||||
|
||||
.. image:: https://github.com/nicolargo/glances/raw/refs/heads/master/docs/_static/screenshot-fetch.png
|
||||
|
||||
Use Glances as a Python library 📚
|
||||
==================================
|
||||
|
||||
You can access the Glances API by importing the `glances.api` module and creating an
|
||||
instance of the `GlancesAPI` class. This instance provides access to all Glances plugins
|
||||
and their fields. For example, to access the CPU plugin and its total field, you can
|
||||
use the following code:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
>>> from glances import api
|
||||
>>> gl = api.GlancesAPI()
|
||||
>>> gl.cpu
|
||||
{'cpucore': 16,
|
||||
'ctx_switches': 1214157811,
|
||||
'guest': 0.0,
|
||||
'idle': 91.4,
|
||||
'interrupts': 991768733,
|
||||
'iowait': 0.3,
|
||||
'irq': 0.0,
|
||||
'nice': 0.0,
|
||||
'soft_interrupts': 423297898,
|
||||
'steal': 0.0,
|
||||
'syscalls': 0,
|
||||
'system': 5.4,
|
||||
'total': 7.3,
|
||||
'user': 3.0}
|
||||
>>> gl.cpu["total"]
|
||||
7.3
|
||||
>>> gl.mem["used"]
|
||||
12498582144
|
||||
>>> gl.auto_unit(gl.mem["used"])
|
||||
11.6G
|
||||
|
||||
If the stats return a list of items (like network interfaces or processes), you can
|
||||
access them by their name:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
>>> gl.network.keys()
|
||||
['wlp0s20f3', 'veth33b370c', 'veth19c7711']
|
||||
>>> gl.network["wlp0s20f3"]
|
||||
{'alias': None,
|
||||
'bytes_all': 362,
|
||||
'bytes_all_gauge': 9242285709,
|
||||
'bytes_all_rate_per_sec': 1032.0,
|
||||
'bytes_recv': 210,
|
||||
'bytes_recv_gauge': 7420522678,
|
||||
'bytes_recv_rate_per_sec': 599.0,
|
||||
'bytes_sent': 152,
|
||||
'bytes_sent_gauge': 1821763031,
|
||||
'bytes_sent_rate_per_sec': 433.0,
|
||||
'interface_name': 'wlp0s20f3',
|
||||
'key': 'interface_name',
|
||||
'speed': 0,
|
||||
'time_since_update': 0.3504955768585205}
|
||||
|
||||
For a complete example of how to use Glances as a library, have a look to the `PythonApi`_.
|
||||
|
||||
Documentation 📜
|
||||
================
|
||||
|
||||
For complete documentation have a look at the readthedocs_ website.
|
||||
|
||||
If you have any question (after RTFM! and the `FAQ`_), please post it on the official Reddit `forum`_ or in GitHub `Discussions`_.
|
||||
|
||||
Gateway to other services 🌐
|
||||
============================
|
||||
|
||||
Glances can export stats to:
|
||||
|
||||
- ``CSV`` file
|
||||
- ``JSON`` file
|
||||
- ``InfluxDB`` server
|
||||
- ``Cassandra`` server
|
||||
- ``CouchDB`` server
|
||||
- ``OpenTSDB`` server
|
||||
- ``Prometheus`` server
|
||||
- ``StatsD`` server
|
||||
- ``ElasticSearch`` server
|
||||
- ``PostgreSQL/TimeScale`` server
|
||||
- ``RabbitMQ/ActiveMQ`` broker
|
||||
- ``ZeroMQ`` broker
|
||||
- ``Kafka`` broker
|
||||
- ``Riemann`` server
|
||||
- ``Graphite`` server
|
||||
- ``RESTful`` endpoint
|
||||
|
||||
Installation 🚀
|
||||
===============
|
||||
|
||||
There are several methods to test/install Glances on your system. Choose your weapon!
|
||||
|
||||
PyPI: Pip, the standard way
|
||||
---------------------------
|
||||
|
||||
Glances is on ``PyPI``. By using PyPI, you will be using the latest stable version.
|
||||
|
||||
To install Glances, simply use the ``pip`` command line.
|
||||
|
||||
Warning: on modern Linux operating systems, you may have an externally-managed-environment
|
||||
error message when you try to use ``pip``. In this case, go to the the PipX section below.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install --user glances
|
||||
|
||||
*Note*: Python headers are required to install `psutil`_, a Glances
|
||||
dependency. For example, on Debian/Ubuntu **the simplest** is
|
||||
``apt install python3-psutil`` or alternatively need to install first
|
||||
the *python-dev* package and gcc (*python-devel* on Fedora/CentOS/RHEL).
|
||||
For Windows, just install psutil from the binary installation file.
|
||||
|
||||
By default, Glances is installed **without** the Web interface dependencies.
|
||||
To install it, use the following command:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install --user 'glances[web]'
|
||||
|
||||
For a full installation (with all features, see features list bellow):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install --user 'glances[all]'
|
||||
|
||||
Features list:
|
||||
|
||||
- all: install dependencies for all features
|
||||
- action: install dependencies for action feature
|
||||
- browser: install dependencies for Glances centram browser
|
||||
- cloud: install dependencies for cloud plugin
|
||||
- containers: install dependencies for container plugin
|
||||
- export: install dependencies for all exports modules
|
||||
- gpu: install dependencies for GPU plugin
|
||||
- graph: install dependencies for graph export
|
||||
- ip: install dependencies for IP public option
|
||||
- raid: install dependencies for RAID plugin
|
||||
- sensors: install dependencies for sensors plugin
|
||||
- smart: install dependencies for smart plugin
|
||||
- snmp: install dependencies for SNMP
|
||||
- sparklines: install dependencies for sparklines option
|
||||
- web: install dependencies for Webserver (WebUI) and Web API
|
||||
- wifi: install dependencies for Wifi plugin
|
||||
|
||||
To upgrade Glances to the latest version:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install --user --upgrade glances
|
||||
|
||||
The current develop branch is published to the test.pypi.org package index.
|
||||
If you want to test the develop version (could be instable), enter:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install --user -i https://test.pypi.org/simple/ Glances
|
||||
|
||||
PyPI: PipX, the alternative way
|
||||
-------------------------------
|
||||
|
||||
Install PipX on your system (apt install pipx on Ubuntu).
|
||||
|
||||
Install Glances (with all features):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pipx install 'glances[all]'
|
||||
|
||||
The glances script will be installed in the ~/.local/bin folder.
|
||||
|
||||
Shell tab completion 🔍
|
||||
=======================
|
||||
|
||||
Glances 4.3.2 and higher includes shell tab autocompletion thanks to the --print-completion option.
|
||||
|
||||
For example, on a Linux operating system with bash shell:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ mkdir -p ${XDG_DATA_HOME:="$HOME/.local/share"}/bash-completion
|
||||
$ glances --print-completion bash > ${XDG_DATA_HOME:="$HOME/.local/share"}/bash-completion/glances
|
||||
$ source ${XDG_DATA_HOME:="$HOME/.local/share"}/bash-completion/glances
|
||||
|
||||
Following shells are supported: bash, zsh and tcsh.
|
||||
|
||||
Requirements 🧩
|
||||
===============
|
||||
|
||||
Glances is developed in Python. A minimal Python version 3.10 or higher
|
||||
should be installed on your system.
|
||||
|
||||
*Note for Python 2 users*
|
||||
|
||||
Glances version 4 or higher do not support Python 2 (and Python 3 < 3.10).
|
||||
Please uses Glances version 3.4.x if you need Python 2 support.
|
||||
|
||||
Dependencies:
|
||||
|
||||
- ``psutil`` (better with latest version)
|
||||
- ``defusedxml`` (in order to monkey patch xmlrpc)
|
||||
- ``packaging`` (for the version comparison)
|
||||
- ``windows-curses`` (Windows Curses implementation) [Windows-only]
|
||||
- ``shtab`` (Shell autocompletion) [All but Windows]
|
||||
- ``jinja2`` (for fetch mode and templating)
|
||||
|
||||
Extra dependencies:
|
||||
|
||||
- ``batinfo`` (for battery monitoring)
|
||||
- ``bernhard`` (for the Riemann export module)
|
||||
- ``cassandra-driver`` (for the Cassandra export module)
|
||||
- ``chevron`` (for the action script feature)
|
||||
- ``docker`` (for the Containers Docker monitoring support)
|
||||
- ``elasticsearch`` (for the Elastic Search export module)
|
||||
- ``FastAPI`` and ``Uvicorn`` (for Web server mode)
|
||||
- ``graphitesender`` (For the Graphite export module)
|
||||
- ``hddtemp`` (for HDD temperature monitoring support) [Linux-only]
|
||||
- ``influxdb`` (for the InfluxDB version 1 export module)
|
||||
- ``influxdb-client`` (for the InfluxDB version 2 export module)
|
||||
- ``kafka-python`` (for the Kafka export module)
|
||||
- ``nvidia-ml-py`` (for the GPU plugin)
|
||||
- ``pycouchdb`` (for the CouchDB export module)
|
||||
- ``pika`` (for the RabbitMQ/ActiveMQ export module)
|
||||
- ``podman`` (for the Containers Podman monitoring support)
|
||||
- ``potsdb`` (for the OpenTSDB export module)
|
||||
- ``prometheus_client`` (for the Prometheus export module)
|
||||
- ``psycopg[binary]`` (for the PostgreSQL/TimeScale export module)
|
||||
- ``pygal`` (for the graph export module)
|
||||
- ``pymdstat`` (for RAID support) [Linux-only]
|
||||
- ``pymongo`` (for the MongoDB export module)
|
||||
- ``pysnmp-lextudio`` (for SNMP support)
|
||||
- ``pySMART.smartx`` (for HDD Smart support) [Linux-only]
|
||||
- ``pyzmq`` (for the ZeroMQ export module)
|
||||
- ``requests`` (for the Ports, Cloud plugins and RESTful export module)
|
||||
- ``sparklines`` (for the Quick Plugin sparklines option)
|
||||
- ``statsd`` (for the StatsD export module)
|
||||
- ``wifi`` (for the wifi plugin) [Linux-only]
|
||||
- ``zeroconf`` (for the autodiscover mode)
|
||||
|
||||
Project sponsorship 🙌
|
||||
======================
|
||||
|
||||
You can help me to achieve my goals of improving this open-source project
|
||||
or just say "thank you" by:
|
||||
|
||||
- sponsor me using one-time or monthly tier Github sponsors_ page
|
||||
- send me some pieces of bitcoin: 185KN9FCix3svJYp7JQM7hRMfSKyeaJR4X
|
||||
- buy me a gift on my wishlist_ page
|
||||
|
||||
Any and all contributions are greatly appreciated.
|
||||
|
||||
Authors and Contributors 🔥
|
||||
===========================
|
||||
|
||||
Nicolas Hennion (@nicolargo) <nicolas@nicolargo.com>
|
||||
|
||||
.. image:: https://img.shields.io/twitter/url/https/twitter.com/cloudposse.svg?style=social&label=Follow%20%40nicolargo
|
||||
:target: https://twitter.com/nicolargo
|
||||
|
||||
License 📜
|
||||
==========
|
||||
|
||||
Glances is distributed under the LGPL version 3 license. See ``COPYING`` for more details.
|
||||
|
||||
.. _psutil: https://github.com/giampaolo/psutil
|
||||
.. _readthedocs: https://glances.readthedocs.io/
|
||||
.. _forum: https://www.reddit.com/r/glances/
|
||||
.. _sponsors: https://github.com/sponsors/nicolargo
|
||||
.. _wishlist: https://www.amazon.fr/hz/wishlist/ls/BWAAQKWFR3FI?ref_=wl_share
|
||||
.. _PythonApi: https://glances.readthedocs.io/en/develop/api/python.html
|
||||
.. _RestfulApi: https://glances.readthedocs.io/en/develop/api/restful.html
|
||||
.. _FAQ: https://github.com/nicolargo/glances/blob/develop/docs/faq.rst
|
||||
.. _Discussions: https://github.com/nicolargo/glances/discussions
|
||||
867
README.rst
|
|
@ -1,64 +1,44 @@
|
|||
.. raw:: html
|
||||
===============================
|
||||
Glances - An eye on your system
|
||||
===============================
|
||||
|
||||
<div align="center">
|
||||
|
||||
.. image:: ./docs/_static/glances-responsive-webdesign.png
|
||||
|
||||
.. raw:: html
|
||||
|
||||
<h1>Glances</h1>
|
||||
|
||||
An Eye on your System
|
||||
|
||||
| |pypi| |test| |contributors| |quality|
|
||||
| |starts| |docker| |pypistat| |sponsors|
|
||||
| |reddit|
|
||||
|
||||
.. |pypi| image:: https://img.shields.io/pypi/v/glances.svg
|
||||
.. image:: https://img.shields.io/pypi/v/glances.svg
|
||||
:target: https://pypi.python.org/pypi/Glances
|
||||
|
||||
.. |starts| image:: https://img.shields.io/github/stars/nicolargo/glances.svg
|
||||
.. image:: https://img.shields.io/github/stars/nicolargo/glances.svg
|
||||
:target: https://github.com/nicolargo/glances/
|
||||
:alt: Github stars
|
||||
|
||||
.. |docker| image:: https://img.shields.io/docker/pulls/nicolargo/glances
|
||||
.. image:: https://img.shields.io/docker/pulls/nicolargo/glances
|
||||
:target: https://hub.docker.com/r/nicolargo/glances/
|
||||
:alt: Docker pull
|
||||
|
||||
.. |pypistat| image:: https://pepy.tech/badge/glances/month
|
||||
.. image:: https://pepy.tech/badge/glances/month
|
||||
:target: https://pepy.tech/project/glances
|
||||
:alt: Pypi downloads
|
||||
|
||||
.. |test| image:: https://github.com/nicolargo/glances/actions/workflows/ci.yml/badge.svg?branch=develop
|
||||
.. image:: https://github.com/nicolargo/glances/actions/workflows/test.yml/badge.svg
|
||||
:target: https://github.com/nicolargo/glances/actions
|
||||
:alt: Linux tests (GitHub Actions)
|
||||
|
||||
.. |contributors| image:: https://img.shields.io/github/contributors/nicolargo/glances
|
||||
.. image:: https://img.shields.io/github/contributors/nicolargo/glances
|
||||
:target: https://github.com/nicolargo/glances/issues?q=is%3Aissue+is%3Aopen+label%3A%22needs+contributor%22
|
||||
:alt: Contributors
|
||||
:alt: Contibutors
|
||||
|
||||
.. |quality| image:: https://scrutinizer-ci.com/g/nicolargo/glances/badges/quality-score.png?b=develop
|
||||
.. image:: https://scrutinizer-ci.com/g/nicolargo/glances/badges/quality-score.png?b=develop
|
||||
:target: https://scrutinizer-ci.com/g/nicolargo/glances/?branch=develop
|
||||
:alt: Code quality
|
||||
|
||||
.. |sponsors| image:: https://img.shields.io/github/sponsors/nicolargo
|
||||
.. image:: https://img.shields.io/github/sponsors/nicolargo
|
||||
:target: https://github.com/sponsors/nicolargo
|
||||
:alt: Sponsors
|
||||
|
||||
.. |twitter| image:: https://img.shields.io/badge/X-000000?style=for-the-badge&logo=x&logoColor=white
|
||||
.. image:: https://img.shields.io/twitter/url/https/twitter.com/cloudposse.svg?style=social&label=Follow%20%40nicolargo
|
||||
:target: https://twitter.com/nicolargo
|
||||
:alt: @nicolargo
|
||||
|
||||
.. |reddit| image:: https://img.shields.io/badge/Reddit-FF4500?style=for-the-badge&logo=reddit&logoColor=white
|
||||
:target: https://www.reddit.com/r/glances/
|
||||
:alt: @reddit
|
||||
|
||||
.. raw:: html
|
||||
|
||||
</div>
|
||||
|
||||
Summary 🌟
|
||||
==========
|
||||
Summary
|
||||
=======
|
||||
|
||||
**Glances** is an open-source system cross-platform monitoring tool.
|
||||
It allows real-time monitoring of various aspects of your system such as
|
||||
|
|
@ -70,17 +50,325 @@ and can also be used for remote monitoring of systems via a web interface or com
|
|||
line interface. It is easy to install and use and can be customized to show only
|
||||
the information that you are interested in.
|
||||
|
||||
.. image:: https://raw.githubusercontent.com/nicolargo/glances/develop/docs/_static/glances-summary.png
|
||||
|
||||
In client/server mode, remote monitoring could be done via terminal,
|
||||
Web interface or API (XML-RPC and RESTful).
|
||||
Stats can also be exported to files or external time/value databases, CSV or direct
|
||||
output to STDOUT.
|
||||
|
||||
.. image:: https://raw.githubusercontent.com/nicolargo/glances/develop/docs/_static/glances-responsive-webdesign.png
|
||||
|
||||
Glances is written in Python and uses libraries to grab information from
|
||||
your system. It is based on an open architecture where developers can
|
||||
add new plugins or exports modules.
|
||||
|
||||
Usage 👋
|
||||
========
|
||||
Project sponsorship
|
||||
===================
|
||||
|
||||
You can help me to achieve my goals of improving this open-source project
|
||||
or just say "thank you" by:
|
||||
|
||||
- sponsor me using one-time or monthly tier Github sponsors_ page
|
||||
- send me some pieces of bitcoin: 185KN9FCix3svJYp7JQM7hRMfSKyeaJR4X
|
||||
- buy me a gift on my wishlist_ page
|
||||
|
||||
Any and all contributions are greatly appreciated.
|
||||
|
||||
Requirements
|
||||
============
|
||||
|
||||
- ``python>=2.7`` or ``python>=3.4``
|
||||
- ``psutil>=5.3.0`` (better with latest version)
|
||||
- ``defusedxml`` (in order to monkey patch xmlrpc)
|
||||
- ``ujson`` (an optimized alternative to the standard json module)
|
||||
- ``future`` (for Python 2 support)
|
||||
|
||||
*Note for Python 2.6 users*
|
||||
|
||||
Glances no longer supports Python 2.6. Please upgrade
|
||||
to a minimum Python version of 2.7/3.4+ or downgrade to Glances 2.6.2 (last version
|
||||
with Python 2.6 support).
|
||||
|
||||
*Deprecation warning note for Python 2.x users*
|
||||
|
||||
Glances version 4.0 will no longer supports Python 2.x.
|
||||
|
||||
Optional dependencies:
|
||||
|
||||
- ``batinfo`` (for battery monitoring)
|
||||
- ``bernhard`` (for the Riemann export module)
|
||||
- ``bottle`` (for Web server mode)
|
||||
- ``cassandra-driver`` (for the Cassandra export module)
|
||||
- ``chevron`` (for the action script feature)
|
||||
- ``couchdb`` (for the CouchDB export module)
|
||||
- ``docker`` (for the Containers Docker monitoring support) [Linux/macOS-only / Python >= 3.6]
|
||||
- ``elasticsearch`` (for the Elastic Search export module)
|
||||
- ``graphitesender`` (For the Graphite export module)
|
||||
- ``hddtemp`` (for HDD temperature monitoring support) [Linux-only]
|
||||
- ``influxdb`` (for the InfluxDB version 1 export module)
|
||||
- ``influxdb-client`` (for the InfluxDB version 2 export module) [Only for Python >= 3.6]
|
||||
- ``kafka-python`` (for the Kafka export module)
|
||||
- ``netifaces`` (for the IP plugin)
|
||||
- ``py3nvml`` (for the GPU plugin) [Only for Python 3]
|
||||
- ``pika`` (for the RabbitMQ/ActiveMQ export module)
|
||||
- ``podman`` (for the Containers Podman monitoring support) [Linux/macOS-only / Python >= 3.6]
|
||||
- ``potsdb`` (for the OpenTSDB export module)
|
||||
- ``prometheus_client`` (for the Prometheus export module)
|
||||
- ``py-cpuinfo`` (for the Quicklook CPU info module)
|
||||
- ``pygal`` (for the graph export module)
|
||||
- ``pymdstat`` (for RAID support) [Linux-only]
|
||||
- ``pymongo`` (for the MongoDB export module) [Only for Python >= 3.7]
|
||||
- ``pysnmp`` (for SNMP support)
|
||||
- ``pySMART.smartx`` (for HDD Smart support) [Linux-only]
|
||||
- ``pyzmq`` (for the ZeroMQ export module)
|
||||
- ``requests`` (for the Ports, Cloud plugins and RESTful export module)
|
||||
- ``scandir`` (for the Folders plugin) [Only for Python < 3.5]
|
||||
- ``sparklines`` (for the Quick Plugin sparklines option)
|
||||
- ``statsd`` (for the StatsD export module)
|
||||
- ``wifi`` (for the wifi plugin) [Linux-only]
|
||||
- ``zeroconf`` (for the autodiscover mode)
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
There are several methods to test/install Glances on your system. Choose your weapon!
|
||||
|
||||
PyPI: The standard way
|
||||
----------------------
|
||||
|
||||
Glances is on ``PyPI``. By using PyPI, you will be using the latest
|
||||
stable version.
|
||||
|
||||
To install Glances, simply use ``pip``:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install --user glances
|
||||
|
||||
*Note*: Python headers are required to install `psutil`_, a Glances
|
||||
dependency. For example, on Debian/Ubuntu you need to install first
|
||||
the *python-dev* package (*python-devel* on Fedora/CentOS/RHEL).
|
||||
For Windows, just install psutil from the binary installation file.
|
||||
|
||||
*Note 2 (for the Wifi plugin)*: If you want to use the Wifi plugin, you need
|
||||
to install the *wireless-tools* package on your system.
|
||||
|
||||
By default, Glances is installed without the Web interface dependencies.
|
||||
To install it, use the following command:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install --user 'glances[web]'
|
||||
|
||||
For a full installation (with all features):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install --user 'glances[all]'
|
||||
|
||||
To upgrade Glances to the latest version:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install --user --upgrade glances
|
||||
|
||||
The current develop branch is published to the test.pypi.org package index.
|
||||
If you want to test the develop version (could be instable), enter:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install --user -i https://test.pypi.org/simple/ Glances
|
||||
|
||||
Glances Auto Install script: the easy way
|
||||
-----------------------------------------
|
||||
|
||||
To install both dependencies and the latest Glances production ready version
|
||||
(aka *master* branch), just enter the following command line:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
curl -L https://bit.ly/glances | /bin/bash
|
||||
|
||||
or
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
wget -O- https://bit.ly/glances | /bin/bash
|
||||
|
||||
*Note*: This is only supported on some GNU/Linux distributions and Mac OS X.
|
||||
If you want to support other distributions, please contribute to `glancesautoinstall`_.
|
||||
|
||||
Docker: the fun way
|
||||
-------------------
|
||||
|
||||
Glances Docker images are availables. You can use it to monitor your
|
||||
server and all your containers !
|
||||
|
||||
Get the Glances container:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
docker pull nicolargo/glances:latest-full
|
||||
|
||||
The following tags are availables:
|
||||
|
||||
- *latest-full* for a full Alpine Glances image (latest release) with all dependencies
|
||||
- *latest* for a basic Alpine Glances (latest release) version with minimal dependencies (Bottle and Docker)
|
||||
- *dev* for a basic Alpine Glances image (based on development branch) with all dependencies (Warning: may be instable)
|
||||
- *ubuntu-latest-full* for a full Ubuntu Glances image (latest release) with all dependencies
|
||||
- *ubuntu-latest* for a basic Ubuntu Glances (latest release) version with minimal dependencies (Bottle and Docker)
|
||||
- *ubuntu-dev* for a basic Ubuntu Glances image (based on development branch) with all dependencies (Warning: may be instable)
|
||||
|
||||
Run last version of Glances container in *console mode*:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
docker run --rm -e TZ="${TZ}" -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host --network host -it nicolargo/glances:latest-full
|
||||
|
||||
Additionally, if you want to use your own glances.conf file, you can
|
||||
create your own Dockerfile:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
FROM nicolargo/glances:latest
|
||||
COPY glances.conf /etc/glances.conf
|
||||
CMD python -m glances -C /etc/glances.conf $GLANCES_OPT
|
||||
|
||||
Alternatively, you can specify something along the same lines with
|
||||
docker run options (notice the `GLANCES_OPT` environment
|
||||
variable setting parameters for the glances startup command):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
docker run -e TZ="${TZ}" -v `pwd`/glances.conf:/etc/glances.conf -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host -e GLANCES_OPT="-C /etc/glances.conf" -it nicolargo/glances:latest-full
|
||||
|
||||
Where \`pwd\`/glances.conf is a local directory containing your glances.conf file.
|
||||
|
||||
Run the container in *Web server mode*:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
docker run -d --restart="always" -p 61208-61209:61208-61209 -e TZ="${TZ}" -e GLANCES_OPT="-w" -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host nicolargo/glances:latest-full
|
||||
|
||||
For a full list of options, see the Glances `Docker`_ documentation page.
|
||||
|
||||
GNU/Linux
|
||||
---------
|
||||
|
||||
`Glances` is available on many Linux distributions, so you should be
|
||||
able to install it using your favorite package manager. Be aware that
|
||||
when you use this method the operating system `package`_ for `Glances`
|
||||
may not be the latest version.
|
||||
|
||||
Note: The Debian package (and all other Debian-based distributions) do
|
||||
not include anymore the JS statics files used by the Web interface
|
||||
(see ``issue2021``). If you want to add it to your Glances installation,
|
||||
follow the instructions: ``issue2021comment``.
|
||||
|
||||
FreeBSD
|
||||
-------
|
||||
|
||||
To install the binary package:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# pkg install py38-glances
|
||||
|
||||
To install Glances from ports:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# cd /usr/ports/sysutils/py-glances/
|
||||
# make install clean
|
||||
|
||||
macOS
|
||||
-----
|
||||
|
||||
If you do not want to use the glancesautoinstall script, follow this procedure.
|
||||
|
||||
macOS users can install Glances using ``Homebrew`` or ``MacPorts``.
|
||||
|
||||
Homebrew
|
||||
````````
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ brew install glances
|
||||
|
||||
MacPorts
|
||||
````````
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo port install glances
|
||||
|
||||
Windows
|
||||
-------
|
||||
|
||||
Install `Python`_ for Windows (Python 2.7.9+ and 3.4+ ship with pip) and
|
||||
then run the following command:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ pip install glances
|
||||
|
||||
Android
|
||||
-------
|
||||
|
||||
You need a rooted device and the `Termux`_ application (available on the
|
||||
Google Play Store).
|
||||
|
||||
Start Termux on your device and enter:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ apt update
|
||||
$ apt upgrade
|
||||
$ apt install clang python
|
||||
$ pip install bottle
|
||||
$ pip install glances
|
||||
|
||||
And start Glances:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances
|
||||
|
||||
You can also run Glances in server mode (-s or -w) in order to remotely
|
||||
monitor your Android device.
|
||||
|
||||
Source
|
||||
------
|
||||
|
||||
To install Glances from source:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ wget https://github.com/nicolargo/glances/archive/vX.Y.tar.gz -O - | tar xz
|
||||
$ cd glances-*
|
||||
# python setup.py install
|
||||
|
||||
*Note*: Python headers are required to install psutil.
|
||||
|
||||
Chef
|
||||
----
|
||||
|
||||
An awesome ``Chef`` cookbook is available to monitor your infrastructure:
|
||||
https://supermarket.chef.io/cookbooks/glances (thanks to Antoine Rouyer)
|
||||
|
||||
Puppet
|
||||
------
|
||||
|
||||
You can install Glances using ``Puppet``: https://github.com/rverchere/puppet-glances
|
||||
|
||||
Ansible
|
||||
-------
|
||||
|
||||
A Glances ``Ansible`` role is available: https://galaxy.ansible.com/zaxos/glances-ansible-role/
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
For the standalone mode, just run:
|
||||
|
||||
|
|
@ -88,8 +376,6 @@ For the standalone mode, just run:
|
|||
|
||||
$ glances
|
||||
|
||||
.. image:: ./docs/_static/glances-summary.png
|
||||
|
||||
For the Web server mode, run:
|
||||
|
||||
.. code-block:: console
|
||||
|
|
@ -98,36 +384,28 @@ For the Web server mode, run:
|
|||
|
||||
and enter the URL ``http://<ip>:61208`` in your favorite web browser.
|
||||
|
||||
In this mode, a HTTP/Restful API is exposed, see document `RestfulApi`_ for more details.
|
||||
|
||||
.. image:: ./docs/_static/screenshot-web.png
|
||||
|
||||
For the client/server mode (remote monitoring through XML-RPC), run the following command on the server:
|
||||
For the client/server mode, run:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances -s
|
||||
|
||||
and this one on the client:
|
||||
on the server side and run:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances -c <ip>
|
||||
|
||||
on the client one.
|
||||
|
||||
You can also detect and display all Glances servers available on your
|
||||
network (or defined in the configuration file) in TUI:
|
||||
network or defined in the configuration file:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances --browser
|
||||
|
||||
or WebUI:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances -w --browser
|
||||
|
||||
It possible to display raw stats on stdout:
|
||||
You can also display raw stats on stdout:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
|
|
@ -159,443 +437,24 @@ or in a JSON format thanks to the stdout-json option (attribute not supported in
|
|||
mem: {"total": 7837949952, "available": 2919079936, "percent": 62.8, "used": 4918870016, "free": 2919079936, "active": 2841214976, "inactive": 3340550144, "buffers": 546799616, "cached": 3068141568, "shared": 788156416}
|
||||
...
|
||||
|
||||
Last but not least, you can use the fetch mode to get a quick look of a machine:
|
||||
and RTFM, always.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances --fetch
|
||||
|
||||
Results look like this:
|
||||
|
||||
.. image:: ./docs/_static/screenshot-fetch.png
|
||||
|
||||
Use Glances as a Python library 📚
|
||||
==================================
|
||||
|
||||
You can access the Glances API by importing the `glances.api` module and creating an
|
||||
instance of the `GlancesAPI` class. This instance provides access to all Glances plugins
|
||||
and their fields. For example, to access the CPU plugin and its total field, you can
|
||||
use the following code:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
>>> from glances import api
|
||||
>>> gl = api.GlancesAPI()
|
||||
>>> gl.cpu
|
||||
{'cpucore': 16,
|
||||
'ctx_switches': 1214157811,
|
||||
'guest': 0.0,
|
||||
'idle': 91.4,
|
||||
'interrupts': 991768733,
|
||||
'iowait': 0.3,
|
||||
'irq': 0.0,
|
||||
'nice': 0.0,
|
||||
'soft_interrupts': 423297898,
|
||||
'steal': 0.0,
|
||||
'syscalls': 0,
|
||||
'system': 5.4,
|
||||
'total': 7.3,
|
||||
'user': 3.0}
|
||||
>>> gl.cpu.get("total")
|
||||
7.3
|
||||
>>> gl.mem.get("used")
|
||||
12498582144
|
||||
>>> gl.auto_unit(gl.mem.get("used"))
|
||||
11.6G
|
||||
|
||||
If the stats return a list of items (like network interfaces or processes), you can
|
||||
access them by their name:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
>>> gl.network.keys()
|
||||
['wlp0s20f3', 'veth33b370c', 'veth19c7711']
|
||||
>>> gl.network.get("wlp0s20f3")
|
||||
{'alias': None,
|
||||
'bytes_all': 362,
|
||||
'bytes_all_gauge': 9242285709,
|
||||
'bytes_all_rate_per_sec': 1032.0,
|
||||
'bytes_recv': 210,
|
||||
'bytes_recv_gauge': 7420522678,
|
||||
'bytes_recv_rate_per_sec': 599.0,
|
||||
'bytes_sent': 152,
|
||||
'bytes_sent_gauge': 1821763031,
|
||||
'bytes_sent_rate_per_sec': 433.0,
|
||||
'interface_name': 'wlp0s20f3',
|
||||
'key': 'interface_name',
|
||||
'speed': 0,
|
||||
'time_since_update': 0.3504955768585205}
|
||||
|
||||
For a complete example of how to use Glances as a library, have a look to the `PythonApi`_.
|
||||
|
||||
Documentation 📜
|
||||
================
|
||||
Documentation
|
||||
=============
|
||||
|
||||
For complete documentation have a look at the readthedocs_ website.
|
||||
|
||||
If you have any question (after RTFM! and the `FAQ`_), please post it on the official Reddit `forum`_ or in GitHub `Discussions`_.
|
||||
If you have any question (after RTFM!), please post it on the official Q&A `forum`_.
|
||||
|
||||
Gateway to other services 🌐
|
||||
============================
|
||||
Gateway to other services
|
||||
=========================
|
||||
|
||||
Glances can export stats to:
|
||||
Glances can export stats to: ``CSV`` file, ``JSON`` file, ``InfluxDB``, ``Cassandra``, ``CouchDB``,
|
||||
``OpenTSDB``, ``Prometheus``, ``StatsD``, ``ElasticSearch``, ``RabbitMQ/ActiveMQ``,
|
||||
``ZeroMQ``, ``Kafka``, ``Riemann``, ``Graphite`` and ``RESTful`` server.
|
||||
|
||||
- files: ``CSV`` and ``JSON``
|
||||
- databases: ``InfluxDB``, ``ElasticSearch``, ``PostgreSQL/TimeScale``, ``Cassandra``, ``CouchDB``, ``OpenTSDB``, ``Prometheus``, ``StatsD``, ``Riemann`` and ``Graphite``
|
||||
- brokers: ``RabbitMQ/ActiveMQ``, ``NATS``, ``ZeroMQ`` and ``Kafka``
|
||||
- others: ``RESTful`` endpoint
|
||||
|
||||
Installation 🚀
|
||||
===============
|
||||
|
||||
There are several methods to test/install Glances on your system. Choose your weapon!
|
||||
|
||||
PyPI: Pip, the standard way
|
||||
---------------------------
|
||||
|
||||
Glances is on ``PyPI``. By using PyPI, you will be using the latest stable version.
|
||||
|
||||
To install Glances, simply use the ``pip`` command line in an virtual environment.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
cd ~
|
||||
python3 -m venv ~/.venv
|
||||
source ~/.venv/bin/activate
|
||||
pip install glances
|
||||
|
||||
*Note*: Python headers are required to install `psutil`_, a Glances
|
||||
dependency. For example, on Debian/Ubuntu **the simplest** is
|
||||
``apt install python3-psutil`` or alternatively need to install first
|
||||
the *python-dev* package and gcc (*python-devel* on Fedora/CentOS/RHEL).
|
||||
For Windows, just install psutil from the binary installation file.
|
||||
|
||||
By default, Glances is installed **without** the Web interface dependencies.
|
||||
|
||||
To install it, use the following command:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install 'glances[web]'
|
||||
|
||||
For a full installation (with all features, see features list bellow):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install 'glances[all]'
|
||||
|
||||
Features list:
|
||||
|
||||
- all: install dependencies for all features
|
||||
- action: install dependencies for action feature
|
||||
- browser: install dependencies for Glances centram browser
|
||||
- cloud: install dependencies for cloud plugin
|
||||
- containers: install dependencies for container plugin
|
||||
- export: install dependencies for all exports modules
|
||||
- gpu: install dependencies for GPU plugin
|
||||
- graph: install dependencies for graph export
|
||||
- ip: install dependencies for IP public option
|
||||
- raid: install dependencies for RAID plugin
|
||||
- sensors: install dependencies for sensors plugin
|
||||
- smart: install dependencies for smart plugin
|
||||
- snmp: install dependencies for SNMP
|
||||
- sparklines: install dependencies for sparklines option
|
||||
- web: install dependencies for Webserver (WebUI) and Web API
|
||||
- wifi: install dependencies for Wifi plugin
|
||||
|
||||
To upgrade Glances to the latest version:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pip install --upgrade glances
|
||||
|
||||
PyPI: PipX, the alternative way
|
||||
-------------------------------
|
||||
|
||||
Install PipX on your system. For example on Ubuntu/Debian:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
sudo apt install pipx
|
||||
|
||||
Then install Glances (with all features):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pipx install 'glances[all]'
|
||||
|
||||
The glances script will be installed in the ~/.local/bin folder.
|
||||
|
||||
To upgrade Glances to the latest version:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pipx upgrade glances
|
||||
|
||||
Docker: the cloudy way
|
||||
----------------------
|
||||
|
||||
Glances Docker images are available. You can use it to monitor your
|
||||
server and all your containers !
|
||||
|
||||
The following tags are available:
|
||||
|
||||
- *latest-full* for a full Alpine Glances image (latest release) with all dependencies
|
||||
- *latest* for a basic Alpine Glances (latest release) version with minimal dependencies (FastAPI and Docker)
|
||||
- *dev* for a basic Alpine Glances image (based on development branch) with all dependencies (Warning: may be instable)
|
||||
- *ubuntu-latest-full* for a full Ubuntu Glances image (latest release) with all dependencies
|
||||
- *ubuntu-latest* for a basic Ubuntu Glances (latest release) version with minimal dependencies (FastAPI and Docker)
|
||||
- *ubuntu-dev* for a basic Ubuntu Glances image (based on development branch) with all dependencies (Warning: may be instable)
|
||||
|
||||
Run last version of Glances container in *console mode*:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
docker run --rm -e TZ="${TZ}" -v /var/run/docker.sock:/var/run/docker.sock:ro -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro --pid host --network host -it nicolargo/glances:latest-full
|
||||
|
||||
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:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
FROM nicolargo/glances:latest
|
||||
COPY glances.conf /root/.config/glances/glances.conf
|
||||
CMD python -m glances -C /root/.config/glances/glances.conf $GLANCES_OPT
|
||||
|
||||
Alternatively, you can specify something along the same lines with
|
||||
docker run options (notice the `GLANCES_OPT` environment
|
||||
variable setting parameters for the glances startup command):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
docker run -e TZ="${TZ}" -v $HOME/.config/glances/glances.conf:/glances.conf:ro -v /var/run/docker.sock:/var/run/docker.sock:ro -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro --pid host -e GLANCES_OPT="-C /glances.conf" -it nicolargo/glances:latest-full
|
||||
|
||||
Where $HOME/.config/glances/glances.conf is a local directory containing your glances.conf file.
|
||||
|
||||
Run the container in *Web server mode*:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
docker run -d --restart="always" -p 61208-61209:61208-61209 -e TZ="${TZ}" -e GLANCES_OPT="-w" -v /var/run/docker.sock:/var/run/docker.sock:ro -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro --pid host nicolargo/glances:latest-full
|
||||
|
||||
For a full list of options, see the Glances `Docker`_ documentation page.
|
||||
|
||||
It is also possible to use a simple Docker compose file (see in ./docker-compose/docker-compose.yml):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
cd ./docker-compose
|
||||
docker-compose up
|
||||
|
||||
It will start a Glances server with WebUI.
|
||||
|
||||
Brew: The missing package manager
|
||||
---------------------------------
|
||||
|
||||
For Linux and Mac OS, it is also possible to install Glances with `Brew`_:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
brew install glances
|
||||
|
||||
GNU/Linux package
|
||||
-----------------
|
||||
|
||||
`Glances` is available on many Linux distributions, so you should be
|
||||
able to install it using your favorite package manager. Nevetheless,
|
||||
i do not recommend it. Be aware that when you use this method the operating
|
||||
system `package`_ for `Glances`may not be the latest version and only basics
|
||||
plugins are enabled.
|
||||
|
||||
Note: The Debian package (and all other Debian-based distributions) do
|
||||
not include anymore the JS statics files used by the Web interface
|
||||
(see ``issue2021``). If you want to add it to your Glances installation,
|
||||
follow the instructions: ``issue2021comment``. In Glances version 4 and
|
||||
higher, the path to the statics file is configurable (see ``issue2612``).
|
||||
|
||||
FreeBSD
|
||||
-------
|
||||
|
||||
On FreeBSD, package name depends on the Python version.
|
||||
|
||||
Check for Python version:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# python --version
|
||||
|
||||
Install the Glances package:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# pkg install pyXY-glances
|
||||
|
||||
Where X and Y are the Major and Minor Values of your Python System.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# Example for Python 3.11.3: pkg install py311-glances
|
||||
|
||||
**NOTE:** Check Glances Binary Package Version for your System Architecture.
|
||||
You must have the Correct Python Version Installed which corresponds to the Glances Binary Package.
|
||||
|
||||
To install Glances from Ports:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# cd /usr/ports/sysutils/py-glances/
|
||||
# make install clean
|
||||
|
||||
macOS
|
||||
-----
|
||||
|
||||
MacOS users can install Glances using ``Homebrew`` or ``MacPorts``.
|
||||
|
||||
Homebrew
|
||||
````````
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ brew install glances
|
||||
|
||||
MacPorts
|
||||
````````
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo port install glances
|
||||
|
||||
Windows
|
||||
-------
|
||||
|
||||
Install `Python`_ for Windows (Python 3.4+ ship with pip) and
|
||||
follow the Glances Pip install procedure.
|
||||
|
||||
Android
|
||||
-------
|
||||
|
||||
You need a rooted device and the `Termux`_ application (available on the
|
||||
Google Play Store).
|
||||
|
||||
Start Termux on your device and enter:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ apt update
|
||||
$ apt upgrade
|
||||
$ apt install clang python
|
||||
$ pip install fastapi uvicorn jinja2
|
||||
$ pip install glances
|
||||
|
||||
And start Glances:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances
|
||||
|
||||
You can also run Glances in server mode (-s or -w) in order to remotely
|
||||
monitor your Android device.
|
||||
|
||||
Source
|
||||
------
|
||||
|
||||
To install Glances from source:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ pip install https://github.com/nicolargo/glances/archive/vX.Y.tar.gz
|
||||
|
||||
*Note*: Python headers are required to install psutil.
|
||||
|
||||
Chef
|
||||
----
|
||||
|
||||
An awesome ``Chef`` cookbook is available to monitor your infrastructure:
|
||||
https://supermarket.chef.io/cookbooks/glances (thanks to Antoine Rouyer)
|
||||
|
||||
Puppet
|
||||
------
|
||||
|
||||
You can install Glances using ``Puppet``: https://github.com/rverchere/puppet-glances
|
||||
|
||||
Ansible
|
||||
-------
|
||||
|
||||
A Glances ``Ansible`` role is available: https://galaxy.ansible.com/zaxos/glances-ansible-role/
|
||||
|
||||
Shell tab completion 🔍
|
||||
=======================
|
||||
|
||||
Glances 4.3.2 and higher includes shell tab autocompletion thanks to the --print-completion option.
|
||||
|
||||
For example, on a Linux operating system with bash shell:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ mkdir -p ${XDG_DATA_HOME:="$HOME/.local/share"}/bash-completion
|
||||
$ glances --print-completion bash > ${XDG_DATA_HOME:="$HOME/.local/share"}/bash-completion/glances
|
||||
$ source ${XDG_DATA_HOME:="$HOME/.local/share"}/bash-completion/glances
|
||||
|
||||
Following shells are supported: bash, zsh and tcsh.
|
||||
|
||||
Requirements 🧩
|
||||
===============
|
||||
|
||||
Glances is developed in Python. A minimal Python version 3.10 or higher
|
||||
should be installed on your system.
|
||||
|
||||
*Note for Python 2 users*
|
||||
|
||||
Glances version 4 or higher do not support Python 2 (and Python 3 < 3.10).
|
||||
Please uses Glances version 3.4.x if you need Python 2 support.
|
||||
|
||||
Dependencies:
|
||||
|
||||
- ``psutil`` (better with latest version)
|
||||
- ``defusedxml`` (in order to monkey patch xmlrpc)
|
||||
- ``packaging`` (for the version comparison)
|
||||
- ``windows-curses`` (Windows Curses implementation) [Windows-only]
|
||||
- ``shtab`` (Shell autocompletion) [All but Windows]
|
||||
- ``jinja2`` (for fetch mode and templating)
|
||||
|
||||
Extra dependencies:
|
||||
|
||||
- ``batinfo`` (for battery monitoring)
|
||||
- ``bernhard`` (for the Riemann export module)
|
||||
- ``cassandra-driver`` (for the Cassandra export module)
|
||||
- ``chevron`` (for the action script feature)
|
||||
- ``docker`` (for the Containers Docker monitoring support)
|
||||
- ``elasticsearch`` (for the Elastic Search export module)
|
||||
- ``FastAPI`` and ``Uvicorn`` (for Web server mode)
|
||||
- ``graphitesender`` (For the Graphite export module)
|
||||
- ``hddtemp`` (for HDD temperature monitoring support) [Linux-only]
|
||||
- ``influxdb`` (for the InfluxDB version 1 export module)
|
||||
- ``influxdb-client`` (for the InfluxDB version 2 export module)
|
||||
- ``kafka-python`` (for the Kafka export module)
|
||||
- ``nats-py`` (for the NATS export module)
|
||||
- ``nvidia-ml-py`` (for the GPU plugin)
|
||||
- ``pycouchdb`` (for the CouchDB export module)
|
||||
- ``pika`` (for the RabbitMQ/ActiveMQ export module)
|
||||
- ``podman`` (for the Containers Podman monitoring support)
|
||||
- ``potsdb`` (for the OpenTSDB export module)
|
||||
- ``prometheus_client`` (for the Prometheus export module)
|
||||
- ``psycopg[binary]`` (for the PostgreSQL/TimeScale export module)
|
||||
- ``pygal`` (for the graph export module)
|
||||
- ``pymdstat`` (for RAID support) [Linux-only]
|
||||
- ``pymongo`` (for the MongoDB export module)
|
||||
- ``pysnmp-lextudio`` (for SNMP support)
|
||||
- ``pySMART.smartx`` (for HDD Smart support) [Linux-only]
|
||||
- ``pyzmq`` (for the ZeroMQ export module)
|
||||
- ``requests`` (for the Ports, Cloud plugins and RESTful export module)
|
||||
- ``sparklines`` (for the Quick Plugin sparklines option)
|
||||
- ``statsd`` (for the StatsD export module)
|
||||
- ``wifi`` (for the wifi plugin) [Linux-only]
|
||||
- ``zeroconf`` (for the autodiscover mode)
|
||||
|
||||
How to contribute ? 🤝
|
||||
======================
|
||||
How to contribute ?
|
||||
===================
|
||||
|
||||
If you want to contribute to the Glances project, read this `wiki`_ page.
|
||||
|
||||
|
|
@ -604,53 +463,29 @@ There is also a chat dedicated to the Glances developers:
|
|||
.. image:: https://badges.gitter.im/Join%20Chat.svg
|
||||
:target: https://gitter.im/nicolargo/glances?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
|
||||
|
||||
Project sponsorship 🙌
|
||||
======================
|
||||
|
||||
You can help me to achieve my goals of improving this open-source project
|
||||
or just say "thank you" by:
|
||||
|
||||
- sponsor me using one-time or monthly tier Github sponsors_ page
|
||||
- send me some pieces of bitcoin: 185KN9FCix3svJYp7JQM7hRMfSKyeaJR4X
|
||||
- buy me a gift on my wishlist_ page
|
||||
|
||||
Any and all contributions are greatly appreciated.
|
||||
|
||||
Authors and Contributors 🔥
|
||||
===========================
|
||||
Author
|
||||
======
|
||||
|
||||
Nicolas Hennion (@nicolargo) <nicolas@nicolargo.com>
|
||||
|
||||
.. image:: https://img.shields.io/twitter/url/https/twitter.com/cloudposse.svg?style=social&label=Follow%20%40nicolargo
|
||||
:target: https://twitter.com/nicolargo
|
||||
|
||||
License 📜
|
||||
==========
|
||||
License
|
||||
=======
|
||||
|
||||
Glances is distributed under the LGPL version 3 license. See ``COPYING`` for more details.
|
||||
|
||||
More stars ! 🌟
|
||||
===============
|
||||
|
||||
Please give us a star on `GitHub`_ if you like this project.
|
||||
|
||||
.. image:: https://api.star-history.com/svg?repos=nicolargo/glances&type=Date
|
||||
:target: https://www.star-history.com/#nicolargo/glances&Date
|
||||
:alt: Star history
|
||||
|
||||
.. _psutil: https://github.com/giampaolo/psutil
|
||||
.. _Brew: https://formulae.brew.sh/formula/glances
|
||||
.. _glancesautoinstall: https://github.com/nicolargo/glancesautoinstall
|
||||
.. _Python: https://www.python.org/getit/
|
||||
.. _Termux: https://play.google.com/store/apps/details?id=com.termux
|
||||
.. _readthedocs: https://glances.readthedocs.io/
|
||||
.. _forum: https://www.reddit.com/r/glances/
|
||||
.. _forum: https://groups.google.com/forum/?hl=en#!forum/glances-users
|
||||
.. _wiki: https://github.com/nicolargo/glances/wiki/How-to-contribute-to-Glances-%3F
|
||||
.. _package: https://repology.org/project/glances/versions
|
||||
.. _sponsors: https://github.com/sponsors/nicolargo
|
||||
.. _wishlist: https://www.amazon.fr/hz/wishlist/ls/BWAAQKWFR3FI?ref_=wl_share
|
||||
.. _Docker: https://github.com/nicolargo/glances/blob/master/docs/docker.rst
|
||||
.. _GitHub: https://github.com/nicolargo/glances
|
||||
.. _PythonApi: https://glances.readthedocs.io/en/develop/api/python.html
|
||||
.. _RestfulApi: https://glances.readthedocs.io/en/develop/api/restful.html
|
||||
.. _FAQ: https://github.com/nicolargo/glances/blob/develop/docs/faq.rst
|
||||
.. _Discussions: https://github.com/nicolargo/glances/discussions
|
||||
.. _issue2021: https://github.com/nicolargo/glances/issues/2021#issuecomment-1197831157
|
||||
.. _issue2021comment: https://github.com/nicolargo/glances/issues/2021#issuecomment-1197831157
|
||||
.. _Docker: https://github.com/nicolargo/glances/blob/develop/docs/docker.rst
|
||||
|
|
|
|||
|
|
@ -2,10 +2,13 @@
|
|||
|
||||
## 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 |
|
||||
| ------- | ------------------------ |
|
||||
| 4.x | :white_check_mark: |
|
||||
| < 4.0 | :x: |
|
||||
| 3.x | :white_check_mark: |
|
||||
| < 3.0 | :x: |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
|
|
@ -28,3 +31,4 @@ 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.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,237 +0,0 @@
|
|||
# This file was autogenerated by uv via the following command:
|
||||
# uv export --no-emit-workspace --no-hashes --all-extras --no-group dev --output-file all-requirements.txt
|
||||
annotated-doc==0.0.4
|
||||
# via fastapi
|
||||
annotated-types==0.7.0
|
||||
# via pydantic
|
||||
anyio==4.12.0
|
||||
# via
|
||||
# elasticsearch
|
||||
# starlette
|
||||
batinfo==0.4.2 ; sys_platform == 'linux'
|
||||
# via glances
|
||||
bernhard==0.2.6
|
||||
# via glances
|
||||
cassandra-driver==3.29.3
|
||||
# via glances
|
||||
certifi==2025.11.12
|
||||
# via
|
||||
# elastic-transport
|
||||
# influxdb-client
|
||||
# influxdb3-python
|
||||
# requests
|
||||
cffi==2.0.0 ; implementation_name == 'pypy' or platform_python_implementation != 'PyPy'
|
||||
# via
|
||||
# cryptography
|
||||
# pyzmq
|
||||
chardet==5.2.0
|
||||
# via pysmart
|
||||
charset-normalizer==3.4.4
|
||||
# via requests
|
||||
chevron==0.14.0
|
||||
# via glances
|
||||
click==8.1.8
|
||||
# via
|
||||
# geomet
|
||||
# uvicorn
|
||||
colorama==0.4.6 ; sys_platform == 'win32'
|
||||
# via click
|
||||
cryptography==46.0.3
|
||||
# via pysnmpcrypto
|
||||
defusedxml==0.7.1
|
||||
# via glances
|
||||
dnspython==2.8.0
|
||||
# via pymongo
|
||||
docker==7.1.0
|
||||
# via glances
|
||||
elastic-transport==9.2.1
|
||||
# via elasticsearch
|
||||
elasticsearch==9.2.1
|
||||
# via glances
|
||||
exceptiongroup==1.2.2 ; python_full_version < '3.11'
|
||||
# via anyio
|
||||
fastapi==0.128.0
|
||||
# via glances
|
||||
geomet==1.1.0
|
||||
# via cassandra-driver
|
||||
graphitesender==0.11.2
|
||||
# via glances
|
||||
h11==0.16.0
|
||||
# via uvicorn
|
||||
humanfriendly==10.0
|
||||
# via pysmart
|
||||
ibm-cloud-sdk-core==3.24.2
|
||||
# via ibmcloudant
|
||||
ibmcloudant==0.11.2
|
||||
# via glances
|
||||
idna==3.11
|
||||
# via
|
||||
# anyio
|
||||
# requests
|
||||
ifaddr==0.2.0
|
||||
# via zeroconf
|
||||
importlib-metadata==8.7.1
|
||||
# via pygal
|
||||
influxdb==5.3.2
|
||||
# via glances
|
||||
influxdb-client==1.49.0
|
||||
# via glances
|
||||
influxdb3-python==0.16.0
|
||||
# via glances
|
||||
jinja2==3.1.6
|
||||
# via
|
||||
# glances
|
||||
# pysmi-lextudio
|
||||
kafka-python==2.3.0
|
||||
# via glances
|
||||
markupsafe==3.0.3
|
||||
# via jinja2
|
||||
msgpack==1.1.2
|
||||
# via influxdb
|
||||
nats-py==2.12.0
|
||||
# via glances
|
||||
nvidia-ml-py==13.590.44
|
||||
# via glances
|
||||
packaging==25.0
|
||||
# via glances
|
||||
paho-mqtt==2.1.0
|
||||
# via glances
|
||||
pbkdf2==1.3
|
||||
# via wifi
|
||||
pika==1.3.2
|
||||
# via glances
|
||||
ply==3.11
|
||||
# via pysmi-lextudio
|
||||
podman==5.6.0
|
||||
# via glances
|
||||
potsdb==1.0.3
|
||||
# via glances
|
||||
prometheus-client==0.23.1
|
||||
# via glances
|
||||
protobuf==6.33.2
|
||||
# via bernhard
|
||||
psutil==7.2.1
|
||||
# via glances
|
||||
psycopg==3.3.2
|
||||
# via glances
|
||||
psycopg-binary==3.3.2 ; implementation_name != 'pypy'
|
||||
# via psycopg
|
||||
pyarrow==22.0.0
|
||||
# via influxdb3-python
|
||||
pyasn1==0.6.1
|
||||
# via pysnmp-lextudio
|
||||
pycparser==2.23 ; (implementation_name != 'PyPy' and platform_python_implementation != 'PyPy') or (implementation_name == 'pypy' and platform_python_implementation == 'PyPy')
|
||||
# via cffi
|
||||
pydantic==2.12.5
|
||||
# via fastapi
|
||||
pydantic-core==2.41.5
|
||||
# via pydantic
|
||||
pygal==3.1.0
|
||||
# via glances
|
||||
pyjwt==2.10.1
|
||||
# via
|
||||
# ibm-cloud-sdk-core
|
||||
# ibmcloudant
|
||||
pymdstat==0.4.3
|
||||
# via glances
|
||||
pymongo==4.15.5
|
||||
# via glances
|
||||
pyreadline3==3.5.4 ; sys_platform == 'win32'
|
||||
# via humanfriendly
|
||||
pysmart==1.4.2
|
||||
# via glances
|
||||
pysmi-lextudio==1.4.3
|
||||
# via pysnmp-lextudio
|
||||
pysnmp-lextudio==6.1.2
|
||||
# via glances
|
||||
pysnmpcrypto==0.0.4
|
||||
# via pysnmp-lextudio
|
||||
python-dateutil==2.9.0.post0
|
||||
# via
|
||||
# elasticsearch
|
||||
# glances
|
||||
# ibm-cloud-sdk-core
|
||||
# ibmcloudant
|
||||
# influxdb
|
||||
# influxdb-client
|
||||
# influxdb3-python
|
||||
pytz==2025.2
|
||||
# via influxdb
|
||||
pywin32==311 ; sys_platform == 'win32'
|
||||
# via docker
|
||||
pyzmq==27.1.0
|
||||
# via glances
|
||||
reactivex==4.1.0
|
||||
# via
|
||||
# influxdb-client
|
||||
# influxdb3-python
|
||||
requests==2.32.5
|
||||
# via
|
||||
# docker
|
||||
# glances
|
||||
# ibm-cloud-sdk-core
|
||||
# ibmcloudant
|
||||
# influxdb
|
||||
# podman
|
||||
# pysmi-lextudio
|
||||
setuptools==80.9.0
|
||||
# via
|
||||
# influxdb-client
|
||||
# wifi
|
||||
shtab==1.8.0 ; sys_platform != 'win32'
|
||||
# via glances
|
||||
six==1.17.0
|
||||
# via
|
||||
# glances
|
||||
# influxdb
|
||||
# python-dateutil
|
||||
sniffio==1.3.1
|
||||
# via
|
||||
# elastic-transport
|
||||
# elasticsearch
|
||||
sparklines==0.7.0
|
||||
# via glances
|
||||
starlette==0.50.0
|
||||
# via fastapi
|
||||
statsd==4.0.1
|
||||
# via glances
|
||||
termcolor==3.3.0
|
||||
# via sparklines
|
||||
tomli==2.0.2 ; python_full_version < '3.11'
|
||||
# via podman
|
||||
typing-extensions==4.15.0
|
||||
# via
|
||||
# anyio
|
||||
# cryptography
|
||||
# elasticsearch
|
||||
# fastapi
|
||||
# psycopg
|
||||
# pydantic
|
||||
# pydantic-core
|
||||
# reactivex
|
||||
# starlette
|
||||
# typing-inspection
|
||||
# uvicorn
|
||||
typing-inspection==0.4.2
|
||||
# via pydantic
|
||||
tzdata==2025.3 ; sys_platform == 'win32'
|
||||
# via psycopg
|
||||
urllib3==2.6.2
|
||||
# via
|
||||
# docker
|
||||
# elastic-transport
|
||||
# ibm-cloud-sdk-core
|
||||
# influxdb-client
|
||||
# influxdb3-python
|
||||
# podman
|
||||
# requests
|
||||
uvicorn==0.40.0
|
||||
# via glances
|
||||
wifi==0.3.8
|
||||
# via glances
|
||||
windows-curses==2.4.1 ; sys_platform == 'win32'
|
||||
# via glances
|
||||
zeroconf==0.148.0
|
||||
# via glances
|
||||
zipp==3.23.0
|
||||
# via importlib-metadata
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
✨ {{ gl.system['hostname'] }}{{ ' - ' + gl.ip['address'] if gl.ip['address'] else '' }}
|
||||
⚙️ {{ gl.system['hr_name'] }} | Uptime: {{ gl.uptime }}
|
||||
|
||||
💡 LOAD {{ '%0.2f'| format(gl.load['min1']) }} {{ '%0.2f'| format(gl.load['min5']) }} {{ '%0.2f'| format(gl.load['min15']) }}
|
||||
⚡ CPU {{ gl.bar(gl.cpu['total']) }} {{ gl.cpu['total'] }}% of {{ gl.core['log'] }} cores
|
||||
🧠 MEM {{ gl.bar(gl.mem['percent']) }} {{ gl.mem['percent'] }}% ({{ gl.auto_unit(gl.mem['used']) }} {{ gl.auto_unit(gl.mem['total']) }})
|
||||
{% for fs in gl.fs.keys() %}💾 {% if loop.index == 1 %}DISK{% else %} {% endif %} {{ gl.bar(gl.fs[fs]['percent']) }} {{ gl.fs[fs]['percent'] }}% ({{ gl.auto_unit(gl.fs[fs]['used']) }} {{ gl.auto_unit(gl.fs[fs]['size']) }}) for {{ fs }}
|
||||
{% endfor %}{% for net in gl.network.keys() %}📡 {% if loop.index == 1 %}NET{% else %} {% endif %} ↓ {{ gl.auto_unit(gl.network[net]['bytes_recv_rate_per_sec']) }}b/s ↑ {{ gl.auto_unit(gl.network[net]['bytes_sent_rate_per_sec']) }}b/s for {{ net }}
|
||||
{% endfor %}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
_____ _
|
||||
/ ____| |
|
||||
| | __| | __ _ _ __ ___ ___ ___
|
||||
| | |_ | |/ _` | '_ \ / __/ _ \/ __|
|
||||
| |__| | | (_| | | | | (_| __/\__
|
||||
\_____|_|\__,_|_| |_|\___\___||___/
|
||||
|
||||
|
||||
✨ {{ gl.system['hostname'] }}{{ ' - ' + gl.ip['address'] if gl.ip['address'] else '' }}
|
||||
⚙️ {{ gl.system['hr_name'] }} | Uptime: {{ gl.uptime }}
|
||||
|
||||
💡 LOAD {{ '%0.2f'| format(gl.load['min1']) }} {{ '%0.2f'| format(gl.load['min5']) }} {{ '%0.2f'| format(gl.load['min15']) }}
|
||||
⚡ CPU {{ gl.bar(gl.cpu['total']) }} {{ gl.cpu['total'] }}% of {{ gl.core['log'] }} cores
|
||||
🧠 MEM {{ gl.bar(gl.mem['percent']) }} {{ gl.mem['percent'] }}% ({{ gl.auto_unit(gl.mem['used']) }} {{ gl.auto_unit(gl.mem['total']) }})
|
||||
{% for fs in gl.fs.keys() %}💾 {% if loop.index == 1 %}DISK{% else %} {% endif %} {{ gl.bar(gl.fs[fs]['percent']) }} {{ gl.fs[fs]['percent'] }}% ({{ gl.auto_unit(gl.fs[fs]['used']) }} {{ gl.auto_unit(gl.fs[fs]['size']) }}) for {{ fs }}
|
||||
{% endfor %}{% for net in gl.network.keys() %}📡 {% if loop.index == 1 %}NET{% else %} {% endif %} ↓ {{ gl.auto_unit(gl.network[net]['bytes_recv_rate_per_sec']) }}b/s ↑ {{ gl.auto_unit(gl.network[net]['bytes_sent_rate_per_sec']) }}b/s for {{ net }}
|
||||
{% endfor %}
|
||||
🔥 TOP PROCESS by CPU
|
||||
{% for process in gl.top_process() %}{{ loop.index }}️⃣ {{ process['name'][:20] }}{{ ' ' * (20 - process['name'][:20] | length) }} ⚡ {{ process['cpu_percent'] }}% CPU{{ ' ' * (8 - (gl.auto_unit(process['cpu_percent']) | length)) }} 🧠 {{ gl.auto_unit(process['memory_info']['rss']) }}B MEM
|
||||
{% endfor %}
|
||||
🔥 TOP PROCESS by MEM
|
||||
{% for process in gl.top_process(sorted_by='memory_percent', sorted_by_secondary='cpu_percent') %}{{ loop.index }}️⃣ {{ process['name'][:20] }}{{ ' ' * (20 - process['name'][:20] | length) }} 🧠 {{ gl.auto_unit(process['memory_info']['rss']) }}B MEM{{ ' ' * (7 - (gl.auto_unit(process['memory_info']['rss']) | length)) }} ⚡ {{ process['cpu_percent'] }}% CPU
|
||||
{% endfor %}
|
||||
|
|
@ -13,75 +13,28 @@ check_update=true
|
|||
# Default is 1200 values (~1h with the default refresh rate)
|
||||
history_size=1200
|
||||
# Set the way Glances should display the date (default is %Y-%m-%d %H:%M:%S %Z)
|
||||
#strftime_format=%Y-%m-%d %H:%M:%S %Z
|
||||
# Define external directory for loading additional plugins
|
||||
# The layout follows the glances standard for plugin definitions
|
||||
#plugin_dir=/home/user/dev/plugins
|
||||
#strftime_format="%Y-%m-%d %H:%M:%S %Z"
|
||||
|
||||
##############################################################################
|
||||
# User interface
|
||||
##############################################################################
|
||||
|
||||
[outputs]
|
||||
# Options for all UIs
|
||||
#--------------------
|
||||
# Separator in the Curses and WebUI interface (between top and others plugins)
|
||||
#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)
|
||||
#max_processes_display=25
|
||||
#
|
||||
# Specifics options for TUI
|
||||
#--------------------------
|
||||
# Disable background color
|
||||
#disable_bg=True
|
||||
#
|
||||
# Specifics options for WebUI
|
||||
#----------------------------
|
||||
# Set URL prefix for the WebUI and the API
|
||||
# Example: url_prefix=/glances/ => http://localhost/glances/
|
||||
# Note: The final / is mandatory
|
||||
# Default is no prefix (/)
|
||||
#url_prefix=/glances/
|
||||
# Set root path for WebUI statics files
|
||||
# Why ? On Debian system, WebUI statics files are not provided.
|
||||
# You can download it in a specific folder
|
||||
# thanks to https://github.com/nicolargo/glances/issues/2021
|
||||
# then configure this folder with the webui_root_path key
|
||||
# Default is folder where glances_restful_api.py is hosted
|
||||
#webui_root_path=
|
||||
# CORS options
|
||||
# Comma separated list of origins that should be permitted to make cross-origin requests.
|
||||
# Default is *
|
||||
#cors_origins=*
|
||||
# Indicate that cookies should be supported for cross-origin requests.
|
||||
# Default is True
|
||||
#cors_credentials=True
|
||||
# Comma separated list of HTTP methods that should be allowed for cross-origin requests.
|
||||
# Default is *
|
||||
#cors_methods=*
|
||||
# Comma separated list of HTTP request headers that should be supported for cross-origin requests.
|
||||
# Default is *
|
||||
#cors_headers=*
|
||||
# Define SSL files (keyfile_password is optional)
|
||||
#ssl_keyfile_password=kfp
|
||||
#ssl_keyfile=./glances.local+3-key.pem
|
||||
#ssl_certfile=./glances.local+3.pem
|
||||
# Theme name for the Curses interface: black or white
|
||||
curse_theme=black
|
||||
# Limit the number of processes to display in the WebUI
|
||||
max_processes_display=30
|
||||
|
||||
##############################################################################
|
||||
# Plugins
|
||||
# plugins
|
||||
##############################################################################
|
||||
|
||||
[quicklook]
|
||||
# Set to true to disable a plugin
|
||||
# Note: you can also disable it from the command line (see --disable-plugin <plugin_name>)
|
||||
disable=False
|
||||
# Stats list (default is cpu,mem,load)
|
||||
# Available stats are: cpu,mem,load,swap
|
||||
list=cpu,mem,load
|
||||
# Graphical bar char used in the terminal user interface (default is |)
|
||||
bar_char=|
|
||||
# Graphical percentage char used in the terminal user interface (default is |)
|
||||
percentage_char=|
|
||||
# Define CPU, MEM and SWAP thresholds in %
|
||||
cpu_careful=50
|
||||
cpu_warning=70
|
||||
|
|
@ -92,11 +45,6 @@ mem_critical=90
|
|||
swap_careful=50
|
||||
swap_warning=70
|
||||
swap_critical=90
|
||||
# Source: http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages
|
||||
# With 1 CPU core, the load should be lower than 1.00 ~ 100%
|
||||
load_careful=70
|
||||
load_warning=100
|
||||
load_critical=500
|
||||
|
||||
[system]
|
||||
# This plugin display the first line in the Glances UI with:
|
||||
|
|
@ -105,9 +53,6 @@ load_critical=500
|
|||
disable=False
|
||||
# Default refresh rate is 60 seconds
|
||||
#refresh=60
|
||||
# System information to display (a string where {key} will be replaced by the value)
|
||||
# Available information are: hostname, os_name, os_version, os_arch, linux_distro, platform
|
||||
#system_info_msg= | My {os_name} system |
|
||||
|
||||
[cpu]
|
||||
disable=False
|
||||
|
|
@ -131,7 +76,7 @@ user_careful=50
|
|||
user_warning=70
|
||||
user_critical=90
|
||||
user_log=False
|
||||
#user_critical_action=echo "{{time}} User CPU {{user}} higher than {{critical}}" > /tmp/cpu.alert
|
||||
#user_critical_action=echo {{user}} {{value}} {{max}} > /tmp/cpu.alert
|
||||
#
|
||||
system_careful=50
|
||||
system_warning=70
|
||||
|
|
@ -144,18 +89,13 @@ steal_critical=90
|
|||
#steal_log=True
|
||||
#
|
||||
# Context switch limit (core / second)
|
||||
# Leave commented to just use the default config critical is 50000*(Logical CPU cores)
|
||||
# Leave commented to just use the default config (critical is 50000*# (Logical CPU cores)
|
||||
#ctx_switches_careful=10000
|
||||
#ctx_switches_warning=12000
|
||||
#ctx_switches_critical=14000
|
||||
|
||||
[percpu]
|
||||
disable=False
|
||||
# Define the maximum number of CPU displayed at a time
|
||||
# If the number of CPU is higher than the one configured in max_cpu_display then:
|
||||
# - display top 'max_cpu_display' (sorted by CPU consumption)
|
||||
# - a last line will be added with the mean of all other CPUs
|
||||
max_cpu_display=4
|
||||
# Define CPU thresholds in %
|
||||
# Default values if not defined: 50/70/90
|
||||
user_careful=50
|
||||
|
|
@ -178,21 +118,15 @@ proc_critical=90
|
|||
mem_careful=50
|
||||
mem_warning=70
|
||||
mem_critical=90
|
||||
# Temperature
|
||||
temperature_careful=60
|
||||
temperature_warning=70
|
||||
temperature_critical=80
|
||||
|
||||
[mem]
|
||||
disable=False
|
||||
# Display available memory instead of used memory
|
||||
#available=True
|
||||
# Define RAM thresholds in %
|
||||
# Default values if not defined: 50/70/90
|
||||
careful=50
|
||||
#careful_action_repeat=echo {{percent}} >> /tmp/memory.alert
|
||||
warning=70
|
||||
critical=90
|
||||
#critical_action_repeat=echo "{{time}} {{percent}} higher than {{critical}}"" >> /tmp/memory.alert
|
||||
|
||||
[memswap]
|
||||
disable=False
|
||||
|
|
@ -201,7 +135,6 @@ disable=False
|
|||
careful=50
|
||||
warning=70
|
||||
critical=90
|
||||
#warning_action=echo "{{time}} {{percent}} higher than {{warning}}"" > /tmp/memory.alert
|
||||
|
||||
[load]
|
||||
disable=False
|
||||
|
|
@ -226,18 +159,11 @@ tx_careful=70
|
|||
tx_warning=80
|
||||
tx_critical=90
|
||||
# Define the list of hidden network interfaces (comma-separated regexp)
|
||||
hide=docker.*,lo
|
||||
#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
|
||||
# Automatically hide interface with no IP address (default is False)
|
||||
hide_no_ip=True
|
||||
# Set hide_zero to True to automatically hide interface with no traffic
|
||||
hide_zero=False
|
||||
# Set hide_threshold_bytes to an integer value to automatically hide
|
||||
# interface with traffic less or equal than this value
|
||||
#hide_threshold_bytes=0
|
||||
# WLAN 0 alias
|
||||
#wlan0_alias=Wireless
|
||||
# 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
|
||||
|
|
@ -248,38 +174,24 @@ hide_zero=False
|
|||
#wlan0_tx_warning=900000
|
||||
#wlan0_tx_critical=1000000
|
||||
#wlan0_tx_log=True
|
||||
#wlan0_rx_critical_action=echo "{{time}} {{interface_name}} RX {{bytes_recv_rate_per_sec}}Bps" > /tmp/network.alert
|
||||
# Alias for network interface name
|
||||
#alias=wlp0s20f3:WIFI
|
||||
|
||||
[ip]
|
||||
# Disable display of private IP address
|
||||
disable=False
|
||||
# Configure the online service where public IP address information will be downloaded
|
||||
# - public_disabled: Disable public IP address information (set to True for offline platform)
|
||||
# - public_refresh_interval: Refresh interval between to calls to the online service
|
||||
# - public_api: URL of the API (the API should return an JSON object)
|
||||
# - public_username: Login for the online service (if needed)
|
||||
# - public_password: Password for the online service (if needed)
|
||||
# - public_field: Field name of the public IP address in onlibe service JSON message
|
||||
# - public_template: Template to build the public message
|
||||
#
|
||||
# Example for IPLeak service:
|
||||
# public_api=https://ipv4.ipleak.net/json/
|
||||
# public_field=ip
|
||||
# public_template={ip} {continent_name}/{country_name}/{city_name}
|
||||
#
|
||||
public_disabled=True
|
||||
public_refresh_interval=300
|
||||
public_api=https://ipv4.ipleak.net/json/
|
||||
#public_username=<myname>
|
||||
#public_password=<mysecret>
|
||||
public_field=ip
|
||||
public_template={continent_name}/{country_name}/{city_name}
|
||||
public_ip_disabled=False
|
||||
# Configuration for the Censys online service
|
||||
# Need to create an aacount: https://censys.io/login
|
||||
censys_url=https://search.censys.io/api
|
||||
# Get your own credential here: https://search.censys.io/account/api
|
||||
# Enter your credential and uncomment the following lines
|
||||
#censys_username=<censys_api_id>
|
||||
#censys_password=<censys_secret>
|
||||
# List of fields to be displayed in user interface (comma separated)
|
||||
censys_fields=location:continent,location:country,autonomous_system:name
|
||||
|
||||
[connections]
|
||||
# Display additional information about TCP connections
|
||||
# This plugin is disabled by default because it consumes lots of CPU
|
||||
# This plugin is disabled by default
|
||||
disable=True
|
||||
# nf_conntrack thresholds in %
|
||||
nf_conntrack_percent_careful=70
|
||||
|
|
@ -287,8 +199,12 @@ nf_conntrack_percent_warning=80
|
|||
nf_conntrack_percent_critical=90
|
||||
|
||||
[wifi]
|
||||
disable=False
|
||||
# Define SIGNAL thresholds in dBm (lower is better...)
|
||||
disable=True
|
||||
# Define the list of hidden wireless network interfaces (comma-separated regexp)
|
||||
hide=lo,docker.*
|
||||
# Define the list of wireless network interfaces to be show (comma-separated)
|
||||
#show=docker.*
|
||||
# Define SIGNAL thresholds in db (lower is better...)
|
||||
# Based on: http://serverfault.com/questions/501025/industry-standard-for-minimum-wifi-signal-strength
|
||||
careful=-65
|
||||
warning=-75
|
||||
|
|
@ -299,63 +215,26 @@ disable=False
|
|||
# Define the list of hidden disks (comma-separated regexp)
|
||||
#hide=sda2,sda5,loop.*
|
||||
hide=loop.*,/dev/loop.*
|
||||
# Set hide_zero to True to automatically hide disk with no read/write
|
||||
hide_zero=False
|
||||
# Set hide_threshold_bytes to an integer value to automatically hide
|
||||
# interface with traffic less or equal than this value
|
||||
#hide_threshold_bytes=0
|
||||
# Define the list of disks to be show (comma-separated)
|
||||
#show=sda.*
|
||||
# Alias for sda1 and sdb1
|
||||
#alias=sda1:SystemDisk,sdb1:DataDisk
|
||||
# Default latency thresholds (in ms) (rx = read / tx = write)
|
||||
rx_latency_careful=10
|
||||
rx_latency_warning=20
|
||||
rx_latency_critical=50
|
||||
tx_latency_careful=10
|
||||
tx_latency_warning=20
|
||||
tx_latency_critical=50
|
||||
# Set latency thresholds (latency in ms) for a given disk name (rx = read / tx = write)
|
||||
# dm-0_rx_latency_careful=10
|
||||
# dm-0_rx_latency_warning=20
|
||||
# dm-0_rx_latency_critical=50
|
||||
# dm-0_rx_latency_log=False
|
||||
# dm-0_tx_latency_careful=10
|
||||
# dm-0_tx_latency_warning=20
|
||||
# dm-0_tx_latency_critical=50
|
||||
# dm-0_tx_latency_log=False
|
||||
# There is no default bitrate thresholds for disk (because it is not possible to know the disk speed)
|
||||
# Set bitrate thresholds (in bytes per second) for a given disk name (rx = read / tx = write)
|
||||
#dm-0_rx_careful=4000000000
|
||||
#dm-0_rx_warning=5000000000
|
||||
#dm-0_rx_critical=6000000000
|
||||
#dm-0_rx_log=False
|
||||
#dm-0_tx_careful=700000000
|
||||
#dm-0_tx_warning=900000000
|
||||
#dm-0_tx_critical=1000000000
|
||||
#dm-0_tx_log=False
|
||||
# Alias for sda1
|
||||
#sda1_alias=InternalDisk
|
||||
|
||||
[fs]
|
||||
disable=False
|
||||
# Define the list of file system to hide (comma-separated regexp)
|
||||
hide=/boot.*,.*/snap.*
|
||||
hide=/boot.*,/snap.*
|
||||
# Define the list of file system to show (comma-separated regexp)
|
||||
#show=/,/srv
|
||||
# Define filesystem space thresholds in %
|
||||
# Default values if not defined: 50/70/90
|
||||
# It is also possible to define per mount point value
|
||||
# Example: /_careful=40
|
||||
careful=50
|
||||
warning=70
|
||||
critical=90
|
||||
# It is also possible to define per mount point value
|
||||
# Example: /_careful=40
|
||||
#/_careful=1
|
||||
#/_warning=5
|
||||
#/_critical=10
|
||||
#/_critical_action=echo "{{time}} {{mnt_point}} filesystem space {{percent}}% higher than {{critical}}%" > /tmp/fs.alert
|
||||
# Allow additional file system types (comma-separated FS type)
|
||||
#allow=shm
|
||||
# Alias for root file system
|
||||
#alias=/:Root,/zfspool:ZFS
|
||||
|
||||
[irq]
|
||||
# Documentation: https://glances.readthedocs.io/en/latest/aoa/irq.html
|
||||
|
|
@ -398,12 +277,6 @@ disable=True
|
|||
# Documentation: https://glances.readthedocs.io/en/latest/aoa/smart.html
|
||||
# This plugin is disabled by default
|
||||
disable=True
|
||||
# Define the list of sensors to hide (comma-separated regexp)
|
||||
#hide=.*Hide_this_driver.*
|
||||
# Define the list of sensors to show (comma-separated regexp)
|
||||
#show=.*Drive_Temperature.*
|
||||
# List of attributes to hide (comma separated)
|
||||
#hide_attributes=Self-tests,Errors
|
||||
|
||||
[hddtemp]
|
||||
disable=False
|
||||
|
|
@ -414,39 +287,32 @@ port=7634
|
|||
[sensors]
|
||||
# Documentation: https://glances.readthedocs.io/en/latest/aoa/sensors.html
|
||||
disable=False
|
||||
# Set the refresh multiplicator for the sensors
|
||||
# By default refresh every Glances refresh * 5 (increase to reduce CPU consumption)
|
||||
#refresh=5
|
||||
# Hide some sensors (comma separated list of regexp)
|
||||
hide=unknown.*
|
||||
# Show only the following sensors (comma separated list of regexp)
|
||||
#show=CPU.*
|
||||
# By default refresh every refresh time * 2
|
||||
#refresh=6
|
||||
# Hide some sensors
|
||||
#hide=ambient
|
||||
# Sensors core thresholds (in Celsius...)
|
||||
# By default values are grabbed from the system
|
||||
# Overwrite thresholds for a specific sensor
|
||||
# temperature_core_Ambient_careful=40
|
||||
# temperature_core_Ambient_warning=60
|
||||
# temperature_core_Ambient_critical=85
|
||||
# temperature_core_Ambient_log=True
|
||||
# temperature_core_Ambient_critical_action=echo "{{time}} {{label}} temperature {{value}}{{unit}} higher than {{critical}}{{unit}}" > /tmp/temperature.alert
|
||||
# Overwrite thresholds for a specific type of sensor
|
||||
#temperature_core_careful=45
|
||||
#temperature_core_warning=65
|
||||
# Default values are grabbed from the system
|
||||
#temperature_core_careful=60
|
||||
#temperature_core_warning=70
|
||||
#temperature_core_critical=80
|
||||
# Temperatures threshold in °C for hddtemp
|
||||
# Default values if not defined: 45/52/60
|
||||
#temperature_hdd_careful=45
|
||||
#temperature_hdd_warning=52
|
||||
#temperature_hdd_critical=60
|
||||
temperature_hdd_careful=45
|
||||
temperature_hdd_warning=52
|
||||
temperature_hdd_critical=60
|
||||
# Battery threshold in %
|
||||
# Default values if not defined: 70/80/90
|
||||
#battery_careful=70
|
||||
#battery_warning=80
|
||||
#battery_critical=90
|
||||
# Fan speed threshold in RPM
|
||||
#fan_speed_careful=100
|
||||
battery_careful=80
|
||||
battery_warning=90
|
||||
battery_critical=95
|
||||
# Sensors alias
|
||||
#alias=core 0:CPU Core 0,core 1:CPU Core 1
|
||||
#temp1_alias=Motherboard 0
|
||||
#temp2_alias=Motherboard 1
|
||||
#core 0_temperature_core_alias=CPU Core 0 temp
|
||||
#core 0_fans_speed_alias=CPU Core 0 fan
|
||||
#or
|
||||
#core 0_alias=CPU Core 0
|
||||
#core 1_alias=CPU Core 1
|
||||
|
||||
[processcount]
|
||||
disable=False
|
||||
|
|
@ -459,12 +325,6 @@ disable=False
|
|||
# Should be one of the following:
|
||||
# cpu_percent, memory_percent, io_counters, name, cpu_times, username
|
||||
#sort_key=memory_percent
|
||||
# List of stats to disable (not grabed and not display)
|
||||
# Stats that can be disabled: cpu_percent,memory_info,memory_percent,username,cpu_times,num_threads,nice,status,io_counters,cmdline
|
||||
# Stats that can not be disable: pid,name
|
||||
#disable_stats=cpu_percent,memory_info,memory_percent,username,cpu_times,num_threads,nice,status,io_counters,cmdline
|
||||
# Disable display of virtual memory
|
||||
#disable_virtual_memory=True
|
||||
# Define CPU/MEM (per process) thresholds in %
|
||||
# Default values if not defined: 50/70/90
|
||||
cpu_careful=50
|
||||
|
|
@ -475,26 +335,15 @@ mem_warning=70
|
|||
mem_critical=90
|
||||
#
|
||||
# Nice priorities range from -20 to 19.
|
||||
# Configure nice levels using a comma-separated list.
|
||||
# Configure nice levels using a comma separated list.
|
||||
#
|
||||
# Nice: Example 1, non-zero is warning (default behavior)
|
||||
nice_warning=-20,-19,-18,-17,-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
||||
#
|
||||
# Nice: Example 2, low priority processes escalate from careful to critical
|
||||
#nice_ok=O
|
||||
#nice_careful=1,2,3,4,5,6,7,8,9
|
||||
#nice_warning=10,11,12,13,14
|
||||
#nice_critical=15,16,17,18,19
|
||||
#
|
||||
# Status: define threshold regarding the process status (first letter of process status)
|
||||
# R: Running, S: Sleeping, Z: Zombie (complete list here https://psutil.readthedocs.io/en/latest/#process-status-constants)
|
||||
status_ok=R,W,P,I
|
||||
status_critical=Z,D
|
||||
# Define the list of processes to export using:
|
||||
# a comma-separated list of Glances filter
|
||||
#export=.*firefox.*,pid:1234
|
||||
# Define a list of process to focus on (comma-separated list of Glances filter)
|
||||
#focus=.*firefox.*,.*python.*
|
||||
|
||||
[ports]
|
||||
disable=False
|
||||
|
|
@ -542,87 +391,54 @@ port_default_gateway=True
|
|||
#web_4_url=https://blog.nicolargo.com/nonexist
|
||||
#web_4_description=Intranet
|
||||
|
||||
[vms]
|
||||
disable=True
|
||||
# Define the maximum VMs size name (default is 20 chars)
|
||||
max_name_size=20
|
||||
# By default, Glances only display running VMs with states:
|
||||
# 'Running', 'Paused', 'Starting' or 'Restarting'
|
||||
# Set the following key to True to display all VMs regarding their states
|
||||
all=False
|
||||
|
||||
[containers]
|
||||
disable=False
|
||||
# Only show specific containers (comma-separated list of container name or regular expression)
|
||||
# Only show specific containers (comma separated list of container name or regular expression)
|
||||
# Comment this line to display all containers (default configuration)
|
||||
; show=telegraf
|
||||
# Hide some containers (comma-separated list of container name or regular expression)
|
||||
#show=telegraf
|
||||
# Hide some containers (comma separated list of container name or regular expression)
|
||||
# Comment this line to display all containers (default configuration)
|
||||
; hide=telegraf
|
||||
#hide=telegraf
|
||||
# Define the maximum docker size name (default is 20 chars)
|
||||
max_name_size=20
|
||||
# List of stats to disable (not display)
|
||||
# Following stats can be disabled: name,status,uptime,cpu,mem,diskio,networkio,ports,command
|
||||
disable_stats=command
|
||||
#cpu_careful=50
|
||||
# Thresholds for CPU and MEM (in %)
|
||||
; cpu_careful=50
|
||||
; cpu_warning=70
|
||||
; cpu_critical=90
|
||||
; mem_careful=20
|
||||
; mem_warning=50
|
||||
; mem_critical=70
|
||||
#cpu_warning=70
|
||||
#cpu_critical=90
|
||||
#mem_careful=20
|
||||
#mem_warning=50
|
||||
#mem_critical=70
|
||||
#
|
||||
# Per container thresholds
|
||||
; containername_cpu_careful=10
|
||||
; containername_cpu_warning=20
|
||||
; containername_cpu_critical=30
|
||||
#containername_cpu_careful=10
|
||||
#containername_cpu_warning=20
|
||||
#containername_cpu_critical=30
|
||||
#
|
||||
# By default, Glances only display running containers
|
||||
# Set the following key to True to display all containers
|
||||
all=False
|
||||
# Define Podman sock
|
||||
; podman_sock=unix:///run/user/1000/podman/podman.sock
|
||||
#podman_sock=unix:///run/user/1000/podman/podman.sock
|
||||
|
||||
[amps]
|
||||
# AMPs configuration are defined in the bottom of this file
|
||||
disable=False
|
||||
|
||||
[alert]
|
||||
disable=False
|
||||
# Maximum number of events to display (default is 10 events)
|
||||
;max_events=10
|
||||
# Minimum duration for an event to be taken into account (default is 6 seconds)
|
||||
;min_duration=6
|
||||
# Minimum time between two events of the same type (default is 6 seconds)
|
||||
# This is used to avoid too many alerts for the same event
|
||||
# Events will be merged
|
||||
;min_interval=6
|
||||
|
||||
##############################################################################
|
||||
# Browser mode - Static servers definition
|
||||
# Client/server
|
||||
##############################################################################
|
||||
|
||||
[serverlist]
|
||||
# Define columns (comma separated list of <plugin>:<field>:(<key>)) to grab/display
|
||||
# Default is: system:hr_name,load:min5,cpu:total,mem:percent
|
||||
# You can also add stats with key, like sensors:value:Ambient (key is case sensitive)
|
||||
#columns=system:hr_name,load:min5,cpu:total,mem:percent,memswap:percent,sensors:value:Ambient,sensors:value:Composite
|
||||
# Define the static servers list
|
||||
# _protocol can be: rpc (default if not defined) or rest
|
||||
# List is limited to 256 servers max (1 to 256)
|
||||
#server_1_name=localhost
|
||||
#server_1_alias=Local WebUI
|
||||
#server_1_port=61266
|
||||
#server_1_protocol=rest
|
||||
#server_1_alias=My local PC
|
||||
#server_1_port=61209
|
||||
#server_2_name=localhost
|
||||
#server_2_alias=My local PC
|
||||
#server_2_port=61209
|
||||
#server_2_protocol=rpc
|
||||
#server_2_port=61235
|
||||
#server_3_name=192.168.0.17
|
||||
#server_3_alias=Another PC on my network
|
||||
#server_3_port=61209
|
||||
#server_1_protocol=rpc
|
||||
#server_4_name=notagooddefinition
|
||||
#server_4_name=pasbon
|
||||
#server_4_port=61237
|
||||
|
||||
[passwords]
|
||||
|
|
@ -641,20 +457,15 @@ disable=False
|
|||
# Exports
|
||||
##############################################################################
|
||||
|
||||
[export]
|
||||
# Common section for all exporters
|
||||
# Do not export following fields (comma separated list of regex)
|
||||
#exclude_fields=.*_critical,.*_careful,.*_warning,.*\.key$
|
||||
|
||||
[graph]
|
||||
# Configuration for the --export graph option
|
||||
# Set the path where the graph (.svg files) will be created
|
||||
# Can be overwrite by the --graph-path command line option
|
||||
path=/tmp/glances
|
||||
path=/tmp
|
||||
# It is possible to generate the graphs automatically by setting the
|
||||
# generate_every to a non zero value corresponding to the seconds between
|
||||
# two generation. Set it to 0 to disable graph auto generation.
|
||||
generate_every=0
|
||||
generate_every=60
|
||||
# See following configuration keys definitions in the Pygal lib documentation
|
||||
# http://pygal.org/en/stable/documentation/index.html
|
||||
width=800
|
||||
|
|
@ -664,7 +475,7 @@ style=DarkStyle
|
|||
[influxdb]
|
||||
# !!!
|
||||
# Will be DEPRECATED in future release.
|
||||
# Please have a look on the new influxdb3 export module
|
||||
# Please have a look on the new influxdb2 export module (compatible with InfluxDB 1.8.x and 2.x)
|
||||
# !!!
|
||||
# Configuration for the --export influxdb option
|
||||
# https://influxdb.com/
|
||||
|
|
@ -682,7 +493,7 @@ db=glances
|
|||
#prefix=foo
|
||||
# Following tags will be added for all measurements
|
||||
# You can also use dynamic values.
|
||||
# Note: hostname and name (for process) are always added as a tag
|
||||
# Note: hostname is always added as a tag
|
||||
#tags=foo:bar,spam:eggs,domain:`domainname`
|
||||
|
||||
[influxdb2]
|
||||
|
|
@ -693,7 +504,7 @@ port=8086
|
|||
protocol=http
|
||||
org=nicolargo
|
||||
bucket=glances
|
||||
token=PUT_YOUR_INFLUXDB2_TOKEN_HERE
|
||||
token=EjFUTWe8U-MIseEAkaVIgVnej_TrnbdvEcRkaB1imstW7gapSqy6_6-8XD-yd51V0zUUpDy-kAdVD1purDLuxA==
|
||||
# Set the interval between two exports (in seconds)
|
||||
# If the interval is set to 0, the Glances refresh time is used (default behavor)
|
||||
#interval=0
|
||||
|
|
@ -705,28 +516,7 @@ token=PUT_YOUR_INFLUXDB2_TOKEN_HERE
|
|||
#prefix=foo
|
||||
# Following tags will be added for all measurements
|
||||
# You can also use dynamic values.
|
||||
# Note: hostname and name (for process) are always added as a tag
|
||||
#tags=foo:bar,spam:eggs,domain:`domainname`
|
||||
|
||||
[influxdb3]
|
||||
# Configuration for the --export influxdb3 option
|
||||
# https://influxdb.com/
|
||||
host=http://localhost:8181
|
||||
org=nicolargo
|
||||
database=glances
|
||||
token=PUT_YOUR_INFLUXDB3_TOKEN_HERE
|
||||
# Set the interval between two exports (in seconds)
|
||||
# If the interval is set to 0, the Glances refresh time is used (default behavor)
|
||||
#interval=0
|
||||
# Prefix will be added for all measurement name
|
||||
# Ex: prefix=foo
|
||||
# => foo.cpu
|
||||
# => foo.mem
|
||||
# You can also use dynamic values
|
||||
#prefix=foo
|
||||
# Following tags will be added for all measurements
|
||||
# You can also use dynamic values.
|
||||
# Note: hostname and name (for process) are always added as a tag
|
||||
# Note: hostname is always added as a tag
|
||||
#tags=foo:bar,spam:eggs,domain:`domainname`
|
||||
|
||||
[cassandra]
|
||||
|
|
@ -786,15 +576,12 @@ queue=glances_queue
|
|||
[mqtt]
|
||||
# Configuration for the --export mqtt option
|
||||
host=localhost
|
||||
# Overwrite device name in the topic
|
||||
#devicename=localhost
|
||||
port=8883
|
||||
tls=false
|
||||
user=guest
|
||||
password=guest
|
||||
topic=glances
|
||||
topic_structure=per-metric
|
||||
callback_api_version=2
|
||||
|
||||
[couchdb]
|
||||
# Configuration for the --export couchdb option
|
||||
|
|
@ -802,8 +589,10 @@ callback_api_version=2
|
|||
host=localhost
|
||||
port=5984
|
||||
db=glances
|
||||
user=admin
|
||||
password=admin
|
||||
# user and password are optional (comment if not configured on the server side)
|
||||
# If they are used, then the https protocol will be used
|
||||
#user=root
|
||||
#password=root
|
||||
|
||||
[mongodb]
|
||||
# Configuration for the --export mongodb option
|
||||
|
|
@ -880,26 +669,6 @@ prefix=glances
|
|||
# By default, system_name = FQDN
|
||||
#system_name=mycomputer
|
||||
|
||||
[timescaledb]
|
||||
# Configuration for the --export timescaledb option
|
||||
# https://www.timescale.com/
|
||||
host=localhost
|
||||
port=5432
|
||||
db=glances
|
||||
user=postgres
|
||||
password=password
|
||||
# Overwrite device name (default is the FQDN)
|
||||
# Most of the time, you should not overwrite this value
|
||||
#hostname=mycomputer
|
||||
|
||||
[nats]
|
||||
# Configuration for the --export nats option
|
||||
# https://nats.io/
|
||||
# Host is a separated list of NATS nodes
|
||||
host=nats://localhost:4222
|
||||
# Prefix for the subjects (default is 'glances')
|
||||
prefix=glances
|
||||
|
||||
##############################################################################
|
||||
# AMPS
|
||||
# * enable: Enable (true) or disable (false) the AMP
|
||||
|
|
@ -935,13 +704,13 @@ refresh=3
|
|||
countmax=20
|
||||
|
||||
[amp_conntrack]
|
||||
# Use && separator for multiple commands
|
||||
# Use comma separated for multiple commands (no space around the comma)
|
||||
# If the regex key is not defined, the AMP will be executed every refresh second
|
||||
# and the process count will not be displayed (countmin and countmax will be ignore)
|
||||
enable=false
|
||||
refresh=30
|
||||
one_line=false
|
||||
command=sysctl net.netfilter.nf_conntrack_count && sysctl net.netfilter.nf_conntrack_max
|
||||
command=sysctl net.netfilter.nf_conntrack_count;sysctl net.netfilter.nf_conntrack_max
|
||||
|
||||
[amp_nginx]
|
||||
# Use the NGinx AMP
|
||||
|
|
|
|||
|
|
@ -1,395 +1,14 @@
|
|||
# This file was autogenerated by uv via the following command:
|
||||
# uv export --no-hashes --only-dev --output-file dev-requirements.txt
|
||||
alabaster==1.0.0
|
||||
# via sphinx
|
||||
annotated-types==0.7.0
|
||||
# via pydantic
|
||||
anyio==4.12.0
|
||||
# via
|
||||
# httpx
|
||||
# mcp
|
||||
# sse-starlette
|
||||
# starlette
|
||||
attrs==25.4.0
|
||||
# via
|
||||
# glom
|
||||
# jsonschema
|
||||
# outcome
|
||||
# referencing
|
||||
# reuse
|
||||
# semgrep
|
||||
# trio
|
||||
babel==2.17.0
|
||||
# via sphinx
|
||||
boltons==21.0.0
|
||||
# via
|
||||
# face
|
||||
# glom
|
||||
# semgrep
|
||||
boolean-py==5.0
|
||||
# via license-expression
|
||||
bracex==2.6
|
||||
# via wcmatch
|
||||
certifi==2025.11.12
|
||||
# via
|
||||
# httpcore
|
||||
# httpx
|
||||
# requests
|
||||
# selenium
|
||||
cffi==2.0.0 ; (implementation_name != 'pypy' and os_name == 'nt') or platform_python_implementation != 'PyPy'
|
||||
# via
|
||||
# cryptography
|
||||
# trio
|
||||
cfgv==3.5.0
|
||||
# via pre-commit
|
||||
charset-normalizer==3.4.4
|
||||
# via
|
||||
# python-debian
|
||||
# requests
|
||||
click==8.1.8
|
||||
# via
|
||||
# click-option-group
|
||||
# reuse
|
||||
# semgrep
|
||||
# typer
|
||||
# uvicorn
|
||||
click-option-group==0.5.9
|
||||
# via semgrep
|
||||
codespell==2.4.1
|
||||
colorama==0.4.6
|
||||
# via
|
||||
# click
|
||||
# pytest
|
||||
# semgrep
|
||||
# sphinx
|
||||
contourpy==1.3.2 ; python_full_version < '3.11'
|
||||
# via matplotlib
|
||||
contourpy==1.3.3 ; python_full_version >= '3.11'
|
||||
# via matplotlib
|
||||
cryptography==46.0.3
|
||||
# via pyjwt
|
||||
cycler==0.12.1
|
||||
# via matplotlib
|
||||
distlib==0.4.0
|
||||
# via virtualenv
|
||||
docutils==0.21.2
|
||||
# via
|
||||
# rstcheck-core
|
||||
# sphinx
|
||||
# sphinx-rtd-theme
|
||||
exceptiongroup==1.2.2
|
||||
# via
|
||||
# anyio
|
||||
# pytest
|
||||
# semgrep
|
||||
# trio
|
||||
# trio-websocket
|
||||
face==24.0.0
|
||||
# via glom
|
||||
filelock==3.20.2
|
||||
# via virtualenv
|
||||
fonttools==4.61.1
|
||||
# via matplotlib
|
||||
glom==22.1.0
|
||||
# via semgrep
|
||||
googleapis-common-protos==1.72.0
|
||||
# via opentelemetry-exporter-otlp-proto-http
|
||||
gprof2dot==2025.4.14
|
||||
h11==0.16.0
|
||||
# via
|
||||
# httpcore
|
||||
# uvicorn
|
||||
# wsproto
|
||||
httpcore==1.0.9
|
||||
# via httpx
|
||||
httpx==0.28.1
|
||||
# via mcp
|
||||
httpx-sse==0.4.3
|
||||
# via mcp
|
||||
identify==2.6.15
|
||||
# via pre-commit
|
||||
idna==3.11
|
||||
# via
|
||||
# anyio
|
||||
# httpx
|
||||
# requests
|
||||
# trio
|
||||
imagesize==1.4.1
|
||||
# via sphinx
|
||||
importlib-metadata==8.7.1
|
||||
# via opentelemetry-api
|
||||
iniconfig==2.3.0
|
||||
# via pytest
|
||||
jinja2==3.1.6
|
||||
# via
|
||||
# reuse
|
||||
# sphinx
|
||||
jsonschema==4.25.1
|
||||
# via
|
||||
# mcp
|
||||
# semgrep
|
||||
jsonschema-specifications==2025.9.1
|
||||
# via jsonschema
|
||||
kiwisolver==1.4.9
|
||||
# via matplotlib
|
||||
license-expression==30.4.4
|
||||
# via reuse
|
||||
markdown-it-py==4.0.0
|
||||
# via rich
|
||||
markupsafe==3.0.3
|
||||
# via jinja2
|
||||
matplotlib==3.10.8
|
||||
mcp==1.23.3
|
||||
# via semgrep
|
||||
mdurl==0.1.2
|
||||
# via markdown-it-py
|
||||
memory-profiler==0.61.0
|
||||
nodeenv==1.10.0
|
||||
# via
|
||||
# pre-commit
|
||||
# pyright
|
||||
numpy==2.2.6 ; python_full_version < '3.11'
|
||||
# via
|
||||
# contourpy
|
||||
# matplotlib
|
||||
numpy==2.4.0 ; python_full_version >= '3.11'
|
||||
# via
|
||||
# contourpy
|
||||
# matplotlib
|
||||
opentelemetry-api==1.37.0
|
||||
# via
|
||||
# opentelemetry-exporter-otlp-proto-http
|
||||
# opentelemetry-instrumentation
|
||||
# opentelemetry-instrumentation-requests
|
||||
# opentelemetry-sdk
|
||||
# opentelemetry-semantic-conventions
|
||||
# semgrep
|
||||
opentelemetry-exporter-otlp-proto-common==1.37.0
|
||||
# via opentelemetry-exporter-otlp-proto-http
|
||||
opentelemetry-exporter-otlp-proto-http==1.37.0
|
||||
# via semgrep
|
||||
opentelemetry-instrumentation==0.58b0
|
||||
# via opentelemetry-instrumentation-requests
|
||||
opentelemetry-instrumentation-requests==0.58b0
|
||||
# via semgrep
|
||||
opentelemetry-proto==1.37.0
|
||||
# via
|
||||
# opentelemetry-exporter-otlp-proto-common
|
||||
# opentelemetry-exporter-otlp-proto-http
|
||||
opentelemetry-sdk==1.37.0
|
||||
# via
|
||||
# opentelemetry-exporter-otlp-proto-http
|
||||
# semgrep
|
||||
opentelemetry-semantic-conventions==0.58b0
|
||||
# via
|
||||
# opentelemetry-instrumentation
|
||||
# opentelemetry-instrumentation-requests
|
||||
# opentelemetry-sdk
|
||||
opentelemetry-util-http==0.58b0
|
||||
# via opentelemetry-instrumentation-requests
|
||||
outcome==1.3.0.post0
|
||||
# via
|
||||
# trio
|
||||
# trio-websocket
|
||||
packaging==25.0
|
||||
# via
|
||||
# matplotlib
|
||||
# opentelemetry-instrumentation
|
||||
# pytest
|
||||
# requirements-parser
|
||||
# semgrep
|
||||
# sphinx
|
||||
# webdriver-manager
|
||||
peewee==3.18.3
|
||||
# via semgrep
|
||||
pillow==12.1.0
|
||||
# via matplotlib
|
||||
platformdirs==4.5.1
|
||||
# via virtualenv
|
||||
pluggy==1.6.0
|
||||
# via pytest
|
||||
pre-commit==4.5.1
|
||||
protobuf==6.33.2
|
||||
# via
|
||||
# googleapis-common-protos
|
||||
# opentelemetry-proto
|
||||
psutil==7.2.1
|
||||
# via memory-profiler
|
||||
py-spy==0.4.1
|
||||
pycparser==2.23 ; (implementation_name != 'PyPy' and implementation_name != 'pypy' and os_name == 'nt') or (implementation_name != 'PyPy' and platform_python_implementation != 'PyPy')
|
||||
# via cffi
|
||||
pydantic==2.12.5
|
||||
# via
|
||||
# mcp
|
||||
# pydantic-settings
|
||||
# rstcheck-core
|
||||
pydantic-core==2.41.5
|
||||
# via pydantic
|
||||
pydantic-settings==2.12.0
|
||||
# via mcp
|
||||
pygments==2.19.2
|
||||
# via
|
||||
# pytest
|
||||
# rich
|
||||
# sphinx
|
||||
pyinstrument==5.1.1
|
||||
pyjwt==2.10.1
|
||||
# via mcp
|
||||
pyparsing==3.3.1
|
||||
# via matplotlib
|
||||
pyright==1.1.407
|
||||
pysocks==1.7.1
|
||||
# via urllib3
|
||||
pytest==9.0.2
|
||||
python-dateutil==2.9.0.post0
|
||||
# via matplotlib
|
||||
python-debian==1.0.1
|
||||
# via reuse
|
||||
python-dotenv==1.2.1
|
||||
# via
|
||||
# pydantic-settings
|
||||
# webdriver-manager
|
||||
python-magic==0.4.27
|
||||
# via reuse
|
||||
python-multipart==0.0.21
|
||||
# via mcp
|
||||
pywin32==311 ; sys_platform == 'win32'
|
||||
# via
|
||||
# mcp
|
||||
# semgrep
|
||||
pyyaml==6.0.3
|
||||
# via pre-commit
|
||||
referencing==0.37.0
|
||||
# via
|
||||
# jsonschema
|
||||
# jsonschema-specifications
|
||||
requests==2.32.5
|
||||
# via
|
||||
# opentelemetry-exporter-otlp-proto-http
|
||||
# semgrep
|
||||
# sphinx
|
||||
# webdriver-manager
|
||||
requirements-parser==0.13.0
|
||||
reuse==6.2.0
|
||||
rich==13.5.3
|
||||
# via
|
||||
# semgrep
|
||||
# typer
|
||||
roman-numerals==4.1.0 ; python_full_version >= '3.11'
|
||||
# via roman-numerals-py
|
||||
roman-numerals-py==4.1.0 ; python_full_version >= '3.11'
|
||||
# via sphinx
|
||||
rpds-py==0.30.0
|
||||
# via
|
||||
# jsonschema
|
||||
# referencing
|
||||
rstcheck==6.2.5
|
||||
rstcheck-core==1.2.2
|
||||
# via rstcheck
|
||||
ruamel-yaml==0.19.1
|
||||
# via semgrep
|
||||
ruamel-yaml-clib==0.2.14
|
||||
# via semgrep
|
||||
ruff==0.14.10
|
||||
selenium==4.39.0
|
||||
semgrep==1.146.0
|
||||
setuptools==80.9.0
|
||||
shellingham==1.5.4
|
||||
# via typer
|
||||
six==1.17.0
|
||||
# via python-dateutil
|
||||
sniffio==1.3.1
|
||||
# via trio
|
||||
snowballstemmer==3.0.1
|
||||
# via sphinx
|
||||
sortedcontainers==2.4.0
|
||||
# via trio
|
||||
sphinx==8.1.3 ; python_full_version < '3.11'
|
||||
# via
|
||||
# sphinx-rtd-theme
|
||||
# sphinxcontrib-jquery
|
||||
sphinx==8.2.3 ; python_full_version >= '3.11'
|
||||
# via
|
||||
# sphinx-rtd-theme
|
||||
# sphinxcontrib-jquery
|
||||
sphinx-rtd-theme==3.0.2
|
||||
sphinxcontrib-applehelp==2.0.0
|
||||
# via sphinx
|
||||
sphinxcontrib-devhelp==2.0.0
|
||||
# via sphinx
|
||||
sphinxcontrib-htmlhelp==2.1.0
|
||||
# via sphinx
|
||||
sphinxcontrib-jquery==4.1
|
||||
# via sphinx-rtd-theme
|
||||
sphinxcontrib-jsmath==1.0.1
|
||||
# via sphinx
|
||||
sphinxcontrib-qthelp==2.0.0
|
||||
# via sphinx
|
||||
sphinxcontrib-serializinghtml==2.0.0
|
||||
# via sphinx
|
||||
sse-starlette==3.1.2
|
||||
# via mcp
|
||||
starlette==0.50.0
|
||||
# via
|
||||
# mcp
|
||||
# sse-starlette
|
||||
tomli==2.0.2
|
||||
# via
|
||||
# pytest
|
||||
# semgrep
|
||||
# sphinx
|
||||
tomlkit==0.13.3
|
||||
# via reuse
|
||||
trio==0.32.0
|
||||
# via
|
||||
# selenium
|
||||
# trio-websocket
|
||||
trio-websocket==0.12.2
|
||||
# via selenium
|
||||
typer==0.21.0
|
||||
# via rstcheck
|
||||
typing-extensions==4.15.0
|
||||
# via
|
||||
# anyio
|
||||
# cryptography
|
||||
# mcp
|
||||
# opentelemetry-api
|
||||
# opentelemetry-exporter-otlp-proto-http
|
||||
# opentelemetry-sdk
|
||||
# opentelemetry-semantic-conventions
|
||||
# pydantic
|
||||
# pydantic-core
|
||||
# pyright
|
||||
# referencing
|
||||
# selenium
|
||||
# semgrep
|
||||
# starlette
|
||||
# typer
|
||||
# typing-inspection
|
||||
# uvicorn
|
||||
# virtualenv
|
||||
typing-inspection==0.4.2
|
||||
# via
|
||||
# mcp
|
||||
# pydantic
|
||||
# pydantic-settings
|
||||
urllib3==2.6.2
|
||||
# via
|
||||
# requests
|
||||
# selenium
|
||||
# semgrep
|
||||
uvicorn==0.40.0 ; sys_platform != 'emscripten'
|
||||
# via mcp
|
||||
virtualenv==20.35.4
|
||||
# via pre-commit
|
||||
wcmatch==8.5.2
|
||||
# via semgrep
|
||||
webdriver-manager==4.0.2
|
||||
websocket-client==1.9.0
|
||||
# via selenium
|
||||
wrapt==1.17.3
|
||||
# via opentelemetry-instrumentation
|
||||
wsproto==1.3.2
|
||||
# via trio-websocket
|
||||
zipp==3.23.0
|
||||
# via importlib-metadata
|
||||
py-spy
|
||||
black
|
||||
pyright
|
||||
requirements-parser
|
||||
flake8
|
||||
autopep8
|
||||
autoflake
|
||||
ruff
|
||||
codespell
|
||||
memory-profiler
|
||||
matplotlib
|
||||
semgrep
|
||||
setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability
|
||||
numpy>=1.22.2 # not directly required, pinned by Snyk to avoid a vulnerability
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
sphinx
|
||||
sphinx_rtd_theme
|
||||
reuse
|
||||
setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
/venv/bin/python3 -m glances "$@"
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
FROM nicolargo/glances:latest as glancesminimal
|
||||
COPY glances.conf /glances/conf/glances.conf
|
||||
CMD python -m glances -C /glances/conf/glances.conf $GLANCES_OPT
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
version: "3.9"
|
||||
services:
|
||||
reverse-proxy:
|
||||
image: traefik
|
||||
command: --api --docker
|
||||
ports:
|
||||
- "80:80"
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
|
||||
whoami:
|
||||
image: emilevauge/whoami
|
||||
labels:
|
||||
- "traefik.frontend.rule=Host:whoami.docker.localhost"
|
||||
|
||||
monitoring:
|
||||
image: nicolargo/glances:dev
|
||||
restart: unless-stopped
|
||||
pid: host
|
||||
privileged: true
|
||||
network_mode: "host"
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
- "/run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro"
|
||||
- "./glances.conf:/glances/conf/glances.conf"
|
||||
environment:
|
||||
- GLANCES_OPT: "-C /glances/conf/glances.conf -w"
|
||||
- TZ: "${TZ}"
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: 1
|
||||
capabilities: [gpu]
|
||||
labels:
|
||||
- "traefik.port=61208"
|
||||
- "traefik.frontend.rule=Host:glances.docker.localhost"
|
||||
|
|
@ -1,55 +1,24 @@
|
|||
version: '3.9'
|
||||
services:
|
||||
glances:
|
||||
# See all images tags here: https://hub.docker.com/r/nicolargo/glances/tags
|
||||
image: nicolargo/glances:latest-full
|
||||
build:
|
||||
context: ./
|
||||
dockerfile: Dockerfile
|
||||
restart: always
|
||||
|
||||
pid: "host"
|
||||
privileged: true
|
||||
network_mode: "host"
|
||||
|
||||
read_only: true
|
||||
privileged: false
|
||||
# Uncomment next line for SATA or NVME smartctl monitoring
|
||||
# cap_add:
|
||||
# Uncomment next line for SATA smartctl monitoring
|
||||
# - SYS_RAWIO
|
||||
# Uncomment next line for NVME smartctl monitoring
|
||||
# - SYS_ADMIN
|
||||
# devices:
|
||||
# - "/dev/nvme0"
|
||||
|
||||
volumes:
|
||||
- "/:/rootfs:ro"
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
- "/run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro"
|
||||
- "./glances.conf:/glances/conf/glances.conf"
|
||||
# Uncomment for proper distro information in upper panel.
|
||||
# # Works only for distros that do have this file (most of distros do).
|
||||
# - "/etc/os-release:/etc/os-release:ro"
|
||||
|
||||
tmpfs:
|
||||
- /tmp
|
||||
|
||||
environment:
|
||||
# Please set to your local timezone (or use local ${TZ} environment variable if set on your host)
|
||||
- TZ=Europe/Paris
|
||||
- GLANCES_OPT=-C /glances/conf/glances.conf -w --enable-plugin smart
|
||||
- PYTHONPYCACHEPREFIX=/tmp/py_caches
|
||||
|
||||
# # Uncomment for GPU compatibility (Nvidia) inside the container
|
||||
# deploy:
|
||||
# resources:
|
||||
# reservations:
|
||||
# devices:
|
||||
# - driver: nvidia
|
||||
# count: 1
|
||||
# capabilities: [gpu]
|
||||
|
||||
# Uncomment to protect Glances WebUI by a login/password (add --password to GLANCES_OPT)
|
||||
# secrets:
|
||||
# - source: glances_password
|
||||
# target: /root/.config/glances/<login>.pwd
|
||||
|
||||
# secrets:
|
||||
# glances_password:
|
||||
# file: ./secrets/glances_password
|
||||
- GLANCES_OPT: "-C /glances/conf/glances.conf -w"
|
||||
- TZ: "${TZ}"
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: 1
|
||||
capabilities: [gpu]
|
||||
|
|
@ -13,75 +13,28 @@ check_update=False
|
|||
# Default is 1200 values (~1h with the default refresh rate)
|
||||
history_size=1200
|
||||
# Set the way Glances should display the date (default is %Y-%m-%d %H:%M:%S %Z)
|
||||
#strftime_format=%Y-%m-%d %H:%M:%S %Z
|
||||
# Define external directory for loading additional plugins
|
||||
# The layout follows the glances standard for plugin definitions
|
||||
#plugin_dir=/home/user/dev/plugins
|
||||
#strftime_format="%Y-%m-%d %H:%M:%S %Z"
|
||||
|
||||
##############################################################################
|
||||
# User interface
|
||||
##############################################################################
|
||||
|
||||
[outputs]
|
||||
# Options for all UIs
|
||||
#--------------------
|
||||
# Separator in the Curses and WebUI interface (between top and others plugins)
|
||||
#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)
|
||||
max_processes_display=25
|
||||
#
|
||||
# Specifics options for TUI
|
||||
#--------------------------
|
||||
# Disable background color
|
||||
#disable_bg=True
|
||||
#
|
||||
# Specifics options for WebUI
|
||||
#----------------------------
|
||||
# Set URL prefix for the WebUI and the API
|
||||
# Example: url_prefix=/glances/ => http://localhost/glances/
|
||||
# Note: The final / is mandatory
|
||||
# Default is no prefix (/)
|
||||
#url_prefix=/glances/
|
||||
# Set root path for WebUI statics files
|
||||
# Why ? On Debian system, WebUI statics files are not provided.
|
||||
# You can download it in a specific folder
|
||||
# thanks to https://github.com/nicolargo/glances/issues/2021
|
||||
# then configure this folder with the webui_root_path key
|
||||
# Default is folder where glances_restful_api.py is hosted
|
||||
#webui_root_path=
|
||||
# CORS options
|
||||
# Comma separated list of origins that should be permitted to make cross-origin requests.
|
||||
# Default is *
|
||||
#cors_origins=*
|
||||
# Indicate that cookies should be supported for cross-origin requests.
|
||||
# Default is True
|
||||
#cors_credentials=True
|
||||
# Comma separated list of HTTP methods that should be allowed for cross-origin requests.
|
||||
# Default is *
|
||||
#cors_methods=*
|
||||
# Comma separated list of HTTP request headers that should be supported for cross-origin requests.
|
||||
# Default is *
|
||||
#cors_headers=*
|
||||
# Define SSL files (keyfile_password is optional)
|
||||
#ssl_keyfile_password=kfp
|
||||
#ssl_keyfile=./glances.local+3-key.pem
|
||||
#ssl_certfile=./glances.local+3.pem
|
||||
# Theme name for the Curses interface: black or white
|
||||
curse_theme=black
|
||||
# Limit the number of processes to display in the WebUI
|
||||
max_processes_display=30
|
||||
|
||||
##############################################################################
|
||||
# Plugins
|
||||
# plugins
|
||||
##############################################################################
|
||||
|
||||
[quicklook]
|
||||
# Set to true to disable a plugin
|
||||
# Note: you can also disable it from the command line (see --disable-plugin <plugin_name>)
|
||||
disable=False
|
||||
# Stats list (default is cpu,mem,load)
|
||||
# Available stats are: cpu,mem,load,swap
|
||||
list=cpu,mem,load
|
||||
# Graphical bar char used in the terminal user interface (default is |)
|
||||
bar_char=|
|
||||
# Graphical percentage char used in the terminal user interface (default is |)
|
||||
percentage_char=|
|
||||
# Define CPU, MEM and SWAP thresholds in %
|
||||
cpu_careful=50
|
||||
cpu_warning=70
|
||||
|
|
@ -92,11 +45,6 @@ mem_critical=90
|
|||
swap_careful=50
|
||||
swap_warning=70
|
||||
swap_critical=90
|
||||
# Source: http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages
|
||||
# With 1 CPU core, the load should be lower than 1.00 ~ 100%
|
||||
load_careful=70
|
||||
load_warning=100
|
||||
load_critical=500
|
||||
|
||||
[system]
|
||||
# This plugin display the first line in the Glances UI with:
|
||||
|
|
@ -105,9 +53,6 @@ load_critical=500
|
|||
disable=False
|
||||
# Default refresh rate is 60 seconds
|
||||
#refresh=60
|
||||
# System information to display (a string where {key} will be replaced by the value)
|
||||
# Available information are: hostname, os_name, os_version, os_arch, linux_distro, platform
|
||||
#system_info_msg= | My {os_name} system |
|
||||
|
||||
[cpu]
|
||||
disable=False
|
||||
|
|
@ -131,7 +76,7 @@ user_careful=50
|
|||
user_warning=70
|
||||
user_critical=90
|
||||
user_log=False
|
||||
#user_critical_action=echo "{{time}} User CPU {{user}} higher than {{critical}}" > /tmp/cpu.alert
|
||||
#user_critical_action=echo {{user}} {{value}} {{max}} > /tmp/cpu.alert
|
||||
#
|
||||
system_careful=50
|
||||
system_warning=70
|
||||
|
|
@ -144,18 +89,13 @@ steal_critical=90
|
|||
#steal_log=True
|
||||
#
|
||||
# Context switch limit (core / second)
|
||||
# Leave commented to just use the default config critical is 50000*(Logical CPU cores)
|
||||
# Leave commented to just use the default config (critical is 50000*# (Logical CPU cores)
|
||||
#ctx_switches_careful=10000
|
||||
#ctx_switches_warning=12000
|
||||
#ctx_switches_critical=14000
|
||||
|
||||
[percpu]
|
||||
disable=False
|
||||
# Define the maximum number of CPU displayed at a time
|
||||
# If the number of CPU is higher than the one configured in max_cpu_display then:
|
||||
# - display top 'max_cpu_display' (sorted by CPU consumption)
|
||||
# - a last line will be added with the mean of all other CPUs
|
||||
max_cpu_display=4
|
||||
# Define CPU thresholds in %
|
||||
# Default values if not defined: 50/70/90
|
||||
user_careful=50
|
||||
|
|
@ -178,21 +118,15 @@ proc_critical=90
|
|||
mem_careful=50
|
||||
mem_warning=70
|
||||
mem_critical=90
|
||||
# Temperature
|
||||
temperature_careful=60
|
||||
temperature_warning=70
|
||||
temperature_critical=80
|
||||
|
||||
[mem]
|
||||
disable=False
|
||||
# Display available memory instead of used memory
|
||||
#available=True
|
||||
# Define RAM thresholds in %
|
||||
# Default values if not defined: 50/70/90
|
||||
careful=50
|
||||
#careful_action_repeat=echo {{percent}} >> /tmp/memory.alert
|
||||
warning=70
|
||||
critical=90
|
||||
#critical_action_repeat=echo "{{time}} {{percent}} higher than {{critical}}"" >> /tmp/memory.alert
|
||||
|
||||
[memswap]
|
||||
disable=False
|
||||
|
|
@ -201,7 +135,6 @@ disable=False
|
|||
careful=50
|
||||
warning=70
|
||||
critical=90
|
||||
#warning_action=echo "{{time}} {{percent}} higher than {{warning}}"" > /tmp/memory.alert
|
||||
|
||||
[load]
|
||||
disable=False
|
||||
|
|
@ -229,15 +162,8 @@ tx_critical=90
|
|||
#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
|
||||
# Automatically hide interface with no IP address (default is False)
|
||||
hide_no_ip=True
|
||||
# Set hide_zero to True to automatically hide interface with no traffic
|
||||
hide_zero=False
|
||||
# Set hide_threshold_bytes to an integer value to automatically hide
|
||||
# interface with traffic less or equal than this value
|
||||
#hide_threshold_bytes=0
|
||||
# WLAN 0 alias
|
||||
#wlan0_alias=Wireless
|
||||
# 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
|
||||
|
|
@ -248,38 +174,24 @@ hide_zero=False
|
|||
#wlan0_tx_warning=900000
|
||||
#wlan0_tx_critical=1000000
|
||||
#wlan0_tx_log=True
|
||||
#wlan0_rx_critical_action=echo "{{time}} {{interface_name}} RX {{bytes_recv_rate_per_sec}}Bps" > /tmp/network.alert
|
||||
# Alias for network interface name
|
||||
#alias=wlp0s20f3:WIFI
|
||||
|
||||
[ip]
|
||||
# Disable display of private IP address
|
||||
disable=False
|
||||
# Configure the online service where public IP address information will be downloaded
|
||||
# - public_disabled: Disable public IP address information (set to True for offline platform)
|
||||
# - public_refresh_interval: Refresh interval between to calls to the online service
|
||||
# - public_api: URL of the API (the API should return an JSON object)
|
||||
# - public_username: Login for the online service (if needed)
|
||||
# - public_password: Password for the online service (if needed)
|
||||
# - public_field: Field name of the public IP address in onlibe service JSON message
|
||||
# - public_template: Template to build the public message
|
||||
#
|
||||
# Example for IPLeak service:
|
||||
# public_api=https://ipv4.ipleak.net/json/
|
||||
# public_field=ip
|
||||
# public_template={ip} {continent_name}/{country_name}/{city_name}
|
||||
#
|
||||
public_disabled=True
|
||||
public_refresh_interval=300
|
||||
public_api=https://ipv4.ipleak.net/json/
|
||||
#public_username=<myname>
|
||||
#public_password=<mysecret>
|
||||
public_field=ip
|
||||
public_template={continent_name}/{country_name}/{city_name}
|
||||
public_ip_disabled=False
|
||||
# Configuration for the Censys online service
|
||||
# Need to create an aacount: https://censys.io/login
|
||||
censys_url=https://search.censys.io/api
|
||||
# Get your own credential here: https://search.censys.io/account/api
|
||||
# Enter your credential and uncomment the following lines
|
||||
#censys_username=<censys_api_id>
|
||||
#censys_password=<censys_secret>
|
||||
# List of fields to be displayed in user interface (comma separated)
|
||||
censys_fields=location:continent,location:country,autonomous_system:name
|
||||
|
||||
[connections]
|
||||
# Display additional information about TCP connections
|
||||
# This plugin is disabled by default because it consumes lots of CPU
|
||||
# This plugin is disabled by default
|
||||
disable=True
|
||||
# nf_conntrack thresholds in %
|
||||
nf_conntrack_percent_careful=70
|
||||
|
|
@ -287,8 +199,12 @@ nf_conntrack_percent_warning=80
|
|||
nf_conntrack_percent_critical=90
|
||||
|
||||
[wifi]
|
||||
disable=False
|
||||
# Define SIGNAL thresholds in dBm (lower is better...)
|
||||
disable=True
|
||||
# Define the list of hidden wireless network interfaces (comma-separated regexp)
|
||||
hide=lo,docker.*
|
||||
# Define the list of wireless network interfaces to be show (comma-separated)
|
||||
#show=docker.*
|
||||
# Define SIGNAL thresholds in db (lower is better...)
|
||||
# Based on: http://serverfault.com/questions/501025/industry-standard-for-minimum-wifi-signal-strength
|
||||
careful=-65
|
||||
warning=-75
|
||||
|
|
@ -299,63 +215,26 @@ disable=False
|
|||
# Define the list of hidden disks (comma-separated regexp)
|
||||
#hide=sda2,sda5,loop.*
|
||||
hide=loop.*,/dev/loop.*
|
||||
# Set hide_zero to True to automatically hide disk with no read/write
|
||||
hide_zero=False
|
||||
# Set hide_threshold_bytes to an integer value to automatically hide
|
||||
# interface with traffic less or equal than this value
|
||||
#hide_threshold_bytes=0
|
||||
# Define the list of disks to be show (comma-separated)
|
||||
#show=sda.*
|
||||
# Alias for sda1 and sdb1
|
||||
#alias=sda1:SystemDisk,sdb1:DataDisk
|
||||
# Default latency thresholds (in ms) (rx = read / tx = write)
|
||||
rx_latency_careful=10
|
||||
rx_latency_warning=20
|
||||
rx_latency_critical=50
|
||||
tx_latency_careful=10
|
||||
tx_latency_warning=20
|
||||
tx_latency_critical=50
|
||||
# Set latency thresholds (latency in ms) for a given disk name (rx = read / tx = write)
|
||||
# dm-0_rx_latency_careful=10
|
||||
# dm-0_rx_latency_warning=20
|
||||
# dm-0_rx_latency_critical=50
|
||||
# dm-0_rx_latency_log=False
|
||||
# dm-0_tx_latency_careful=10
|
||||
# dm-0_tx_latency_warning=20
|
||||
# dm-0_tx_latency_critical=50
|
||||
# dm-0_tx_latency_log=False
|
||||
# There is no default bitrate thresholds for disk (because it is not possible to know the disk speed)
|
||||
# Set bitrate thresholds (in bytes per second) for a given disk name (rx = read / tx = write)
|
||||
#dm-0_rx_careful=4000000000
|
||||
#dm-0_rx_warning=5000000000
|
||||
#dm-0_rx_critical=6000000000
|
||||
#dm-0_rx_log=False
|
||||
#dm-0_tx_careful=700000000
|
||||
#dm-0_tx_warning=900000000
|
||||
#dm-0_tx_critical=1000000000
|
||||
#dm-0_tx_log=False
|
||||
# Alias for sda1
|
||||
#sda1_alias=InternalDisk
|
||||
|
||||
[fs]
|
||||
disable=False
|
||||
# Define the list of file system to hide (comma-separated regexp)
|
||||
hide=/boot.*,.*/snap.*
|
||||
hide=/boot.*,/snap.*
|
||||
# Define the list of file system to show (comma-separated regexp)
|
||||
#show=/,/srv
|
||||
# Define filesystem space thresholds in %
|
||||
# Default values if not defined: 50/70/90
|
||||
# It is also possible to define per mount point value
|
||||
# Example: /_careful=40
|
||||
careful=50
|
||||
warning=70
|
||||
critical=90
|
||||
# It is also possible to define per mount point value
|
||||
# Example: /_careful=40
|
||||
#/_careful=1
|
||||
#/_warning=5
|
||||
#/_critical=10
|
||||
#/_critical_action=echo "{{time}} {{mnt_point}} filesystem space {{percent}}% higher than {{critical}}%" > /tmp/fs.alert
|
||||
# Allow additional file system types (comma-separated FS type)
|
||||
#allow=shm
|
||||
# Alias for root file system
|
||||
#alias=/:Root,/zsfpool:ZSF
|
||||
|
||||
[irq]
|
||||
# Documentation: https://glances.readthedocs.io/en/latest/aoa/irq.html
|
||||
|
|
@ -398,12 +277,6 @@ disable=True
|
|||
# Documentation: https://glances.readthedocs.io/en/latest/aoa/smart.html
|
||||
# This plugin is disabled by default
|
||||
disable=True
|
||||
# Define the list of sensors to hide (comma-separated regexp)
|
||||
#hide=.*Hide_this_driver.*
|
||||
# Define the list of sensors to show (comma-separated regexp)
|
||||
#show=.*Drive_Temperature.*
|
||||
# List of attributes to hide (comma separated)
|
||||
#hide_attributes=Self-tests,Errors
|
||||
|
||||
[hddtemp]
|
||||
disable=False
|
||||
|
|
@ -414,39 +287,32 @@ port=7634
|
|||
[sensors]
|
||||
# Documentation: https://glances.readthedocs.io/en/latest/aoa/sensors.html
|
||||
disable=False
|
||||
# Set the refresh multiplicator for the sensors
|
||||
# By default refresh every Glances refresh * 5 (increase to reduce CPU consumption)
|
||||
#refresh=5
|
||||
# Hide some sensors (comma separated list of regexp)
|
||||
hide=unknown.*
|
||||
# Show only the following sensors (comma separated list of regexp)
|
||||
#show=CPU.*
|
||||
# By default refresh every refresh time * 2
|
||||
#refresh=6
|
||||
# Hide some sensors
|
||||
#hide=ambient
|
||||
# Sensors core thresholds (in Celsius...)
|
||||
# By default values are grabbed from the system
|
||||
# Overwrite thresholds for a specific sensor
|
||||
# temperature_core_Ambient_careful=40
|
||||
# temperature_core_Ambient_warning=60
|
||||
# temperature_core_Ambient_critical=85
|
||||
# temperature_core_Ambient_log=True
|
||||
# temperature_core_Ambient_critical_action=echo "{{time}} {{label}} temperature {{value}}{{unit}} higher than {{critical}}{{unit}}" > /tmp/temperature.alert
|
||||
# Overwrite thresholds for a specific type of sensor
|
||||
#temperature_core_careful=45
|
||||
#temperature_core_warning=65
|
||||
# Default values are grabbed from the system
|
||||
#temperature_core_careful=60
|
||||
#temperature_core_warning=70
|
||||
#temperature_core_critical=80
|
||||
# Temperatures threshold in °C for hddtemp
|
||||
# Default values if not defined: 45/52/60
|
||||
#temperature_hdd_careful=45
|
||||
#temperature_hdd_warning=52
|
||||
#temperature_hdd_critical=60
|
||||
temperature_hdd_careful=45
|
||||
temperature_hdd_warning=52
|
||||
temperature_hdd_critical=60
|
||||
# Battery threshold in %
|
||||
# Default values if not defined: 70/80/90
|
||||
#battery_careful=70
|
||||
#battery_warning=80
|
||||
#battery_critical=90
|
||||
# Fan speed threshold in RPM
|
||||
#fan_speed_careful=100
|
||||
battery_careful=80
|
||||
battery_warning=90
|
||||
battery_critical=95
|
||||
# Sensors alias
|
||||
#alias=core 0:CPU Core 0,core 1:CPU Core 1
|
||||
#temp1_alias=Motherboard 0
|
||||
#temp2_alias=Motherboard 1
|
||||
#core 0_temperature_core_alias=CPU Core 0 temp
|
||||
#core 0_fans_speed_alias=CPU Core 0 fan
|
||||
#or
|
||||
#core 0_alias=CPU Core 0
|
||||
#core 1_alias=CPU Core 1
|
||||
|
||||
[processcount]
|
||||
disable=False
|
||||
|
|
@ -459,12 +325,6 @@ disable=False
|
|||
# Should be one of the following:
|
||||
# cpu_percent, memory_percent, io_counters, name, cpu_times, username
|
||||
#sort_key=memory_percent
|
||||
# List of stats to disable (not grabed and not display)
|
||||
# Stats that can be disabled: cpu_percent,memory_info,memory_percent,username,cpu_times,num_threads,nice,status,io_counters,cmdline
|
||||
# Stats that can not be disable: pid,name
|
||||
#disable_stats=cpu_percent,memory_info,memory_percent,username,cpu_times,num_threads,nice,status,io_counters,cmdline
|
||||
# Disable display of virtual memory
|
||||
#disable_virtual_memory=True
|
||||
# Define CPU/MEM (per process) thresholds in %
|
||||
# Default values if not defined: 50/70/90
|
||||
cpu_careful=50
|
||||
|
|
@ -475,26 +335,15 @@ mem_warning=70
|
|||
mem_critical=90
|
||||
#
|
||||
# Nice priorities range from -20 to 19.
|
||||
# Configure nice levels using a comma-separated list.
|
||||
# Configure nice levels using a comma separated list.
|
||||
#
|
||||
# Nice: Example 1, non-zero is warning (default behavior)
|
||||
nice_warning=-20,-19,-18,-17,-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
||||
#
|
||||
# Nice: Example 2, low priority processes escalate from careful to critical
|
||||
#nice_ok=O
|
||||
#nice_careful=1,2,3,4,5,6,7,8,9
|
||||
#nice_warning=10,11,12,13,14
|
||||
#nice_critical=15,16,17,18,19
|
||||
#
|
||||
# Status: define threshold regarding the process status (first letter of process status)
|
||||
# R: Running, S: Sleeping, Z: Zombie (complete list here https://psutil.readthedocs.io/en/latest/#process-status-constants)
|
||||
status_ok=R,W,P,I
|
||||
status_critical=Z,D
|
||||
# Define the list of processes to export using:
|
||||
# a comma-separated list of Glances filter
|
||||
#export=.*firefox.*,pid:1234
|
||||
# Define a list of process to focus on (comma-separated list of Glances filter)
|
||||
#focus=.*firefox.*,.*python.*
|
||||
|
||||
[ports]
|
||||
disable=False
|
||||
|
|
@ -504,7 +353,7 @@ refresh=30
|
|||
# Set the default timeout (in second) for a scan (can be overwritten in the scan list)
|
||||
timeout=3
|
||||
# If port_default_gateway is True, add the default gateway on top of the scan list
|
||||
port_default_gateway=False
|
||||
port_default_gateway=True
|
||||
#
|
||||
# Define the scan list (1 < x < 255)
|
||||
# port_x_host (name or IP) is mandatory
|
||||
|
|
@ -542,87 +391,54 @@ port_default_gateway=False
|
|||
#web_4_url=https://blog.nicolargo.com/nonexist
|
||||
#web_4_description=Intranet
|
||||
|
||||
[vms]
|
||||
disable=True
|
||||
# Define the maximum VMs size name (default is 20 chars)
|
||||
max_name_size=20
|
||||
# By default, Glances only display running VMs with states:
|
||||
# 'Running', 'Paused', 'Starting' or 'Restarting'
|
||||
# Set the following key to True to display all VMs regarding their states
|
||||
all=False
|
||||
|
||||
[containers]
|
||||
disable=False
|
||||
# Only show specific containers (comma-separated list of container name or regular expression)
|
||||
# Only show specific containers (comma separated list of container name or regular expression)
|
||||
# Comment this line to display all containers (default configuration)
|
||||
; show=telegraf
|
||||
# Hide some containers (comma-separated list of container name or regular expression)
|
||||
#show=telegraf
|
||||
# Hide some containers (comma separated list of container name or regular expression)
|
||||
# Comment this line to display all containers (default configuration)
|
||||
; hide=telegraf
|
||||
#hide=telegraf
|
||||
# Define the maximum docker size name (default is 20 chars)
|
||||
max_name_size=20
|
||||
# List of stats to disable (not display)
|
||||
# Following stats can be disabled: name,status,uptime,cpu,mem,diskio,networkio,ports,command
|
||||
disable_stats=command
|
||||
#cpu_careful=50
|
||||
# Thresholds for CPU and MEM (in %)
|
||||
; cpu_careful=50
|
||||
; cpu_warning=70
|
||||
; cpu_critical=90
|
||||
; mem_careful=20
|
||||
; mem_warning=50
|
||||
; mem_critical=70
|
||||
#cpu_warning=70
|
||||
#cpu_critical=90
|
||||
#mem_careful=20
|
||||
#mem_warning=50
|
||||
#mem_critical=70
|
||||
#
|
||||
# Per container thresholds
|
||||
; containername_cpu_careful=10
|
||||
; containername_cpu_warning=20
|
||||
; containername_cpu_critical=30
|
||||
#containername_cpu_careful=10
|
||||
#containername_cpu_warning=20
|
||||
#containername_cpu_critical=30
|
||||
#
|
||||
# By default, Glances only display running containers
|
||||
# Set the following key to True to display all containers
|
||||
all=False
|
||||
# Define Podman sock
|
||||
; podman_sock=unix:///run/user/1000/podman/podman.sock
|
||||
#podman_sock=unix:///run/user/1000/podman/podman.sock
|
||||
|
||||
[amps]
|
||||
# AMPs configuration are defined in the bottom of this file
|
||||
disable=False
|
||||
|
||||
[alert]
|
||||
disable=False
|
||||
# Maximum number of events to display (default is 10 events)
|
||||
;max_events=10
|
||||
# Minimum duration for an event to be taken into account (default is 6 seconds)
|
||||
;min_duration=6
|
||||
# Minimum time between two events of the same type (default is 6 seconds)
|
||||
# This is used to avoid too many alerts for the same event
|
||||
# Events will be merged
|
||||
;min_interval=6
|
||||
|
||||
##############################################################################
|
||||
# Browser mode - Static servers definition
|
||||
# Client/server
|
||||
##############################################################################
|
||||
|
||||
[serverlist]
|
||||
# Define columns (comma separated list of <plugin>:<field>:(<key>)) to grab/display
|
||||
# Default is: system:hr_name,load:min5,cpu:total,mem:percent
|
||||
# You can also add stats with key, like sensors:value:Ambient (key is case sensitive)
|
||||
#columns=system:hr_name,load:min5,cpu:total,mem:percent,memswap:percent,sensors:value:Ambient,sensors:value:Composite
|
||||
# Define the static servers list
|
||||
# _protocol can be: rpc (default if not defined) or rest
|
||||
# List is limited to 256 servers max (1 to 256)
|
||||
#server_1_name=localhost
|
||||
#server_1_alias=Local WebUI
|
||||
#server_1_port=61266
|
||||
#server_1_protocol=rest
|
||||
#server_1_alias=My local PC
|
||||
#server_1_port=61209
|
||||
#server_2_name=localhost
|
||||
#server_2_alias=My local PC
|
||||
#server_2_port=61209
|
||||
#server_2_protocol=rpc
|
||||
#server_2_port=61235
|
||||
#server_3_name=192.168.0.17
|
||||
#server_3_alias=Another PC on my network
|
||||
#server_3_port=61209
|
||||
#server_1_protocol=rpc
|
||||
#server_4_name=notagooddefinition
|
||||
#server_4_name=pasbon
|
||||
#server_4_port=61237
|
||||
|
||||
[passwords]
|
||||
|
|
@ -641,20 +457,15 @@ disable=False
|
|||
# Exports
|
||||
##############################################################################
|
||||
|
||||
[export]
|
||||
# Common section for all exporters
|
||||
# Do not export following fields (comma separated list of regex)
|
||||
#exclude_fields=.*_critical,.*_careful,.*_warning,.*\.key$
|
||||
|
||||
[graph]
|
||||
# Configuration for the --export graph option
|
||||
# Set the path where the graph (.svg files) will be created
|
||||
# Can be overwrite by the --graph-path command line option
|
||||
path=/tmp/glances
|
||||
path=/tmp
|
||||
# It is possible to generate the graphs automatically by setting the
|
||||
# generate_every to a non zero value corresponding to the seconds between
|
||||
# two generation. Set it to 0 to disable graph auto generation.
|
||||
generate_every=0
|
||||
generate_every=60
|
||||
# See following configuration keys definitions in the Pygal lib documentation
|
||||
# http://pygal.org/en/stable/documentation/index.html
|
||||
width=800
|
||||
|
|
@ -664,7 +475,7 @@ style=DarkStyle
|
|||
[influxdb]
|
||||
# !!!
|
||||
# Will be DEPRECATED in future release.
|
||||
# Please have a look on the new influxdb3 export module
|
||||
# Please have a look on the new influxdb2 export module (compatible with InfluxDB 1.8.x and 2.x)
|
||||
# !!!
|
||||
# Configuration for the --export influxdb option
|
||||
# https://influxdb.com/
|
||||
|
|
@ -682,7 +493,7 @@ db=glances
|
|||
#prefix=foo
|
||||
# Following tags will be added for all measurements
|
||||
# You can also use dynamic values.
|
||||
# Note: hostname and name (for process) are always added as a tag
|
||||
# Note: hostname is always added as a tag
|
||||
#tags=foo:bar,spam:eggs,domain:`domainname`
|
||||
|
||||
[influxdb2]
|
||||
|
|
@ -693,7 +504,7 @@ port=8086
|
|||
protocol=http
|
||||
org=nicolargo
|
||||
bucket=glances
|
||||
token=PUT_YOUR_INFLUXDB2_TOKEN_HERE
|
||||
token=EjFUTWe8U-MIseEAkaVIgVnej_TrnbdvEcRkaB1imstW7gapSqy6_6-8XD-yd51V0zUUpDy-kAdVD1purDLuxA==
|
||||
# Set the interval between two exports (in seconds)
|
||||
# If the interval is set to 0, the Glances refresh time is used (default behavor)
|
||||
#interval=0
|
||||
|
|
@ -705,28 +516,7 @@ token=PUT_YOUR_INFLUXDB2_TOKEN_HERE
|
|||
#prefix=foo
|
||||
# Following tags will be added for all measurements
|
||||
# You can also use dynamic values.
|
||||
# Note: hostname and name (for process) are always added as a tag
|
||||
#tags=foo:bar,spam:eggs,domain:`domainname`
|
||||
|
||||
[influxdb3]
|
||||
# Configuration for the --export influxdb3 option
|
||||
# https://influxdb.com/
|
||||
host=http://localhost:8181
|
||||
org=nicolargo
|
||||
database=glances
|
||||
token=PUT_YOUR_INFLUXDB3_TOKEN_HERE
|
||||
# Set the interval between two exports (in seconds)
|
||||
# If the interval is set to 0, the Glances refresh time is used (default behavor)
|
||||
#interval=0
|
||||
# Prefix will be added for all measurement name
|
||||
# Ex: prefix=foo
|
||||
# => foo.cpu
|
||||
# => foo.mem
|
||||
# You can also use dynamic values
|
||||
#prefix=foo
|
||||
# Following tags will be added for all measurements
|
||||
# You can also use dynamic values.
|
||||
# Note: hostname and name (for process) are always added as a tag
|
||||
# Note: hostname is always added as a tag
|
||||
#tags=foo:bar,spam:eggs,domain:`domainname`
|
||||
|
||||
[cassandra]
|
||||
|
|
@ -786,15 +576,12 @@ queue=glances_queue
|
|||
[mqtt]
|
||||
# Configuration for the --export mqtt option
|
||||
host=localhost
|
||||
# Overwrite device name in the topic
|
||||
#devicename=localhost
|
||||
port=8883
|
||||
tls=false
|
||||
user=guest
|
||||
password=guest
|
||||
topic=glances
|
||||
topic_structure=per-metric
|
||||
callback_api_version=2
|
||||
|
||||
[couchdb]
|
||||
# Configuration for the --export couchdb option
|
||||
|
|
@ -802,8 +589,10 @@ callback_api_version=2
|
|||
host=localhost
|
||||
port=5984
|
||||
db=glances
|
||||
user=admin
|
||||
password=admin
|
||||
# user and password are optional (comment if not configured on the server side)
|
||||
# If they are used, then the https protocol will be used
|
||||
#user=root
|
||||
#password=root
|
||||
|
||||
[mongodb]
|
||||
# Configuration for the --export mongodb option
|
||||
|
|
@ -880,26 +669,6 @@ prefix=glances
|
|||
# By default, system_name = FQDN
|
||||
#system_name=mycomputer
|
||||
|
||||
[timescaledb]
|
||||
# Configuration for the --export timescaledb option
|
||||
# https://www.timescale.com/
|
||||
host=localhost
|
||||
port=5432
|
||||
db=glances
|
||||
user=postgres
|
||||
password=password
|
||||
# Overwrite device name (default is the FQDN)
|
||||
# Most of the time, you should not overwrite this value
|
||||
#hostname=mycomputer
|
||||
|
||||
[nats]
|
||||
# Configuration for the --export nats option
|
||||
# https://nats.io/
|
||||
# Host is a separated list of NATS nodes
|
||||
host=nats://localhost:4222
|
||||
# Prefix for the subjects (default is 'glances')
|
||||
prefix=glances
|
||||
|
||||
##############################################################################
|
||||
# AMPS
|
||||
# * enable: Enable (true) or disable (false) the AMP
|
||||
|
|
@ -935,13 +704,13 @@ refresh=3
|
|||
countmax=20
|
||||
|
||||
[amp_conntrack]
|
||||
# Use && separator for multiple commands
|
||||
# Use comma separated for multiple commands (no space around the comma)
|
||||
# If the regex key is not defined, the AMP will be executed every refresh second
|
||||
# and the process count will not be displayed (countmin and countmax will be ignore)
|
||||
enable=false
|
||||
refresh=30
|
||||
one_line=false
|
||||
command=sysctl net.netfilter.nf_conntrack_count && sysctl net.netfilter.nf_conntrack_max
|
||||
command=sysctl net.netfilter.nf_conntrack_count;sysctl net.netfilter.nf_conntrack_max
|
||||
|
||||
[amp_nginx]
|
||||
# Use the NGinx AMP
|
||||
|
|
|
|||
|
|
@ -4,23 +4,17 @@
|
|||
# https://github.com/nicolargo/glances
|
||||
#
|
||||
|
||||
# WARNING: the versions should be set.
|
||||
# Ex: Python 3.11 for Alpine 3.18
|
||||
# Note: ENV is for future running containers. ARG for building your Docker image.
|
||||
|
||||
# WARNING: the Alpine image version and Python version should be set.
|
||||
# Alpine 3.18 tag is a link to the latest 3.18.x version.
|
||||
# Be aware that if you change the Alpine version, you may have to change the Python version.
|
||||
ARG IMAGE_VERSION=3.23
|
||||
ARG PYTHON_VERSION=3.12
|
||||
ARG IMAGE_VERSION=3.18.0
|
||||
ARG PYTHON_VERSION=3.11
|
||||
|
||||
##############################################################################
|
||||
# Base layer to be used for building dependencies and the release images
|
||||
FROM alpine:${IMAGE_VERSION} AS base
|
||||
FROM alpine:${IMAGE_VERSION} as base
|
||||
|
||||
# Upgrade the system
|
||||
RUN apk update \
|
||||
&& apk upgrade --no-cache
|
||||
|
||||
# Install the minimal set of packages
|
||||
RUN apk add --no-cache \
|
||||
python3 \
|
||||
curl \
|
||||
|
|
@ -34,7 +28,7 @@ RUN apk add --no-cache \
|
|||
# BUILD Stages
|
||||
##############################################################################
|
||||
# BUILD: Base image shared by all build images
|
||||
FROM base AS build
|
||||
FROM base as build
|
||||
ARG PYTHON_VERSION
|
||||
|
||||
RUN apk add --no-cache \
|
||||
|
|
@ -54,96 +48,69 @@ RUN apk add --no-cache \
|
|||
cargo \
|
||||
pkgconfig \
|
||||
libffi-dev \
|
||||
openssl-dev \
|
||||
cmake
|
||||
# for cmake: Issue: https://github.com/nicolargo/glances/issues/2735
|
||||
|
||||
RUN python${PYTHON_VERSION} -m venv venv-build
|
||||
RUN /venv-build/bin/python${PYTHON_VERSION} -m pip install --upgrade pip
|
||||
openssl-dev
|
||||
|
||||
RUN python${PYTHON_VERSION} -m venv --without-pip venv
|
||||
|
||||
COPY pyproject.toml docker-requirements.txt all-requirements.txt ./
|
||||
COPY requirements.txt docker-requirements.txt webui-requirements.txt optional-requirements.txt ./
|
||||
|
||||
##############################################################################
|
||||
# BUILD: Install the minimal image deps
|
||||
FROM build AS buildminimal
|
||||
ARG PYTHON_VERSION
|
||||
FROM build as buildMinimal
|
||||
|
||||
RUN /venv-build/bin/python${PYTHON_VERSION} -m pip install --target="/venv/lib/python${PYTHON_VERSION}/site-packages" \
|
||||
-r docker-requirements.txt
|
||||
RUN python${PYTHON_VERSION} -m pip install --target="/venv/lib/python${PYTHON_VERSION}/site-packages" \
|
||||
# Note: requirements.txt is include by dep
|
||||
-r docker-requirements.txt \
|
||||
-r webui-requirements.txt
|
||||
|
||||
##############################################################################
|
||||
# BUILD: Install all the deps
|
||||
FROM build AS buildfull
|
||||
ARG PYTHON_VERSION
|
||||
FROM build as buildFull
|
||||
|
||||
# Required for optional dependency cassandra-driver
|
||||
ARG CASS_DRIVER_NO_CYTHON=1
|
||||
# See issue 2368
|
||||
ARG CARGO_NET_GIT_FETCH_WITH_CLI=true
|
||||
|
||||
RUN /venv-build/bin/python${PYTHON_VERSION} -m pip install --target="/venv/lib/python${PYTHON_VERSION}/site-packages" \
|
||||
-r all-requirements.txt
|
||||
RUN python${PYTHON_VERSION} -m pip install --target="/venv/lib/python${PYTHON_VERSION}/site-packages" \
|
||||
# Note: requirements.txt is include by dep
|
||||
-r optional-requirements.txt
|
||||
|
||||
##############################################################################
|
||||
# RELEASE Stages
|
||||
##############################################################################
|
||||
# Base image shared by all releases
|
||||
FROM base AS release
|
||||
ARG PYTHON_VERSION
|
||||
FROM base as release
|
||||
|
||||
# Copy source code and config file
|
||||
COPY ./docker-compose/glances.conf /etc/glances/glances.conf
|
||||
COPY ./glances/. /app/glances/
|
||||
|
||||
# Copy binary and update PATH
|
||||
COPY docker-bin.sh /usr/local/bin/glances
|
||||
RUN chmod a+x /usr/local/bin/glances
|
||||
ENV PATH="/venv/bin:$PATH"
|
||||
COPY ./docker-compose/glances.conf /etc/glances.conf
|
||||
COPY /glances /app/glances
|
||||
|
||||
# EXPOSE PORT (XMLRPC / WebUI)
|
||||
EXPOSE 61209 61208
|
||||
|
||||
# Add glances user
|
||||
# RUN addgroup -g 1000 glances && \
|
||||
# adduser -D -u 1000 -G glances glances && \
|
||||
# chown -R glances:glances /app
|
||||
|
||||
# Define default command.
|
||||
WORKDIR /app
|
||||
ENV PYTHON_VERSION=${PYTHON_VERSION}
|
||||
CMD ["/bin/sh", "-c", "/venv/bin/python${PYTHON_VERSION} -m glances ${GLANCES_OPT}"]
|
||||
CMD /venv/bin/python3 -m glances -C /etc/glances.conf $GLANCES_OPT
|
||||
|
||||
################################################################################
|
||||
# RELEASE: minimal
|
||||
FROM release AS minimal
|
||||
FROM release as minimal
|
||||
|
||||
COPY --from=buildminimal /venv /venv
|
||||
|
||||
# USER glances
|
||||
COPY --from=buildMinimal /venv /venv
|
||||
|
||||
################################################################################
|
||||
# RELEASE: full
|
||||
FROM release AS full
|
||||
FROM release as full
|
||||
|
||||
RUN apk add --no-cache libzmq
|
||||
|
||||
COPY --from=buildfull /venv /venv
|
||||
|
||||
# USER glances
|
||||
COPY --from=buildFull /venv /venv
|
||||
|
||||
################################################################################
|
||||
# RELEASE: dev - to be compatible with CI
|
||||
FROM full AS dev
|
||||
FROM full as dev
|
||||
|
||||
# Add the specific logger configuration file for Docker dev
|
||||
# All logs will be forwarded to stdout
|
||||
COPY ./docker-files/docker-logger.json /app
|
||||
ENV LOG_CFG=/app/docker-logger.json
|
||||
|
||||
# USER glances
|
||||
|
||||
WORKDIR /app
|
||||
ENV PYTHON_VERSION=${PYTHON_VERSION}
|
||||
CMD ["/bin/sh", "-c", "/venv/bin/python${PYTHON_VERSION} -m glances ${GLANCES_OPT}"]
|
||||
# Forward access and error logs to Docker's log collector
|
||||
RUN ln -sf /dev/stdout /tmp/glances-root.log \
|
||||
&& ln -sf /dev/stderr /var/log/error.log \
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
{
|
||||
"version": 1,
|
||||
"disable_existing_loggers": "False",
|
||||
"root": { "level": "INFO", "handlers": ["console"] },
|
||||
"formatters": {
|
||||
"standard": { "format": "%(asctime)s -- %(levelname)s -- %(message)s" },
|
||||
"short": { "format": "%(levelname)s -- %(message)s" },
|
||||
"long": {
|
||||
"format": "%(asctime)s -- %(levelname)s -- %(message)s (%(funcName)s in %(filename)s)"
|
||||
},
|
||||
"free": { "format": "%(message)s" }
|
||||
},
|
||||
"handlers": {
|
||||
"console": { "class": "logging.StreamHandler", "formatter": "standard" }
|
||||
},
|
||||
"loggers": {
|
||||
"debug": { "handlers": ["console"], "level": "DEBUG" },
|
||||
"verbose": { "handlers": ["console"], "level": "INFO" },
|
||||
"standard": { "handlers": ["console"], "level": "INFO" },
|
||||
"requests": { "handlers": ["console"], "level": "ERROR" },
|
||||
"elasticsearch": { "handlers": ["console"], "level": "ERROR" },
|
||||
"elasticsearch.trace": { "handlers": ["console"], "level": "ERROR" }
|
||||
}
|
||||
}
|
||||
|
|
@ -5,15 +5,15 @@
|
|||
#
|
||||
|
||||
# WARNING: the versions should be set.
|
||||
# Ex: Python 3.12 for Ubuntu 24.04
|
||||
# Ex: Python 3.10 for Ubuntu 22.04
|
||||
# Note: ENV is for future running containers. ARG for building your Docker image.
|
||||
|
||||
ARG IMAGE_VERSION=24.04
|
||||
ARG PYTHON_VERSION=3.12
|
||||
ARG IMAGE_VERSION=23.04
|
||||
ARG PYTHON_VERSION=3.11
|
||||
|
||||
##############################################################################
|
||||
# Base layer to be used for building dependencies and the release images
|
||||
FROM ubuntu:${IMAGE_VERSION} AS base
|
||||
FROM ubuntu:${IMAGE_VERSION} as base
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get update \
|
||||
|
|
@ -32,114 +32,82 @@ RUN apt-get update \
|
|||
# BUILD Stages
|
||||
##############################################################################
|
||||
# BUILD: Base image shared by all build images
|
||||
FROM base AS build
|
||||
FROM base as build
|
||||
ARG PYTHON_VERSION
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# Upgrade the system
|
||||
RUN apt-get update \
|
||||
&& apt-get upgrade -y
|
||||
|
||||
# Install build-time dependencies
|
||||
RUN apt-get install -y --no-install-recommends \
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
python3-dev \
|
||||
python3-venv \
|
||||
python3-pip \
|
||||
python3-wheel \
|
||||
libzmq5 \
|
||||
musl-dev \
|
||||
build-essential
|
||||
|
||||
RUN apt-get clean \
|
||||
build-essential \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN python3 -m venv --without-pip venv
|
||||
RUN python${PYTHON_VERSION} -m venv --without-pip venv
|
||||
|
||||
COPY pyproject.toml docker-requirements.txt all-requirements.txt ./
|
||||
COPY requirements.txt docker-requirements.txt webui-requirements.txt optional-requirements.txt ./
|
||||
|
||||
##############################################################################
|
||||
# BUILD: Install the minimal image deps
|
||||
FROM build AS buildminimal
|
||||
ARG PYTHON_VERSION
|
||||
FROM build as buildMinimal
|
||||
|
||||
RUN python3 -m pip install --target="/venv/lib/python${PYTHON_VERSION}/site-packages" \
|
||||
-r docker-requirements.txt
|
||||
RUN python${PYTHON_VERSION} -m pip install --target="/venv/lib/python${PYTHON_VERSION}/site-packages" \
|
||||
# Note: requirements.txt is include by dep
|
||||
-r docker-requirements.txt \
|
||||
-r webui-requirements.txt
|
||||
|
||||
##############################################################################
|
||||
# BUILD: Install all the deps
|
||||
FROM build AS buildfull
|
||||
ARG PYTHON_VERSION
|
||||
FROM build as buildFull
|
||||
|
||||
RUN python3 -m pip install --target="/venv/lib/python${PYTHON_VERSION}/site-packages" \
|
||||
-r all-requirements.txt
|
||||
RUN python${PYTHON_VERSION} -m pip install --target="/venv/lib/python${PYTHON_VERSION}/site-packages" \
|
||||
# Note: requirements.txt is include by dep
|
||||
-r optional-requirements.txt
|
||||
|
||||
##############################################################################
|
||||
# RELEASE Stages
|
||||
##############################################################################
|
||||
# Base image shared by all releases
|
||||
FROM base AS release
|
||||
ARG PYTHON_VERSION
|
||||
FROM base as release
|
||||
|
||||
# Copy Glances source code and config file
|
||||
COPY ./docker-compose/glances.conf /etc/glances/glances.conf
|
||||
COPY ./glances/. /app/glances/
|
||||
|
||||
# Copy binary and update PATH
|
||||
COPY docker-bin.sh /usr/local/bin/glances
|
||||
RUN chmod a+x /usr/local/bin/glances
|
||||
ENV PATH="/venv/bin:$PATH"
|
||||
COPY ./docker-compose/glances.conf /etc/glances.conf
|
||||
COPY /glances /app/glances
|
||||
|
||||
# EXPOSE PORT (XMLRPC / WebUI)
|
||||
EXPOSE 61209 61208
|
||||
|
||||
# Add glances user
|
||||
# NOTE: If used, the Glances Docker plugin do not work...
|
||||
# UID and GUID 1000 are already configured for the ubuntu user
|
||||
# Create anew one with UID and GUID 1001
|
||||
# RUN groupadd -g 1001 glances && \
|
||||
# useradd -u 1001 -g glances glances && \
|
||||
# chown -R glances:glances /app
|
||||
|
||||
# Define default command.
|
||||
WORKDIR /app
|
||||
ENV PYTHON_VERSION=${PYTHON_VERSION}
|
||||
CMD ["/bin/sh", "-c", "/venv/bin/python${PYTHON_VERSION} -m glances ${GLANCES_OPT}"]
|
||||
CMD /venv/bin/python3 -m glances -C /etc/glances.conf $GLANCES_OPT
|
||||
|
||||
################################################################################
|
||||
# RELEASE: minimal
|
||||
FROM release AS minimal
|
||||
ARG PYTHON_VERSION
|
||||
FROM release as minimal
|
||||
|
||||
COPY --from=buildMinimal /venv /venv
|
||||
|
||||
# USER glances
|
||||
|
||||
################################################################################
|
||||
# RELEASE: full
|
||||
FROM release AS full
|
||||
ARG PYTHON_VERSION
|
||||
FROM release as full
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends libzmq5 \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY --from=buildfull /venv /venv
|
||||
|
||||
# USER glances
|
||||
COPY --from=buildFull /venv /venv
|
||||
|
||||
################################################################################
|
||||
# RELEASE: dev - to be compatible with CI
|
||||
FROM full AS dev
|
||||
ARG PYTHON_VERSION
|
||||
FROM full as dev
|
||||
|
||||
# Add the specific logger configuration file for Docker dev
|
||||
# All logs will be forwarded to stdout
|
||||
COPY ./docker-files/docker-logger.json /app
|
||||
ENV LOG_CFG=/app/docker-logger.json
|
||||
|
||||
# USER glances
|
||||
|
||||
WORKDIR /app
|
||||
ENV PYTHON_VERSION=${PYTHON_VERSION}
|
||||
CMD ["/bin/sh", "-c", "/venv/bin/python${PYTHON_VERSION} -m glances ${GLANCES_OPT}"]
|
||||
# Forward access and error logs to Docker's log collector
|
||||
RUN ln -sf /dev/stdout /tmp/glances-root.log \
|
||||
&& ln -sf /dev/stderr /var/log/error.log
|
||||
|
|
@ -1,83 +1,10 @@
|
|||
# This file was autogenerated by uv via the following command:
|
||||
# uv export --no-emit-workspace --no-hashes --no-group dev --extra containers --extra web --output-file docker-requirements.txt
|
||||
annotated-doc==0.0.4
|
||||
# via fastapi
|
||||
annotated-types==0.7.0
|
||||
# via pydantic
|
||||
anyio==4.12.0
|
||||
# via starlette
|
||||
certifi==2025.11.12
|
||||
# via requests
|
||||
charset-normalizer==3.4.4
|
||||
# via requests
|
||||
click==8.1.8
|
||||
# via uvicorn
|
||||
colorama==0.4.6 ; sys_platform == 'win32'
|
||||
# via click
|
||||
defusedxml==0.7.1
|
||||
# via glances
|
||||
docker==7.1.0
|
||||
# via glances
|
||||
exceptiongroup==1.2.2 ; python_full_version < '3.11'
|
||||
# via anyio
|
||||
fastapi==0.128.0
|
||||
# via glances
|
||||
h11==0.16.0
|
||||
# via uvicorn
|
||||
idna==3.11
|
||||
# via
|
||||
# anyio
|
||||
# requests
|
||||
jinja2==3.1.6
|
||||
# via glances
|
||||
markupsafe==3.0.3
|
||||
# via jinja2
|
||||
packaging==25.0
|
||||
# via glances
|
||||
podman==5.6.0
|
||||
# via glances
|
||||
psutil==7.2.1
|
||||
# via glances
|
||||
pydantic==2.12.5
|
||||
# via fastapi
|
||||
pydantic-core==2.41.5
|
||||
# via pydantic
|
||||
python-dateutil==2.9.0.post0
|
||||
# via glances
|
||||
pywin32==311 ; sys_platform == 'win32'
|
||||
# via docker
|
||||
requests==2.32.5
|
||||
# via
|
||||
# docker
|
||||
# glances
|
||||
# podman
|
||||
shtab==1.8.0 ; sys_platform != 'win32'
|
||||
# via glances
|
||||
six==1.17.0
|
||||
# via
|
||||
# glances
|
||||
# python-dateutil
|
||||
starlette==0.50.0
|
||||
# via fastapi
|
||||
tomli==2.0.2 ; python_full_version < '3.11'
|
||||
# via podman
|
||||
typing-extensions==4.15.0
|
||||
# via
|
||||
# anyio
|
||||
# fastapi
|
||||
# pydantic
|
||||
# pydantic-core
|
||||
# starlette
|
||||
# typing-inspection
|
||||
# uvicorn
|
||||
typing-inspection==0.4.2
|
||||
# via pydantic
|
||||
urllib3==2.6.2
|
||||
# via
|
||||
# docker
|
||||
# podman
|
||||
# requests
|
||||
uvicorn==0.40.0
|
||||
# via glances
|
||||
windows-curses==2.4.1 ; sys_platform == 'win32'
|
||||
# via glances
|
||||
# install with base requirements file
|
||||
-r requirements.txt
|
||||
|
||||
docker>=6.1.1; python_version >= "3.7"
|
||||
podman; python_version >= "3.6"
|
||||
packaging; python_version >= "3.7"
|
||||
python-dateutil
|
||||
six
|
||||
urllib3<2.0 # See issue https://github.com/nicolargo/glances/issues/2392
|
||||
requests # See issue - https://github.com/nicolargo/glances/issues/2233
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
# You can set these variables from the command line.
|
||||
SPHINXOPTS =
|
||||
SPHINXBUILD = ../.venv/bin/sphinx-build
|
||||
SPHINXBUILD = ../venv/bin/sphinx-build
|
||||
PAPER =
|
||||
BUILDDIR = _build
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +0,0 @@
|
|||
<svg width="466" height="513" viewBox="0 0 466 513" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M255.158 74.6719C210.447 74.6719 169.577 90.8033 137.94 117.597L101.314 74.351C142.801 39.2144 196.539 18 255.158 18C313.777 18 367.514 39.2144 409.002 74.351L372.375 117.597C340.739 90.8033 299.869 74.6719 255.158 74.6719Z" fill="#57CB6A"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M69.724 269.786C78.8585 239.798 93.6848 213.11 114.202 189.72C109.215 190.339 104.374 191.744 99.6848 193.934C99.4507 193.778 99.2179 193.622 98.9852 193.466C98.7524 193.31 98.5197 193.153 98.2856 192.997C115.671 167.026 137.51 145.644 163.821 128.851C148.064 102.5 139.949 73.9389 139.475 43.1663C175.368 48.9377 205.645 65.0133 230.302 91.3932C274.053 98.9935 313.69 115.849 349.218 141.961C357.984 148.228 364.694 156.188 369.349 165.841C371.421 173.282 373.29 180.773 374.963 188.315C378.06 195.163 382.598 200.939 388.553 205.639C396.216 212.36 404.635 217.979 413.827 222.496C425.428 226.146 437.299 228.487 449.419 229.519C450.036 238.808 447.687 247.236 442.388 254.803C422.562 269.701 400.243 275.475 375.436 272.127C354.959 268.606 334.526 265.016 314.115 261.358C298.373 261.798 289.313 269.913 286.953 285.706C285.479 298.85 288.291 311.024 295.383 322.227C298.898 327.698 302.636 333.004 306.612 338.146C317.576 350.517 329.288 362.067 341.732 372.795C335.351 374.599 328.801 375.692 322.073 376.072C329.039 380.163 337.274 385.383 345.878 390.837C360.519 400.118 376.227 410.074 388.553 416.286C337.769 445.709 282.887 477.418 169.436 434.6C120.749 416.226 83.0894 382.995 69.724 348.786C58.1736 319.223 60.5895 299.774 69.724 269.786ZM293.571 177.683C316.621 190.99 343.292 187.948 343.292 187.948C343.292 187.948 333.852 161.145 310.802 147.837C287.753 134.529 259.821 139.756 259.821 139.756C259.821 139.756 270.521 164.375 293.571 177.683Z" fill="#494949"/>
|
||||
<path opacity="0.976" fill-rule="evenodd" clip-rule="evenodd" d="M296.872 356.751C291.496 356.475 286.193 356.007 280.958 355.347C300.379 370.178 315.357 388.594 325.89 410.591C321.407 409.082 316.726 407.989 311.849 407.314C315.577 416.3 319.321 425.351 323.082 434.468C261.493 452.42 204.235 443.369 151.309 407.314C150.685 402.008 150.685 396.702 151.309 391.396C152.52 380.056 154.079 368.82 155.99 357.688C146.778 368.801 139.913 381.286 135.396 395.141C133.367 393.112 131.34 391.084 129.311 389.055C131.985 368.86 138.225 349.821 148.033 331.938C145.902 332.304 143.718 332.304 141.48 331.938C142.614 332.774 142.614 333.554 141.48 334.279C137.084 337.409 132.716 340.53 128.375 343.643C140.699 316.793 158.484 294.164 181.732 275.758C188.213 271.424 195.078 267.834 202.326 264.99C204.288 277.522 207.565 289.694 212.155 301.507C212.731 303.02 213.667 304.268 214.964 305.252C224.041 288.216 235.118 272.61 248.195 258.435C247.883 258.123 247.57 257.811 247.259 257.499C236.51 263.412 226.992 270.903 218.708 279.971C214.966 269.684 212.781 259.072 212.155 248.135C211.792 247.267 211.168 246.642 210.283 246.263C195.64 251.401 181.911 258.268 169.095 266.862C174.297 249.902 182.254 234.297 192.965 220.045C191.167 218.977 189.295 218.82 187.349 219.577C181.431 221.394 175.503 223.112 169.563 224.727C169.563 224.415 169.563 224.102 169.563 223.791C186.845 203.591 208.688 191.107 235.089 186.337C228.102 183.226 220.925 180.573 213.559 178.378C232.751 178.16 251.16 181.905 268.789 189.614C293.076 201.759 316.79 214.868 339.932 228.94C364.586 243.299 391.108 249.229 419.5 246.731C424.816 244.085 429.496 244.865 433.541 249.072C417.681 261.779 399.582 266.617 379.248 263.585C362.612 260.632 346.075 257.198 329.635 253.285C289.901 244.644 271.023 260.717 273.001 301.507C274.036 311.264 276.532 320.627 280.49 329.597C285.501 339.011 290.961 348.063 296.872 356.751Z" fill="#656565"/>
|
||||
<path opacity="0.976" fill-rule="evenodd" clip-rule="evenodd" d="M196.71 87.0847C188.449 82.7977 180.024 78.7402 171.436 74.9123C171.124 75.2244 170.811 75.5365 170.5 75.8486C174.6 82.3323 178.344 89.0428 181.733 95.98C178.363 95.004 175.243 93.2874 172.372 90.8301C172.06 91.1422 171.747 91.4544 171.436 91.7665C172.803 97.9843 174.052 104.227 175.18 110.493C164.477 95.9365 157.3 79.7065 153.65 61.8035C170.36 66.374 184.714 74.8011 196.71 87.0847Z" fill="#656565"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M137.94 117.597C98.5802 150.932 73.6684 200.623 73.6684 256.161C73.6684 356.395 154.924 437.65 255.158 437.65C292.62 437.65 327.376 426.327 356.267 406.904V308.015H412.939V435.092L402.098 443.601C361.629 475.365 310.568 494.322 255.158 494.322C123.625 494.322 16.9966 387.694 16.9966 256.161C16.9966 183.263 49.7834 117.993 101.314 74.3508L137.94 117.597Z" fill="#57CB6A"/>
|
||||
<path d="M298.832 173.943V157.86C298.411 158.251 297.894 158.641 297.28 159.032C296.682 159.407 296.052 159.765 295.389 160.106C294.726 160.432 294.071 160.733 293.425 161.01C292.778 161.27 292.213 161.474 291.728 161.62V156.81C292.277 156.582 292.908 156.24 293.619 155.785C294.346 155.329 295.049 154.849 295.728 154.344C296.407 153.823 297.021 153.326 297.571 152.854C298.12 152.382 298.492 152.016 298.686 151.756H303.899V173.943H298.832Z" fill="#57CB6A"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 5.1 KiB |
|
|
@ -1,8 +0,0 @@
|
|||
<svg width="466" height="513" viewBox="0 0 466 513" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M254.919 74.6719C210.209 74.6719 169.338 90.8033 137.702 117.597L101.076 74.351C142.563 39.2144 196.3 18 254.919 18C313.539 18 367.276 39.2144 408.763 74.351L372.137 117.597C340.501 90.8033 299.63 74.6719 254.919 74.6719Z" fill="#57CB6A"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M69.4858 269.786C78.6202 239.798 93.4465 213.11 113.963 189.72C108.977 190.339 104.136 191.744 99.4465 193.934C99.2124 193.778 98.9797 193.622 98.7469 193.466C98.5141 193.31 98.2814 193.153 98.0473 192.997C115.432 167.026 137.272 145.644 163.583 128.851C147.826 102.5 139.711 73.9389 139.237 43.1663C175.13 48.9377 205.406 65.0133 230.063 91.3932C273.815 98.9935 313.452 115.849 348.979 141.961C357.746 148.228 364.456 156.188 369.111 165.841C371.183 173.282 373.052 180.773 374.725 188.315C377.822 195.163 382.36 200.939 388.315 205.639C395.978 212.36 404.397 217.979 413.588 222.496C425.19 226.146 437.061 228.487 449.181 229.519C449.798 238.808 447.449 247.236 442.15 254.803C422.323 269.701 400.004 275.475 375.197 272.127C354.721 268.606 334.288 265.016 313.877 261.358C298.135 261.798 289.075 269.913 286.714 285.706C285.24 298.85 288.053 311.024 295.145 322.227C298.66 327.698 302.398 333.004 306.373 338.146C317.338 350.517 329.049 362.067 341.494 372.795C335.112 374.599 328.562 375.692 321.835 376.072C328.8 380.163 337.036 385.383 345.639 390.837C360.281 400.118 375.988 410.074 388.315 416.286C337.531 445.709 282.649 477.418 169.198 434.6C120.511 416.226 82.8511 382.995 69.4857 348.786C57.9354 319.223 60.3512 299.774 69.4858 269.786ZM293.333 177.683C316.383 190.99 343.053 187.948 343.053 187.948C343.053 187.948 333.614 161.145 310.564 147.837C287.514 134.529 259.583 139.756 259.583 139.756C259.583 139.756 270.283 164.375 293.333 177.683Z" fill="#EBEBEB"/>
|
||||
<path opacity="0.976" fill-rule="evenodd" clip-rule="evenodd" d="M296.633 356.751C291.258 356.475 285.954 356.007 280.72 355.347C300.141 370.178 315.118 388.594 325.652 410.591C321.168 409.082 316.488 407.989 311.611 407.314C315.338 416.3 319.083 425.351 322.844 434.468C261.255 452.42 203.997 443.369 151.071 407.314C150.447 402.008 150.447 396.702 151.071 391.396C152.281 380.056 153.841 368.82 155.751 357.688C146.539 368.801 139.675 381.286 135.157 395.141C133.129 393.112 131.101 391.084 129.073 389.055C131.746 368.86 137.986 349.821 147.795 331.938C145.664 332.304 143.48 332.304 141.242 331.938C142.376 332.774 142.376 333.554 141.242 334.279C136.846 337.409 132.477 340.53 128.137 343.643C140.46 316.793 158.246 294.164 181.494 275.758C187.975 271.424 194.84 267.834 202.088 264.99C204.05 277.522 207.326 289.694 211.917 301.507C212.493 303.02 213.429 304.268 214.725 305.252C223.803 288.216 234.879 272.61 247.956 258.435C247.645 258.123 247.332 257.811 247.02 257.499C236.271 263.412 226.754 270.903 218.47 279.971C214.728 269.684 212.543 259.072 211.917 248.135C211.554 247.267 210.929 246.642 210.045 246.263C195.401 251.401 181.673 258.268 168.857 266.862C174.059 249.902 182.015 234.297 192.727 220.045C190.929 218.977 189.057 218.82 187.111 219.577C181.193 221.394 175.264 223.112 169.325 224.727C169.325 224.415 169.325 224.102 169.325 223.791C186.607 203.591 208.45 191.107 234.851 186.337C227.864 183.226 220.687 180.573 213.321 178.378C232.513 178.16 250.922 181.905 268.551 189.614C292.837 201.759 316.551 214.868 339.693 228.94C364.347 243.299 390.87 249.229 419.261 246.731C424.577 244.085 429.258 244.865 433.303 249.072C417.442 261.779 399.344 266.617 379.009 263.585C362.374 260.632 345.837 257.198 329.396 253.285C289.663 244.644 270.785 260.717 272.763 301.507C273.797 311.264 276.294 320.627 280.252 329.597C285.263 339.011 290.723 348.063 296.633 356.751Z" fill="#C1C1C1"/>
|
||||
<path opacity="0.976" fill-rule="evenodd" clip-rule="evenodd" d="M196.472 87.0847C188.211 82.7977 179.786 78.7402 171.197 74.9123C170.886 75.2244 170.573 75.5365 170.261 75.8486C174.361 82.3323 178.106 89.0428 181.494 95.98C178.124 95.004 175.004 93.2874 172.133 90.8301C171.822 91.1422 171.509 91.4544 171.197 91.7665C172.565 97.9843 173.814 104.227 174.942 110.493C164.238 95.9365 157.061 79.7065 153.412 61.8035C170.122 66.374 184.476 74.8011 196.472 87.0847Z" fill="#C1C1C1"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M137.702 117.597C98.3419 150.932 73.4302 200.623 73.4302 256.161C73.4302 356.395 154.686 437.65 254.92 437.65C292.382 437.65 327.138 426.327 356.029 406.904V308.015H412.701V435.092L401.86 443.601C361.391 475.365 310.33 494.322 254.92 494.322C123.387 494.322 16.7583 387.694 16.7583 256.161C16.7583 183.263 49.5451 117.993 101.076 74.3508L137.702 117.597Z" fill="#57CB6A"/>
|
||||
<path d="M298.593 173.943V157.86C298.173 158.251 297.656 158.641 297.041 159.032C296.443 159.407 295.813 159.765 295.15 160.106C294.488 160.432 293.833 160.733 293.186 161.01C292.54 161.27 291.974 161.474 291.489 161.62V156.81C292.039 156.582 292.669 156.24 293.38 155.785C294.108 155.329 294.811 154.849 295.49 154.344C296.169 153.823 296.783 153.326 297.332 152.854C297.882 152.382 298.254 152.016 298.448 151.756H303.66V173.943H298.593Z" fill="#57CB6A"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 5.1 KiB |
|
|
@ -1,15 +0,0 @@
|
|||
<svg width="680" height="728" viewBox="0 0 680 728" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M119.501 582.227C117.131 587.757 115.551 592.496 113.181 598.026C104.492 593.286 95.012 590.916 85.5325 590.126C62.6238 588.546 46.0347 598.816 39.715 620.935C34.9753 637.524 34.9753 654.113 42.0849 669.912C48.4045 684.131 58.674 692.031 74.4731 693.611C83.9526 694.401 92.6421 693.611 102.122 692.031C102.122 684.131 102.122 675.442 102.122 667.542C102.122 659.643 102.122 651.743 102.122 643.843C108.441 643.843 113.971 643.843 119.501 643.843C119.501 664.382 119.501 684.131 119.501 705.46C113.971 706.25 108.441 707.83 102.912 708.62C94.2221 709.41 85.5325 710.99 76.843 710.99C42.8748 710.99 20.756 688.871 16.8062 656.483C15.2263 643.054 15.2263 628.834 19.9661 615.405C28.6556 589.336 50.7744 573.537 78.4229 572.747C89.4823 572.747 99.7518 574.327 109.231 577.487C113.181 579.067 116.341 580.647 119.501 582.227Z" fill="#494949"/>
|
||||
<path d="M576.096 663.595C553.187 663.595 531.068 663.595 508.159 663.595C509.739 668.335 509.739 673.074 511.319 677.814C515.269 688.084 523.169 692.823 533.438 694.403C543.707 695.983 553.977 695.193 564.246 691.243C565.036 691.243 566.616 690.453 567.406 690.453C568.196 695.193 568.986 699.933 569.776 705.463C562.666 707.043 556.347 708.622 550.027 709.412C537.388 710.992 524.748 710.202 512.899 703.883C502.63 698.353 495.52 690.453 492.36 679.394C487.62 662.805 487.62 646.216 495.52 630.417C504.999 611.458 525.538 602.768 546.077 607.508C561.086 611.458 568.986 620.937 572.936 635.946C576.096 644.636 576.886 653.325 576.096 663.595ZM508.949 648.586C525.538 648.586 541.338 648.586 557.927 648.586C557.927 632.787 550.027 622.517 536.598 621.727C521.589 620.937 510.529 632.787 508.949 648.586Z" fill="#494949"/>
|
||||
<path d="M268.802 706.25C249.843 708.62 231.674 712.569 213.505 707.04C200.076 703.09 193.756 692.82 193.756 678.601C193.756 665.172 200.866 654.903 213.505 650.953C224.565 647.003 236.414 647.003 248.263 649.373C249.843 649.373 250.633 650.163 252.213 650.163C253.793 634.364 248.263 624.094 234.044 622.514C224.565 621.724 215.875 623.304 206.396 625.674C205.606 620.934 204.816 616.195 204.026 611.455C209.556 608.295 215.875 608.295 222.195 607.505C232.464 606.715 241.944 606.715 251.423 610.665C259.323 613.825 264.853 620.144 267.222 628.044C268.012 631.204 269.592 635.154 269.592 638.313C268.802 660.432 268.802 683.341 268.802 706.25ZM251.423 663.592C241.154 661.222 230.094 660.432 220.615 664.382C214.295 666.752 211.135 672.282 211.135 678.601C211.135 686.501 215.085 690.451 222.195 692.82C231.674 695.98 241.944 694.4 251.423 693.61C251.423 683.341 251.423 673.861 251.423 663.592Z" fill="#494949"/>
|
||||
<path d="M298.826 612.249C304.356 611.459 309.886 609.879 316.205 609.089C326.475 608.299 337.534 607.509 347.804 608.299C364.393 609.879 374.662 620.938 377.032 638.317C377.822 643.847 377.822 648.587 377.822 654.116C377.822 670.706 377.822 686.505 377.822 703.094C377.822 704.674 377.822 706.254 377.822 707.834C371.502 707.834 365.973 707.834 359.653 707.834C359.653 706.254 359.653 704.674 359.653 703.094C359.653 688.085 359.653 673.075 359.653 658.066C359.653 650.957 358.863 643.847 357.283 636.737C355.703 628.838 350.173 624.888 343.064 624.098C334.374 622.518 325.685 624.098 316.995 625.678C316.995 653.326 316.995 680.975 316.995 708.623C310.676 708.623 305.146 708.623 299.616 708.623C298.826 676.235 298.826 644.637 298.826 612.249Z" fill="#494949"/>
|
||||
<path d="M657.454 610.664C656.664 616.193 655.084 620.933 654.294 624.883C647.184 623.303 640.865 621.723 633.755 621.723C629.805 621.723 625.066 622.513 621.116 623.303C613.216 626.463 610.846 635.152 617.166 641.472C619.536 643.842 623.486 646.212 627.436 647.792C633.755 650.952 640.075 652.531 646.394 655.691C653.504 658.851 659.824 663.591 662.194 672.28C666.143 688.869 660.614 703.879 639.285 707.828C625.066 710.988 610.846 710.198 597.417 704.669C596.627 704.669 595.837 703.879 595.047 703.879L594.257 703.089C595.047 698.349 596.627 693.609 597.417 688.869C604.527 690.449 610.846 692.819 617.956 693.609C624.276 694.399 631.385 693.609 637.705 692.029C646.395 689.659 648.764 680.18 642.445 673.86C640.075 671.49 636.915 669.121 633.755 668.331C627.436 665.171 621.906 662.801 615.586 660.431C608.477 657.271 602.157 653.321 598.997 645.422C592.677 629.623 601.367 613.034 618.746 608.294C628.225 605.134 645.605 605.924 657.454 610.664Z" fill="#494949"/>
|
||||
<path d="M474.178 690.45C474.968 695.19 475.758 699.929 476.548 704.669C474.968 705.459 474.178 706.249 473.388 706.249C459.958 710.199 446.529 710.989 433.1 707.039C418.881 702.299 408.611 692.82 404.661 678.6C399.922 662.801 399.922 647.002 407.821 631.203C414.931 616.194 427.57 607.504 444.159 605.924C454.429 605.134 464.698 605.924 474.968 610.664C473.388 615.404 472.598 620.144 471.018 624.883C465.488 624.093 460.748 622.513 456.009 621.723C446.529 620.934 436.26 621.723 429.15 629.623C425.99 632.783 423.62 637.523 422.04 641.472C418.881 653.322 418.881 665.171 422.83 676.231C426.78 686.5 433.89 691.24 444.159 692.82C452.849 694.4 462.328 693.61 471.018 690.45C471.808 691.24 472.598 691.24 474.178 690.45Z" fill="#494949"/>
|
||||
<path d="M181.11 694.401C180.32 699.141 179.53 703.88 178.74 708.62C162.151 711.78 147.932 701.511 147.932 684.132C147.932 646.214 147.932 608.296 147.932 571.168C147.932 568.798 147.932 566.428 147.932 564.058C154.252 563.268 159.781 561.688 166.101 560.898C166.101 563.268 166.101 564.848 166.101 566.428C166.101 602.766 166.101 639.104 166.101 675.442C166.101 677.812 166.101 680.182 166.101 681.762C166.891 688.871 169.261 692.031 177.161 693.611C177.95 693.611 178.74 694.401 181.11 694.401Z" fill="#494949"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M363.176 77.9551C315.086 77.9551 271.127 95.3057 237.099 124.124L197.705 77.6099C242.328 39.8177 300.127 17 363.176 17C426.226 17 484.025 39.8177 528.647 77.6099L489.253 124.124C455.226 95.3057 411.266 77.9551 363.176 77.9551Z" fill="#57CB6A"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M163.728 287.816C173.553 255.562 189.499 226.856 211.567 201.698C206.204 202.364 200.997 203.875 195.953 206.231C195.701 206.063 195.451 205.895 195.2 205.727C194.95 205.559 194.7 205.391 194.448 205.224C213.147 177.289 236.637 154.292 264.937 136.229C247.989 107.887 239.26 77.1667 238.751 44.0684C277.357 50.276 309.921 67.5666 336.442 95.9402C383.5 104.115 426.133 122.245 464.345 150.33C473.774 157.07 480.992 165.632 485.998 176.014C488.227 184.018 490.237 192.075 492.037 200.188C495.367 207.553 500.249 213.765 506.654 218.821C514.896 226.05 523.951 232.093 533.837 236.951C546.316 240.877 559.084 243.395 572.12 244.505C572.784 254.497 570.257 263.562 564.558 271.7C543.233 287.724 519.227 293.935 492.545 290.334C470.521 286.547 448.544 282.685 426.589 278.751C409.658 279.224 399.913 287.953 397.374 304.939C395.789 319.077 398.814 332.171 406.442 344.22C410.222 350.104 414.243 355.812 418.519 361.343C430.312 374.648 442.909 387.071 456.294 398.61C449.43 400.551 442.385 401.726 435.149 402.135C442.641 406.535 451.499 412.15 460.753 418.015C476.501 427.998 493.395 438.707 506.654 445.388C452.031 477.035 393.002 511.14 270.976 465.087C218.61 445.323 178.103 409.581 163.728 372.787C151.304 340.989 153.903 320.07 163.728 287.816ZM404.493 188.751C429.285 203.065 457.971 199.792 457.971 199.792C457.971 199.792 447.819 170.964 423.027 156.65C398.235 142.336 368.192 147.958 368.192 147.958C368.192 147.958 379.701 174.438 404.493 188.751Z" fill="#494949"/>
|
||||
<path opacity="0.976" fill-rule="evenodd" clip-rule="evenodd" d="M408.043 381.354C402.262 381.057 396.557 380.553 390.927 379.843C411.816 395.796 427.925 415.603 439.255 439.263C434.432 437.639 429.398 436.464 424.152 435.738C428.162 445.403 432.189 455.138 436.234 464.944C369.99 484.253 308.405 474.518 251.479 435.738C250.808 430.031 250.808 424.324 251.479 418.617C252.781 406.42 254.458 394.335 256.513 382.361C246.605 394.314 239.222 407.743 234.363 422.645C232.181 420.463 230 418.282 227.818 416.099C230.694 394.378 237.406 373.9 247.955 354.665C245.664 355.059 243.315 355.059 240.907 354.665C242.127 355.565 242.127 356.404 240.907 357.183C236.179 360.55 231.48 363.907 226.812 367.254C240.067 338.375 259.197 314.037 284.201 294.239C291.172 289.578 298.556 285.717 306.352 282.657C308.462 296.136 311.986 309.229 316.924 321.934C317.543 323.562 318.55 324.904 319.944 325.963C329.708 307.638 341.622 290.853 355.687 275.607C355.352 275.272 355.016 274.935 354.68 274.6C343.119 280.96 332.882 289.017 323.972 298.771C319.947 287.706 317.597 276.292 316.924 264.529C316.533 263.594 315.862 262.923 314.91 262.515C299.16 268.042 284.394 275.427 270.609 284.671C276.204 266.429 284.762 249.645 296.284 234.316C294.349 233.167 292.336 232.998 290.242 233.812C283.877 235.767 277.501 237.614 271.113 239.351C271.113 239.016 271.113 238.679 271.113 238.344C289.701 216.618 313.194 203.19 341.591 198.06C334.076 194.714 326.357 191.86 318.434 189.499C339.076 189.265 358.877 193.293 377.838 201.585C403.96 214.648 429.466 228.747 454.358 243.883C480.875 259.327 509.402 265.705 539.939 263.018C545.657 260.172 550.691 261.011 555.042 265.536C537.983 279.204 518.516 284.407 496.645 281.146C478.752 277.97 460.965 274.277 443.282 270.068C400.546 260.773 380.241 278.062 382.368 321.934C383.481 332.428 386.166 342.5 390.423 352.148C395.813 362.273 401.686 372.009 408.043 381.354Z" fill="#666666"/>
|
||||
<path opacity="0.976" fill-rule="evenodd" clip-rule="evenodd" d="M300.311 91.306C291.426 86.695 282.364 82.3308 273.127 78.2136C272.791 78.5492 272.455 78.885 272.12 79.2207C276.53 86.1944 280.557 93.4121 284.202 100.874C280.577 99.8239 277.221 97.9775 274.133 95.3345C273.798 95.6701 273.462 96.0059 273.127 96.3416C274.598 103.029 275.941 109.744 277.154 116.484C265.642 100.827 257.922 83.3702 253.997 64.114C271.97 69.03 287.409 78.094 300.311 91.306Z" fill="#666666"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M237.1 124.124C194.765 159.979 167.97 213.426 167.97 273.161C167.97 380.971 255.367 468.367 363.176 468.367C403.47 468.367 440.853 456.188 471.927 435.297V328.934H532.882V465.615L521.222 474.767C477.695 508.932 422.774 529.322 363.176 529.322C221.702 529.322 107.015 414.635 107.015 273.161C107.015 194.753 142.28 124.551 197.705 77.6099L237.1 124.124Z" fill="#57CB6A"/>
|
||||
<path d="M410.151 184.729V167.431C409.699 167.851 409.143 168.271 408.482 168.691C407.839 169.094 407.161 169.479 406.448 169.847C405.735 170.197 405.031 170.521 404.336 170.819C403.64 171.099 403.032 171.318 402.51 171.475V166.301C403.101 166.056 403.779 165.688 404.544 165.198C405.327 164.708 406.083 164.191 406.813 163.649C407.543 163.088 408.204 162.554 408.795 162.047C409.386 161.539 409.786 161.145 409.995 160.865H415.601V184.729H410.151Z" fill="#57CB6A"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 10 KiB |
|
|
@ -1,15 +0,0 @@
|
|||
<svg width="680" height="728" viewBox="0 0 680 728" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M120.262 582.227C117.893 587.757 116.313 592.496 113.943 598.026C105.253 593.286 95.7737 590.916 86.2942 590.126C63.3855 588.546 46.7964 598.816 40.4767 620.935C35.737 637.524 35.737 654.113 42.8466 669.912C49.1663 684.131 59.4357 692.031 75.2348 693.611C84.7143 694.401 93.4039 693.611 102.883 692.031C102.883 684.131 102.883 675.442 102.883 667.542C102.883 659.643 102.883 651.743 102.883 643.843C109.203 643.843 114.733 643.843 120.262 643.843C120.262 664.382 120.262 684.131 120.262 705.46C114.733 706.25 109.203 707.83 103.673 708.62C94.9838 709.41 86.2943 710.99 77.6047 710.99C43.6366 710.99 21.5177 688.871 17.568 656.483C15.988 643.054 15.988 628.834 20.7278 615.405C29.4173 589.336 51.5361 573.537 79.1846 572.747C90.244 572.747 100.513 574.327 109.993 577.487C113.943 579.067 117.103 580.647 120.262 582.227Z" fill="#C8C8C8"/>
|
||||
<path d="M576.857 663.595C553.949 663.595 531.83 663.595 508.921 663.595C510.501 668.335 510.501 673.075 512.081 677.814C516.031 688.084 523.93 692.824 534.2 694.403C544.469 695.983 554.739 695.193 565.008 691.244C565.798 691.244 567.378 690.454 568.168 690.454C568.958 695.193 569.748 699.933 570.538 705.463C563.428 707.043 557.108 708.623 550.789 709.413C538.149 710.993 525.51 710.203 513.661 703.883C503.391 698.353 496.282 690.454 493.122 679.394C488.382 662.805 488.382 646.216 496.282 630.417C505.761 611.458 526.3 602.768 546.839 607.508C561.848 611.458 569.748 620.937 573.698 635.947C576.857 644.636 577.647 653.326 576.857 663.595ZM509.711 648.586C526.3 648.586 542.099 648.586 558.688 648.586C558.688 632.787 550.789 622.517 537.36 621.727C522.35 620.937 511.291 632.787 509.711 648.586Z" fill="#C8C8C8"/>
|
||||
<path d="M269.564 706.25C250.605 708.62 232.436 712.569 214.267 707.04C200.838 703.09 194.518 692.82 194.518 678.601C194.518 665.172 201.628 654.903 214.267 650.953C225.326 647.003 237.176 647.003 249.025 649.373C250.605 649.373 251.395 650.163 252.975 650.163C254.555 634.364 249.025 624.094 234.806 622.514C225.326 621.724 216.637 623.304 207.157 625.674C206.367 620.934 205.577 616.195 204.788 611.455C210.317 608.295 216.637 608.295 222.957 607.505C233.226 606.715 242.705 606.715 252.185 610.665C260.085 613.825 265.614 620.144 267.984 628.044C268.774 631.204 270.354 635.154 270.354 638.313C269.564 660.432 269.564 683.341 269.564 706.25ZM252.185 663.592C241.916 661.222 230.856 660.432 221.377 664.382C215.057 666.752 211.897 672.282 211.897 678.601C211.897 686.501 215.847 690.451 222.957 692.82C232.436 695.98 242.705 694.4 252.185 693.61C252.185 683.341 252.185 673.861 252.185 663.592Z" fill="#C8C8C8"/>
|
||||
<path d="M299.588 612.249C305.118 611.459 310.648 609.879 316.967 609.089C327.237 608.299 338.296 607.509 348.566 608.299C365.155 609.879 375.424 620.938 377.794 638.317C378.584 643.847 378.584 648.587 378.584 654.116C378.584 670.706 378.584 686.505 378.584 703.094C378.584 704.674 378.584 706.254 378.584 707.834C372.264 707.834 366.735 707.834 360.415 707.834C360.415 706.254 360.415 704.674 360.415 703.094C360.415 688.085 360.415 673.075 360.415 658.066C360.415 650.957 359.625 643.847 358.045 636.737C356.465 628.838 350.936 624.888 343.826 624.098C335.136 622.518 326.447 624.098 317.757 625.678C317.757 653.326 317.757 680.975 317.757 708.623C311.438 708.623 305.908 708.623 300.378 708.623C299.588 676.235 299.588 644.637 299.588 612.249Z" fill="#C8C8C8"/>
|
||||
<path d="M658.216 610.664C657.426 616.193 655.846 620.933 655.056 624.883C647.947 623.303 641.627 621.723 634.517 621.723C630.568 621.723 625.828 622.513 621.878 623.303C613.979 626.463 611.609 635.152 617.928 641.472C620.298 643.842 624.248 646.212 628.198 647.792C634.517 650.952 640.837 652.531 647.157 655.691C654.266 658.851 660.586 663.591 662.956 672.28C666.906 688.869 661.376 703.879 640.047 707.828C625.828 710.988 611.609 710.198 598.179 704.669C597.389 704.669 596.599 703.879 595.809 703.879L595.02 703.089C595.809 698.349 597.389 693.609 598.179 688.869C605.289 690.449 611.609 692.819 618.718 693.609C625.038 694.399 632.148 693.609 638.467 692.029C647.157 689.659 649.527 680.18 643.207 673.86C640.837 671.49 637.677 669.121 634.517 668.331C628.198 665.171 622.668 662.801 616.348 660.431C609.239 657.271 602.919 653.321 599.759 645.422C593.44 629.623 602.129 613.034 619.508 608.294C628.988 605.134 646.367 605.924 658.216 610.664Z" fill="#C8C8C8"/>
|
||||
<path d="M474.939 690.45C475.729 695.19 476.519 699.929 477.309 704.669C475.729 705.459 474.939 706.249 474.149 706.249C460.72 710.199 447.291 710.989 433.862 707.039C419.642 702.299 409.373 692.82 405.423 678.6C400.683 662.801 400.683 647.002 408.583 631.203C415.693 616.194 428.332 607.504 444.921 605.924C455.19 605.134 465.46 605.924 475.729 610.664C474.149 615.404 473.359 620.144 471.78 624.883C466.25 624.093 461.51 622.513 456.77 621.723C447.291 620.934 437.021 621.723 429.912 629.623C426.752 632.783 424.382 637.523 422.802 641.472C419.642 653.322 419.642 665.171 423.592 676.231C427.542 686.5 434.652 691.24 444.921 692.82C453.611 694.4 463.09 693.61 471.78 690.45C472.57 691.24 473.36 691.24 474.939 690.45Z" fill="#C8C8C8"/>
|
||||
<path d="M181.872 694.401C181.082 699.141 180.292 703.88 179.502 708.62C162.913 711.78 148.694 701.511 148.694 684.132C148.694 646.214 148.694 608.296 148.694 571.168C148.694 568.798 148.694 566.428 148.694 564.058C155.014 563.268 160.543 561.688 166.863 560.898C166.863 563.268 166.863 564.848 166.863 566.428C166.863 602.766 166.863 639.104 166.863 675.442C166.863 677.812 166.863 680.182 166.863 681.762C167.653 688.871 170.023 692.031 177.922 693.611C178.712 693.611 179.502 694.401 181.872 694.401Z" fill="#C8C8C8"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M363.938 77.9551C315.848 77.9551 271.889 95.3057 237.861 124.124L198.467 77.6099C243.09 39.8177 300.888 17 363.938 17C426.988 17 484.786 39.8177 529.409 77.6099L490.015 124.124C455.987 95.3057 412.028 77.9551 363.938 77.9551Z" fill="#57CB6A"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M164.49 287.816C174.314 255.562 190.261 226.856 212.329 201.698C206.966 202.364 201.759 203.875 196.715 206.231C196.463 206.063 196.213 205.895 195.962 205.727C195.712 205.559 195.461 205.391 195.21 205.224C213.909 177.289 237.398 154.292 265.699 136.229C248.751 107.887 240.022 77.1667 239.512 44.0684C278.118 50.276 310.683 67.5666 337.204 95.9402C384.261 104.115 426.895 122.245 465.107 150.33C474.536 157.07 481.753 165.632 486.76 176.014C488.989 184.018 490.999 192.075 492.799 200.188C496.129 207.553 501.01 213.765 507.416 218.821C515.658 226.05 524.713 232.093 534.599 236.951C547.077 240.877 559.845 243.395 572.882 244.505C573.545 254.497 571.019 263.562 565.319 271.7C543.994 287.724 519.988 293.935 493.306 290.334C471.283 286.547 449.305 282.685 427.351 278.751C410.419 279.224 400.675 287.953 398.136 304.939C396.551 319.077 399.575 332.171 407.203 344.22C410.984 350.104 415.005 355.812 419.281 361.343C431.074 374.648 443.671 387.071 457.055 398.61C450.192 400.551 443.147 401.726 435.911 402.135C443.403 406.535 452.261 412.15 461.515 418.015C477.263 427.998 494.157 438.707 507.416 445.388C452.793 477.035 393.764 511.14 271.737 465.087C219.371 445.323 178.865 409.581 164.49 372.787C152.066 340.989 154.665 320.07 164.49 287.816ZM405.255 188.751C430.047 203.065 458.733 199.792 458.733 199.792C458.733 199.792 448.58 170.964 423.788 156.65C398.997 142.336 368.954 147.958 368.954 147.958C368.954 147.958 380.463 174.438 405.255 188.751Z" fill="#EBEBEB"/>
|
||||
<path opacity="0.976" fill-rule="evenodd" clip-rule="evenodd" d="M408.805 381.354C403.023 381.057 397.319 380.553 391.688 379.843C412.577 395.796 428.687 415.603 440.017 439.263C435.194 437.639 430.16 436.464 424.914 435.738C428.923 445.403 432.951 455.138 436.996 464.944C370.752 484.253 309.167 474.518 252.241 435.738C251.569 430.031 251.569 424.324 252.241 418.617C253.543 406.42 255.22 394.335 257.275 382.361C247.367 394.314 239.984 407.743 235.125 422.645C232.943 420.463 230.762 418.282 228.58 416.099C231.456 394.378 238.167 373.9 248.717 354.665C246.425 355.059 244.076 355.059 241.669 354.665C242.888 355.565 242.888 356.404 241.669 357.183C236.941 360.55 232.242 363.907 227.573 367.254C240.828 338.375 259.958 314.037 284.963 294.239C291.934 289.578 299.318 285.717 307.114 282.657C309.224 296.136 312.748 309.229 317.685 321.934C318.305 323.562 319.312 324.904 320.706 325.963C330.469 307.638 342.383 290.853 356.449 275.607C356.114 275.272 355.777 274.935 355.442 274.6C343.88 280.96 333.644 289.017 324.733 298.771C320.709 287.706 318.359 276.292 317.685 264.529C317.295 263.594 316.623 262.923 315.672 262.515C299.922 268.042 285.155 275.427 271.371 284.671C276.966 266.429 285.524 249.645 297.045 234.316C295.111 233.167 293.097 232.998 291.004 233.812C284.639 235.767 278.263 237.614 271.874 239.351C271.874 239.016 271.874 238.679 271.874 238.344C290.463 216.618 313.956 203.19 342.353 198.06C334.838 194.714 327.119 191.86 319.196 189.499C339.838 189.265 359.639 193.293 378.599 201.585C404.722 214.648 430.228 228.747 455.119 243.883C481.636 259.327 510.163 265.705 540.701 263.018C546.419 260.172 551.453 261.011 555.803 265.536C538.744 279.204 519.278 284.407 497.407 281.146C479.514 277.97 461.727 274.277 444.044 270.068C401.308 260.773 381.003 278.062 383.13 321.934C384.243 332.428 386.928 342.5 391.185 352.148C396.574 362.273 402.447 372.009 408.805 381.354Z" fill="#C1C1C1"/>
|
||||
<path opacity="0.976" fill-rule="evenodd" clip-rule="evenodd" d="M301.073 91.306C292.188 86.695 283.126 82.3308 273.888 78.2136C273.553 78.5492 273.217 78.885 272.881 79.2207C277.291 86.1944 281.319 93.4121 284.964 100.874C281.339 99.8239 277.983 97.9775 274.895 95.3345C274.56 95.6701 274.224 96.0059 273.888 96.3416C275.359 103.029 276.702 109.744 277.916 116.484C266.403 100.827 258.684 83.3702 254.758 64.114C272.731 69.03 288.17 78.094 301.073 91.306Z" fill="#C1C1C1"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M237.861 124.124C195.527 159.979 168.732 213.426 168.732 273.161C168.732 380.971 256.129 468.367 363.938 468.367C404.232 468.367 441.614 456.188 472.689 435.297V328.934H533.644V465.615L521.984 474.767C478.457 508.932 423.536 529.322 363.938 529.322C222.464 529.322 107.777 414.635 107.777 273.161C107.777 194.753 143.042 124.551 198.467 77.6099L237.861 124.124Z" fill="#57CB6A"/>
|
||||
<path d="M410.913 184.729V167.431C410.461 167.851 409.904 168.271 409.244 168.691C408.601 169.094 407.922 169.479 407.21 169.847C406.497 170.197 405.793 170.521 405.097 170.819C404.402 171.099 403.794 171.318 403.272 171.475V166.301C403.863 166.056 404.541 165.688 405.306 165.198C406.088 164.708 406.845 164.191 407.575 163.649C408.305 163.088 408.966 162.554 409.557 162.047C410.148 161.539 410.548 161.145 410.756 160.865H416.363V184.729H410.913Z" fill="#57CB6A"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 203 KiB After Width: | Height: | Size: 211 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 288 KiB After Width: | Height: | Size: 287 KiB |
|
Before Width: | Height: | Size: 425 KiB After Width: | Height: | Size: 349 KiB |
|
Before Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 8.5 KiB |
|
|
@ -3,7 +3,7 @@
|
|||
Actions
|
||||
=======
|
||||
|
||||
Glances can trigger actions on events for warning and critical thresholds.
|
||||
Glances can trigger actions on events.
|
||||
|
||||
By ``action``, we mean all shell command line. For example, if you want
|
||||
to execute the ``foo.py`` script if the last 5 minutes load are critical
|
||||
|
|
@ -18,13 +18,6 @@ then add the ``_action`` line to the Glances configuration file:
|
|||
All the stats are available in the command line through the use of the
|
||||
`Mustache`_ syntax. `Chevron`_ is required to render the mustache's template syntax.
|
||||
|
||||
Additionaly to the stats of the current plugin, the following variables are
|
||||
also available:
|
||||
- ``{{time}}``: current time in ISO format
|
||||
- ``{{critical}}``: critical threshold value
|
||||
- ``{{warning}}``: warning threshold value
|
||||
- ``{{careful}}``: careful threshold value
|
||||
|
||||
Another example would be to create a log file
|
||||
containing used vs total disk space if a space trigger warning is
|
||||
reached:
|
||||
|
|
@ -33,7 +26,7 @@ reached:
|
|||
|
||||
[fs]
|
||||
warning=70
|
||||
warning_action=echo "{{time}} {{mnt_point}} {{used}}/{{size}}" > /tmp/fs.alert
|
||||
warning_action=echo {{mnt_point}} {{used}}/{{size}} > /tmp/fs.alert
|
||||
|
||||
A last example would be to create a log file containing the total user disk
|
||||
space usage for a device and notify by email each time a space trigger
|
||||
|
|
@ -43,11 +36,13 @@ critical is reached:
|
|||
|
||||
[fs]
|
||||
critical=90
|
||||
critical_action_repeat=echo "{{time}} {{device_name}} {{percent}}" > /tmp/fs.alert && python /etc/glances/actions.d/fs-critical.py
|
||||
critical_action_repeat=echo {{device_name}} {{percent}} > /tmp/fs.alert && python /etc/glances/actions.d/fs-critical.py
|
||||
|
||||
|
||||
.. note::
|
||||
Use && as separator for multiple commands
|
||||
|
||||
|
||||
Within ``/etc/glances/actions.d/fs-critical.py``:
|
||||
|
||||
.. code-block:: python
|
||||
|
|
@ -68,7 +63,7 @@ Within ``/etc/glances/actions.d/fs-critical.py``:
|
|||
.. note::
|
||||
|
||||
You can use all the stats for the current plugin. See
|
||||
https://github.com/nicolargo/glances/wiki/The-Glances-RESTFUL-JSON-API
|
||||
https://github.com/nicolargo/glances/wiki/The-Glances-RESTFULL-JSON-API
|
||||
for the stats list.
|
||||
|
||||
It is also possible to repeat action until the end of the alert.
|
||||
|
|
|
|||
|
|
@ -61,11 +61,9 @@ For example:
|
|||
enable=false
|
||||
refresh=30
|
||||
one_line=false
|
||||
command=sysctl net.netfilter.nf_conntrack_count && sysctl net.netfilter.nf_conntrack_max
|
||||
command=sysctl net.netfilter.nf_conntrack_count;sysctl net.netfilter.nf_conntrack_max
|
||||
|
||||
Note: for multiple command, please use the '&&'' separator.
|
||||
|
||||
For security reason, pipe is not directly allowed in a AMP command but you create a shell
|
||||
For security reason, pipe is not directly allowed in a AMP command but you create a sheel
|
||||
script with your command:
|
||||
|
||||
.. code-block:: ini
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
CLOUD
|
||||
=====
|
||||
|
||||
This plugin displays information about the cloud provider if your host is running on OpenStack.
|
||||
This plugin diplays information about the cloud provider if your host is running on OpenStack.
|
||||
|
||||
The plugin use the standard OpenStack `metadata`_ service to retrieve the information.
|
||||
|
||||
|
|
|
|||
|
|
@ -14,8 +14,6 @@ You can install this dependency using:
|
|||
|
||||
.. image:: ../_static/containers.png
|
||||
|
||||
Note: Memory usage is compute as following "display memory usage = memory usage - inactive_file"
|
||||
|
||||
It is possible to define limits and actions from the configuration file
|
||||
under the ``[containers]`` section:
|
||||
|
||||
|
|
@ -23,17 +21,14 @@ under the ``[containers]`` section:
|
|||
|
||||
[containers]
|
||||
disable=False
|
||||
# Only show specific containers (comma-separated list of container name or regular expression)
|
||||
# Only show specific containers (comma separated list of container name or regular expression)
|
||||
show=thiscontainer,andthisone,andthoseones.*
|
||||
# Hide some containers (comma-separated list of container name or regular expression)
|
||||
# Hide some containers (comma separated list of container name or regular expression)
|
||||
hide=donotshowthisone,andthose.*
|
||||
# Show only specific containers (comma-separated list of container name or regular expression)
|
||||
# Show only specific containers (comma separated list of container name or regular expression)
|
||||
#show=showthisone,andthose.*
|
||||
# Define the maximum containers size name (default is 20 chars)
|
||||
max_name_size=20
|
||||
# List of stats to disable (not display)
|
||||
# Following stats can be disabled: name,status,uptime,cpu,mem,diskio,networkio,ports,command
|
||||
disable_stats=command
|
||||
# Global containers' thresholds for CPU and MEM (in %)
|
||||
cpu_careful=50
|
||||
cpu_warning=70
|
||||
|
|
|
|||
|
|
@ -15,6 +15,17 @@ displayed.
|
|||
|
||||
.. image:: ../_static/cpu-wide.png
|
||||
|
||||
A character is also displayed just after the CPU header and shows the
|
||||
trend value:
|
||||
|
||||
======== ==============================================================
|
||||
Trend Status
|
||||
======== ==============================================================
|
||||
``-`` CPU value is equal to the mean of the six latests refreshes
|
||||
``\`` CPU value is lower than the mean of the six latests refreshes
|
||||
``/`` CPU value is higher than the mean of the six latests refreshes
|
||||
======== ==============================================================
|
||||
|
||||
CPU stats description:
|
||||
|
||||
- **user**: percent time spent in user space. User CPU time is the time
|
||||
|
|
@ -35,8 +46,6 @@ CPU stats description:
|
|||
operations to complete.
|
||||
- **steal** *(Linux)*: percentage of time a virtual CPU waits for a real
|
||||
CPU while the hypervisor is servicing another virtual processor.
|
||||
- **guest** *(Linux)*: percentage of time a virtual CPU spends
|
||||
servicing another virtual CPU under the control of the Linux kernel.
|
||||
- **ctx_sw**: number of context switches (voluntary + involuntary) per
|
||||
second. A context switch is a procedure that a computer's CPU (central
|
||||
processing unit) follows to change from one task (or process) to
|
||||
|
|
@ -53,19 +62,6 @@ To switch to per-CPU stats, just hit the ``1`` key:
|
|||
.. image:: ../_static/per-cpu.png
|
||||
|
||||
In this case, Glances will show on line per logical CPU on the system.
|
||||
If you have multiple core, it is possible to define the maximum number
|
||||
of CPU to display. The top 'max_cpu_display' will be display and an
|
||||
extra line with the mean of all others CPU will be added.
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[percpu]
|
||||
# Define the maximum number of CPU display at a time
|
||||
# If the number of CPU is higher than:
|
||||
# - display the top 'max_cpu_display' (sorted by CPU consumption)
|
||||
# - a last line will be added with the sum of all other CPUs
|
||||
max_cpu_display=4
|
||||
|
||||
Logical cores means the number of physical cores multiplied by the number
|
||||
of threads that can run on each core (this is known as Hyper Threading).
|
||||
|
||||
|
|
|
|||
|
|
@ -5,16 +5,21 @@ Disk I/O
|
|||
|
||||
.. image:: ../_static/diskio.png
|
||||
|
||||
Glances displays the disk I/O throughput, count and mean latency:
|
||||
Glances displays the disk I/O throughput. The unit is adapted
|
||||
dynamically.
|
||||
|
||||
You can display:
|
||||
|
||||
- bytes per second (default behavior / Bytes/s, KBytes/s, MBytes/s, etc)
|
||||
- requests per second (using --diskio-iops option or *B* hotkey)
|
||||
- mean latency (using --diskio-latency option or *L* hotkey)
|
||||
|
||||
It's also possible to define:
|
||||
There is no alert on this information.
|
||||
|
||||
It's possible to define:
|
||||
|
||||
- a list of disk to show (white list)
|
||||
- a list of disks to hide
|
||||
- aliases for disk name (use \ to espace special characters)
|
||||
- aliases for disk name
|
||||
|
||||
under the ``[diskio]`` section in the configuration file.
|
||||
|
||||
|
|
@ -37,38 +42,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.
|
||||
|
||||
It is also possible to define thesholds for latency and bytes read and write per second:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[diskio]
|
||||
# Alias for sda1 and sdb1
|
||||
#alias=sda1:SystemDisk,sdb1:DataDisk
|
||||
# Default latency thresholds (in ms) (rx = read / tx = write)
|
||||
rx_latency_careful=10
|
||||
rx_latency_warning=20
|
||||
rx_latency_critical=50
|
||||
tx_latency_careful=10
|
||||
tx_latency_warning=20
|
||||
tx_latency_critical=50
|
||||
# Set thresholds (in bytes per second) for a given disk name (rx = read / tx = write)
|
||||
dm-0_rx_careful=4000000000
|
||||
dm-0_rx_warning=5000000000
|
||||
dm-0_rx_critical=6000000000
|
||||
dm-0_rx_log=True
|
||||
dm-0_tx_careful=700000000
|
||||
dm-0_tx_warning=900000000
|
||||
dm-0_tx_critical=1000000000
|
||||
dm-0_tx_log=True
|
||||
|
||||
You also can automatically hide disk with no read or write using the
|
||||
``hide_zero`` configuration key. The optional ``hide_threshold_bytes`` option
|
||||
can also be used to set a threshold higher than zero.
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[diskio]
|
||||
hide_zero=True
|
||||
hide_threshold_bytes=0
|
||||
|
||||
.. _regex101: https://regex101.com/
|
||||
|
|
@ -18,20 +18,3 @@ Each event message displays the following information:
|
|||
3. alert name
|
||||
4. {min,avg,max} values or number of running processes for monitored
|
||||
processes list alerts
|
||||
|
||||
The configuration should be done in the ``[alert]`` section of the
|
||||
Glances configuration file:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[alert]
|
||||
disable=False
|
||||
# Maximum number of events to display (default is 10 events)
|
||||
max_events=10
|
||||
# Minimum duration for an event to be taken into account (default is 6 seconds)
|
||||
min_duration=6
|
||||
# Minimum time between two events of the same type (default is 6 seconds)
|
||||
# This is used to avoid too many alerts for the same event
|
||||
# Events will be merged
|
||||
min_interval=6
|
||||
|
||||
|
|
|
|||
|
|
@ -35,9 +35,6 @@ the following definition should do the job:
|
|||
|
||||
In client/server mode, the list is defined on the ``server`` side.
|
||||
|
||||
.. warning::
|
||||
Symbolic links are not followed.
|
||||
|
||||
.. warning::
|
||||
Do **NOT** define folders containing lot of files and subfolders or use an
|
||||
huge refresh time...
|
||||
|
|
|
|||
|
|
@ -35,11 +35,6 @@ system:
|
|||
[fs]
|
||||
allow=shm
|
||||
|
||||
With the above configuration key, it is also possible to monitor NFS
|
||||
mount points (allow=nfs). Be aware that this can slow down the
|
||||
performance of the plugin if the NFS server is not reachable. In this
|
||||
case, the plugin will wait for a 2 seconds timeout.
|
||||
|
||||
Also, you can hide mount points using regular expressions.
|
||||
|
||||
To hide all mount points starting with /boot and /snap:
|
||||
|
|
|
|||
|
|
@ -3,16 +3,16 @@
|
|||
GPU
|
||||
===
|
||||
|
||||
For the moment, only following GPU are supported:
|
||||
- NVidia (thanks to the `nvidia-ml-py`_ library)
|
||||
- AMD (only on Linux Operating system with kernel 5.14 or higher)
|
||||
.. note::
|
||||
You need to install the `py3nvml`_ library on your system.
|
||||
Or `nvidia-ml-py3`_ for Glances 3.1.3 or lower.
|
||||
|
||||
The GPU stats are shown as a percentage of value and for the configured
|
||||
refresh time. It displays:
|
||||
|
||||
- total GPU usage
|
||||
- memory consumption
|
||||
- temperature
|
||||
- temperature (Glances 3.1.4 or higher)
|
||||
|
||||
.. image:: ../_static/gpu.png
|
||||
|
||||
|
|
@ -28,19 +28,15 @@ You can change the threshold limits in the configuration file:
|
|||
|
||||
.. code-block:: ini
|
||||
|
||||
[gpu]
|
||||
# Default processor values if not defined: 50/70/90
|
||||
proc_careful=50
|
||||
proc_warning=70
|
||||
proc_critical=90
|
||||
# Default memory values if not defined: 50/70/90
|
||||
mem_careful=50
|
||||
mem_warning=70
|
||||
mem_critical=90
|
||||
# Temperature
|
||||
temperature_careful=60
|
||||
temperature_warning=70
|
||||
temperature_critical=80
|
||||
[gpu]
|
||||
# Default processor values if not defined: 50/70/90
|
||||
proc_careful=50
|
||||
proc_warning=70
|
||||
proc_critical=90
|
||||
# Default memory values if not defined: 50/70/90
|
||||
mem_careful=50
|
||||
mem_warning=70
|
||||
mem_critical=90
|
||||
|
||||
Legend:
|
||||
|
||||
|
|
@ -53,4 +49,5 @@ GPU (PROC/MEM) Status
|
|||
``>90%`` ``CRITICAL``
|
||||
============== ============
|
||||
|
||||
.. _nvidia-ml-py: https://pypi.org/project/nvidia-ml-py/
|
||||
.. _py3nvml: https://pypi.org/project/py3nvml/
|
||||
.. _nvidia-ml-py3: https://pypi.org/project/nvidia-ml-py3/
|
||||
|
|
|
|||
|
|
@ -11,55 +11,36 @@ Additionally, on GNU/Linux, it also shows the kernel version.
|
|||
|
||||
In client mode, the server connection status is also displayed.
|
||||
|
||||
The system information message can be configured in the configuration file
|
||||
(for the moment, it only work for the Curses interface):
|
||||
It is possible to disable or define time interval to be used for refreshing the
|
||||
public IP address (default is 300 seconds) from the configuration
|
||||
file under the ``[ip]`` section:
|
||||
|
||||
.. code-block:: ini
|
||||
[system]
|
||||
# System information to display (a string where {key} will be replaced by the value) in the Curses interface
|
||||
# Available dynamics information are: hostname, os_name, os_version, os_arch, linux_distro, platform
|
||||
system_info_msg= | My {os_name} system |
|
||||
|
||||
The header IP message can be configured from the ip ``[ip]`` section, it allows to display private and
|
||||
public IP information.
|
||||
|
||||
In the default configuration file, public IP address information is disable. Set public_disabled, to False
|
||||
in order to enable the feature.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[ip]
|
||||
# Disable display of private IP address
|
||||
disable=False
|
||||
# Configure the online service where public IP address information will be downloaded
|
||||
# - public_disabled: Disable public IP address information (set to True for offline platform)
|
||||
# - public_refresh_interval: Refresh interval between to calls to the online service
|
||||
# - public_api: URL of the API (the API should return an JSON object)
|
||||
# - public_username: Login for the online service (if needed)
|
||||
# - public_password: Password for the online service (if needed)
|
||||
# - public_field: Field name of the public IP address in onlibe service JSON message
|
||||
# - public_template: Template to build the public message
|
||||
#
|
||||
# Example for IPLeak service:
|
||||
# public_api=https://ipv4.ipleak.net/json/
|
||||
# public_field=ip
|
||||
# public_template={ip} {continent_name}/{country_name}/{city_name}
|
||||
#
|
||||
public_disabled=False
|
||||
public_refresh_interval=300
|
||||
public_api=https://ipv4.ipleak.net/json/
|
||||
#public_username=<myname>
|
||||
#public_password=<mysecret>
|
||||
public_field=ip
|
||||
public_template={continent_name}/{country_name}/{city_name}
|
||||
public_ip_disabled=True
|
||||
|
||||
|
||||
**NOTE:** Setting low values for `public_refresh_interval` will result in frequent
|
||||
HTTP requests to the onlive service defined in public_api. Recommended range: 120-600 seconds.
|
||||
Glances uses online services in order to get the IP addresses and the additional information.
|
||||
Your IP address could be blocked if too many requests are done.
|
||||
HTTP requests to the IP detection servers. Recommended range: 120-600 seconds.
|
||||
Glances uses online services in order to get the IP addresses. Your IP address could be
|
||||
blocked if too many requests are done.
|
||||
|
||||
If the Censys options are configured, the public IP address is also analysed (with the same interval)
|
||||
and additional information is displayed.
|
||||
|
||||
.. code-block:: ini
|
||||
[ip]
|
||||
public_refresh_interval=300
|
||||
public_ip_disabled=True
|
||||
censys_url=https://search.censys.io/api
|
||||
# Get your own credential here: https://search.censys.io/account/api
|
||||
censys_username=CENSYS_API_ID
|
||||
censys_password=CENSYS_API_SECRET
|
||||
# List of fields to be displayed in user interface (comma separated)
|
||||
censys_fields=location:continent,location:country,autonomous_system:name
|
||||
|
||||
**Note:** Access to the Censys Search API need an account (https://censys.io/login).
|
||||
|
||||
Example:
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,6 @@ Legend:
|
|||
hddtemp
|
||||
ps
|
||||
containers
|
||||
vms
|
||||
amps
|
||||
events
|
||||
actions
|
||||
|
|
|
|||
|
|
@ -31,17 +31,6 @@ percentage.
|
|||
|
||||
.. image:: ../_static/loadpercent.png
|
||||
|
||||
A character is also displayed just after the LOAD header and shows the
|
||||
trend value (for the 1 minute load stat):
|
||||
|
||||
======== ==============================================================
|
||||
Trend Status
|
||||
======== ==============================================================
|
||||
``-`` Mean 15 lasts values equal mean 15 previous values
|
||||
``↓`` Mean 15 lasts values is lower mean 15 previous values
|
||||
``↑`` Mean 15 lasts values is higher mean 15 previous values
|
||||
======== ==============================================================
|
||||
|
||||
Legend:
|
||||
|
||||
============= ============
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ Stats description:
|
|||
is in RAM.
|
||||
- **inactive**: (UNIX): memory that is marked as not used.
|
||||
- **buffers**: (Linux, BSD): cache for things like file system metadata.
|
||||
- **cached**: (Linux, BSD): cache for various things (including ZFS cache).
|
||||
- **cached**: (Linux, BSD): cache for various things.
|
||||
|
||||
Additional stats available in through the API:
|
||||
|
||||
|
|
@ -41,19 +41,15 @@ Additional stats available in through the API:
|
|||
- **shared**: (BSD): memory that may be simultaneously accessed by multiple
|
||||
processes.
|
||||
|
||||
It is possible to display the available memory instead of the used memory
|
||||
by setting the ``available`` option to ``True`` in the configuration file
|
||||
under the ``[mem]`` section.
|
||||
|
||||
A character is also displayed just after the MEM header and shows the
|
||||
trend value:
|
||||
|
||||
======== ==============================================================
|
||||
Trend Status
|
||||
======== ==============================================================
|
||||
``-`` Mean 15 lasts values equal mean 15 previous values
|
||||
``↓`` Mean 15 lasts values is lower mean 15 previous values
|
||||
``↑`` Mean 15 lasts values is higher mean 15 previous values
|
||||
``-`` MEM value is equal to the mean of the six latests refreshes
|
||||
``\`` MEM value is lower than the mean of the six latests refreshes
|
||||
``/`` MEM value is higher than the mean of the six latests refreshes
|
||||
======== ==============================================================
|
||||
|
||||
Alerts are only set for used memory and used swap.
|
||||
|
|
|
|||
|
|
@ -17,10 +17,8 @@ In this case thresholds values are define in bps.
|
|||
Additionally, you can define:
|
||||
|
||||
- a list of network interfaces to hide
|
||||
- automatically hide interfaces not up
|
||||
- automatically hide interfaces without IP address
|
||||
- per-interface limit values
|
||||
- aliases for interface name (use \ to espace special characters)
|
||||
- aliases for interface name
|
||||
|
||||
The configuration should be done in the ``[network]`` section of the
|
||||
Glances configuration file.
|
||||
|
|
@ -43,14 +41,8 @@ virtual docker interface (docker0, docker1, ...):
|
|||
hide=docker.*,lo
|
||||
# Define the list of network interfaces to show (comma-separated regexp)
|
||||
#show=eth0,eth1
|
||||
# Automatically hide interface not up (default is False)
|
||||
hide_no_up=True
|
||||
# Automatically hide interface with no IP address (default is False)
|
||||
hide_no_ip=True
|
||||
# Set hide_zero to True to automatically hide interface with no traffic
|
||||
hide_zero=False
|
||||
# WLAN 0 alias
|
||||
alias=wlan0:Wireless IF
|
||||
wlan0_alias=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
|
||||
|
|
@ -66,14 +58,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.
|
||||
|
||||
You also can automatically hide interface with no traffic using the
|
||||
``hide_zero`` configuration key. The optional ``hide_threshold_bytes`` option
|
||||
can also be used to set a threshold higher than zero.
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[network]
|
||||
hide_zero=True
|
||||
hide_threshold_bytes=0
|
||||
|
||||
.. _regex101: https://regex101.com/
|
||||
.. _regex101: https://regex101.com/
|
||||
104
docs/aoa/ps.rst
|
|
@ -102,8 +102,7 @@ Columns display
|
|||
``CPU%`` % of CPU used by the process
|
||||
|
||||
If Irix/Solaris mode is off ('0' key), the value
|
||||
is divided by logical core number (the column
|
||||
name became CPUi)
|
||||
is divided by logical core number
|
||||
``MEM%`` % of MEM used by the process (RES divided by
|
||||
the total RAM you have)
|
||||
``VIRT`` Virtual Memory Size
|
||||
|
|
@ -124,7 +123,6 @@ Columns display
|
|||
The non-swapped physical memory a process is
|
||||
using (what's currently in the physical memory).
|
||||
``PID`` Process ID (column is replaced by NPROCS in accumulated mode)
|
||||
``NPROCS`` Number of process + childs (only in accumulated mode)
|
||||
``USER`` User ID
|
||||
``THR`` Threads number of the process
|
||||
``TIME+`` Cumulative CPU time used by the process
|
||||
|
|
@ -149,24 +147,12 @@ Columns display
|
|||
pressing on the ``'/'`` key
|
||||
========================= ==============================================
|
||||
|
||||
Disable display of virtual memory
|
||||
---------------------------------
|
||||
|
||||
It's possible to disable the display of the VIRT column (virtual memory) by adding the
|
||||
``disable_virtual_memory=True`` option in the ``[processlist]`` section of the configuration
|
||||
file (glances.conf):
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[processlist]
|
||||
disable_virtual_memory=True
|
||||
|
||||
Process filtering
|
||||
-----------------
|
||||
|
||||
It's possible to filter the processes list using the ``ENTER`` key.
|
||||
|
||||
Glances filter syntax is the following (examples):
|
||||
Filter syntax is the following (examples):
|
||||
|
||||
- ``python``: Filter processes name or command line starting with
|
||||
*python* (regexp)
|
||||
|
|
@ -175,25 +161,6 @@ Glances filter syntax is the following (examples):
|
|||
- ``username:nicolargo``: Processes of nicolargo user (key:regexp)
|
||||
- ``cmdline:\/usr\/bin.*``: Processes starting by */usr/bin*
|
||||
|
||||
Process focus
|
||||
-------------
|
||||
|
||||
It's also possible to select a processes list to focus on.
|
||||
|
||||
A list of Glances filters (see upper) can be define from the command line:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
glances --process-focus .*python.*,.*firefox.*
|
||||
|
||||
|
||||
or the glances.conf file:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[processlist]
|
||||
focus=.*python.*,.*firefox.*
|
||||
|
||||
Extended info
|
||||
-------------
|
||||
|
||||
|
|
@ -223,7 +190,7 @@ In curses/standalone mode, you can select a process using ``UP`` and ``DOWN`` an
|
|||
.. note::
|
||||
Limit for CPU and MEM percent values can be overwritten in the
|
||||
configuration file under the ``[processlist]`` section. It is also
|
||||
possible to define limit for Nice values (comma-separated list).
|
||||
possible to define limit for Nice values (comma separated list).
|
||||
For example: nice_warning=-20,-19,-18
|
||||
|
||||
Accumulated per program — key 'j'
|
||||
|
|
@ -232,67 +199,4 @@ Accumulated per program — key 'j'
|
|||
When activated ('j' hotkey or --programs option in the command line), processes are merged
|
||||
to display which programs are active. The columns show the accumulated cpu consumption, the
|
||||
accumulated virtual and resident memory consumption, the accumulated transferred data I/O.
|
||||
The PID columns is replaced by a NPROCS column which is the number of processes.
|
||||
|
||||
Export process
|
||||
--------------
|
||||
|
||||
Glances version 4 introduces a new feature to export specifics processes. In order to use this
|
||||
feature, you need to use the export option in the processlist section of the Glances configuration
|
||||
file or the --export-process-filter option in the command line.
|
||||
|
||||
The export option is a list of Glances filters.
|
||||
|
||||
Example number one, export all processes named 'python' (or with a command line containing 'python'):
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[processlist]
|
||||
export=.*python.*
|
||||
|
||||
Note: or the --export-process-filter ".*python.*" option in the command line.
|
||||
|
||||
Example number two, export all processes with the name 'python' or 'bash':
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[processlist]
|
||||
export=.*python.*,.*bash.*
|
||||
|
||||
Note: or the --export-process-filter ".*python.*,.*bash.*" option in the command line.
|
||||
|
||||
Example number three, export all processes belong to 'nicolargo' user:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[processlist]
|
||||
export=username:nicolargo
|
||||
|
||||
Note: or the --export-process-filter "username:nicolargo" option in the command line.
|
||||
|
||||
The output of the export use the PID as the key (for example if you want to export firefox process
|
||||
to a CSV file):
|
||||
|
||||
Configuration file (glances.conf):
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[processlist]
|
||||
export=.*firefox.*
|
||||
|
||||
Note: or the --export-process-filter ".*firefox.*" option in the command line.
|
||||
|
||||
Command line example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
glances -C ./conf/glances.conf --export csv --export-csv-file /tmp/glances.csv --disable-plugin all --enable-plugin processlist --quiet
|
||||
|
||||
the result will be:
|
||||
|
||||
.. code-block:: csv
|
||||
|
||||
timestamp,845992.memory_percent,845992.status,845992.num_threads,845992.cpu_timesuser,845992.cpu_timessystem,845992.cpu_timeschildren_user,845992.cpu_timeschildren_system,845992.cpu_timesiowait,845992.memory_inforss,845992.memory_infovms,845992.memory_infoshared,845992.memory_infotext,845992.memory_infolib,845992.memory_infodata,845992.memory_infodirty,845992.name,845992.io_counters,845992.nice,845992.cpu_percent,845992.pid,845992.gidsreal,845992.gidseffective,845992.gidssaved,845992.key,845992.time_since_update,845992.cmdline,845992.username,total,running,sleeping,thread,pid_max
|
||||
2024-04-03 18:39:55,3.692938041968513,S,138,1702.88,567.89,1752.79,244.18,0.0,288919552,12871561216,95182848,856064,0,984535040,0,firefox,1863281664,0,0.5,845992,1000,1000,1000,pid,2.2084147930145264,/snap/firefox/3836/usr/lib/firefox/firefox,nicolargo,403,1,333,1511,0
|
||||
2024-04-03 18:39:57,3.692938041968513,S,138,1702.88,567.89,1752.79,244.18,0.0,288919552,12871561216,95182848,856064,0,984535040,0,firefox,1863281664,0,0.5,845992,1000,1000,1000,pid,2.2084147930145264,/snap/firefox/3836/usr/lib/firefox/firefox,nicolargo,403,1,333,1511,0
|
||||
|
||||
The PID columns is replaced by a NPROCS column which is the number of processes.
|
||||
|
|
@ -4,7 +4,7 @@ Quick Look
|
|||
==========
|
||||
|
||||
The ``quicklook`` plugin is only displayed on wide screen and proposes a
|
||||
bar view for cpu, memory, swap and load (this list is configurable).
|
||||
bar view for CPU and memory (virtual and swap).
|
||||
|
||||
In the terminal interface, click on ``3`` to enable/disable it.
|
||||
|
||||
|
|
@ -27,14 +27,10 @@ client/server mode (see issue ).
|
|||
Limit values can be overwritten in the configuration file under
|
||||
the ``[quicklook]`` section.
|
||||
|
||||
You can also configure the stats list and the bat character used in the
|
||||
user interface.
|
||||
You can also configure the percentage char used in the terminal user interface.
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[quicklook]
|
||||
# Stats list (default is cpu,mem,load)
|
||||
# Available stats are: cpu,mem,load,swap
|
||||
list=cpu,mem,load
|
||||
# Graphical percentage char used in the terminal user interface (default is |)
|
||||
bar_char=|
|
||||
percentage_char=@
|
||||
|
|
|
|||
|
|
@ -8,14 +8,7 @@ RAID
|
|||
*Dependency: this plugin uses the optional pymdstat Python lib*
|
||||
|
||||
This plugin is disable by default, please use the --enable-plugin raid option
|
||||
to enable it or enable it in the glances.conf file:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[raid]
|
||||
# Documentation: https://glances.readthedocs.io/en/latest/aoa/raid.html
|
||||
# This plugin is disabled by default
|
||||
disable=False
|
||||
to enable it.
|
||||
|
||||
In the terminal interface, click on ``R`` to enable/disable it.
|
||||
|
||||
|
|
|
|||
|
|
@ -13,45 +13,30 @@ Glances can display the sensors information using ``psutil``,
|
|||
- hard disk temperature
|
||||
- battery capacity
|
||||
|
||||
Limit values and sensors alias names can be defined in the configuration
|
||||
file under the ``[sensors]`` section.
|
||||
|
||||
Limit can be defined for a specific sensor, a type of sensor or defineby the system
|
||||
thresholds (default behavor).
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[sensors]
|
||||
# Sensors core thresholds (in Celsius...)
|
||||
# By default values are grabbed from the system
|
||||
# Overwrite thresholds for a specific sensor
|
||||
temperature_core_Ambient_careful=45
|
||||
temperature_core_Ambient_warning=65
|
||||
temperature_core_Ambient_critical=80
|
||||
temperature_core_Ambient_log=False
|
||||
# Overwrite thresholds for a specific type of sensor
|
||||
#temperature_core_careful=45
|
||||
#temperature_core_warning=65
|
||||
#temperature_core_critical=80
|
||||
#alias=temp1:Motherboard 0,core 0:CPU Core 0
|
||||
There is no alert on this information.
|
||||
|
||||
.. note 1::
|
||||
Limit values and sensors alias names can be defined in the
|
||||
configuration file under the ``[sensors]`` section.
|
||||
|
||||
.. note 2::
|
||||
The support for multiple batteries is only available if
|
||||
you have the batinfo Python lib installed on your system
|
||||
because for the moment PSUtil only support one battery.
|
||||
|
||||
.. note 2::
|
||||
.. note 3::
|
||||
If a sensors has temperature and fan speed with the same name unit,
|
||||
it is possible to alias it using:
|
||||
alias=unitname_temperature_core_alias:Alias for temp,unitname_fan_speed_alias:Alias for fan speed
|
||||
unitname_temperature_core_alias=Alias for temp
|
||||
unitname_fan_speed_alias=Alias for fan speed
|
||||
|
||||
.. note 3::
|
||||
.. note 4::
|
||||
If a sensors has multiple identical features names (see #2280), then
|
||||
Glances will add a suffix to the feature name.
|
||||
For example, if you have one sensor with two Composite features, the
|
||||
second one will be named Composite_1.
|
||||
|
||||
.. note 4::
|
||||
.. note 5::
|
||||
The plugin could crash on some operating system (FreeBSD) with the
|
||||
TCP or UDP blackhole option > 0 (see issue #2106). In this case, you
|
||||
should disable the sensors (--disable-plugin sensors or from the
|
||||
|
|
|
|||
|
|
@ -22,33 +22,3 @@ How to read the information:
|
|||
|
||||
.. warning::
|
||||
This plugin needs administrator rights. Please run Glances as root/admin.
|
||||
|
||||
Also, you can hide driver using regular expressions.
|
||||
|
||||
To hide device you should use the hide option:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[smart]
|
||||
hide=.*Hide_this_device.*
|
||||
|
||||
It is also possible to configure a white list of devices to display.
|
||||
Example to show only the specified drive:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[smart]
|
||||
show=.*Show_this_device.*
|
||||
|
||||
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/
|
||||
|
||||
You can also hide attributes, for example Self-tests, Errors, etc. Use a comma separated list.
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[smart]
|
||||
hide_attributes=attribute_name1,attribute_name2
|
||||
|
|
|
|||
|
|
@ -1,36 +0,0 @@
|
|||
.. _vms:
|
||||
|
||||
VMs
|
||||
===
|
||||
|
||||
Glances ``vms`` plugin is designed to display stats about VMs ran on the host.
|
||||
|
||||
It's actually support two engines: `Multipass` and `Virsh`.
|
||||
|
||||
No Python dependency is needed but Multipass and Virsh binary should be available:
|
||||
- multipass should be executable from /snap/bin/multipass
|
||||
- virsh should be executable from /usr/bin/virsh
|
||||
|
||||
Note: CPU information is not availble for Multipass VM. Load is not available for Virsh VM.
|
||||
|
||||
Configuration file options:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[vms]
|
||||
disable=True
|
||||
# Define the maximum VMs size name (default is 20 chars)
|
||||
max_name_size=20
|
||||
# By default, Glances only display running VMs with states:
|
||||
# 'Running', 'Paused', 'Starting' or 'Restarting'
|
||||
# Set the following key to True to display all VMs regarding their states
|
||||
all=False
|
||||
|
||||
You can use all the variables ({{foo}}) available in the containers plugin.
|
||||
|
||||
Filtering (for hide or show) 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.
|
||||
|
||||
.. _Multipass: https://canonical.com/multipass
|
||||
.. _Virsh: https://www.libvirt.org/manpages/virsh.html
|
||||
|
|
@ -3,22 +3,32 @@
|
|||
Wi-Fi
|
||||
=====
|
||||
|
||||
*Availability: Linux (with an /proc/net/wireless file) only*
|
||||
*Availability: Linux*
|
||||
|
||||
.. image:: ../_static/wifi.png
|
||||
|
||||
Glances displays the Wi-Fi hotspot names and signal quality. If Glances
|
||||
is ran as root, then all the available hotspots are displayed.
|
||||
|
||||
.. note::
|
||||
You need to install the ``wireless-tools`` package on your system.
|
||||
|
||||
In the configuration file, you can define signal quality thresholds:
|
||||
|
||||
- ``"Poor"`` quality is between -100 and -85dBm
|
||||
- ``"Good"`` quality between -85 and -60dBm
|
||||
- ``"Excellent"`` between -60 and -40dBm
|
||||
|
||||
Thresholds for the signal quality can be defined in the configuration file:
|
||||
It's also possible to disable the scan on a specific interface from the
|
||||
configuration file (``[wifi]`` section). For example, if you want to
|
||||
hide the loopback interface (lo) and all the virtual docker interfaces:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[wifi]
|
||||
disable=False
|
||||
hide=lo,docker.*
|
||||
#show=wlp2s0
|
||||
# Define SIGNAL thresholds in dBm (lower is better...)
|
||||
careful=-65
|
||||
warning=-75
|
||||
critical=-85
|
||||
|
|
|
|||
1570
docs/api/python.rst
1781
docs/api/restful.rst
|
|
@ -1,5 +1,2 @@
|
|||
#!/bin/sh
|
||||
|
||||
make clean
|
||||
make html
|
||||
LC_ALL=C make man
|
||||
|
|
|
|||
|
|
@ -12,43 +12,35 @@ Command-Line Options
|
|||
|
||||
.. option:: -V, --version
|
||||
|
||||
show the program's version number and exit
|
||||
show program's version number and exit
|
||||
|
||||
.. option:: -d, --debug
|
||||
|
||||
enable debug mode
|
||||
|
||||
.. option:: --print-completion
|
||||
|
||||
generate shell tab completion scripts for Glances CLI
|
||||
|
||||
.. option:: -C CONF_FILE, --config CONF_FILE
|
||||
|
||||
path to the configuration file
|
||||
|
||||
.. option:: -P PLUGIN_DIRECTORY, --plugins PLUGIN_DIRECTORY
|
||||
|
||||
path to a directory containing additional plugins
|
||||
|
||||
.. option:: --modules-list
|
||||
|
||||
display modules (plugins & exports) list and exit
|
||||
|
||||
.. option:: --disable-plugin PLUGIN
|
||||
|
||||
disable PLUGIN (comma-separated list)
|
||||
disable PLUGIN (comma separated list)
|
||||
|
||||
.. option:: --enable-plugin PLUGIN
|
||||
|
||||
enable PLUGIN (comma-separated list)
|
||||
enable PLUGIN (comma separated list)
|
||||
|
||||
.. option:: --stdout PLUGINS_STATS
|
||||
|
||||
display stats to stdout (comma-separated list of plugins/plugins.attribute)
|
||||
display stats to stdout (comma separated list of plugins/plugins.attribute)
|
||||
|
||||
.. option:: --export EXPORT
|
||||
|
||||
enable EXPORT module (comma-separated list)
|
||||
enable EXPORT module (comma separated list)
|
||||
|
||||
.. option:: --export-csv-file EXPORT_CSV_FILE
|
||||
|
||||
|
|
@ -68,7 +60,7 @@ Command-Line Options
|
|||
|
||||
.. option:: --light, --enable-light
|
||||
|
||||
light mode for Curses UI (disable all but the top menu)
|
||||
light mode for Curses UI (disable all but top menu)
|
||||
|
||||
.. option:: -0, --disable-irix
|
||||
|
||||
|
|
@ -92,7 +84,7 @@ Command-Line Options
|
|||
|
||||
.. option:: -5, --disable-top
|
||||
|
||||
disable top menu (QuickLook, CPU, MEM, SWAP, and LOAD)
|
||||
disable top menu (QuickLook, CPU, MEM, SWAP and LOAD)
|
||||
|
||||
.. option:: -6, --meangpu
|
||||
|
||||
|
|
@ -124,8 +116,7 @@ Command-Line Options
|
|||
|
||||
.. option:: --browser
|
||||
|
||||
start TUI Central Glances Browser
|
||||
use --browser -w to start WebUI Central Glances Browser
|
||||
start the client browser (list of servers)
|
||||
|
||||
.. option:: --disable-autodiscover
|
||||
|
||||
|
|
@ -177,7 +168,7 @@ Command-Line Options
|
|||
|
||||
.. option:: -w, --webserver
|
||||
|
||||
run Glances in web server mode (FastAPI lib needed)
|
||||
run Glances in web server mode (bottle lib needed)
|
||||
|
||||
.. option:: --cached-time CACHED_TIME
|
||||
|
||||
|
|
@ -201,11 +192,11 @@ Command-Line Options
|
|||
|
||||
.. option:: --hide-kernel-threads
|
||||
|
||||
hide kernel threads in the process list (not available on Windows)
|
||||
hide kernel threads in process list (not available on Windows)
|
||||
|
||||
.. option:: -b, --byte
|
||||
|
||||
display network rate in bytes per second
|
||||
display network rate in byte per second
|
||||
|
||||
.. option:: --diskio-show-ramfs
|
||||
|
||||
|
|
@ -225,11 +216,11 @@ Command-Line Options
|
|||
|
||||
.. option:: --theme-white
|
||||
|
||||
optimize display colors for a white background
|
||||
optimize display colors for white background
|
||||
|
||||
.. option:: --disable-check-update
|
||||
|
||||
disable online Glances version check
|
||||
disable online Glances version ckeck
|
||||
|
||||
Interactive Commands
|
||||
--------------------
|
||||
|
|
@ -241,7 +232,7 @@ The following commands (key pressed) are supported while in Glances:
|
|||
|
||||
.. note:: On macOS please use ``CTRL-H`` to delete filter.
|
||||
|
||||
The filter is a regular expression pattern:
|
||||
Filter is a regular expression pattern:
|
||||
|
||||
- ``gnome``: matches all processes starting with the ``gnome``
|
||||
string
|
||||
|
|
@ -259,7 +250,7 @@ The following commands (key pressed) are supported while in Glances:
|
|||
- If CPU iowait ``>60%``, sort processes by I/O read and write
|
||||
|
||||
``A``
|
||||
Enable/disable the Application Monitoring Process
|
||||
Enable/disable Application Monitoring Process
|
||||
|
||||
``b``
|
||||
Switch between bit/s or Byte/s for network I/O
|
||||
|
|
@ -283,7 +274,7 @@ The following commands (key pressed) are supported while in Glances:
|
|||
Enable/disable top extended stats
|
||||
|
||||
``E``
|
||||
Erase the current process filter
|
||||
Erase current process filter
|
||||
|
||||
``f``
|
||||
Show/hide file system and folder monitoring stats
|
||||
|
|
@ -310,7 +301,7 @@ The following commands (key pressed) are supported while in Glances:
|
|||
Increase selected process nice level / Lower the priority (need right) - Only in standalone mode.
|
||||
|
||||
``-``
|
||||
Decrease selected process nice level / Higher the priority (need right) - Only in standalone mode.
|
||||
Decrease selected process nice level / Higher the priority (need right) - Only in standalone mode.
|
||||
|
||||
``k``
|
||||
Kill selected process (need right) - Only in standalone mode.
|
||||
|
|
@ -352,7 +343,7 @@ The following commands (key pressed) are supported while in Glances:
|
|||
Show/hide RAID plugin
|
||||
|
||||
``s``
|
||||
Show/hide sensors plugin
|
||||
Show/hide sensors stats
|
||||
|
||||
``S``
|
||||
Enable/disable spark lines
|
||||
|
|
@ -361,7 +352,7 @@ The following commands (key pressed) are supported while in Glances:
|
|||
Sort process by CPU times (TIME+)
|
||||
|
||||
``T``
|
||||
View network I/O as a combination
|
||||
View network I/O as combination
|
||||
|
||||
``u``
|
||||
Sort processes by USER
|
||||
|
|
@ -369,9 +360,6 @@ The following commands (key pressed) are supported while in Glances:
|
|||
``U``
|
||||
View cumulative network I/O
|
||||
|
||||
``V``
|
||||
Show/hide VMS plugin
|
||||
|
||||
``w``
|
||||
Delete finished warning log messages
|
||||
|
||||
|
|
@ -387,13 +375,13 @@ The following commands (key pressed) are supported while in Glances:
|
|||
``0``
|
||||
Enable/disable Irix/Solaris mode
|
||||
|
||||
The task's CPU usage will be divided by the total number of CPUs
|
||||
Task's CPU usage will be divided by the total number of CPUs
|
||||
|
||||
``1``
|
||||
Switch between global CPU and per-CPU stats
|
||||
|
||||
``2``
|
||||
Enable/disable the left sidebar
|
||||
Enable/disable left sidebar
|
||||
|
||||
``3``
|
||||
Enable/disable the quick look module
|
||||
|
|
@ -402,7 +390,7 @@ The following commands (key pressed) are supported while in Glances:
|
|||
Enable/disable all but quick look and load module
|
||||
|
||||
``5``
|
||||
Enable/disable the top menu (QuickLook, CPU, MEM, SWAP, and LOAD)
|
||||
Enable/disable top menu (QuickLook, CPU, MEM, SWAP and LOAD)
|
||||
|
||||
``6``
|
||||
Enable/disable mean GPU mode
|
||||
|
|
@ -413,20 +401,14 @@ The following commands (key pressed) are supported while in Glances:
|
|||
``/``
|
||||
Switch between process command line or command name
|
||||
|
||||
``F5`` or ``CTRL-R``
|
||||
Refresh user interface
|
||||
|
||||
``SHIFT-LEFT``
|
||||
Navigation left through the process sort
|
||||
|
||||
``SHIFT-RIGHT``
|
||||
Navigation right through the process sort
|
||||
``F5``
|
||||
Refresh stats in curses user interface
|
||||
|
||||
``LEFT``
|
||||
Navigation left through the process name
|
||||
Navigation leff through process sort
|
||||
|
||||
``RIGHT``
|
||||
Navigation right through the process name
|
||||
Navigation right through process sort
|
||||
|
||||
``UP``
|
||||
Up in the processes list
|
||||
|
|
|
|||
41
docs/conf.py
|
|
@ -1,3 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Glances documentation build configuration file, created by
|
||||
# sphinx-quickstart on Tue Mar 1 10:53:59 2016.
|
||||
|
|
@ -11,8 +12,8 @@
|
|||
# All configuration values have a default; values that are commented out
|
||||
# serve to show the default.
|
||||
|
||||
import os
|
||||
import sys
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
|
|
@ -26,6 +27,7 @@ sys.path.insert(0, os.path.abspath('..'))
|
|||
# WARNING: Do not move this import before the sys.path.insert() call.
|
||||
from glances import __version__
|
||||
|
||||
|
||||
# -- General configuration ------------------------------------------------
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
|
|
@ -58,7 +60,7 @@ try:
|
|||
year = datetime.utcfromtimestamp(int(os.environ['SOURCE_DATE_EPOCH'])).year
|
||||
except (KeyError, ValueError):
|
||||
year = datetime.now().year
|
||||
copyright = f'{year}, {author}'
|
||||
copyright = '%d, %s' % (year, author)
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
|
|
@ -123,7 +125,8 @@ html_theme = 'sphinx_rtd_theme'
|
|||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
html_theme_options = {}
|
||||
html_theme_options = {
|
||||
}
|
||||
|
||||
# Add any paths that contain custom themes here, relative to this directory.
|
||||
# html_theme_path = []
|
||||
|
|
@ -163,7 +166,14 @@ html_static_path = ['_static']
|
|||
# html_use_smartypants = True
|
||||
|
||||
# Custom sidebar templates, maps document names to template names.
|
||||
html_sidebars = {'**': ['about.html', 'navigation.html', 'links.html', 'searchbox.html']}
|
||||
html_sidebars = {
|
||||
'**': [
|
||||
'about.html',
|
||||
'navigation.html',
|
||||
'links.html',
|
||||
'searchbox.html'
|
||||
]
|
||||
}
|
||||
|
||||
# Additional templates that should be rendered to pages, maps page names to
|
||||
# template names.
|
||||
|
|
@ -217,10 +227,13 @@ htmlhelp_basename = 'Glancesdoc'
|
|||
latex_elements = {
|
||||
# The paper size ('letterpaper' or 'a4paper').
|
||||
# 'papersize': 'letterpaper',
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
# 'pointsize': '10pt',
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
# 'preamble': '',
|
||||
|
||||
# Latex figure (float) alignment
|
||||
# 'figure_align': 'htbp',
|
||||
}
|
||||
|
|
@ -229,7 +242,8 @@ latex_elements = {
|
|||
# (source start file, target name, title,
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [
|
||||
(master_doc, 'Glances.tex', 'Glances Documentation', 'Nicolas Hennion', 'manual'),
|
||||
(master_doc, 'Glances.tex', 'Glances Documentation',
|
||||
'Nicolas Hennion', 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
|
|
@ -257,7 +271,10 @@ latex_documents = [
|
|||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [('glances', 'glances', 'An eye on your system', '', 1)]
|
||||
man_pages = [
|
||||
('glances', 'glances', 'An eye on your system',
|
||||
'', 1)
|
||||
]
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
# man_show_urls = False
|
||||
|
|
@ -269,15 +286,9 @@ man_pages = [('glances', 'glances', 'An eye on your system', '', 1)]
|
|||
# (source start file, target name, title, author,
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
(
|
||||
master_doc,
|
||||
'Glances',
|
||||
'Glances Documentation',
|
||||
author,
|
||||
'Glances',
|
||||
'One line description of project.',
|
||||
'Miscellaneous',
|
||||
),
|
||||
(master_doc, 'Glances', 'Glances Documentation',
|
||||
author, 'Glances', 'One line description of project.',
|
||||
'Miscellaneous'),
|
||||
]
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
|
|
|
|||
104
docs/config.rst
|
|
@ -5,7 +5,7 @@ Configuration
|
|||
|
||||
No configuration file is mandatory to use Glances.
|
||||
|
||||
Furthermore, a configuration file is needed to access more settings.
|
||||
Furthermore a configuration file is needed to access more settings.
|
||||
|
||||
Location
|
||||
--------
|
||||
|
|
@ -14,26 +14,25 @@ Location
|
|||
A template is available in the ``/usr{,/local}/share/doc/glances``
|
||||
(Unix-like) directory or directly on `GitHub`_.
|
||||
|
||||
You can place your ``glances.conf`` file in the following locations:
|
||||
You can put your own ``glances.conf`` file in the following locations:
|
||||
|
||||
==================== =============================================================
|
||||
``Linux``, ``SunOS`` ~/.config/glances/, /etc/glances/, /usr/share/doc/glances/
|
||||
``*BSD`` ~/.config/glances/, /usr/local/etc/glances/, /usr/share/doc/glances/
|
||||
``macOS`` ~/.config/glances/, ~/Library/Application Support/glances/, /usr/local/etc/glances/, /usr/share/doc/glances/
|
||||
``Linux``, ``SunOS`` ~/.config/glances/, /etc/glances/, /usr/share/docs/glances/
|
||||
``*BSD`` ~/.config/glances/, /usr/local/etc/glances/, /usr/share/docs/glances/
|
||||
``macOS`` ~/Library/Application Support/glances/, /usr/local/etc/glances/, /usr/share/docs/glances/
|
||||
``Windows`` %APPDATA%\\glances\\glances.conf
|
||||
``All`` + <venv_root_folder>/share/doc/glances/
|
||||
==================== =============================================================
|
||||
|
||||
- On Windows XP, ``%APPDATA%`` is: ``C:\Documents and Settings\<USERNAME>\Application Data``.
|
||||
- On Windows Vista and later: ``C:\Users\<USERNAME>\AppData\Roaming``.
|
||||
|
||||
User-specific options override system-wide options, and options given on
|
||||
the command line overrides both.
|
||||
User-specific options override system-wide options and options given on
|
||||
the command line override either.
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
Glances read configuration files in the *ini* syntax.
|
||||
Glances reads configuration files in the *ini* syntax.
|
||||
|
||||
A first section (called global) is available:
|
||||
|
||||
|
|
@ -41,67 +40,17 @@ A first section (called global) is available:
|
|||
|
||||
[global]
|
||||
# Refresh rate (default is a minimum of 2 seconds)
|
||||
# Can be overwritten by the -t <sec> option
|
||||
# It is also possible to overwrite it in each plugin section
|
||||
# Can be overwrite by the -t <sec> option
|
||||
# It is also possible to overwrite it in each plugin sections
|
||||
refresh=2
|
||||
# Should Glances check if a newer version is available on PyPI ?
|
||||
check_update=true
|
||||
# Does Glances should check if a newer version is available on PyPI ?
|
||||
check_update=false
|
||||
# History size (maximum number of values)
|
||||
# Default is 1200 values (~1h with the default refresh rate)
|
||||
history_size=1200
|
||||
# Set the way Glances should display the date (default is %Y-%m-%d %H:%M:%S %Z)
|
||||
#strftime_format="%Y-%m-%d %H:%M:%S %Z"
|
||||
# Define external directory for loading additional plugins
|
||||
# The layout follows the glances standard for plugin definitions
|
||||
#plugin_dir=/home/user/dev/plugins
|
||||
# Default is 28800: 1 day with 1 point every 3 seconds
|
||||
history_size=28800
|
||||
|
||||
than a second one concerning the user interface:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[outputs]
|
||||
# Options for all UIs
|
||||
#--------------------
|
||||
# Separator in the Curses and WebUI interface (between top and others plugins)
|
||||
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)
|
||||
max_processes_display=25
|
||||
# Options for WebUI
|
||||
#------------------
|
||||
# Set URL prefix for the WebUI and the API
|
||||
# Example: url_prefix=/glances/ => http://localhost/glances/
|
||||
# Note: The final / is mandatory
|
||||
# Default is no prefix (/)
|
||||
#url_prefix=/glances/
|
||||
# Set root path for WebUI statics files
|
||||
# Why ? On Debian system, WebUI statics files are not provided.
|
||||
# You can download it in a specific folder
|
||||
# thanks to https://github.com/nicolargo/glances/issues/2021
|
||||
# then configure this folder with the webui_root_path key
|
||||
# Default is folder where glances_restful_api.py is hosted
|
||||
#webui_root_path=
|
||||
# CORS options
|
||||
# Comma separated list of origins that should be permitted to make cross-origin requests.
|
||||
# Default is *
|
||||
#cors_origins=*
|
||||
# Indicate that cookies should be supported for cross-origin requests.
|
||||
# Default is True
|
||||
#cors_credentials=True
|
||||
# Comma separated list of HTTP methods that should be allowed for cross-origin requests.
|
||||
# Default is *
|
||||
#cors_methods=*
|
||||
# Comma separated list of HTTP request headers that should be supported for cross-origin requests.
|
||||
# Default is *
|
||||
#cors_headers=*
|
||||
# Define SSL files (keyfile_password is optional)
|
||||
#ssl_keyfile=./glances.local+3-key.pem
|
||||
#ssl_keyfile_password=kfp
|
||||
#ssl_certfile=./glances.local+3.pem
|
||||
|
||||
Each plugin, export module, and application monitoring process (AMP) can
|
||||
have a section. Below is an example for the CPU plugin:
|
||||
Each plugin, export module and application monitoring process (AMP) can
|
||||
have a section. Below an example for the CPU plugin:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
|
|
@ -141,16 +90,16 @@ or a Nginx AMP:
|
|||
.. code-block:: ini
|
||||
|
||||
[amp_nginx]
|
||||
# Nginx status page should be enabled (https://easyengine.io/tutorials/nginx/status-page/)
|
||||
# Nginx status page should be enable (https://easyengine.io/tutorials/nginx/status-page/)
|
||||
enable=true
|
||||
regex=\/usr\/sbin\/nginx
|
||||
refresh=60
|
||||
one_line=false
|
||||
status_url=http://localhost/nginx_status
|
||||
|
||||
With Glances 3.0 or higher, you can use dynamic configuration values
|
||||
by utilizing system commands. For example, if you want to set the prefix
|
||||
of an InfluxDB export to the current hostname, use:
|
||||
With Glances 3.0 or higher it is also possible to use dynamic configuration
|
||||
value using system command. For example, if you to set the prefix of an
|
||||
InfluxDB export to the current hostname, use:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
|
|
@ -171,17 +120,16 @@ Logging
|
|||
|
||||
Glances logs all of its internal messages to a log file.
|
||||
|
||||
``DEBUG`` messages can be logged using the ``-d`` option on the command
|
||||
``DEBUG`` messages can been logged using the ``-d`` option on the command
|
||||
line.
|
||||
|
||||
The location of the Glances log file depends on your operating system. You can
|
||||
display the full path of the Glances log file using the ``glances -V``
|
||||
command line.
|
||||
The location of the Glances depends of your operating system. You could
|
||||
displayed the Glances log file full path using the``glances -V`` command line.
|
||||
|
||||
The file is automatically rotated when its size exceeds 1 MB.
|
||||
The file is automatically rotate when the size is higher than 1 MB.
|
||||
|
||||
If you want to use another system path or change the log message, you
|
||||
can use your logger configuration. First of all, you have to create
|
||||
can use your own logger configuration. First of all, you have to create
|
||||
a ``glances.json`` file with, for example, the following content (JSON
|
||||
format):
|
||||
|
||||
|
|
@ -253,7 +201,7 @@ and start Glances using the following command line:
|
|||
LOG_CFG=<path>/glances.json glances
|
||||
|
||||
.. note::
|
||||
Replace ``<path>`` with the directory where your ``glances.json`` file
|
||||
Replace ``<path>`` by the folder where your ``glances.json`` file
|
||||
is hosted.
|
||||
|
||||
.. _GitHub: https://raw.githubusercontent.com/nicolargo/glances/master/conf/glances.conf
|
||||
|
|
|
|||
|
|
@ -3,59 +3,26 @@
|
|||
Docker
|
||||
======
|
||||
|
||||
Glances can be installed through Docker, allowing you to run it without
|
||||
installing all the Python dependencies directly on your system. Once you
|
||||
have `docker installed <https://docs.docker.com/install/>`_, you can
|
||||
Glances can be installed through Docker, allowing you to run it without installing all the python dependencies directly on your system. Once you have [docker installed](https://docs.docker.com/install/), you can
|
||||
|
||||
Get the Glances container:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
docker pull nicolargo/glances:<version or tag>
|
||||
docker pull nicolargo/glances:<version>
|
||||
|
||||
Available tags (all images are based on both Alpine and Ubuntu Operating Systems):
|
||||
Available tags (all images are based on both Alpine and Ubuntu Operating System):
|
||||
|
||||
.. list-table::
|
||||
:widths: 25 15 25 35
|
||||
:header-rows: 1
|
||||
|
||||
* - Image Tag
|
||||
- OS
|
||||
- Target
|
||||
- Installed Dependencies
|
||||
* - `latest-full`
|
||||
- Alpine
|
||||
- Latest Release
|
||||
- Full
|
||||
* - `latest`
|
||||
- Alpine
|
||||
- Latest Release
|
||||
- Minimal + (FastAPI & Docker)
|
||||
* - `dev`
|
||||
- Alpine
|
||||
- develop
|
||||
- Full
|
||||
* - `ubuntu-latest-full`
|
||||
- Ubuntu
|
||||
- Latest Release
|
||||
- Full
|
||||
* - `ubuntu-latest`
|
||||
- Ubuntu
|
||||
- Latest Release
|
||||
- Minimal + (FastAPI & Docker)
|
||||
* - `ubuntu-dev`
|
||||
- Ubuntu
|
||||
- develop
|
||||
- Full
|
||||
|
||||
.. warning::
|
||||
Tags containing `dev` directly target the `develop` branch and could be unstable.
|
||||
|
||||
For example, if you want a full Alpine Glances image (latest release) with all dependencies, go for `latest-full`.
|
||||
- *latest-full* for a full Alpine Glances image (latest release) with all dependencies
|
||||
- *latest* for a basic Alpine Glances (latest release) version with minimal dependencies (Bottle and Docker)
|
||||
- *dev* for a basic Alpine Glances image (based on development branch) with all dependencies (Warning: may be instable)
|
||||
- *ubuntu-latest-full* for a full Ubuntu Glances image (latest release) with all dependencies
|
||||
- *ubuntu-latest* for a basic Ubuntu Glances (latest release) version with minimal dependencies (Bottle and Docker)
|
||||
- *ubuntu-dev* for a basic Ubuntu Glances image (based on development branch) with all dependencies (Warning: may be instable)
|
||||
|
||||
You can also specify a version (example: 3.4.0). All available versions can be found on `DockerHub`_.
|
||||
|
||||
An example of how to pull the `latest` tag:
|
||||
An Example to pull the `latest` tag:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
|
|
@ -65,7 +32,7 @@ Run the container in *console mode*:
|
|||
|
||||
.. code-block:: console
|
||||
|
||||
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:ro -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro --pid host --network host -it docker.io/nicolargo/glances
|
||||
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host --network host -it docker.io/nicolargo/glances
|
||||
|
||||
Additionally, if you want to use your own glances.conf file, you can create your own Dockerfile:
|
||||
|
||||
|
|
@ -79,27 +46,19 @@ Alternatively, you can specify something along the same lines with docker run op
|
|||
|
||||
.. code-block:: console
|
||||
|
||||
docker run -v `pwd`/glances.conf:/etc/glances/glances.conf -v /var/run/docker.sock:/var/run/docker.sock:ro -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro --pid host -it docker.io/nicolargo/glances
|
||||
docker run -v `pwd`/glances.conf:/glances/conf/glances.conf -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host -it docker.io/nicolargo/glances
|
||||
|
||||
Where \`pwd\`/glances.conf is a local directory containing your glances.conf file.
|
||||
|
||||
Glances by default uses the container's OS information in the UI. If you want to display the host's OS info, you can do that by mounting `/etc/os-release` into the container.
|
||||
|
||||
Here is a simple docker run example for that:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
docker run -v /etc/os-release:/etc/os-release:ro docker.io/nicolargo/glances
|
||||
|
||||
Run the container in *Web server mode* (notice the `GLANCES_OPT` environment variable setting parameters for the glances startup command):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
docker run -d --restart="always" -p 61208-61209:61208-61209 -e GLANCES_OPT="-w" -v /var/run/docker.sock:/var/run/docker.sock:ro -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro --pid host docker.io/nicolargo/glances
|
||||
docker run -d --restart="always" -p 61208-61209:61208-61209 -e GLANCES_OPT="-w" -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host docker.io/nicolargo/glances
|
||||
|
||||
Note: if you want to see the network interface stats within the container, add --net=host --privileged
|
||||
|
||||
You can also include Glances container in you own `docker-compose.yml`. A realistic example includes a "traefik" reverse proxy serving an "whoami" app container plus a Glances container, providing a simple and efficient monitoring webui.
|
||||
You can also include Glances container in you own `docker-compose.yml`. Here's a realistic example including a "traefik" reverse proxy serving an "whoami" app container plus a Glances container, providing a simple and efficient monitoring webui.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
|
|
@ -121,13 +80,11 @@ You can also include Glances container in you own `docker-compose.yml`. A realis
|
|||
- "traefik.frontend.rule=Host:whoami.docker.localhost"
|
||||
|
||||
monitoring:
|
||||
image: nicolargo/glances:latest
|
||||
image: nicolargo/glances:latest-alpine
|
||||
restart: always
|
||||
pid: host
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
# Uncomment the below line if you want glances to display host OS detail instead of container's
|
||||
# - /etc/os-release:/etc/os-release:ro
|
||||
environment:
|
||||
- "GLANCES_OPT=-w"
|
||||
labels:
|
||||
|
|
@ -154,8 +111,6 @@ and generate the password file (the default login is ``glances``, add the ``--us
|
|||
|
||||
glances -s --password
|
||||
|
||||
Note: or ``glances -w --password`` for the web server mode.
|
||||
|
||||
which will prompt you to answer the following questions:
|
||||
|
||||
.. code-block:: console
|
||||
|
|
@ -187,11 +142,9 @@ and make it visible to your container by adding it to ``docker-compose.yml`` as
|
|||
image: nicolargo/glances:latest
|
||||
restart: always
|
||||
environment:
|
||||
- "GLANCES_OPT=-w --password"
|
||||
- GLANCES_OPT="-w --password"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
# Uncomment the below line if you want glances to display host OS detail instead of container's
|
||||
# - /etc/os-release:/etc/os-release:ro
|
||||
pid: host
|
||||
secrets:
|
||||
- source: glances_password
|
||||
|
|
@ -251,8 +204,6 @@ Include the `deploy` section in compose file as specified below in the example s
|
|||
network_mode: host
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
# Uncomment the below line if you want glances to display host OS detail instead of container's
|
||||
# - /etc/os-release:/etc/os-release:ro
|
||||
environment:
|
||||
- "GLANCES_OPT=-w"
|
||||
# For nvidia GPUs
|
||||
|
|
|
|||
45
docs/faq.rst
|
|
@ -3,51 +3,8 @@
|
|||
F.A.Q
|
||||
=====
|
||||
|
||||
Any encoding issue ?
|
||||
--------------------
|
||||
*Any encoding issue ?*
|
||||
|
||||
Try to run Glances with the following command line:
|
||||
|
||||
LANG=en_US.UTF-8 LC_ALL= glances
|
||||
|
||||
Container memory stats not displayed ?
|
||||
--------------------------------------
|
||||
|
||||
On ARM64, Docker needs to be configured to allow access to the memory stats.
|
||||
|
||||
Edit the /boot/firmware/cmdline.txt and add the following configuration key:
|
||||
|
||||
cgroup_enable=memory
|
||||
|
||||
Netifaces issue ?
|
||||
-----------------
|
||||
|
||||
Previously, Glances uses Netifaces to get network interfaces information.
|
||||
|
||||
Now, Glances uses Netifaces2.
|
||||
|
||||
Please uninstall Netifaces and install Netifaces2 instead.
|
||||
|
||||
Extra note: Glances 4.5 or higher do not use Netifaces/Netifaces2 anymore.
|
||||
|
||||
On Debian/Ubuntu Operating Systems, Webserver display a blank screen ?
|
||||
----------------------------------------------------------------------
|
||||
|
||||
For some reason, the Glances Debian/Ubuntu packages do not include the Web UI static files.
|
||||
|
||||
Please read: https://github.com/nicolargo/glances/issues/2021 for workaround and more information.
|
||||
|
||||
Glances said that my computer has no free memory, is it normal ?
|
||||
----------------------------------------------------------------
|
||||
|
||||
On Linux, Glances shows by default the free memory.
|
||||
|
||||
Free memory can be low, it's a "normal" behavior because Linux uses free memory for disk caching
|
||||
to improve performance. More information can be found here: https://linuxatemyram.com/.
|
||||
|
||||
If you want to display the "available" memory instead of the "free" memory, you can uses the
|
||||
the following configuration key in the Glances configuration file:
|
||||
|
||||
[mem]
|
||||
# Display available memory instead of used memory
|
||||
available=True
|
||||
|
|
|
|||
|
|
@ -1,46 +0,0 @@
|
|||
.. _fetch:
|
||||
|
||||
Fetch
|
||||
=====
|
||||
|
||||
The fetch mode is used to get and share a quick look of a machine using the
|
||||
``fetch`` option. In this mode, current stats are displayed on the console in
|
||||
a fancy way.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances --fetch
|
||||
|
||||
Results look like this:
|
||||
|
||||
.. image:: _static/screenshot-fetch.png
|
||||
|
||||
It is also possible to use a custom template with the ``--fetch-template </path/to/template.jinja>`` option.
|
||||
|
||||
Some examples are provided in the ``conf/fetch-templates/`` directory. Please feel free to
|
||||
customize them or create your own template (contribution via PR are welcome).
|
||||
|
||||
The format of the template is based on the Jinja2 templating engine and can use all the stats
|
||||
available in Glances through the ``gl`` variable (an instance of the :ref:`Glances Python API<api>`).
|
||||
|
||||
For example, the default template is define as:
|
||||
|
||||
.. code-block:: jinja
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
✨ {{ gl.system['hostname'] }}{{ ' - ' + gl.ip['address'] if gl.ip['address'] else '' }}
|
||||
⚙️ {{ gl.system['hr_name'] }} | Uptime: {{ gl.uptime }}
|
||||
|
||||
💡 LOAD {{ '%0.2f'| format(gl.load['min1']) }} {{ '%0.2f'| format(gl.load['min5']) }} {{ '%0.2f'| format(gl.load['min15']) }}
|
||||
⚡ CPU {{ gl.bar(gl.cpu['total']) }} {{ gl.cpu['total'] }}% of {{ gl.core['log'] }} cores
|
||||
🧠 MEM {{ gl.bar(gl.mem['percent']) }} {{ gl.mem['percent'] }}% ({{ gl.auto_unit(gl.mem['used']) }} {{ gl.auto_unit(gl.mem['total']) }})
|
||||
{% for fs in gl.fs.keys() %}💾 {% if loop.index == 1 %}DISK{% else %} {% endif %} {{ gl.bar(gl.fs[fs]['percent']) }} {{ gl.fs[fs]['percent'] }}% ({{ gl.auto_unit(gl.fs[fs]['used']) }} {{ gl.auto_unit(gl.fs[fs]['size']) }}) for {{ fs }}
|
||||
{% endfor %}{% for net in gl.network.keys() %}📡 {% if loop.index == 1 %}NET{% else %} {% endif %} ↓ {{ gl.auto_unit(gl.network[net]['bytes_recv_rate_per_sec']) }}b/s ↑ {{ gl.auto_unit(gl.network[net]['bytes_sent_rate_per_sec']) }}b/s for {{ net }}
|
||||
{% endfor %}
|
||||
🔥 TOP PROCESS by CPU
|
||||
{% for process in gl.top_process() %}{{ loop.index }}️⃣ {{ process['name'][:20] }}{{ ' ' * (20 - process['name'][:20] | length) }} ⚡ {{ process['cpu_percent'] }}% CPU{{ ' ' * (8 - (gl.auto_unit(process['cpu_percent']) | length)) }} 🧠 {{ gl.auto_unit(process['memory_info']['rss']) }}B MEM
|
||||
{% endfor %}
|
||||
🔥 TOP PROCESS by MEM
|
||||
{% for process in gl.top_process(sorted_by='memory_percent', sorted_by_secondary='cpu_percent') %}{{ loop.index }}️⃣ {{ process['name'][:20] }}{{ ' ' * (20 - process['name'][:20] | length) }} 🧠 {{ gl.auto_unit(process['memory_info']['rss']) }}B MEM{{ ' ' * (7 - (gl.auto_unit(process['memory_info']['rss']) | length)) }} ⚡ {{ process['cpu_percent'] }}% CPU
|
||||
{% endfor %}
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
|
@ -11,12 +11,12 @@ SYNOPSIS
|
|||
DESCRIPTION
|
||||
-----------
|
||||
|
||||
**glances** is a cross-platform curses-based monitoring tool that aims
|
||||
to present a maximum of information in a minimum of space, ideally fitting
|
||||
in a classic 80x24 terminal or larger for more details. It can adapt
|
||||
dynamically to the displayed information depending on the terminal size.
|
||||
It can also work in client/server mode.
|
||||
Remote monitoring can be performed via a terminal or web interface.
|
||||
**glances** is a cross-platform curses-based monitoring tool which aims
|
||||
to present a maximum of information in a minimum of space, ideally to
|
||||
fit in a classical 80x24 terminal or higher to have additional
|
||||
information. It can adapt dynamically the displayed information
|
||||
depending on the terminal size. It can also work in client/server mode.
|
||||
Remote monitoring could be done via terminal or web interface.
|
||||
|
||||
**glances** is written in Python and uses the *psutil* library to get
|
||||
information from your system.
|
||||
|
|
@ -34,25 +34,23 @@ CONFIGURATION
|
|||
EXAMPLES
|
||||
--------
|
||||
|
||||
Monitor local machine, also called standalone mode,
|
||||
with the Text-based user interface (TUI):
|
||||
Monitor local machine (standalone mode):
|
||||
|
||||
$ glances
|
||||
|
||||
To monitor the local machine with the Web user interface (WebUI),
|
||||
, run the following command line:
|
||||
Monitor local machine with the web interface (Web UI), run the following command line:
|
||||
|
||||
$ glances -w
|
||||
|
||||
then, open a Web Browser to the provided URL.
|
||||
and open a Web browser with the returned URL
|
||||
|
||||
Monitor local machine and export stats to a CSV file:
|
||||
|
||||
$ glances --export csv --export-csv-file /tmp/glances.csv
|
||||
|
||||
Monitor local machine and export stats to an InfluxDB server with 5s
|
||||
Monitor local machine and export stats to a InfluxDB server with 5s
|
||||
refresh time (also possible to export to OpenTSDB, Cassandra, Statsd,
|
||||
ElasticSearch, RabbitMQ, and Riemann):
|
||||
ElasticSearch, RabbitMQ and Riemann):
|
||||
|
||||
$ glances -t 5 --export influxdb
|
||||
|
||||
|
|
@ -72,16 +70,10 @@ Connect to a Glances server and export stats to a StatsD server:
|
|||
|
||||
$ glances -c <ip_server> --export statsd
|
||||
|
||||
Start the TUI Central Glances Browser:
|
||||
Start the client browser (browser mode):
|
||||
|
||||
$ glances --browser
|
||||
|
||||
Start the WebUI Central Glances Browser (new in Glances 4.3 or higher):
|
||||
|
||||
$ glances --browser -w
|
||||
|
||||
If you do not want to see the local Glances Web Server in the browser list please use --disable-autodiscover option.
|
||||
|
||||
AUTHOR
|
||||
------
|
||||
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@ following:
|
|||
|
||||
.. code-block:: ini
|
||||
|
||||
[couchdb]
|
||||
[mongodb]
|
||||
host=localhost
|
||||
port=5984
|
||||
port=27017
|
||||
db=glances
|
||||
user=root
|
||||
password=example
|
||||
|
|
@ -20,31 +20,24 @@ and run Glances with:
|
|||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances --export couchdb
|
||||
$ glances --export mongodb
|
||||
|
||||
Documents are stored in native ``JSON`` format. Glances adds ``"type"``
|
||||
and ``"time"`` entries:
|
||||
Documents are stored in native the configured database (glances by default)
|
||||
with one collection per plugin.
|
||||
|
||||
- ``type``: plugin name
|
||||
- ``time``: timestamp (format: "2016-09-24T16:39:08.524Z")
|
||||
|
||||
Example of Couch Document for the load stats:
|
||||
Example of MongoDB Document for the load stats:
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"_id": "36cbbad81453c53ef08804cb2612d5b6",
|
||||
"_rev": "1-382400899bec5615cabb99aa34df49fb",
|
||||
"min15": 0.33,
|
||||
"time": "2016-09-24T16:39:08.524Z",
|
||||
"min5": 0.4,
|
||||
"cpucore": 4,
|
||||
"load_warning": 1,
|
||||
"min1": 0.5,
|
||||
"history_size": 28800,
|
||||
"load_critical": 5,
|
||||
"type": "load",
|
||||
"load_careful": 0.7
|
||||
_id: ObjectId('63d78ffee5528e543ce5af3a'),
|
||||
min1: 1.46337890625,
|
||||
min5: 1.09619140625,
|
||||
min15: 1.07275390625,
|
||||
cpucore: 4,
|
||||
history_size: 1200,
|
||||
load_disable: 'False',
|
||||
load_careful: 0.7,
|
||||
load_warning: 1,
|
||||
load_critical: 5
|
||||
}
|
||||
|
||||
You can view the result using the CouchDB utils URL: http://127.0.0.1:5984/_utils/database.html?glances.
|
||||
|
|
|
|||
|
|
@ -1,110 +0,0 @@
|
|||
.. _duckdb:
|
||||
|
||||
DuckDB
|
||||
===========
|
||||
|
||||
DuckDB is an in-process SQL OLAP database management system.
|
||||
|
||||
You can export statistics to a ``DuckDB`` server.
|
||||
|
||||
The connection should be defined in the Glances configuration file as
|
||||
following:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[duckdb]
|
||||
# database defines where data are stored, can be one of:
|
||||
# /path/to/glances.db (see https://duckdb.org/docs/stable/clients/python/dbapi#file-based-connection)
|
||||
# :memory:glances (see https://duckdb.org/docs/stable/clients/python/dbapi#in-memory-connection)
|
||||
# Or anyone else supported by the API (see https://duckdb.org/docs/stable/clients/python/dbapi)
|
||||
database=/tmp/glances.db
|
||||
|
||||
and run Glances with:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances --export duckdb
|
||||
|
||||
Data model
|
||||
-----------
|
||||
|
||||
The data model is composed of one table per Glances plugin.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
>>> import duckdb
|
||||
>>> db = duckdb.connect(database='/tmp/glances.db', read_only=True)
|
||||
|
||||
>>> db.sql("SELECT * from cpu")
|
||||
┌─────────────────────┬─────────────────┬────────┬────────┬────────┬───┬────────────────────┬─────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐
|
||||
│ time │ hostname_id │ total │ user │ nice │ … │ cpu_iowait_warning │ cpu_iowait_critical │ cpu_ctx_switches_c… │ cpu_ctx_switches_w… │ cpu_ctx_switches_c… │
|
||||
│ time with time zone │ varchar │ double │ double │ double │ │ double │ double │ double │ double │ double │
|
||||
├─────────────────────┼─────────────────┼────────┼────────┼────────┼───┼────────────────────┼─────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤
|
||||
│ 11:50:25+00 │ nicolargo-xps15 │ 8.0 │ 5.6 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:50:27+00 │ nicolargo-xps15 │ 4.3 │ 3.2 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:50:29+00 │ nicolargo-xps15 │ 4.3 │ 3.2 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:50:31+00 │ nicolargo-xps15 │ 14.9 │ 15.7 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:50:33+00 │ nicolargo-xps15 │ 14.9 │ 15.7 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:50:35+00 │ nicolargo-xps15 │ 8.2 │ 7.8 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:50:37+00 │ nicolargo-xps15 │ 8.2 │ 7.8 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:50:39+00 │ nicolargo-xps15 │ 12.7 │ 10.3 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:50:41+00 │ nicolargo-xps15 │ 12.7 │ 10.3 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:50:43+00 │ nicolargo-xps15 │ 12.2 │ 10.3 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │
|
||||
│ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │
|
||||
│ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │
|
||||
│ 11:51:29+00 │ nicolargo-xps15 │ 10.1 │ 7.4 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:51:32+00 │ nicolargo-xps15 │ 10.1 │ 7.4 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:51:34+00 │ nicolargo-xps15 │ 6.6 │ 4.9 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:51:36+00 │ nicolargo-xps15 │ 6.6 │ 4.9 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:51:38+00 │ nicolargo-xps15 │ 9.9 │ 7.5 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:51:40+00 │ nicolargo-xps15 │ 9.9 │ 7.5 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:51:42+00 │ nicolargo-xps15 │ 4.0 │ 3.1 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:51:44+00 │ nicolargo-xps15 │ 4.0 │ 3.1 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:51:46+00 │ nicolargo-xps15 │ 11.1 │ 8.8 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
│ 11:51:48+00 │ nicolargo-xps15 │ 11.1 │ 8.8 │ 0.0 │ … │ 5.625 │ 6.25 │ 640000.0 │ 720000.0 │ 800000.0 │
|
||||
├─────────────────────┴─────────────────┴────────┴────────┴────────┴───┴────────────────────┴─────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┤
|
||||
│ 41 rows (20 shown) 47 columns (10 shown) │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
|
||||
>>> db.sql("SELECT * from cpu").fetchall()[0]
|
||||
(datetime.time(11, 50, 25, tzinfo=datetime.timezone.utc), 'nicolargo-xps15', 8.0, 5.6, 0.0, 2.3, 91.9, 0.1, 0.0, 0.0, 0.0, 0, 0, 0, 0, 16, 2.4103684425354004, 90724823, 0, 63323797, 0, 30704572, 0, 0, 0, 1200.0, 65.0, 75.0, 85.0, True, 50.0, 70.0, 90.0, True, 50.0, 70.0, 90.0, True, 50.0, 70.0, 90.0, 5.0, 5.625, 6.25, 640000.0, 720000.0, 800000.0)
|
||||
|
||||
|
||||
>>> db.sql("SELECT * from network")
|
||||
┌─────────────────────┬─────────────────┬────────────────┬────────────┬────────────┬───┬─────────────────────┬────────────────┬────────────────────┬────────────────────┬───────────────────┐
|
||||
│ time │ hostname_id │ key_id │ bytes_sent │ bytes_recv │ … │ network_tx_critical │ network_hide │ network_hide_no_up │ network_hide_no_ip │ network_hide_zero │
|
||||
│ time with time zone │ varchar │ varchar │ int64 │ int64 │ │ double │ varchar │ boolean │ boolean │ boolean │
|
||||
├─────────────────────┼─────────────────┼────────────────┼────────────┼────────────┼───┼─────────────────────┼────────────────┼────────────────────┼────────────────────┼───────────────────┤
|
||||
│ 11:50:25+00 │ nicolargo-xps15 │ interface_name │ 407761 │ 32730 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:50:27+00 │ nicolargo-xps15 │ interface_name │ 2877 │ 4857 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:50:29+00 │ nicolargo-xps15 │ interface_name │ 44504 │ 32555 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:50:31+00 │ nicolargo-xps15 │ interface_name │ 1092285 │ 48600 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:50:33+00 │ nicolargo-xps15 │ interface_name │ 150119 │ 43805 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:50:35+00 │ nicolargo-xps15 │ interface_name │ 34424 │ 14825 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:50:37+00 │ nicolargo-xps15 │ interface_name │ 19382 │ 33614 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:50:39+00 │ nicolargo-xps15 │ interface_name │ 53060 │ 39780 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:50:41+00 │ nicolargo-xps15 │ interface_name │ 371914 │ 78626 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:50:43+00 │ nicolargo-xps15 │ interface_name │ 82356 │ 60612 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │
|
||||
│ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │
|
||||
│ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │
|
||||
│ 11:51:29+00 │ nicolargo-xps15 │ interface_name │ 3766 │ 9977 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:51:32+00 │ nicolargo-xps15 │ interface_name │ 188036 │ 18668 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:51:34+00 │ nicolargo-xps15 │ interface_name │ 543 │ 2451 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:51:36+00 │ nicolargo-xps15 │ interface_name │ 8247 │ 7275 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:51:38+00 │ nicolargo-xps15 │ interface_name │ 7252 │ 986 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:51:40+00 │ nicolargo-xps15 │ interface_name │ 172 │ 132 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:51:42+00 │ nicolargo-xps15 │ interface_name │ 8080 │ 6640 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:51:44+00 │ nicolargo-xps15 │ interface_name │ 19660 │ 17830 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:51:46+00 │ nicolargo-xps15 │ interface_name │ 1007030 │ 84170 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
│ 11:51:48+00 │ nicolargo-xps15 │ interface_name │ 128947 │ 18087 │ … │ 90.0 │ [docker.*, lo] │ true │ true │ true │
|
||||
├─────────────────────┴─────────────────┴────────────────┴────────────┴────────────┴───┴─────────────────────┴────────────────┴────────────────────┴────────────────────┴───────────────────┤
|
||||
│ 41 rows (20 shown) 28 columns (10 shown) │
|
||||
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
|
||||
|
||||
.. _duckdb: https://duckdb.org/
|
||||
|
||||
|
|
@ -3,24 +3,8 @@
|
|||
Gateway To Other Services
|
||||
=========================
|
||||
|
||||
Glances can exports stats in files or to other services like databases, message queues, etc.
|
||||
|
||||
Each exporter has its own configuration options, which can be set in the Glances
|
||||
configuration file (`glances.conf`).
|
||||
|
||||
A common options section is also available:
|
||||
|
||||
is the `exclude_fields` option, which allows you to specify
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[export]
|
||||
# Common section for all exporters
|
||||
# Do not export following fields (comma separated list of regex)
|
||||
exclude_fields=.*_critical,.*_careful,.*_warning,.*\.key$
|
||||
|
||||
|
||||
This section describes the available exporters and how to configure them:
|
||||
Glances can exports stats to a CSV file. Also, it can act as a gateway
|
||||
to providing stats to multiple services (see list below).
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
|
@ -30,18 +14,15 @@ This section describes the available exporters and how to configure them:
|
|||
couchdb
|
||||
elastic
|
||||
graph
|
||||
graphite
|
||||
influxdb
|
||||
json
|
||||
kafka
|
||||
mqtt
|
||||
mongodb
|
||||
nats
|
||||
opentsdb
|
||||
prometheus
|
||||
rabbitmq
|
||||
restful
|
||||
riemann
|
||||
statsd
|
||||
timescaledb
|
||||
zeromq
|
||||
|
|
|
|||
|
|
@ -17,19 +17,19 @@ Glances InfluxDB data model:
|
|||
+---------------+-----------------------+-----------------------+
|
||||
| Measurement | Fields | Tags |
|
||||
+===============+=======================+=======================+
|
||||
| cpu | user | hostname |
|
||||
| cpu | user | hostname |
|
||||
| | system | |
|
||||
| | iowait... | |
|
||||
+---------------+-----------------------+-----------------------+
|
||||
| network | read_bytes | hostname |
|
||||
| | write_bytes | disk_name |
|
||||
| | time_since_update... | |
|
||||
| | | |
|
||||
| | | |
|
||||
+---------------+-----------------------+-----------------------+
|
||||
| diskio | rx | hostname |
|
||||
| | tx | interface_name |
|
||||
| | time_since_update... | |
|
||||
| | | |
|
||||
| | | |
|
||||
+---------------+-----------------------+-----------------------+
|
||||
| docker | cpu_percent | hostname |
|
||||
| | memory_usage... | name |
|
||||
|
|
@ -78,7 +78,7 @@ configuration file (no limit on columns number).
|
|||
Note: if you want to use SSL, please set 'protocol=https'.
|
||||
|
||||
|
||||
InfluxDB v2 (from InfluxDB v1.8.x/Flux and InfluxDB <v3.x)
|
||||
InfluxDB v2 (from InfluxDB v1.8.x/Flux and InfluxDB v2.x)
|
||||
---------------------------------------------------------
|
||||
|
||||
Note: The InfluxDB v2 client (https://pypi.org/project/influxdb-client/)
|
||||
|
|
@ -90,14 +90,12 @@ following:
|
|||
.. code-block:: ini
|
||||
|
||||
[influxdb2]
|
||||
# Configuration for the --export influxdb2 option
|
||||
# https://influxdb.com/
|
||||
host=localhost
|
||||
port=8086
|
||||
protocol=http
|
||||
org=nicolargo
|
||||
bucket=glances
|
||||
token=PUT_YOUR_INFLUXDB2_TOKEN_HERE
|
||||
token=EjFUTWe8U-MIseEAkaVIgVnej_TrnbdvEcRkaB1imstW7gapSqy6_6-8XD-yd51V0zUUpDy-kAdVD1purDLuxA==
|
||||
# Set the interval between two exports (in seconds)
|
||||
# If the interval is set to 0, the Glances refresh time is used (default behavor)
|
||||
#interval=0
|
||||
|
|
@ -109,7 +107,7 @@ following:
|
|||
#prefix=foo
|
||||
# Following tags will be added for all measurements
|
||||
# You can also use dynamic values.
|
||||
# Note: hostname and name (for process) are always added as a tag
|
||||
# Note: hostname is always added as a tag
|
||||
#tags=foo:bar,spam:eggs,domain:`domainname`
|
||||
|
||||
and run Glances with:
|
||||
|
|
@ -120,46 +118,6 @@ and run Glances with:
|
|||
|
||||
Note: if you want to use SSL, please set 'protocol=https'.
|
||||
|
||||
InfluxDB v3 (for InfluxDB 3.x)
|
||||
------------------------------
|
||||
|
||||
Note: The InfluxDB v3 client (https://pypi.org/project/influxdb3-python/)
|
||||
is only available for Python 3.8 or higher.
|
||||
|
||||
The connection should be defined in the Glances configuration file as
|
||||
following:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[influxdb3]
|
||||
# Configuration for the --export influxdb3 option
|
||||
# https://influxdb.com/
|
||||
host=http://localhost:8181
|
||||
org=nicolargo
|
||||
database=glances
|
||||
token=PUT_YOUR_INFLUXDB3_TOKEN_HERE
|
||||
# Set the interval between two exports (in seconds)
|
||||
# If the interval is set to 0, the Glances refresh time is used (default behavor)
|
||||
#interval=0
|
||||
# Prefix will be added for all measurement name
|
||||
# Ex: prefix=foo
|
||||
# => foo.cpu
|
||||
# => foo.mem
|
||||
# You can also use dynamic values
|
||||
#prefix=foo
|
||||
# Following tags will be added for all measurements
|
||||
# You can also use dynamic values.
|
||||
# Note: hostname and name (for process) are always added as a tag
|
||||
#tags=foo:bar,spam:eggs,domain:`domainname`
|
||||
|
||||
and run Glances with:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances --export influxdb3
|
||||
|
||||
Note: if you want to use SSL, please set host with 'https' scheme instead of 'http'.
|
||||
|
||||
Grafana
|
||||
-------
|
||||
|
||||
|
|
|
|||
|
|
@ -9,35 +9,42 @@ following:
|
|||
|
||||
.. code-block:: ini
|
||||
|
||||
[mongodb]
|
||||
[couchdb]
|
||||
host=localhost
|
||||
port=27017
|
||||
db=glances
|
||||
port=
|
||||
user=root
|
||||
password=example
|
||||
db=glances
|
||||
|
||||
and run Glances with:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances --export mongodb
|
||||
$ glances --export couchdb
|
||||
|
||||
Documents are stored in native the configured database (glances by default)
|
||||
with one collection per plugin.
|
||||
Documents are stored in native ``JSON`` format. Glances adds ``"type"``
|
||||
and ``"time"`` entries:
|
||||
|
||||
Example of MongoDB Document for the load stats:
|
||||
- ``type``: plugin name
|
||||
- ``time``: timestamp (format: "2016-09-24T16:39:08.524828Z")
|
||||
|
||||
Example of Couch Document for the load stats:
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
_id: ObjectId('63d78ffee5528e543ce5af3a'),
|
||||
min1: 1.46337890625,
|
||||
min5: 1.09619140625,
|
||||
min15: 1.07275390625,
|
||||
cpucore: 4,
|
||||
history_size: 1200,
|
||||
load_disable: 'False',
|
||||
load_careful: 0.7,
|
||||
load_warning: 1,
|
||||
load_critical: 5
|
||||
"_id": "36cbbad81453c53ef08804cb2612d5b6",
|
||||
"_rev": "1-382400899bec5615cabb99aa34df49fb",
|
||||
"min15": 0.33,
|
||||
"time": "2016-09-24T16:39:08.524828Z",
|
||||
"min5": 0.4,
|
||||
"cpucore": 4,
|
||||
"load_warning": 1,
|
||||
"min1": 0.5,
|
||||
"history_size": 28800,
|
||||
"load_critical": 5,
|
||||
"type": "load",
|
||||
"load_careful": 0.7
|
||||
}
|
||||
|
||||
You can view the result using the CouchDB utils URL: http://127.0.0.1:5984/_utils/database.html?glances.
|
||||
|
|
|
|||
|
|
@ -11,15 +11,12 @@ following:
|
|||
|
||||
[mqtt]
|
||||
host=localhost
|
||||
# Overwrite device name in the topic (see detail in PR#2701)
|
||||
#devicename=localhost
|
||||
port=883
|
||||
tls=true
|
||||
user=glances
|
||||
password=glances
|
||||
topic=glances
|
||||
topic_structure=per-metric
|
||||
callback_api_version=2
|
||||
|
||||
and run Glances with:
|
||||
|
||||
|
|
|
|||
|
|
@ -1,68 +0,0 @@
|
|||
.. _nats:
|
||||
|
||||
NATS
|
||||
====
|
||||
|
||||
NATS is a message broker.
|
||||
|
||||
You can export statistics to a ``NATS`` server.
|
||||
|
||||
The connection should be defined in the Glances configuration file as
|
||||
following:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[nats]
|
||||
host=nats://localhost:4222
|
||||
prefix=glances
|
||||
|
||||
and run Glances with:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ glances --export nats
|
||||
|
||||
Data model
|
||||
-----------
|
||||
|
||||
Glances stats are published as JSON messagesto the following subjects:
|
||||
|
||||
<prefix>.<plugin>
|
||||
|
||||
Example:
|
||||
|
||||
CPU stats are published to glances.cpu
|
||||
|
||||
So a simple Python client will subscribe to this subject with:
|
||||
|
||||
|
||||
import asyncio
|
||||
|
||||
import nats
|
||||
|
||||
|
||||
async def main():
|
||||
nc = nats.NATS()
|
||||
|
||||
await nc.connect(servers=["nats://localhost:4222"])
|
||||
|
||||
future = asyncio.Future()
|
||||
|
||||
async def cb(msg):
|
||||
nonlocal future
|
||||
future.set_result(msg)
|
||||
|
||||
await nc.subscribe("glances.cpu", cb=cb)
|
||||
|
||||
# Wait for message to come in
|
||||
print("Waiting (max 30 seconds) for a message on 'glances' subject...")
|
||||
msg = await asyncio.wait_for(future, 30)
|
||||
print(msg.subject, msg.data)
|
||||
|
||||
if __name__ == '__main__':
|
||||
asyncio.run(main())
|
||||
|
||||
To subscribe to all Glannces stats use wildcard:
|
||||
|
||||
await nc.subscribe("glances.*", cb=cb)
|
||||
|
||||
|
|
@ -4,8 +4,8 @@ Prometheus
|
|||
==========
|
||||
|
||||
You can export statistics to a ``Prometheus`` server through an exporter.
|
||||
When the *--export prometheus* is used, Glances creates a Prometheus exporter
|
||||
listening on <host:port> (defined in the Glances configuration file).
|
||||
When the *--export-prometheus* is used, Glances creates a Prometheus exporter
|
||||
listening on <host:port> (define in the Glances configuration file).
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
|
|
|
|||