https://github.com/deajan/traceroute_history
Keep traceroute histroy, make diffs. Use as standalone / smokeping companion
https://github.com/deajan/traceroute_history
Last synced: about 1 month ago
JSON representation
Keep traceroute histroy, make diffs. Use as standalone / smokeping companion
- Host: GitHub
- URL: https://github.com/deajan/traceroute_history
- Owner: deajan
- License: bsd-3-clause
- Created: 2020-04-23T14:04:22.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-08-08T21:22:13.000Z (over 1 year ago)
- Last Synced: 2025-03-18T10:45:56.634Z (about 1 month ago)
- Language: JavaScript
- Homepage:
- Size: 10.4 MB
- Stars: 24
- Watchers: 4
- Forks: 7
- Open Issues: 9
-
Metadata Files:
- Readme: README.MD
- License: LICENSE
Awesome Lists containing this project
README
# Traceroute History
Traceroute History is under heavy developpment (see TODO.TXT).
Traceroute History records Unix traceroute & Windows tracert outputs to a database, upon host changes in hops, or big rtt increases to hops.
The core can be run as a service or as a cron task, both providing regular probe updates.
It can be run via cron / task scheduler or as service.## Setup
1. Install traceroute binary via `dnf install traceroute`. On Windows, binary `tracert` should be included in system32 directory.
1. Install development tools via `dnf install python3-devel gcc make` in order to compile required python modules.
2. Install requirements via `pip -m install -r requirements.txt` and `pip -m install -r requirements-python36.txt` if you run with Python 3.6
3. Adjust the configuration file `traceroute_history.conf` according to your needs.
4. Initialize the database
`traceroute_history_runner.py --config=traceroute_history.conf --init-db`
5. Run as cron task with `traceroute_history_runner.py --config=traceroute_history.conf --update-now`
Example of a cron entry in /etc/crontab
`30 * * * * root /usr/bin/python3 /opt/traceroute_history/traceroute_history_runner.py --config=/opt/traceroute_history/traceroute_history.conf --update-now`
or run as service
`traceroute_history_runner.py --config=traceroute_history.conf --daemon`## User interface
There's currently a CLI and a GUI interface available.
CLI can be executed directly via the script, eg:`traceroute_history_runner.py --help`
GUI relies on FastAPI and uvicorn modules.
GUI can be launched via `user_interface.py` and will by default listen on 127.0.0.1:5001. Bind ip and port be modified in `traceroute_history.conf`.
Additionnaly, a systemd file is provided for launching the user interface in `extras`
```
cp extras/traceroute_history_ui.service /usr/lib/systemd/system
systemctl enable --now traceroute_history_ui
systemctl status traceroute_history_ui
```
## Smokeping integration - WebserverTraceroute History can directly read smokeping configuration files in order to add them as probe targets.
It also provides a FastCGI script that can be directly integrated into smokeping:### Apache
In your smokeping virtualhost add
```
require all granted
Alias /smokeping_th_helper.fcgi /path/to/traceroute_history/smokeping_th_helper.fgci
```### Nginx
You need to install fcgiwrap for CGI wrapper interact with Nginx:
* Debian/Ubuntu: `apt install fcgiwrap`
* CentOS/RHEL: `yum install fcgiwrap`Then configure Nginx with the default configuration:
`cp /usr/share/doc/fcgiwrap/examples/nginx.conf /etc/nginx/fcgiwrap.conf`
Make symbolic link for smokeping_th_helper.fcgi:
`ln': ln -s /opt/traceroute_history/smokeping_th_helper.fcgi /usr/lib/cgi-bin/smokeping_th_helper.fcgi`
In your smokeping virtualhost add
```
location = /smokeping/smokeping_th_helper.fcgi {
alias /opt/traceroute_history/smokeping_th_helper.fcgi;fastcgi_intercept_errors on;
fastcgi_param SCRIPT_FILENAME /usr/lib/cgi-bin/smokeping_th_helper.fcgi;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param HTTPS $https if_not_empty;fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
```## Smokeping integration - HTML
In your smokeping basepage.html file (generally in /opt/smokeping/etc), add the `smokeping_th_helper.js` script after the other scripts.
Your source should look like:
```// Added script
```
Also copy `smokeping_th_helper.js` to your `www/js` folder.