Skip to content

[PingDirectory][Http Access] Add Http Access data stream#19467

Open
muskan-agarwal26 wants to merge 2 commits into
elastic:feature/pingdirectory-0.1.0from
muskan-agarwal26:datastream-http_access
Open

[PingDirectory][Http Access] Add Http Access data stream#19467
muskan-agarwal26 wants to merge 2 commits into
elastic:feature/pingdirectory-0.1.0from
muskan-agarwal26:datastream-http_access

Conversation

@muskan-agarwal26

@muskan-agarwal26 muskan-agarwal26 commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Proposed commit message

The initial release includes http_access data stream, associated dashboard and visualizations.

PingDirectory fields are mapped to their corresponding ECS fields where possible.

Test samples were derived from live data samples, which were subsequently sanitized.

Checklist

  • I have reviewed tips for building integrations and this pull request is aligned with them.
  • I have verified that all data streams collect metrics or logs.
  • I have added an entry to my package's changelog.yml file.
  • I have verified that Kibana version constraints are current according to guidelines.
  • I have verified that any added dashboard complies with Kibana's Dashboard good practices

How to test this PR locally

To test the PingDirectory package:

  • Clone integrations repo.
  • Install elastic package locally.
  • Start elastic stack using elastic-package.
  • Move to integrations/packages/ping_directory directory.
  • Run the following command to run tests.

elastic-package test

