https://github.com/lifailon/pinguem
Web interface based on Vue for async checking of the availability of the selected hosts or subnet using the node-ping library.
https://github.com/lifailon/pinguem
docker ping typescript vue web
Last synced: 7 months ago
JSON representation
Web interface based on Vue for async checking of the availability of the selected hosts or subnet using the node-ping library.
- Host: GitHub
- URL: https://github.com/lifailon/pinguem
- Owner: Lifailon
- Created: 2024-10-22T09:09:02.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-02-21T08:38:21.000Z (8 months ago)
- Last Synced: 2025-03-01T11:29:00.298Z (7 months ago)
- Topics: docker, ping, typescript, vue, web
- Language: Vue
- Homepage: https://hub.docker.com/r/lifailon/pinguem
- Size: 2.15 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
PinguemWeb interface based on [Vue](https://github.com/vuejs/core) and the [Prometheus](https://github.com/prometheus/prometheus) exporter for async checking of the availability of the selected hosts or subnet using the [node-ping](https://github.com/danielzzz/node-ping) library.
All fields for entering addresses are dynamic, and are stored on the side of the client (in the browser) after rebooting the server and the user system. For a survey of the entire subnet, use 0 in the 4 octet (example, `192.168.3.0`), it is possible to simultaneously indicate a few subnet. It is recommended to launch in the Docker container, you can check `254`, `508` and more hosts every second without delay. The ping stops at the time of closing the browser tab, while the results is stored on the server in memory until they are discharged through the interface or API.
## Install
### Docker
Download the image from [Docker Hub](https://hub.docker.com/r/lifailon/pinguem) and run the container:
```shell
docker run -d --name pinguem -p 8085:8085 -p 3005:3005 --restart=unless-stopped lifailon/pinguem:latest
```### Build
Clone the repository and install the dependencies:
```shell
git clone https://github.com/Lifailon/pinguem
cd pinguem
npm install
```Start backend (port `3005`) and frontend (port `8085`):
```shell
npm start
```Go to: `http://localhost:8085`

Dark mode:

You can get checking results at the current time using `GET` request via `API`:
`curl -sS http://localhost:3005/result | jq .`
```json
{
"192.168.3.101": {
"host": "192.168.3.101",
"time": 1,
"status": "Available",
"lastAvailable": "2025-02-10T21:33:35.530Z",
"lastUnavailable": null,
"successful": 100,
"failed": 0
},
"google.com": {
"host": "google.com",
"time": 22,
"status": "Available",
"lastAvailable": "2025-02-10T21:33:35.524Z",
"lastUnavailable": "2025-02-10T21:32:19.236Z",
"successful": 90,
"failed": 10
},
"8.8.8.8": {
"host": "8.8.8.8",
"time": 21,
"status": "Available",
"lastAvailable": "2025-02-10T21:33:35.527Z",
"lastUnavailable": null,
"successful": 100,
"failed": 0
},
"github.com": {
"host": "github.com",
"time": 47,
"status": "Available",
"lastAvailable": "2025-02-10T21:33:35.521Z",
"lastUnavailable": "2025-02-10T21:33:32.535Z",
"successful": 97,
"failed": 3
},
"192.168.3.102": {
"host": "192.168.3.102",
"time": "unknown",
"status": "Unavailable",
"lastAvailable": null,
"lastUnavailable": "2025-02-10T21:33:35.534Z",
"successful": 0,
"failed": 100
}
}
```## Ping Exporter
- Metrics for prometheus:
```shell
curl -sS http://localhost:3005/metrics/
```- Specify the target subnet to monitor in the `prometheus.yml` configuration:
```yaml
scrape_configs:
- job_name: ping-exporter
scrape_interval: 10s
scrape_timeout: 5s
metrics_path: /metrics/192.168.3.0
static_configs:
- targets:
- '192.168.3.100:3005'
```
- Import a ready [Dashboard](grafana-ping-exporter.json) for Grafana:
Displays the number of active and inactive hosts in the subnet, all host addresses that change their status over the selected period of time, and graphs of the stability of active hosts.