SQL input
Serverless Observability Serverless Security Stack
| Version | 1.1.0 (View all) | 
| Subscription level What's this? | Basic | 
| Level of support What's this? | Elastic | 
The SQL input package allows you to run custom queries against an SQL database and store the results in Elasticsearch.
This input package supports the following databases
- MySQL
- Oracle
- Microsoft SQL
- PostgreSQL
The host configuration should be specified from where the metrics are to be fetched. It varies depending upon the driver you are running.
The supported configuration takes this form
- <user>:<password>@tcp(<host>:<port>)/
Here is an example of the supported configuration:
- root:root@tcp(localhost:3306)/
Two types of host configurations are supported:
- Old style host configuration - a. - hosts: ["user/[email protected]:1521/ORCLPDB1.localdomain"]b.- hosts: ["user/[email protected]:1521/ORCLPDB1.localdomain as sysdba"]
- DSN host configuration - a. - hosts: ['user="user" password="pass" connectString="0.0.0.0:1521/ORCLPDB1.localdomain"']b.- hosts: ['user="user" password="password" connectString="host:port/service_name" sysdba=true']
The supported configuration takes this form
- sqlserver://<user>:<password>@<host>
Here is an example of the supported configuration:
- sqlserver://root:test@localhost
The supported configuration takes this form
- postgres://<user>:<password>@<connection_string>
Here is an example of the supported configuration
- postgres://postgres:postgres@localhost:5432/stuff?sslmode=disable
If the password includes a backslash (), you need to escape it by adding another backslash. For example, my_password should be written as my\_password.
Specifies the driver for which you want to run the queries. These are the supported drivers:
- mysql
- oracle
- mssql
- postgres
Receives the list of queries to run. query and response_format is repeated to get multiple query inputs.
For example:
sql_queries:
  - query: SHOW GLOBAL STATUS LIKE 'Innodb_system%'
    response_format: variables
		
	response_format: This can be either variables or table
- variables: Expects a two-column table that looks like a key/value result. The left column is considered a key and the right column the value. This mode generates a single event on each fetch operation.
- table: Expects any number of columns. This mode generates a single event for each row.
For more examples of response format please refer here
Merge multiple queries into a single event.
Multiple queries will create multiple events, one for each query. It may be preferable to create a single event by combining the metrics together in a single event.
This feature can be enabled using the merge_results config.
merge_results can merge queries having response format as "variable".
However, for queries with a response format as "table", a merge is possible only if each table query produces a single row.
For example, if we have the following queries for PostgreSQL:
sql_queries:
  - query: "SELECT blks_hit,blks_read FROM pg_stat_database LIMIT 1;"
    response_format: table
  - query: "SELECT checkpoints_timed,checkpoints_req FROM pg_stat_bgwriter;"
    response_format: table
		
	The merge_results feature will create a combined event, where blks_hit, blks_read, checkpoints_timed and checkpoints_req are part of the same event.
The drivers mysql, mssql, and postgres are supported.
The SSL configuration is driver-specific. Different drivers have slightly different parameter interpretations. Subset of the params is supported.
When "SSL Configuration" parameters are set, only URL-formatted connection strings are accepted.
Use this format: postgres://myuser:mypassword@localhost:5432/mydb.
Don't use this format: user=myuser password=mypassword dbname=mydb.
Example of SSL configuration:
verification_mode: full
certificate_authorities:
  - /path/to/ca.pem
		
	Parameters supported: verification_mode, certificate, key, certificate_authorities.
The certificates can be passed both as file paths and certificate content.
Example with the certificate content "embedded":
verification_mode: full
certificate_authorities:
  - |
    -----BEGIN CERTIFICATE-----
    MIIDCjCCAfKgAwIBAgITJ706Mu2wJlKckpIvkWxEHvEyijANBgkqhkiG9w0BAQsF
    ADAUMRIwEAYDVQQDDAlsb2NhbGhvc3QwIBcNMTkwNzIyMTkyOTA0WhgPMjExOTA2
    MjgxOTI5MDRaMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEB
    BQADggEPADCCAQoCggEBANce58Y/JykI58iyOXpxGfw0/gMvF0hUQAcUrSMxEO6n
    fZRA49b4OV4SwWmA3395uL2eB2NB8y8qdQ9muXUdPBWE4l9rMZ6gmfu90N5B5uEl
    94NcfBfYOKi1fJQ9i7WKhTjlRkMCgBkWPkUokvBZFRt8RtF7zI77BSEorHGQCk9t
    /D7BS0GJyfVEhftbWcFEAG3VRcoMhF7kUzYwp+qESoriFRYLeDWv68ZOvG7eoWnP
    PsvZStEVEimjvK5NSESEQa9xWyJOmlOKXhkdymtcUd/nXnx6UTCFgnkgzSdTWV41
    CI6B6aJ9svCTI2QuoIq2HxX/ix7OvW1huVmcyHVxyUECAwEAAaNTMFEwHQYDVR0O
    BBYEFPwN1OceFGm9v6ux8G+DZ3TUDYxqMB8GA1UdIwQYMBaAFPwN1OceFGm9v6ux
    8G+DZ3TUDYxqMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAG5D
    874A4YI7YUwOVsVAdbWtgp1d0zKcPRR+r2OdSbTAV5/gcS3jgBJ3i1BN34JuDVFw
    3DeJSYT3nxy2Y56lLnxDeF8CUTUtVQx3CuGkRg1ouGAHpO/6OqOhwLLorEmxi7tA
    H2O8mtT0poX5AnOAhzVy7QW0D/k4WaoLyckM5hUa6RtvgvLxOwA0U+VGurCDoctu
    8F4QOgTAWyh8EZIwaKCliFRSynDpv3JTUwtfZkxo6K6nce1RhCWFAsMvDZL8Dgc0
    yvgJ38BRsFOtkRuAGSf6ZUwTO8JJRRIFnpUzXflAnGivK9M13D5GEQMmIl6U9Pvk
    sxSmbIUfc2SGJGCJD4I=
    -----END CERTIFICATE-----
		
	Parameters supported: verification_mode, certificate, key, certificate_authorities.
