{"id":13576368,"url":"https://github.com/oracle/fdr","last_synced_at":"2025-07-03T14:35:52.134Z","repository":{"id":66212417,"uuid":"220031600","full_name":"oracle/fdr","owner":"oracle","description":"Flight Data Recorder to enable \"always on\" diagnosability \u0026 observability","archived":false,"fork":false,"pushed_at":"2023-11-01T18:04:48.000Z","size":47,"stargazers_count":14,"open_issues_count":7,"forks_count":5,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-24T13:21:25.442Z","etag":null,"topics":["debugfs","diagnostics","ftrace","observability","static-probes","trace-cmd"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"upl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oracle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-11-06T15:41:23.000Z","updated_at":"2024-11-02T03:22:25.000Z","dependencies_parsed_at":"2023-02-21T23:15:54.593Z","dependency_job_id":"4f2ee867-05e9-447a-864b-aef8fdb2233e","html_url":"https://github.com/oracle/fdr","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle%2Ffdr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle%2Ffdr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle%2Ffdr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle%2Ffdr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oracle","download_url":"https://codeload.github.com/oracle/fdr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248129577,"owners_count":21052598,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["debugfs","diagnostics","ftrace","observability","static-probes","trace-cmd"],"created_at":"2024-08-01T15:01:09.657Z","updated_at":"2025-04-09T23:30:59.071Z","avatar_url":"https://github.com/oracle.png","language":"C","readme":"# Flight Data Recorder\n\n## Description\n\nThe flight data recorder (fdr) is a daemon which enables ftrace probes,\nharvests ftrace data and (optionally) writes the data to a file.\n\nThe behavior of fdr is defined by configuration files stored in\n```/etc/fdr.d```.  During service startup, fdr will process each file in\nthe directory which has the suffix of .conf.  If new config files\nare added to the fdr.d directory, then the service must be restarted\nto recognize the new configuration information.\n\nfdr is controlled by ```systemd(8)``` on systems where systemd is\navailable.  Error messages from fdr can be viewed via systemctl,\nfor example, ```systemctl status -l fdr```.\n\n## Configuration File Syntax\n\nThe following keywords and options are recognized\n\n### instance iname [buffer-size]\n\nCreate a new ftrace instance called \"iname\".  This instance\nwill appear in ```/sys/kernel/debug/tracing/instances```\n\nThe optional buffer-size parameter can be used to control\nthe size of the ftrace buffers for this instance in the\nkernel.  A suffix of 'k', 'K', 'm', 'M', 'g' or 'G' may be\nused to specify kilobytes, megabytes or gigabytes.\n\n### modprobe module-name\n\nForce the named module to be loaded by fdr.  This can be\nuseful when the module is normally loaded on demand and\nthe probes cannot be enabled until the module is loaded.\n\n### enable subsystem-name/probe-name [filter]\n\nEnable an ftrace probe in the specified subsystem.  Both\nthe subsystem name and probe name are defined by the kernel.\n\nThe optional filter parameter allows an ftrace filter to\nbe set as well.  This will limit the amount of data being\nemitted.  The syntax of the filter language is\ndefined by ftrace itself and the parameters are defined\nby the static tracepoint being enabled in the kernel.\n\n### enable subsystem-name/all\n\nEnable all ftrace probes for the subsystem.\n\n### disable subsystem-name/probe-name\n\nDisable an ftrace probe in the specified subsystem.  This\ncan be useful to disable selective probes when the \"ALL\"\nkeyword has been used.\n\n### disable subsystem-name/all\n\nDisable all probes in the specified subsystem.\n\n### saveto file-name [maxsize]\n\nSave the output of enabled probes to the named file.  If\nthe optional maxsize parameter is given, the daemon will\ninitiate a log rotation, see [Log Rotation](README.md#log-rotation) below.\nA suffix\nof 'k', 'K', 'm', 'M', 'g' or 'G' may be used to specify\nkilobytes, megabytes or gigabytes.\n\nIf no saveto directive is present, then fdr will create the\ninstance and enable the probes.  In this case, the data\ncan be harvested manually by reading:\n\n```\n/sys/kernel/debug/tracing/instances/iname/trace_pipe\n```\n\nThe ftrace buffers in the kernel are circular. If no\nprocess harvests the data, new data will overwrite old data.\n\n### minfree value\n\nLimit the output by the daemon based on free space in the\nfile system for the save file.  If free space percentage is\nbelow the specified value, no output will be written.\n\nIf no minfree directive is present, fdr will use 5% by\ndefault.\n\n## Log Rotation\n\nfdr can use ```logrotate(8)``` to manage the output files.  By convention,\n``` /etc/logrotate.d/instance-name ``` controls the behavior of logrotate.\n\nfdr will also invoke logrotate directly at startup and when reaching\nthe maxsize limit for the save file.\n\n## See Also\n\n[trace-cmd](https://lwn.net/Articles/410200/)\n\n[ftrace documentation](https://www.kernel.org/doc/Documentation/trace/ftrace.txt)\n\n## Building \u0026 Installing\n\nA Makefile is provided with this repository to facilitate building\nand installing fdr.  Simply type `make` to build fdr and type\n`make install` to install it\n\nThe Makefile depends on the C compiler (provided by the gcc rpm),\nthe `install` tool (provided by the coreutils rpm) as well as\nmake inself (provided by make rpm).\n\nThe source code itself depends on standard header files such\nas ```\u003cstdio.h\u003e``` (provided by glibc-headers).\n\n## Contributing\n\nThis project welcomes contributions from the community. Before submitting a pull request, please [review our contribution guide](./CONTRIBUTING.md)\n\n## Security\n\nPlease consult the [security guide](./SECURITY.md) for our responsible security vulnerability disclosure process\n\n## License\n\nThis repository is licensed under the \"Universal Permissive\nLicense\" (UPL).  See [LICENSE](/LICENSE) in this repository for\nmore information.\n","funding_links":[],"categories":["C"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foracle%2Ffdr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foracle%2Ffdr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foracle%2Ffdr/lists"}