Monitoring Informix DB

You can comprehensively monitor IBM® Informix® DB with Instana. After you install the Instana host agent, you need to install the Instana OTel sensor SDK database. Then, you must run the Instana OTel SDK for databases on the host where your Informix DB is running. You can view the metrics that are related to Informix DB in the Instana UI after you configure the Informix DB sensor as outlined in the Configuring Informix DB section.

Supported information

Supported operating systems

The supported operating systems of the Informix DB sensor are consistent with host agents requirements, which can be checked in the supported operating systems section of each host agent, such as Supported operating systems for Unix.

Supported versions

Instana agent supports the following Informix DB versions:

  • Informix DB 12.10 or later

Installing OTel SDK for Informix DB

To install OTel SDK for Informix DB, complete the following steps:

  1. Download the .tar file from Releases.

  2. Extract the .tar file by using the following command:

    tar vxf otel-dc-rdb-X.Y.Z.tar
    

    You can now see that the folder otel-dc-rdb-X.Y.Z is created.

  3. Go to otel-dc-rdb-X.Y.Z directory:

    cd otel-dc-rdb-X.Y.Z
    
    1. Go to the config directory:
    cd config
    
  4. Modify the config-informix.yaml file with the details of the Informix DB. For more information, see GitHub.

    The default configuration file is config/config.yaml. You can also use the environment variable DC_CONFIG to specify the configuration file as follows:

    export DC_CONFIG=config/config-informix.yaml
    
  5. Go back to the otel-dc-rdb-X.Y.Z directory, and then run the following command from the shell to run the Instana Otel SDK executable file for Informix DB:

    ./bin/otel-dc-rdb
    

Configuring Informix DB

The Informix DB sensor supports both local and remote monitoring. Local monitoring occurs when the Instana OTel SDK for databases runs on the same host as the Informix DB. Remote monitoring occurs when the Instana OTel SDK for databases runs on a host other than the one where the Informix DB is running. To obtain optimum performance from the Informix DB sensor, use local monitoring. For both the cases, add the following configuration in the agent configuration.yaml file, and then start the agent.

# OpenTelemetry Collector
com.instana.plugin.opentelemetry:
  enabled: true
  grpc: 
    enabled: true # takes precedence over legacy settings above, defaults to true if "grpc:" is present
  http:
    enabled: true # allows to enable http endpoints, defaults to true if "http:" is present

Local monitoring

To configure local monitoring, complete the following steps:

  1. Go to the config folder by using the following command:

    cd config
    
  2. Modify the config-informix.yaml file with the details of the Informix DB. For more information, see GitHub.

    See the following sample configuration file:

    db.system: informix #Keep as it is
    db.driver: com.informix.jdbc.IfxDriver #Keep as it is
    instances:
      - db.address: xxx.xxx.xxx.xxx #IP Address
        db.port: 9088 #Port on which DB is running
        db.serverName: ol_informix1410
        db.username: Informix_User_Name
        ### Either use password with Base 64 encoding or use vault configuration.
        db.password: BASE64_Encoded_Password
        #db.password:
        # vault_secret.path: #path to the vault secret. Example: /kv/instana/informix
        # vault_secret.key: #Provide the VaultSecretKey name
        db.name: InformixDB
        db.path: /opt/IBM/Informix_Software_Bundle
    
        #OTel properties:
        otel.service.name: InformixDB #Keep as it is  
    
        #Data collector properties:
        #Either use `poll.interval` or `custom.poll.interval`
        #poll.interval: 30
        #All three category value is Mandatory if leveraging Custom Poll Rate
        custom.poll.interval:
          high: 300 #polling_value_in_sec
          medium: 45 #polling_value_in_sec
          low: 20 #polling_value_in_sec
        callback.interval: 20 #Keep as it is  
        otel.backend.url: http://127.0.0.1:4317 #Point to the running agent
    
        #Custom Input
        custom.input: # Optional
          #Time Frame for which you want to get the expensive query. Default value 900 Sec
          db.sql.elapsed.timeframe: 900   # Values should be in Seconds
          db.sequential.scan.count: 0
          db.sql.trace.enabled: false #Default is false. Make it true only if `SqlTrace` is enabled for the DB.
        ### Uncomment the below section in case you are using Vault to retrieve the password.
        # vault:
        #  connection_url: #Vault Address URL
        #  token: #Vault Token
        #  #Use the pem file path in case you are using TLS/SSL connection for vault.
        #  #path_to_pem_file: auth/web-cert.pem 
        #  kv_version: 2 #It is the vault version. Please crosscheck your configuration.
    

