Anonymous reporting
The best way of supporting us in Otoroshi developement is to enable Anonymous reporting.
Details
When this feature is active, Otoroshi perdiodically send anonymous information about its configuration.
This information helps us to know how Otoroshi is used, it’s a precious hint to prioritise our roadmap.
Below is an example of what is send by Otoroshi. You can find more information about these fields either on entities documentation or by reading the source code.
{
"@timestamp": 1679514537259,
"timestamp_str": "2023-03-22T20:48:57.259+01:00",
"@id": "4edb54171-8156-4947-b821-41d6c2bd1ba7",
"otoroshi_cluster_id": "1148aee35-a487-47b0-b494-a2a44862c618",
"otoroshi_version": "16.0.0-dev",
"java_version": {
"version": "11.0.16.1",
"vendor": "Eclipse Adoptium"
},
"os": {
"name": "Mac OS X",
"version": "13.1",
"arch": "x86_64"
},
"datastore": "file",
"env": "dev",
"features": {
"snow_monkey": false,
"clever_cloud": false,
"kubernetes": false,
"elastic_read": true,
"lets_encrypt": false,
"auto_certs": false,
"wasm_manager": true,
"backoffice_login": false
},
"stats": {
"calls": 3823,
"data_in": 480406,
"data_out": 4698261,
"rate": 0,
"duration": 35.89899494949495,
"overhead": 24.696984848484846,
"data_in_rate": 0,
"data_out_rate": 0,
"concurrent_requests": 0
},
"engine": {
"uses_new": true,
"uses_new_full": false
},
"cluster": {
"mode": "Leader",
"all_nodes": 1,
"alive_nodes": 1,
"leaders_count": 1,
"workers_count": 0,
"nodes": [
{
"id": "node_15ac62ec3-3e0d-48c1-a8ea-15de97088e3c",
"os": {
"name": "Mac OS X",
"version": "13.1",
"arch": "x86_64"
},
"java_version": {
"version": "11.0.16.1",
"vendor": "Eclipse Adoptium"
},
"version": "16.0.0-dev",
"type": "Leader",
"cpu_usage": 10.992902320605205,
"load_average": 44.38720703125,
"heap_used": 527,
"heap_size": 2048,
"relay": true,
"tunnels": 0
}
]
},
"entities": {
"scripts": {
"count": 0,
"by_kind": {}
},
"routes": {
"count": 24,
"plugins": {
"min": 1,
"max": 26,
"avg": 4
}
},
"router_routes": {
"count": 27,
"http_clients": {
"ahc": 25,
"akka": 2,
"netty": 0,
"akka_ws": 0
},
"plugins": {
"min": 1,
"max": 26,
"avg": 4
}
},
"route_compositions": {
"count": 1,
"plugins": {
"min": 1,
"max": 1,
"avg": 1
},
"by_kind": {
"global": 1
}
},
"apikeys": {
"count": 6,
"by_kind": {
"disabled": 0,
"with_rotation": 0,
"with_read_only": 0,
"with_client_id_only": 0,
"with_constrained_services": 0,
"with_meta": 2,
"with_tags": 1
},
"authorized_on": {
"min": 1,
"max": 4,
"avg": 2
}
},
"jwt_verifiers": {
"count": 6,
"by_strategy": {
"pass_through": 6
},
"by_alg": {
"HSAlgoSettings": 6
}
},
"certificates": {
"count": 9,
"by_kind": {
"auto_renew": 6,
"exposed": 6,
"client": 1,
"keypair": 1
}
},
"auth_modules": {
"count": 8,
"by_kind": {
"basic": 7,
"oauth2": 1
}
},
"service_descriptors": {
"count": 3,
"plugins": {
"old": 0,
"new": 0
},
"by_kind": {
"disabled": 1,
"fault_injection": 0,
"health_check": 1,
"gzip": 0,
"jwt": 0,
"cors": 1,
"auth": 0,
"protocol": 0,
"restrictions": 0
}
},
"teams": {
"count": 2
},
"tenants": {
"count": 2
},
"service_groups": {
"count": 2
},
"data_exporters": {
"count": 10,
"by_kind": {
"elastic": 5,
"file": 2,
"metrics": 1,
"console": 1,
"s3": 1
}
},
"otoroshi_admins": {
"count": 5,
"by_kind": {
"simple": 2,
"webauthn": 3
}
},
"backoffice_sessions": {
"count": 1,
"by_kind": {
"simple": 1
}
},
"private_apps_sessions": {
"count": 0,
"by_kind": {}
},
"tcp_services": {
"count": 0
}
},
"plugins_usage": {
"cp:otoroshi.next.plugins.AdditionalHeadersOut": 2,
"cp:otoroshi.next.plugins.DisableHttp10": 2,
"cp:otoroshi.next.plugins.OverrideHost": 27,
"cp:otoroshi.next.plugins.TailscaleFetchCertificate": 1,
"cp:otoroshi.next.plugins.OtoroshiInfos": 6,
"cp:otoroshi.next.plugins.MissingHeadersOut": 2,
"cp:otoroshi.next.plugins.Redirection": 2,
"cp:otoroshi.next.plugins.OtoroshiChallenge": 5,
"cp:otoroshi.next.plugins.BuildMode": 2,
"cp:otoroshi.next.plugins.XForwardedHeaders": 2,
"cp:otoroshi.next.plugins.NgLegacyAuthModuleCall": 2,
"cp:otoroshi.next.plugins.Cors": 4,
"cp:otoroshi.next.plugins.OtoroshiHeadersIn": 2,
"cp:otoroshi.next.plugins.NgDefaultRequestBody": 1,
"cp:otoroshi.next.plugins.NgHttpClientCache": 1,
"cp:otoroshi.next.plugins.ReadOnlyCalls": 2,
"cp:otoroshi.next.plugins.RemoveHeadersIn": 2,
"cp:otoroshi.next.plugins.JwtVerificationOnly": 1,
"cp:otoroshi.next.plugins.ApikeyCalls": 3,
"cp:otoroshi.next.plugins.WasmAccessValidator": 3,
"cp:otoroshi.next.plugins.WasmBackend": 3,
"cp:otoroshi.next.plugins.IpAddressAllowedList": 2,
"cp:otoroshi.next.plugins.AuthModule": 4,
"cp:otoroshi.next.plugins.RemoveHeadersOut": 2,
"cp:otoroshi.next.plugins.IpAddressBlockList": 2,
"cp:otoroshi.next.proxy.ProxyEngine": 1,
"cp:otoroshi.next.plugins.JwtVerification": 3,
"cp:otoroshi.next.plugins.GzipResponseCompressor": 2,
"cp:otoroshi.next.plugins.SendOtoroshiHeadersBack": 3,
"cp:otoroshi.next.plugins.AdditionalHeadersIn": 4,
"cp:otoroshi.next.plugins.SOAPAction": 1,
"cp:otoroshi.next.plugins.NgLegacyApikeyCall": 6,
"cp:otoroshi.next.plugins.ForceHttpsTraffic": 2,
"cp:otoroshi.next.plugins.NgErrorRewriter": 1,
"cp:otoroshi.next.plugins.MissingHeadersIn": 2,
"cp:otoroshi.next.plugins.MaintenanceMode": 3,
"cp:otoroshi.next.plugins.RoutingRestrictions": 2,
"cp:otoroshi.next.plugins.HeadersValidation": 2
}
}
Toggling
Anonymous reporting can be toggled any time using :
- the UI (Features > Danger zone > Send anonymous reports)
otoroshi.anonymous-reporting.enabled
configurationOTOROSHI_ANONYMOUS_REPORTING_ENABLED
env variable