SAP HANA
Monitor SAP HANA In-Memory Data Platform
This source has been deprecated
observIQ is in the process of transitioning a subset of BindPlane's monitoring capabilities to the observIQ OpenTelemetry Collector. As a result, this Source is no longer publicly available in BindPlane. If you need access to this Source, please reach out to our support via chat or via [email protected].
Data Collection Setup
Metrics are collected via REST ASAP HANA platform’s API
Network Requirements
Port: 30015 (TCP) Default
Configured Database Ports
The port number is bound to the instance of the database. For more information on ranges and rules for port numbers, see: https://help.sap.com/viewer/ports
Least Privilege User
Setting SAP HANA User Permissions
The least privileged user requirements for BindPlane include a restricted SAP HANA user account that has been customized as described in the following section.
1. Creating a Restricted SAP HANA User
CREATE RESTRICTED USER <USERNAME> PASSWORD “<password>”;
ALTER USER <USERNAME> ENABLE CLIENT CONNECT;
Granting Privileges to a Restricted SAP HANA User
- Run
GRANT CATALOG READ TO <USERNAME>
; to give the user read-only access to all system views. - Run
GRANT SELECT ON <VIEW_NAME> TO <USERNAME>
; for each view listed below:
_SYS_STATISTICS.STATISTICS_CURRENT_ALERTS
SYS.M_BLOCKED_TRANSACTIONS
SYS.M_CACHES
SYS.M_CONNECTION_STATISTICS
SYS.M_CONNECTIONS
SYS.M_DATABASE
SYS.M_DATABASE_HISTORY
SYS.M_DISKS
SYS.M_EXPENSIVE_STATEMENTS
SYS.M_GARBAGE_COLLECTION_STATISTICS
SYS.M_HOST_INFORMATION
SYS.M_HOST_RESOURCE_UTILIZATION
SYS.M_JOB_PROGRESS
SYS.M_LANDSCAPE_HOST_CONFIGURATION
SYS.M_LICENSE
SYS.M_MEMORY
SYS.M_RECORD_LOCKS
SYS.M_SERVICE_MEMORY
SYS.M_SERVICE_REPLICATION
SYS.M_SERVICE_STATISTICS
SYS.M_SERVICE_THREADS
SYS.M_SERVICES
SYS.M_SHARED_MEMORY
SYS.M_SYSTEM_OVERVIEW
SYS.M_TRANSACTIONS
SYS.M_VOLUME_IO_STATISTICS
SYS.M_VOLUME_SIZES
SYS.M_VOLUMES
For detailed information on creating restricted users and granting privileges to users, visit the SAP Help Portal.
Change user password after creation
After creating the user, the password must be changed by logging in to the SAP HANA Administration Console.
Collecting Metrics from SAP S/4HANA Cloud
Configuring SAP S/4HANA Cloud
Requirements
- S/4HANA System
- BindPlane Collector
Update Access Points
- The default deployment needs to be updated so that the collector can communicate with the SAP Host Agent(s) and Start Service over HTTP(S). This is accomplished by allowing access to the hosts using those services' ports.
- The only IP address which needs access to the SAP hosts is that of the VM running the BindPlane Collector.
- Navigate to the relevant instance in SAP Cloud Application Library.
- Click Edit to edit the deployment.
Host Agent
- Allow port 1128 (HTTP) or 1129 (HTTPS)
SAP Start Service
- For a Start Service without a custom
/etc/services
file:- Each instance is deterministically assigned a port in the range of 50013-59913. The scheme is
5<INSTANCE_NUMBER>13
for HTTP and5<INSTANCE_NUMBER>14
for HTTPS. - Either allow the port range of 50013-59913 or each individual port based on the instance numbers in your deployment, e.g. a host with an ABAP instance as instance 0 and an ABAP Central Services instance as instance 1 will need ports 50013 and 50113 whitelisted for HTTP.
- Each instance is deterministically assigned a port in the range of 50013-59913. The scheme is
- For a Start Service with a custom
/etc/services
file:- Allow access to the hosts using the ports specified in the file.
- If you would like to verify the expected ports are open, you can run this command from the S/4HANA host to list ports that the
sapstartsrv
process is listening on:netstat -tnap | grep 'LISTEN.*sapstartsrv'
Configuring BindPlane Collector Host
- The host running the collector needs to be updated so that the SAP hostnames can be resolved to IP addresses.
- To explain, running the
sapcontrol
function "GetSystemInstanceList" shows our two instances with hostnames ofvhcals4hcs
andvhcals4hci
.hostname, instanceNr, httpPort, httpsPort, startPriority, features, dispstatus vhcals4hcs, 1, 50113, 50114, 1, MESSAGESERVER|ENQUE|WEBDISP, GREEN vhcals4hci, 0, 50013, 50014, 3, ABAP|GATEWAY|ICMAN|IGS, GREEN
- The collector will be unable to connect to those hosts by name without the following changes.
- For more information about accessing the S/4HANA system remotely, see section 2.3 of Getting Started with SAP S/4HANA 1809(FPS01).
Configuring Collector Host (Linux)
- Connect to the host running the BindPlane collector using SSH. You will most likely need root access to edit the
/etc/hosts
file. - Edit the
/etc/hosts
file using a text editor such as nano or vi. As always when editing important files, it is a very good idea to make a backup before making the changes. - Add the following lines to
/etc/hosts
, filling in the actual external IP addresses from the CAL instance page.The external IP address(es) can be found using the CAL instance details page, where the external and internal addresses of every deployed VM are listed. Be sure to enter the external IP addresses (those not starting with# S4H Appliance <External IP Address SAP S4HANA/HDB server> vhcals4hci.dummy.nodomain vhcals4hci vhcals4hcs.dummy.nodomain vhcals4hcs vhcalhdbdb vhcaldhbdb.dummy.nodomain <IP Address SAP NW JAVA/ASE/ADS server> vhcalj2eci.dummy.nodomain vhcalj2eci vhcalj2ecs.dummy.nodomain vhcalj2ecs vhcalj2edb vhcalj2edb.dummy.nodomain <IP Address SAP BI Platform> bihost bihost.dummy.nodomain
10.
).

