check / check (push) Waiting to run
Every requirement the second review found in two to five places is now stated once, with links from the other places. "Risks the design has to handle", "Rollout per service" and most of "Architecture" are gone, their two points of their own moved to "Attack detection" and "Anomaly thresholds". The request log's fields, the metrics and the image's contents move to docs/request-log.md, docs/metrics.md and docs/image.md, each linked from the spec. The off rule names SWWAF_LOOKUP_SOURCE and SWWAF_WAF_MODE, the reputation bound is given, and the six Core Rule Set changes are a numbered list. Model: fable-5-1
3.1 KiB
3.1 KiB
The metrics
GET /_smallwebwaf/metrics answers in the Prometheus text format. The
requirements are under "Metrics endpoint" in SPEC.md; this file
lists the metrics. Every metric carries the label instance, set to
SWWAF_INSTANCE_NAME; Prometheus keeps it as exported_instance unless the
scrape sets honor_labels: true. No metric carries a client's address.
Traffic
smallwebwaf_requests_total,smallwebwaf_request_bytes_totalandsmallwebwaf_response_bytes_total, bystatus_classsuch as2xxand byaction;smallwebwaf_request_duration_secondsandsmallwebwaf_upstream_duration_seconds, as histograms;smallwebwaf_requests_in_flight.
Limits and bans
smallwebwaf_rate_limit_hits_total, bywindowand bykind(requests,bytesorrefusals);smallwebwaf_size_and_time_limit_hits_total, bylimit, the setting passed;smallwebwaf_offences_total, bykind;smallwebwaf_bans_made_total, bycause;smallwebwaf_active_bansandsmallwebwaf_permanent_bans.
Attack detection
smallwebwaf_rule_matches_total, byrule_idandaction, andsmallwebwaf_rules_loaded;smallwebwaf_waf_matches_total, bymodeandrule_id, for the rules that fired.
Countries and AS numbers
For the SWWAF_METRICS_TOP_N busiest of each, the rest as other:
smallwebwaf_country_requests_total,smallwebwaf_country_request_bytes_total,smallwebwaf_country_response_bytes_totalandsmallwebwaf_country_list_refusals_total, bycountry;smallwebwaf_asn_requests_total,smallwebwaf_asn_request_bytes_totalandsmallwebwaf_asn_response_bytes_total, byasn.
Lookups
smallwebwaf_geojs_requests_totalandsmallwebwaf_geojs_failures_total;smallwebwaf_geojs_unanswered_total: the requests that needed an answer and went on without it;- with the file source,
smallwebwaf_lookup_database_last_read_timestamp_secondsandsmallwebwaf_lookup_database_read_failures_total.
Reputation sources
By source: each list's URL, each zone, and abuseipdb:
smallwebwaf_reputation_hits_total,smallwebwaf_reputation_queries_totalandsmallwebwaf_reputation_failures_total;smallwebwaf_reputation_last_fetch_timestamp_seconds, for a list;smallwebwaf_reputation_daily_budget_remaining, for AbuseIPDB.
State files
By file:
smallwebwaf_state_file_writes_total,smallwebwaf_state_file_write_failures_total,smallwebwaf_state_file_last_write_timestamp_secondsandsmallwebwaf_state_file_size_bytes;smallwebwaf_state_file_edits_taken_in_totalandsmallwebwaf_state_file_edits_set_aside_total;smallwebwaf_tracked_clients: the clients in the table.
Remote log, alerts and the process
- while a syslog server is set,
smallwebwaf_remote_log_lines_sent_total,smallwebwaf_remote_log_lines_dropped_totalandsmallwebwaf_remote_log_buffer_depth; - by
destination,smallwebwaf_alerts_sent_total,smallwebwaf_alerts_failed_total,smallwebwaf_alerts_suppressed_totalandsmallwebwaf_alerts_dropped_total; - Go's own
go_metrics and the process'sprocess_metrics.