System check severities out of whack
The severities for system checks are defined in PSR-3, and the first system checks attempted to match them pretty closely.
Level | Description (per PSR-3) | Examples (per PSR-3) | What happens in CiviCRM |
---|---|---|---|
emergency | System is unusable. | You'll never see it because the system won't be functioning. | |
alert | Action must be taken immediately. | Entire website down, database unavailable, etc. This should trigger the SMS alerts and wake you up. | Red pop-up when an admin logs in; item has a red header. |
critical | Critical conditions. | Application component unavailable, unexpected exception. | Red pop-up when an admin logs in; item has a red header. |
error | Runtime errors that do not require immediate action but should typically be logged and monitored. | Red pop-up when an admin logs in; item has a red header. | |
warning | Exceptional occurrences that are not errors. | Use of deprecated APIs, poor use of an API, undesirable things that are not necessarily wrong. | Orange pop-up when an admin logs in; item has an orange header. |
notice | Normal but significant events. | Item has a blue header. | |
info | Interesting events. | User logs in, SQL logs. | Item has a green header. |
debug | Detailed debug information. | Never displayed. |
However, over the years a few things have happened:
- Some system checks have severities that don't quite match the specifications here, especially skewing too high.
- System checks are used to nudge people to update their hosting environment for the future.
- The system checks have become dominated by things that users don't quite understand.
- Partners and others supporting lots of organizations have become frustrated that system checks scare or confuse users.
I see there being four main ways to address this:
- Narrowing who sees the system check messages to only those who are in a position to act on them (through permissions or otherwise).
- Giving more warning (through upgrade messages and a longer runway of escalating severity) for things that are not currently critical but will become so.
- Improving the presentation of system check messages and how to snooze or hush them.
- Doing a better job of giving a system check the right severity.
There's been discussion on the first and second items elsewhere. This ticket is focused on the fourth. Fundamentally, some things will be at the level of "drop everything and fix it", but we don't want to cry wolf.
Here are the existing system checks and their severities. My hope is that by having them all in the same place it will be easier to decide which are more severe than others. The ID column is just here to ease discussion.
ID | Class | Title | Message | Severity |
---|---|---|---|---|
1 | CRM_Utils_Check_Component_AddressParsing | Street address parsing | Street address parsing is enabled but not supported by your locale | warning |
2 | CRM_Utils_Check_Component_Case | CiviCase | Case type "%1" has duplicate XML files ("%2" and "%3") | warning |
3 | CRM_Utils_Check_Component_Case | CiviCase | Case type "%1" corresponds to XML file ("%2") The XML file should be named "%3". | warning |
4 | CRM_Utils_Check_Component_Case | Timestamps for Activities and Cases | The tables "civicrm_activity" and "civicrm_case" were updated to support two new fields, "created_date" and "modified_date".... | notice |
5 | CRM_Utils_Check_Component_Case | Relationship Type Internal Name Duplicates | Relationship type %1 has the same internal machine name as another type.... | error |
6 | CRM_Utils_Check_Component_Case | Relationship Type Display Label Duplicates | Relationship type %1 has the same display label as another type. | error |
7 | CRM_Utils_Check_Component_Case | Relationship Type Cross-Duplication | Relationship type %1 has an internal machine name that is the same as the display label as another type.... | warning |
8 | CRM_Utils_Check_Component_Case | Relationship Type Ambiguity | Relationship type %1 appears to be unidirectional, but has the same internal machine name for both sides.... | warning |
9 | CRM_Utils_Check_Component_Case | Relationship Type Ambiguity | Relationship type %1 appears to be unidirectional internally, but has the same display label for both sides.... | warning |
10 | CRM_Utils_Check_Component_Case | Missing Roles | The following roles listed in your case type definitions do not match any relationship type defined in the system: %1.... | error |
11 | CRM_Utils_Check_Component_Case | Missing Case Type Definition | Unable to locate xml file for Case Type "%1". | error |
12 | CRM_Utils_Check_Component_Case | Missing Case Roles | CaseRoles seems to be missing in the xml file for Case Type "%1". | error |
13 | CRM_Utils_Check_Component_Case | Invalid Case Role | CaseRole "%1" in the xml file for Case Type "%2" doesn't seem to match any existing relationship type. | error |
14 | CRM_Utils_Check_Component_Case | Case Role using display label instead of internal machine name | Please edit the XML file for case type "%2" so that the case role label "%1" is changed to its corresponding name "%3".... | warning |
15 | CRM_Utils_Check_Component_Env | PHP Up-to-Date | This system uses PHP version %1 which meets or exceeds the recommendation of %2. | info |
16 | CRM_Utils_Check_Component_Env | PHP Out-of-Date | This system uses PHP version %1. This meets the minimum recommendations and you do not need to upgrade immediately, but the preferred version is %2. | notice |
17 | CRM_Utils_Check_Component_Env | PHP Out-of-Date | This system uses PHP version %1. This meets the minimum requirements for CiviCRM to function but is not recommended.... | warning |
18 | CRM_Utils_Check_Component_Env | PHP Out-of-Date | This system uses PHP version %1. To ensure the continued operation of CiviCRM, upgrade your server now.... | error |
19 | CRM_Utils_Check_Component_Env | Forward Compatibility: Enable "mysqli" | Future versions of CiviCRM may require the PHP extension "mysqli". To ensure that your system will be compatible, please install it in advance.... | warning |
20 | CRM_Utils_Check_Component_Env | Timestamp Mismatch | Timestamps reported by MySQL (eg "%2") and PHP (eg "%3" ) are mismatched. | error |
21 | CRM_Utils_Check_Component_Env | Debug Mode Enabled | Warning: Debug is enabled in system settings. This should not be enabled on production servers. | warning |
22 | CRM_Utils_Check_Component_Env | Outbound Email Disabled | Warning: Outbound email is disabled in system settings.... | warning |
23 | CRM_Utils_Check_Component_Env | Complete Setup | Please enter your organization's name, primary address and default FROM Email Address (for system-generated emails). | warning |
24 | CRM_Utils_Check_Component_Env | Configure Default Mailbox | Please configure a default mailbox for CiviMail. | warning |
25 | CRM_Utils_Check_Component_Env | Cron Running OK | Last cron run at %1. | info |
26 | CRM_Utils_Check_Component_Env | Cron Not Running | Last cron run at %1. / No cron runs have been recorded. | warning / error |
27 | CRM_Utils_Check_Component_Env | Resource URLs: Make them portable | Resource URLs may use absolute paths, relative paths, or variables. Absolute paths are more difficult to maintain.... | notice |
28 | CRM_Utils_Check_Component_Env | Directory Paths: Make them portable | Directories may use absolute paths, relative paths, or variables. Absolute paths are more difficult to maintain.... | notice |
29 | CRM_Utils_Check_Component_Env | Directory not writable | The %1 is not writable. Please check your file permissions. | error |
30 | CRM_Utils_Check_Component_Env | Directory not writable | Directory %1 is not writable. Please change your file permissions. (this is actually an error checking the version) | error |
31 | CRM_Utils_Check_Component_Env | Update Check Disabled | The check for new versions of CiviCRM has been disabled.... | notice |
32 | CRM_Utils_Check_Component_Env | Version update messages | As provided by version check | info / notice / warning / critical |
33 | CRM_Utils_Check_Component_Env | Directory not writable | Your extensions directory is not set.... | notice |
34 | CRM_Utils_Check_Component_Env | Extensions directory incorrect | Your extensions directory path points to %1, which is not a directory.... | error |
35 | CRM_Utils_Check_Component_Env | Read-Only Extensions | Your extensions directory (%1) is read-only.... | notice |
36 | CRM_Utils_Check_Component_Env | Extensions url missing | The extensions URL is not properly set.... | error |
37 | CRM_Utils_Check_Component_Env | Extensions check disabled | Not checking remote URL for extensions since ext_repo_url is set to false. | notice |
38 | CRM_Utils_Check_Component_Env | Extension download error | Message thrown by extension check | error |
39 | CRM_Utils_Check_Component_Env | No Extensions Available for this Version | There are currently no extensions on the CiviCRM public extension directory which are compatible with version %1.... | notice |
40 | CRM_Utils_Check_Component_Env | Extensions | No extensions installed. | info |
41 | CRM_Utils_Check_Component_Env | Extension Error | Failed to read extension (%1).... / %1 extension (%2) is installed but missing files. | error |
42 | CRM_Utils_Check_Component_Env | Extension Update Available | %1 (%2) version %3 is installed. Upgrade to version %5. | warning |
43 | CRM_Utils_Check_Component_Env | Extensions | All extensions are up-to-date | info |
44 | CRM_Utils_Check_Component_Env | Extension Upgrades Pending | Extension upgrades should be run as soon as possible. | error |
45 | CRM_Utils_Check_Component_Env | Database Version Missing | Version information found to be missing in database.... | error |
46 | CRM_Utils_Check_Component_Env | Database Version Invalid | Database is marked with invalid version format.... | error |
47 | CRM_Utils_Check_Component_Env | Database Partially Upgraded | Database check failed - the database looks to have been partially upgraded. | alert |
48 | CRM_Utils_Check_Component_Env | Database Upgrade Required | New codebase version detected.... | alert |
49 | CRM_Utils_Check_Component_Env | Database In Unexpected Version | Your database is marked with an unexpected version number.... | error |
50 | CRM_Utils_Check_Component_Env | MyISAM Database Engine | Your database is configured to use the MyISAM database engine.... | error |
51 | CRM_Utils_Check_Component_Env | No Default value for Auto Responder. | Reply Auto Responder is not set to any default value in Headers, Footers, and Automated Messages.... | warning |
52 | CRM_Utils_Check_Component_Env | Missing mbstring Extension | The PHP Multibyte String extension is needed for CiviCRM to correctly handle user input among other functionality.... | warning |
53 | CRM_Utils_Check_Component_Env | Non-Production Environment | The environment of this CiviCRM instance is set to '%1'.... | alert |
54 | CRM_Utils_Check_Component_Env | Incorrect Resource URL | The Resource URL is not set correctly.... | error |
55 | CRM_Utils_Check_Component_Env | MySQL Emoji Support (utf8mb4) | Future versions of CiviCRM may require MySQL to support utf8mb4 encoding.... | warning |
56 | CRM_Utils_Check_Component_Env | PHP MySQL Driver (mysqlnd) | It is recommended, though not yet required, to upgrade your PHP MySQL driver (mysqlnd) to >= 5.0.9 for utf8mb4 support. | warning |
57 | CRM_Utils_Check_Component_Env | PHP MySQL Driver (libmysqlclient) | It is recommended, though not yet required, to upgrade your PHP MySQL driver (libmysqlclient) to >= 5.5.3 for utf8mb4 support. | warning |
58 | CRM_Utils_Check_Component_Env | MySQL Out-of-Date | This system uses MySQL/MariaDB v%1. To ensure the continued operation of CiviCRM, upgrade MySQL now.... | error |
59 | CRM_Utils_Check_Component_Env | MySQL Out-of-Date | This system uses MySQL/MariaDB v%1. To prepare for CiviCRM v%5, please upgrade MySQL.... | warning |
60 | CRM_Utils_Check_Component_Env | MySQL Out-of-Date | This system uses MySQL/MariaDB v%1. You can continue to use this version of MySQL.... | notice |
61 | CRM_Utils_Check_Component_FinancialTypeAcls | Extension Missing | CiviCRM will in the future require the extension %1 for CiviCRM Reports to work correctly with the Financial Type ACLs. | warning |
62 | CRM_Utils_Check_Component_OptionGroups | Option Values with problematic Values | The Following Option Values contain value fields that do not match the Data Type of the Option Group.... | notice |
63 | CRM_Utils_Check_Component_PriceFields | Invalid Price Fields | the following Price Set Fields use disabled or invalid financial types and need to be fixed if they are to still be used.... | warning |
64 | CRM_Utils_Check_Component_Schema | Performance warning: Missing indices | The following tables have missing indices.... | warning |
65 | CRM_Utils_Check_Component_Schema | Missing Log Tables | You don't have logging enabled on some tables.... | warning |
66 | CRM_Utils_Check_Component_Schema | Smart Group check did not run | The smart group check was unable to run. | info |
67 | CRM_Utils_Check_Component_Schema | Disabled/Deleted fields on Smart Groups | The following smart groups include custom fields which are disabled/deleted from the database.... | warning |
68 | CRM_Utils_Check_Component_Schema | Deprecated monetary value display format configuration | The Monetary Value Display format is a deprecated setting, and this site has a non-standard format. | warning |
69 | CRM_Utils_Check_Component_Security | Security Warning | The CiviCRM debug log should not be downloadable. | warning |
70 | CRM_Utils_Check_Component_Security | Private Files Readable | Files in the data directory (%2) should not be downloadable.... | warning |
71 | CRM_Utils_Check_Component_Security | Browseable Directories | Directory %2 should not be browseable via the web.... | error |
72 | CRM_Utils_Check_Component_Security | Unsafe Files | File '%1' presents a security risk and should be deleted. | critical |
73 | CRM_Utils_Check_Component_Security | Remote Profiles Enabled | Warning: External profile support (aka "HTML Snippet" support) is enabled in system settings. | warning |
74 | CRM_Utils_Check_Component_Security | Security Warning | The system administrator has disabled security settings (%1). Connections to remote applications are insecure. | warning |
75 | CRM_Utils_Check_Component_Source | Old files | The local system includes old files which should not exist.... | warning |
76 | CRM_Utils_Check_Component_Timestamps | Timestamps and Timezones | This MySQL database stores certain fields with data-type "DATETIME". To improve timezone support, you may want to change these from "DATETIME" to "TIMESTAMP".... | notice |
See also discussion on PR #17698.