IBM HTTP Server
Introduction
IBM HTTP Server (IHS) is a robust and secure web server based on Apache HTTP Server, with enhancements and extensions from IBM. It is designed to handle high-volume, high-availability web transactions.
Getting Started
Compatibility
The IBM HTTP Server (IHS) O11ySource supports IHS versions 7.0, 8.0, 8.5, and 9.0.
Data Collection Method
vuSmartMaps collects health metrics and logs through OmniAgent’s health and log collection probes.
Prerequisites
Inputs for Configuring Data Source
- IHS Server: The IP Address/FQDN of the IHS server. This field is the key to identify each server you add here.
nan
- Period [in seconds]: How frequently data is gathered. The period should be between 60 seconds – 3000 seconds.
- URL: The server URL to IHS /server-status endpoint. Eg: http://127.0.0.1, https://127.0.0.1, http://127.0.0.1:8080, https://127.0.0.1:8080.
- Access Log Path: Enter the full path to the IHS access log file.
- Error Log Path: Enter the full path to the IHS error log file.
Firewall Requirement
To collect data from this O11ySource, ensure the following ports are opened:
| Source IP | Destination IP | Destination Port | Protocol | Direction |
|---|---|---|---|---|
| IP address of the IBM HTTP Server | vuSmartMaps Collection/Ingress node IP | 443* | TCP | Inbound |
*Before providing the firewall requirements, please update the port based on the customer environment.
Configuring the Target
Configure Metrics Collection from IBM HTTP Server (IHS)
IHS metrics are collected using VuNet’s health collection probe by connecting to the server-status endpoint provided by mod_status.
Enable mod_status and ensure ExtendedStatus is enabled.
Update the configuration to allow access to /server-status from the vuSmartMaps designated IP address.
Example configuration (IHS 9+ / Apache 2.4+ syntax):
<IfModule mod_status.c>
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Require ip <DATA_COLLECTOR_IP>
</Location>
</IfModule>
Restart IHS to apply changes:
<IHS_HOME>/bin/apachectl -k graceful
Validate from the vuSmartMaps Collection/Ingress node:
curl -s http://<IHS_HOST>:<PORT>/server-status?auto
Configure Logs Collection from IBM HTTP Server (IHS)
IHS logs are collected using VuNet’s logs collection probe. Ensure access and error logs are enabled and readable by the probe.
Common log locations:
Typical IHS path: <IHS_HOME\>/logs/access_log, <IHS_HOME\>/logs/error_log
Configuration Steps
Metrics Collected
| Name | Description | Data Type |
|---|---|---|
| @timestamp | The original string timestamp from the source log. | String |
| timestamp | The timestamp for the data point with high precision (64-bit). | DateTime64 |
| target | The target for the metrics, typically identifying the specific system or service being monitored. | String |
| host | Hostname of the server where the metrics were collected. | String |
| tenant_id | Tenant identifier for multi-tenant environments. | LowCardinality(String) |
| bu_id | Business Unit identifier for organizational grouping. | LowCardinality(String) |
| Type | Type of service being monitored (e.g., Apache, Nginx, etc.). | String |
| Uptime | Time in seconds that the server or service has been running since the last restart. | Float64 |
| Status | Current status of the server or service (e.g., "Running", "Stopped"). | LowCardinality(String) |
| service_type | The type of service provided (e.g., HTTP, HTTPS). | String |
| source_id | Unique identifier for the source from which the metrics are collected. | String |
| service_address | The address of the service (e.g., IP address or URL). | String |
| vublock_name | Block name or virtual unit block within a larger system. | String |
| metricset_name | The name of the specific metric set (group of related metrics). | String |
| type | Type of data point being recorded (e.g., gauge, counter). | String |
| period | Time period for which the metrics are being collected (in seconds). | Float64 |
| topic_name | Name of the topic related to the metric, such as a specific service or function. | LowCardinality(String) |
| requests_per_sec | Number of HTTP requests per second. | Float64 |
| hostname | The hostname of the server where Apache is running. | String |
| uptime_uptime | The uptime of the current Apache process in seconds. | Float64 |
| uptime_server_uptime | Total uptime of the Apache server since the last restart. | Float64 |
| cpu_load | The current CPU load (the average amount of work the CPU has to do). | Float64 |
| cpu_user | The percentage of CPU time spent in user space. | Float64 |
| cpu_system | The percentage of CPU time spent in kernel space. | Float64 |
| cpu_children_user | CPU time spent by child processes in user mode. | Float64 |
| cpu_children_system | CPU time spent by child processes in kernel mode. | Float64 |
| cpu_system_diff | Difference in system CPU usage between the last two metric collections. | Float64 |
| cpu_system_rate | Rate of system CPU usage. | Float64 |
| cpu_user_diff | Difference in user CPU usage between the last two metric collections. | Float64 |
| cpu_user_rate | Rate of user CPU usage. | Float64 |
| scoreboard_waiting_for_connection | Number of workers waiting for a connection. | UInt64 |
| scoreboard_reading_request | Number of workers reading requests. | UInt64 |
| scoreboard_dns_lookup | Number of workers performing DNS lookups. | UInt64 |
| scoreboard_closing_connection | Number of workers closing connections. | UInt64 |
| scoreboard_gracefully_finishing | Number of workers gracefully finishing connections. | UInt64 |
| scoreboard_idle_cleanup | Number of workers cleaning up idle connections. | UInt64 |
| scoreboard_keepalive | Number of workers handling keep-alive connections. | UInt64 |
| scoreboard_total | Total number of scoreboard slots used. | UInt64 |
| scoreboard_logging | Number of workers writing log entries. | UInt64 |
| scoreboard_open_slot | Number of open slots in the scoreboard. | UInt64 |
| scoreboard_starting_up | Number of workers in the process of starting up. | UInt64 |
| scoreboard_sending_reply | Number of workers sending replies to clients. | UInt64 |
| load_15 | System load average over the last 15 minutes. | Float64 |
| load_1 | System load average over the last 1 minute. | Float64 |
| load_5 | System load average over the last 5 minutes. | Float64 |
| bytes_per_sec | The number of bytes served per second. | Float64 |
| connections_total | Total number of connections handled. | Float64 |
| connections_async_writing | Number of asynchronous writing connections. | Float64 |
| connections_async_keep_alive | Number of asynchronous keep-alive connections. | Float64 |
| connections_async_closing | Number of asynchronous closing connections. | Float64 |
| workers_busy | Number of busy workers at the time of data collection. | Float64 |
| workers_idle | Number of idle workers at the time of data collection. | Float64 |
| total_accesses | Total number of accesses (requests) made to the server. | Float64 |
| bytes_per_request | Average number of bytes per request. | Float64 |
| total_kbytes | Total number of kilobytes served. | Float64 |
| total_accesses_diff | Difference in the number of total accesses since the last metric collection. | UInt32 |
| total_kbytes_diff | Difference in total kilobytes served since the last metric collection. | UInt64 |
| total_kbytes_rate | Rate at which kilobytes are being served. | Float64 |
| total_cpu | Total CPU time used by the server. | Float64 |
| total_cpu_pct | Percentage of total CPU utilization. | Float64 |
| busy_workers_pct | Percentage of workers that are busy. | Float64 |
| idle_workers_pct | Percentage of workers that are idle. | Float64 |
| timestamp | The timestamp when the event was logged, accurate to the microsecond level. | DateTime64 |
| host | The name or IP address of the host where the log was generated. | String |
| target | The target system, service, or process associated with the log entry. | String |
| topic_name | The name of the topic, possibly referring to a logging topic or category. | String |
| vublock_name | Virtual unit block name, representing a logical or virtual part of the system (if applicable). | String |
| doc_type | The type of document or record being logged (e.g., error log, transaction log, etc.). | String |
| type | General log type (e.g., request, response, error). | String |
| source_id | Unique identifier for the source generating the log entry. | String |
| message | The log message itself, containing details of the event or transaction. | String |
| log_offset | The offset position within the log file where this entry is located. | Float64 |
| log_file_path | The file path to the log file where this entry is stored | String |
| Type | Type of request being logged (similar to type, used in some contexts for HTTP or API request types). | String |
| request | The HTTP or API request details (URL, parameters, etc.). | String |
| response_code | The response code returned by the server (custom codes for application-level responses). | UInt16 |
| http_code | Standard HTTP response code (e.g., 200 for OK, 404 for not found). | UInt16 |
| request_time | Time taken to process the request, in milliseconds. | UInt32 |
| extra_info | Additional information about the request or log entry. | String |
| method | The HTTP method used (GET, POST, PUT, DELETE, etc.). | String |
| ms | Milliseconds taken for the entire request-response process (possibly a duplicate of request_time). | String |
| client_ip | The IP address of the client that made the request. | String |
| bytes_sent | Total number of bytes sent in the response. | String |
| response | The actual response body returned by the server. | String |
| geo_timezone | Timezone of the client or user making the request (derived from geolocation). | String |
| geo_city_name | City name of the client or user making the request (based on IP geolocation). | String |
| geo_country_name | Country name of the client or user making the request (based on IP geolocation). | String |
| message_id | A unique identifier for the message or log entry. | String |
| tid | Thread ID of the process that generated the log entry. | String |
| pid | Process ID of the process that generated the log entry. | String |
| input_type | Input type of ihs logs | String |
