{"id":18960819,"url":"https://github.com/layer5io/getnighthawk","last_synced_at":"2025-04-06T10:11:54.207Z","repository":{"id":39603032,"uuid":"281282775","full_name":"layer5io/getnighthawk","owner":"layer5io","description":"Putting Nighthawk into the hands of many","archived":false,"fork":false,"pushed_at":"2024-04-13T00:40:54.000Z","size":28304,"stargazers_count":116,"open_issues_count":27,"forks_count":107,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-04-13T20:46:15.666Z","etag":null,"topics":["hacktoberfest","load-generator","service-mesh-performance","service-mesh-performance-benchmark","service-mesh-performance-management","smp"],"latest_commit_sha":null,"homepage":"https://getnighthawk.dev","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/layer5io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING-gitflow.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-07-21T03:14:01.000Z","updated_at":"2024-04-15T04:50:49.540Z","dependencies_parsed_at":"2024-04-15T05:07:27.937Z","dependency_job_id":null,"html_url":"https://github.com/layer5io/getnighthawk","commit_stats":null,"previous_names":["layer5io/nighthawk-go"],"tags_count":19,"template":false,"template_full_name":"layer5io/layer5-repo-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/layer5io%2Fgetnighthawk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/layer5io%2Fgetnighthawk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/layer5io%2Fgetnighthawk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/layer5io%2Fgetnighthawk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/layer5io","download_url":"https://codeload.github.com/layer5io/getnighthawk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247464222,"owners_count":20942970,"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":["hacktoberfest","load-generator","service-mesh-performance","service-mesh-performance-benchmark","service-mesh-performance-management","smp"],"created_at":"2024-11-08T14:09:40.915Z","updated_at":"2025-04-06T10:11:54.184Z","avatar_url":"https://github.com/layer5io.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"docs/assets/images/logos/nighthawk/stacked/nighthawk-full.svg\" /\u003e\n\n# Nighthawk\n\n- Project site: https://getnighthawk.dev\n- Project doc: https://docs.google.com/document/d/1lHfMo4iIx2WXFZIspfHyxTsPR1T63_2IV5NUkgxoo0w/edit#\n- Project Slack: http://slack.layer5.io\n\n## What is Nighthawk?\n\nNighthawk is a versatile HTTP load testing tool built out of a need to drill HTTP services with a constant request rate or with an adaptive request rate. Layer5 offers a custom distribution of Nighthawk with intelligent adaptive load controllers to automatically identify optimal configurations for your service mesh deployment. As a Layer 7 performance characterization tool supporting HTTP/HTTPS/HTTP2, Nighthawk is Meshery’s (and Envoy’s) load generator and is written in C++.\n\n## Nighthawk and Meshery\n\nMeshery integrates Nighthawk as one of (currently) three choices of load generator for characterizing and managing the performance of service meshes and their workloads.\nCentric to the advancement of Nighthawk is the Meshery and Service Mesh Performance projects, which enable Nighthawk’s standards-based distributed performance management. The intersection of these projects allow researchers and users to conveniently identify the optimal service mesh configuration while considering their specific environment, application and load. Meshery orchestrates multiple instances of Nighthawk (horizontal scaling) and provides an easy to use interface for Nighthawk’s adaptive load controller capability. \n\n---\n---\n\n# Go-Nighthawk\n\nNighthawk adapter to run service mesh load tests with Meshery.\n\n## Load Generators in Meshery\n\nUsers may prefer to use one load generator over the next given the difference of capabilities between load generators, so Meshery provides a load generator interface (a gRPC interface) behind which a load generator can be implemented. Meshery provides users with choice of which load generator they prefer to use for a given performance test. Users may set their configure their own preference of load generator different that the default load generator.\n\n### What function do load generators in Meshery provide?\n\nLoad generators will provide the capability to run load tests from Meshery. As of today the load generators are embedded as libraries in Meshery and Meshery invokes the load generators APIs with the right load test options to run the load test. At the moment, Meshery has support for HTTP load generators. Support for GRPC and TCP load testing is on the roadmap. Meshery has functional integration with `fortio`, `wrk2`, and `nighthawk`.\n\n### Why support multiple load generators?\n\nDifferent use cases and different opinions call for different approaches to statistical analysis of the performance results. For example, wrk2 accounts for a concept called Coordinated Omission.\n\n### Which are currently supported?\n\n`fortio` - Fortio load testing library, command line tool, advanced echo server and web UI in go (golang). Allows to specify a set query-per-second load and record latency histograms and other useful stats.\n`wrk2` - A constant throughput, correct latency recording variant of wrk.\n`nighthawk` - Enables users to run distributed performance tests to better mimic real-world, distributed systems scenarios.\n\n\u003cdiv\u003e\u0026nbsp;\u003c/div\u003e\n\n## Join the Community!\n\n\u003ca name=\"contributing\"\u003e\u003c/a\u003e\u003ca name=\"community\"\u003e\u003c/a\u003e\nOur projects are community-built and welcome collaboration. 👍 Be sure to see the \u003ca href=\"https://layer5.io/community/handbook\"\u003eLayer5 Community Welcome Guide\u003c/a\u003e for a tour of resources available to you and jump into our \u003ca href=\"https://slack.layer5.io\"\u003eSlack\u003c/a\u003e!\n\n\u003cp style=\"clear:both;\"\u003e\n\u003ca href =\"https://layer5.io/community/meshmates\"\u003e\u003cimg alt=\"MeshMates\" src=\".github/readme/images/Layer5-Community-Sign_square.png\" style=\"margin-right:10px; margin-bottom:7px;\" width=\"28%\" align=\"left\" /\u003e\u003c/a\u003e\n\u003ch3\u003eFind your MeshMate\u003c/h3\u003e\n\n\u003cp\u003eMeshMates are experienced Layer5 community members, who will help you learn your way around, discover live projects and expand your community network. \nBecome a \u003cb\u003eMeshtee\u003c/b\u003e today!\u003c/p\u003e\n\nFind out more on the \u003ca href=\"https://layer5.io/community\"\u003eLayer5 community\u003c/a\u003e. \u003cbr /\u003e\n\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e\n\u003c/p\u003e\n\n\u003cdiv\u003e\u0026nbsp;\u003c/div\u003e\n\n\u003ca href=\"https://slack.meshery.io\"\u003e\n\n\u003cpicture align=\"right\"\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\".github/readme/images//slack-dark-128.png\"  width=\"110px\" align=\"right\" style=\"margin-left:10px;margin-top:10px;\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\".github/readme/images//slack-128.png\" width=\"110px\" align=\"right\" style=\"margin-left:10px;padding-top:5px;\"\u003e\n  \u003cimg alt=\"Shows an illustrated light mode meshery logo in light color mode and a dark mode meshery logo dark color mode.\" src=\".github/readme/images//slack-128.png\" width=\"110px\" align=\"right\" style=\"margin-left:10px;padding-top:13px;\"\u003e\n\u003c/picture\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://meshery.io/community\"\u003e\u003cimg alt=\"Layer5 Cloud Native Community\" src=\".github/readme/images//community.svg\" style=\"margin-right:8px;padding-top:5px;\" width=\"140px\" align=\"left\" /\u003e\u003c/a\u003e\n\n\u003cp\u003e\n✔️ \u003cem\u003e\u003cstrong\u003eJoin\u003c/strong\u003e\u003c/em\u003e any or all of the weekly meetings on \u003ca href=\"https://calendar.google.com/calendar/b/1?cid=bGF5ZXI1LmlvX2VoMmFhOWRwZjFnNDBlbHZvYzc2MmpucGhzQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20\"\u003ecommunity calendar\u003c/a\u003e.\u003cbr /\u003e\n✔️ \u003cem\u003e\u003cstrong\u003eWatch\u003c/strong\u003e\u003c/em\u003e community \u003ca href=\"https://www.youtube.com/playlist?list=PL3A-A6hPO2IMPPqVjuzgqNU5xwnFFn3n0\"\u003emeeting recordings\u003c/a\u003e.\u003cbr /\u003e\n✔️ \u003cem\u003e\u003cstrong\u003eAccess\u003c/strong\u003e\u003c/em\u003e the \u003ca href=\"https://drive.google.com/drive/u/4/folders/0ABH8aabN4WAKUk9PVA\"\u003eCommunity Drive\u003c/a\u003e by completing a community \u003ca href=\"https://layer5.io/newcomer\"\u003eMember Form\u003c/a\u003e.\u003cbr /\u003e\n✔️ \u003cem\u003e\u003cstrong\u003eDiscuss\u003c/strong\u003e\u003c/em\u003e in the \u003ca href=\"https://discuss.layer5.io/\"\u003eCommunity Forum\u003c/a\u003e.\u003cbr /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003ci\u003eNot sure where to start?\u003c/i\u003e Grab an open issue with the \u003ca href=\"https://github.com/issues?q=is%3Aopen+is%3Aissue+archived%3Afalse+org%3Alayer5io+org%3Ameshery+org%3Aservice-mesh-performance+org%3Aservice-mesh-patterns+label%3A%22help+wanted%22+\"\u003ehelp-wanted label\u003c/a\u003e.\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flayer5io%2Fgetnighthawk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flayer5io%2Fgetnighthawk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flayer5io%2Fgetnighthawk/lists"}