Only one certificate can be passed to the certificate_authorities parameter.
The certificates can be passed only as file paths. The files have to be present in the environment where the metricbeat is running.
The verification_mode is translated as follows:
- full->- verify-full
- strict->- verify-full
- certificate->- verify-ca
- none->- require
Params supported: verification_mode, certificate_authorities.
Only one certificate can be passed to the certificate_authorities parameter.
The certificates can be passed only as file paths. The files have to be present in the environment where the metricbeat is running.
If verification_mode is set to none, TrustServerCertificate will be set to true, otherwise it is false.
{
    "@timestamp": "2025-06-25T07:34:08.850Z",
    "agent": {
        "ephemeral_id": "062e1a2d-efcc-495c-9cef-2f4d1ea6bdaa",
        "id": "81f6c307-e62b-45cd-aa0d-be554deb83b2",
        "name": "elastic-agent-33528",
        "type": "metricbeat",
        "version": "9.1.0"
    },
    "data_stream": {
        "dataset": "sql.sql",
        "namespace": "72095",
        "type": "metrics"
    },
    "ecs": {
        "version": "8.0.0"
    },
    "elastic_agent": {
        "id": "81f6c307-e62b-45cd-aa0d-be554deb83b2",
        "snapshot": true,
        "version": "9.1.0"
    },
    "event": {
        "agent_id_status": "verified",
        "dataset": "sql.sql",
        "duration": 1311560,
        "ingested": "2025-06-25T07:34:11Z",
        "module": "sql"
    },
    "host": {
        "architecture": "aarch64",
        "containerized": false,
        "hostname": "elastic-agent-33528",
        "ip": [
            "192.168.160.2",
            "172.28.0.4"
        ],
        "mac": [
            "02-42-AC-1C-00-04",
            "02-42-C0-A8-A0-02"
        ],
        "name": "elastic-agent-33528",
        "os": {
            "family": "",
            "kernel": "6.8.0-50-generic",
            "name": "Wolfi",
            "platform": "wolfi",
            "type": "linux",
            "version": "20230201"
        }
    },
    "metricset": {
        "name": "query",
        "period": 10000
    },
    "service": {
        "address": "svc-sql_input_mysql:3306",
        "type": "sql"
    },
    "sql": {
        "driver": "mysql",
        "metrics": {
            "delayed_insert_threads": "0",
            "mysqlx_worker_threads": "2",
            "mysqlx_worker_threads_active": "0",
            "slow_launch_threads": "0",
            "threads_cached": "0",
            "threads_connected": "1",
            "threads_created": "1",
            "threads_running": "2"
        },
        "query": [
            "SHOW STATUS LIKE '%Threads%'"
        ]
    }
}
		
	
		
			Changelog
		
		
			
		
		
	
	| Version | Details | Kibana version(s) | 
|---|---|---|
| 1.1.0 | Enhancement (View pull request) Add a flag fips_compatibleto control whether the package is allowed in the ECH FedRAMP High environment. | 9.1.0 or higher | 
| 1.0.0 | Enhancement (View pull request) Make SQL input package GA | 9.1.0 or higher | 
| 0.9.0 | Enhancement (View pull request) Add SSL support | — | 
| 0.8.0 | Enhancement (View pull request) Manifest version update to 3.* | — | 
| 0.7.0 | Enhancement (View pull request) Make hosts field secret | — | 
| 0.6.0 | Enhancement (View pull request) Add support for Kibana 9.0.0. | — | 
| 0.5.2 | Enhancement (View pull request) Add observability category. | — | 
| 0.5.1 | Enhancement (View pull request) Fix typos in integration package | — | 
| 0.5.0 | Enhancement (View pull request) ECS version updated to 8.11.0. Update the kibana constraint to ^8.13.0. Modified the field definitions to remove ECS fields made redundant by the ecs@mappings component template. | — | 
| 0.4.0 | Enhancement (View pull request) Add conditionandprocessorssettings. | — | 
| 0.3.0 | Enhancement (View pull request) Add merge_results feature | — | 
| 0.2.1 | Enhancement (View pull request) Add system test cases. | — | 
| 0.2.0 | Enhancement (View pull request) Update Kibana version to 8.8.0 | — | 
| 0.1.0 | Enhancement (View pull request) Rename ownership from obs-service-integrations to obs-infraobs-integrations | — | 
| 0.0.3 | Enhancement (View pull request) Add base fields mappings | — | 
| 0.0.2 | Enhancement (View pull request) Updating the logo | — | 
| 0.0.1 | Enhancement (View pull request) Initial draft of the SQL Input Package | — |