mirror of
https://github.com/vacp2p/10ksim.git
synced 2026-01-09 22:27:57 -05:00
877e1ee36a0c3bc98c3fe9136907f065871c4b5e
* Add base class for monitoring client configurations * Add victoria metrics monitoring client configurations * WIP: Minor refactor to readers, add extra fields to decouple from an always K8s scenario * WIP: Move tracers inside readers, as it depends on Victoria. Start decoupling tracing from analysis. * WIP: Create nimlibp2p tracer * WIP: Create statusgo tracer * WIP: Start creating stack classes, depending on the monitoring stack used, analysis will be done differently. * WIP: Decouple analysis from stack. Add extra plot functions. * WIP: Delete monitoring clients * WIP: Add number of processes to File Reader * WIP: Add number of processes Stack Analysis * WIP: Decouple patterns with extra arguments from cluster * WIP: Move waku analyzer * WIP: Add container name as parameter * WIP: Correct query selection when doing query * WIP: Correct dispatching call in waku analyzer * WIP: Move waku plotting to its own file * WIP: Refactor in File Reader * WIP: Minor refactor in victoria reader loop * WIP: Add info to trace method * WIP: Add builder to base stack analysis class * WIP: Change fields in waku tracer * WIP: Refactor due to previous change * WIP: Extract ownership of parsing logs to upper class for better decoupling * WIP: Move functions to different class * WIP: Move extra fields to Victoria builder, from kwargs. * WIP: Add chainable instantiation pattern to tracers * WIP: Renamed method to match standard naming * WIP: Remove old TODO * WIP: Add notes for queries and patterns * WIP: Remove stack from class variable and refactor get number of nodes * WIP: Add victoria reader builder * WIP: Log pod name instead of peer id for better debugging * WIP: Change logging options * WIP: Change read_logs function name to get_dataframes * WIP: Make VictoriaReader implement Reader class * WIP: Allow _make_queries to work with a single query in params * WIP: Allow _make_queries to work with a single query in params * WIP: Add comments to victoria reader * WIP: Improve VictoriaReaderBuilder * WIP: Download logs from malfunctioning pods * WIP: Updated check_store_messages and check_filter_messages * WIP: Add comments to Waku analyzer * WIP: Improve WakuTracer * WIP: Improve how vaclab_stack_analysis.py was handling log retrieval * WIP: Rename functions in stack_analysis.py * WIP: Renamed Plotter to MetricsPlotter * WIP: Minor changes to waku_plots * WIP: Minor changes to scrapper * WIP: Rewrite README.md * WIP: Add image for diagram * WIP: Moved information to new readme * WIP: Update example file * WIP: Add readme for plotting metrics * WIP: Expand nimlibp2p_analyzer.py * WIP: Expand nimlibp2p_tracer.py * Expand example_log_analysis.py
Distributed deployer framework (Template name)
Python Version: 3.11.5
Yaml config:
General configuration
Important parameters for modifying when scrapping for simulation data.
general_config:
times_names: # List of timestamps
- ["timestamp_init", "timestamp_end", "column_name"] # Last value is used to group data in the same spot in the plot
Example:
general_config:
times_names:
- [ "2024-05-15 12:31:00", "2024-05-15 12:47:00", "3K-1mgs-s-1KB" ]
- [ "2024-05-15 13:10:00", "2024-05-15 13:30:00", "2K-1mgs-s-1KB" ]
- [ "2024-05-15 16:34:00", "2024-05-15 16:56:00", "1K-1mgs-s-1KB" ]
Scrape configuration
Scrape parameters like step, interval, and dump location:
scrape_config:
$__rate_interval: "rate"
step: "step"
dump_location: "folder_to_dump"
Example:
scrape_config:
$__rate_interval: "121s"
step: "60s"
dump_location: "test/nwaku0.32/"
Metrics to scrape configuration
Important parameters for which metrics to scrape:
metrics_to_scrape:
scrape_name:
query: "query" # Query to extract data from
extract_field: "instance" # Instance values, same as in Grafana panels
folder_name: "folder" # This will be set inside `dump_location`
Example of what metrics to select:
metrics_to_scrape:
libp2p_network_in:
query: "rate(libp2p_network_bytes_total{direction='in'}[$__rate_interval])"
extract_field: "instance"
folder_name: "libp2p-in/"
libp2p_network_out:
query: "rate(libp2p_network_bytes_total{direction='out'}[$__rate_interval])"
extract_field: "instance"
folder_name: "libp2p-out/"
Important parameters for plotting:
plotting:
"name_of_the_plot":
"ignore": ["name"] # Pod names that starts with this string
"data_points": number_of_points # 1 point per minute
"folder": # Folders to get the data from
- "folder_name_1"
- "folder_name_2"
"data": # Specific data from folder that will be used for the plot, needs to match `folder_name` from `metrics_to_scrape`
- "data_from_folder"
"xlabel_name": "xlabel"
"ylabel_name": "ylabel"
"scale-x": scale_number # If division is needed. Ie: y axis is bytes, we want KBytes, so we divide by 1000
Example of plotting bandwidth comparison between nWaku versions 26 27 and 28:
plotting:
"bandwidth":
"ignore": ["bootstrap", "midstrap"]
"data_points": 25
"folder":
- "test/nwaku0.26/"
- "test/nwaku0.27/"
- "test/nwaku0.28/"
"data":
- "libp2p-in"
- "libp2p-out"
"xlabel_name": "NºNodes-MsgRate"
"ylabel_name": "KBytes/s"
"scale-x": 1000
We will have as many plots as keywords under plotting.
Inside each plot, we will have as many subplots as metrics in data.
Main objectives
- Automatic deployment of any P2P utils
- Waku
- Bandwidth usage per node
- Log data for analysis
Secondary objectives
- Add QoS parameter support to the 10k tool
- Run further Waku protocols:
- Filter
- Lightpush
- Store
- Peer exchange
Acknowledgment
Inspired in the Codex framework https://github.com/codex-storage/cs-codex-dist-tests
Original Authors:
Description
Languages
Python
84.8%
Shell
7.7%
Smarty
7.2%
Dockerfile
0.3%