GreenArrow Status Command
- Table of Contents
- Help
- Status Reports
- Validate Configuration
- Dynamic Defaults
GreenArrow includes a command-line tool greenarrow_status
for examining the status of the running software.
Help
Run greenarrow_status
without any argument to see a summary of its options:
# greenarrow_status
Usage: greenarrow_status [options]
-h, --help Prints this help
-c, --[no-]color Colorize the output (default: off)
The following reports are available:
greenarrow_status all_status Print all available status reports
greenarrow_status mta_status Print a simple report on the status of the MTA
greenarrow_status mta_status_extra Print a simple report on the status of the MTA; include extra info
greenarrow_status mta_status_complex Print a complex report on the status of the MTA
greenarrow_status passenger_status Print a report on the status of Passenger (web application server)
greenarrow_status apache_status Print a report on the status of Apache (web server)
greenarrow_status background_workers_status Print a report on the status of the background workers
greenarrow_status postgres_status Print a report on the status of Postgres (database server)
greenarrow_status dynamic_defaults Print the calculated dynamic defaults
greenarrow_status validate_configuration Validate the configuration file
Status Reports
Overview
The following command generates an overview of GreenArrow’s status.
# greenarrow_status all_status
MTA (Complex):
==== Status on all queues
+----------+------------------+---------------+---------------+---------------------------------------------+
| QUEUE | MESSAGE SLOTS | LOCAL DSLOTS | REMOTE DSLOTS | STATE OF USED REMOTE DSLOTS |
| | used / total | used / total | used / total | connected diskwait diskwait throttlewait |
| | / | / | / | throttle defer plus err |
+----------+------------------+---------------+---------------+---------------------------------------------+
| ram | 0 / 100 | 1 / 10 | 0 / 100 | 0 0 0 0 |
| bounce | 0 / 60 | 0 / 10 | 1 / 50 | 0 0 0 1 |
| disk | 0 | 0 / 0 | 0 / 0 | 0 n/a n/a 0 |
+----------+------------------+---------------+---------------+---------------------------------------------+
Passenger:
workers (currently busy) = 0 (busy) / 2 (running)
workers (max busy in last 15 seconds) = 0 (busy) / 2 (running)
waiting requests = 0 (waiting) / 384 (max)
Background Workers:
num_workers_campaigns = 0 (busy) / 0 (running)
num_workers_campaigns_and_misc = 5 (busy) / 0 (running)
num_workers_general = 1 (busy) / 0 (running)
num_workers_imports = 1 (busy) / 0 (running)
Background Queues:
campaigns = 0 (jobs in queue)
general = 4 (jobs in queue)
imports = 0 (jobs in queue)
transactional = 0 (jobs in queue)
number of campaigns currently requested to be running = 0
number of imports/exports currently requested to be running = 0
Apache Server Status:
apache servers = 13 (spawned) / 512 (max)
apache clients = 8 (busy) / 13 (spawned)
Postgres Server Status:
postgres connections = 13 (connected) / 200 (max)
postgres activity = 1 (busy) / 13 (connected)
The details of each section of output are documented in the sections that follow.
MTA Status
# greenarrow_status mta_status
MTA (Simple):
==== Ramdisk queue for first delivery attempts:
Queue is 0% full ( 0/ 100).
Slots for remote SMTP deliveries: (first delivery attempts)
Pct Num Description Name of State
---- ---- ----------------------------------------- -------------------
100% 100 Total
100% 100 Free (free)
0% 0 SMTP deliveries underway (connected)
0% 0 Waiting for throttle (&measurement error) (throttlewait)
0% 0 Waiting to write a message to disk: (diskwait_total)
0% 0 Due to exceeding throttle (diskwait_throttle)
0% 0 Due to deferral (diskwait_defer)
==== Disk queue for long-term storage of deferred messages:
Total messages queued for retry later: 0
Slots for remote SMTP deliveries: (non-first delivery attempts)
Pct Num Description Name of State
---- ---- ----------------------------------------- -------------------
100% 200 Total
0% 0 Free (free)
0% 0 SMTP deliveries underway (connected)
0% 0 Waiting for throttle (&measurement error) (throttlewait)
Unpreprocessed message backlog: 0% used ( 0/ 100)
Simplemh pre-processing queue: 0% used ( 0/ 2000)
Bounce processor queue: 0% used ( 0/ 3000) soft limit
0% used ( 0/ 5000) hard limit
MTA Status (Complex)
This report contains most of the same information as mta_status
, but in a more condensed table view.
# greenarrow_status mta_status_complex
MTA (Complex):
==== Status on all queues
+----------+------------------+---------------+---------------+---------------------------------------------+
| QUEUE | MESSAGE SLOTS | LOCAL DSLOTS | REMOTE DSLOTS | STATE OF USED REMOTE DSLOTS |
| | used / total | used / total | used / total | connected diskwait diskwait throttlewait |
| | / | / | / | throttle defer plus err |
+----------+------------------+---------------+---------------+---------------------------------------------+
| ram | 0 / 100 | 0 / 10 | 0 / 100 | 0 0 0 0 |
| bounce | 0 / 60 | 0 / 10 | 0 / 50 | 0 0 0 0 |
| disk | 0 | 0 / 10 | 0 / 200 | 0 n/a n/a 0 |
+----------+------------------+---------------+---------------+---------------------------------------------+
Passenger Status
Passenger is the application server that powers the web interface to GreenArrow.
# greenarrow_status passenger_status
Passenger:
workers (currently busy) = 0 (busy) / 2 (running)
workers (max busy in last 15 seconds) = 0 (busy) / 2 (running)
waiting requests = 0 (waiting) / 256 (max)
workers (currently busy) |
These are Passenger workers that are currently in the process of serving a request. |
workers (max busy in last 15 seconds) |
These are Passenger workers that have processed a request in the last 15 seconds. |
waiting requests |
The number of requests that are waiting for a Passenger worker. |
Background Workers Status
The stats in this section relate to GreenArrow Studio’s workers.
# greenarrow_status background_workers_status
Background Workers:
num_workers_campaigns = 0 (busy) / 0 (running)
num_workers_campaigns_and_misc = 0 (busy) / 0 (running)
num_workers_general = 0 (busy) / 0 (running)
num_workers_imports = 0 (busy) / 0 (running)
Background Queues:
campaigns = 0 (jobs in queue)
general = 240461 (jobs in queue)
imports = 0 (jobs in queue)
transactional = 0 (jobs in queue)
number of campaigns currently requested to be running = 0
number of imports/exports currently requested to be running = 0
num_workers_campaigns |
The number of background workers that are processing only campaigns. |
num_workers_campaigns_and_misc |
The number of background workers that are processing campaigns, imports/exports, and miscellaneous background jobs. |
num_workers_general |
The number of background workers that are processing miscellaneous background jobs. |
num_workers_imports |
The number of background workers that are processing imports and exports. |
campaigns |
The campaigns queue is used for campaign sends. This queue, if the server is maxed out on the number of sends it can deliver simultaneously, may continue to grow until current campaigns have finished. A single campaign may be represented in this queue multiple times; just because the queue is growing, this does not mean there are more campaigns to deliver. |
general |
The general queue is used for most of GreenArrow Studio’s background jobs. This includes rendering preview images of content, calculating the estimated number of recipients, click and open tracking, and other background maintenance required for GreenArrow Studio. If this queue grows unbounded, this is a signal that the system may be underpowered for its load. In some cases, overriding the number of workers may resolve this issue - but in others, more CPU and memory resources may be required. |
imports |
The imports queue runs import/export jobs. This queue may get large if many import/export jobs are running simultaneously, but that depth will only affect when those jobs complete. A single import/export job may be represented in this queue multiple times; just because the queue is growing, this does not mean there are more imports/exports to complete. |
transactional |
The transactional queue runs transactional email such as autoresponders and campaign preview emails. |
number of campaigns currently requested to be running |
The number of campaigns that will be sent simultanously if there are enough workers to process them at the same time. |
number of imports/exports currently requested to be running |
The actual number of imports/exports that should be running. Imports/exports are interleaved; adding additional workers can increase import/export performance, but only if there is additional idle CPU resources available. |
Apache Status
Apache is the web server which hosts GreenArrow’s web interface and click/open/unsubscribe link tracking.
# greenarrow_status apache_status
Apache Server Status:
apache servers = 8 (spawned) / 512 (max)
apache clients = 2 (busy) / 8 (spawned)
apache servers |
The number of Apache servers that were spawned and the maximum number that are allowed. |
apache clients |
The number of incoming web requests that are being processed and the number of available spawned servers to process those requests. |
PostgreSQL Status
PostgreSQL is the database server that contains much of GreenArrow’s data.
# greenarrow_status postgres_status
Postgres Server Status:
postgres connections = 7 (connected) / 200 (max)
postgres activity = 1 (busy) / 7 (connected)
postgres connections |
The number of active connections to the PostgreSQL server and the maximum possible number of connections. |
postgres activity |
The number of active connections that are busy processing a query. |
Validate Configuration
Validate the /var/hvmail/control/greenarrow.conf configuration file.
# greenarrow_status validate_configuration
Validating Configuration:
No errors found. Configuration file is acceptable.
Dynamic Defaults
This command displays the settings that GreenArrow uses by default, based upon the available CPU and RAM resources.
# greenarrow_status dynamic_defaults
Dynamic Defaults:
+----------------------------------------------------------+---------------+-------------------+----------------+----------------+------------------+---------------------+
| Directive | Default Value | Memory Constraint | CPU Constraint | Constrained By | Constraint Delta | Override Configured |
+----------------------------------------------------------+---------------+-------------------+----------------+----------------+------------------+---------------------+
| general.studio_message_generation_processes_per_campaign | 1 | 1 | 2 | memory | 1 | |
| general.studio_workers_shared | 5 | 5 | 5 | balanced | 0 | |
| general.studio_workers_campaigns | 0 | 0 | 5 | memory | 5 | 12 |
| general.studio_workers_general | 0 | 0 | 1 | memory | 1 | |
| general.studio_workers_imports | 0 | 0 | 1 | memory | 1 | |
| general.studio_workers_transactional | 1 | 1 | 1 | balanced | 0 | |
| general.passenger_max_requests_in_queue | 256 | 256 | 384 | memory | 128 | |
| general.passenger_min_application_instances | 2 | 2 | 2 | balanced | 0 | |
| general.passenger_max_application_instances | 4 | 4 | 4 | balanced | 0 | |
| general.apache_max_clients | 512 | 512 | 512 | balanced | 0 | 1500 |
+----------------------------------------------------------+---------------+-------------------+----------------+----------------+------------------+---------------------+