Note: When you need to provide the plaintext password, the value of the db.password must be a Base64 encoded text.The vault configuration details must be disabled in that case.The SDK also supports vault based authentication mechanism.When the password needs to be provided through the vault configurations,they must be added to the db.password field.

We provide the following vault configuration details to the db.password field :

  1. vault_secret.path: Specify the path of the vault secret in this field.
  2. vault_secret.key: Specify the vault based authentication key in this field.

Also, the "vault" key in the configuration must be enabled while using the Vault authentication mechanism. The following fields must also be enabled:

  1. connection_url: The URL of the Vault address
  2. token: The value of the Vault token
  3. path_to_pem_file: The path to the pem file in case the TLS/SSL connection is used for vault.
  4. kv_version: The version of the Vault

To learn more about configuring Vault, refer the official documentation here.

Remote monitoring

To run the SDK in a different system from that of the agent, add the following configuration to the backend.cfg file in /instana-agent/etc/instana/com.instana.agent.main.config.Agent.cfg.

#If your DC is in a different host from your Instana Agent 

http.listen=*

In remote monitoring, the Instana OTel SDK runs on a different host than that of the Informix DB.

The sample configuration file for single database is as follows:

db.system: informix #Keep as it is
db.driver: com.informix.jdbc.IfxDriver #Keep as it is
instances:
  - db.address: xxx.xxx.xxx.xxx #IP Address
    db.port: 9088 #Port on which DB is running
    db.serverName: ol_informix1410
    db.username: Informix_User_Name
    ### Either use password with Base 64 encoding or use vault configuration.
    db.password: BASE64_Encoded_Password
    #db.password:
    #  vault_secret.path: #path to the vault secret. Example: /kv/instana/informix
    #  vault_secret.key: #Provide the VaultSecretKey name
    db.name: InformixDB
    db.path: /opt/IBM/Informix_Software_Bundle

    #OTel properties:
    otel.service.name: InformixDB #Keep as it is

    #Data collector properties:
    #Either use `poll.interval` or `custom.poll.interval`
    #poll.interval: 30
    #All three category value is Mandatory if leveraging Custom Poll Rate
    custom.poll.interval:
      high: 300 #polling_value_in_sec
      medium: 45 #polling_value_in_sec
      low: 20 #polling_value_in_sec
    callback.interval: 20 #Keep as it is  
    otel.backend.url: http://<ip_of_host_having_instana_otel_sdk>:4317 #Point to the running agent

    #Custom Input
    custom.input: # Optional
      #Time Frame for which you want to get the expensive query. Default value 900 Sec
      db.sql.elapsed.timeframe: 900   # Values should be in Seconds
      db.sequential.scan.count: 0
      db.sql.trace.enabled: false #Default is false. Make it true only if `SqlTrace` is enabled for the DB.
     ### Uncomment the below section in case you are using Vault to retrieve the password.
     # vault:
        #  connection_url: #Vault Address URL
        #  token: #Vault Token
        #  #Use the pem file path in case you are using TLS/SSL connection for vault.
        #  #path_to_pem_file: auth/web-cert.pem 
        #  kv_version: 2 #It is the vault version. Please crosscheck your configuration.      

The sample configuration file for multiple databases is as follows:

