Skip to content

Conversation

@manan-crest
Copy link
Contributor

What does this PR do?

This is a initial release PR of Cisco Secure Client integration including all the required assets.

Integration Logo Sources: https://upload.wikimedia.org/wikipedia/commons/0/08/Cisco_logo_blue_2016.svg

Review checklist (to be filled by reviewers)

  • Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
  • Add the qa/skip-qa label if the PR doesn't need to be tested during QA.
  • If you need to backport this PR to another branch, you can add the backport/<branch-name> label to the PR and it will automatically open a backport PR once this one is merged

@manan-crest manan-crest changed the title DDS: Cisco ASA Integration v1.0.0 [AI-6402] DDS: Cisco ASA Integration v1.0.0 Jan 2, 2026
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

'%{regex("[^']*"):usr.name}' local ip %{ip:local_ip}
(connected|reconnected) from %{ip:network.client.ip}

parsing_session_connection %{parse_event_type_header}'%{parse_session_id_ip_and_user}:\s*%{regex("Session disconnected|Session connected"):action}. Session Type:\s*%{notSpace:session_type}(, Duration:\s*%{notSpace:duration}, Bytes xmt:\s*%{number:network.bytes_read}, Bytes rcv:\s*%{number:network.bytes_written}, Reason:\s*%{regex(".*(?= \\')"):reason})?\s*'

Choose a reason for hiding this comment

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

P2 Badge Capture bytes xmt/rcv into correct fields

The Meraki session parser maps Bytes xmt to network.bytes_read and Bytes rcv to network.bytes_written, which inverts transmitted vs. received counts. For AnyConnect session manager logs that include these fields, downstream dashboards and analytics will show read/write byte totals swapped (xmt is outbound, rcv is inbound). This affects any events type=anyconnect_vpn_session_manager messages with byte counters.

Useful? React with 👍 / 👎.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done

@manan-crest manan-crest changed the title [AI-6402] DDS: Cisco ASA Integration v1.0.0 [AI-6402] DDS: Cisco Secure Client Integration v1.0.0 Jan 2, 2026
@hestonhoffman hestonhoffman added the editorial review Waiting on a more in-depth review from a docs team editor label Jan 2, 2026
@manan-crest manan-crest force-pushed the cisco-secure-client-v1.0.0 branch from 7a55cb3 to 640871c Compare January 5, 2026 06:13
@github-actions
Copy link

github-actions bot commented Jan 5, 2026

⚠️ The qa/skip-qa label has been added with shippable changes

The following files, which will be shipped with the agent, were modified in this PR and
the qa/skip-qa label has been added.

You can ignore this if you are sure the changes in this PR do not require QA. Otherwise, consider removing the label.

List of modified files that will be shipped with the agent
cisco_secure_client/datadog_checks/cisco_secure_client/__about__.py
cisco_secure_client/datadog_checks/cisco_secure_client/__init__.py
cisco_secure_client/datadog_checks/cisco_secure_client/data/conf.yaml.example
cisco_secure_client/changelog.d/22260.added
cisco_secure_client/pyproject.toml

@manan-crest manan-crest force-pushed the cisco-secure-client-v1.0.0 branch from c3808b8 to 9a12c78 Compare January 16, 2026 07:55
@manan-crest manan-crest requested a review from steveny91 January 16, 2026 09:11
@steveny91
Copy link
Contributor

Also not sure why the validation is failing right now. Can you retrigger to validation by making the version change that I suggested above? Maybe it's a CI flake.

Comment on lines +173 to +188
- type: arithmetic-processor
name: Convert epoch time to millisecond
enabled: true
expression: epoch_time * 1000
target: timestamp
replaceMissing: false
- type: date-remapper
name: Define `timestamp` as the official date of the log
enabled: true
sources:
- timestamp
- type: message-remapper
name: Define `message` as the official message of the log
enabled: true
sources:
- message
Copy link
Contributor

Choose a reason for hiding this comment

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

