{"id":17300863,"url":"https://github.com/chtjonas/pingflux","last_synced_at":"2026-04-24T11:35:22.566Z","repository":{"id":38826417,"uuid":"234907924","full_name":"CHTJonas/pingflux","owner":"CHTJonas","description":"Monitor ICMP round-trip time/packet loss and store the data in InfluxDB","archived":false,"fork":false,"pushed_at":"2023-05-31T06:58:42.000Z","size":417,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-26T21:49:18.513Z","etag":null,"topics":["connection","go","golang","icmp","influxdb","latency","linux","monitoring","network-monitoring","network-observability","observability","ping"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CHTJonas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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":"2020-01-19T13:49:47.000Z","updated_at":"2023-03-22T19:20:37.000Z","dependencies_parsed_at":"2024-06-20T21:51:10.678Z","dependency_job_id":"55280ceb-d9b3-411d-b898-d50530d97300","html_url":"https://github.com/CHTJonas/pingflux","commit_stats":{"total_commits":121,"total_committers":3,"mean_commits":"40.333333333333336","dds":0.09090909090909094,"last_synced_commit":"6b764ba7511ccd5712d35e33e8961819b98b7b2d"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/CHTJonas/pingflux","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CHTJonas%2Fpingflux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CHTJonas%2Fpingflux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CHTJonas%2Fpingflux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CHTJonas%2Fpingflux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CHTJonas","download_url":"https://codeload.github.com/CHTJonas/pingflux/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CHTJonas%2Fpingflux/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262022684,"owners_count":23246372,"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":["connection","go","golang","icmp","influxdb","latency","linux","monitoring","network-monitoring","network-observability","observability","ping"],"created_at":"2024-10-15T11:30:42.953Z","updated_at":"2026-04-24T11:35:22.533Z","avatar_url":"https://github.com/CHTJonas.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pingflux\n\npingflux is a small application written in Go that measures the ICMP round-trip time and packet loss between the local host and a set of remote endpoints. It then stores these data in an InfluxDB database. IP addresses are pinged individually whereas hostnames are first resolved, each of their IPv4 and IPv6 addresses then being pinged concurrently.\n\n## Usage\n\nOn Linux and macOS you will need to run the binary with `CAP_NET_RAW` privileges in order to send ICMP packets (running as root is strongly discouraged). You can do this by running `sudo setcap cap_net_raw=+ep /usr/local/bin/pingflux` in a terminal.\n\npingflux loads its configuration settings by looking for a `config.yml` file in either `/etc/pingflux/`, `$HOME/.pingflux` or the current working directory in that order of precedence. Remote hosts are listed in groups which share a common set of key-value tags in InfluxDB. The number of pings sent to each host and the interval in seconds at which these pings are sent to each host are configurable using the `count` and `interval` options respectively. A count of 10 at an interval of 60 means that every 10 pings will be sent in quick succession to each host every 60 seconds.\n\nTo minimise concurrent HTTP requests and improve performance, data are bundled together and submitted to InfluxDB in batches, the size of which is controlled by the `batch-size` option. The default of 25 is optimised for very large numbers of hosts however you may wish to reduce this substantially if you are only pinging a few hosts.\n\nThe `datastore` section specifies the backend database that pingflux will use to store data, although at this time only InfluxDB is supported. The hostname, port and database name can all be configured together with the `secure` value which may be set to `true` to enable HTTPS.\n\nAn example config file might be:\n\n```yaml\noptions:\n  count: 10\n  interval: 60\n  batch-size: 25\n\ndatastore:\n  influx:\n    hostname: 127.0.0.1\n    port: 8086\n    path: /\n    username: user\n    password: pass\n    database: pingflux\n    secure: false\n\ngroups:\n  - tag: value\n    another-tag: different-value\n    hosts:\n      host.example.com\n      1.1.1.1\n\n  - key: value\n    other-key: other-value\n    hosts:\n      host.example.net\n      9.9.9.9\n```\n\n## Installation\n\nPre-built binaries for a variety of operating systems and architectures are available to download from [GitHub Releases](https://github.com/CHTJonas/pingflux/releases). If you wish to compile from source then you will need a suitable [Go toolchain installed](https://golang.org/doc/install). After that just clone the project using Git and run Make! Cross-compilation is easy in Go so by default we build for all targets and place the resulting executables in `./bin`:\n\n```bash\ngit clone https://github.com/CHTJonas/pingflux.git\ncd pingflux\nmake clean \u0026\u0026 make all\n```\n\nFor Linux users there is a [sample systemd service file](https://github.com/CHTJonas/pingflux/blob/main/pingflux.service) available which you can place at `/etc/systemd/system/pingflux.service` and then activate:\n\n```bash\nsudo systemctl daemon-reload\nsudo systemctl enable --now pingflux\n```\n\n## Copyright\n\npingflux is licensed under the [BSD 2-Clause License](https://opensource.org/licenses/BSD-2-Clause).\n\nCopyright (c) 2019 Charlie Jonas.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchtjonas%2Fpingflux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchtjonas%2Fpingflux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchtjonas%2Fpingflux/lists"}