Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to send ASM logs to a HTTP endpoint via telemetry streaming #280

Open
harshnasitcrest opened this issue Sep 16, 2024 · 5 comments
Open
Labels
bug Something isn't working untriaged Issue needs to be reviewed for validity

Comments

@harshnasitcrest
Copy link

harshnasitcrest commented Sep 16, 2024

Environment

  • Telemetry Streaming Version: 1.36.0-1
  • BIG-IP Version: 17.1.0.1

Summary

I'm able to generate ASM logs deployed in our on-premise setup but unable to send it via telemetry streaming to a HTTP endpoint (consumer type is Generic_HTTP).

Steps To Reproduce

Steps to reproduce the behavior:

  1. Submit the following declaration:
{
    "class": "Telemetry",
     "My_ASM_Listener": {
        "class": "Telemetry_Listener",
        "port": 6514,  
        "trace": true
        "match": "ASM",
        "actions": [
            {
                "setTag": {
                    "application": "`ASM`"
                        },
                "enable": true
                }
            ]


    },
    "My_Consumer": {
        "class": "Telemetry_Consumer",
        "type": "Generic_HTTP",
        "host": "10.50.9.132",
        "protocol": "http",
        "port": 5151,
        "path": "/post",
        "headers": [
            {"name": "Authorization", "value": "12345689"},
            {"name": “ID1", "value": "ABC"},
            {"name": "ID2", "value": "XYZ"}


        ],
        "actions": [
            {
                "JMESPath": {},
                "expression": "{ logs: [@] }"
            }
        ]
    }
}
  1. On submitting above declaration, we're getting 200 response code.
  2. Verified that ASM logs are generated in the backend at /var/log/asmdata1/request_log and shown on the F5 UI at: Security --> Events logs --> Application --> Requests.
  3. Log level was set to debug but unable to see API failure logs. Following are the contents of logs at /var/log/restnoded/restnoded.log:

Screenshot 1:
Screenshot 2024-09-11 at 12 33 50 PM

Screenshot 2:
unnamed
6. Verified that enough resources are provided for this setup to work.

Expected Behavior

  • Logs should be sent via Telemetry Streaming to HTTP endpoint defined.
  • Logs should indicate the failure and document what should be the next troubleshooting steps. Followed this troubleshooting guide and tried multiple steps but didn't help.
@harshnasitcrest harshnasitcrest added bug Something isn't working untriaged Issue needs to be reviewed for validity labels Sep 16, 2024
@pgouband
Copy link

Hi @harshnasitcrest,

Can you try to disable system poller and test it?
If the issue occurs even with system poller disabled, you should increase the amount of memory for host system.

@harshnasitcrest
Copy link
Author

harshnasitcrest commented Sep 19, 2024

Referring to https://clouddocs.f5.com/products/extensions/f5-telemetry-streaming/latest/telemetry-system.html#system-poller , I disabled system poller using following declaration:

"My_System_Minimal": {
     "class": "Telemetry_System",
     "systemPoller": {
         "enable": false
     }
 }

I increased memory and CPU both after disabling system poller.

Somehow, I don't see memory and tomcat restart errors now, but I still don't see any logs regarding failures in making API call to destination.

Does the last log saying Applying restrictions to incoming data causing the trouble? Any other steps I can try? Is it usually this cumbersome to configure and send ASM events to HTTP server?

@petrov-serg
Copy link
Contributor

what is your full declaration? (you can mask/remove secrets from it)

@harshnasitcrest
Copy link
Author

harshnasitcrest commented Sep 30, 2024

what is your full declaration? (you can mask/remove secrets from it)

@petrov-serg Here's the full declaration that I posted using POST request to https://<ip>/mgmt/shared/telemetry/declareAPI:

{
    "class": "Telemetry",
    "My_ASM_Listener": {
        "class": "Telemetry_Listener",
        "port": 6514,
        "trace": true,
        "match": "ASM",
        "actions": [
            {
                "setTag": {
                    "application": "`ASM`"
                },
                "enable": true
            }
        ]
    },
    "My_System_Minimal": {
        "class": "Telemetry_System",
        "systemPoller": {
            "enable": false
        }
    },
    "My_Consumer": {
        "class": "Telemetry_Consumer",
        "type": "Generic_HTTP",
        "host": "10.50.9.132",
        "protocol": "http",
        "port": 5151,
        "path": "/post",
        "headers": [
            {
                "name": "Authorization",
                "value": "12345689"
            },
            {
                "name": "ID1",
                "value": "ABC"
            },
            {
                "name": "ID2",
                "value": "XYZ"
            }
        ],
        "actions": [
            {
                "JMESPath": {},
                "expression": "{ logs: [@] }"
            }
        ]
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working untriaged Issue needs to be reviewed for validity
Projects
None yet
Development

No branches or pull requests

3 participants