{"id":17639505,"url":"https://github.com/hidracloud/hidra","last_synced_at":"2025-05-05T22:52:57.581Z","repository":{"id":37441698,"uuid":"384925222","full_name":"hidracloud/hidra","owner":"hidracloud","description":"Hidra is a tool to monitor all of your services without making a mess.","archived":false,"fork":false,"pushed_at":"2025-04-16T22:59:22.000Z","size":1115,"stargazers_count":13,"open_issues_count":2,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-05T22:52:26.816Z","etag":null,"topics":["end-to-end-testing","functional-testing","golang","grafana","monitoring","prometheus"],"latest_commit_sha":null,"homepage":"https://hidra.cloud","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hidracloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"JoseCarlosGarcia95"}},"created_at":"2021-07-11T10:57:07.000Z","updated_at":"2025-02-06T08:29:00.000Z","dependencies_parsed_at":"2023-09-22T15:39:37.459Z","dependency_job_id":"e06c9f47-07e6-4a6b-bc14-26647e896f64","html_url":"https://github.com/hidracloud/hidra","commit_stats":{"total_commits":236,"total_committers":9,"mean_commits":26.22222222222222,"dds":0.576271186440678,"last_synced_commit":"2b506ec678e0715de3c9b7475f0cc567caeaa4f2"},"previous_names":[],"tags_count":189,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hidracloud%2Fhidra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hidracloud%2Fhidra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hidracloud%2Fhidra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hidracloud%2Fhidra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hidracloud","download_url":"https://codeload.github.com/hidracloud/hidra/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252590532,"owners_count":21772935,"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":["end-to-end-testing","functional-testing","golang","grafana","monitoring","prometheus"],"created_at":"2024-10-23T05:04:39.596Z","updated_at":"2025-05-05T22:52:57.515Z","avatar_url":"https://github.com/hidracloud.png","language":"Go","funding_links":["https://github.com/sponsors/JoseCarlosGarcia95"],"categories":[],"sub_categories":[],"readme":"# Hidra\n\n[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/hidra)](https://artifacthub.io/packages/search?repo=hidra)\n[![Go Report Card](https://goreportcard.com/badge/github.com/hidracloud/hidra)](https://goreportcard.com/report/github.com/hidracloud/hidra) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/5722/badge)](https://bestpractices.coreinfrastructure.org/projects/5722)\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=hidracloud_hidra\u0026metric=bugs)](https://sonarcloud.io/summary/new_code?id=hidracloud_hidra)\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=hidracloud_hidra\u0026metric=code_smells)](https://sonarcloud.io/summary/new_code?id=hidracloud_hidra)\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=hidracloud_hidra\u0026metric=ncloc)](https://sonarcloud.io/summary/new_code?id=hidracloud_hidra)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=hidracloud_hidra\u0026metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=hidracloud_hidra)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=hidracloud_hidra\u0026metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=hidracloud_hidra)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=hidracloud_hidra\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=hidracloud_hidra)\n[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=hidracloud_hidra\u0026metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=hidracloud_hidra)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=hidracloud_hidra\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=hidracloud_hidra)\n\nHidra allows you to monitor the status of your services without headaches.\n\n## Installation\n\n### [Website monitoring with Hidra: A step-by-step guide](https://github.com/hidracloud/hidra/wiki/Website-Monitoring-with-Hidra:-A-Step%E2%80%90by%E2%80%90Step-Guide)\n\n### Precompiled binaries\n\nPrecompiled binaries for released versions are available in the release section on GitHub. Using the latest production release binary is the recommended way of installing Hidra. You can find latest release [here](https://github.com/hidracloud/hidra/releases/latest)\n\n### Docker images\n\nDocker images are available on [GitHub Container Registry](https://github.com/hidracloud/hidra/pkgs/container/hidra).\n\n### Package repositories\nIf you want to install Hidra easily, please use the package repositories. \n\n```bash\n# Debian/Ubuntu\ncurl https://repo.hidra.cloud/apt/gpg.key | sudo apt-key add -\necho \"deb [trusted=yes] https://repo.hidra.cloud/apt /\" | sudo tee /etc/apt/sources.list.d/hidra.list\napt update\napt install -y hidra\n\n# RedHat/CentOS\ncurl https://repo.hidra.cloud/rpm/gpg.key | sudo rpm --import -\necho \"[hidra]\" | sudo tee /etc/yum.repos.d/hidra.repo\necho \"name=Hidra\" | sudo tee -a /etc/yum.repos.d/hidra.repo\necho \"baseurl=https://repo.hidra.cloud/rpm/\" | sudo tee -a /etc/yum.repos.d/hidra.repo\necho \"enabled=1\" | sudo tee -a /etc/yum.repos.d/hidra.repo\necho \"gpgcheck=1\" | sudo tee -a /etc/yum.repos.d/hidra.repo\n\nyum install -y hidra\n```\n\nAfter installing Hidra, test the installation by running:\n\n```bash\nhidra version\n```\n\nBy default, Hidra will install one systemd unit for running hidra exporter, disabled by default. You can enable it by running:\n\n```bash\nsystemctl enable hidra_exporter --now\n```\nYou can modify the behaviour of exporter by editing the file `/etc/hidra_exporter/config.yml`, and you can add samples directly to /etc/hidra_exporter/samples/ folder, and after adding them, you can reload the service by running:\n\n```bash\nsystemctl reload hidra_exporter\n```\n\n\n### Using install script\n\nYou can use the install script to install Hidra on your system. The script will download the latest release binary and install it in your system. You can find the script [here](https://raw.githubusercontent.com/hidracloud/hidra/main/install.sh).\n\n```bash\nsudo bash -c \"$(curl -fsSL https://raw.githubusercontent.com/hidracloud/hidra/main/install.sh)\"\n```\n\n### Build from source\n\nTo build Hidra from source code, you need:\n\n- Go version 1.19 or greater.\n- [Goreleaser](https://goreleaser.com)\n\nTo build Hidra, run the following command:\n\n```bash\ngoreleaser release --snapshot --rm-dist\n```\n\nYou can find the binaries in the `dist` folder.\n\n## Usage\n\n### Exporter\n\nHidra has support for exposing metrics to Prometheus. If you want to use Hidra in exporter mode, run:\n\n```bash\nhidra exporter /etc/hidra/exporter.yml\n```\n\nYou can find an example of the configuration file [here](https://github.com/hidracloud/hidra/blob/main/configs/hidra/exporter.yml)\n\n#### Grafana\n\nYou can find a Grafana dashboard [here](https://github.com/hidracloud/hidra/blob/main/configs/grafana)\n\n### Test mode\n\nHidra has support for running in test mode. Test mode will allow you to run one time a set of samples, and check if the results are as expected. If you want to use Hidra in test mode, run:\n\n```bash\nhidra test sample1.yml sample2.yml ... samplen.yml\n```\n\nIf you want to exit on error, just add the flag `--exit-on-error`.\n\n### Sample examples\n\nYou can find some sample examples [here](https://github.com/hidracloud/hidra/blob/main/configs/hidra/samples/)\n\n### Compose\n\nYou can find an example of a Compose file [here](https://github.com/hidracloud/hidra/blob/main/compose.yml)\n\n## Samples\n\nSamples are the way Hidra knows what to do. A sample is a YAML file that contains the information needed to run a test. You can find some sample examples [here](https://github.com/hidracloud/hidra/blob/main/configs/hidra/samples). You can also find a sample example below:\n\n```yaml\n# Description of the sample\ndescription: \"This is a sample to test the HTTP plugin\"\n# Tags is a key-value list of tags that will be added to the sample. You can add here whatever you want.\ntags:\n  tenant: \"hidra\"\n# Interval is the time between each execution of the sample.\ninterval: \"1m\"\n# Timeout is the time that Hidra will wait for the sample to finish.\ntimeout: \"10s\"\n# Steps is a list of steps that will be executed in order.\nsteps:\n    # Plugin is the name of the plugin that will be used to execute the step.\n  - plugin: http\n    # Action is the action that will be executed by the plugin.\n    action: request\n    # Parameters is a key-value list of parameters that will be passed to the plugin.\n    parameters:\n      url: https://google.com/\n  - plugin: http\n    action: statusCodeShouldBe\n    parameters:\n      statusCode: 301\n```\n\nYou can find more information about plugins in next section.\n\n## Plugins\n\n- [browser](https://github.com/hidracloud/hidra/blob/main/docs/plugins/browser/README.md)\n- [dns](https://github.com/hidracloud/hidra/blob/main/docs/plugins/dns/README.md)\n- [ftp](https://github.com/hidracloud/hidra/blob/main/docs/plugins/ftp/README.md)\n- [http](https://github.com/hidracloud/hidra/blob/main/docs/plugins/http/README.md)\n- [icmp](https://github.com/hidracloud/hidra/blob/main/docs/plugins/icmp/README.md)\n- [tcp](https://github.com/hidracloud/hidra/blob/main/docs/plugins/tcp/README.md)\n- [tls](https://github.com/hidracloud/hidra/blob/main/docs/plugins/tls/README.md)\n- [udp](https://github.com/hidracloud/hidra/blob/main/docs/plugins/udp/README.md)\n- [string](https://github.com/hidracloud/hidra/blob/main/docs/plugins/string/README.md)\n\n## Development\n\n### Directory structure\n\nThe project follows the [_de facto_ standard Go project layout](https://github.com/golang-standards/project-layout) with the additions below:\n\n- `Containerfile`, `compose.yml`, `Makefile`, `.dockerignore` and `.env.example` contain the configuration and manifests that define the development and runtime environments with [OCI](https://opencontainers.org) containers and [Compose](https://docs.docker.com/compose).\n- `.github` holds the [GitHub Actions](https://github.com/features/actions) CI/CD pipelines.\n\n### Getting started\n\nThis project comes with a containerized environment that has everything necessary to work on any platform without having to install dependencies on the developers' machines.\n\n**TL;TR**\n\n```Shell\nmake\n```\n\n#### Requirements\n\nBefore starting using the project, make sure that the following dependencies are installed on the machine:\n\n- [Git](https://git-scm.com).\n- An [OCI runtime](https://opencontainers.org), like [Podman Desktop](https://podman.io) or [Docker Desktop](https://www.docker.com/products/docker-desktop/).\n- [Compose](https://docs.docker.com/compose/install/).\n\nIt is necessary to install the latest versions before continuing. You may follow the previous links to read the installation instructions.\n\n#### Initializing\n\nFirst, initialize the project and run the environment.\n\n```Shell\nmake\n```\n\nThen, download third-party dependencies.\n\n```Shell\nmake deps\n```\n\nYou may stop the environment by running the following command.\n\n```Shell\nmake down\n```\n\n### Usage\n\nCommands must be run inside the containerized environment by starting a shell in the main container (`make shell`).\n\n#### Running the development server\n\nRun the following command to start the development server:\n\n```Shell\nmake run\n```\n\n\u003e Note that Git is not available in the container, so you should use it from the host machine. It is strongly recommended to use a Git GUI (like [VS Code's](https://code.visualstudio.com/docs/editor/versioncontrol) or [Fork](https://git-fork.com)) instead of the command-line interface.\n\n#### Running tests\n\nTo run all automated tests, use the following command.\n\n```Shell\nmake test\n```\n\n#### Debugging\n\nIt is possible to debug the software with [Delve](https://github.com/go-delve/delve). To run the application in debug mode, run the command below.\n\n```Shell\nmake debug\n```\n\nFor more advanced scenarios, such as debugging tests, you may open a shell in the container and use the Delve CLI directly.\n\n```Shell\nmake shell\ndlv test --listen=:2345 --headless --api-version=2 \u003cpackage\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhidracloud%2Fhidra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhidracloud%2Fhidra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhidracloud%2Fhidra/lists"}