Is there a specific reason these remappers are in between grok parsing pipelines? Normally we parse everything and then remap them to more standard attributes. If there's a specific reason that's fine. Just curious.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

We usually keep the date remapper close to the grok parser where the timestamp is extracted for easier access. For the message remapper, we remap the message from the first grok parser and then use the updated value as input for the second grok parser.

rule_113035 %{parse_group_user_ip} Session terminated: AnyConnect not
enabled or invalid AnyConnect image on the %{greedyData:device_name}

rule_716059 Group %{regex(".*(?= User )"):group} User %{notSpace:usr.name} IP %{ip:source_ip} AnyConnect session resumed connection from IP %{ip:network.client.ip}(.)?
Copy link
Contributor

Choose a reason for hiding this comment

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

What's the difference between ip:source_ip and ip:network.client.ip? Maybe this can also be nested under network? network.source.ip if they represent different things maybe?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

source_ip is the original IP when the session starts, while network.client.ip is the IP used to resume the session.
Sure, I have changed mapping to network.source.ip.

Comment on lines +157 to +158
- "<190>2025-11-20T07:37:58Z: %FTD-6-113039: Group group User test-user
IP 10.10.10.10 AnyConnect_parent session started."
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
- "<190>2025-11-20T07:37:58Z: %FTD-6-113039: Group group User test-user
IP 10.10.10.10 AnyConnect_parent session started."

nit. duplicate

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done

@manan-crest manan-crest requested a review from steveny91 January 22, 2026 10:38
Comment on lines 43 to 45
<br>
<b>Note</b>: To forward Cisco Secure Client logs, syslog must be configured on the Cisco firewall (ASA, FTD, or Meraki) platform that you are using with Cisco Secure Client.
</br>
Copy link
Contributor

Choose a reason for hiding this comment

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

Is there a reason why you're using HTML here instead of Markdown for bolding the note?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

We used HTML here mainly to get some extra spacing above and below the note.

Copy link
Contributor

Choose a reason for hiding this comment

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

I see, thanks. You can leave the <br> tags but I don't think you need to use HTML for the bolding. I'll add a suggestion.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Have made the changes as suggested below.

Comment on lines 191 to 198
If you see the **Port <PORT-NO\> Already in Use** error, see the following instructions. The example below is for `PORT-NO = 514`.

On systems using syslog, if the Agent listens for logs on port 514, the following error can appear in the Agent logs: `Can't start UDP forwarder on port 514: listen udp :514: bind: address already in use`.

This error occurs because by default, Syslog listens on port 514. To resolve this error, take **one** of the following steps:

- Disable syslog, or
- Configure the Agent to listen on a different, available port.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
If you see the **Port <PORT-NO\> Already in Use** error, see the following instructions. The example below is for `PORT-NO = 514`.
On systems using syslog, if the Agent listens for logs on port 514, the following error can appear in the Agent logs: `Can't start UDP forwarder on port 514: listen udp :514: bind: address already in use`.
This error occurs because by default, Syslog listens on port 514. To resolve this error, take **one** of the following steps:
- Disable syslog, or
- Configure the Agent to listen on a different, available port.
On systems using syslog, if the Agent listens for logs on port 514, the following error can appear in the Agent logs: `Can't start UDP forwarder on port 514: listen udp :514: bind: address already in use`.
By default, syslog listens on port 514. To resolve this error, take **one** of the following steps:
- Disable syslog, or
- Configure the Agent to listen on a different, available port.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done

@manan-crest manan-crest requested a review from evazorro January 28, 2026 12:27
@steveny91
Copy link
Contributor

@manan-crest a new validation was recently added can you add a owner field for this integration like so:
https://github.com/DataDog/integrations-core/blob/master/delinea_secret_server/manifest.json#L5

Copy link
Contributor

@evazorro evazorro left a comment

Choose a reason for hiding this comment

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

Thank you for making those changes! One more small suggestion.

@manan-crest manan-crest requested a review from evazorro February 3, 2026 07:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants