From e57eef141a8d006528dd21d64335798f87968f7b Mon Sep 17 00:00:00 2001 From: nicolargo Date: Sun, 24 Apr 2016 22:17:39 +0200 Subject: [PATCH] Doc updated. Have to test it with degraded cases --- NEWS | 1 + docs/_static/amps.png | Bin 0 -> 56944 bytes docs/aoa/index.rst | 1 + docs/cmds.rst | 11 ++++++++++ glances/amps/glances_amp.py | 9 ++++++++ glances/amps/glances_nginx.py | 34 ++++++++++++++++++----------- glances/main.py | 4 ++++ glances/outputs/glances_curses.py | 3 +++ glances/plugins/glances_amps.py | 2 +- glances/plugins/glances_monitor.py | 2 +- 10 files changed, 52 insertions(+), 15 deletions(-) create mode 100644 docs/_static/amps.png diff --git a/NEWS b/NEWS index c03e33a3..b9847652 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ Version 2.7 Enhancements and new features: + * Add Application Monitoring Process plugin (issue #780) * Improve IP plugin to display public IP address (issue #646) * CPU additionnal stats monitoring: Context switch, Interrupts... (issue #810) * [Folders] Differentiate permission issue and non-existence of a directory (issue #828) diff --git a/docs/_static/amps.png b/docs/_static/amps.png new file mode 100644 index 0000000000000000000000000000000000000000..bbcc7efe1e95e8c5e161d40b7ce027d26f9ab144 GIT binary patch literal 56944 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 literal 0 HcmV?d00001 diff --git a/docs/aoa/index.rst b/docs/aoa/index.rst index 097555a9..d0b65ddb 100644 --- a/docs/aoa/index.rst +++ b/docs/aoa/index.rst @@ -32,6 +32,7 @@ Legend: sensors ps monitor + amps logs docker actions diff --git a/docs/cmds.rst b/docs/cmds.rst index cfd51115..e67bd974 100644 --- a/docs/cmds.rst +++ b/docs/cmds.rst @@ -95,6 +95,14 @@ Command-Line Options disable process module +.. option:: --disable-monitor + + disable monitoring process list module + +.. option:: --disable-amp + + disable application monitoring process module + .. option:: --disable-log disable log module @@ -291,6 +299,9 @@ 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 Application Monitoring Process + ``b`` Switch between bit/s or Byte/s for network I/O diff --git a/glances/amps/glances_amp.py b/glances/amps/glances_amp.py index f3395d42..075b1d80 100644 --- a/glances/amps/glances_amp.py +++ b/glances/amps/glances_amp.py @@ -21,6 +21,15 @@ I am your father... ...for all Glances Application Monitoring Processes (AMP). + +AMP (Application Monitoring Process) +A Glances AMP is a Python script called (every *refresh* seconds) if: +- the AMP is *enabled* in the Glances configuration file +- a process is running (match the *regex* define in the configuration file) +The script should define a Amp (GlancesAmp) class with, at least, an update method. +The update method should call the set_result method to set the AMP return string. +The return string is a string with one or more line (\n between lines). +If the *one_line* var is true then the AMP will be displayed in one line. """ from glances.compat import u diff --git a/glances/amps/glances_nginx.py b/glances/amps/glances_nginx.py index b43da089..c9cdcdc0 100644 --- a/glances/amps/glances_nginx.py +++ b/glances/amps/glances_nginx.py @@ -17,24 +17,32 @@ # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . -""" -AMP (Application Monitoring Process) -A Glances AMP is a Python script called (every *refresh* seconds) if: -- the AMP is *enabled* in the Glances configuration file -- a process is running (match the *regex* define in the configuration file) -The script should define a Amp (GlancesAmp) class with, at least, an update method. -The update method should call the set_result method to set the AMP return string. -The return string is a string with one or more line (\n between lines). -If the *one_line* var is true then the AMP will be displayed in one line. -""" - """ Nginx AMP ========= -Monitor the Nginx process using the status page +Monitor the Nginx process using the status page. -Configuration file example: +How to read the stats +--------------------- + +Active connections – Number of all open connections. This doesn’t mean number of users. +A single user, for a single pageview can open many concurrent connections to your server. +Server accepts handled requests – This shows three values. + First is total accepted connections. + Second is total handled connections. Usually first 2 values are same. + Third value is number of and handles requests. This is usually greater than second value. + Dividing third-value by second-one will give you number of requests per connection handled + by Nginx. In above example, 10993/7368, 1.49 requests per connections. +Reading – nginx reads request header +Writing – nginx reads request body, processes request, or writes response to a client +Waiting – keep-alive connections, actually it is active – (reading + writing). +This value depends on keepalive-timeout. Do not confuse non-zero waiting value for poor +performance. It can be ignored. +Source (https://easyengine.io/tutorials/nginx/status-page/) + +Configuration file example +-------------------------- [nginx] # Nginx status page should be enable (https://easyengine.io/tutorials/nginx/status-page/) diff --git a/glances/main.py b/glances/main.py index 9be00fcb..4f2baece 100644 --- a/glances/main.py +++ b/glances/main.py @@ -138,6 +138,10 @@ Start the client browser (browser mode):\n\ help='disable network, disk I/O, FS and sensors modules') parser.add_argument('--disable-process', action='store_true', default=False, dest='disable_process', help='disable process module') + parser.add_argument('--disable-monitoring', action='store_true', default=False, + dest='disable_monitor', help='disable monitoring list module') + parser.add_argument('--disable-amp', action='store_true', default=False, + dest='disable_amp', help='disable applications monitoring process (AMP) module') parser.add_argument('--disable-log', action='store_true', default=False, dest='disable_log', help='disable log module') parser.add_argument('--disable-bold', action='store_true', default=False, diff --git a/glances/outputs/glances_curses.py b/glances/outputs/glances_curses.py index 1a67c677..77c94511 100644 --- a/glances/outputs/glances_curses.py +++ b/glances/outputs/glances_curses.py @@ -328,6 +328,9 @@ class _GlancesCurses(object): # 'a' > Sort processes automatically and reset to 'cpu_percent' glances_processes.auto_sort = True glances_processes.sort_key = 'cpu_percent' + elif self.pressedkey == ord('A'): + # 'A' > enable/disable AMP module + self.args.disable_amp = not self.args.disable_amp elif self.pressedkey == ord('b'): # 'b' > Switch between bit/s and Byte/s for network IO self.args.byte = not self.args.byte diff --git a/glances/plugins/glances_amps.py b/glances/plugins/glances_amps.py index 5a47b84d..b2422fd5 100644 --- a/glances/plugins/glances_amps.py +++ b/glances/plugins/glances_amps.py @@ -73,7 +73,7 @@ class Plugin(GlancesPlugin): # Only process if stats exist and display plugin enable... ret = [] - if not self.stats or args.disable_process: + if not self.stats or args.disable_process or args.disable_amp: return ret # Build the string message diff --git a/glances/plugins/glances_monitor.py b/glances/plugins/glances_monitor.py index 98e9b698..763e1796 100644 --- a/glances/plugins/glances_monitor.py +++ b/glances/plugins/glances_monitor.py @@ -88,7 +88,7 @@ class Plugin(GlancesPlugin): ret = [] # Only process if stats exist and display plugin enable... - if not self.stats or args.disable_process: + if not self.stats or args.disable_process or args.disable_monitor: return ret # Build the string message