2. Usage

This section describes how to use the exporter beyond the quick introduction in Quickstart.

2.1. Running on a system

If you want to run the exporter on some system (e.g. on your workstation for trying it out), it is recommended to use a virtual Python environment.

With the virtual Python environment active, follow the steps in Quickstart to install, establish the required files, and to run the exporter.

2.2. Running in a Docker container

If you want to run the exporter in a Docker container you can create the container as follows, using the Dockerfile provided in the Git repository.

Note that the provided Dockerfile can also be used as a starting point if you want to embed the exporter in your own Docker/OCI image.

  • Clone the Git repository of the exporter and switch to the clone’s root directory:

    $ git clone https://github.com/zhmcclient/zhmc-prometheus-exporter
    $ cd zhmc-prometheus-exporter
    
  • Build a local Docker image as follows:

    $ make docker
    

    This builds a container image named ‘zhmcexporter:latest’ in your local Docker environment.

    The image contains the standard metric definition file in its default location, so the -m option of the exporter does not need to be specified when running the image.

    The HMC credentials file is not included in the image, and needs to be provided when running the image.

  • Run the local Docker image as follows:

    $ docker run -it --rm -v $(pwd)/myconfig:/root/myconfig -p 9291:9291 zhmcexporter -c /root/myconfig/hmccreds.yaml -v
    

    In this command, the HMC credentials file is provided on the local system as ./myconfig/hmccreds.yaml. The -v option of ‘docker run’ mounts the ./myconfig directory to /root/myconfig in the container’s file system. The -c option of the exporter references the HMC credentials file as it appears in the container’s file system.

2.3. zhmc_prometheus_exporter command

The zhmc_prometheus_exporter command supports the following arguments:

usage: zhmc_prometheus_exporter [-h] [-c CREDS_FILE] [-m METRICS_FILE] [-p PORT] [--log DEST]
                                [--log-comp COMP[=LEVEL]] [--verbose] [--help-creds]
                                [--help-metrics]

IBM Z HMC Exporter - a Prometheus exporter for metrics from the IBM Z HMC

optional arguments:

  -h, --help            show this help message and exit

  -c CREDS_FILE         path name of HMC credentials file. Use --help-creds for details. Default:
                        /etc/zhmc-prometheus-exporter/hmccreds.yaml

  -m METRICS_FILE       path name of metric definition file. Use --help-metrics for details.
                        Default: /etc/zhmc-prometheus-exporter/metrics.yaml

  -p PORT               port for exporting. Default: prometheus.port in HMC credentials file.

  --log DEST            enable logging and set a log destination (stderr, syslog, FILE). Default:
                        no logging

  --log-comp COMP[=LEVEL]
                        set a logging level (error, warning, info, debug, off, default: warning)
                        for a component (exporter, hmc, jms, all). May be specified multiple
                        times; options add to the default of: all=warning

  --syslog-facility TEXT
                        syslog facility (user, local0, local1, local2, local3, local4, local5,
                        local6, local7) when logging to the system log. Default: user

  --verbose, -v         increase the verbosity level (max: 2)

  --help-creds          show help for HMC credentials file and exit

  --help-metrics        show help for metric definition file and exit

2.4. Setting up the HMC

Usage of this package requires that the HMC in question is prepared accordingly:

  • The Web Services API must be enabled on the HMC.

    You can do that in the HMC GUI by selecting “HMC Management” in the left pane, then opening the “Configure API Settings” icon on the pain pane, then selecting the “Web Services” tab on the page that comes up, and finally enabling the Web Services API on that page.

    The above is on a z16 HMC, it may be different on older HMCs.

    If you cannot find this icon, then your userid does not have permission for the respective task on the HMC. In that case, there should be some other HMC admin you can go to to get the Web Services API enabled.

2.5. Setting up firewalls or proxies

If you have to configure firewalls or proxies between the system where you run the zhmc_prometheus_exporter command and the HMC, the following ports need to be opened:

  • 6794 (TCP) - for the HMC API HTTP server

  • 61612 (TCP) - for the HMC API message broker via JMS over STOMP

For details, see sections “Connecting to the API HTTP server” and “Connecting to the API message broker” in the HMC API book.

2.6. HMC userid requirements

This section describes the requirements on the HMC userid that is used by the zhmc_prometheus_exporter command.

To return all metrics supported by the command, the HMC userid must have the following permissions:

  • The HMC userid must have the following flag enabled:

    • “Allow access to Web Services management interfaces” flag of the user in the HMC GUI, or “allow-management-interfaces” property of the user at the WS-API.

  • Object access permission to the objects for which metrics should be returned.

    If the userid does not have object access permission to a particular object, the exporter will behave as if the object did not exist, i.e. it will successfully return metrics for objects with access permission, and ignore any others.

    The exporter can return metrics for the following types of objects. To return metrics for all existing objects, the userid must have object access permission to all of the following objects:

    • CPCs

    • On CPCs in DPM mode: - Adapters - Partitions - NICs

    • On CPCs in classic mode: - LPARs

  • Task permission for the “Manage Secure Execution Keys” task.

    This is used by the exporter during the ‘Get CPC Properties’ operation, but it does not utilize the CPC properties returned that way (room for future optimization).

2.7. HMC certificate

By default, the HMC is configured with a self-signed certificate. That is the X.509 certificate presented by the HMC as the server certificate during SSL/TLS handshake at its Web Services API.

Starting with version 0.7, the ‘zhmc_prometheus_exporter’ command will reject self-signed certificates by default.

The HMC should be configured to use a CA-verifiable certificate. This can be done in the HMC task “Certificate Management”. See also the HMC Security book and Chapter 3 “Invoking API operations” in the HMC API book.

Starting with version 0.7, the ‘zhmc_prometheus_exporter’ command provides control knobs for the verification of the HMC certificate via the verify_cert attribute in the HMC credentials file, as follows:

  • Not specified or specified as true (default): Verify the HMC certificate using the CA certificates from the first of these locations:

  • Specified with a string value: An absolute path or a path relative to the directory of the HMC credentials file. Verify the HMC certificate using the CA certificates in the specified certificate file or directory.

  • Specified as false: Do not verify the HMC certificate. Not verifying the HMC certificate means that hostname mismatches, expired certificates, revoked certificates, or otherwise invalid certificates will not be detected. Since this mode makes the connection vulnerable to man-in-the-middle attacks, it is insecure and should not be used in production environments.

If a certificate file is specified (using any of the ways listed above), that file must be in PEM format and must contain all CA certificates that are supposed to be used. Usually they are in the order from leaf to root, but that is not a hard requirement. The single certificates are concatenated in the file.

If a certificate directory is specified (using any of the ways listed above), it must contain PEM files with all CA certificates that are supposed to be used, and copies of the PEM files or symbolic links to them in the hashed format created by the OpenSSL command c_rehash.

An X.509 certificate in PEM format is base64-encoded, begins with the line -----BEGIN CERTIFICATE-----, and ends with the line -----END CERTIFICATE-----. More information about the PEM format is for example on this www.ssl.com page or in this serverfault.com answer.

Note that setting the REQUESTS_CA_BUNDLE or CURL_CA_BUNDLE environment variables influences other programs that use these variables, too.

For more information, see the Security section in the documentation of the ‘zhmcclient’ package.

2.8. Communication with Prometheus

The exporter is an HTTP or HTTPS server that is regularly contacted by Prometheus for collecting metrics using HTTP GET.

The parameters for the communication with Prometheus are defined in the HMC credentials file in the prometheus section, as in the following example:

prometheus:  # optional
  port: 9291
  server_cert_file: server_cert.pem
  server_key_file: server_key.pem
  ca_cert_file: ca_certs.pem

If the prometheus section is not specified, the exporter starts its server with HTTP.

If the prometheus section is specified, the presence of the server_cert_file parameter will determine whether the server will use HTTP or HTTPS: If that parameter is specified, HTTPS will be used. If not specified, HTTP will be used.

If HTTPS is used, the server_key_file parameter is required.

If HTTPS is used, the presence of the ca_cert_file parameter determines whether mutual TLS (mTLS) is enabled: If specified, mTLS is enabled and the exporter will require Prometheus to present a client certificate, which is validated using the specified CA certificate chain. If not specified, mTLS is disabled and the exporter will not require Prometheus to present a client certificate and will ignore it if presented.

The meaning of the parameters is described in HMC credentials file.

2.9. Exported metric concepts

The exporter provides its metrics in the Prometheus text-based format.

All metrics are of the metric type gauge and follow the Prometheus metric naming. The names of the metrics are defined in the Metric definition file. The metric names could be changed by users, but unless there is a strong reason for doing that, it is not recommended. It is recommended to use the Sample metric definition file unchanged. The metrics mapping in the Sample metric definition file is referred to as the standard metric definition in this documentation.

In the standard metric definition, the metric names are structured as follows:

zhmc_{resource-type}_{metric}_{unit}

Where:

  • {resource-type} is a short lower case term for the type of resource the metric applies to, for example cpc or partition.

  • {metric} is a unique name of the metric within the resource type, for example processor.

  • {unit} is the (simple or complex) unit of measurement of the metric value. For example, a usage percentage will usually have a unit of usage_ratio, while a temperature would have a unit of celsius.

Each metric value applies to a particular instance of a resource. In a particular set of exported metrics, there are usually metrics for multiple resource instances. For example, the HMC can manage multiple CPCs, a CPC can have multiple partitions, and so on. In the exported metrics, the resource instance is identified using one or more Prometheus labels. Where possible, the labels identify the resource instances in a hierarchical way from the CPC on down to the resource to which the metric value applies. For example, a metric for a partition will have labels cpc and partition whose values are the names of CPC and partition, respectively.

Example for the representation of metric values that are the IFL processor usage percentages of two partitions in a single CPC:

# HELP zhmc_partition_ifl_processor_usage_ratio Usage ratio across all IFL processors of the partition
# TYPE zhmc_partition_ifl_processor_usage_ratio gauge
zhmc_partition_ifl_processor_usage_ratio{cpc='CPCA',partition='PART1'} 0.42
zhmc_partition_ifl_processor_usage_ratio{cpc='CPCA',partition='PART2'} 0.07

2.10. Available metrics

The exporter supports two types of metrics. These metrics are differently retrieved from the HMC, but they are exported to Prometheus in the same way:

  • HMC metric service based - These metrics are retrieved from the HMC using the “Get Metric Context” operation each time Prometheus retrieves metrics from the exporter.

  • HMC resource property based - These metrics are actually the values of properties of HMC resources, such as the number of processors assigned to a partition. The exporter maintains representations of the corresponding resources in memory. These representations are automatically and asynchronously updated. When Prometheus retrieves these metrics from the exporter, the exporter always has up-to-date resource representations and can immediately return them without having to turn around for getting them from the HMC.

    There are two mechanisms for retrieving resource properties asynchronously:

    • via HMC object notifications - This is used for properties for which object notifications are supported. As the set of properties with support for object notifications tends to get larger with each HMC generation, the metric definition file of the exporter specifies for which properties object notifications are not supported (for each environment).

    • via background property fetching - For properties for which object notifications are not supported, a background thread fetches them from the HMC. The background thread sleeps for some time between subsequent property fetches. The sleep time is initially 30 seconds, and gets automatically adjusted to the cycle time used by Prometheus to fetch the metrics from the exporter. The sleep time always stays between 30 and 3600 seconds. As a result, it takes at least one extra Prometheus fetch cycle until the changed value of such a property appears in the Prometheus data. More than one cycle is needed only if the Prometheus cycle is shorter than the fetch time plus 30 seconds. The timing can be observed in the log at log level info (i.e. --log-comp all=info).

    Resources that no longer exist on the HMC are automatically not exported anymore. Resources that were created on the HMC since the exporter was started are not detected.

The exporter code is agnostic to the actual set of metrics supported by the HMC. A new metric exposed by the HMC metric service or a new property added to one of the auto-updated resources can immediately be supported by just adding it to the Metric definition file.

The Sample metric definition file in the Git repository states in its header up to which HMC version or Z machine generation the metrics are defined.

The following table shows the mapping between exporter metric groups and exported Prometheus metrics in the standard metric definition. Note that ensemble and zBX related metrics are not covered in the standard metric definition (support for them has been removed in z15). For more details on the HMC metrics, see section “Metric Groups” in the HMC API book. For more details on the resource properties of CPC and Partition (DPM mode) and Logical Partition (classic mode), see the corresponding data models in the HMC API book.

Exporter Metric Group

Type

Mode

Prometheus Metrics

Prometheus Labels

cpc-usage-overview

M

C

zhmc_cpc_*

cpc

logical-partition-usage

M

C

zhmc_partition_*

cpc, partition

channel-usage

M

C

zhmc_channel_*

cpc, channel_css_chpid

crypto-usage

M

C

zhmc_crypto_adapter_*

cpc, adapter_pchid

flash-memory-usage

M

C

zhmc_flash_memory_adapter_*

cpc, adapter_pchid

roce-usage

M

C

zhmc_roce_adapter_*

cpc, adapter_pchid

dpm-system-usage-overview

M

D

zhmc_cpc_*

cpc

partition-usage

M

D

zhmc_partition_*

cpc, partition

adapter-usage

M

D

zhmc_adapter_*

cpc, adapter

network-physical-adapter-port

M

D

zhmc_port_*

cpc, adapter, port

partition-attached-network-interface

M

D

zhmc_nic_*

cpc, partition, nic

zcpc-environmentals-and-power

M

C+D

zhmc_cpc_*

cpc

environmental-power-status

M

C+D

zhmc_cpc_*

cpc

zcpc-processor-usage

M

C+D

zhmc_processor_*

cpc, processor, type

cpc-resource

R

C+D

zhmc_cpc_*

cpc

partition-resource

R

D

zhmc_partition_*

cpc, partition

logical-partition-resource

R

C

zhmc_partition_*

cpc, partition

storagegroup-resource

R

D

zhmc_storagegroup_*

cpc, storagegroup

storagevolume-resource

R

D

zhmc_storagevolume_*

cpc, storagegroup, storagevolume

Legend:

  • Type:: The type of the metric group: M=metric service, R=resource property

  • Mode: The operational mode of the CPC: C=Classic, D=DPM

As you can see, the zhmc_cpc_* and zhmc_partition_* metrics are used for both DPM mode and classic mode. The names of the metrics are equal if and only if they have the same meaning in both modes.

The following table shows the Prometheus metrics in the standard metric definition. This includes both metric service based metrics and resource property based metrics:

Prometheus Metric

Mode

Type

Description

zhmc_cpc_cp_processor_count

C+D

G

Number of active CP processors

zhmc_cpc_ifl_processor_count

C+D

G

Number of active IFL processors

zhmc_cpc_icf_processor_count

C+D

G

Number of active ICF processors

zhmc_cpc_iip_processor_count

C+D

G

Number of active zIIP processors

zhmc_cpc_aap_processor_count

C+D

G

Number of active zAAP processors

zhmc_cpc_cbp_processor_count

C+D

G

Number of active CBP processors; only for z14-z15

zhmc_cpc_sap_processor_count

C+D

G

Number of active SAP processors

zhmc_cpc_defective_processor_count

C+D

G

Number of defective processors of all processor types

zhmc_cpc_spare_processor_count

C+D

G

Number of spare processors of all processor types

zhmc_cpc_total_memory_mib

C+D

G

Total amount of installed memory, in MiB

zhmc_cpc_hsa_memory_mib

C+D

G

Memory reserved for the base hardware system area (HSA), in MiB

zhmc_cpc_partition_memory_mib

C+D

G

Memory for use by partitions, in MiB

zhmc_cpc_partition_central_memory_mib

C+D

G

Memory allocated as central storage across the active partitions, in MiB

zhmc_cpc_partition_expanded_memory_mib

C+D

G

Memory allocated as expanded storage across the active partitions, in MiB

zhmc_cpc_available_memory_mib

C+D

G

Memory not allocated to active partitions, in MiB

zhmc_cpc_vfm_increment_gib

C+D

G

Increment size of VFM, in GiB

zhmc_cpc_total_vfm_gib

C+D

G

Total amount of installed VFM, in GiB

zhmc_cpc_processor_usage_ratio

C+D

G

Usage ratio across all processors of the CPC

zhmc_cpc_shared_processor_usage_ratio

C+D

G

Usage ratio across all shared processors of the CPC

zhmc_cpc_dedicated_processor_usage_ratio

C

G

Usage ratio across all dedicated processors of the CPC

zhmc_cpc_cp_processor_usage_ratio

C+D

G

Usage ratio across all CP processors of the CPC

zhmc_cpc_cp_shared_processor_usage_ratio

C+D

G

Usage ratio across all shared CP processors of the CPC

zhmc_cpc_cp_dedicated_processor_usage_ratio

C

G

Usage ratio across all dedicated CP processors of the CPC

zhmc_cpc_ifl_processor_usage_ratio

C+D

G

Usage ratio across all IFL processors of the CPC

zhmc_cpc_ifl_shared_processor_usage_ratio

C+D

G

Usage ratio across all shared IFL processors of the CPC

zhmc_cpc_ifl_dedicated_processor_usage_ratio

C

G

Usage ratio across all dedicated IFL processors of the CPC

zhmc_cpc_aap_shared_processor_usage_ratio

C

G

Usage ratio across all shared zAAP processors of the CPC

zhmc_cpc_aap_dedicated_processor_usage_ratio

C

G

Usage ratio across all dedicated zAAP processors of the CPC

zhmc_cpc_cbp_processor_usage_ratio

C

G

Usage ratio across all CBP processors of the CPC; only for z14-z15

zhmc_cpc_cbp_shared_processor_usage_ratio

C

G

Usage ratio across all shared CBP processors of the CPC; only for z14-z15

zhmc_cpc_cbp_dedicated_processor_usage_ratio

C

G

Usage ratio across all dedicated CBP processors of the CPC; only for z14-z15

zhmc_cpc_icf_processor_usage_ratio

C

G

Usage ratio across all ICF processors of the CPC

zhmc_cpc_icf_shared_processor_usage_ratio

C

G

Usage ratio across all shared ICF processors of the CPC

zhmc_cpc_icf_dedicated_processor_usage_ratio

C

G

Usage ratio across all dedicated ICF processors of the CPC

zhmc_cpc_iip_processor_usage_ratio

C

G

Usage ratio across all zIIP processors of the CPC

zhmc_cpc_iip_shared_processor_usage_ratio

C

G

Usage ratio across all shared zIIP processors of the CPC

zhmc_cpc_iip_dedicated_processor_usage_ratio

C

G

Usage ratio across all dedicated zIIP processors of the CPC

zhmc_cpc_channel_usage_ratio

C

G

Usage ratio across all channels of the CPC

zhmc_cpc_accelerator_adapter_usage_ratio

D

G

Usage ratio across all accelerator adapters of the CPC

zhmc_cpc_crypto_adapter_usage_ratio

D

G

Usage ratio across all crypto adapters of the CPC

zhmc_cpc_network_adapter_usage_ratio

D

G

Usage ratio across all network adapters of the CPC

zhmc_cpc_storage_adapter_usage_ratio

D

G

Usage ratio across all storage adapters of the CPC

zhmc_cpc_power_watt

C+D

G

Power consumption of the CPC

zhmc_cpc_ambient_temperature_celsius

C+D

G

Ambient temperature of the CPC

zhmc_cpc_humidity_percent

C+D

G

Relative humidity

zhmc_cpc_dew_point_celsius

C+D

G

Dew point

zhmc_cpc_heat_load_total_btu_per_hour

C+D

G

Total heat load of the CPC

zhmc_cpc_heat_load_forced_air_btu_per_hour

C+D

G

Heat load of the CPC covered by forced-air

zhmc_cpc_heat_load_water_btu_per_hour

C+D

G

Heat load of the CPC covered by water

zhmc_cpc_exhaust_temperature_celsius

C+D

G

Exhaust temperature of the CPC

zhmc_cpc_total_partition_power_watt

C

G

Total power consumption of all partitions; only with SE feature environmental-metrics

zhmc_cpc_total_infrastructure_power_watt

C+D

G

Total power consumption of all infrastructure comp.; only with SE feature environmental-metrics

zhmc_cpc_total_unassigned_power_watt

C+D

G

Total power consumption of all unassigned comp.; only with SE feature environmental-metrics

zhmc_cpc_power_cord1_phase_a_watt

C+D

G

Power in Phase A of line cord 1 - 0 if not available

zhmc_cpc_power_cord1_phase_b_watt

C+D

G

Power in Phase B of line cord 1 - 0 if not available

zhmc_cpc_power_cord1_phase_c_watt

C+D

G

Power in Phase C of line cord 1 - 0 if not available

zhmc_cpc_power_cord2_phase_a_watt

C+D

G

Power in Phase A of line cord 2 - 0 if not available

zhmc_cpc_power_cord2_phase_b_watt

C+D

G

Power in Phase B of line cord 2 - 0 if not available

zhmc_cpc_power_cord2_phase_c_watt

C+D

G

Power in Phase C of line cord 2 - 0 if not available

zhmc_cpc_power_cord3_phase_a_watt

C+D

G

Power in Phase A of line cord 3 - 0 if not available

zhmc_cpc_power_cord3_phase_b_watt

C+D

G

Power in Phase B of line cord 3 - 0 if not available

zhmc_cpc_power_cord3_phase_c_watt

C+D

G

Power in Phase C of line cord 3 - 0 if not available

zhmc_cpc_power_cord4_phase_a_watt

C+D

G

Power in Phase A of line cord 4 - 0 if not available

zhmc_cpc_power_cord4_phase_b_watt

C+D

G

Power in Phase B of line cord 4 - 0 if not available

zhmc_cpc_power_cord4_phase_c_watt

C+D

G

Power in Phase C of line cord 4 - 0 if not available

zhmc_cpc_power_cord5_phase_a_watt

C+D

G

Power in Phase A of line cord 5 - 0 if not available

