{"id":20038562,"url":"https://github.com/yahoo/netchasm","last_synced_at":"2025-05-05T06:32:20.519Z","repository":{"id":41983627,"uuid":"190055434","full_name":"yahoo/NetCHASM","owner":"yahoo","description":"An Automated health checking and server status verification system.","archived":false,"fork":false,"pushed_at":"2023-04-26T15:54:53.000Z","size":1321,"stargazers_count":14,"open_issues_count":11,"forks_count":13,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-08T18:51:38.877Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","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/yahoo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"Contributing.md","funding":null,"license":"LICENSE-Apache","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,"publiccode":null,"codemeta":null}},"created_at":"2019-06-03T17:58:21.000Z","updated_at":"2024-04-16T12:41:00.000Z","dependencies_parsed_at":"2024-11-13T10:40:42.849Z","dependency_job_id":null,"html_url":"https://github.com/yahoo/NetCHASM","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahoo%2FNetCHASM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahoo%2FNetCHASM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahoo%2FNetCHASM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yahoo%2FNetCHASM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yahoo","download_url":"https://codeload.github.com/yahoo/NetCHASM/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252451837,"owners_count":21749997,"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":[],"created_at":"2024-11-13T10:30:00.590Z","updated_at":"2025-05-05T06:32:18.934Z","avatar_url":"https://github.com/yahoo.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NetCHASM\n\u003e An Automated health checking and server status verifiction system.\n\n[![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)\n\nNetCHASM conducts periodic health checks and retrieves load-feed-back data from distributed servers. It stores the information in a backend database and exposes the results through an API. The daemon allows checks over all major protocols HTTP, HTTPS, FTP, FTPS, TCP, and DNS. NetCHASM provides C++ APIS to access the backend databases, and APIs to query the running Daemon in C++, Python and Perl. The Daemon retrieve load-feedback in addition to out-of-band information to control server status for traffic load balancers. The Daemon is configurage using simple YAML configs.\n\n\n## Table of Contents\n\n- [Background](#background)\n- [Install](#install)\n- [Configuration](#configuration)\n- [Usage](#usage)\n- [Security](#security)\n- [API](#api)\n- [Contribute](#contribute)\n- [License](#license)\n\n## Background\n\nLoad balancers need to make routing decisions based on health, load, and manual control flags in near realtime. NetCHASM provides an easy, extensible framework to collect health, load, and control signals periodically from remote servers aggregating the data for our load balancers. The daemon can be configured to check HTTP, HTTPS, FTP, FTPS, TCP and DNS. Remote information about load, and a generic out-of-band XML files can also be periodically retrieved. The Daemon automatically combines redundant checks, schedules checks, and combines the information into a persistent backend and responds through an API. The Daemon conducts checks through a dedicated thread pool allowing checks to be made efficiently in parallel.\n\nWhile NetCHASM can do a lot out of the box, the code is also highly extensible with new check types, back ends, loggers, and control APIs having base classes allowing for easy additions of new types with all base functionality already available. \n\n## Install\n\nNetCHASM uses CMake. For convenience, a Makefile is included allowing a default make, a unit test make, and a doxygen generation. \n\nDependency:\nNetCHASM requires: curl, ssl, cares, MDBM, yaml-cpp, cppunit, and libevent. \n\nMDBM is available at: [https://github.com/yahoo/mdbm](https://github.com/yahoo/mdbm).\n\nOther dependencies can be installed via package utilities.\nFor example, on Fedora/CentOS:\n\n```\ndnf install openssl-devel c-ares c-ares-devel yaml-cpp yaml-cpp-devel libevent libevent-devel make cmake gcc-c++ rapidxml-devel curl-devel cppunit-devel lcov protobuf protobuf-devel librdkafka librdkafka-devel rpm-build\n\nmake build\nsudo make install\n```\n\nUnit tests can be built and run using:\n```\nmake test\n```\n\nDoxygen can be created using:\n```\nmake docs\n```\n\n\n## Configuration\nThe Daemon is configured to run through a master configuration. An example with details on parameters can be found in [master-config-sample.yaml](master-config-sample.yaml).\n\nHost checks are configured through check configuration files. An example showing all valid parameters are include in [check-conf-sample.yaml](check-conf-sample.yaml).\n\n## Usage\n\nOnce the master and check configs are ready, the daemon can be run using:\n\n```\nNetCHASMDaemon \u003cpath to master config\u003e\n```\n\nA variety of tools are included to interact with the daemon.\n\nThe hm_command tool issues commands to the daemon through the built in control socket. \nThe hm_configure tool allows modifying the master config options on the daemon in real time.\nThe hm_dumpconfig tool will write out the check configuration of the running daemon.\nThe hm_reload tool will have the daemon reload updated configs without an interruption in checking.\nThe hm_set tool allows an individual host to be manually set to down.\n\n\n## API\n\nAdditionally, NetCHASM provides a number of APIs. Python and Perl libraries that send commands through the control interface can be found in the API directory. NetCHASM exposes two C++ APIs. The first is the HMStorageAPI that allows a program to access the persistent backend database regardless of the daemon being running. The second API is a client control interface allowing a program full access to the control API of the running daemon.\n\n\n## Contribute\n\nPlease refer to [the contributing.md file](Contributing.md) for information about how to get involved. We welcome issues, questions, and pull requests. Pull Requests are welcome.\n\n## Maintainers\nJoshua Juen: juen1jp@verizonmedia.com\nUthira Mohan: umohan@verizonmedia.com\nRaghavendra Nataraj: raghavendran@verizonmedia.com\n\n## License\n\nThis project is licensed under the terms of the [Apache 2.0](LICENSE-Apache-2.0) open source license. Please refer to [LICENSE](LICENSE) for the full terms.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyahoo%2Fnetchasm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyahoo%2Fnetchasm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyahoo%2Fnetchasm/lists"}