• Stars
    star
    241
  • Rank 167,643 (Top 4 %)
  • Language
    TypeScript
  • Created over 2 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A global network of probes to run network tests like ping, traceroute and DNS resolve

Globalping Header

Better understand your network routing, fix anycast issues, monitor your CDN and DNS performance,
do uptime monitoring and build your own network tools for personal or public use.


Invitation to contribute!

Everyone is welcome to contribute. Some suggestions:

  • Ideas for new features
  • PRs and fixes for existing problems
  • Quality control and testing of all systems. Report any problems, bugs or bad UX you find
  • Documentation. Our readme and documentation need some polish
  • Tutorials and articles. Consider writing about our project on your blog or twitter

Please refer to CONTRIBUTING.md for more information.

The Globalping Platform

Globalping is a platform that allows anyone to run networking commands such as ping, traceroute, dig and mtr on probes distributed all around the world. Our goal is to provide a free and simple API for everyone out there to build interesting networking tools and services.

We don't expect most of our users to work with the API directly; instead, we constantly expand and improve our powerful yet simple tools that take full advantage of all the functionality that the Globalping API has to offer. If you're an advanced user, we recommend getting started with the Globalping CLI, or if you prefer a visual representation of the data then our web-tools might be a better place to get started.

Learn more about Globalping on our website www.jsdelivr.com/globalping

Major sponsors

We thank our sponsors who contribute to the development of Globalping and help us expand the network of probes.

Gcore xTom Edis Global

Consider running our probe software on your network of servers or sponsor a batch of hardware probes with your own stickers and swag included to ship to your users or distribute at conferences. Stand out among the sea of water bottles and pens!

Quick Start - Run your first test

You can begin using the platform in a few different ways:

Web Based Tools - Globalping website

globalping latency test from google cloud

Our website is the best way to get started. You can start running tests immediatly and learn more about how different parts of the system work. For example our magic location field can accept not just locations but also cloud regions, ISP providers and even combine filters using the + symbol.

Globalping CLI

Install our CLI tool to upgrade your network debugging capabilities. Get access to a global network of probes without leaving your command line!

#Ubuntu
curl -s https://packagecloud.io/install/repositories/jsdelivr/globalping/script.deb.sh | sudo bash
apt install globalping

#RHEL
curl -s https://packagecloud.io/install/repositories/jsdelivr/globalping/script.rpm.sh | sudo bash
dnf install globalping

#MacOS
brew tap jsdelivr/globalping
brew install globalping

#Windows
winget install globalping
OR
choco install globalping

And then run your tests in a familiar way:

$ globalping traceroute google.com from Western Europe --limit 2
> EU, DE, Frankfurt, ASN:210546
traceroute to google.com (142.250.185.78), 20 hops max, 60 byte packets
 1  10.0.0.1 (10.0.0.1)  0.747 ms  0.714 ms
 2  10.2.0.97 (10.2.0.97)  5.482 ms  5.511 ms
 3  10.10.0.1 (10.10.0.1)  613.232 ms  613.268 ms
 4  ae6-ffm21.core2.ffm3.de (45.138.175.101)  9.150 ms  9.188 ms
 5  ae1-core2.core3.ffm3.de (45.138.175.105)  6.027 ms  6.030 ms
 6  142.250.171.196 (142.250.171.196)  5.562 ms  5.749 ms
 7  209.85.244.249 (209.85.244.249)  48.691 ms  48.812 ms
 8  142.250.209.243 (142.250.209.243)  5.742 ms  5.743 ms
 9  fra16s48-in-f14.1e100.net (142.250.185.78)  5.716 ms  5.717 ms

> EU, NL, Zwolle, ASN:50673
...

Learn more about Globalping CLI in the dedicated repo

Globalping REST API

If you're building something custom or simply want to learn more about all the available options and data we provide check out the Globalping REST API. It's as simple as:

POST https://api.globalping.io/v1/measurements
{
    "limit": 10,
    "locations": [],
    "target": "jsdelivr.com",
    "type": "ping",
    "measurementOptions": {
        "packets": 5
    }
}

Read the full API documentation and explore our dev demo

Slack App

Install our Slack App to interact with the Globalping platform without ever leaving Slack. Allow your NOC, OPS and Support teams to quickly debug networking issues and discuss the results.

Add to Slack

It supports a human friendly interface for issuing commands. To begin simply type /globalping help.

Examples:

/globalping {command} {target} from {location} --limit {number of probes}
/globalping ping 8.8.8.8 from Germany
/globalping traceroute jsdelivr.com from South America --limit 2
/globalping help

The location field can process all kinds of different types of location matching, including continents, regions, countries, cities, US states and ASNs. ASNs must be prefixed by "AS", e.g. from AS80085. You can also combine filters, e.g. from hetzner+Finland will ensure the results come from a probe that matches both parameters. Providing no location will default to "world" which will match a probe from a random location in the world.

You can even mention it in threads using @globalping ping google.com

GitHub Bot

Our GitHub bot can by triggered by simply mentioning it in any public GitHub issue. It supports a human friendly format of issuing commands and follows the existing Slack and CLI formatting logic allowing you to easily move between integrations.

Examples:

@globalping ping 8.8.8.8 from Germany
@globalping traceroute jsdelivr.com from South America --limit 2

