hw health #11

Supports: bionic xenial
Add to new model

Description

This addon installs hardware monitoring tools and configures Nagios checks
for the system hardware and storage monitoring.

Vendors supported:
Dell (MegaRAID)
Supermicro (LSI SAS)
Huawei (LSI SAS)
NVMe cards from Intel and Samsung (see README)

Tools supported:
freeipmi tools (ie. ipmimonitoring, ipmi-sel, etc.)
megacli
mdadm
nvme
sas2ircu
sas3ircu


Overview

This charm installs various hardware system monitoring tools and configures
Nagios NRPE checks. It will only work for bare-metal installations on specific
hardware.

Currently supported hardware is:

  • Dell: LSI Logic MegaRAID SAS-3 3108 Invader
  • Supermicro: LSI SAS3008 RAID card with sas3ircu (Broadcoam's SAS3IRCU_P16)
  • Huawei: LSI SAS2308 RAID card with sas2ircu (Huawei FusionServer Tools
    InfoCollect)
  • SSD cards: Intel's PCIe Data Center SSD, Samsung's NVMe controllers for
    SM961/PM961 and 172Xa/172Xb.

Hardware-independent tools:

  • Linux software RAID (mdadm)
  • IPMI as implemented by freeipmi (enable_ipmi config option is enabled by
    default)

In the backlog, hp-health logic still needs to be backported to support
Hewlett-Packard equipment (HP Smart Array Controllers and MSA Controllers with
hpacucli, hpssacli, ssacli).

Furthermore, other hardware in the roadmap is:

  • Huawei's ES3000 V2 PCIe SSD Card with hio_info (Huawei ES3000 V2 Driver)
  • S.M.A.R.T. Monitoring tool (smartctl)

Usage

juju deploy ubuntu
juju deploy hw-health
juju deploy nrpe
juju add-relation ubuntu nrpe
juju add-relation ubuntu hw-health
juju add-relation hw-health nrpe

Charmstore version already ships a resource. However, a new resource can be
attached:

  • Option 1: juju deploy hw-health --resource tools=/tmp/zipfile.zip
  • Option 2: juju attach-resource hw-health tools=/tmp/zipfile.zip

In both cases format of zipfile.zip must be one of the following:

zip /tmp/zipfile.zip megacli sas2ircu sas3ircu
zip /tmp/zipfile.zip megacli
etc.

Known Limitations and Issues

Charm only install method is via Juju resources. There are plans to support
snaps but snapstore only supports strictly confined snaps. Hardware monitoring
tools need special permissions that are under development.

See https://forum.snapcraft.io/t/request-for-classic-confinement-sas2ircu/9023

"tools" resource needs to be attached in ZIP format, and hardware monitoring
tool(s) need to be on the first level of the archive tree.

Building the tools.zip resource

In order to build the tools.zip resource it is necessary to source the binaries
from the respective vendor support pages.

For example:
megacli/
sas3ircu/
sas2ircu

You will then have to extract, rename, and compress the binaries to obtain the
following structure:

$ zipinfo tools.zip
Archive:  tools.zip
Zip file size: 1204457 bytes, number of entries: 3
-rwxr-xr-x  3.0 unx  2720320 bx defN 19-Jan-16 11:31 megacli
-rwxrwxr-x  3.0 unx   559164 bx defN 19-Jan-16 11:31 sas2ircu
-rwxrwxr-x  3.0 unx   562560 bx defN 19-Jan-16 11:31 sas3ircu
3 files, 3842044 bytes uncompressed, 1204005 bytes compressed:  68.7%

Configuration

Manufacturer option needs to be left in auto mode.

Contact Information

Please contact the Nagios charmers via the "Submit a bug" link.

Upstream Project Name


Configuration

debug
(boolean) Enable debug logging.
enable_ipmi
(boolean) Enable the use of freeipmi tools to monitor hardware status.
True
extra_packages
(string) Space separated list of extra deb packages to install.
install_keys
(string) List of signing keys for install_sources package sources, per charmhelpers standard format (a yaml list of strings encoded as a string). The keys should be the full ASCII armoured GPG public keys. While GPG key ids are also supported and looked up on a keyserver, operators should be aware that this mechanism is insecure. null can be used if a standard package signing key is used that will already be installed on the machine, and for PPA sources where the package signing key is securely retrieved from Launchpad.
install_sources
(string) List of extra apt sources, per charm-helpers standard format (a yaml list of strings encoded as a string). Each source may be either a line that can be added directly to sources.list(5), or in the form ppa:<user>/<ppa-name> for adding Personal Package Archives, or a distribution component to enable.
ipmi_check_options
(string) Additional options to be passed to check_ipmi_sensor. For non-standard ipmi implementations you might for example need "--seloptions '--assume-system-event-records'"
manufacturer
(string) Choose the tools to get deployed (hp, dell, supermicro, huawei) or leave the charm to self discover the tools needed to run hardware health checks. The special value "test" is only useful during testing to bypass installation restrictions and override hardware detection. Only "auto" and "test" are currently implemented.
auto
nagios_context
(string) Used by the nrpe subordinate charms. A string that will be prepended to instance name to set the host name in nagios. So for instance the hostname would be something like: juju-myservice-0 If you're running multiple environments with the same services in them this allows you to differentiate between them.
juju
nagios_servicegroups
(string) A comma-separated list of nagios servicegroups. If left empty, the nagios_context will be used as the servicegroup
package_status
(string) The status of service-affecting packages will be set to this value in the dpkg database. Valid values are "install" and "hold".
install
snap_proxy
(string) DEPRECATED. Use snap-http-proxy and snap-https-proxy model configuration settings. HTTP/HTTPS web proxy for Snappy to use when accessing the snap store.
snap_proxy_url
(string) DEPRECATED. Use snap-store-proxy model configuration setting. The address of a Snap Store Proxy to use for snaps e.g. http://snap-proxy.example.com
snapd_refresh
(string) How often snapd handles updates for installed snaps. The default (an empty string) is 4x per day. Set to "max" to check once per month based on the charm deployment date. You may also set a custom string as described in the 'refresh.timer' section here: https://forum.snapcraft.io/t/system-options/87
timeout
(int) Amount of time allowed for scripts to run before exiting.
30