zhmc_cpc_power_cord5_phase_b_watt

C+D

G

Power in Phase B of line cord 5 - 0 if not available

zhmc_cpc_power_cord5_phase_c_watt

C+D

G

Power in Phase C of line cord 5 - 0 if not available

zhmc_cpc_power_cord6_phase_a_watt

C+D

G

Power in Phase A of line cord 6 - 0 if not available

zhmc_cpc_power_cord6_phase_b_watt

C+D

G

Power in Phase B of line cord 6 - 0 if not available

zhmc_cpc_power_cord6_phase_c_watt

C+D

G

Power in Phase C of line cord 6 - 0 if not available

zhmc_cpc_power_cord7_phase_a_watt

C+D

G

Power in Phase A of line cord 7 - 0 if not available

zhmc_cpc_power_cord7_phase_b_watt

C+D

G

Power in Phase B of line cord 7 - 0 if not available

zhmc_cpc_power_cord7_phase_c_watt

C+D

G

Power in Phase C of line cord 7 - 0 if not available

zhmc_cpc_power_cord8_phase_a_watt

C+D

G

Power in Phase A of line cord 8 - 0 if not available

zhmc_cpc_power_cord8_phase_b_watt

C+D

G

Power in Phase B of line cord 8 - 0 if not available

zhmc_cpc_power_cord8_phase_c_watt

C+D

G

Power in Phase C of line cord 8 - 0 if not available

zhmc_cpc_status_int

C+D

G

Status as integer

zhmc_cpc_has_unacceptable_status

C+D

G

Boolean indicating whether the CPC has an unacceptable status

zhmc_processor_usage_ratio

C+D

G

Usage ratio of the processor

zhmc_processor_smt_mode_percent

C+D

G

Percentage of time the processor was in in SMT mode

zhmc_processor_smt_thread0_usage_ratio

C+D

G

Usage ratio of thread 0 of the processor when in SMT mode

zhmc_processor_smt_thread1_usage_ratio

C+D

G

Usage ratio of thread 1 of the processor when in SMT mode

zhmc_partition_description

C+D

G

Description of the partition (in ‘value’ label)

zhmc_partition_processor_usage_ratio

C+D

G

Usage ratio across all processors of the partition

zhmc_partition_cp_processor_usage_ratio

C

G

Usage ratio across all CP processors of the partition

zhmc_partition_ifl_processor_usage_ratio

C

G

Usage ratio across all IFL processors of the partition

zhmc_partition_icf_processor_usage_ratio

C

G

Usage ratio across all ICF processors of the partition

zhmc_partition_cbp_processor_usage_ratio

C

G

Usage ratio across all CBP processors of the partition; only for z14-z15

zhmc_partition_iip_processor_usage_ratio

C

G

Usage ratio across all IIP processors of the partition

zhmc_partition_accelerator_adapter_usage_ratio

D

G

Usage ratio of all accelerator adapters of the partition

zhmc_partition_crypto_adapter_usage_ratio

D

G

Usage ratio of all crypto adapters of the partition

zhmc_partition_network_adapter_usage_ratio

D

G

Usage ratio of all network adapters of the partition

zhmc_partition_storage_adapter_usage_ratio

D

G

Usage ratio of all storage adapters of the partition

zhmc_partition_zvm_paging_rate_pages_per_second

C

G

z/VM paging rate in pages/sec

zhmc_partition_power_watt

C

G

Power consumption of the partition; only with SE feature environmental-metrics

zhmc_partition_processor_mode_int

C+D

G

Allocation mode for processors as an integer (0=shared, 1=dedicated); since HMC 2.15

zhmc_partition_threads_per_processor_ratio

D

G

Number of threads per processor used by OS

zhmc_partition_defined_capacity_msu_per_hour

C

G

Defined capacity expressed in terms of MSU per hour

zhmc_partition_workload_manager_is_enabled

C

G

Boolean indicating whether z/OS WLM is allowed to change processing weight related properties (0=false, 1=true)

zhmc_partition_cp_processor_count

C+D

G

Number of CP processors allocated to the active partition; since HMC 2.15

zhmc_partition_cp_processor_count_is_capped

C+D

G

Boolean indicating whether absolute capping is enabled for CP processors (0=false, 1=true)

zhmc_partition_cp_processor_count_cap

C+D

G

Maximum number of CP processors that can be used if absolute capping is enabled, else 0

zhmc_partition_cp_reserved_processor_count

C

G

Number of CP processors reserved for the active partition; since HMC 2.15

zhmc_partition_cp_initial_processing_weight

C+D

G

Initial CP processing weight for the active partition in shared mode

zhmc_partition_cp_minimum_processing_weight

C+D

G

Minimum CP processing weight for the active partition in shared mode

zhmc_partition_cp_maximum_processing_weight

C+D

G

Maximum CP processing weight for the active partition in shared mode

zhmc_partition_cp_current_processing_weight

C+D

G

Current CP processing weight for the active partition in shared mode

zhmc_partition_cp_processor_count_cap

D

G

Maximum number of CP processors to be used when absolute CP processor capping is enabled

zhmc_partition_cp_initial_processing_weight_is_capped

C+D

G

Boolean indicating whether the initial CP processing weight is capped (0=false, 1=true)

zhmc_partition_cp_current_processing_weight_is_capped

C

G

Boolean indicating whether the current CP processing weight is capped (0=false, 1=true)

zhmc_partition_ifl_processor_count

C+D

G

Number of IFL processors allocated to the active partition

zhmc_partition_ifl_processor_count_is_capped

C+D

G

Boolean indicating whether absolute capping is enabled for IFL processors (0=false, 1=true)

zhmc_partition_ifl_processor_count_cap

C+D

G

Maximum number of IFL processors that can be used if absolute capping is enabled, else 0

zhmc_partition_ifl_reserved_processor_count

C

G

Number of IFL processors reserved for the active partition

zhmc_partition_ifl_initial_processing_weight

C+D

G

Initial IFL processing weight for the active partition in shared mode

zhmc_partition_ifl_minimum_processing_weight

C+D

G

Minimum IFL processing weight for the active partition in shared mode

zhmc_partition_ifl_maximum_processing_weight

C+D

G

Maximum IFL processing weight for the active partition in shared mode

zhmc_partition_ifl_current_processing_weight

C+D

G

Current IFL processing weight for the active partition in shared mode

zhmc_partition_ifl_processor_count_cap

D

G

Maximum number of IFL processors to be used when absolute IFL processor capping is enabled

zhmc_partition_ifl_initial_processing_weight_is_capped

C+D

G

Boolean indicating whether the initial IFL processing weight is capped (0=false, 1=true)

zhmc_partition_ifl_current_processing_weight_is_capped

C

G

Boolean indicating whether the current IFL processing weight is capped (0=false, 1=true)

zhmc_partition_icf_processor_count

C

G

Number of ICF processors currently allocated to the active partition

zhmc_partition_icf_processor_count_is_capped

C

G

Boolean indicating whether absolute capping is enabled for ICF processors (0=false, 1=true)

zhmc_partition_icf_processor_count_cap

C

G

Maximum number of ICF processors that can be used if absolute capping is enabled, else 0

zhmc_partition_icf_reserved_processor_count

C

G

Number of ICF processors reserved for the active partition

zhmc_partition_icf_initial_processing_weight

C

G

Initial ICF processing weight for the active partition in shared mode

zhmc_partition_icf_minimum_processing_weight

C

G

Minimum ICF processing weight for the active partition in shared mode

zhmc_partition_icf_maximum_processing_weight

C

G

Maximum ICF processing weight for the active partition in shared mode

zhmc_partition_icf_current_processing_weight

C

G

Current ICF processing weight for the active partition in shared mode

zhmc_partition_icf_initial_processing_weight_is_capped

C

G

Boolean indicating whether the initial ICF processing weight is capped (0=false, 1=true)

zhmc_partition_icf_current_processing_weight_is_capped

C

G

Boolean indicating whether the current ICF processing weight is capped (0=false, 1=true)

zhmc_partition_iip_processor_count

C

G

Number of zIIP processors currently allocated to the active partition

zhmc_partition_iip_processor_count_is_capped

C

G

Boolean indicating whether absolute capping is enabled for zIIP processors (0=false, 1=true)

zhmc_partition_iip_processor_count_cap

C

G

Maximum number of zIIP processors that can be used if absolute capping is enabled, else 0

zhmc_partition_iip_reserved_processor_count

C

G

Number of zIIP processors reserved for the active partition

zhmc_partition_iip_initial_processing_weight

C

G

Initial zIIP processing weight for the active partition in shared mode

zhmc_partition_iip_minimum_processing_weight

C

G

Minimum zIIP processing weight for the active partition in shared mode

zhmc_partition_iip_maximum_processing_weight

C

G

Maximum zIIP processing weight for the active partition in shared mode

zhmc_partition_iip_current_processing_weight

C

G

Current zIIP processing weight for the active partition in shared mode

zhmc_partition_iip_initial_processing_weight_is_capped

C

G

Boolean indicating whether the initial zIIP processing weight is capped (0=false, 1=true)

zhmc_partition_iip_current_processing_weight_is_capped

C

G

Boolean indicating whether the current zIIP processing weight is capped (0=false, 1=true)

zhmc_partition_aap_processor_count_is_capped

C

G

Boolean indicating whether absolute capping is enabled for zAAP processors (0=false, 1=true)

zhmc_partition_aap_processor_count_cap

C

G

Maximum number of zAAP processors that can be used if absolute capping is enabled, else 0

zhmc_partition_aap_initial_processing_weight

C

G

Initial zAAP processing weight for the active partition in shared mode

zhmc_partition_aap_minimum_processing_weight

C

G

Minimum zAAP processing weight for the active partition in shared mode

zhmc_partition_aap_maximum_processing_weight

C

G

Maximum zAAP processing weight for the active partition in shared mode

zhmc_partition_aap_current_processing_weight

C

G

Current zAAP processing weight for the active partition in shared mode

zhmc_partition_aap_initial_processing_weight_is_capped

C

G

Boolean indicating whether the initial zAAP processing weight is capped (0=false, 1=true)

zhmc_partition_aap_current_processing_weight_is_capped

C

G

Boolean indicating whether the current zAAP processing weight is capped (0=false, 1=true)

zhmc_partition_cbp_processor_count_is_capped

C

G

Boolean indicating whether absolute capping is enabled for CBP processors (0=false, 1=true); only for z14-z15

zhmc_partition_cbp_processor_count_cap

C

G

Maximum number of CBP processors that can be used if absolute capping is enabled, else 0; only for z14-z15

zhmc_partition_cbp_initial_processing_weight

C

G

Initial CBP processing weight for the active partition in shared mode; only for z14-z15

zhmc_partition_cbp_minimum_processing_weight

C

G

Minimum CBP processing weight for the active partition in shared mode; only for z14-z15

zhmc_partition_cbp_maximum_processing_weight

C

G

Maximum CBP processing weight for the active partition in shared mode; only for z14-z15

zhmc_partition_cbp_current_processing_weight

C

G

Current CBP processing weight for the active partition in shared mode; only for z14-z15

zhmc_partition_cbp_initial_processing_weight_is_capped

C

G

Boolean indicating whether the initial CBP processing weight is capped (0=false, 1=true); only for z14-z15

zhmc_partition_cbp_current_processing_weight_is_capped

C

G

Boolean indicating whether the current CBP processing weight is capped (0=false, 1=true); only for z14-z15

zhmc_partition_initial_memory_mib

D

G

Initial amount of memory allocated to the partition when it becomes active, in MiB

zhmc_partition_reserved_memory_mib

D

G

Amount of reserved memory (maximum memory minus initial memory), in MiB

zhmc_partition_maximum_memory_mib

D

G

Maximum amount of memory to which the OS can increase, in MiB

zhmc_partition_initial_central_memory_mib

C

G

Amount of central memory initially allocated to the active partition in MiB, else 0

zhmc_partition_current_central_memory_mib

C

G

Amount of central memory currently allocated to the active partition, in MiB, else 0

zhmc_partition_maximum_central_memory_mib

C

G

Maximum amount of central memory to which the operating system running in the active partition can increase, in MiB

zhmc_partition_initial_expanded_memory_mib

C

G

Amount of expanded memory initially allocated to the active partition in MiB, else 0

zhmc_partition_current_expanded_memory_mib

C

G

Amount of expanded memory currently allocated to the active partition, in MiB, else 0

zhmc_partition_maximum_expanded_memory_mib

C

G

Maximum amount of expanded memory to which the operating system running in the active partition can increase, in MiB

zhmc_partition_initial_vfm_memory_gib

C

G

Initial amount of VFM memory to be allocated at partition activation, in GiB

zhmc_partition_maximum_vfm_memory_gib

C

G

Maximum amount of VFM memory that can be allocated to the active partition, in GiB

zhmc_partition_current_vfm_memory_gib

C

G

Current amount of VFM memory that is allocated to the active partition, in GiB

zhmc_partition_status_int

D

G

Partition status as integer (0=active, 1=degraded, 10=paused, 11=stopped, 12=starting, 13=stopping, 20=reservation-error, 21=terminated, 22=communications-not-active, 23=status-check, 99=unsupported value)

zhmc_partition_lpar_status_int

C

G

LPAR status as integer (0=operating, 1=not-operating, 2=not-activated, 10=exceptions, 99=unsupported value)

zhmc_partition_has_unacceptable_status

C+D

G

Boolean indicating whether the partition has an unacceptable status

zhmc_partition_storage_group_uris

D

G

URIs of storage groups attached to the partition, as a comma-separated list; since HMC 2.15

zhmc_partition_storage_groups

D

G

Storage groups attached to the partition, as a comma-separated list; since HMC 2.15

zhmc_storagegroup_type_int

D

G

Storage group type as integer (0=fcp, 1=fc, 2=nvme, 99=unsupported value)

zhmc_storagegroup_fulfillment_state_int

D

G

Storage group fulfillment state as integer (0=complete, 1=pending, 2=pending-with-mismatches, 3=checking-migration, 4=incomplete, 99=unsupported value)

zhmc_storagegroup_shared

D

G

Boolean indicating whether the storage group is shared (0=false, 1=true)

zhmc_storagegroup_max_partitions

D

G

Maximum number of partitions a storage group can be attached to; only for FCP-type SGs

zhmc_storagevolume_fulfillment_state_int

D

G

Storage volume fulfillment state as integer (0=complete, 1=configuration-error, 2=deleting, 3=incomplete, 4=overprovisioned, 5=pending, 6=pending-with-mismatches, 99=unsupported value)

zhmc_storagevolume_usage_int

D

G

Usage of volume as integer (0=boot, 1=data, 2=not-applicable, 99=unsupported value)

zhmc_storagevolume_size_gib

D

G

Size of volume in GiB (0 for ECKD alias volumes)

zhmc_storagevolume_cylinders

D

G

Size of ECKD volume in cylinders (0 for ECKD alias volumes); only for FC-type SGs

zhmc_crypto_adapter_usage_ratio

C

G

Usage ratio of the crypto adapter

zhmc_flash_memory_adapter_usage_ratio

C

G

Usage ratio of the flash memory adapter

zhmc_adapter_usage_ratio

D

G

Usage ratio of the adapter

zhmc_channel_usage_ratio

C

G

Usage ratio of the channel

zhmc_roce_adapter_usage_ratio

C

G

Usage ratio of the RoCE adapter

zhmc_port_bytes_sent_count

D

C

Number of Bytes in unicast packets that were sent

zhmc_port_bytes_received_count

D

C

Number of Bytes in unicast packets that were received

zhmc_port_packets_sent_count

D

C

Number of unicast packets that were sent

zhmc_port_packets_received_count

D

C

Number of unicast packets that were received

zhmc_port_packets_sent_dropped_count

D

C

Number of sent packets that were dropped (resource shortage)

zhmc_port_packets_received_dropped_count

D

C

Number of received packets that were dropped (resource shortage)

zhmc_port_packets_sent_discarded_count

D

C

Number of sent packets that were discarded (malformed)

zhmc_port_packets_received_discarded_count

D

C

Number of received packets that were discarded (malformed)

zhmc_port_multicast_packets_sent_count

D

C

Number of multicast packets sent

zhmc_port_multicast_packets_received_count

D

C

Number of multicast packets received

zhmc_port_broadcast_packets_sent_count

D

C

Number of broadcast packets sent

zhmc_port_broadcast_packets_received_count

D

C

Number of broadcast packets received

zhmc_port_data_sent_bytes

D

G

Amount of data sent over the collection interval

zhmc_port_data_received_bytes

D

G

Amount of data received over the collection interval

zhmc_port_data_rate_sent_bytes_per_second

D

G

Data rate sent over the collection interval

zhmc_port_data_rate_received_bytes_per_second

D

G

Data rate received over the collection interval

zhmc_port_bandwidth_usage_ratio

D

G

Bandwidth usage ratio of the port

zhmc_nic_bytes_sent_count

D

C

Number of Bytes in unicast packets that were sent

zhmc_nic_bytes_received_count

D

C

Number of Bytes in unicast packets that were received

zhmc_nic_packets_sent_count

D

C

Number of unicast packets that were sent

zhmc_nic_packets_received_count

D

C

Number of unicast packets that were received

zhmc_nic_packets_sent_dropped_count

D

C

Number of sent packets that were dropped (resource shortage)

zhmc_nic_packets_received_dropped_count

D

C

Number of received packets that were dropped (resource shortage)

zhmc_nic_packets_sent_discarded_count

D

C

Number of sent packets that were discarded (malformed)

zhmc_nic_packets_received_discarded_count

D

C

Number of received packets that were discarded (malformed)

zhmc_nic_multicast_packets_sent_count

D

C

Number of multicast packets sent

zhmc_nic_multicast_packets_received_count

D

C

Number of multicast packets received

zhmc_nic_broadcast_packets_sent_count

D

C

Number of broadcast packets sent

zhmc_nic_broadcast_packets_received_count

D

C

Number of broadcast packets received

zhmc_nic_data_sent_bytes

D

G

Amount of data sent over the collection interval

zhmc_nic_data_received_bytes

D

G

Amount of data received over the collection interval

zhmc_nic_data_rate_sent_bytes_per_second

D

G

Data rate sent over the collection interval

zhmc_nic_data_rate_received_bytes_per_second

D

G

Data rate received over the collection interval

Legend:

  • Mode: The operational mode of the CPC: C=Classic, D=DPM

  • Type: The Prometheus metric type: G=Gauge, C=Counter

2.11. Labels on exported metrics

The metrics exported to Prometheus are tagged with labels defined in the HMC credentials file (at the global level) or in the metric definition file (at the level of HMC metric groups and HMC metrics).

This section describes what kinds of labels can be defined in these files. For the actual use of this capability, see the example metric definition file and the example HMC credentials file.

Labels at the global level (defined in the HMC credentials file):

extra_labels:
  - name: {label-name}
    value: {label-value}

Where:

  • {label-name} - Name of the label.

  • {label-value} - A Jinja2 expression that is evaluated and used as the value of the label.

    The following variables are available for use in that Jinja2 expression:

    • hmc_info - Dictionary with the result of the “Query API Version” HMC operation. For details, see the description of that operation in the HMC API book. Some notable dictionary items are:

      • hmc-name - Name of the HMC.

      • hmc-version - Version of the HMC as a string (e.g. “2.16”).

Example (fragments from an HMC credentials file):

extra_labels:
  - name: hmc
    value: "hmc_info['hmc-name']"        # HMC name obtained from HMC
  - name: dc
    value: "'dal13'"                     # Literal value 'dal13'

Labels at the HMC metric and HMC metric group level (defined in the metric definition file):

labels:
  - name: {label-name}
    value: {label-value}

Where:

  • {label-name} - Name of the label.

  • {label-value} - A Jinja2 expression that is evaluated and used as the value of the label.

    The following variables are available for use in that Jinja2 expression:

    • resource_obj - The resource to which the metric applies, as a zhmcclient.BaseResource object. This can be used for example to get the name of the resource or its parent or grand-parent resources, or to get other properties of the resource.

    • metric_values - Dictionary of all metric values in the same metric group, for the resource to which the metric applies. Key is the HMC metric name. This variable is only present for metric service based metrics, but not for resource property based metrics. This can be used for example to get metrics that carry information such as channel name or line cord name.

Example (fragments from a metric definition file):

metric_groups:

  channel-usage:
    # . . .
    labels:
      - name: cpc
        value: "resource_obj.name"                          # CPC name
      - name: channel_css_chpid
        value: "metric_values['channel-name']"              # Value of 'channel-name' metric

  logical-partition-usage:
    # . . .
    labels:
      - name: cpc
        value: "resource_obj.manager.parent.name"           # Name of CPC with the partition
      - name: partition
        value: "resource_obj.name"                          # Partition name

metrics:

  logical-partition-resource:

    - property_name: workload-manager-enabled
      exporter_name: workload_manager_is_enabled
      exporter_desc: Boolean indicating whether WLM is allowed to ...
      labels:
        - name: valuetype
          value: "'bool'"                                   # Literal value 'bool'

    - properties_expression: "{'operating': 0, 'not-operating': 1, ..."
      exporter_name: lpar_status_int
      exporter_desc: "LPAR status as integer (0=operating, 1=not-operating, ..."
      labels:
        - name: value
          value: "resource_obj.properties['status']"        # Value of 'status' property (as string)

2.12. HMC credentials file

The HMC credentials file tells the exporter which HMC to talk to for obtaining metrics, and which userid and password to use for logging on to the HMC.

It also specifies how Prometheus should communicate with the exporter.

In addition, it allows specifying additional labels to be used in all metrics exported to Prometheus. This can be used for defining labels that identify the environment managed by the HMC, in cases where metrics from multiple instances of exporters and HMCs come together.

The HMC credentials file is in YAML format and has the following structure:

metrics:
  hmc: {hmc-ip-address}
  userid: {hmc-userid}
  password: {hmc-password}
  verify_cert: {hmc-verify-cert}

prometheus:  # optional
  port: {prom-port}
  server_cert_file: {prom-server-cert-file}
  server_key_file: {prom-server-key-file}
  ca_cert_file: {prom-ca-cert-file}

extra_labels:  # optional
  # list of labels:
  - name: {extra-label-name}
    value: {extra-label-value}

Where:

  • {hmc-ip-address} is the IP address of the HMC.

  • {hmc-userid} is the userid on the HMC to be used for logging on.

  • {hmc-password} is the password of that userid.

  • {hmc-verify-cert} controls whether and how the HMC server certificate is verified. For details, see HMC certificate.

  • {prom-port} is the port for exporting. Default: 9291.

  • {prom-server-cert-file} is the path name of a certificate file in PEM format containing an X.509 server certificate that will be presented to Prometheus during TLS handshake. Relative path names are relative to the directory of the HMC credentials file. If the server_cert_file parameter is specified, the exporter will start its server with HTTPS, and otherwise with HTTP.

  • {prom-server-key-file} is the path name of a key file in PEM format containing an X.509 private key that belongs to the public key in the server certificate. Relative path names are relative to the directory of the HMC credentials file. The server_key_file parameter is required when the server_cert_file parameter is specified.

  • {prom-ca-cert-file} is the path name of a CA file in PEM format containing X.509 CA certificates that will be used for validating a client certificate presented by Prometheus during TLS handshake. Relative path names are relative to the directory of the HMC credentials file. If the ca_cert_file parameter is specified, the exporter will require from Prometheus to present a client certificate during TLS handshake and will validate it using the specified CA certificate chain (mutual TLS, mTLS). If not specified, the exporter will not require from Prometheus to present a client certificate, and will ignore it if presented.

  • {extra-label-name} is the label name.

  • {extra-label-value} is the label value. The string value is used directly without any further interpretation.

2.13. Sample HMC credentials file

The following is a sample HMC credentials file (hmccreds.yaml).

The file can be downloaded from the Git repo as examples/hmccreds.yaml.

# Sample HMC credentials file for the Z HMC Prometheus Exporter.

metrics:
  hmc: 9.10.11.12
  userid: user
  password: password
  verify_cert: true

prometheus:
  port: 9291

  # Note: Activating the following two parameters enables the use of HTTPS
  # server_cert_file: server_cert.pem
  # server_key_file: server_key.pem

  # Note: Activating the following parameter enables the use of mutual TLS
  # ca_cert_file: ca_certs.pem

extra_labels:
  - name: hmc
    value: "hmc_info['hmc-name']"
  - name: pod
    value: "'mypod'"

2.14. Metric definition file

The metric definition file maps the metrics returned by the HMC to metrics exported to Prometheus.

Furthermore, the metric definition file allows optimizing the access time to the HMC by disabling the fetching of metrics that are not needed.

The metric definition file is in YAML format and has the following structure:

metric_groups:
  # dictionary of metric groups:
  {hmc-metric-group}:
    prefix: {resource-type}
    fetch: {fetch-bool}
    if: {fetch-condition}  # optional
    labels:
      # list of labels to be added to all metrics of this group:
      - name: {label-name}
        value: {label-value}

metrics:
  # dictionary of metric groups:
  {hmc-metric-group}:

    # dictionary format for defining metrics:
    {hmc-metric}:
      if: {export-condition}  # optional
      exporter_name: {exporter-name}
      exporter_desc: {exporter-desc}
      metric_type: {metric-type}
      percent: {percent-bool}
      valuemap: {valuemap}
      labels:
        # list of labels to be added to this metric:
        - name: {label-name}
          value: {label-value}

    # list format for defining metrics:
    - property_name: {hmc-metric}                     # either this
      properties_expression: {properties-expression}  # or this
      if: {export-condition}  # optional
      exporter_name: {exporter-name}
      exporter_desc: {exporter-desc}
      percent: {percent-bool}
      valuemap: {valuemap}
      labels:
        # list of labels to be added to this metric:
        - name: {label-name}
          value: {label-value}

fetch_properties:
  # dictionary of properties that need to be fetched because they can
  # change but have no property change notification
  {hmc-resource-class}:
    - property_name: {hmc-property}
      if: {fetch-condition}  # optional

Where:

  • {hmc-metric-group} is the name of the metric group on the HMC.

  • {hmc-metric} is the name of the metric (within the metric group) on the HMC.

  • {resource-type} is a short lower case term for the type of resource the metric applies to, for example cpc or partition. It is used in the Prometheus metric name directly after the initial zhmc_.

  • {fetch-bool} is a boolean indicating whether the user wants this metric group to be fetched from the HMC. For the metric group to actually be fetched, the if property, if specified, also needs to evaluate to True.

  • {fetch-condition} is a string that is evaluated as a Python expression and that indicates whether the metric group can be fetched. For the metric group to actually be fetched, the fetch property also needs to be True. The expression may use the following variables; builtins are not available:

    • hmc_version - HMC version as a tuple of integers (M, N, U), e.g. (2, 16, 0).

    • hmc_api_version - HMC API version as a tuple of integers (M, N), e.g. (4, 10).

    • hmc_features - List of names of HMC API features. Will be empty before HMC API version 4.10.

  • {properties-expression} is a Jinja2 expression whose value should be used as the metric value, for resource property based metrics. The expression uses the variable properties which is the resource properties dictionary of the resource. The properties_expression attribute is mutually exclusive with property_name.

  • {export-condition} is a string that is evaluated as a Python expression and that controls whether the metric is exported. If it evaluates to false, the export of the metric is disabled, regardless of other such controls. The expression may use the following variables; builtins are not available:

    • hmc_version - HMC version as a tuple of integers (M, N, U), e.g. (2, 16, 0).

    • hmc_api_version - HMC API version as a tuple of integers (M, N), e.g. (4, 10).

    • hmc_features - List of names of HMC API features. Will be empty before HMC API version 4.10.

    • se_version - SE/CPC version as a tuple of integers (M, N, U), e.g. (2, 16, 0). Will be None when there is no CPC context for the metric.

    • se_features - List of names of SE/CPC API features. Will be an empty list before HMC API version 4.10 or before SE version 2.16.0 or when there is no CPC context for the metric.

    • resource_obj - zhmcclient resource object for the metric.

  • {exporter-name} is the local metric name and unit in the exported metric name zhmc_{resource-type}_{exporter-name}. If it is null, the export of the metric is disabled, regardless of other such controls.

  • {exporter-desc} is the description text that is exported as # HELP.

  • {metric-type} is an optional enum value that defines the Prometheus metric type used for this metric: - “gauge” (default) - For values that can go up and down - “counter” - For values that are monotonically increasing counters

  • {percent-bool} is a boolean indicating whether the metric value should be divided by 100. The reason for this is that the HMC metrics represent percentages such that a value of 100 means 100% = 1, while Prometheus represents them such that a value of 1.0 means 100% = 1.

  • {valuemap} is an optional dictionary for mapping string enumeration values in the original HMC value to integers to be exported to Prometheus. This is used for example for the processor mode (shared, dedicated).

  • {label-name} is the label name.

  • {label-value} is a Jinja2 expression that is evaluated and used as the label value. For details, see Labels on exported metrics.

  • {hmc-resource-class} is the class of the HMC resource for which properties are to be fetched (i.e. the value of its class property, e.g. cpc).

  • {hmc-property} is the HMC name of the property that is to be fetched.

2.15. Sample metric definition file

The following is a sample metric definition file (metrics.yaml) that defines all metrics as of HMC 2.15 (z15).

The file can be downloaded from the Git repo as examples/metrics.yaml.

# Sample metric definition file for the Z HMC Prometheus Exporter.
# Defines all metrics up to HMC version 2.15.0 (z15), except for ensemble/zBX
# related metrics which are not supported by the Z HMC Prometheus Exporter.

metric_groups:

  # Available for CPCs in classic mode

  cpc-usage-overview:
    prefix: cpc
    fetch: true
    labels:
      - name: cpc
        value: "resource_obj.name"

  logical-partition-usage:
    prefix: partition
    fetch: true
    labels:
      - name: cpc
        value: "resource_obj.manager.parent.name"
      - name: partition
        value: "resource_obj.name"

  channel-usage:
    prefix: channel
    fetch: true
    labels:
      - name: cpc
        value: "resource_obj.name"
      - name: channel_css_chpid
        value: "metric_values['channel-name']"  # format: 'CSS.CHPID'

  crypto-usage:
    prefix: crypto_adapter
    fetch: true
    if: "hmc_version>='2.12.0'"
    labels:
      - name: cpc
        value: "resource_obj.name"
      - name: adapter_pchid
        value: "metric_values['channel-id']"

  flash-memory-usage:
    prefix: flash_memory_adapter
    fetch: true
    if: "hmc_version>='2.12.0'"
    labels:
      - name: cpc
        value: "resource_obj.name"
      - name: adapter_pchid
        value: "metric_values['channel-id']"

  roce-usage:
    prefix: roce_adapter
    fetch: true
    if: "hmc_version>='2.12.1'"
    labels:
      - name: cpc
        value: "resource_obj.name"
      - name: adapter_pchid
        value: "metric_values['channel-id']"

  logical-partition-resource:
    type: resource
    resource: cpc.logical-partition
    prefix: partition
    fetch: true
    labels:
      - name: cpc
        value: "resource_obj.manager.parent.name"
      - name: partition
        value: "resource_obj.name"

  # Available for CPCs in DPM mode

  dpm-system-usage-overview:
    prefix: cpc
    fetch: true
    if: "hmc_version>='2.13.1'"
    labels:
      - name: cpc
        value: "resource_obj.name"

  partition-usage:
    prefix: partition
    fetch: true
    if: "hmc_version>='2.13.1'"
    labels:
      - name: cpc
        value: "resource_obj.manager.parent.name"
      - name: partition
        value: "resource_obj.name"

  adapter-usage:
    prefix: adapter
    fetch: true
    if: "hmc_version>='2.13.1'"
    labels:
      - name: cpc
        value: "resource_obj.manager.parent.name"
      - name: adapter
        value: "resource_obj.name"

  network-physical-adapter-port:
    prefix: port
    fetch: true
    if: "hmc_version>='2.13.1'"
    labels:
      - name: cpc
        value: "resource_obj.manager.parent.name"
      - name: adapter
        value: "resource_obj.name"
      - name: port
        value: "metric_values['network-port-id']"

  partition-attached-network-interface:
    prefix: nic
    fetch: true
    if: "hmc_version>='2.13.1'"
    labels:
      - name: cpc
        value: "resource_obj.manager.parent.manager.parent.name"
      - name: partition
        value: "resource_obj.manager.parent.name"
      - name: nic
        value: "resource_obj.name"
      - name: adapter
        value: "adapter_name(resource_obj)"
      - name: port
        value: "adapter_port(resource_obj)"

  partition-resource:
    type: resource
    resource: cpc.partition
    prefix: partition
    fetch: true
    if: "hmc_version>='2.13.1'"
    labels:
      - name: cpc
        value: "resource_obj.manager.parent.name"
      - name: partition
        value: "resource_obj.name"

  storagegroup-resource:
    type: resource
    resource: console.storagegroup
    prefix: storagegroup
    fetch: true
    if: "hmc_version>='2.14.1'"
    labels:
      - name: cpc
        value: "uri2resource(resource_obj.properties['cpc-uri']).name"
      - name: storagegroup
        value: "resource_obj.name"

  storagevolume-resource:
    type: resource
    resource: console.storagevolume
    prefix: storagevolume
    fetch: true
    if: "hmc_version>='2.14.1'"
    labels:
      - name: cpc
        value: "uri2resource(resource_obj.manager.parent.properties['cpc-uri']).name"
      - name: storagegroup
        value: "resource_obj.manager.parent.name"
      - name: storagevolume
        value: "resource_obj.name"

  # Available for CPCs in any mode

  zcpc-environmentals-and-power:
    prefix: cpc
    fetch: true
    labels:
      - name: cpc
        value: "resource_obj.name"

  zcpc-processor-usage:
    prefix: processor
    fetch: true
    labels:
      - name: cpc
        value: "resource_obj.name"
      - name: processor
        value: "metric_values['processor-name']"
      - name: type
        value: "metric_values['processor-type']"

  environmental-power-status:
    prefix: cpc
    fetch: true
    if: "hmc_version>='2.15.0'"
    labels:
      - name: cpc
        value: "resource_obj.name"

  cpc-resource:
    type: resource
    resource: cpc
    prefix: cpc
    fetch: true
    labels:
      - name: cpc
        value: "resource_obj.name"

