Skip to content

Datadog

You can set up Wallarm to send notifications of detected events to Datadog through the Fluentd or Logstash intermediate data collector.

Sending notifications from Wallarm to Datadog

You can choose the following events to be sent to Datadog:

  • Hits detected except for:

  • System related: newly added users, deleted or disabled integration

  • Vulnerabilities detected

  • Scope changed: updates in hosts, services, and domains

Notification format

Wallarm sends notifications via webhooks in the JSON format. The set of JSON objects depends on the event Wallarm notifies about.

Example of the notification of the new hit detected:

[
    {
        "summary": "[Wallarm] New hit detected",
        "details": {
        "client_name": "TestCompany",
        "cloud": "EU",
        "notification_type": "new_hits",
        "hit": {
            "domain": "www.example.com",
            "heur_distance": 0.01111,
            "method": "POST",
            "parameter": "SOME_value",
            "path": "/news/some_path",
            "payloads": [
                "say ni"
            ],
            "point": [
                "post"
            ],
            "probability": 0.01,
            "remote_country": "PL",
            "remote_port": 0,
            "remote_addr4": "8.8.8.8",
            "remote_addr6": "",
            "tor": "none",
            "request_time": 1603834606,
            "create_time": 1603834608,
            "response_len": 14,
            "response_status": 200,
            "response_time": 5,
            "stamps": [
                1111
            ],
            "regex": [],
            "stamps_hash": -22222,
            "regex_hash": -33333,
            "type": "sqli",
            "block_status": "monitored",
            "id": [
                "hits_production_999_202010_v_1",
                "c2dd33831a13be0d_AC9"
            ],
            "object_type": "hit",
            "anomaly": 0
            }
        }
    }
]

Requirements

The configuration of the Fluentd or Logstash intermediate data collector should meet the following requirements:

  • Accept the POST or PUT requests

  • Accept HTTPS requests

  • Have public URL

  • Forward logs to Datadog via the datadog_logs Logstash plugin or the fluent-plugin-datadog Fluentd plugin

  1. Install the datadog_logs plugin to forward logs to Datadog.
  2. Configure Logstash to read incoming requests and forward logs to Datadog.

The logstash-sample.conf configuration file example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
input {
  http { # input plugin for HTTP and HTTPS traffic
    port => 5044 # port for incoming requests
    ssl => true # HTTPS traffic processing
    ssl_certificate => "/etc/server.crt" # Logstash TLS certificate
    ssl_key => "/etc/server.key" # private key for TLS certificate
  }
}
filter {
  mutate {
    add_field => {
        "ddsource" => "wallarm" # mutate filter adding the source field to the Datadog log record for further filtration of Wallarm logs
    }
  }
}
output {
  stdout {} # output plugin to print Logstash logs on the command line
  datadog_logs { # output plugin to forward the Logstash logs to Datadog
      api_key => "XXXX" # API key generated for the organization in Datadog
      host => "http-intake.logs.datadoghq.eu" # Datadog endpoint (depends on the registration region)
  }
}
  1. Install the fluent-plugin-datadog plugin to forward logs to Datadog.
  2. Configure Fluentd to read incoming requests and forward logs to Datadog.

The td-agent.conf configuration file example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<source>
  @type http # input plugin for HTTP and HTTPS traffic
  port 9880 # port for incoming requests
  <transport tls> # configuration for connections handling
    cert_path /etc/ssl/certs/fluentd.crt
    private_key_path /etc/ssl/private/fluentd.key
  </transport>
</source>
<match datadog.**>
  @type datadog # output plugin to forward logs from Fluentd to Datadog
  @id awesome_agent
  api_key XXXX # API key generated for the organization in Datadog
  host 'http-intake.logs.datadoghq.eu' # Datadog endpoint (depends on the registration region)

  # Optional
  include_tag_key true
  tag_key 'tag'

  # Optional tags
  dd_source 'wallarm' # adding the source field to the Datadog log record for further filtration of Wallarm logs
  dd_tags 'integration:fluentd'

  <buffer>
          @type memory
          flush_thread_count 4
          flush_interval 3s
          chunk_limit_size 5m
          chunk_limit_records 500
  </buffer>
