Creating ELK integrations

Elasticsearch, Logstash, and Kibana (ELK) integrations provide log data for anomaly detection in IBM Cloud Pak® for AIOps. An ELK integration provides log data, which is used to establish a baseline of normal behavior and then identify anomalies. These anomalies can be correlated with other alerts and events, and published to your ChatOps interface to help you determine the cause and resolution of a problem.

For more information about working with ELK integrations, see the following sections:

For more information about HTTP headers for the various credential types, see HTTP headers for credential types.

Creating ELK integrations

To create an ELK integration, see the following sections:

Prerequisites

Before creating the integration, you should be aware of the following information:

  • Load: To prevent this integration placing an inordinate load on your data source and potentially impacting your logging operations, this integration only connects to one API with a default data frequency of 60 seconds. This is controlled by using the Sampling rate setting in the Procedure section.

  • Access: Custom data sources are cloud-based REST APIs. Access is configured by using the authentication methods that are specified in the Authentication type setting in the Procedure section.

  • Data volume: Data volume depends on the application, and is not a set value. Therefore, it does not appear in the settings.

Known issue with later versions of ELK

IBM Cloud Pak for AIOps only supports ELK up to version 7.12.0. For later versions of ELK, the event_link provided by AIOps does not open the correct logs in Kibana.

The reason for this incorrect link is that later versions of ELK use the uuid as the default ID for the index pattern. As a workaround, you must set the Custom index pattern ID to same value as the index pattern name.

To do so, use the following steps:

  1. Log in to the ELK instance.
  2. From the hamburger menu, navigate to Stack Management.
  3. Click on Create index pattern.
  4. Complete the required details.
  5. Click on the Show advanced settings button.
  6. Set the Custom index pattern ID to the same value that you specified for the Index pattern name. This will override the default value.

Enabling log anomaly detection

The ELK integration uses the log anomaly detection pipeline.

Therefore, you must enable the logAnomalyDetection property in the Cloud Pak for AIOps installation CR before you set up ELK integration. For more information on how to enable the property for different deployment types, see Incremental adoption.

To check if log anomaly detection is enabled, complete the following steps:

  1. Get the name of the installation by running the following command:

    oc get installation
    
  2. Get the CR information by running the following command:

    oc get installation <name of installation> -o yaml
    
  3. In the CR, check under spec.pakModules if logAnomalyDetection.enabled is set to true.

Procedure