2026/06/10 07:38:39  INFO New version is available - v0.124.0. Download from: https://github.com/elastic/elastic-package/releases/tag/v0.124.0
Run asset tests for the package
2026/06/10 07:38:39  INFO elastic-package v0.120.0 version-hash 97620231 (build time: 2026-02-18T21:47:16+05:30)
2026/06/10 07:38:39  INFO elastic-stack: 8.18.0
2026/06/10 07:38:40  INFO License text found in "/root/elastic/github/integrations/LICENSE.txt" will be included in package
--- Test results for package: ping_directory - START ---
╭────────────────┬─────────────┬───────────┬─────────────────────────────────────────────────────────────────────────┬────────┬──────────────╮
│ PACKAGE        │ DATA STREAM │ TEST TYPE │ TEST NAME                                                               │ RESULT │ TIME ELAPSED │
├────────────────┼─────────────┼───────────┼─────────────────────────────────────────────────────────────────────────┼────────┼──────────────┤
│ ping_directory │             │ asset     │ dashboard ping_directory-f34ff331-41b1-4a64-a60f-5ef745aa78ac is loaded │ PASS   │      3.114µs │
│ ping_directory │             │ asset     │ lens ping_directory-2743ea89-eb66-4041-8177-39a24d94731d is loaded      │ PASS   │        103ns │
│ ping_directory │             │ asset     │ lens ping_directory-2ed71bd2-c77f-4609-8c7f-c32dc351fe1a is loaded      │ PASS   │        129ns │
│ ping_directory │             │ asset     │ lens ping_directory-3d1a6397-419c-4cf6-8476-c31d427cb1b1 is loaded      │ PASS   │        141ns │
│ ping_directory │             │ asset     │ lens ping_directory-b7d89ad7-9024-44fb-aee0-230d2dcce4b7 is loaded      │ PASS   │        135ns │
│ ping_directory │             │ asset     │ search ping_directory-970afd64-4635-4310-84f5-83215b7173c5 is loaded    │ PASS   │        257ns │
│ ping_directory │ http_access │ asset     │ index_template logs-ping_directory.http_access is loaded                │ PASS   │        926ns │
│ ping_directory │ http_access │ asset     │ ingest_pipeline logs-ping_directory.http_access-0.1.0 is loaded         │ PASS   │        217ns │
╰────────────────┴─────────────┴───────────┴─────────────────────────────────────────────────────────────────────────┴────────┴──────────────╯
--- Test results for package: ping_directory - END   ---
Done
Run pipeline tests for the package
2026/06/10 07:38:45  INFO elastic-package v0.120.0 version-hash 97620231 (build time: 2026-02-18T21:47:16+05:30)
2026/06/10 07:38:45  INFO elastic-stack: 8.18.0
--- Test results for package: ping_directory - START ---
╭────────────────┬─────────────┬───────────┬─────────────────────────────────────────────────┬────────┬──────────────╮
│ PACKAGE        │ DATA STREAM │ TEST TYPE │ TEST NAME                                       │ RESULT │ TIME ELAPSED │
├────────────────┼─────────────┼───────────┼─────────────────────────────────────────────────┼────────┼──────────────┤
│ ping_directory │ http_access │ pipeline  │ (ingest pipeline warnings test-http-access.log) │ PASS   │ 437.590382ms │
│ ping_directory │ http_access │ pipeline  │ test-http-access.log                            │ PASS   │  804.70637ms │
╰────────────────┴─────────────┴───────────┴─────────────────────────────────────────────────┴────────┴──────────────╯
--- Test results for package: ping_directory - END   ---
Done
Run policy tests for the package
2026/06/10 07:38:47  INFO elastic-package v0.120.0 version-hash 97620231 (build time: 2026-02-18T21:47:16+05:30)
2026/06/10 07:38:47  INFO elastic-stack: 8.18.0
--- Test results for package: ping_directory - START ---
No test results
--- Test results for package: ping_directory - END   ---
Done
Run script tests for the package
PKG ping_directory
[no test files]
--- Test results for package: ping_directory - START ---
No test results
--- Test results for package: ping_directory - END   ---
Done
Run static tests for the package
2026/06/10 07:38:47  INFO elastic-package v0.120.0 version-hash 97620231 (build time: 2026-02-18T21:47:16+05:30)
--- Test results for package: ping_directory - START ---
╭────────────────┬─────────────┬───────────┬──────────────────────────┬────────┬──────────────╮
│ PACKAGE        │ DATA STREAM │ TEST TYPE │ TEST NAME                │ RESULT │ TIME ELAPSED │
├────────────────┼─────────────┼───────────┼──────────────────────────┼────────┼──────────────┤
│ ping_directory │ http_access │ static    │ Verify sample_event.json │ PASS   │ 150.625572ms │
╰────────────────┴─────────────┴───────────┴──────────────────────────┴────────┴──────────────╯
--- Test results for package: ping_directory - END   ---
Done
Run system tests for the package
2026/06/10 07:38:47  INFO elastic-package v0.120.0 version-hash 97620231 (build time: 2026-02-18T21:47:16+05:30)
2026/06/10 07:38:47  INFO elastic-stack: 8.18.0
2026/06/10 07:38:47  INFO Installing package...
2026/06/10 07:38:47  INFO License text found in "/root/elastic/github/integrations/LICENSE.txt" will be included in package
2026/06/10 07:38:59  INFO Running test for data_stream "http_access" with configuration 'logfile'
2026/06/10 07:39:09  INFO Setting up independent Elastic Agent...
2026/06/10 07:39:24  INFO Setting up service...
2026/06/10 07:39:55  INFO Validating test case...
2026/06/10 07:39:56  INFO Tearing down service...
2026/06/10 07:40:07  INFO service container hasn't written anything logs.
2026/06/10 07:40:11  INFO Tearing down agent...
2026/06/10 07:40:11  INFO Write container logs to file: /root/elastic/github/integrations/build/container-logs/elastic-agent-1781057411294817334.log
2026/06/10 07:40:26  INFO Uninstalling package...
--- Test results for package: ping_directory - START ---
╭────────────────┬─────────────┬───────────┬───────────┬────────┬───────────────╮
│ PACKAGE        │ DATA STREAM │ TEST TYPE │ TEST NAME │ RESULT │  TIME ELAPSED │
├────────────────┼─────────────┼───────────┼───────────┼────────┼───────────────┤
│ ping_directory │ http_access │ system    │ logfile   │ PASS   │ 57.334879859s │
╰────────────────┴─────────────┴───────────┴───────────┴────────┴───────────────╯
--- Test results for package: ping_directory - END   ---
Done

Related issues

Screenshots

image image (1)

@muskan-agarwal26 muskan-agarwal26 requested a review from a team as a code owner June 10, 2026 02:10
@github-actions

Copy link
Copy Markdown
Contributor

Elastic Docs Style Checker (Vale)

Summary: 1 warning, 1 suggestion found

⚠️ Warnings (1): Fix when the suggestion improves clarity or correctness.
File Line Rule Message
packages/ping_directory/data_stream/http_access/fields/fields.yml 6 Elastic.Latinisms Latin terms and abbreviations are a common source of confusion. Use 'for example' instead of 'e.g'.
💡 Suggestions (1): Optional style improvements. Apply when helpful.
File Line Rule Message
packages/ping_directory/changelog.yml 1 Elastic.Versions Use 'later versions' instead of 'newer versions' when referring to versions.

The Vale linter checks documentation changes against the Elastic Docs style guide. To use Vale locally or report issues, refer to Elastic style guide for Vale.

@elastic-vault-github-plugin-prod

Copy link
Copy Markdown

✅ All changelog entries have the correct PR link.

@elastic-vault-github-plugin-prod

Copy link
Copy Markdown

🚀 Benchmarks report

To see the full report comment with /test benchmark fullreport

@elasticmachine