The location field can process all kinds of different types of location matching, including continents, regions, countries, cities, US states and ASNs. ASNs must be prefixed by "AS", e.g. from AS80085.

Join the Network - Run a probe

Globalping relies on the community to help us expand our network of probes. So while we run our own probes in key locations we still need help from both corporate partners and individials. Consider joining our network and helping everyone by running a probe (or many). You can do it on a rented VPS or Dedicated server that has available capacity or even on a locally hosted Raspberry pi. The only requirement is having an internet accessible device able to run docker containers.

It's as simple as running this command:

docker run -d --log-driver local --network host --restart=always --name globalping-probe ghcr.io/jsdelivr/globalping-probe

And it works for both x86 and ARM architectures. Podman related instructions.

Notes:

  • The probe doesn't open any ports or accept any incoming connections. It can only establish a connection with our API.
  • We include regularly updated lists and databases of domains and IPs that are associated with malware or potentially dangerous content and completely ban them on the API level
  • The tests scale to the amount of available CPU cores. Our code is very lightweight and shouldn't use too many of your resources, so in most cases we recommend running our probe as is. But if you're worried you can use --cpuset-cpus="0-2" to limit the number of available cores.
  • We rate-limit all users on the API level to avoid the abuse of network
  • No local network tests are allowed, only public endpoints.

Read more about the Globalping Probe in the dedicated repo.

Limits | WIP

Our platform has multiple limits to avoid abusive behaviour and at the same time motivate people to contribute to the sustainability of our platform.

Global limits

These limits are applied per IP address regardless if an API key supplied or not.

  • 100 POST requests per minute per IP. No GET limits are implemented to support "real-time" use-cases.
  • A single measurement is limited to 200 probes per location and 500 total probes

Un-authenticated users

Anybody can connect to our API and start using it with no credentials required. In this case we limit the amount of tests an IP address can run. A single test is defined as a succesful measurement we run and return to the user. A limit of 10 tests means the user can run either 10 measurements with the probe limit set to 1 per measurement, or a single measurement with the probe limit set to 10.

  • 100 tests per hour

Registered jsDelivr users - Free

All registered jsDelivr users get an API key they can use to authenticate themselves and get higher limits

  • 200 measurements per hour

GitHub Sponsors - Contribute to the development of the project

By becoming a sponsor of jsDelivr you automatically help us sustain both the jsDelivr CDN and the Globalping platform. Your contributions will be used to help us continue the development of all projects under the jsDelivr Organization

You can do this by registering on jsdelivr.com and becoming a GitHub sponsor. We will then automatically upgrade your account to get a higher limit as defined in each of the available plans.

Custom limits

Feel free to reach out if you need a custom limit for your API key. We're more than happy to provide higher limits to researchers, non-profits and other open source projects.

Development

Please refer to CONTRIBUTING.md for more information.

More Repositories

1

jsdelivr

A free, fast, and reliable Open Source CDN for npm, GitHub, Javascript, and ESM
JavaScript
5,571
star
2

bootstrapcdn

Free Bootstrap CDN hosting
JavaScript
1,349
star
3

FontFamous

Font Famous is the free vector media logo font.
Less
223
star
4

data.jsdelivr.com

The public jsDelivr API. Get npm packages, files, versions, entry points, as well as their CDN URLs and download stats.
JavaScript
205
star
5

globalping-cli

A simple CLI tool to run networking commands remotely from hundreds of globally distributed servers
Go
143
star
6

www.jsdelivr.com

The official jsDelivr website
HTML
139
star
7

api

DEPRECATED - API for public CDNs
JavaScript
113
star
8

globalping-probe

The globalping probe code that runs on your hardware and connects to the global community network of probes
TypeScript
77
star
9

dns-openmix

DEPRECATED - jsDelivr's load balancing algorithm
JavaScript
50
star
10

unplugin-jsdelivr

Use jsDelivr in Vite, Rollup, Webpack and esbuild!
TypeScript
36
star
11

bot

DEPRECATED The jerk of a bot that checks PRs and responds in comments
Python
22
star
12

plugin-intellij

jsDelivr plugin for JetBrains IntelliJ based editors
Java
22
star
13

plugin-vs-code

Quickly insert any npm package from jsDelivr CDN
JavaScript
20
star
14

libgrabber

DEPRECATED Keeps projects hosted in jsDelivr updated
JavaScript
20
star
15

extension-chrome

JavaScript
16
star
16

globalping-hwprobe

OS image for Globalping hardware probes. Become a GitHub Sponsor to get yours!
Shell
15
star
17

foundationcdn

DEPRECATED The code for the website at
CSS
15
star
18

plugin-atom

jsDelivr plugin for Atom
JavaScript
8
star
19

ghost-jsdelivr-theme

The Ghost theme for jsDelivr's blog
SCSS
3
star
20

jsdelivr-media

jsDelivr logo files
3
star
21

api-sync

DEPRECATED Sync portion for jsDelivr API
JavaScript
3
star
22

dns-openmix-diagnostics

DEPRECATED
JavaScript
1
star
23

cleaner

DEPRECATED Remove content of files in a repo
Python
1
star
24

.github

1
star
25

all-the-package-types

JavaScript
1
star
26

globalping-dash

Globalping's official dashboard and probe control panel
JavaScript
1
star
27

dash-directus

The jsDelivr dashboard backend
TypeScript
1
star