metrics:

  # Available for CPCs in classic mode

  cpc-usage-overview:
    cpc-processor-usage:
      percent: true
      exporter_name: processor_usage_ratio
      exporter_desc: Usage ratio across all processors of the CPC
    all-shared-processor-usage:
      percent: true
      exporter_name: shared_processor_usage_ratio
      exporter_desc: Usage ratio across all shared processors of the CPC
    all-dedicated-processor-usage:
      percent: true
      exporter_name: dedicated_processor_usage_ratio
      exporter_desc: Usage ratio across all dedicated processors of the CPC
    cp-all-processor-usage:
      percent: true
      exporter_name: cp_processor_usage_ratio
      exporter_desc: Usage ratio across all CP processors of the CPC
    cp-shared-processor-usage:
      percent: true
      exporter_name: cp_shared_processor_usage_ratio
      exporter_desc: Usage ratio across all shared CP processors of the CPC
    cp-dedicated-processor-usage:
      percent: true
      exporter_name: cp_dedicated_processor_usage_ratio
      exporter_desc: Usage ratio across all dedicated CP processors of the CPC
    ifl-all-processor-usage:
      percent: true
      exporter_name: ifl_processor_usage_ratio
      exporter_desc: Usage ratio across all IFL processors of the CPC
    ifl-shared-processor-usage:
      percent: true
      exporter_name: ifl_shared_processor_usage_ratio
      exporter_desc: Usage ratio across all shared IFL processors of the CPC
    ifl-dedicated-processor-usage:
      percent: true
      exporter_name: ifl_dedicated_processor_usage_ratio
      exporter_desc: Usage ratio across all dedicated IFL processors of the CPC
    icf-all-processor-usage:
      percent: true
      exporter_name: icf_processor_usage_ratio
      exporter_desc: Usage ratio across all ICF processors of the CPC
    icf-shared-processor-usage:
      percent: true
      exporter_name: icf_shared_processor_usage_ratio
      exporter_desc: Usage ratio across all shared ICF processors of the CPC
    icf-dedicated-processor-usage:
      percent: true
      exporter_name: icf_dedicated_processor_usage_ratio
      exporter_desc: Usage ratio across all dedicated ICF processors of the CPC
    iip-all-processor-usage:
      percent: true
      exporter_name: iip_processor_usage_ratio
      exporter_desc: Usage ratio across all zIIP processors of the CPC
    iip-shared-processor-usage:
      percent: true
      exporter_name: iip_shared_processor_usage_ratio
      exporter_desc: Usage ratio across all shared zIIP processors of the CPC
    iip-dedicated-processor-usage:
      percent: true
      exporter_name: iip_dedicated_processor_usage_ratio
      exporter_desc: Usage ratio across all dedicated zIIP processors of the CPC
    aap-shared-processor-usage:
      percent: true
      exporter_name: aap_shared_processor_usage_ratio
      exporter_desc: Usage ratio across all shared zAAP processors of the CPC
    aap-dedicated-processor-usage:
      percent: true
      exporter_name: aap_dedicated_processor_usage_ratio
      exporter_desc: Usage ratio across all dedicated zAAP processors of the CPC
    # aap-all-processor-usage does not seem to exist
    cbp-all-processor-usage:
      # only returned between SE versions 2.14.0+MCLs and 2.15.0 (no conditional export needed)
      percent: true
      exporter_name: cbp_processor_usage_ratio
      exporter_desc: Usage ratio across all CBP processors of the CPC
    cbp-shared-processor-usage:
      # only returned between SE versions 2.14.0+MCLs and 2.15.0 (no conditional export needed)
      percent: true
      exporter_name: cbp_shared_processor_usage_ratio
      exporter_desc: Usage ratio across all shared CBP processors of the CPC
    cbp-dedicated-processor-usage:
      # only returned between SE versions 2.14.0+MCLs and 2.15.0 (no conditional export needed)
      percent: true
      exporter_name: cbp_dedicated_processor_usage_ratio
      exporter_desc: Usage ratio across all dedicated CBP processors of the CPC
    channel-usage:
      percent: true
      exporter_name: channel_usage_ratio
      exporter_desc: Usage ratio across all channels of the CPC
    power-consumption-watts:
      percent: false
      exporter_name: power_watt
      exporter_desc: Power consumption of the CPC
    temperature-celsius:
      percent: false
      exporter_name: ambient_temperature_celsius
      exporter_desc: Ambient temperature of the CPC

  logical-partition-usage:
    processor-usage:
      percent: true
      exporter_name: processor_usage_ratio
      exporter_desc: Usage ratio across all processors of the partition
    cp-processor-usage:
      percent: true
      exporter_name: cp_processor_usage_ratio
      exporter_desc: Usage ratio across all CP processors of the partition
    ifl-processor-usage:
      percent: true
      exporter_name: ifl_processor_usage_ratio
      exporter_desc: Usage ratio across all IFL processors of the partition
    icf-processor-usage:
      percent: true
      exporter_name: icf_processor_usage_ratio
      exporter_desc: Usage ratio across all ICF processors of the partition
    iip-processor-usage:
      percent: true
      exporter_name: iip_processor_usage_ratio
      exporter_desc: Usage ratio across all IIP processors of the partition
    cbp-processor-usage:
      # only returned between SE versions 2.14.0+MCLs and 2.15.0 (no conditional export needed)
      percent: true
      exporter_name: cbp_processor_usage_ratio
      exporter_desc: Usage ratio across all CBP processors of the partition
    zvm-paging-rate:
      percent: false
      exporter_name: zvm_paging_rate_pages_per_second
      exporter_desc: z/VM paging rate in pages/sec
    power-consumption-watts:
      if: "'environmental-metrics' in se_features"
      percent: false
      exporter_name: power_watt
      exporter_desc: Power consumption of the partition

  channel-usage:
    channel-usage:
      percent: true
      exporter_name: usage_ratio
      exporter_desc: Usage ratio of the channel
    channel-name:
      percent: false
      exporter_name: null  # Ignored (used for identification in channel-usage)
      exporter_desc: null
    shared-channel:
      percent: false
      exporter_name: null  # Ignored (used for identification in channel-usage)
      exporter_desc: null
    logical-partition-name:
      percent: false
      exporter_name: null  # Ignored (used for identification in channel-usage)
      exporter_desc: null

  crypto-usage:
    adapter-usage:
      percent: true
      exporter_name: usage_ratio
      exporter_desc: Usage ratio of the crypto adapter
    channel-id:
      percent: false
      exporter_name: null  # Ignored (used for identification in adapter-usage)
      exporter_desc: null
    crypto-id:
      percent: false
      exporter_name: null  # Ignored (used for identification in adapter-usage)
      exporter_desc: null

  flash-memory-usage:
    adapter-usage:
      percent: true
      exporter_name: usage_ratio
      exporter_desc: Usage ratio of the flash memory adapter
    channel-id:
      percent: false
      exporter_name: null  # Ignored (used for identification in adapter-usage)
      exporter_desc: null

  roce-usage:
    adapter-usage:
      percent: true
      exporter_name: usage_ratio
      exporter_desc: Usage ratio of the RoCE adapter

  logical-partition-resource:  # can be in dictionary or list format
    - properties_expression: "0"
      exporter_name: description
      exporter_desc: "Description of the partition (in 'value' label)"
      labels:
        - name: value
          value: "resource_obj.properties['description']"
    - property_name: defined-capacity
      exporter_name: defined_capacity_msu_per_hour
      exporter_desc: Defined capacity expressed in terms of Millions of Service Units (MSU)s per hour
    - property_name: workload-manager-enabled
      exporter_name: workload_manager_is_enabled
      exporter_desc: Boolean indicating whether the z/OS Workload Manager is allowed to change processing weight related properties of the partition (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - property_name: processor-usage
      if: "'processor-usage' in resource_obj.properties"  # Added in HMC 2.15.0
      exporter_name: processor_mode_int
      exporter_desc: Allocation mode for processors to the active partition as an integer (0=shared, 1=dedicated)
      valuemap:
        shared: 0
        dedicated: 1
    - property_name: number-general-purpose-processors
      if: "'number-general-purpose-processors' in resource_obj.properties"  # Added in HMC 2.15.0
      exporter_name: cp_processor_count
      exporter_desc: Number of CP processors currently allocated to the active partition
    - property_name: number-reserved-general-purpose-processors
      if: "'number-reserved-general-purpose-processors' in resource_obj.properties"  # Added in HMC 2.15.0
      exporter_name: cp_reserved_processor_count
      exporter_desc: Number of CP processors reserved for the active partition (this is the maximum when increasing the number)
    - property_name: initial-processing-weight
      exporter_name: cp_initial_processing_weight
      exporter_desc: Initial CP processing weight for the active partition in shared mode (1..999)
    - property_name: minimum-processing-weight
      exporter_name: cp_minimum_processing_weight
      exporter_desc: Minimum CP processing weight for the active partition in shared mode (1..999)
    - property_name: maximum-processing-weight
      exporter_name: cp_maximum_processing_weight
      exporter_desc: Maximum CP processing weight for the active partition in shared mode (1..999)
    - property_name: current-processing-weight
      exporter_name: cp_current_processing_weight
      exporter_desc: Current CP processing weight for the active partition in shared mode (1..999)
    - properties_expression: "properties['absolute-processing-capping'].type == 'processors'"
      exporter_name: cp_processor_count_is_capped
      exporter_desc: Boolean indicating whether absolute capping is enabled for CP processors (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - properties_expression: "properties['absolute-processing-capping'].value if properties['absolute-processing-capping'].type == 'processors' else 0"
      exporter_name: cp_processor_count_cap
      exporter_desc: Maximum number of CP processors that can be used if absolute capping is enabled, else 0
    - property_name: initial-processing-weight-capped
      exporter_name: cp_initial_processing_weight_is_capped
      exporter_desc: Boolean indicating whether the initial CP processing weight is capped (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - property_name: current-processing-weight-capped
      exporter_name: cp_current_processing_weight_is_capped
      exporter_desc: Boolean indicating whether the current CP processing weight is capped (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - property_name: number-ifl-processors
      if: "'number-ifl-processors' in resource_obj.properties"  # Added in SE 2.15.0
      exporter_name: ifl_processor_count
      exporter_desc: Number of IFL processors currently allocated to the active partition
    - property_name: number-reserved-ifl-processors
      if: "'number-reserved-ifl-processors' in resource_obj.properties"  # Added in SE 2.15.0
      exporter_name: ifl_reserved_processor_count
      exporter_desc: Number of IFL processors reserved for the active partition (this is the maximum when increasing the number)
    - property_name: initial-ifl-processing-weight
      exporter_name: ifl_initial_processing_weight
      exporter_desc: Initial IFL processing weight for the active partition in shared mode (1..999)
    - property_name: minimum-ifl-processing-weight
      exporter_name: ifl_minimum_processing_weight
      exporter_desc: Minimum IFL processing weight for the active partition in shared mode (1..999)
    - property_name: maximum-ifl-processing-weight
      exporter_name: ifl_maximum_processing_weight
      exporter_desc: Maximum IFL processing weight for the active partition in shared mode (1..999)
    - property_name: current-ifl-processing-weight
      exporter_name: ifl_current_processing_weight
      exporter_desc: Current IFL processing weight for the active partition in shared mode (1..999)
    - properties_expression: "properties['absolute-ifl-capping'].type == 'processors'"
      exporter_name: ifl_processor_count_is_capped
      exporter_desc: Boolean indicating whether absolute capping is enabled for IFL processors (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - properties_expression: "properties['absolute-ifl-capping'].value if properties['absolute-ifl-capping'].type == 'processors' else 0"
      exporter_name: ifl_processor_count_cap
      exporter_desc: Maximum number of IFL processors that can be used if absolute capping is enabled, else 0
    - property_name: initial-ifl-processing-weight-capped
      exporter_name: ifl_initial_processing_weight_is_capped
      exporter_desc: Boolean indicating whether the initial IFL processing weight is capped (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - property_name: current-ifl-processing-weight-capped
      exporter_name: ifl_current_processing_weight_is_capped
      exporter_desc: Boolean indicating whether the current IFL processing weight is capped (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - property_name: number-icf-processors
      if: "'number-ifc-processors' in resource_obj.properties"  # Added in SE 2.15.0
      exporter_name: icf_processor_count
      exporter_desc: Number of ICF processors currently allocated to the active partition
    - property_name: number-reserved-icf-processors
      if: "'number-reserved-ifc-processors' in resource_obj.properties"  # Added in SE 2.15.0
      exporter_name: icf_reserved_processor_count
      exporter_desc: Number of ICF processors reserved for the active partition (this is the maximum when increasing the number)
    - property_name: initial-cf-processing-weight
      exporter_name: icf_initial_processing_weight
      exporter_desc: Initial ICF processing weight for the active partition in shared mode (1..999)
    - property_name: minimum-cf-processing-weight
      exporter_name: icf_minimum_processing_weight
      exporter_desc: Minimum ICF processing weight for the active partition in shared mode (1..999)
    - property_name: maximum-cf-processing-weight
      exporter_name: icf_maximum_processing_weight
      exporter_desc: Maximum ICF processing weight for the active partition in shared mode (1..999)
    - property_name: current-cf-processing-weight
      exporter_name: icf_current_processing_weight
      exporter_desc: Current ICF processing weight for the active partition in shared mode (1..999)
    - properties_expression: "properties['absolute-cf-capping'].type == 'processors'"
      exporter_name: icf_processor_count_is_capped
      exporter_desc: Boolean indicating whether absolute capping is enabled for ICF processors (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - properties_expression: "properties['absolute-cf-capping'].value if properties['absolute-cf-capping'].type == 'processors' else 0"
      exporter_name: icf_processor_count_cap
      exporter_desc: Maximum number of ICF processors that can be used if absolute capping is enabled, else 0
    - property_name: initial-cf-processing-weight-capped
      exporter_name: icf_initial_processing_weight_is_capped
      exporter_desc: Boolean indicating whether the initial ICF processing weight is capped (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - property_name: current-cf-processing-weight-capped
      exporter_name: icf_current_processing_weight_is_capped
      exporter_desc: Boolean indicating whether the current ICF processing weight is capped (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - property_name: number-ziip-processors
      if: "'number-ziip-processors' in resource_obj.properties"  # Added in SE 2.15.0
      exporter_name: iip_processor_count
      exporter_desc: Number of zIIP processors currently allocated to the active partition
    - property_name: number-reserved-ziip-processors
      if: "'number-reserved-ziip-processors' in resource_obj.properties"  # Added in SE 2.15.0
      exporter_name: iip_reserved_processor_count
      exporter_desc: Number of zIIP processors reserved for the active partition (this is the maximum when increasing the number)
    - property_name: initial-ziip-processing-weight
      exporter_name: iip_initial_processing_weight
      exporter_desc: Initial zIIP processing weight for the active partition in shared mode (1..999)
    - property_name: minimum-ziip-processing-weight
      exporter_name: iip_minimum_processing_weight
      exporter_desc: Minimum zIIP processing weight for the active partition in shared mode (1..999)
    - property_name: maximum-ziip-processing-weight
      exporter_name: iip_maximum_processing_weight
      exporter_desc: Maximum zIIP processing weight for the active partition in shared mode (1..999)
    - property_name: current-ziip-processing-weight
      exporter_name: iip_current_processing_weight
      exporter_desc: Current zIIP processing weight for the active partition in shared mode (1..999)
    - properties_expression: "properties['absolute-ziip-capping'].type == 'processors'"
      exporter_name: iip_processor_count_is_capped
      exporter_desc: Boolean indicating whether absolute capping is enabled for zIIP processors (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - properties_expression: "properties['absolute-ziip-capping'].value if properties['absolute-ziip-capping'].type == 'processors' else 0"
      exporter_name: iip_processor_count_cap
      exporter_desc: Maximum number of zIIP processors that can be used if absolute capping is enabled, else 0
    - property_name: initial-ziip-processing-weight-capped
      exporter_name: iip_initial_processing_weight_is_capped
      exporter_desc: Boolean indicating whether the initial zIIP processing weight is capped (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - property_name: current-ziip-processing-weight-capped
      exporter_name: iip_current_processing_weight_is_capped
      exporter_desc: Boolean indicating whether the current zIIP processing weight is capped (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    # Note: number-...-processors/cores properties do not exist in 2.15 for AAP processors
    - property_name: initial-aap-processing-weight
      exporter_name: aap_initial_processing_weight
      exporter_desc: Initial zAAP processing weight for the active partition in shared mode (1..999)
    - property_name: minimum-aap-processing-weight
      exporter_name: aap_minimum_processing_weight
      exporter_desc: Minimum zAAP processing weight for the active partition in shared mode (1..999)
    - property_name: maximum-aap-processing-weight
      exporter_name: aap_maximum_processing_weight
      exporter_desc: Maximum zAAP processing weight for the active partition in shared mode (1..999)
    - property_name: current-aap-processing-weight
      exporter_name: aap_current_processing_weight
      exporter_desc: Current zAAP processing weight for the active partition in shared mode (1..999)
    - properties_expression: "properties['absolute-aap-capping'].type == 'processors'"
      exporter_name: aap_processor_count_is_capped
      exporter_desc: Boolean indicating whether absolute capping is enabled for zAAP processors (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - properties_expression: "properties['absolute-aap-capping'].value if properties['absolute-aap-capping'].type == 'processors' else 0"
      exporter_name: aap_processor_count_cap
      exporter_desc: Maximum number of zAAP processors that can be used if absolute capping is enabled, else 0
    - property_name: initial-aap-processing-weight-capped
      exporter_name: aap_initial_processing_weight_is_capped
      exporter_desc: Boolean indicating whether the initial zAAP processing weight is capped (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - property_name: current-aap-processing-weight-capped
      exporter_name: aap_current_processing_weight_is_capped
      exporter_desc: Boolean indicating whether the current zAAP processing weight is capped (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    # Note: number-...-processors/cores properties do not exist in 2.15 for CBP processors
    - property_name: initial-cbp-processing-weight
      if: "'initial-cbp-processing-weight' in resource_obj.properties"  # Between SE versions 2.14.0+MCLs and 2.15.0
      exporter_name: cbp_initial_processing_weight
      exporter_desc: Initial CBP processing weight for the active partition in shared mode (1..999)
    - property_name: minimum-cbp-processing-weight
      if: "'minimum-cbp-processing-weight' in resource_obj.properties"  # Between SE versions 2.14.0+MCLs and 2.15.0
      exporter_name: cbp_minimum_processing_weight
      exporter_desc: Minimum CBP processing weight for the active partition in shared mode (1..999)
    - property_name: maximum-cbp-processing-weight
      if: "'maximum-cbp-processing-weight' in resource_obj.properties"  # Between SE versions 2.14.0+MCLs and 2.15.0
      exporter_name: cbp_maximum_processing_weight
      exporter_desc: Maximum CBP processing weight for the active partition in shared mode (1..999)
    - property_name: current-cbp-processing-weight
      if: "'current-cbp-processing-weight' in resource_obj.properties"  # Between SE versions 2.14.0+MCLs and 2.15.0
      exporter_name: cbp_current_processing_weight
      exporter_desc: Current CBP processing weight for the active partition in shared mode (1..999)
    - properties_expression: "properties['absolute-cbp-capping'].type == 'processors'"
      if: "'absolute-cbp-capping' in resource_obj.properties"  # Between SE versions 2.14.0+MCLs and 2.15.0
      exporter_name: cbp_processor_count_is_capped
      exporter_desc: Boolean indicating whether absolute capping is enabled for CBP processors (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - properties_expression: "properties['absolute-cbp-capping'].value if properties['absolute-cbp-capping'].type == 'processors' else 0"
      if: "'absolute-cbp-capping' in resource_obj.properties"  # Between SE versions 2.14.0+MCLs and 2.15.0
      exporter_name: cbp_processor_count_cap
      exporter_desc: Maximum number of CBP processors that can be used if absolute capping is enabled, else 0
    - property_name: initial-cbp-processing-weight-capped
      if: "'initial-cbp-processing-weight-capped' in resource_obj.properties"  # Between SE versions 2.14.0+MCLs and 2.15.0
      exporter_name: cbp_initial_processing_weight_is_capped
      exporter_desc: Boolean indicating whether the initial CBP processing weight is capped (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - property_name: current-cbp-processing-weight-capped
      if: "'current-cbp-processing-weight-capped' in resource_obj.properties"  # Between SE versions 2.14.0+MCLs and 2.15.0
      exporter_name: cbp_current_processing_weight_is_capped
      exporter_desc: Boolean indicating whether the current CBP processing weight is capped (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - properties_expression: "properties['storage-central-allocation']|map(attribute='initial')|map('replace',None,0)|map('int')|sum"
      exporter_name: initial_central_memory_mib
      exporter_desc: Amount of central memory initially allocated to the active partition in MiB (segments with unavailable values are counted as 0)
    - properties_expression: "properties['storage-central-allocation']|map(attribute='current')|map('replace',None,0)|map('int')|sum"
      exporter_name: current_central_memory_mib
      exporter_desc: Amount of central memory currently allocated to the active partition in MiB (segments with unavailable values are counted as 0)
    - properties_expression: "properties['storage-central-allocation']|map(attribute='maximum')|map('replace',None,0)|map('int')|sum"
      exporter_name: maximum_central_memory_mib
      exporter_desc: Maximum amount of central memory to which the operating system running in the active partition can increase in MiB (segments with unavailable values are counted as 0)
    - properties_expression: "properties['storage-expanded-allocation']|map(attribute='initial')|map('replace',None,0)|map('int')|sum"
      exporter_name: initial_expanded_memory_mib
      exporter_desc: Amount of expanded memory initially allocated to the active partition in MiB (segments with unavailable values are counted as 0)
    - properties_expression: "properties['storage-expanded-allocation']|map(attribute='current')|map('replace',None,0)|map('int')|sum"
      exporter_name: current_expanded_memory_mib
      exporter_desc: Amount of expanded memory currently allocated to the active partition in MiB (segments with unavailable values are counted as 0)
    - properties_expression: "properties['storage-expanded-allocation']|map(attribute='maximum')|map('replace',None,0)|map('int')|sum"
      exporter_name: maximum_expanded_memory_mib
      exporter_desc: Maximum amount of expanded memory to which the operating system running in the active partition can increase in MiB (segments with unavailable values are counted as 0)
    - property_name: initial-vfm-storage
      exporter_name: initial_vfm_memory_gib
      exporter_desc: Initial amount of IBM Virtual Flash Memory (VFM) to be allocated at partition activation, in GiB
    - property_name: maximum-vfm-storage
      exporter_name: maximum_vfm_memory_gib
      exporter_desc: Maximum amount of IBM Virtual Flash Memory (VFM) that can be allocated to the active partition, in GiB
    - property_name: current-vfm-storage
      exporter_name: current_vfm_memory_gib
      exporter_desc: Current amount of IBM Virtual Flash Memory (VFM) that is allocated to the active partition, in GiB
    - properties_expression: "{'operating': 0, 'not-operating': 1, 'not-activated': 2, 'exceptions': 10}.get(properties.status, 99)"
      exporter_name: lpar_status_int  # Must be different from partition status_int due to different values
      exporter_desc: "LPAR status as integer (0=operating, 1=not-operating, 2=not-activated, 10=exceptions, 99=unsupported value)"
      labels:
        - name: value
          value: "resource_obj.properties['status']"
    - property_name: has-unacceptable-status
      exporter_name: has_unacceptable_status
      exporter_desc: Boolean indicating whether the partition has an unacceptable status (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"

  # Available for CPCs in DPM mode

  dpm-system-usage-overview:
    processor-usage:
      percent: true
      exporter_name: processor_usage_ratio
      exporter_desc: Usage ratio across all processors of the CPC
    all-shared-processor-usage:
      percent: true
      exporter_name: shared_processor_usage_ratio
      exporter_desc: Usage ratio across all shared processors of the CPC
    cp-all-processor-usage:
      percent: true
      exporter_name: cp_processor_usage_ratio
      exporter_desc: Usage ratio across all CP processors of the CPC
    cp-shared-processor-usage:
      percent: true
      exporter_name: cp_shared_processor_usage_ratio
      exporter_desc: Usage ratio across all shared CP processors of the CPC
    ifl-all-processor-usage:
      percent: true
      exporter_name: ifl_processor_usage_ratio
      exporter_desc: Usage ratio across all IFL processors of the CPC
    ifl-shared-processor-usage:
      percent: true
      exporter_name: ifl_shared_processor_usage_ratio
      exporter_desc: Usage ratio across all shared IFL processors of the CPC
    network-usage:
      percent: true
      exporter_name: network_adapter_usage_ratio
      exporter_desc: Usage ratio across all network adapters of the CPC
    storage-usage:
      percent: true
      exporter_name: storage_adapter_usage_ratio
      exporter_desc: Usage ratio across all storage adapters of the CPC
    accelerator-usage:
      percent: true
      exporter_name: accelerator_adapter_usage_ratio
      exporter_desc: Usage ratio across all accelerator adapters of the CPC
    crypto-usage:
      percent: true
      exporter_name: crypto_adapter_usage_ratio
      exporter_desc: Usage ratio across all crypto adapters of the CPC
    power-consumption-watts:
      percent: false
      exporter_name: power_watt
      exporter_desc: Power consumption of the CPC
    temperature-celsius:
      percent: false
      exporter_name: ambient_temperature_celsius
      exporter_desc: Ambient temperature of the CPC

  partition-usage:
    processor-usage:
      percent: true
      exporter_name: processor_usage_ratio
      exporter_desc: Usage ratio across all processors of the partition
    network-usage:
      percent: true
      exporter_name: network_adapter_usage_ratio
      exporter_desc: Usage ratio of all network adapters of the partition
    storage-usage:
      percent: true
      exporter_name: storage_adapter_usage_ratio
      exporter_desc: Usage ratio of all storage adapters of the partition
    accelerator-usage:
      percent: true
      exporter_name: accelerator_adapter_usage_ratio
      exporter_desc: Usage ratio of all accelerator adapters of the partition
    crypto-usage:
      percent: true
      exporter_name: crypto_adapter_usage_ratio
      exporter_desc: Usage ratio of all crypto adapters of the partition

  adapter-usage:
    adapter-usage:
      percent: true
      exporter_name: usage_ratio
      exporter_desc: Usage ratio of the adapter

  network-physical-adapter-port:
    network-port-id:
      # type: info
      percent: false
      exporter_name: null  # Ignored (identifies the port, used in label)
      exporter_desc: null
    bytes-sent:
      metric_type: counter
      percent: false
      exporter_name: bytes_sent_count
      exporter_desc: Number of Bytes in unicast packets that were sent
    bytes-received:
      metric_type: counter
      percent: false
      exporter_name: bytes_received_count
      exporter_desc: Number of Bytes in unicast packets that were received
    packets-sent:
      metric_type: counter
      percent: false
      exporter_name: packets_sent_count
      exporter_desc: Number of unicast packets that were sent
    packets-received:
      metric_type: counter
      percent: false
      exporter_name: packets_received_count
      exporter_desc: Number of unicast packets that were received
    packets-sent-dropped:
      metric_type: counter
      percent: false
      exporter_name: packets_sent_dropped_count
      exporter_desc: Number of sent packets that were dropped (resource shortage)
    packets-received-dropped:
      metric_type: counter
      percent: false
      exporter_name: packets_received_dropped_count
      exporter_desc: Number of received packets that were dropped (resource shortage)
    packets-sent-discarded:
      metric_type: counter
      percent: false
      exporter_name: packets_sent_discarded_count
      exporter_desc: Number of sent packets that were discarded (malformed)
    packets-received-discarded:
      metric_type: counter
      percent: false
      exporter_name: packets_received_discarded_count
      exporter_desc: Number of received packets that were discarded (malformed)
    multicast-packets-sent:
      metric_type: counter
      percent: false
      exporter_name: multicast_packets_sent_count
      exporter_desc: Number of multicast packets sent
    multicast-packets-received:
      metric_type: counter
      percent: false
      exporter_name: multicast_packets_received_count
      exporter_desc: Number of multicast packets received
    broadcast-packets-sent:
      metric_type: counter
      percent: false
      exporter_name: broadcast_packets_sent_count
      exporter_desc: Number of broadcast packets sent
    broadcast-packets-received:
      metric_type: counter
      percent: false
      exporter_name: broadcast_packets_received_count
      exporter_desc: Number of broadcast packets received
    interval-bytes-sent:
      percent: false
      exporter_name: data_sent_bytes
      exporter_desc: Amount of data sent over the collection interval
    interval-bytes-received:
      percent: false
      exporter_name: data_received_bytes
      exporter_desc: Amount of data received over the collection interval
    bytes-per-second-sent:
      percent: false
      exporter_name: data_rate_sent_bytes_per_second
      exporter_desc: Data rate sent over the collection interval
    bytes-per-second-received:
      percent: false
      exporter_name: data_rate_received_bytes_per_second
      exporter_desc: Data rate received over the collection interval
    utilization:
      percent: true
      exporter_name: bandwidth_usage_ratio
      exporter_desc: Bandwidth usage ratio of the port
    mac-address:
      # type: info
      percent: false
      exporter_name: null # mac_address
      exporter_desc: null # MAC address of the port, or 'N/A'
    flags:
      # type: info
      percent: false
      exporter_name: null  # Ignored (can be detected from metric values)
      exporter_desc: null

  partition-attached-network-interface:
    partition-id:  # the OID, i.e. /api/partitions/{partition-id}
      # type: info
      percent: false
      exporter_name: null  # Ignored (identifies the partition, used in label)
      exporter_desc: null
    bytes-sent:
      metric_type: counter
      percent: false
      exporter_name: bytes_sent_count
      exporter_desc: Number of Bytes in unicast packets that were sent
    bytes-received:
      metric_type: counter
      percent: false
      exporter_name: bytes_received_count
      exporter_desc: Number of Bytes in unicast packets that were received
    packets-sent:
      metric_type: counter
      percent: false
      exporter_name: packets_sent_count
      exporter_desc: Number of unicast packets that were sent
    packets-received:
      metric_type: counter
      percent: false
      exporter_name: packets_received_count
      exporter_desc: Number of unicast packets that were received
    packets-sent-dropped:
      metric_type: counter
      percent: false
      exporter_name: packets_sent_dropped_count
      exporter_desc: Number of sent packets that were dropped (resource shortage)
    packets-received-dropped:
      metric_type: counter
      percent: false
      exporter_name: packets_received_dropped_count
      exporter_desc: Number of received packets that were dropped (resource shortage)
    packets-sent-discarded:
      metric_type: counter
      percent: false
      exporter_name: packets_sent_discarded_count
      exporter_desc: Number of sent packets that were discarded (malformed)
    packets-received-discarded:
      metric_type: counter
      percent: false
      exporter_name: packets_received_discarded_count
      exporter_desc: Number of received packets that were discarded (malformed)
    multicast-packets-sent:
      metric_type: counter
      percent: false
      exporter_name: multicast_packets_sent_count
      exporter_desc: Number of multicast packets sent
    multicast-packets-received:
      metric_type: counter
      percent: false
      exporter_name: multicast_packets_received_count
      exporter_desc: Number of multicast packets received
    broadcast-packets-sent:
      metric_type: counter
      percent: false
      exporter_name: broadcast_packets_sent_count
      exporter_desc: Number of broadcast packets sent
    broadcast-packets-received:
      metric_type: counter
      percent: false
      exporter_name: broadcast_packets_received_count
      exporter_desc: Number of broadcast packets received
    interval-bytes-sent:
      percent: false
      exporter_name: data_sent_bytes
      exporter_desc: Amount of data sent over the collection interval
    interval-bytes-received:
      percent: false
      exporter_name: data_received_bytes
      exporter_desc: Amount of data received over the collection interval
    bytes-per-second-sent:
      percent: false
      exporter_name: data_rate_sent_bytes_per_second
      exporter_desc: Data rate sent over the collection interval
    bytes-per-second-received:
      percent: false
      exporter_name: data_rate_received_bytes_per_second
      exporter_desc: Data rate received over the collection interval
    flags:
      # type: info
      percent: false
      exporter_name: null  # Ignored (can be detected from metric values)
      exporter_desc: null

  partition-resource:  # can be in dictionary or list format
    - properties_expression: "0"
      exporter_name: description
      exporter_desc: "Description of the partition (in 'value' label)"
      labels:
        - name: value
          value: "resource_obj.properties['description']"
    - property_name: processor-mode
      exporter_name: processor_mode_int
      exporter_desc: Allocation mode for processors to the active partition as an integer (0=shared, 1=dedicated)
      valuemap:
        shared: 0
        dedicated: 1
    - property_name: threads-per-processor
      exporter_name: threads_per_processor_ratio
      exporter_desc: Number of threads per allocated processor the operating system running in the partition is configured to use
    - property_name: cp-processors
      exporter_name: cp_processor_count
      exporter_desc: Number of CP processors allocated to the active partition
    - property_name: initial-cp-processing-weight
      exporter_name: cp_initial_processing_weight
      exporter_desc: Initial CP processing weight for the active partition in shared mode (1..999)
    - property_name: minimum-cp-processing-weight
      exporter_name: cp_minimum_processing_weight
      exporter_desc: Minimum CP processing weight for the active partition in shared mode (1..999)
    - property_name: maximum-cp-processing-weight
      exporter_name: cp_maximum_processing_weight
      exporter_desc: Maximum CP processing weight for the active partition in shared mode (1..999)
    - property_name: current-cp-processing-weight
      exporter_name: cp_current_processing_weight
      exporter_desc: Current CP processing weight for the active partition in shared mode (1..999)
    - properties_expression: "properties['cp-absolute-processor-capping']"
      exporter_name: cp_processor_count_is_capped
      exporter_desc: Boolean indicating whether absolute capping is enabled for CP processors (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - properties_expression: "properties['cp-absolute-processor-capping-value'] if properties['cp-absolute-processor-capping'] else 0"
      exporter_name: cp_processor_count_cap
      exporter_desc: Maximum number of CP processors that can be used if absolute capping is enabled, else 0
    - property_name: cp-processing-weight-capped
      exporter_name: cp_initial_processing_weight_is_capped
      exporter_desc: Boolean indicating whether the initial CP processing weight is capped (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - property_name: ifl-processors
      exporter_name: ifl_processor_count
      exporter_desc: Number of IFL processors allocated to the active partition
    - property_name: initial-ifl-processing-weight
      exporter_name: ifl_initial_processing_weight
      exporter_desc: Initial IFL processing weight for the active partition in shared mode (1..999)
    - property_name: minimum-ifl-processing-weight
      exporter_name: ifl_minimum_processing_weight
      exporter_desc: Minimum IFL processing weight for the active partition in shared mode (1..999)
    - property_name: maximum-ifl-processing-weight
      exporter_name: ifl_maximum_processing_weight
      exporter_desc: Maximum IFL processing weight for the active partition in shared mode (1..999)
    - property_name: current-ifl-processing-weight
      exporter_name: ifl_current_processing_weight
      exporter_desc: Current IFL processing weight for the active partition in shared mode (1..999)
    - properties_expression: "properties['ifl-absolute-processor-capping']"
      exporter_name: ifl_processor_count_is_capped
      exporter_desc: Boolean indicating whether absolute capping is enabled for IFL processors (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - properties_expression: "properties['ifl-absolute-processor-capping-value'] if properties['ifl-absolute-processor-capping'] else 0"
      exporter_name: ifl_processor_count_cap
      exporter_desc: Maximum number of IFL processors that can be used if absolute capping is enabled, else 0
    - property_name: ifl-processing-weight-capped
      exporter_name: ifl_initial_processing_weight_is_capped
      exporter_desc: Boolean indicating whether the initial IFL processing weight is capped (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - property_name: initial-memory
      exporter_name: initial_memory_mib
      exporter_desc: Initial amount of memory allocated to the partition when it becomes active, in MiB
    - property_name: reserved-memory
      exporter_name: reserved_memory_mib
      exporter_desc: Amount of reserved memory (maximum memory minus initial memory), in MiB
    - property_name: maximum-memory
      exporter_name: maximum_memory_mib
      exporter_desc: Maximum amount of memory to which the operating system running in the partition can increase the memory allocation, in MiB
    - properties_expression: "{'active': 0, 'degraded': 1, 'paused': 10, 'stopped': 11, 'starting': 12, 'stopping': 13, 'reservation-error': 20, 'terminated': 21, 'communications-not-active': 22, 'status-check': 23}.get(properties.status, 99)"
      exporter_name: status_int
      exporter_desc: "Partition status as integer (0=active, 1=degraded, 10=paused, 11=stopped, 12=starting, 13=stopping, 20=reservation-error, 21=terminated, 22=communications-not-active, 23=status-check, 99=unsupported value)"
      labels:
        - name: value
          value: "resource_obj.properties['status']"
    - property_name: has-unacceptable-status
      exporter_name: has_unacceptable_status
      exporter_desc: Boolean indicating whether the partition has an unacceptable status (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - properties_expression: "0"
      if: "'storage-group-uris' in resource_obj.properties"  # Added in HMC 2.15.0
      exporter_name: storage_group_uris
      exporter_desc: "URIs of storage groups attached to the partition, as a comma-separated list"
      labels:
        - name: value
          value: "resource_obj.properties['storage-group-uris'] | join(',')"
    - properties_expression: "0"
      if: "'storage-group-uris' in resource_obj.properties"  # Added in HMC 2.15.0
      exporter_name: storage_groups
      exporter_desc: "Storage groups attached to the partition, as a comma-separated list"
      labels:
        - name: value
          value: "uris2resources(resource_obj.properties['storage-group-uris']) | map(attribute='name') | join(',')"

  storagegroup-resource:  # can be in dictionary or list format
    - properties_expression: "{'fcp': 0, 'fc': 1, 'nvme': 2}.get(properties.type, 99)"  # No change notification, but never changes
      exporter_name: type_int
      exporter_desc: "Storage group type as integer (0=fcp, 1=fc, 2=nvme, 99=unsupported value)"
      labels:
        - name: value
          value: "resource_obj.properties['type']"
    - properties_expression: "{'complete': 0, 'pending': 1, 'pending-with-mismatches': 2, 'checking-migration': 3, 'incomplete': 4}.get(properties['fulfillment-state'], 99)"
      exporter_name: fulfillment_state_int
      exporter_desc: "Storage group fulfillment state as integer (0=complete, 1=pending, 2=pending-with-mismatches, 3=checking-migration, 4=incomplete, 99=unsupported value)"
      labels:
        - name: value
          value: "resource_obj.properties['fulfillment-state']"
    - property_name: shared
      exporter_name: shared
      exporter_desc: Boolean indicating whether the storage group is shared (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"
    - property_name: max-partitions
      if: "'max-partitions' in resource_obj.properties"  # Only for FCP-type storage groups
      exporter_name: max_partitions
      exporter_desc: Maximum number of partitions a storage group can be attached to

  storagevolume-resource:  # can be in dictionary or list format
    - properties_expression: "{'complete': 0, 'configuration-error': 1, 'deleting': 2, 'incomplete': 3, 'overprovisioned': 4, 'pending': 5, 'pending-with-mismatches': 6}.get(properties['fulfillment-state'], 99)"
      exporter_name: fulfillment_state_int
      exporter_desc: "Storage volume fulfillment state as integer (0=complete, 1=configuration-error, 2=deleting, 3=incomplete, 4=overprovisioned, 5=pending, 6=pending-with-mismatches, 99=unsupported value)"
      labels:
        - name: value
          value: "resource_obj.properties['fulfillment-state']"
    - properties_expression: "{'boot': 0, 'data': 1, 'not-applicable': 2}.get(properties.usage, 99)"
      exporter_name: usage_int
      exporter_desc: "Usage of volume as integer (0=boot, 1=data, 2=not-applicable, 99=unsupported value)"
      labels:
        - name: value
          value: "resource_obj.properties.usage"
    - property_name: size
      exporter_name: size_gib
      exporter_desc: "Size of volume in GiB (0 for ECKD alias volumes)"
    - property_name: cylinders
      if: "'cylinders' in resource_obj.properties"  # Only for FC-type storage groups
      exporter_name: cylinders
      exporter_desc: "Size of ECKD volume in cylinders (0 for ECKD alias volumes)"

  # Available for CPCs in any mode

  zcpc-environmentals-and-power:
    temperature-celsius:
      percent: false
      exporter_name: null  # Ignored (duplicate of ambient_temperature_celsius)
      exporter_desc: null
    humidity:
      percent: false
      exporter_name: humidity_percent
      exporter_desc: Relative humidity
    dew-point-celsius:
      percent: false
      exporter_name: dew_point_celsius
      exporter_desc: Dew point
    power-consumption-watts:
      percent: false
      exporter_name: null  # Ignored (duplicate of power_watt)
      exporter_desc: null
    heat-load:
      percent: false
      exporter_name: heat_load_total_btu_per_hour
      exporter_desc: Total heat load of the CPC
    heat-load-forced-air:
      percent: false
      exporter_name: heat_load_forced_air_btu_per_hour
      exporter_desc: Heat load of the CPC covered by forced-air
    heat-load-water:
      percent: false
      exporter_name: heat_load_water_btu_per_hour
      exporter_desc: Heat load of the CPC covered by water
    exhaust-temperature-celsius:
      percent: false
      exporter_name: exhaust_temperature_celsius
      exporter_desc: Exhaust temperature of the CPC
    total-partition-power-consumption-watts:
      if: "'environmental-metrics' in se_features"  # and only in classic mode (no need to put that into condition)
      percent: false
      exporter_name: total_partition_power_watt
      exporter_desc: Total power consumption of all partitions of the CPC (CPU, memory, I/O adapters)
    total-infrastructure-power-consumption-watts:
      if: "'environmental-metrics' in se_features"
      percent: false
      exporter_name: total_infrastructure_power_watt
      exporter_desc: Total power consumption of all infrastructure components of the CPC (TOR switches, SE/HMAs, PDUs)
    total-unassigned-power-consumption-watts:
      if: "'environmental-metrics' in se_features"
      percent: false
      exporter_name: total_unassigned_power_watt
      exporter_desc: Total power consumption of all unassigned components of the CPC (CPU, memory, I/O adapters)

  environmental-power-status:
    linecord-one-power-phase-A:
      percent: false
      exporter_name: power_cord1_phase_a_watt
      exporter_desc: Power in Phase A of line cord 1 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-one-name']"
        - name: cordid
          value: "1"
        - name: phase
          value: "'A'"
    linecord-one-power-phase-B:
      percent: false
      exporter_name: power_cord1_phase_b_watt
      exporter_desc: Power in Phase B of line cord 1 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-one-name']"
        - name: cordid
          value: "1"
        - name: phase
          value: "'B'"
    linecord-one-power-phase-C:
      percent: false
      exporter_name: power_cord1_phase_c_watt
      exporter_desc: Power in Phase C of line cord 1 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-one-name']"
        - name: cordid
          value: "1"
        - name: phase
          value: "'C'"
    linecord-one-name:
      exporter_name: null  # Ignored (used as a label)
      exporter_desc: null
    linecord-two-power-phase-A:
      percent: false
      exporter_name: power_cord2_phase_a_watt
      exporter_desc: Power in Phase A of line cord 2 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-two-name']"
        - name: cordid
          value: "2"
        - name: phase
          value: "'A'"
    linecord-two-power-phase-B:
      percent: false
      exporter_name: power_cord2_phase_b_watt
      exporter_desc: Power in Phase B of line cord 2 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-two-name']"
        - name: cordid
          value: "2"
        - name: phase
          value: "'B'"
    linecord-two-power-phase-C:
      percent: false
      exporter_name: power_cord2_phase_c_watt
      exporter_desc: Power in Phase C of line cord 2 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-two-name']"
        - name: cordid
          value: "2"
        - name: phase
          value: "'C'"
    linecord-two-name:
      exporter_name: null  # Ignored (used as a label)
      exporter_desc: null
    linecord-three-power-phase-A:
      percent: false
      exporter_name: power_cord3_phase_a_watt
      exporter_desc: Power in Phase A of line cord 3 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-three-name']"
        - name: cordid
          value: "3"
        - name: phase
          value: "'A'"
    linecord-three-power-phase-B:
      percent: false
      exporter_name: power_cord3_phase_b_watt
      exporter_desc: Power in Phase B of line cord 3 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-three-name']"
        - name: cordid
          value: "3"
        - name: phase
          value: "'B'"
    linecord-three-power-phase-C:
      percent: false
      exporter_name: power_cord3_phase_c_watt
      exporter_desc: Power in Phase C of line cord 3 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-three-name']"
        - name: cordid
          value: "3"
        - name: phase
          value: "'C'"
    linecord-three-name:
      exporter_name: null  # Ignored (used as a label)
      exporter_desc: null
    linecord-four-power-phase-A:
      percent: false
      exporter_name: power_cord4_phase_a_watt
      exporter_desc: Power in Phase A of line cord 4 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-four-name']"
        - name: cordid
          value: "4"
        - name: phase
          value: "'A'"
    linecord-four-power-phase-B:
      percent: false
      exporter_name: power_cord4_phase_b_watt
      exporter_desc: Power in Phase B of line cord 4 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-four-name']"
        - name: cordid
          value: "4"
        - name: phase
          value: "'B'"
    linecord-four-power-phase-C:
      percent: false
      exporter_name: power_cord4_phase_c_watt
      exporter_desc: Power in Phase C of line cord 4 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-four-name']"
        - name: cordid
          value: "4"
        - name: phase
          value: "'C'"
    linecord-four-name:
      exporter_name: null  # Ignored (used as a label)
      exporter_desc: null
    linecord-five-power-phase-A:
      percent: false
      exporter_name: power_cord5_phase_a_watt
      exporter_desc: Power in Phase A of line cord 5 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-five-name']"
        - name: cordid
          value: "5"
        - name: phase
          value: "'A'"
    linecord-five-power-phase-B:
      percent: false
      exporter_name: power_cord5_phase_b_watt
      exporter_desc: Power in Phase B of line cord 5 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-five-name']"
        - name: cordid
          value: "5"
        - name: phase
          value: "'B'"
    linecord-five-power-phase-C:
      percent: false
      exporter_name: power_cord5_phase_c_watt
      exporter_desc: Power in Phase C of line cord 5 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-five-name']"
        - name: cordid
          value: "5"
        - name: phase
          value: "'C'"
    linecord-five-name:
      exporter_name: null  # Ignored (used as a label)
      exporter_desc: null
    linecord-six-power-phase-A:
      percent: false
      exporter_name: power_cord6_phase_a_watt
      exporter_desc: Power in Phase A of line cord 6 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-six-name']"
        - name: cordid
          value: "6"
        - name: phase
          value: "'A'"
    linecord-six-power-phase-B:
      percent: false
      exporter_name: power_cord6_phase_b_watt
      exporter_desc: Power in Phase B of line cord 6 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-six-name']"
        - name: cordid
          value: "6"
        - name: phase
          value: "'B'"
    linecord-six-power-phase-C:
      percent: false
      exporter_name: power_cord6_phase_c_watt
      exporter_desc: Power in Phase C of line cord 6 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-six-name']"
        - name: cordid
          value: "6"
        - name: phase
          value: "'C'"
    linecord-six-name:
      exporter_name: null  # Ignored (used as a label)
      exporter_desc: null
    linecord-seven-power-phase-A:
      percent: false
      exporter_name: power_cord7_phase_a_watt
      exporter_desc: Power in Phase A of line cord 7 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-seven-name']"
        - name: cordid
          value: "7"
        - name: phase
          value: "'A'"
    linecord-seven-power-phase-B:
      percent: false
      exporter_name: power_cord7_phase_b_watt
      exporter_desc: Power in Phase B of line cord 7 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-seven-name']"
        - name: cordid
          value: "7"
        - name: phase
          value: "'B'"
    linecord-seven-power-phase-C:
      percent: false
      exporter_name: power_cord7_phase_c_watt
      exporter_desc: Power in Phase C of line cord 7 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-seven-name']"
        - name: cordid
          value: "7"
        - name: phase
          value: "'C'"
    linecord-seven-name:
      exporter_name: null  # Ignored (used as a label)
      exporter_desc: null
    linecord-eight-power-phase-A:
      percent: false
      exporter_name: power_cord8_phase_a_watt
      exporter_desc: Power in Phase A of line cord 8 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-eight-name']"
        - name: cordid
          value: "8"
        - name: phase
          value: "'A'"
    linecord-eight-power-phase-B:
      percent: false
      exporter_name: power_cord8_phase_b_watt
      exporter_desc: Power in Phase B of line cord 8 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-eight-name']"
        - name: cordid
          value: "8"
        - name: phase
          value: "'B'"
    linecord-eight-power-phase-C:
      percent: false
      exporter_name: power_cord8_phase_c_watt
      exporter_desc: Power in Phase C of line cord 8 - 0 if not available
      labels:
        - name: cord
          value: "metric_values['linecord-eight-name']"
        - name: cordid
          value: "8"
        - name: phase
          value: "'C'"
    linecord-eight-name:
      exporter_name: null  # Ignored (used as a label)
      exporter_desc: null

  zcpc-processor-usage:
    processor-name:
      # type: info
      percent: false
      exporter_name: null  # Ignored (used as label)
      exporter_desc: null
    processor-type:
      # type: info
      percent: false
      exporter_name: null  # Ignored (used as label, also included in processor-name)
      exporter_desc: null
    processor-usage:
      percent: true
      exporter_name: usage_ratio
      exporter_desc: Usage ratio of the processor
    smt-usage:
      percent: false
      exporter_name: smt_mode_percent
      exporter_desc: Percentage of time the processor was in SMT mode - -1 if not supported
    thread-0-usage:
      percent: true
      exporter_name: smt_thread0_usage_ratio
      exporter_desc: Usage ratio of thread 0 of the processor when in SMT mode - -1 if not supported
    thread-1-usage:
      percent: true
      exporter_name: smt_thread1_usage_ratio
      exporter_desc: Usage ratio of thread 1 of the processor when in SMT mode - -1 if not supported

  cpc-resource:  # can be in dictionary or list format
    - property_name: processor-count-general-purpose
      exporter_name: cp_processor_count
      exporter_desc: Number of active CP processors
    - property_name: processor-count-ifl
      exporter_name: ifl_processor_count
      exporter_desc: Number of active IFL processors
    - property_name: processor-count-icf
      exporter_name: icf_processor_count
      exporter_desc: Number of active ICF processors
    - property_name: processor-count-iip
      exporter_name: iip_processor_count
      exporter_desc: Number of active zIIP processors
    - property_name: processor-count-aap
      exporter_name: aap_processor_count
      exporter_desc: Number of active zAAP processors
    - property_name: processor-count-cbp
      if: "'processor-count-cbp' in resource_obj.properties"  # Between SE versions 2.14.0+MCLs and 2.15.0
      exporter_name: cbp_processor_count
      exporter_desc: Number of active CBP processors
    - property_name: processor-count-service-assist
      exporter_name: sap_processor_count
      exporter_desc: Number of active SAP processors
    - property_name: processor-count-defective
      exporter_name: defective_processor_count
      exporter_desc: Number of defective processors of all processor types
    - property_name: processor-count-spare
      exporter_name: spare_processor_count
      exporter_desc: Number of spare processors of all processor types
    - property_name: storage-total-installed
      if: "se_version>='2.13.1'"
      exporter_name: total_memory_mib
      exporter_desc: Total amount of installed memory, in MiB
    - property_name: storage-hardware-system-area
      if: "se_version>='2.13.1'"
      exporter_name: hsa_memory_mib
      exporter_desc: Amount of memory reserved for the base hardware system area (HSA), in MiB
    - property_name: storage-customer
      if: "se_version>='2.13.1'"
      exporter_name: partition_memory_mib
      exporter_desc: Amount of memory for use by partitions, in MiB
    - property_name: storage-customer-central
      if: "se_version>='2.13.1'"
      exporter_name: partition_central_memory_mib
      exporter_desc: Amount of memory allocated as central storage across the active partitions, in MiB
    - property_name: storage-customer-expanded
      if: "se_version>='2.13.1'"
      exporter_name: partition_expanded_memory_mib
      exporter_desc: Amount of memory allocated as expanded storage across the active partitions, in MiB
    - property_name: storage-customer-available
      if: "se_version>='2.13.1'"
      exporter_name: available_memory_mib
      exporter_desc: Amount of memory not allocated to active partitions, in MiB
    - property_name: storage-vfm-increment-size
      if: "se_version>='2.14.0'"
      exporter_name: vfm_increment_gib
      exporter_desc: Increment size of IBM Virtual Flash Memory (VFM), in GiB
    - property_name: storage-vfm-total
      if: "se_version>='2.14.0'"
      exporter_name: total_vfm_gib
      exporter_desc: Total amount of installed IBM Virtual Flash Memory (VFM), in GiB
    - properties_expression: "{'active': 0, 'operating': 0, 'degraded': 1, 'service-required': 2, 'service': 10, 'exceptions': 11, 'not-communicating': 12, 'status-check': 13, 'not-operating': 14, 'no-powerstatus': 15}.get(properties.status, 99)"
      exporter_name: status_int
      exporter_desc: "Status as integer (0=active/=operating, 1=degraded, 2=service-required, 10=service, 11=exceptions, 12=not-communicating, 13=status-check, 14=not-operating, 15=no-power, 99=unsupported value)"
      labels:
        - name: value
          value: "resource_obj.properties['status']"
    - property_name: has-unacceptable-status
      exporter_name: has_unacceptable_status
      exporter_desc: Boolean indicating whether the CPC has an unacceptable status (0=false, 1=true)
      labels:
        - name: valuetype
          value: "'bool'"

# Properties that need to be fetched because they can change but have no property change notification
fetch_properties:
  cpc:
    metric-groups:
      - cpc-resource
    properties:
      - property_name: processor-count-aap
      - property_name: processor-count-cbp
        if: "hmc_version >= (2,14) and hmc_version <= (2,15)"
      - property_name: processor-count-service-assist
      - property_name: processor-count-defective
      - property_name: processor-count-spare

      - property_name: storage-total-installed
        if: "hmc_version < (2,16)"
      - property_name: storage-hardware-system-area
      - property_name: storage-customer
      - property_name: storage-customer-central
      - property_name: storage-customer-expanded
      - property_name: storage-customer-available
      - property_name: storage-vfm-increment-size
      - property_name: storage-vfm-total

      - property_name: processor-count-general-purpose
        if: "hmc_version < (2,16)"
      - property_name: processor-count-ifl
        if: "hmc_version < (2,16)"
      - property_name: processor-count-icf
        if: "hmc_version < (2,16)"
      - property_name: processor-count-iip
        if: "hmc_version < (2,16)"

  logical-partition:
    metric-groups:
      - logical-partition-resource
    properties:
      - property_name: description
      - property_name: defined-capacity
      - property_name: workload-manager-enabled
        if: "hmc_version < (2,16)"
      - property_name: processor-usage
        if: "hmc_version < (2,16)"

      - property_name: number-general-purpose-processors
        if: "hmc_version >= (2,15)"  # Actually SE 2.15.0
      - property_name: number-reserved-general-purpose-processors
        if: "hmc_version >= (2,15)"  # Actually SE 2.15.0
      - property_name: absolute-processing-capping
        if: "hmc_version < (2,16)"
      - property_name: initial-processing-weight
        if: "hmc_version < (2,16)"
      - property_name: initial-processing-weight-capped
        if: "hmc_version < (2,16)"
      - property_name: minimum-processing-weight
        if: "hmc_version < (2,16)"
      - property_name: maximum-processing-weight
        if: "hmc_version < (2,16)"
      - property_name: current-processing-weight
        if: "hmc_version < (2,16)"
      - property_name: current-processing-weight-capped

      - property_name: number-ifl-processors
        if: "hmc_version >= (2,15)"  # Actually SE 2.15.0
      - property_name: number-reserved-ifl-processors
        if: "hmc_version >= (2,15)"  # Actually SE 2.15.0
      - property_name: absolute-ifl-capping'
        if: "hmc_version < (2,16)"
      - property_name: initial-ifl-processing-weight
        if: "hmc_version < (2,16)"
      - property_name: initial-ifl-processing-weight-capped
        if: "hmc_version < (2,16)"
      - property_name: minimum-ifl-processing-weight
        if: "hmc_version < (2,16)"
      - property_name: maximum-ifl-processing-weight
        if: "hmc_version < (2,16)"
      - property_name: current-ifl-processing-weight
        if: "hmc_version < (2,16)"
      - property_name: current-ifl-processing-weight-capped

      - property_name: number-icf-processors
        if: "hmc_version >= (2,15)"  # Actually SE 2.15.0
      - property_name: number-reserved-icf-processors
        if: "hmc_version >= (2,15)"  # Actually SE 2.15.0
      - property_name: absolute-cf-capping
        if: "hmc_version < (2,16)"
      - property_name: initial-cf-processing-weight
        if: "hmc_version < (2,16)"
      - property_name: initial-cf-processing-weight-capped
        if: "hmc_version < (2,16)"
      - property_name: minimum-cf-processing-weight
        if: "hmc_version < (2,16)"
      - property_name: maximum-cf-processing-weight
        if: "hmc_version < (2,16)"
      - property_name: current-cf-processing-weight
        if: "hmc_version < (2,16)"
      - property_name: current-cf-processing-weight-capped

      - property_name: number-ziip-processors
        if: "hmc_version >= (2,15)"  # Actually SE 2.15.0
      - property_name: number-reserved-ziip-processors
        if: "hmc_version >= (2,15)"  # Actually SE 2.15.0
      - property_name: absolute-ziip-capping
        if: "hmc_version < (2,16)"
      - property_name: initial-ziip-processing-weight
        if: "hmc_version < (2,16)"
      - property_name: minimum-ziip-processing-weight
        if: "hmc_version < (2,16)"
      - property_name: maximum-ziip-processing-weight
        if: "hmc_version < (2,16)"
      - property_name: current-ziip-processing-weight
        if: "hmc_version < (2,16)"
      - property_name: current-ziip-processing-weight-capped

      - property_name: absolute-aap-capping
      - property_name: initial-aap-processing-weight
      - property_name: initial-aap-processing-weight-capped
      - property_name: minimum-aap-processing-weight
      - property_name: maximum-aap-processing-weight
      - property_name: current-aap-processing-weight
      - property_name: current-aap-processing-weight-capped

      - property_name: absolute-cbp-capping
        if: "hmc_version >= (2,14) and hmc_version <= (2,15)"
      - property_name: initial-cbp-processing-weight
        if: "hmc_version >= (2,14) and hmc_version <= (2,15)"
      - property_name: initial-cbp-processing-weight-capped
        if: "hmc_version >= (2,14) and hmc_version <= (2,15)"
      - property_name: minimum-cbp-processing-weight
        if: "hmc_version >= (2,14) and hmc_version <= (2,15)"
      - property_name: maximum-cbp-processing-weight
        if: "hmc_version >= (2,14) and hmc_version <= (2,15)"
      - property_name: current-cbp-processing-weight
        if: "hmc_version >= (2,14) and hmc_version <= (2,15)"
      - property_name: current-cbp-processing-weight-capped
        if: "hmc_version >= (2,14) and hmc_version <= (2,15)"

      - property_name: storage-central-allocation
      - property_name: storage-expanded-allocation

      - property_name: initial-vfm-storage
      - property_name: maximum-vfm-storage
      - property_name: current-vfm-storage

2.16. Sample output to Prometheus

The following is sample output of the exporter to Prometheus. It is from a z14 system in DPM mode and was created with an extra label pod=wdc04-05, and with all metric groups enabled. The data has been reduced to show only three example partitions (but all adapters and processors):

# HELP zhmc_adapter_usage_ratio Usage ratio of the adapter
# TYPE zhmc_adapter_usage_ratio gauge
zhmc_adapter_usage_ratio{adapter="FCP 0130 Z01B-17",cpc="P0000A28"} 0.0
zhmc_adapter_usage_ratio{adapter="FICON 0108 Z01B-04",cpc="P0000A28"} 0.0
zhmc_adapter_usage_ratio{adapter="OSD 0134 Z01B-18",cpc="P0000A28"} 0.0
zhmc_adapter_usage_ratio{adapter="FICON 0140 Z09B-02",cpc="P0000A28"} 0.0
zhmc_adapter_usage_ratio{adapter="FCP 0178 Z09B-19",cpc="P0000A28"} 0.01
zhmc_adapter_usage_ratio{adapter="FICON 0109 Z01B-04",cpc="P0000A28"} 0.0
zhmc_adapter_usage_ratio{adapter="FCP 0179 Z09B-19",cpc="P0000A28"} 0.01
zhmc_adapter_usage_ratio{adapter="FICON 0141 Z09B-02",cpc="P0000A28"} 0.0
zhmc_adapter_usage_ratio{adapter="OSD 0120 Z01B-12",cpc="P0000A28"} 0.0
zhmc_adapter_usage_ratio{adapter="FCP 0131 Z01B-17",cpc="P0000A28"} 0.0
zhmc_adapter_usage_ratio{adapter="FCP 0160 Z09B-12",cpc="P0000A28"} 0.01
zhmc_adapter_usage_ratio{adapter="FCP 0161 Z09B-12",cpc="P0000A28"} 0.01
# HELP zhmc_processor_usage_ratio Usage ratio of the processor
# TYPE zhmc_processor_usage_ratio gauge
zhmc_processor_usage_ratio{cpc="P0000A28",processor="IFP000",type="ifp"} 0.05
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP004",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP008",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP010",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP018",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP01C",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="IFP020",type="ifp"} 0.02
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP028",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP02C",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP034",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP038",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP03C",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP040",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP044",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP048",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP050",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP058",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP05C",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP064",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP06C",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP074",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP078",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP07C",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP084",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP088",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP090",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP098",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP09C",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP0A4",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP0A8",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP0AC",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP0B4",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP0BC",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP0C4",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP0C8",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP0D0",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP0D8",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP0DC",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP0E4",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP0E8",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="CP0EC",type="cp"} 0.0
zhmc_processor_usage_ratio{cpc="P0000A28",processor="SAP00",type="sap"} 0.01
zhmc_processor_usage_ratio{cpc="P0000A28",processor="SAP01",type="sap"} 0.01
zhmc_processor_usage_ratio{cpc="P0000A28",processor="SAP02",type="sap"} 0.01
zhmc_processor_usage_ratio{cpc="P0000A28",processor="SAP03",type="sap"} 0.01
zhmc_processor_usage_ratio{cpc="P0000A28",processor="SAP04",type="sap"} 0.01
zhmc_processor_usage_ratio{cpc="P0000A28",processor="SAP05",type="sap"} 0.01
zhmc_processor_usage_ratio{cpc="P0000A28",processor="SAP06",type="sap"} 0.01
zhmc_processor_usage_ratio{cpc="P0000A28",processor="SAP07",type="sap"} 0.01
zhmc_processor_usage_ratio{cpc="P0000A28",processor="SAP08",type="sap"} 0.01
zhmc_processor_usage_ratio{cpc="P0000A28",processor="SAP09",type="sap"} 0.01
# HELP zhmc_processor_smt_mode_percent Percentage of time the processor was in SMT mode - -1 if not supported
# TYPE zhmc_processor_smt_mode_percent gauge
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="IFP000",type="ifp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP004",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP008",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP010",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP018",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP01C",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="IFP020",type="ifp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP028",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP02C",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP034",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP038",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP03C",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP040",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP044",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP048",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP050",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP058",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP05C",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP064",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP06C",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP074",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP078",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP07C",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP084",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP088",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP090",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP098",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP09C",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP0A4",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP0A8",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP0AC",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP0B4",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP0BC",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP0C4",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP0C8",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP0D0",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP0D8",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP0DC",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP0E4",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP0E8",type="cp"} 0.0
zhmc_processor_smt_mode_percent{cpc="P0000A28",processor="CP0EC",type="cp"} 0.0
# HELP zhmc_processor_smt_thread0_usage_ratio Usage ratio of thread 0 of the processor when in SMT mode - -1 if not supported
# TYPE zhmc_processor_smt_thread0_usage_ratio gauge
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="IFP000",type="ifp"} 0.04
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP004",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP008",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP010",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP018",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP01C",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="IFP020",type="ifp"} 0.01
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP028",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP02C",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP034",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP038",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP03C",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP040",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP044",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP048",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP050",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP058",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP05C",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP064",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP06C",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP074",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP078",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP07C",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP084",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP088",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP090",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP098",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP09C",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP0A4",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP0A8",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP0AC",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP0B4",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP0BC",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP0C4",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP0C8",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP0D0",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP0D8",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP0DC",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP0E4",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP0E8",type="cp"} 0.0
zhmc_processor_smt_thread0_usage_ratio{cpc="P0000A28",processor="CP0EC",type="cp"} 0.0
# HELP zhmc_processor_smt_thread1_usage_ratio Usage ratio of thread 1 of the processor when in SMT mode - -1 if not supported
# TYPE zhmc_processor_smt_thread1_usage_ratio gauge
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="IFP000",type="ifp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP004",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP008",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP010",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP018",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP01C",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="IFP020",type="ifp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP028",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP02C",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP034",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP038",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP03C",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP040",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP044",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP048",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP050",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP058",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP05C",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP064",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP06C",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP074",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP078",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP07C",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP084",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP088",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP090",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP098",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP09C",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP0A4",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP0A8",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP0AC",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP0B4",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP0BC",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP0C4",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP0C8",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP0D0",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP0D8",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP0DC",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP0E4",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP0E8",type="cp"} 0.0
zhmc_processor_smt_thread1_usage_ratio{cpc="P0000A28",processor="CP0EC",type="cp"} 0.0
# HELP zhmc_cpc_processor_usage_ratio Usage ratio across all processors of the CPC
# TYPE zhmc_cpc_processor_usage_ratio gauge
zhmc_cpc_processor_usage_ratio{cpc="P0000A28"} 0.0
# HELP zhmc_cpc_network_adapter_usage_ratio Usage ratio across all network adapters of the CPC
# TYPE zhmc_cpc_network_adapter_usage_ratio gauge
zhmc_cpc_network_adapter_usage_ratio{cpc="P0000A28"} 0.0
# HELP zhmc_cpc_storage_adapter_usage_ratio Usage ratio across all storage adapters of the CPC
# TYPE zhmc_cpc_storage_adapter_usage_ratio gauge
zhmc_cpc_storage_adapter_usage_ratio{cpc="P0000A28"} 0.0
# HELP zhmc_cpc_accelerator_adapter_usage_ratio Usage ratio across all accelerator adapters of the CPC
# TYPE zhmc_cpc_accelerator_adapter_usage_ratio gauge
zhmc_cpc_accelerator_adapter_usage_ratio{cpc="P0000A28"} 0.0
# HELP zhmc_cpc_crypto_adapter_usage_ratio Usage ratio across all crypto adapters of the CPC
# TYPE zhmc_cpc_crypto_adapter_usage_ratio gauge
zhmc_cpc_crypto_adapter_usage_ratio{cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_watts Power consumption of the CPC
# TYPE zhmc_cpc_power_watts gauge
zhmc_cpc_power_watts{cpc="P0000A28"} 6081.0
# HELP zhmc_cpc_ambient_temperature_celsius Ambient temperature of the CPC
# TYPE zhmc_cpc_ambient_temperature_celsius gauge
zhmc_cpc_ambient_temperature_celsius{cpc="P0000A28"} 17.9
# HELP zhmc_cpc_cp_shared_processor_usage_ratio Usage ratio across all shared CP processors of the CPC
# TYPE zhmc_cpc_cp_shared_processor_usage_ratio gauge
zhmc_cpc_cp_shared_processor_usage_ratio{cpc="P0000A28"} 0.0
# HELP zhmc_cpc_cp_processor_usage_ratio Usage ratio across all CP processors of the CPC
# TYPE zhmc_cpc_cp_processor_usage_ratio gauge
zhmc_cpc_cp_processor_usage_ratio{cpc="P0000A28"} 0.0
# HELP zhmc_cpc_shared_processor_usage_ratio Usage ratio across all shared processors of the CPC
# TYPE zhmc_cpc_shared_processor_usage_ratio gauge
zhmc_cpc_shared_processor_usage_ratio{cpc="P0000A28"} 0.02
# HELP zhmc_cpc_humidity_percent Relative humidity
# TYPE zhmc_cpc_humidity_percent gauge
zhmc_cpc_humidity_percent{cpc="P0000A28"} 38.0
# HELP zhmc_cpc_dew_point_celsius Dew point
# TYPE zhmc_cpc_dew_point_celsius gauge
zhmc_cpc_dew_point_celsius{cpc="P0000A28"} 7.5
# HELP zhmc_cpc_heat_load_total_btu_per_hour Total heat load of the CPC
# TYPE zhmc_cpc_heat_load_total_btu_per_hour gauge
zhmc_cpc_heat_load_total_btu_per_hour{cpc="P0000A28"} 20927.0
# HELP zhmc_cpc_heat_load_forced_air_btu_per_hour Heat load of the CPC covered by forced-air
# TYPE zhmc_cpc_heat_load_forced_air_btu_per_hour gauge
zhmc_cpc_heat_load_forced_air_btu_per_hour{cpc="P0000A28"} 20927.0
# HELP zhmc_cpc_heat_load_water_btu_per_hour Heat load of the CPC covered by water
# TYPE zhmc_cpc_heat_load_water_btu_per_hour gauge
zhmc_cpc_heat_load_water_btu_per_hour{cpc="P0000A28"} 0.0
# HELP zhmc_cpc_exhaust_temperature_celsius Exhaust temperature of the CPC
# TYPE zhmc_cpc_exhaust_temperature_celsius gauge
zhmc_cpc_exhaust_temperature_celsius{cpc="P0000A28"} 23.0
# HELP zhmc_cpc_power_cord1_phase_a_watts Power in Phase A of line cord 1 - 0 if not available
# TYPE zhmc_cpc_power_cord1_phase_a_watts gauge
zhmc_cpc_power_cord1_phase_a_watts{cord="A35B-BPE1-J01",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord1_phase_b_watts Power in Phase B of line cord 1 - 0 if not available
# TYPE zhmc_cpc_power_cord1_phase_b_watts gauge
zhmc_cpc_power_cord1_phase_b_watts{cord="A35B-BPE1-J01",cpc="P0000A28"} 1505.0
# HELP zhmc_cpc_power_cord1_phase_c_watts Power in Phase C of line cord 1 - 0 if not available
# TYPE zhmc_cpc_power_cord1_phase_c_watts gauge
zhmc_cpc_power_cord1_phase_c_watts{cord="A35B-BPE1-J01",cpc="P0000A28"} 1520.0
# HELP zhmc_cpc_power_cord2_phase_a_watts Power in Phase A of line cord 2 - 0 if not available
# TYPE zhmc_cpc_power_cord2_phase_a_watts gauge
zhmc_cpc_power_cord2_phase_a_watts{cord="A27B-BPE1-J01",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord2_phase_b_watts Power in Phase B of line cord 2 - 0 if not available
# TYPE zhmc_cpc_power_cord2_phase_b_watts gauge
zhmc_cpc_power_cord2_phase_b_watts{cord="A27B-BPE1-J01",cpc="P0000A28"} 1541.0
# HELP zhmc_cpc_power_cord2_phase_c_watts Power in Phase C of line cord 2 - 0 if not available
# TYPE zhmc_cpc_power_cord2_phase_c_watts gauge
zhmc_cpc_power_cord2_phase_c_watts{cord="A27B-BPE1-J01",cpc="P0000A28"} 1545.0
# HELP zhmc_cpc_power_cord3_phase_a_watts Power in Phase A of line cord 3 - 0 if not available
# TYPE zhmc_cpc_power_cord3_phase_a_watts gauge
zhmc_cpc_power_cord3_phase_a_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord3_phase_b_watts Power in Phase B of line cord 3 - 0 if not available
# TYPE zhmc_cpc_power_cord3_phase_b_watts gauge
zhmc_cpc_power_cord3_phase_b_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord3_phase_c_watts Power in Phase C of line cord 3 - 0 if not available
# TYPE zhmc_cpc_power_cord3_phase_c_watts gauge
zhmc_cpc_power_cord3_phase_c_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord4_phase_a_watts Power in Phase A of line cord 4 - 0 if not available
# TYPE zhmc_cpc_power_cord4_phase_a_watts gauge
zhmc_cpc_power_cord4_phase_a_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord4_phase_b_watts Power in Phase B of line cord 4 - 0 if not available
# TYPE zhmc_cpc_power_cord4_phase_b_watts gauge
zhmc_cpc_power_cord4_phase_b_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord4_phase_c_watts Power in Phase C of line cord 4 - 0 if not available
# TYPE zhmc_cpc_power_cord4_phase_c_watts gauge
zhmc_cpc_power_cord4_phase_c_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord5_phase_a_watts Power in Phase A of line cord 5 - 0 if not available
# TYPE zhmc_cpc_power_cord5_phase_a_watts gauge
zhmc_cpc_power_cord5_phase_a_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord5_phase_b_watts Power in Phase B of line cord 5 - 0 if not available
# TYPE zhmc_cpc_power_cord5_phase_b_watts gauge
zhmc_cpc_power_cord5_phase_b_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord5_phase_c_watts Power in Phase C of line cord 5 - 0 if not available
# TYPE zhmc_cpc_power_cord5_phase_c_watts gauge
zhmc_cpc_power_cord5_phase_c_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord6_phase_a_watts Power in Phase A of line cord 6 - 0 if not available
# TYPE zhmc_cpc_power_cord6_phase_a_watts gauge
zhmc_cpc_power_cord6_phase_a_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord6_phase_b_watts Power in Phase B of line cord 6 - 0 if not available
# TYPE zhmc_cpc_power_cord6_phase_b_watts gauge
zhmc_cpc_power_cord6_phase_b_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord6_phase_c_watts Power in Phase C of line cord 6 - 0 if not available
# TYPE zhmc_cpc_power_cord6_phase_c_watts gauge
zhmc_cpc_power_cord6_phase_c_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord7_phase_a_watts Power in Phase A of line cord 7 - 0 if not available
# TYPE zhmc_cpc_power_cord7_phase_a_watts gauge
zhmc_cpc_power_cord7_phase_a_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord7_phase_b_watts Power in Phase B of line cord 7 - 0 if not available
# TYPE zhmc_cpc_power_cord7_phase_b_watts gauge
zhmc_cpc_power_cord7_phase_b_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord7_phase_c_watts Power in Phase C of line cord 7 - 0 if not available
# TYPE zhmc_cpc_power_cord7_phase_c_watts gauge
zhmc_cpc_power_cord7_phase_c_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord8_phase_a_watts Power in Phase A of line cord 8 - 0 if not available
# TYPE zhmc_cpc_power_cord8_phase_a_watts gauge
zhmc_cpc_power_cord8_phase_a_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord8_phase_b_watts Power in Phase B of line cord 8 - 0 if not available
# TYPE zhmc_cpc_power_cord8_phase_b_watts gauge
zhmc_cpc_power_cord8_phase_b_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_cpc_power_cord8_phase_c_watts Power in Phase C of line cord 8 - 0 if not available
# TYPE zhmc_cpc_power_cord8_phase_c_watts gauge
zhmc_cpc_power_cord8_phase_c_watts{cord="not-connected",cpc="P0000A28"} 0.0
# HELP zhmc_port_bytes_sent_count_total Number of Bytes in unicast packets that were sent
# TYPE zhmc_port_bytes_sent_count_total counter
zhmc_port_bytes_sent_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="0"} 1.058386e+06
zhmc_port_bytes_sent_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="1"} 0.0
zhmc_port_bytes_sent_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="0"} 1.058386e+06
zhmc_port_bytes_sent_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="1"} 0.0
# HELP zhmc_port_bytes_received_count_total Number of Bytes in unicast packets that were received
# TYPE zhmc_port_bytes_received_count_total counter
zhmc_port_bytes_received_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="0"} 8.0673178e+07
zhmc_port_bytes_received_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="1"} 0.0
zhmc_port_bytes_received_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="0"} 8.067226e+07
zhmc_port_bytes_received_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="1"} 0.0
# HELP zhmc_port_packets_sent_count_total Number of unicast packets that were sent
# TYPE zhmc_port_packets_sent_count_total counter
zhmc_port_packets_sent_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="0"} 6054.0
zhmc_port_packets_sent_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="1"} 0.0
zhmc_port_packets_sent_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="0"} 6054.0
zhmc_port_packets_sent_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="1"} 0.0
# HELP zhmc_port_packets_received_count_total Number of unicast packets that were received
# TYPE zhmc_port_packets_received_count_total counter
zhmc_port_packets_received_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="0"} 1.084752e+06
zhmc_port_packets_received_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="1"} 0.0
zhmc_port_packets_received_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="0"} 1.084738e+06
zhmc_port_packets_received_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="1"} 0.0
# HELP zhmc_port_packets_sent_dropped_count_total Number of sent packets that were dropped (resource shortage)
# TYPE zhmc_port_packets_sent_dropped_count_total counter
zhmc_port_packets_sent_dropped_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="0"} 0.0
zhmc_port_packets_sent_dropped_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="1"} 0.0
zhmc_port_packets_sent_dropped_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="0"} 0.0
zhmc_port_packets_sent_dropped_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="1"} 0.0
# HELP zhmc_port_packets_received_dropped_count_total Number of received packets that were dropped (resource shortage)
# TYPE zhmc_port_packets_received_dropped_count_total counter
zhmc_port_packets_received_dropped_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="0"} 0.0
zhmc_port_packets_received_dropped_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="1"} 0.0
zhmc_port_packets_received_dropped_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="0"} 0.0
zhmc_port_packets_received_dropped_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="1"} 0.0
# HELP zhmc_port_packets_sent_discarded_count_total Number of sent packets that were discarded (malformed)
# TYPE zhmc_port_packets_sent_discarded_count_total counter
zhmc_port_packets_sent_discarded_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="0"} 0.0
zhmc_port_packets_sent_discarded_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="1"} 0.0
zhmc_port_packets_sent_discarded_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="0"} 0.0
zhmc_port_packets_sent_discarded_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="1"} 0.0
# HELP zhmc_port_packets_received_discarded_count_total Number of received packets that were discarded (malformed)
# TYPE zhmc_port_packets_received_discarded_count_total counter
zhmc_port_packets_received_discarded_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="0"} 0.0
zhmc_port_packets_received_discarded_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="1"} 0.0
zhmc_port_packets_received_discarded_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="0"} 0.0
zhmc_port_packets_received_discarded_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="1"} 0.0
# HELP zhmc_port_multicast_packets_sent_count_total Number of multicast packets sent
# TYPE zhmc_port_multicast_packets_sent_count_total counter
zhmc_port_multicast_packets_sent_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="0"} 6046.0
zhmc_port_multicast_packets_sent_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="1"} 0.0
zhmc_port_multicast_packets_sent_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="0"} 6046.0
zhmc_port_multicast_packets_sent_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="1"} 0.0
# HELP zhmc_port_multicast_packets_received_count_total Number of multicast packets received
# TYPE zhmc_port_multicast_packets_received_count_total counter
zhmc_port_multicast_packets_received_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="0"} 0.0
zhmc_port_multicast_packets_received_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="1"} 0.0
zhmc_port_multicast_packets_received_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="0"} 0.0
zhmc_port_multicast_packets_received_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="1"} 0.0
# HELP zhmc_port_broadcast_packets_sent_count_total Number of broadcast packets sent
# TYPE zhmc_port_broadcast_packets_sent_count_total counter
zhmc_port_broadcast_packets_sent_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="0"} 0.0
zhmc_port_broadcast_packets_sent_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="1"} 0.0
zhmc_port_broadcast_packets_sent_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="0"} 0.0
zhmc_port_broadcast_packets_sent_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="1"} 0.0
# HELP zhmc_port_broadcast_packets_received_count_total Number of broadcast packets received
# TYPE zhmc_port_broadcast_packets_received_count_total counter
zhmc_port_broadcast_packets_received_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="0"} 1.084752e+06
zhmc_port_broadcast_packets_received_count_total{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="1"} 0.0
zhmc_port_broadcast_packets_received_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="0"} 1.084738e+06
zhmc_port_broadcast_packets_received_count_total{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="1"} 0.0
# HELP zhmc_port_data_sent_bytes Amount of data sent over the collection interval
# TYPE zhmc_port_data_sent_bytes gauge
zhmc_port_data_sent_bytes{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="0"} 175.0
zhmc_port_data_sent_bytes{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="1"} 0.0
zhmc_port_data_sent_bytes{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="0"} 175.0
zhmc_port_data_sent_bytes{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="1"} 0.0
# HELP zhmc_port_data_received_bytes Amount of data received over the collection interval
# TYPE zhmc_port_data_received_bytes gauge
zhmc_port_data_received_bytes{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="0"} 10150.0
zhmc_port_data_received_bytes{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="1"} 0.0
zhmc_port_data_received_bytes{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="0"} 10086.0
zhmc_port_data_received_bytes{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="1"} 0.0
# HELP zhmc_port_data_rate_sent_bytes_per_second Data rate sent over the collection interval
# TYPE zhmc_port_data_rate_sent_bytes_per_second gauge
zhmc_port_data_rate_sent_bytes_per_second{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="0"} 5.0
zhmc_port_data_rate_sent_bytes_per_second{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="1"} 0.0
zhmc_port_data_rate_sent_bytes_per_second{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="0"} 5.0
zhmc_port_data_rate_sent_bytes_per_second{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="1"} 0.0
# HELP zhmc_port_data_rate_received_bytes_per_second Data rate received over the collection interval
# TYPE zhmc_port_data_rate_received_bytes_per_second gauge
zhmc_port_data_rate_received_bytes_per_second{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="0"} 338.0
zhmc_port_data_rate_received_bytes_per_second{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="1"} 0.0
zhmc_port_data_rate_received_bytes_per_second{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="0"} 336.0
zhmc_port_data_rate_received_bytes_per_second{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="1"} 0.0
# HELP zhmc_port_bandwidth_usage_ratio Bandwidth usage ratio of the port
# TYPE zhmc_port_bandwidth_usage_ratio gauge
zhmc_port_bandwidth_usage_ratio{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="0"} 0.0
zhmc_port_bandwidth_usage_ratio{adapter="OSD 0134 Z01B-18",cpc="P0000A28",port="1"} 0.0
zhmc_port_bandwidth_usage_ratio{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="0"} 0.0
zhmc_port_bandwidth_usage_ratio{adapter="OSD 0120 Z01B-12",cpc="P0000A28",port="1"} 0.0
# HELP zhmc_partition_processor_mode_int Allocation mode for processors to the active partition as an integer (0=shared, 1=dedicated)
# TYPE zhmc_partition_processor_mode_int gauge
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="Storage Test"} 0.0
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="Crypto-1"} 0.0
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="tobiTest"} 0.0
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="JayNVMe"} 0.0
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="Crypto-2"} 0.0
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="Boot-from-None"} 0.0
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="Nan Boot test"} 0.0
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="JayLpar2"} 0.0
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="Sample-Test"} 0.0
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="boot-test-FICON"} 0.0
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="Boot-from-FICON"} 0.0
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="JayLpar5"} 0.0
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="SFTP"} 0.0
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="Test_01"} 0.0
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="KathirTest"} 0.0
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="Test_02"} 0.0
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="JayLpar4"} 0.0
zhmc_partition_processor_mode_int{cpc="P0000A28",partition="JayLpar"} 0.0
# HELP zhmc_partition_threads_per_processor_ratio Number of threads per allocated processor the operating system running in the partition is configured to use
# TYPE zhmc_partition_threads_per_processor_ratio gauge
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="Storage Test"} 1.0
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="Crypto-1"} 1.0
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="tobiTest"} 1.0
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="JayNVMe"} 1.0
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="Crypto-2"} 1.0
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="Boot-from-None"} 1.0
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="Nan Boot test"} 1.0
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="JayLpar2"} 1.0
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="Sample-Test"} 1.0
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="boot-test-FICON"} 1.0
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="Boot-from-FICON"} 1.0
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="JayLpar5"} 1.0
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="SFTP"} 1.0
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="Test_01"} 1.0
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="KathirTest"} 1.0
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="Test_02"} 1.0
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="JayLpar4"} 1.0
zhmc_partition_threads_per_processor_ratio{cpc="P0000A28",partition="JayLpar"} 1.0
# HELP zhmc_partition_cp_processor_count Number of CP processors allocated to the active partition
# TYPE zhmc_partition_cp_processor_count gauge
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="Storage Test"} 1.0
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="Crypto-1"} 1.0
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="tobiTest"} 1.0
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="JayNVMe"} 1.0
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="Crypto-2"} 1.0
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="Boot-from-None"} 1.0
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="Nan Boot test"} 1.0
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="JayLpar2"} 1.0
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="Sample-Test"} 1.0
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="boot-test-FICON"} 1.0
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="Boot-from-FICON"} 1.0
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="JayLpar5"} 1.0
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="SFTP"} 1.0
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="Test_01"} 1.0
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="KathirTest"} 1.0
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="Test_02"} 1.0
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="JayLpar4"} 1.0
zhmc_partition_cp_processor_count{cpc="P0000A28",partition="JayLpar"} 1.0
# HELP zhmc_partition_cp_initial_processing_weight Initial CP processing weight for the active partition in shared mode (1..999)
# TYPE zhmc_partition_cp_initial_processing_weight gauge
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="Storage Test"} 100.0
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="Crypto-1"} 100.0
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="tobiTest"} 100.0
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="JayNVMe"} 100.0
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="Crypto-2"} 100.0
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="Boot-from-None"} 100.0
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="Nan Boot test"} 100.0
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="JayLpar2"} 100.0
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="Sample-Test"} 100.0
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="boot-test-FICON"} 100.0
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="Boot-from-FICON"} 100.0
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="JayLpar5"} 100.0
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="SFTP"} 100.0
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="Test_01"} 100.0
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="KathirTest"} 100.0
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="Test_02"} 100.0
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="JayLpar4"} 100.0
zhmc_partition_cp_initial_processing_weight{cpc="P0000A28",partition="JayLpar"} 100.0
# HELP zhmc_partition_cp_minimum_processing_weight Minimum CP processing weight for the active partition in shared mode (1..999)
# TYPE zhmc_partition_cp_minimum_processing_weight gauge
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="Storage Test"} 1.0
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="Crypto-1"} 1.0
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="tobiTest"} 1.0
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="JayNVMe"} 1.0
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="Crypto-2"} 1.0
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="Boot-from-None"} 1.0
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="Nan Boot test"} 1.0
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="JayLpar2"} 1.0
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="Sample-Test"} 1.0
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="boot-test-FICON"} 1.0
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="Boot-from-FICON"} 1.0
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="JayLpar5"} 1.0
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="SFTP"} 1.0
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="Test_01"} 1.0
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="KathirTest"} 1.0
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="Test_02"} 1.0
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="JayLpar4"} 1.0
zhmc_partition_cp_minimum_processing_weight{cpc="P0000A28",partition="JayLpar"} 1.0
# HELP zhmc_partition_cp_maximum_processing_weight Maximum CP processing weight for the active partition in shared mode (1..999)
# TYPE zhmc_partition_cp_maximum_processing_weight gauge
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="Storage Test"} 999.0
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="Crypto-1"} 999.0
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="tobiTest"} 999.0
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="JayNVMe"} 999.0
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="Crypto-2"} 999.0
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="Boot-from-None"} 999.0
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="Nan Boot test"} 999.0
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="JayLpar2"} 999.0
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="Sample-Test"} 999.0
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="boot-test-FICON"} 999.0
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="Boot-from-FICON"} 999.0
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="JayLpar5"} 999.0
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="SFTP"} 999.0
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="Test_01"} 999.0
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="KathirTest"} 999.0
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="Test_02"} 999.0
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="JayLpar4"} 999.0
zhmc_partition_cp_maximum_processing_weight{cpc="P0000A28",partition="JayLpar"} 999.0
# HELP zhmc_partition_cp_current_processing_weight Current CP processing weight for the active partition in shared mode (1..999)
# TYPE zhmc_partition_cp_current_processing_weight gauge
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="Storage Test"} 1.0
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="Crypto-1"} 1.0
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="tobiTest"} 1.0
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="JayNVMe"} 1.0
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="Crypto-2"} 1.0
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="Boot-from-None"} 1.0
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="Nan Boot test"} 1.0
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="JayLpar2"} 1.0
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="Sample-Test"} 1.0
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="boot-test-FICON"} 1.0
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="Boot-from-FICON"} 1.0
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="JayLpar5"} 1.0
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="SFTP"} 1.0
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="Test_01"} 1.0
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="KathirTest"} 1.0
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="Test_02"} 1.0
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="JayLpar4"} 1.0
zhmc_partition_cp_current_processing_weight{cpc="P0000A28",partition="JayLpar"} 1.0
# HELP zhmc_partition_cp_processor_count_is_capped Boolean indicating whether absolute capping is enabled for CP processors (0=false, 1=true)
# TYPE zhmc_partition_cp_processor_count_is_capped gauge
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="Storage Test",valuetype="bool"} 0.0
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="Crypto-1",valuetype="bool"} 0.0
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="tobiTest",valuetype="bool"} 0.0
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="JayNVMe",valuetype="bool"} 0.0
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="Crypto-2",valuetype="bool"} 0.0
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="Boot-from-None",valuetype="bool"} 0.0
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="Nan Boot test",valuetype="bool"} 0.0
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="JayLpar2",valuetype="bool"} 0.0
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="Sample-Test",valuetype="bool"} 0.0
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="boot-test-FICON",valuetype="bool"} 0.0
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="Boot-from-FICON",valuetype="bool"} 0.0
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="JayLpar5",valuetype="bool"} 0.0
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="SFTP",valuetype="bool"} 0.0
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="Test_01",valuetype="bool"} 0.0
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="KathirTest",valuetype="bool"} 0.0
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="Test_02",valuetype="bool"} 0.0
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="JayLpar4",valuetype="bool"} 0.0
zhmc_partition_cp_processor_count_is_capped{cpc="P0000A28",partition="JayLpar",valuetype="bool"} 0.0
# HELP zhmc_partition_cp_processor_count_cap Maximum number of CP processors that can be used if absolute capping is enabled, else 0
# TYPE zhmc_partition_cp_processor_count_cap gauge
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="Storage Test"} 0.0
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="Crypto-1"} 0.0
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="tobiTest"} 0.0
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="JayNVMe"} 0.0
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="Crypto-2"} 0.0
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="Boot-from-None"} 0.0
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="Nan Boot test"} 0.0
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="JayLpar2"} 0.0
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="Sample-Test"} 0.0
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="boot-test-FICON"} 0.0
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="Boot-from-FICON"} 0.0
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="JayLpar5"} 0.0
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="SFTP"} 0.0
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="Test_01"} 0.0
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="KathirTest"} 0.0
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="Test_02"} 0.0
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="JayLpar4"} 0.0
zhmc_partition_cp_processor_count_cap{cpc="P0000A28",partition="JayLpar"} 0.0
# HELP zhmc_partition_cp_initial_processing_weight_is_capped Boolean indicating whether the initial CP processing weight is capped (0=false, 1=true)
# TYPE zhmc_partition_cp_initial_processing_weight_is_capped gauge
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="Storage Test",valuetype="bool"} 0.0
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="Crypto-1",valuetype="bool"} 0.0
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="tobiTest",valuetype="bool"} 0.0
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="JayNVMe",valuetype="bool"} 0.0
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="Crypto-2",valuetype="bool"} 0.0
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="Boot-from-None",valuetype="bool"} 0.0
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="Nan Boot test",valuetype="bool"} 0.0
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="JayLpar2",valuetype="bool"} 0.0
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="Sample-Test",valuetype="bool"} 0.0
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="boot-test-FICON",valuetype="bool"} 0.0
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="Boot-from-FICON",valuetype="bool"} 0.0
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="JayLpar5",valuetype="bool"} 0.0
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="SFTP",valuetype="bool"} 0.0
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="Test_01",valuetype="bool"} 0.0
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="KathirTest",valuetype="bool"} 0.0
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="Test_02",valuetype="bool"} 0.0
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="JayLpar4",valuetype="bool"} 0.0
zhmc_partition_cp_initial_processing_weight_is_capped{cpc="P0000A28",partition="JayLpar",valuetype="bool"} 0.0
# HELP zhmc_partition_ifl_processor_count Number of IFL processors allocated to the active partition
# TYPE zhmc_partition_ifl_processor_count gauge
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="Storage Test"} 0.0
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="Crypto-1"} 0.0
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="tobiTest"} 0.0
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="JayNVMe"} 0.0
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="Crypto-2"} 0.0
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="Boot-from-None"} 0.0
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="Nan Boot test"} 0.0
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="JayLpar2"} 0.0
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="Sample-Test"} 0.0
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="boot-test-FICON"} 0.0
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="Boot-from-FICON"} 0.0
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="JayLpar5"} 0.0
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="SFTP"} 0.0
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="Test_01"} 0.0
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="KathirTest"} 0.0
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="Test_02"} 0.0
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="JayLpar4"} 0.0
zhmc_partition_ifl_processor_count{cpc="P0000A28",partition="JayLpar"} 0.0
# HELP zhmc_partition_ifl_initial_processing_weight Initial IFL processing weight for the active partition in shared mode (1..999)
# TYPE zhmc_partition_ifl_initial_processing_weight gauge
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="Storage Test"} 100.0
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="Crypto-1"} 100.0
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="tobiTest"} 100.0
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="JayNVMe"} 100.0
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="Crypto-2"} 100.0
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="Boot-from-None"} 100.0
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="Nan Boot test"} 100.0
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="JayLpar2"} 100.0
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="Sample-Test"} 100.0
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="boot-test-FICON"} 100.0
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="Boot-from-FICON"} 100.0
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="JayLpar5"} 100.0
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="SFTP"} 100.0
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="Test_01"} 100.0
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="KathirTest"} 100.0
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="Test_02"} 100.0
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="JayLpar4"} 100.0
zhmc_partition_ifl_initial_processing_weight{cpc="P0000A28",partition="JayLpar"} 100.0
# HELP zhmc_partition_ifl_minimum_processing_weight Minimum IFL processing weight for the active partition in shared mode (1..999)
# TYPE zhmc_partition_ifl_minimum_processing_weight gauge
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="Storage Test"} 1.0
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="Crypto-1"} 1.0
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="tobiTest"} 1.0
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="JayNVMe"} 1.0
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="Crypto-2"} 1.0
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="Boot-from-None"} 1.0
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="Nan Boot test"} 1.0
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="JayLpar2"} 1.0
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="Sample-Test"} 1.0
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="boot-test-FICON"} 1.0
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="Boot-from-FICON"} 1.0
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="JayLpar5"} 1.0
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="SFTP"} 1.0
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="Test_01"} 1.0
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="KathirTest"} 1.0
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="Test_02"} 1.0
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="JayLpar4"} 1.0
zhmc_partition_ifl_minimum_processing_weight{cpc="P0000A28",partition="JayLpar"} 1.0
# HELP zhmc_partition_ifl_maximum_processing_weight Maximum IFL processing weight for the active partition in shared mode (1..999)
# TYPE zhmc_partition_ifl_maximum_processing_weight gauge
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="Storage Test"} 999.0
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="Crypto-1"} 999.0
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="tobiTest"} 999.0
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="JayNVMe"} 999.0
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="Crypto-2"} 999.0
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="Boot-from-None"} 999.0
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="Nan Boot test"} 999.0
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="JayLpar2"} 999.0
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="Sample-Test"} 999.0
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="boot-test-FICON"} 999.0
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="Boot-from-FICON"} 999.0
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="JayLpar5"} 999.0
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="SFTP"} 999.0
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="Test_01"} 999.0
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="KathirTest"} 999.0
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="Test_02"} 999.0
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="JayLpar4"} 999.0
zhmc_partition_ifl_maximum_processing_weight{cpc="P0000A28",partition="JayLpar"} 999.0
# HELP zhmc_partition_ifl_current_processing_weight Current IFL processing weight for the active partition in shared mode (1..999)
# TYPE zhmc_partition_ifl_current_processing_weight gauge
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="Storage Test"} 1.0
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="Crypto-1"} 1.0
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="tobiTest"} 1.0
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="JayNVMe"} 1.0
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="Crypto-2"} 1.0
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="Boot-from-None"} 1.0
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="Nan Boot test"} 1.0
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="JayLpar2"} 1.0
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="Sample-Test"} 1.0
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="boot-test-FICON"} 1.0
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="Boot-from-FICON"} 1.0
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="JayLpar5"} 1.0
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="SFTP"} 1.0
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="Test_01"} 1.0
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="KathirTest"} 1.0
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="Test_02"} 1.0
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="JayLpar4"} 1.0
zhmc_partition_ifl_current_processing_weight{cpc="P0000A28",partition="JayLpar"} 1.0
# HELP zhmc_partition_ifl_processor_count_is_capped Boolean indicating whether absolute capping is enabled for IFL processors (0=false, 1=true)
# TYPE zhmc_partition_ifl_processor_count_is_capped gauge
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="Storage Test",valuetype="bool"} 0.0
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="Crypto-1",valuetype="bool"} 0.0
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="tobiTest",valuetype="bool"} 0.0
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="JayNVMe",valuetype="bool"} 0.0
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="Crypto-2",valuetype="bool"} 0.0
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="Boot-from-None",valuetype="bool"} 0.0
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="Nan Boot test",valuetype="bool"} 0.0
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="JayLpar2",valuetype="bool"} 0.0
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="Sample-Test",valuetype="bool"} 0.0
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="boot-test-FICON",valuetype="bool"} 0.0
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="Boot-from-FICON",valuetype="bool"} 0.0
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="JayLpar5",valuetype="bool"} 0.0
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="SFTP",valuetype="bool"} 0.0
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="Test_01",valuetype="bool"} 0.0
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="KathirTest",valuetype="bool"} 0.0
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="Test_02",valuetype="bool"} 0.0
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="JayLpar4",valuetype="bool"} 0.0
zhmc_partition_ifl_processor_count_is_capped{cpc="P0000A28",partition="JayLpar",valuetype="bool"} 0.0
# HELP zhmc_partition_ifl_processor_count_cap Maximum number of IFL processors that can be used if absolute capping is enabled, else 0
# TYPE zhmc_partition_ifl_processor_count_cap gauge
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="Storage Test"} 0.0
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="Crypto-1"} 0.0
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="tobiTest"} 0.0
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="JayNVMe"} 0.0
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="Crypto-2"} 0.0
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="Boot-from-None"} 0.0
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="Nan Boot test"} 0.0
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="JayLpar2"} 0.0
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="Sample-Test"} 0.0
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="boot-test-FICON"} 0.0
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="Boot-from-FICON"} 0.0
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="JayLpar5"} 0.0
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="SFTP"} 0.0
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="Test_01"} 0.0
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="KathirTest"} 0.0
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="Test_02"} 0.0
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="JayLpar4"} 0.0
zhmc_partition_ifl_processor_count_cap{cpc="P0000A28",partition="JayLpar"} 0.0
# HELP zhmc_partition_ifl_initial_processing_weight_is_capped Boolean indicating whether the initial IFL processing weight is capped (0=false, 1=true)
# TYPE zhmc_partition_ifl_initial_processing_weight_is_capped gauge
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="Storage Test",valuetype="bool"} 0.0
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="Crypto-1",valuetype="bool"} 0.0
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="tobiTest",valuetype="bool"} 0.0
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="JayNVMe",valuetype="bool"} 0.0
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="Crypto-2",valuetype="bool"} 0.0
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="Boot-from-None",valuetype="bool"} 0.0
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="Nan Boot test",valuetype="bool"} 0.0
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="JayLpar2",valuetype="bool"} 0.0
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="Sample-Test",valuetype="bool"} 0.0
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="boot-test-FICON",valuetype="bool"} 0.0
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="Boot-from-FICON",valuetype="bool"} 0.0
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="JayLpar5",valuetype="bool"} 0.0
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="SFTP",valuetype="bool"} 0.0
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="Test_01",valuetype="bool"} 0.0
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="KathirTest",valuetype="bool"} 0.0
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="Test_02",valuetype="bool"} 0.0
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="JayLpar4",valuetype="bool"} 0.0
zhmc_partition_ifl_initial_processing_weight_is_capped{cpc="P0000A28",partition="JayLpar",valuetype="bool"} 0.0
# HELP zhmc_partition_initial_memory_mib Initial amount of memory allocated to the partition when it becomes active, in MiB
# TYPE zhmc_partition_initial_memory_mib gauge
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="Storage Test"} 4096.0
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="Crypto-1"} 4096.0
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="tobiTest"} 4096.0
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="JayNVMe"} 4096.0
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="Crypto-2"} 4096.0
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="Boot-from-None"} 4096.0
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="Nan Boot test"} 4096.0
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="JayLpar2"} 4096.0
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="Sample-Test"} 4096.0
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="boot-test-FICON"} 4096.0
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="Boot-from-FICON"} 4096.0
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="JayLpar5"} 4096.0
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="SFTP"} 4096.0
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="Test_01"} 4096.0
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="KathirTest"} 4096.0
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="Test_02"} 4096.0
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="JayLpar4"} 4096.0
zhmc_partition_initial_memory_mib{cpc="P0000A28",partition="JayLpar"} 4096.0
# HELP zhmc_partition_reserved_memory_mib Amount of reserved memory (maximum memory minus initial memory), in MiB
# TYPE zhmc_partition_reserved_memory_mib gauge
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="Storage Test"} 0.0
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="Crypto-1"} 0.0
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="tobiTest"} 0.0
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="JayNVMe"} 0.0
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="Crypto-2"} 0.0
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="Boot-from-None"} 0.0
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="Nan Boot test"} 0.0
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="JayLpar2"} 0.0
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="Sample-Test"} 0.0
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="boot-test-FICON"} 0.0
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="Boot-from-FICON"} 0.0
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="JayLpar5"} 0.0
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="SFTP"} 0.0
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="Test_01"} 0.0
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="KathirTest"} 0.0
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="Test_02"} 0.0
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="JayLpar4"} 0.0
zhmc_partition_reserved_memory_mib{cpc="P0000A28",partition="JayLpar"} 0.0
# HELP zhmc_partition_maximum_memory_mib Maximum amount of memory to which the operating system running in the partition can increase the memory allocation, in MiB
# TYPE zhmc_partition_maximum_memory_mib gauge
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="Storage Test"} 4096.0
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="Crypto-1"} 4096.0
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="tobiTest"} 4096.0
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="JayNVMe"} 4096.0
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="Crypto-2"} 4096.0
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="Boot-from-None"} 4096.0
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="Nan Boot test"} 4096.0
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="JayLpar2"} 4096.0
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="Sample-Test"} 4096.0
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="boot-test-FICON"} 4096.0
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="Boot-from-FICON"} 4096.0
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="JayLpar5"} 4096.0
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="SFTP"} 4096.0
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="Test_01"} 4096.0
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="KathirTest"} 4096.0
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="Test_02"} 4096.0
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="JayLpar4"} 4096.0
zhmc_partition_maximum_memory_mib{cpc="P0000A28",partition="JayLpar"} 4096.0
# HELP zhmc_partition_status_int Partition status as integer (0=active, 1=degraded, 10=paused, 11=stopped, 12=starting, 13=stopping, 20=reservation-error, 21=terminated, 22=communications-not-active, 23=status-check, 99=unsupported value)
# TYPE zhmc_partition_status_int gauge
zhmc_partition_status_int{cpc="P0000A28",partition="Storage Test",value="stopped"} 11.0
zhmc_partition_status_int{cpc="P0000A28",partition="Crypto-1",value="stopped"} 11.0
zhmc_partition_status_int{cpc="P0000A28",partition="tobiTest",value="stopped"} 11.0
zhmc_partition_status_int{cpc="P0000A28",partition="JayNVMe",value="stopped"} 11.0
zhmc_partition_status_int{cpc="P0000A28",partition="Crypto-2",value="stopped"} 11.0
zhmc_partition_status_int{cpc="P0000A28",partition="Boot-from-None",value="stopped"} 11.0
zhmc_partition_status_int{cpc="P0000A28",partition="Nan Boot test",value="stopped"} 11.0
zhmc_partition_status_int{cpc="P0000A28",partition="JayLpar2",value="stopped"} 11.0
zhmc_partition_status_int{cpc="P0000A28",partition="Sample-Test",value="stopped"} 11.0
zhmc_partition_status_int{cpc="P0000A28",partition="boot-test-FICON",value="stopped"} 11.0
zhmc_partition_status_int{cpc="P0000A28",partition="Boot-from-FICON",value="stopped"} 11.0
zhmc_partition_status_int{cpc="P0000A28",partition="JayLpar5",value="stopped"} 11.0
zhmc_partition_status_int{cpc="P0000A28",partition="SFTP",value="stopped"} 11.0
zhmc_partition_status_int{cpc="P0000A28",partition="Test_01",value="stopped"} 11.0
zhmc_partition_status_int{cpc="P0000A28",partition="KathirTest",value="stopped"} 11.0
zhmc_partition_status_int{cpc="P0000A28",partition="Test_02",value="stopped"} 11.0
zhmc_partition_status_int{cpc="P0000A28",partition="JayLpar4",value="stopped"} 11.0
zhmc_partition_status_int{cpc="P0000A28",partition="JayLpar",value="stopped"} 11.0
# HELP zhmc_partition_has_unacceptable_status Boolean indicating whether the partition has an unacceptable status (0=false, 1=true)
# TYPE zhmc_partition_has_unacceptable_status gauge
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="Storage Test",valuetype="bool"} 1.0
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="Crypto-1",valuetype="bool"} 1.0
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="tobiTest",valuetype="bool"} 1.0
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="JayNVMe",valuetype="bool"} 1.0
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="Crypto-2",valuetype="bool"} 1.0
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="Boot-from-None",valuetype="bool"} 1.0
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="Nan Boot test",valuetype="bool"} 1.0
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="JayLpar2",valuetype="bool"} 1.0
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="Sample-Test",valuetype="bool"} 1.0
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="boot-test-FICON",valuetype="bool"} 1.0
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="Boot-from-FICON",valuetype="bool"} 1.0
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="JayLpar5",valuetype="bool"} 1.0
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="SFTP",valuetype="bool"} 1.0
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="Test_01",valuetype="bool"} 1.0
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="KathirTest",valuetype="bool"} 1.0
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="Test_02",valuetype="bool"} 1.0
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="JayLpar4",valuetype="bool"} 1.0
zhmc_partition_has_unacceptable_status{cpc="P0000A28",partition="JayLpar",valuetype="bool"} 1.0
# HELP zhmc_cpc_cp_processor_count Number of active CP processors
# TYPE zhmc_cpc_cp_processor_count gauge
zhmc_cpc_cp_processor_count{cpc="P0000A28"} 39.0
# HELP zhmc_cpc_ifl_processor_count Number of active IFL processors
# TYPE zhmc_cpc_ifl_processor_count gauge
zhmc_cpc_ifl_processor_count{cpc="P0000A28"} 0.0
# HELP zhmc_cpc_icf_processor_count Number of active ICF processors
# TYPE zhmc_cpc_icf_processor_count gauge
zhmc_cpc_icf_processor_count{cpc="P0000A28"} 0.0
# HELP zhmc_cpc_iip_processor_count Number of active zIIP processors
# TYPE zhmc_cpc_iip_processor_count gauge
zhmc_cpc_iip_processor_count{cpc="P0000A28"} 0.0
# HELP zhmc_cpc_aap_processor_count Number of active zAAP processors
# TYPE zhmc_cpc_aap_processor_count gauge
zhmc_cpc_aap_processor_count{cpc="P0000A28"} 0.0
# HELP zhmc_cpc_sap_processor_count Number of active SAP processors
# TYPE zhmc_cpc_sap_processor_count gauge
zhmc_cpc_sap_processor_count{cpc="P0000A28"} 5.0
# HELP zhmc_cpc_defective_processor_count Number of defective processors of all processor types
# TYPE zhmc_cpc_defective_processor_count gauge
zhmc_cpc_defective_processor_count{cpc="P0000A28"} 0.0
# HELP zhmc_cpc_spare_processor_count Number of spare processors of all processor types
# TYPE zhmc_cpc_spare_processor_count gauge
zhmc_cpc_spare_processor_count{cpc="P0000A28"} 0.0
# HELP zhmc_cpc_total_memory_mib Total amount of installed memory, in MiB
# TYPE zhmc_cpc_total_memory_mib gauge
zhmc_cpc_total_memory_mib{cpc="P0000A28"} 3.145728e+06
# HELP zhmc_cpc_hsa_memory_mib Amount of memory reserved for the base hardware system area (HSA), in MiB
# TYPE zhmc_cpc_hsa_memory_mib gauge
zhmc_cpc_hsa_memory_mib{cpc="P0000A28"} 262144.0
# HELP zhmc_cpc_partition_memory_mib Amount of memory for use by partitions, in MiB
# TYPE zhmc_cpc_partition_memory_mib gauge
zhmc_cpc_partition_memory_mib{cpc="P0000A28"} 2.883584e+06
# HELP zhmc_cpc_partition_central_memory_mib Amount of memory allocated as central storage across the active partitions, in MiB
# TYPE zhmc_cpc_partition_central_memory_mib gauge
zhmc_cpc_partition_central_memory_mib{cpc="P0000A28"} 0.0
# HELP zhmc_cpc_partition_expanded_memory_mib Amount of memory allocated as expanded storage across the active partitions, in MiB
# TYPE zhmc_cpc_partition_expanded_memory_mib gauge
zhmc_cpc_partition_expanded_memory_mib{cpc="P0000A28"} 0.0
# HELP zhmc_cpc_available_memory_mib Amount of memory not allocated to active partitions, in MiB
# TYPE zhmc_cpc_available_memory_mib gauge
zhmc_cpc_available_memory_mib{cpc="P0000A28"} 2.865152e+06
# HELP zhmc_cpc_vfm_increment_gib Increment size of IBM Virtual Flash Memory (VFM), in GiB
# TYPE zhmc_cpc_vfm_increment_gib gauge
zhmc_cpc_vfm_increment_gib{cpc="P0000A28"} 16.0
# HELP zhmc_cpc_total_vfm_gib Total amount of installed IBM Virtual Flash Memory (VFM), in GiB
# TYPE zhmc_cpc_total_vfm_gib gauge
zhmc_cpc_total_vfm_gib{cpc="P0000A28"} 0.0
# HELP zhmc_cpc_status_int Status as integer (0=active/=operating, 1=degraded, 2=service-required, 10=service, 11=exceptions, 12=not-communicating, 13=status-check, 14=not-operating, 15=no-power, 99=unsupported value)
# TYPE zhmc_cpc_status_int gauge
zhmc_cpc_status_int{cpc="P0000A28",value="service-required"} 2.0
# HELP zhmc_cpc_has_unacceptable_status Boolean indicating whether the CPC has an unacceptable status (0=false, 1=true)
# TYPE zhmc_cpc_has_unacceptable_status gauge
zhmc_cpc_has_unacceptable_status{cpc="P0000A28",valuetype="bool"} 1.0