Copy link
Copy Markdown

💚 Build Succeeded

Comment on lines +169 to +173
- set:
field: event.duration
tag: set_event_duration_from_http_access_etime
copy_from: ping_directory.http_access.etime
ignore_empty_value: true

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs to be scaled. The API returns etime in milliseconds (ref).

tag: append_error_message_for_convert_responseContentLength_to_long
value: 'Processor {{{_ingest.on_failure_processor_type}}} with tag {{{_ingest.on_failure_processor_tag}}} in pipeline {{{_ingest.on_failure_pipeline}}} failed with message: {{{_ingest.on_failure_message}}}'
- convert:
field: http.response.status_code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This field can be used to populate event.outcome.

field: event.original
tag: parse_http_access
patterns:
- '\[(?<ping_directory.http_access.timestamp>\d{2}\/[A-Za-z]{3}\/\d{4}:\d{2}:\d{2}:\d{2}\.\d{3}) (?<ping_directory.http_access.timezone>[+-]\d{4})\] %{WORD:ping_directory.http_access.type}(?: instanceName="%{DATA:observer.name}")?(?: threadID=%{NUMBER:ping_directory.http_access.thread_id:long})?(?: requestID=%{NUMBER:ping_directory.http_access.request_id})?(?: correlationID="%{DATA:ping_directory.http_access.correlation_id}")?(?: from="%{IP:client.ip}:%{NUMBER:client.port:long}")?(?: method="%{WORD:http.request.method}")?(?: url="%{DATA:url.full}")?(?<_tmp_request_headers>(?: requestHeader="[^"]*")*)(?: authorizationType="%{DATA:ping_directory.http_access.authorization_type}")?(?: requestContentType="%{DATA:http.request.mime_type}")?(?: requestContentLength=%{NUMBER:http.request.bytes:long})?(?: statusCode=%{NUMBER:http.response.status_code:long})?(?: etime=%{NUMBER:ping_directory.http_access.etime:float})?(?: responseContentLength=%{NUMBER:http.response.bytes:long})?(?<_tmp_response_headers>(?: responseHeader="[^"]*")*)(?: responseContentType="%{DATA:http.response.mime_type}")?(?: redirectURI="%{DATA:ping_directory.http_access.redirect_uri}")?'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Do a uri_parts on the url.full from here. Also set network.protocol` from the scheme.
  • Do a geoip enrichment of client.ip.
  • There are converts implied here, so the converts that follow for these fields are not required for the :long and :float match specifiers.

copy_from: ping_directory.http_access.request_header.referer
ignore_empty_value: true
- set:
field: user_agent.original

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Map this to user_agent.* fields with a user_agent processor.

ignore_empty_value: true
- append:
field: trace.id
tag: append_ping_directory_http_access_response_header_correlation_id_into_trace_id

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Before, this was set. I'm pretty sure this is normalised to a scalar (there is not "array" expectation here).

Comment on lines +16 to +21
{{#if tz_offset}}
fields_under_root: true
fields:
_conf:
tz_offset: "{{tz_offset}}"
{{/if}}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not defined in a manifest.

Comment on lines +10 to +16
- name: paths
type: text
title: Paths
multi: true
required: true
show_user: true
description: A list of glob-based paths that will be crawled and fetched.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a sensible default for this?


### Agent-based deployment

For more details, refer to the Elastic Agent installation instructions. -> For more details, check the Elastic Agent [installation instructions](docs-content://reference/fleet/install-elastic-agents.md). You can install only one Elastic Agent per host.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
For more details, refer to the Elastic Agent installation instructions. -> For more details, check the Elastic Agent [installation instructions](docs-content://reference/fleet/install-elastic-agents.md). You can install only one Elastic Agent per host.
For more details, check the Elastic Agent [installation instructions](docs-content://reference/fleet/install-elastic-agents.md). You can install only one Elastic Agent per host.


For more details, refer to the Elastic Agent installation instructions. -> For more details, check the Elastic Agent [installation instructions](docs-content://reference/fleet/install-elastic-agents.md). You can install only one Elastic Agent per host.

Elastic Agent is required to stream data from the syslog or log file receiver and ship the data to Elastic, where the events will then be processed via the integration's ingest pipelines.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

syslog?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do all of the visualisation in this dashboard have titles?

@andrewkroh andrewkroh added New Integration Issue or pull request for creating a new integration package. documentation Improvements or additions to documentation. Applied to PRs that modify *.md files. Crest Contributions from Crest developement team. labels Jun 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Crest Contributions from Crest developement team. documentation Improvements or additions to documentation. Applied to PRs that modify *.md files. New Integration Issue or pull request for creating a new integration package.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants