{"id":16388792,"url":"https://github.com/superq/smokeping_prober","last_synced_at":"2025-05-14T21:06:18.610Z","repository":{"id":34357693,"uuid":"156078712","full_name":"SuperQ/smokeping_prober","owner":"SuperQ","description":"Prometheus style smokeping","archived":false,"fork":false,"pushed_at":"2025-05-01T06:37:10.000Z","size":1559,"stargazers_count":640,"open_issues_count":23,"forks_count":77,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-05-12T04:44:14.090Z","etag":null,"topics":["latency","latency-monitor","monitoring-tool","prometheus","smokeping"],"latest_commit_sha":null,"homepage":null,"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/SuperQ.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null}},"created_at":"2018-11-04T12:15:39.000Z","updated_at":"2025-05-09T09:01:41.000Z","dependencies_parsed_at":"2023-02-14T15:31:16.591Z","dependency_job_id":"1e66e9c4-4afd-4ff6-b36b-8d0eb3b79541","html_url":"https://github.com/SuperQ/smokeping_prober","commit_stats":{"total_commits":118,"total_committers":14,"mean_commits":8.428571428571429,"dds":0.364406779661017,"last_synced_commit":"71f17c17eef4eb8b3d2dbd2687ae703d480f7d02"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuperQ%2Fsmokeping_prober","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuperQ%2Fsmokeping_prober/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuperQ%2Fsmokeping_prober/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SuperQ%2Fsmokeping_prober/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SuperQ","download_url":"https://codeload.github.com/SuperQ/smokeping_prober/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254227611,"owners_count":22035669,"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":["latency","latency-monitor","monitoring-tool","prometheus","smokeping"],"created_at":"2024-10-11T04:29:54.770Z","updated_at":"2025-05-14T21:06:17.521Z","avatar_url":"https://github.com/SuperQ.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# smokeping_prober\n\n[![CircleCI](https://circleci.com/gh/SuperQ/smokeping_prober/tree/master.svg?style=svg)](https://circleci.com/gh/SuperQ/smokeping_prober/tree/master)\n[![Docker Repository on Quay](https://quay.io/repository/superq/smokeping-prober/status \"Docker Repository on Quay\")](https://quay.io/repository/superq/smokeping-prober)\n\nPrometheus style \"smokeping\" prober.\n\n![Example Graph](example-graph.png)\n\n## Overview\n\nThis prober sends a series of ICMP (or UDP) pings to a target and records the responses in Prometheus histogram metrics.\n\n```\nusage: smokeping_prober [\u003cflags\u003e] [\u003chosts\u003e...]\n\nFlags:\n  -h, --help                     Show context-sensitive help (also try --help-long and --help-man).\n      --config.file=CONFIG.FILE  Optional smokeping_prober configuration yaml file.\n      --web.telemetry-path=\"/metrics\"\n                                 Path under which to expose metrics.\n      --web.systemd-socket       Use systemd socket activation listeners instead of port listeners (Linux only).\n      --web.listen-address=:9374 ...\n                                 Addresses on which to expose metrics and web interface. Repeatable for multiple\n                                 addresses.\n      --web.config.file=\"\"       [EXPERIMENTAL] Path to configuration file that can enable TLS or authentication.\n      --buckets=\"5e-05,0.0001,0.0002,0.0004,0.0008,0.0016,0.0032,0.0064,0.0128,0.0256,0.0512,0.1024,0.2048,0.4096,0.8192,1.6384,3.2768,6.5536,13.1072,26.2144\"\n                                 A comma delimited list of buckets to use\n  -i, --ping.interval=1s         Ping interval duration\n      --privileged               Run in privileged ICMP mode\n  -s, --ping.size=56             Ping packet size in bytes\n      --log.level=info           Only log messages with the given severity or above. One of: [debug, info, warn,\n                                 error]\n      --log.format=logfmt        Output format of log messages. One of: [logfmt, json]\n      --version                  Show application version.\n\nArgs:\n  [\u003chosts\u003e]  List of hosts to ping\n```\n\n## Configuration\n\nThe prober can take a list of targets and parameters from the command line or from a yaml config file.\n\nExample config:\n\n```yaml\n---\ntargets:\n- hosts:\n  - host1\n  - host2\n  interval: 1s # Duration, Default 1s.\n  network: ip # One of ip, ip4, ip6. Default: ip (automatic IPv4/IPv6)\n  protocol: icmp # One of icmp, udp. Default: icmp (Requires privileged operation)\n  size: 56 # Packet data size in bytes. Default 56 (Range: 24 - 65535)\n  source: 127.0.1.1 # Souce IP address to use. Default: None (automatic selection)\n```\n\nIn each host group the `interval`, `network`, and `protocol` are optional.\n\nThe interval Duration is in [Go time.ParseDuration()](https://golang.org/pkg/time/#ParseDuration) syntax.\n\nThe config is read on startup, and can be reloaded with the SIGHUP signal, or with an HTTP POST to the URI path `/-/reload`.\n\n## Building and running\n\nRequires Go \u003e= 1.22\n\n```console\ngo install github.com/superq/smokeping_prober@latest\nsudo setcap cap_net_raw=+ep ${GOPATH}/bin/smokeping_prober\n```\n\nOn multi-cpu systems it is typically more efficient to limit the prober to one CPU in order to\nreduce the number of cross-cpu context switches and packet copies from the kernel to the prober.\nThis can be done with the `GOMAXPROCS` environment variable, or by using container (cgroup) limits.\n\n```console\nexport GOMAXPROCS=1\n./smokeping_prober \u003ctargets\u003e\n```\n\n## Docker\n\n```bash\ndocker run \\\n  -p 9374:9374 \\\n  --privileged \\\n  --env GOMAXPROCS=1 \\\n  quay.io/superq/smokeping-prober:latest \\\n  some-ping-target.example.com\n```\n\n## Metrics\n\n Metric Name                            | Type       | Description\n----------------------------------------|------------|-------------------------------------------\n smokeping\\_requests\\_total             | Counter    | Counter of pings sent.\n smokeping\\_response\\_duration\\_seconds | Histogram  | Ping response duration.\n smokeping\\_response\\_ttl               | Gauge      | The last response Time To Live (TTL).\n smokeping\\_response\\_duplicates\\_total | Counter    | The number of duplicated response packets.\n smokeping\\_receive\\_errors\\_total      | Counter    | The number of errors when Pinger attempts to receive packets.\n smokeping\\_send\\_errors\\_total         | Counter    | The number of errors when Pinger attempts to send packets.\n\n### TLS and basic authentication\n\nThe Smokeping Prober supports TLS and basic authentication.\n\nTo use TLS and/or basic authentication, you need to pass a configuration file\nusing the `--web.config.file` parameter. The format of the file is described\n[in the exporter-toolkit repository](https://github.com/prometheus/exporter-toolkit/blob/master/docs/web-configuration.md).\n\n\n### Health check\n\nA health check can be requested in the URI path `/-/healthy`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuperq%2Fsmokeping_prober","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsuperq%2Fsmokeping_prober","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuperq%2Fsmokeping_prober/lists"}