2.17. Demo setup with Grafana

This section describes a demo setup with a Prometheus server and with the Grafana frontend for visualizing the metrics.

The Prometheus server scrapes the metrics from the exporter. The Grafana server provides a HTML based web server that visualises the metrics in a dashboard.

The following diagram shows the demo setup:

Demo setup

Perform these steps for setting it up:

  • Download and install Prometheus from the Prometheus download page or using your OS-specific package manager.

    Copy the sample Prometheus configuration file (examples/prometheus.yaml in the Git repo) as prometheus.yaml into some directory where you will run the Prometheus server. The host:port for contacting the exporter is already set to localhost:9291 and it can be changed as needed.

    Run the Prometheus server as follows:

    $ prometheus --config.file=prometheus.yaml
    

    For details, see the Prometheus guide.

  • Download and install Grafana from the Grafana download page or using your OS-specific package manager.

    Run the Grafana server as follows:

    $ grafana-server -homepath {homepath} web
    

    Where:

    • {homepath} is the path name of the directory with the conf and data directories, for example /usr/local/Cellar/grafana/7.3.4/share/grafana on macOS when Grafana was installed using Homebrew.

    By default, the web interface will be on localhost:3000. This can be changed as needed. For details, see the Prometheus guide on Grafana.

  • Direct your web browser at http://localhost:3000 and log on using admin/admin.

    Create a data source in Grafana with:

    Create a dashboard in Grafana by importing the sample dashboard (examples/grafana.json in the Git repo). It will use the data source ZHMC_Prometheus.