</match>

Setting up integration

  1. Proceed to the Datadog integration setup in Wallarm Console → Settings → Integrations → Datadog.

  2. Input the integration name.

  3. Specify target Fluentd or Logstash URL (Webhook URL).

  4. If required, configure advanced settings:

    • Request method: POST or PUT. By default, POST requests are sent.
    • Request header and its value if the server requires a non-standard header to execute the request. The number of headers is not limited.
    • CA certificate: certificate of CA that signed a server certificate. If CA is publicly trusted, this field is optional. If a server certificate is self-signed, this field is required and must contain a certificate of your own CA that signed a server certificate.
    • Verify TLS certificate: this setting allows to disable verification of the specified server certificate. By default, Wallarm verifies whether a server certificate is signed by a publicly trusted CA. We do not recommend disabling the verification of production server certificates. If your server uses a self-signed TLS certificate, you can add a self-signed CA certificate to allow sending requests to this server.
    • Request timeout, in seconds: if the server does not respond to the request within the specified time, the request fails. By default: 15 seconds.
    • Connection timeout, in seconds: if the connection to the server cannot be established during the specified time, the request fails. By default: 20 seconds.
  5. Choose event types to trigger sending notifications to the specified URL. If the events are not chosen, then notifications will not be sent.

  6. Test the integration and make sure the settings are correct.

  7. Click Add integration.

Datadog integration

Testing integration

Integration testing allows checking configuration correctness, availability of the Wallarm Cloud, and the notification format. To test the integration, you can use the button Test integration when creating or editing the integration.

The integration is tested as follows:

  • Test notifications with the prefix [Test message] are sent to the selected system.

  • Test integrations are sent for all events available for the selected system. If the integration card includes 3 event types, the system will receive 3 test notifications.

    If the integration card includes the event type System related, an appropriate test notification includes details on the newly added user.

  • Test notifications include test data.

The test log in the Fluentd or Logstash intermediate data collector:

[
    {
        summary:"[Test message] [Test partner(US)] New vulnerability detected",
        description:"Notification type: vuln

                    New vulnerability was detected in your system.

                    ID: 
                    Title: Test
                    Domain: example.com
                    Path: 
                    Method: 
                    Discovered by: 
                    Parameter: 
                    Type: Info
                    Threat: Medium

                    More details: https://us1.my.wallarm.com/object/555


                    Client: TestCompany
                    Cloud: US
                    ",
        details:{
            client_name:"TestCompany",
            cloud:"US",
            notification_type:"vuln",
            vuln_link:"https://us1.my.wallarm.com/object/555",
            vuln:{
                domain:"example.com",
                id:null,
                method:null,
                parameter:null,
                path:null,
                title:"Test",
                discovered_by:null,
                threat:"Medium",
                type:"Info"
            }
        }
    }
]

The test Datadog log:

The test Datadog log

Updating integration

To update the settings of active integration:

  1. Go to Wallarm Console → SettingsIntegrations in the EU or US Cloud.

  2. Open an active integration.

  3. Make required changes and click Save.

Disabling integration

To stop sending reports and notifications temporarily, you can disable the integration:

  1. Go to Wallarm Console → SettingsIntegrations in the EU or US Cloud.

  2. Open an active integration and click Disable.

To re-enable sending reports and notifications, open the disabled integration and click Enable.

Disabling the integration is the system event. If you receive system notifications, messages about disabled integration will be sent to the configured system.

Deleting integration

To stop sending reports and notifications permanently, you can delete the integration. Deleting an integration cannot be undone. The integration will be removed from the list permanently.

  1. Go to Wallarm Console → SettingsIntegrations in the EU or US Cloud.

  2. Open integration and click Delete.

  3. Confirm the action.

Deleting the integration is the system event. If you receive system notifications, messages about deleted integration will be sent to the configured system.