SAP HANA

Supported OS Linux Windows Mac OS

Integration version5.0.0

Overview

This check monitors SAP HANA 2.0, SPS 2 through the Datadog Agent.

Setup

Installation

The SAP HANA check is included in the Datadog Agent package. To use this integration, you need to manually install the hdbcli library.

For Unix:

sudo -Hu dd-agent /opt/datadog-agent/embedded/bin/pip install hdbcli==2.21.28

For Windows:

"C:\Program Files\Datadog\Datadog Agent\embedded<PYTHON_MAJOR_VERSION>\python.exe" -m pip install hdbcli==2.21.28

Prepare HANA

To query certain views, specific privileges must be granted to the chosen HANA monitoring user. For more information, see Granting privileges.

To learn how to set the port number for HANA tenant, single-tenant, and system databases, see the Connect to SAP documentation.

User creation
  1. Connect to the system database and run the following command to create a user:

    CREATE RESTRICTED USER <USER> PASSWORD <PASSWORD>;
    
  2. Run the following command to allow the user to connect to the system:

    ALTER USER <USER> ENABLE CLIENT CONNECT;
    
  3. (optional) To avoid service interruption you may want to make the password long-lived:

    ALTER USER <USER> DISABLE PASSWORD LIFETIME;
    
Granting privileges
  1. Run the following command to create a monitoring role (named DD_MONITOR for these examples):

    CREATE ROLE DD_MONITOR;
    
  2. Run the following command to grant read-only access to all system views:

    GRANT CATALOG READ TO DD_MONITOR;
    
  3. Then run the following commands to grant select privileges on each system view:

    GRANT SELECT ON SYS.M_DATABASE TO DD_MONITOR;
    GRANT SELECT ON SYS.M_DATABASES TO DD_MONITOR;
    GRANT SELECT ON SYS_DATABASES.M_BACKUP_PROGRESS TO DD_MONITOR;
    GRANT SELECT ON SYS_DATABASES.M_CONNECTIONS TO DD_MONITOR;
    GRANT SELECT ON SYS_DATABASES.M_DISK_USAGE TO DD_MONITOR;
    GRANT SELECT ON SYS_DATABASES.M_LICENSES TO DD_MONITOR;
    GRANT SELECT ON SYS_DATABASES.M_RS_MEMORY TO DD_MONITOR;
    GRANT SELECT ON SYS_DATABASES.M_SERVICE_COMPONENT_MEMORY TO DD_MONITOR;
    GRANT SELECT ON SYS_DATABASES.M_SERVICE_MEMORY TO DD_MONITOR;
    GRANT SELECT ON SYS_DATABASES.M_SERVICE_STATISTICS TO DD_MONITOR;
    GRANT SELECT ON SYS_DATABASES.M_VOLUME_IO_TOTAL_STATISTICS TO DD_MONITOR;
    
  4. Finally, run the following command to assign the monitoring role to the desired user:

    GRANT DD_MONITOR TO <USER>;
    

Configuration

  1. Edit the sap_hana.d/conf.yaml file, in the conf.d/ folder at the root of your Agent’s configuration directory to start collecting your sap_hana performance data. See the sample sap_hana.d/conf.yaml for all available configuration options.

  2. Restart the Agent.

Log collection

  1. Collecting logs is disabled by default in the Datadog Agent. Enable it in datadog.yaml:

    logs_enabled: true
    
  2. Add this configuration block to your sap_hana.d/conf.yaml file to start collecting your SAP HANA logs, adjusting the service value to configure them for your environment:

    logs:
      - type: integration
        source: sap_hana
        service: sap_hana
    

    See the sample sap_hana.d/conf.yaml for all available configuration options.

  3. Restart the Agent.

Validation

Run the Agent’s status subcommand and look for sap_hana under the Checks section.

Data Collected

Metrics

