Repository navigation
Expand file tree
/
Copy pathflow_api.xml
More file actions
49 lines (34 loc) · 1.58 KB
/
Copy pathflow_api.xml
File metadata and controls
49 lines (34 loc) · 1.58 KB
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<Flow name="ApiLogPipeline" mapping="api">
<Input directory="data/input/api"
format="csv"
separator=","
staging="data/staging/api"
archive="data/archive/api"
quarantine="data/quarantine/api" />
<Rejected directory="data/rejected/api" separator=";" />
<Pipeline chunkSize="1000">
<Let name="GatewayOverheadMs" value="10" type="int" />
<Let name="RetryLatencyPenaltyMs" value="150" type="int" />
<Validate column="StatusCode" operator=">=" value="100" error="API status code must be >= 100" />
<Validate column="StatusCode" operator="<=" value="599" error="API status code must be <= 599" />
<Filter column="Endpoint" operator="!=" value="/metrics" />
<Transform column="Method" function="toUppercase" />
<Transform column="UserId" function="decodeHex" />
<Operation column="ResponseTimeMs" operator="+=" variable="GatewayOverheadMs" />
<When column="StatusCode" operator=">=" value="500">
<Operation column="ResponseTimeMs" operator="+=" variable="RetryLatencyPenaltyMs" />
</When>
<When column="ResponseTimeMs" operator=">=" value="500">
<Log type="warning" column="ResponseTimeMs" message="Elevated API latency: {} ms" />
</When>
<When>
<Any>
<Condition column="StatusCode" operator=">=" value="500" />
<Condition column="ResponseTimeMs" operator=">=" value="2000" />
</Any>
<Log type="error" message="Critical API anomaly: 5xx server failure or extreme latency" />
</When>
<Log type="detail" column="Endpoint" message="Processed API service call: {}" />
</Pipeline>
<Output directory="data/output" format="csv" separator=";" />
</Flow>