To create an ELK integration, complete the following steps:

  1. Log in to IBM Cloud Pak for AIOps console.

  2. Expand the navigation menu (four horizontal bars), then click Define > Integrations.

  3. On the Integrations page, click Add integration.

  4. From the list of available integrations, find and click the ELK tile.

    Note: If you do not immediately see the integration that you want to create, you can filter the tiles by type of integration. Click the type of integration that you want in the Category section.

    ELK integration
    Figure. Configure ELK integration

  5. On the side-panel, review the instructions and when ready to continue, click Get started.

    ELK integration
    Figure. Configure ELK integration - get started

  6. On the Add integration page, define the general integration details:

    • Name: The display name of your integration.

    • Description: An optional description for the integration.

    • ELK service URL: ELK service URL: The Elasticsearch host and public API port. The URL must have the target index that IBM Cloud Pak for AIOps uses to search for the data from your applications. If you want to use all data, specify * as your index. For example, your ELK service URL can be https://myURL.com:8080/*.

    • Kibana URL: Enter a URL for the service instance.

      ELK integration
      Figure. Create ELK integration

    • Authentication type: Select one of the following values:

      • User ID/password: The Elasticsearch instance has a user ID and password as authentication. You must enter both in the integration configuration.

      • API key: The Elasticsearch instance is authenticated with an API key.

      • Token: The Elasticsearch instance is authenticated with a temporary token.

      • Custom: The Elasticsearch instance is authenticated with a header and value.

      • None: The Elasticsearch instance has no authentication.

        Note: If you selected API key as Authentication type value, then you need to follow the steps on ELK integration steps to use ApiKey authentication method.

    • User ID: Enter a user ID for the integration.

    • Password: Enter a password for the integration.

    • Certificate (optional): Certificate used to verify the SSL/TLS connection to the REST service.

    • Filters (optional): A custom Boolean Query Opens in a new tab to filter the Elasticsearch request for your specific application, terms, keywords, or other filters.

    • Time zone (optional): The time zone in which your data is situated. The default time is converted from the system time relative to UTC time. The default value is UTC.

    • Kibana port: The port of the Kibana instance that is on the same host as the Elasticsearch instance. If the Kibana instance is not exposed on the default 5601 port, change this value to the port where the Kibana instance is shown.

    • Base parallelism: Select a value to specify the number of Flink jobs that can run in parallel. These jobs run to process and normalize the collected data. The default value is 1. However, it is recommended to use a higher value than 1 so that you can process data in parallel. This value cannot exceed the total available free Flink slots. In a small environment, the available flinks slots are 16, while in a large environment, the maximum available slots are 32. If you are collecting historical data with this integration, you can set this value to be equal to the source parallelism.

    • Sampling rate: The rate at which data is pulled from live source (in seconds). The default value is 60.

    • JSON processing option: Select a JSON processing option.

      • None: The default option. The JSON is not processed or modified.

      • Flatten: This option flattens the JSON object by removing the opening and closing braces.

      • Filter: This option extracts the JSON object and replaces it with an empty string.

      • For more information about the options, see Managing embedded JSON.

    Note: To improve data throughput, you can increase the base parallelism value incrementally. For more information about maximum base parallelism for starter and production deployments, see Improving data streaming performance for log anomaly detection.

    Note: If using the Filter option, you should not use a timestamp in the filter query. It gives a parsing error in the backend.

         "range": {
           "@timestamp": {
             "gte": "now-2m",
             "lt" : "now"
           }
    

    Other than that, ELK filter can use any clauses so long as the fields and the values that are specified in the filter are relevant to the target endpoint data set.

    Filter debugging tip: You can first test the filter by using the curl command to ELK endpoint. When using the curl command, the timestamp range is optional in the elk filter, and depends on whether you want to narrow down the search over a particular period of time. If the query gets zero records with 200 HTTP responses (for example no filter error), it is an indication that the query was not able to hit the particular set of data scoped by the filter. Users can tune filter to get the needed results.

  7. You test your integration by clicking Test connection.

  8. Click Next.

  9. Enter Field Mapping information (Optional):

    You can improve search performance by mapping the fields from your implementation fields to IBM Cloud Pak for AIOps's standard fields. For more information about how field mappings are defined, see Mapping data from incoming sources. For more information about using mappings to clean your data for use in IBM Cloud Pak for AIOps, see Cleaning mapped data that use regular expressions. Consider the supported data schema when you create your field mapping:

    {
      "codec": "elk",
      "rolling_time": 10,
      "instance_id_field": "application_name",
      "log_entity_types": "kubernetes.pod_name",
      "message_field": "message",
      "timestamp_field": "@timestamp",
      "resource_id": "kubernetes.pod_name"
    }
    
  10. Click Next.

  11. Enter AI training and log data (Optional):

    Select how you want to manage collecting data for use in AI training and anomaly detection. Click the Data collection toggle to turn on data collection, then select how you want to collect data:

    • Live data for continuous AI training and anomaly detection: A continuous collection of data from your integration is used to both train AI models and analyze your data for anomalous behavior.

      ELK integration
      Figure. AI training

      Note: After an initial installation, there is no data at all in the system. If you select this option, then the two different log anomaly detection algorithms behave in the following ways:

      • Natural language log anomaly detection does not initially detect anomalies as no model has been trained. You can retrieve historical data (select Historical data for initial AI training) to speed up the retrieval of data to train on, or you can leave the Live data for continuous AI training and anomaly detection setting on. In the latter case, the system gathers training data live and after a few days there is enough data to train a model. When this model is deployed, then it detects anomalies as normal.

      • Statistical baseline log anomaly detection does not detect anomalies for the first 30 minutes of data collection. This is because it does not have a baseline yet. After 30 minutes of live data collection the baseline is automatically created. After that it detects anomalies on an ongoing basis, while continuing to gather data and improve its model every 30 minutes.

    • Live data for initial AI training: A single set of training data used to define your AI model. Data collection takes place over a specified time period that starts when you create your integration.

      Note: Selecting this option causes the system to continue to collect data while the option is enabled; however, the data is collected for training only, and not for log anomaly detection. For more information about AI model training, including minimum and ideal data quantities, see Configuring AI training.

    • Historical data for initial AI training: A single set of training data used to define your AI model. You need to give Start and End dates, and specify the parallelism of your source data. Historical data is harvested from existing logs in your integration over a specified time period in the past.

      • Start date: Select a start date from the calendar and enter the time in hh:mm (hours and minutes) format.

        Note: The start date must not exceed 31 days from the present as the maximum time period for historical data collection is 31 days. The recommended time period is two weeks.

      • Time zone: Select your time zone from the dropdown list.

      • End date and time: Click Add end date and select an end date from the calendar and enter the time in hh:mm format.

        Note: If you do not specify the end date, then live data collection follows the historical data collection. If you do not want to set an end date, click Remove end date.

      • Source parallelism (1-50): Select a value to specify the number of requests that can run in parallel to collect data from the source. Generally, you can set the value to equal the number of days of datat that you want to collect. When you are setting this value, consider the number of requests that are allowed by the source in a minute. For example, if only 1-2 requests are allowed, set the value to be low.

      Important: Keep in mind the following considerations when you select your data collection type:

    • Anomaly detection for your integration occurs if you select Live data for continuous AI training and anomaly detection.

    • Different types of AI models have different requirements to properly train a model. Make sure that your settings satisfy minimum data requirements. For more information about how much data you need to train different AI models, see Configuring AI training.

  12. Click Next.

  13. On the Resource requirements page, you can review the slot usage for your log integrations to see if there are enough slots to fully support the integration for multizone high availability.

    ELK integration
    Figure. Resource requirements

    If you set the Data collection toggle to On, you will see the resource management overview.

    • If your current usage and other usage are less than the provisioned slots, but the HA slots exceed the provisioned slots, you will be able to create the integration, but will see a warning that you do not have enough slots. The integration will not have multizone high availability.

    • If your projected usage exceeds the provisioned slots, you will not be able to create the integration because you do not have enough slots on your system for log data integrations.

    • If your total slots, including HA slots, are within the provisioned slots, the integration will have multizone high availability.

      Note: HA operation assumes high availability for three zones.

    If you set the Data collection toggle to Off, you will see a message stating that you need to enable logs data collection to see the resource management overview. When data collection is off, no slots are used by that integration.

  14. Click Done.

You created an ELK integration in your instance. After you create your integration, you must enable the data collection to connect your integration with the AI of IBM Cloud Pak for AIOps. For more information about enabling your integration, see Enabling ELK integrations.

To create more integrations (such as a ChatOps integration), see Configuring Integrations.

For more information about working with the insights provided by your integrations, see ChatOps insight management.

Enabling and disabling ELK integrations

If you didn't enable your data collection during creation, you can enable your integration afterward. You can also disable a previously enabled integration the same way. If you selected Live data for initial AI training when you created your integration, you must disable the integration before AI model training. To enable or disable a created integration, complete the following steps:

  1. Log in to IBM Cloud Pak for AIOps console.

  2. Expand the navigation menu (four horizontal bars), then click Define > Integrations.

  3. On the Manage integrations tab of the Integrations page, click the ELK integration type.

  4. Click the integration that you want to enable or disable.

  5. Go to the AI training and log data section. Set Data integration to On or Off to enable or disable data collection. Disabling data collection for an integration does not delete the integration.

You enabled or disabled your integration. For more information about deleting a integration, see Deleting ELK integrations.

Editing ELK integrations

After you create your integration, your can edit the integration. For example, if you specified Historical data for initial AI training but now want your integration to pull in live data for continuous monitoring, you can edit it. To edit a integration, complete the following steps:

  1. Log in to IBM Cloud Pak for AIOps console.

  2. Expand the navigation menu (four horizontal bars), then click Define > Integrations.

  3. Click the ELK integration type on the Manage integrations tab of the Integrations page.

  4. On the ELK integrations page, click the name of the integration that you want to edit. Alternatively, you can click the options menu (three vertical dots) for the integration and click Edit. The integration configuration opens.

  5. Edit your integration as required. Click Save when you are done editing.

Your integration is now edited. If your application was not previously enabled or disabled, you can enable or disable the integration directly from the interface. For more information about enabling and disabling your integration, see Enabling and disabling ELK integrations. For more information about deleting a integration, see Deleting ELK integrations.

Deleting ELK integrations

If you no longer need your ELK integration and want to not only disable it, but delete it entirely, you can delete the integration from the console.

Note: You must disable data collection before deleting your integration. For more information about disabling data collection, see Enabling and disabling ELK integrations.

To delete a integration, complete the following steps:

  1. Log in to IBM Cloud Pak for AIOps console.

  2. Expand the navigation menu (four horizontal bars), then click Define > Integrations.

  3. Click the ELK integration type on the Manage integrations tab of the Integrations page.

  4. On the ELK integrations page, click the options menu (three vertical dots) for the integration that you want to delete and click Delete.

  5. Enter the name of the integration to confirm that you want to delete your integration. Then, click Delete.

Your integration is deleted.