sap_hana.backup.latest
(gauge)
The time elapsed since the latest database backup was completed.
Shown as second
sap_hana.connection.empty
(gauge)
Historic connections that are removed after a period of time.
Shown as connection
sap_hana.connection.idle
(gauge)
The current number of idle connections.
Shown as connection
sap_hana.connection.open
(gauge)
The current number of connections.
Shown as connection
sap_hana.connection.queuing
(gauge)
The current number of queued connections.
Shown as connection
sap_hana.connection.running
(gauge)
The current number of running connections.
Shown as connection
sap_hana.cpu.service.utilized
(gauge)
The CPU utilization of services as a percentage.
Shown as percent
sap_hana.disk.free
(gauge)
The total free size of the disk in bytes.
Shown as byte
sap_hana.disk.size
(gauge)
The total size of the disk in bytes.
Shown as byte
sap_hana.disk.used
(gauge)
The total used size of the disk in bytes.
Shown as byte
sap_hana.disk.utilized
(gauge)
The utilization of the disk as a percentage.
Shown as percent
sap_hana.file.service.open
(gauge)
The number of open files.
Shown as file
sap_hana.license.expiration
(gauge)
The time until license expiration.
Shown as second
sap_hana.license.size
(gauge)
The total size of the license in gibibytes.
Shown as gibibyte
sap_hana.license.usable
(gauge)
The total usable size of the license in gibibytes.
Shown as gibibyte
sap_hana.license.used
(gauge)
The total used size of the license in gibibytes.
Shown as gibibyte
sap_hana.license.utilized
(gauge)
The utilization of the license as a percentage.
Shown as percent
sap_hana.memory.row_store.free
(gauge)
The total free amount of row store memory in bytes.
Shown as byte
sap_hana.memory.row_store.total
(gauge)
The total amount of row store memory in bytes.
Shown as byte
sap_hana.memory.row_store.used
(gauge)
The total used amount of row store memory in bytes.
Shown as byte
sap_hana.memory.row_store.utilized
(gauge)
The utilization of row store memory as a percentage.
Shown as percent
sap_hana.memory.service.compactor.free
(gauge)
The total free part of the service memory pool that can potentially be freed on memory shortage in bytes.
Shown as byte
sap_hana.memory.service.compactor.total
(gauge)
The total part of the service memory pool that can potentially be freed on memory shortage in bytes.
Shown as byte
sap_hana.memory.service.compactor.used
(gauge)
The total used part of the service memory pool that can potentially be freed on memory shortage in bytes.
Shown as byte
sap_hana.memory.service.compactor.utilized
(gauge)
The utilization of the part of the service memory pool that can potentially be freed on memory shortage as a percentage.
Shown as percent
sap_hana.memory.service.component.used
(gauge)
The total used amount of memory by service components in bytes.
Shown as byte
sap_hana.memory.service.heap.free
(gauge)
The total free amount of service heap memory in bytes.
Shown as byte
sap_hana.memory.service.heap.total
(gauge)
The total amount of service heap memory in bytes.
Shown as byte
sap_hana.memory.service.heap.used
(gauge)
The total used amount of service heap memory in bytes.
Shown as byte
sap_hana.memory.service.heap.utilized
(gauge)
The utilization of service heap memory as a percentage.
Shown as percent
sap_hana.memory.service.overall.free
(gauge)
The total free amount of service memory in bytes.
Shown as byte
sap_hana.memory.service.overall.physical.total
(gauge)
The total amount of service physical RAM in bytes.
Shown as byte
sap_hana.memory.service.overall.total
(gauge)
The total amount of service memory in bytes.
Shown as byte
sap_hana.memory.service.overall.used
(gauge)
The total used amount of service memory in bytes.
Shown as byte
sap_hana.memory.service.overall.utilized
(gauge)
The utilization of service memory as a percentage.
Shown as percent
sap_hana.memory.service.overall.virtual.total
(gauge)
The total amount of service virtual RAM in bytes.
Shown as byte
sap_hana.memory.service.shared.free
(gauge)
The total free amount of service shared memory in bytes.
Shown as byte
sap_hana.memory.service.shared.total
(gauge)
The total amount of service shared memory in bytes.
Shown as byte
sap_hana.memory.service.shared.used
(gauge)
The total used amount of service shared memory in bytes.
Shown as byte
sap_hana.memory.service.shared.utilized
(gauge)
The utilization of service shared memory as a percentage.
Shown as percent
sap_hana.network.service.request.active
(gauge)
The number of active requests to services.
Shown as request
sap_hana.network.service.request.external.total_finished
(count)
The number of completed external requests to services.
Shown as request
sap_hana.network.service.request.internal.total_finished
(count)
The number of completed internal requests to services.
Shown as request
sap_hana.network.service.request.pending
(gauge)
The number of pending requests to services.
Shown as request
sap_hana.network.service.request.per_second
(gauge)
The average number of requests per second of services over the last 1000 requests.
Shown as request
sap_hana.network.service.request.response_time
(gauge)
The average request response time of services over the last 1000 requests.
Shown as millisecond
sap_hana.network.service.request.total_finished
(count)
The total number of completed requests to services.
Shown as request
sap_hana.thread.service.active
(gauge)
The number of active threads used by services.
Shown as thread
sap_hana.thread.service.inactive
(gauge)
The number of inactive threads used by services.
Shown as thread
sap_hana.thread.service.total
(gauge)
The number of total threads used by services.
Shown as thread
sap_hana.uptime
(gauge)
The time elapsed since the database was started.
Shown as second
sap_hana.volume.io.read.count
(count)
The number of reads from the volume within the last interval.
Shown as read
sap_hana.volume.io.read.size.count
(count)
The number of bytes read from the volume within the last interval.
Shown as byte
sap_hana.volume.io.read.size.total
(gauge)
The total number of bytes read from the volume.
Shown as byte
sap_hana.volume.io.read.total
(gauge)
The total number of reads from the volume.
Shown as read
sap_hana.volume.io.read.utilized
(gauge)
The percentage of time spent reading from the volume.
Shown as percent
sap_hana.volume.io.throughput
(gauge)
The overall throughput of a volume in bytes per second.
Shown as byte
sap_hana.volume.io.utilized
(gauge)
The percentage of time spent accessing the volume.
Shown as percent
sap_hana.volume.io.write.count
(count)
The number of writes to the volume within the last interval.
Shown as write
sap_hana.volume.io.write.size.count
(count)
The number of bytes written to the volume within the last interval.
Shown as byte
sap_hana.volume.io.write.size.total
(gauge)
The total number of bytes written to the volume.
Shown as byte
sap_hana.volume.io.write.total
(gauge)
The total number of writes to the volume.
Shown as write
sap_hana.volume.io.write.utilized
(gauge)
The percentage of time spent writing to the volume.
Shown as percent

Events

SAP HANA does not include any events.

Service Checks

sap_hana.can_connect
Returns CRITICAL if the Agent is unable to connect to the monitored SAP HANA system, or OK otherwise.
Statuses: ok, critical

sap_hana.status
Returns OK if the monitored SAP HANA database is up, or CRITICAL otherwise.
Statuses: ok, critical

Troubleshooting

Need help? Contact Datadog support.