db.system: informix #Keep as it is
db.driver: com.informix.jdbc.IfxDriver #Keep as it is
instances:
  - db.address: xxx.xxx.xxx.xxx #IP Address
    db.port: 9088 #Port on which DB is running
    db.serverName: ol_informix1410
    db.username: Informix_User_Name
    ### Either use password with Base 64 encoding or use vault configuration.
    db.password: BASE64_Encoded_Password
    #db.password:
    #  vault_secret.path: #path to the vault secret. Example: /kv/instana/informix
    #  vault_secret.key: #Provide the VaultSecretKey name
    db.name: InformixDB
    db.path: /opt/IBM/Informix_Software_Bundle

    #OTel properties:
    otel.service.name: InformixDB #Keep as it is

    #Data collector properties:
    #Either use `poll.interval` or `custom.poll.interval`
    #poll.interval: 30
    #All three category value is Mandatory if leveraging Custom Poll Rate
    custom.poll.interval:
      high: 300 #polling_value_in_sec
      medium: 45 #polling_value_in_sec
      low: 20 #polling_value_in_sec
    callback.interval: 20 #Keep as it is
    otel.backend.url: http://127.0.0.1:4317 #Point to the running agent

    #Custom Input
    custom.input: # Optional
      #Time Frame for which you want to get the expensive query. Default value 900 Sec
      db.sql.elapsed.timeframe: 900   # Values should be in Seconds
      db.sequential.scan.count: 0

  - db.address: xxx.xxx.xxx.xxx #IP Address
    db.port: 9088 #Port on which DB is running
    db.serverName: ol_informix1410
    db.username: Informix_User_Name
    ### Either use password with Base 64 encoding or use vault configuration.
    db.password: BASE64_Encoded_Password
    #db.password:
    #  vault_secret.path: #path to the vault secret. Example: /kv/instana/informix
    #  vault_secret.key: #Provide the VaultSecretKey name
    db.name: InformixDB
    db.path: /opt/IBM/Informix_Software_Bundle

    #OTel properties:
    otel.service.name: InformixDB #Keep as it is

    #Data collector properties:
    #Either use `poll.interval` or `custom.poll.interval`
    #poll.interval: 30
    #All three category value is Mandatory if leveraging Custom Poll Rate
    custom.poll.interval:
      high: 300 #polling_value_in_sec
      medium: 45 #polling_value_in_sec
      low: 20 #polling_value_in_sec
    callback.interval: 20 #Keep as it is 
    otel.backend.url: http://127.0.0.1:4317 #Point to the running agent

    #Custom Input
    custom.input: # Optional
      #Time Frame for which you want to get the expensive query. Default value 900 Sec
      db.sql.elapsed.timeframe: 900   # Values should be in Seconds
      db.sql.trace.enabled: false #Default is false. Make it true only if `SqlTrace` is enabled for the DB.
    ### Uncomment the below section in case you are using Vault to retrieve the password.
     # vault:
        #  connection_url: #Vault Address URL
        #  token: #Vault Token
        #  #Use the pem file path in case you are using TLS/SSL connection for vault.
        #  #path_to_pem_file: auth/web-cert.pem 
        #  kv_version: 2 #It is the vault version. Please crosscheck your configuration.

Viewing metrics

To view the metrics, complete the following steps:

  1. From the navigation menu in the Instana UI, select Infrastructure.

  2. Click a specific monitored host.

You can see a host dashboard with all the collected metrics and monitored processes.

The following metrics are available for each Informix DB sensor:

Metric Description Granularity
Instance Count Number of Informix DB instances As configured
Active Instance Count Number of Informix DB instances that are active As configured
Session Count Number of Informix DB sessions As configured
Active Session Count Number of Informix DB sessions that are active As configured
Transaction Count Number of Informix DB transactions As configured
Transaction Latency Count Transaction latency As configured
SQL Count Number of queries that are executed As configured
SQL Per Second Number of queries that are executed per second As configured
IO read Count Number of IO reads As configured
IO write Count Number of IO writes As configured
SQL Elapsed Time Most time-consuming queries with their execution time As configured
Database Used Name of the database As configured
Disk Writes Number of disk writes As configured
Disk reads Number of disk reads As configured
Scans Number of sequential scans for every table As configured
Table Scans Number of Informix DB sessions with the sequential scans As configured
Overflow - Lock Number of times a thread attempted to acquire a lock when locks were not available As configured
Overflow - User Number of times a user thread attempted to acquire a lock when locks were not available As configured
Overflow - Transaction Number of times a thread attempted to allocate an entry in the transaction table when the entries in the shared-memory table were not available As configured
Memory Utilization Amount of memory used As configured
Buffer Cache Ratio(Read) The percentage of page reads for this buffer pool that were satisfied by a cached page image As configured
Buffer Cache Ratio(Write) The percentage of page writes for this buffer pool that were satisfied by a cached page image As configured
LRU Writes Number of Least Recently Used (LRU) writes performed As configured
Database Lock Waits Number of threads waiting for a lock As configured
TableSpace Information about available and used storage of the top 20 tables in the database As configured