- Save the modified file.
- You may need to restart the VM for the changes to take effect.
Supported Versions
SAP HANA 1.0
- SPS 10
- SPS 12
SAP HANA 2.0
Connection Parameters
Name | Required? | Description |
---|---|---|
Host | Required | The SAP HANA database to connect to. |
Port | The port for communication to the SAP HANA database. | |
Username | Required | |
Password | Required | |
SSL Configuration | The SSL mode to use when connecting to the target. Can be configured to not use SSL (No SSL), use SSL but do not verify the target's certificate (No Verify), and use SSL and verify the target's certificate (Verify). | |
Failover Hosts | Comma-separated list of additional failover hosts to attempt to connect to if the primary host is unavailable | |
Collect Events | Controls whether events are collected and returned. |
Metrics
Disk
Name | Description |
---|---|
Device ID | Device ID |
Device Name | Device Name |
Host | Host |
IDs | IDs |
Total Read Size (Bytes) | Total Read Size |
Total Reads | Total Reads |
Total Size (Bytes) | Total Size |
Total Write Size (Bytes) | Total Write Size |
Total Writes | Total Writes |
Used Size (Bytes) | Used Size |
Utilization (%) | Utilization |
Host
Name | Description |
---|---|
Aborting Transactions | Aborting Transactions |
Active | Whether the host is currently active |
Active Prepare Commit Transactions | Active Prepare Commit Transactions |
Active Threads | Active Threads |
Active Transactions | Active Transactions |
Actual Indexserver Role | Actual Indexserver Role |
Actual Nameserver Role | Actual Nameserver Role |
Average Current Transaction Run Time (Seconds) | Average Current Transaction Run Time |
Average Response Time (Milliseconds) | Average time to respond to a request |
Blocked Transactions | Transactions waiting for a record lock |
Cache Capacity (Bytes) | Cache Capacity |
Cache Entries | Cache Entries |
Cache Hits | Cache Hits |
Cache Inserts | Cache Inserts |
Cache Invalidates | Cache Invalidates |
Cache Misses | Cache Misses |
Caches | Caches |
Configured Indexserver Role | Configured Indexserver Role |
Configured Nameserver Role | Configured Nameserver Role |
CPU Usage (Milliseconds) | The sum of user time, system time, and wait I/O time and usages |
Current Connections | Current Connections |
Current Transactions | Current Transactions |
Database CPU Time (Milliseconds) | Database CPU Time |
Database Memory Used (Bytes) | Database Memory Used |
Database Memory Utilization (%) | Total memory used as a proportion of the sum of used and free physical memory |
Database Resident Memory (Bytes) | Database Resident Memory |
DDL Garbage Collection Transactions | DDL Garbage Collection Transactions |
Expensive Statements | Expensive Statements |
Expensive Statements Duration (Microseconds) | Expensive Statements Duration |
External Transactions | External Transactions |
Failover Group | Failover Group |
Failover Status | Failover Status |
Garbage Collection Transactions | Garbage Collection Transactions |
Host | Host |
Idle Connections | Idle Connections |
Inactive Threads | Inactive Threads |
Inactive Transactions | Inactive Transactions |
Internal Transactions | Internal Transactions |
IP Address | IP Address |
Jobs | Jobs |
Maximum Current Transaction Run Time (Seconds) | Maximum Current Transaction Run Time |
Maximum Service Start Time | Maximum Service Start Time |
Memory Allocation Limit (Bytes) | Memory Allocation Limit |
Partial Aborting Transactions | Partial Aborting Transactions |
Physical Memory Utilization (%) | Used physical memory as a proportion of the sum of used and free physical memory |
Precommitted Transactions | Precommitted Transactions |
Record Locks | Record Locks |
Request Rate (Requests per Second) | The number of requests made in one second |
Running Connections | Running Connections |
Status | Whether the host is currently OK or in some other state |
Storage Partition | Storage Partition |
Swap Space Utilization (%) | Used swap space as a proportion of the sum of used and free swap space |
Total CPU Time (Milliseconds) | Total CPU Time |
Total Data Received (Bytes) | Total Data Received |
Total Data Sent (Bytes) | Total Data Sent |
Total Data Transferred (Bytes) | The sum of sent and received message data |
Total Physical Memory (Bytes) | Total Physical Memory |
Total Resident Memory (Bytes) | Total Resident Memory |
Total Select Executions | Total Select Executions |
Total Swap Space (Bytes) | Total Swap Space |
Total Transactions | Total Transactions |
Total Update Executions | Total Update Executions |
Uptime (Hours) | Uptime |
Used Cache (Bytes) | Used Cache |
Used Physical Memory (Bytes) | Used Physical Memory |
Used Swap Space (Bytes) | Used Swap Space |
User Transactions | User Transactions |
Service
Name | Description |
---|---|
Aborting Transactions | Aborting Transactions |
Active | Whether the service is currently active |
Active Prepare Commit Transactions | Active Prepare Commit Transactions |
Active Threads | Active Threads |
Active Transactions | Active Transactions |
Average Current Transaction Run Time (Seconds) | Average Current Transaction Run Time |
Blocked Transactions | Transactions waiting for a record lock |
Cache Capacity (Bytes) | Cache Capacity |
Cache Entries | Cache Entries |
Cache Hits | Cache Hits |
Cache Inserts | Cache Inserts |
Cache Invalidates | Cache Invalidates |
Cache Misses | Cache Misses |
Cache Used (Bytes) | Cache Used |
Caches | Caches |
CPU Utilization (%) | Percentage of CPU time spent on this service |
Current Transactions | Current Transactions |
DDL Garbage Collection Transactions | DDL Garbage Collection Transactions |
Effective Allocation Limit (Bytes) | Effective Allocation Limit |
Enters | Enters |
Expensive Statements | Expensive Statements |
Expensive Statements Duration (Microseconds) | Expensive Statements Duration |
External Transactions | External Transactions |
Garbage Collection Transactions | Garbage Collection Transactions |
Histories | Histories |
Host | Host |
Idle Connections | Idle Connections |
Inactive Threads | Inactive Threads |
Inactive Transactions | Inactive Transactions |
Internal Transactions | Internal Transactions |
Jobs | Jobs |
Maximum Current Transaction Run Time (Seconds) | Maximum Current Transaction Run Time |
Memory Used (Bytes) | Memory Used |
Memory Utilization (%) | The total memory used as a percentage of the effective memory allocation limit |
Name | Name |
Open Files | Open Files |
Partial Aborting Transactions | Partial Aborting Transactions |
Pending Requests | Pending Requests |
Port | Port |
Precommitted Transactions | Precommitted Transactions |
Process ID | Process ID |
Processed Jobs | Processed Jobs |
Queue Empties | Queue Empties |
Queue Loads | Queue Loads |
Queue NonEmpty Loads | Queue NonEmpty Loads |
Record Locks | Record Locks |
Requests (Requests per Second) | Requests |
Response Time (Milliseconds) | Average time for the service to respond to requests |
Role | Coordinator type in distributed landscape |
Running Connections | Running Connections |
Savepoints | Savepoints |
SQL Port | SQL Port |
Start Time | Start Time |
Started Jobs | Started Jobs |
Uptime (Hours) | Uptime |
User Transactions | User Transactions |
Waiters | Waiters |
Service Shared Memory
Name | Description |
---|---|
Allocated Size (Bytes) | Allocated Size |
Category | Category |
Free Size (Bytes) | Free Size |
Host | Host |
Port | Port |
Used Size (Bytes) | Used Size |
System
Name | Description |
---|---|
Alerts Status | Alerts Status |
All Services Started Status | All Services Started Status |
Average Response Time (Milliseconds) | Average time to respond to a request |
Blocked Transactions | Transactions waiting for a record lock |
CPU Cores | CPU Cores |
CPU Model | CPU Model |
CPU Status | Whether the CPU is OK |
Data Backup Capacity (Bytes) | Data Backup Capacity |
Data Backup Usage (Bytes) | Data Backup Usage |
Data Backup Utilization (%) | Percentage of disk space used for data backups |
Data Capacity (Bytes) | Data Capacity |
Data Usage (Bytes) | Data Usage |
Data Utilization (%) | Percentage of disk space used |
Disk Data Status | Whether the disk data is OK |
Disk Log Status | Disk Log Status |
Disk Trace Status | Disk Trace Status |
Expensive Statement Duration (Microseconds) | Expensive Statement Duration |
Expensive Statements | Expensive Statements |
Global Allocation Limit (Bytes) | Global Allocation Limit |
Hardware Key | Hardware Key |
Host | Host |
ID | ID |
Idle Connections | Idle Connections |
Idle Time (Milliseconds) | Idle Time |
Install Number | Install Number |
I/O Wait Time (Milliseconds) | I/O Wait Time |
IP Addresses | IP Addresses |
Jobs | Jobs |
Last Update Install Time | Last Update Install Time |
License Expiration Date | License Expiration Date |
License is Enforced | License is Enforced |
License is Locked Down | License is Locked Down |
License is Permanent | License is Permanent |
License is Valid | License is Valid |
Log Backup Capacity (Bytes) | Log Backup Capacity |
Log Backup Usage (Bytes) | Log Backup Usage |
Log Backup Utilization (%) | Log Backup Utilization |
Log Capacity (Bytes) | Log Capacity |
Log Usage (Bytes) | Log Usage |
Log Utilization (%) | Log Utilization |
Memory Status | Whether the memory is OK |
Number | Number |
Operating System Name | The name of the operating system (Windows, RHEL, etc.) |
Physical Memory (Bytes) | Physical Memory |
Physical Memory Used (Bytes) | Physical Memory Used |
Physical Memory Utilization (%) | Used physical memory as a proportion of the sum of used and free physical memory |
Product Limit (Gibibytes) | Product Limit |
Product Name | Product Name |
Product Usage (Gibibytes) | Product Usage |
Product Utilization (%) | Product Utilization |
Public Name | Public Name |
Request Rate (Requests per Second) | The number of requests made in one second |
Running Connections | Running Connections |
Running Hosts | Running Hosts |
Swap Memory (Bytes) | Swap Memory |
Time (Milliseconds) | Time |
Time Until License Expiration (Days) | Time Until License Expiration |
Total Hosts | Total Hosts |
Total Physical Memory (Bytes) | Total Physical Memory |
Total Virtual Memory (Bytes) | Total Virtual Memory |
Trace Capacity (Bytes) | Trace Capacity |
Trace Usage (Bytes) | Trace Usage |
Trace Utilization (%) | Trace Utilization |
User Time (Milliseconds) | User Time |
Version | Version |
Virtual Memory Used (Bytes) | Virtual Memory Used |
Virtual Memory Utilization (%) | The sum of used physical and swap memory as a proportion of the sum of used and free physical and swap memory |
Volume
Name | Description |
---|---|
Close Calls | Close Calls |
Data Size (Bytes) | Data Size |
Disk IDs | Disk IDs |
EOF Reads | EOF Reads |
Exists Calls | Exists Calls |
GetDeviceID Calls | GetDeviceID Calls |
GetModificationTime Calls | GetModificationTime Calls |
GetSize Calls | GetSize Calls |
Host | Host |
ID | ID |
Log Size (Bytes) | Log Size |
Open Calls | Open Calls |
Port | Port |
Remove Calls | Remove Calls |
Resize Calls | Resize Calls |
Service Name | Service Name |
Subpath | Subpath |
Synchronous Calls | Synchronous Calls |
Total Appends | Total Appends |
Total Asynchronous Reads | Total Asynchronous Reads |
Total Asynchronous Writes | Total Asynchronous Writes |
Total Failed Reads | Total Failed Reads |
Total Failed Writes | Total Failed Writes |
Total Full Retry Reads | Total Full Retry Reads |
Total Full Retry Writes | Total Full Retry Writes |
Total I/O Time (Seconds) | Total I/O Time |
Total Read Size (Bytes) | Total Read Size |
Total Read Time (Seconds) | Total Read Time |
Total Reads | Total Reads |
Total Short Reads | Total Short Reads |
Total Short Writes | Total Short Writes |
Total Synchronous Reads | Total Synchronous Reads |
Total Synchronous Writes | Total Synchronous Writes |
Total Trigger Asynchronous Reads | Total Trigger Asynchronous Reads |
Total Trigger Asynchronous Writes | Total Trigger Asynchronous Writes |
Total Write Size (Bytes) | Total Write Size |
Total Write Time (Seconds) | Total Write Time |
Total Writes | Total Writes |
Updated over 1 year ago