2.18. Logging

The exporter supports logging its own activities and the interactions with the HMC. By default, logging is disabled.

Logging is enabled by using the --log DEST option that controls the logging destination as follows:

  • --log stderr - log to the Standard Error stream

  • --log syslog - log to the System Log (see Logging to the System Log)

  • --log FILE - log to the log file with path name FILE.

There are multiple components that can log. By default, all of them log at the warning level. This can be fine tuned by using the --log-comp COMP[=LEVEL] option. This option can be specified multiple times, and the specified options add in sequence to the default of all=warning.

The components that can be specified in COMP are:

  • exporter - activities of the exporter. Logger name: zhmcexporter.

  • hmc - HTTP interactions with the HMC performed by the zhmcclient library. Logger name: zhmcclient.hmc.

  • jms - JMS notifications from the HMC received by the zhmcclient library. Logger name: zhmcclient.jms.

  • all - all of these components.

The log levels that can be specified in LEVEL are:

  • error - Show only errors for the component. Errors are serious conditions that need to be fixed by the user. Some errors may need to be reported as issues. The exporter retries with the HMC in case of certain errors, but some errors cause the exporter to terminate.

  • warning - Show errors and warnings for the component. Warnings never cause the exporter to terminate, but should be analyzed and may need to be fixed.

  • info - Show informations, warnings and errors for the component. Informations are useful to understand what is going on.

  • debug - Show debug info, informations, warnings and errors for the component. Debug info provides a very detailed amount of information that may be useful foo analyzing problems.

  • off - Show no log messages for the component.

The LEVEL part can be omitted in the --log-comp option, and its default is warning. This is for compatibility with older versions of the exporter.

The default log level for each component is warning, and specifying other log levels changes that level only for the specified components but keeps the default for those components that are not specified.

Examples:

# log to Standard Error with all=warning
$ zhmc_prometheus_exporter --log stderr ...

# log to file mylog.log with all=warning
$ zhmc_prometheus_exporter --log mylog.log ...

# log to file mylog.log with exporter=info, hmc=warning (by default), jms=warning (by default)
$ zhmc_prometheus_exporter --log mylog.log --log-comp exporter=info

# log to file mylog.log with exporter=info, hmc=warning (by default), jms=debug
$ zhmc_prometheus_exporter --log mylog.log --log-comp exporter=info --log-comp jms=debug

# log to file mylog.log with exporter=debug, hmc=debug, jms=debug
$ zhmc_prometheus_exporter --log mylog.log --log-comp all=debug

# log to file mylog.log with exporter=info, hmc=off, jms=off
$ zhmc_prometheus_exporter --log mylog.log --log-comp all=off --log-comp exporter=info

2.18.1. Logging to the System Log

When logging to the System Log, the syslog address used by the exporter depends on the operating system as follows:

  • Linux: /dev/log

  • macOS: /var/run/syslog

  • Windows: UDP port 514 on localhost (requires a syslog demon to run)

  • CygWin: /dev/log (requires the syslog-ng package to be installed)

For other operating systems, UDP port 514 on localhost is used.

Messages logged to the system log will only show up there if the syslog configuration has enabled the syslog facility and the syslog severity levels that are used by the exporter. The configuration of the syslog depends on the operating system or syslog demon that is used and is therefore not described here.

The syslog facility that will be used by the exporter can be specified with the --syslog-facility option and defaults to user.

The syslog severity levels (not to be confused with syslog priorities) that will be used by the exporter are derived from the Python log levels using the default mapping defined by Python logging, which is:

Python log level

Syslog severity

ERROR

3 (Error)

WARNING

4 (Warning)

INFO

6 (Informational)

DEBUG

7 (Debug)

On some systems, the syslog rejects messages that exceed a certain limit. For this reason, the exporter truncates the message text to somewhat below 2048 Bytes, when logging to the system log. Messages are not truncated when logging to the Standard Error stream or to a file.

2.19. Performance

The support for resource property based metrics that was introduced in version 1.0 has slowed down the startup of the exporter quite significantly if these metrics are enabled.

Here is an elapsed time measurement for the startup of the exporter using an HMC in one of our development data centers:

  • 11:33 min for preparing auto-update for 143 partitions on two z14 systems in classic mode

  • 0:12 min for preparing auto-update for 98 partitions on two z13 systems in DPM mode

  • 1:30 min for preparing auto-update for the 4 CPCs

  • 10:25 min for all other startup activities (without the partition-attached-network-interface metrics group that would have been 0:48 min)

Once the exporter is up and running, the fetching of metrics by Prometheus from the exporter is very fast:

  • 0:00.35 min (=350 ms) for fetching metrics with 236 HELP/TYPE lines and 5269 metric value lines (size: 500 KB)

In this measurement, the complete set of metrics was enabled for the 4 CPCs described above.

This result includes metric values from properties of auto-updated resources (which are maintained in the exporter and are updated asynchronously via notifications the exporter receives from the HMC) and metric values retrieved from the HMC metric service by executing a single HMC operation (“Get Metric Context”).

This was measured with a local web browser that was directed to an exporter running on the same local system (a MacBook Pro). The network path between the exporter and the targeted HMC went via VPN to the IBM Intranet (via WLAN and Internet) and then across a boundary firewall.