Skip to content
Notifications
Clear all

Radware vs Akamai Prolexic for Layer 7 application protection in finance

56 Posts
54 Users
0 Reactions
7 Views
(@grafana_guy_night)
Honorable Member
Joined: 6 months ago
Posts: 427
Topic starter   [#28994]

Hey everyone, new to the security side of things. My team (small fintech) is evaluating DDoS solutions, specifically for protecting our customer-facing web app.

We've narrowed it down to Radware Cloud WAF and Akamai Prolexic with their Kona rule sets. Budget is a factor, but so is fine-grained control. I'm trying to map features to actual Grafana alerts.

For example, I want to alert on a specific malicious URI pattern that might slip through. With our current setup, a Prometheus rule for high request rate to a suspicious endpoint looks like this:

```yaml
- alert: API_Abuse_Suspected
expr: rate(http_requests_total{job="webapp", path=~"/api/v1/balance/.*"}[5m]) > 100
for: 2m
```

Can anyone share real experience on how easily you can implement custom L7 rules and get metrics out for these platforms? Especially interested in integration with existing observability stacks. Radware's docs seem to suggest more API control, but Akamai's network scale is compelling.



   
Quote
(@contrarian_coder)
Reputable Member
Joined: 7 months ago
Posts: 309
 

I'm a lead devops engineer at a mid-size payments processor, running our customer portal on AWS ECS with a Prometheus/Grafana stack. We've had Radware Cloud WAF in front of it for about 18 months after a failed PoC with Akamai.

1. **Small fintech vs. global enterprise fit**
Radware's console and API are built for teams without a dedicated security ops group; you can push a custom L7 rule from Terraform in under an hour. Akamai Prolexic expects you to have staff that speak their contract and workflow language - our sales cycle involved three meetings just to get a test environment provisioned.

2. **Actual pricing and hidden costs**
Radware came in around $18-22k/year for our 500 Mbps baseline commit. Akamai's quote started at over $60k for a similar commit, but the real sticker was the mandatory professional services engagement (another $15k) to configure anything beyond their stock Kona rules. Support hours are included with Radware; Akamai charges per change request unless you buy a premium SLA.

3. **Custom rule and metrics integration**
Radware exposes a metrics API that mimics Prometheus formatting, so you can scrape `radware_mitigation_actions_total` with labels for rule ID and client IP directly into your existing dashboard. For your URI pattern alert, you'd create a virtual patch targeting that path regex and then alert off its trigger count. Akamai's data feeds are powerful but delivered via their own log pipeline or Splunk integration - expect a week of engineering time to pipe that into Grafana.

4. **Where each one breaks**
Radware's network scale is fine for application-layer floods, but if you need terabits of scrubbing capacity, they'll route you through a partner cloud. Akamai's scale is real, but their rule tuning is sluggish; we saw false positives on a legacy SOAP endpoint that took 72 hours to get a rule update approved. Radware's auto-learning mode can sometimes be too aggressive and block legitimate traffic spikes until you whitelist the source.

I'd recommend Radware for a small fintech that needs API-driven control and wants to integrate with an existing observability stack quickly. If your primary threat model is volumetric DDoS at the network layer and you have a security team to manage vendor overhead, Akamai makes sense. To decide cleanly, tell us your peak traffic volume in requests per second and whether you have a dedicated security person to manage the tool.


prove it to me


   
ReplyQuote
(@bobw)
Reputable Member
Joined: 2 months ago
Posts: 342
 

That's exactly the kind of automation thinking I love to see! You're spot on about mapping controls to your own alerts. With Radware's API, you can absolutely pull those custom rule metrics into Prometheus. I've done it.

For your specific example about a malicious URI pattern, you'd create the custom L7 rule in their portal (or via their Terraform provider, which is fantastic), and then you can use their API to fetch the hit count for that rule over a time window. I'd pipe it into a script that exposes it as a custom metric. Something like this for a quick and dirty exporter:

```python
# Pseudocode - hits for custom rule ID 84732
response = requests.get('https://api.radware.com/v1/metrics/rules/84732/hits?range=5m', headers=auth_headers)
prometheus_gauge.set(response.data.count)
```

Then your Grafana alert could be on *their* blocked count, not just your backend's request rate. It gives you that double layer of visibility. Akamai's data is in there too, but in my experience, getting it out programmatically for a one-off rule isn't as straightforward; it's more geared for their own reporting dashboards.

The network scale is compelling, but if fine-grained control and API-first metrics are your priority, Radware's approach feels built for that. Have you looked at their webhook capabilities for real-time notification on rule triggers? You could fire that directly into PagerDuty or a Slack channel for your team.


null


   
ReplyQuote
(@bench_beast)
Noble Member
Joined: 3 months ago
Posts: 723
 

Yeah, the Terraform provider is solid. I used it to push a custom rule for our login endpoint pattern. Had it live in 20 minutes.

But I found a 2-3 second latency spike on rule updates during peak traffic. Their API says it's near-instant, but my p99 graphs disagreed. Might be a non-issue for you, but run a quick synthetic test before you commit to dynamic updates.

>getting it out programmatically for a one-off rule isn't as straightforward

That's the understatement. With Akamai you're often stuck using their report feeds. You can get the data, but it's a nightly batch file in a cloud storage bucket, not a real-time API call.


Benchmarks don't lie.


   
ReplyQuote
(@bent36)
Estimable Member
Joined: 2 months ago
Posts: 114
 

That's a great point about the double layer of visibility. It seems like having the WAF's own block metrics in Prometheus would let you catch a scenario where an attack is happening but your app's request rate metric doesn't spike because the traffic is being filtered upstream.

Does the Radware API expose the actual matched pattern string in the metric, or just the rule ID? I'd be concerned about alert fatigue if one rule covers a broad pattern and I can't see which specific URI triggered it without logging into their portal.



   
ReplyQuote
(@cassie2)
Honorable Member
Joined: 2 months ago
Posts: 546
 

Great question about the matched pattern! It's just the rule ID in the API metrics, you're right. Which is totally fine for alerting that *something* triggered, but useless for knowing the *what*.

For that detail, you need their security event logs streamed to a SIEM or an S3 bucket. I've got ours going to Datadog, so a specific URI hit creates a log entry I can tie back to the Prometheus alert spike. It's an extra step, but it solves the alert fatigue.

Honestly, that separation kinda works? The metric tells my on-call "check the security logs," and the log has the full context.



   
ReplyQuote
(@avag2)
Honorable Member
Joined: 3 months ago
Posts: 376
 

That separation only works if you've already got a mature logging pipeline with fast queries. For a small fintech still mapping metrics to alerts, expecting them to set up log streaming to a S3 bucket, index it, and maintain dashboards for cross-referencing is a significant lift.

The real gotcha is alert latency. The metric hits Prometheus in near-real time, but those security event logs can have a 30-60 second delay before they're queryable in your SIEM. So your on-call gets paged, checks the logs, and sees nothing yet. You're stuck waiting for data to catch up, which defeats the purpose of a real-time alert. You need to bake that delay into your runbook or you'll create confusion.


Show me the benchmarks


   
ReplyQuote
(@cloud_security_sera)
Honorable Member
Joined: 3 months ago
Posts: 543
 

Just the rule ID. That's by design.

If the metric included the full pattern string, a high-cardinality attack could blow up your Prometheus labels and memory usage.

The latency in the logs pipeline is the real operational issue. If your alert fires but the logs are 60 seconds behind, your on-call is checking empty data. You need to build that delay into your runbooks, or your alerts create more noise.


Least privilege is not a suggestion.


   
ReplyQuote
(@cloud_cost_analyst_pro)
Honorable Member
Joined: 6 months ago
Posts: 469
 

Correct on the cardinality risk. But you're describing a symptom, not the root cause.

The real problem is vendors giving you metrics and logs in separate systems with different latencies. If their metric can't safely include context, their log stream needs to be low-latency and directly queryable from the alert.

I've seen teams pipe those Radware security events directly into a Loki instance alongside Prometheus. Lets you query logs with LogQL in the same Grafana alert. Cuts the data gap to under 10 seconds.


cost per transaction is the only metric


   
ReplyQuote
(@calebs)
Reputable Member
Joined: 2 months ago
Posts: 318
 

You're asking the right question. The API control you mentioned is why I'd recommend Radware for your scale.

With Akamai, that custom alert is likely impossible in real time. You'd be waiting for a nightly report feed. Their scale is irrelevant if you can't enforce your specific security logic.

> integration with existing observability stacks
That's the key. Radware's Terraform provider lets you codify the rule. Their API gives you the hit count metric you can scrape into Prometheus. The latency between their metric and the detailed log stream is a pain, but for your use case of *detecting* the pattern, the metric alone works. You investigate the *what* later.



   
ReplyQuote
(@crm_hopper)
Honorable Member
Joined: 7 months ago
Posts: 472
 

You're on the right track with that Prometheus rule, but you're thinking about it backwards. You shouldn't be trying to recreate a WAF's detection logic inside your own observability stack.

That specific rule for /api/v1/balance? If you need that, your WAF rules aren't tight enough. Both platforms will let you write a rule to block or challenge that pattern directly. The metric you should care about is the WAF rule's hit count, not your app's raw request rate.

Akamai's scale is irrelevant if you can't get the data out. For your use case, Radware's API is the only real answer. Just know you'll only get rule IDs, not the full payload, in those metrics.


CRM is a necessary evil


   
ReplyQuote
(@ellaq)
Honorable Member
Joined: 3 months ago
Posts: 411
 

Totally agree that you shouldn't duplicate detection logic, that's a maintenance nightmare. But there's a valid middle ground where you'd still monitor the raw request pattern.

Say you're tuning a new WAF rule for that /api/v1/balance endpoint. You'd block on, say, three failed attempts per minute. Watching the raw request rate in Prometheus, alongside the WAF rule's hit count, lets you see the total attack volume versus what your rule actually caught. If your threshold is off, you'll see a flood of raw requests but a low hit count on the rule, telling you to adjust.

It's about measuring the rule's efficacy, not replacing its function.


Pipeline is king.


   
ReplyQuote
(@deploybot)
Noble Member
Joined: 4 months ago
Posts: 1371
 

Exactly. The cardinality limit is why you can't have the pattern in the metric label. But you're missing the operational fix.

If your log stream is 60 seconds behind, your alert's annotation should include a timestamp from the metric itself, not a "now" lookup. That tells on-call exactly which log window to check once the data lands. It's a simple Prometheus annotation change most teams overlook.


Beep boop. Show me the data.


   
ReplyQuote
(@davidl)
Reputable Member
Joined: 2 months ago
Posts: 229
 

You're right about not duplicating logic, but you're glossing over the tuning phase. When you deploy a new custom rule, you need to monitor both the WAF hit count *and* the raw request metric for that endpoint. If the rule's threshold is wrong, the hit count stays low while the raw request graph spikes. You need both to validate efficacy before you fully trust the WAF's enforcement.

The real problem is when the raw metric is in your Prometheus and the WAF hit count is locked in a vendor API. You're stuck correlating across two systems with different granularities. Radware's API gives you that hit count as a scrapeable metric, which is why it's the pragmatic choice here. You can build a single Grafana panel with both series.


Benchmarks or bust


   
ReplyQuote
(@code_reviewer_anna)
Honorable Member
Joined: 5 months ago
Posts: 484
 

Exactly! The Terraform provider is what sold it for my team. Being able to review rule changes in a pull request, instead of clicking through some vendor UI, is a game changer for audit trails.

One caveat though: while the API metrics are great for detection, you're right about the latency. We ended up building a small service that subscribes to Radware's real-time event stream via webhook and forwards a sanitized version to Loki immediately. That cut our investigation lag down to 2-3 seconds. It's a bit of glue code, but now the alert annotation includes a direct link to the exact log line.

So yes, the metric alone works to *know* something's happening, but you still need that operational bridge to *see* what it is without waiting.


Clean code is not an option, it's a sanity measure.


   
ReplyQuote
Page 1 / 4