* Update README with new structure and AI focus
* Update AI section: AI-Powered Root Cause Analysis with agents
* updated links
* added an image to the API context
* some fixes to the readme
* Remove TODO comments - using real images
* Fix broken MCP Registry links in mcp/README.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Update README with new structure and AI focus
* Update AI section: AI-Powered Root Cause Analysis with agents
* updated links
* added an image to the API context
* some fixes to the readme
* Remove TODO comments - using real images
The Hub API expects 'name' field but the MCP server was sending 'tool'.
This caused all Hub-forwarded tools (list_l4_flows, get_l4_flow_summary,
list_api_calls, etc.) to fail with 'tool name is required' error.
Local tools like check_kubeshark_status were unaffected as they don't
call the Hub API.
* Add MCP Registry support with MCPB package format
- Update release workflow to create .mcpb artifacts for MCP Registry
- Update server.json to use MCPB registry type with GitHub namespace
- Use io.github.kubeshark/mcp namespace for GitHub authentication
- Add SHA256 placeholders (to be updated after first release)
* Add automated MCP Registry publishing to release workflow
- Add workflow_dispatch trigger with dry_run option for testing
- Add mcp-publish job that runs after release completes
- Generate server.json dynamically with correct version and SHA256 hashes
- Install and run mcp-publisher automatically
- Update static server.json to reference file with placeholders
- Add MCP Registry section to README
The release workflow now automatically publishes to the MCP Registry
when a new version is tagged. No manual steps required.
* Refactor: Extract MCP publishing to separate workflow
- Create mcp-publish.yml that triggers on release:published
- Simplify release.yml to focus on building and releasing
- MCP workflow has its own workflow_dispatch for testing
- Cleaner separation of concerns
* Address PR review feedback
- Update actions/checkout to v4
- Add OIDC permissions for MCP Registry authentication
- Change trigger from release:published to workflow_call
- Release workflow now calls mcp-publish after artifacts are uploaded
- Keep workflow_dispatch for manual testing
* Add mcp-publisher login step before publish
* Add MCP (Model Context Protocol) server command
Implement `kubeshark mcp` command that runs an MCP server over stdio,
enabling AI assistants to query Kubeshark's network visibility data.
Features:
- MCP protocol implementation (JSON-RPC 2.0 over stdio)
- Dynamic tool discovery from Hub's /api/mcp endpoint
- Local cluster management tools (check_kubeshark_status, start_kubeshark, stop_kubeshark)
- --url flag for direct connection to existing Kubeshark deployment
- --kubeconfig flag for proxy mode with kubectl
- --allow-destructive flag to enable start/stop operations (safe by default)
- --list-tools flag to display available tools
- --mcp-config flag to generate MCP client configuration
- 5-minute cache TTL for Hub tools/prompts
- Prompts for common analysis tasks
* Address code review comments for MCP implementation
- Add 30s timeout to HTTP client to prevent hanging requests
- Add scanner.Err() check after stdin processing loop
- Close HTTP response bodies to prevent resource leaks
- Add goroutine to wait on started process to prevent zombies
- Simplify polling loop by removing ineffective context check
- Advertise check_kubeshark_status in URL mode (was callable but hidden)
- Update documentation to clarify URL mode only disables start/stop
* Fix lint errors in mcpRunner.go
- Use type conversion instead of struct literals for hubMCPTool -> mcpTool
and hubMCPPromptArg -> mcpPromptArg (S1016 gosimple)
- Lowercase error string to follow Go conventions (ST1005 staticcheck)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add MCP server unit tests
Comprehensive unit tests for the MCP server implementation:
- Protocol tests (initialize, tools/list, tools/call, prompts/list, prompts/get)
- Tool tests (check_kubeshark_status, start_kubeshark, stop_kubeshark)
- Hub integration tests (tool fetching, caching, prompt handling)
- Error handling tests
- Edge case tests
* Fix MCP unit tests to use correct /tools/call endpoint
- Update all Hub tool tests to use POST /tools/call endpoint instead
of individual paths like /workloads, /calls, /stats
- Verify arguments in POST body instead of URL query parameters
- Add newMockHubHandler helper for proper Hub endpoint mocking
- Split TestMCP_ToolsList into three tests:
- TestMCP_ToolsList_CLIOnly: Tests without Hub backend
- TestMCP_ToolsList_WithDestructive: Tests with destructive flag
- TestMCP_ToolsList_WithHubBackend: Tests with mock Hub providing tools
- Fix TestMCP_FullConversation to mock Hub MCP endpoint correctly
- Rename URL encoding tests for clarity
- All tests now correctly reflect the implementation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Simplify MCP unit tests
- Remove section header comments (10 headers)
- Consolidate similar tests using table-driven patterns
- Simplify test assertions with more concise checks
- Combine edge case tests into single test function
- Reduce verbose test structures
Total reduction: 1477 → 495 lines (66%)
All 24 tests still pass.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add MCP integration test framework
Add integration tests that run against a real Kubernetes cluster:
- MCP protocol tests (initialize, tools/list, prompts/list)
- Cluster management tests (check_kubeshark_status, start_kubeshark, stop_kubeshark)
- Full lifecycle test (check -> start -> check -> stop -> check)
- API tools tests (list_workloads, list_api_calls, get_api_stats)
Also includes:
- Makefile targets for running integration tests
- Test helper functions (startMCPSession, cleanupKubeshark, etc.)
- Documentation (README.md, TEMPLATE.md, ISSUE_TEMPLATE.md)
* Address review comments on integration tests
Makefile:
- Use unique temporary files (mktemp) instead of shared /tmp/integration-test.log
to prevent race conditions when multiple test targets run concurrently
- Remove redundant test-integration-verbose target (test-integration already uses -v)
- Add cleanup (rm -f) for temporary log files
integration/mcp_test.go:
- Capture stderr from MCP server for debugging failures
- Add getStderr() method to mcpSession for accessing captured stderr
- Fix potential goroutine leak by adding return statements after t.Fatalf
- Remove t.Run subtests in TestMCP_APIToolsRequireKubeshark to clarify
sequential execution with shared session
- Fix benchmark to use getKubesharkBinary helper for consistency
- Add Kubernetes cluster check to benchmark (graceful skip)
- Add proper error handling for pipe creation in benchmark
- Remove unnecessary bytes import workaround (now actually used for stderr)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Simplify and clean up MCP integration tests
- Remove unrelated L4 viewer files (1239 lines)
- Remove template/issue documentation files (419 lines)
- Trim README to essential content only
- Remove TEMPLATE comments from common_test.go
- Add initialize() helper to reduce test boilerplate
- Add hasKubernetesCluster() helper for benchmarks
- Simplify all test functions with consistent patterns
Total reduction: 2964 → 866 lines (71%)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* Add MCP (Model Context Protocol) server command
Implement `kubeshark mcp` command that runs an MCP server over stdio,
enabling AI assistants to query Kubeshark's network visibility data.
Features:
- MCP protocol implementation (JSON-RPC 2.0 over stdio)
- Dynamic tool discovery from Hub's /api/mcp endpoint
- Local cluster management tools (check_kubeshark_status, start_kubeshark, stop_kubeshark)
- --url flag for direct connection to existing Kubeshark deployment
- --kubeconfig flag for proxy mode with kubectl
- --allow-destructive flag to enable start/stop operations (safe by default)
- --list-tools flag to display available tools
- --mcp-config flag to generate MCP client configuration
- 5-minute cache TTL for Hub tools/prompts
- Prompts for common analysis tasks
* Address code review comments for MCP implementation
- Add 30s timeout to HTTP client to prevent hanging requests
- Add scanner.Err() check after stdin processing loop
- Close HTTP response bodies to prevent resource leaks
- Add goroutine to wait on started process to prevent zombies
- Simplify polling loop by removing ineffective context check
- Advertise check_kubeshark_status in URL mode (was callable but hidden)
- Update documentation to clarify URL mode only disables start/stop
* Fix lint errors in mcpRunner.go
- Use type conversion instead of struct literals for hubMCPTool -> mcpTool
and hubMCPPromptArg -> mcpPromptArg (S1016 gosimple)
- Lowercase error string to follow Go conventions (ST1005 staticcheck)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add MCP server unit tests
Comprehensive unit tests for the MCP server implementation:
- Protocol tests (initialize, tools/list, tools/call, prompts/list, prompts/get)
- Tool tests (check_kubeshark_status, start_kubeshark, stop_kubeshark)
- Hub integration tests (tool fetching, caching, prompt handling)
- Error handling tests
- Edge case tests
* Fix MCP unit tests to use correct /tools/call endpoint
- Update all Hub tool tests to use POST /tools/call endpoint instead
of individual paths like /workloads, /calls, /stats
- Verify arguments in POST body instead of URL query parameters
- Add newMockHubHandler helper for proper Hub endpoint mocking
- Split TestMCP_ToolsList into three tests:
- TestMCP_ToolsList_CLIOnly: Tests without Hub backend
- TestMCP_ToolsList_WithDestructive: Tests with destructive flag
- TestMCP_ToolsList_WithHubBackend: Tests with mock Hub providing tools
- Fix TestMCP_FullConversation to mock Hub MCP endpoint correctly
- Rename URL encoding tests for clarity
- All tests now correctly reflect the implementation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Simplify MCP unit tests
- Remove section header comments (10 headers)
- Consolidate similar tests using table-driven patterns
- Simplify test assertions with more concise checks
- Combine edge case tests into single test function
- Reduce verbose test structures
Total reduction: 1477 → 495 lines (66%)
All 24 tests still pass.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* Add MCP (Model Context Protocol) server command
Implement `kubeshark mcp` command that runs an MCP server over stdio,
enabling AI assistants to query Kubeshark's network visibility data.
Features:
- MCP protocol implementation (JSON-RPC 2.0 over stdio)
- Dynamic tool discovery from Hub's /api/mcp endpoint
- Local cluster management tools (check_kubeshark_status, start_kubeshark, stop_kubeshark)
- --url flag for direct connection to existing Kubeshark deployment
- --kubeconfig flag for proxy mode with kubectl
- --allow-destructive flag to enable start/stop operations (safe by default)
- --list-tools flag to display available tools
- --mcp-config flag to generate MCP client configuration
- 5-minute cache TTL for Hub tools/prompts
- Prompts for common analysis tasks
* Address code review comments for MCP implementation
- Add 30s timeout to HTTP client to prevent hanging requests
- Add scanner.Err() check after stdin processing loop
- Close HTTP response bodies to prevent resource leaks
- Add goroutine to wait on started process to prevent zombies
- Simplify polling loop by removing ineffective context check
- Advertise check_kubeshark_status in URL mode (was callable but hidden)
- Update documentation to clarify URL mode only disables start/stop
* Fix lint errors in mcpRunner.go
- Use type conversion instead of struct literals for hubMCPTool -> mcpTool
and hubMCPPromptArg -> mcpPromptArg (S1016 gosimple)
- Lowercase error string to follow Go conventions (ST1005 staticcheck)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add MCP server unit tests
Comprehensive unit tests for the MCP server implementation:
- Protocol tests (initialize, tools/list, tools/call, prompts/list, prompts/get)
- Tool tests (check_kubeshark_status, start_kubeshark, stop_kubeshark)
- Hub integration tests (tool fetching, caching, prompt handling)
- Error handling tests
- Edge case tests
* Fix MCP unit tests to use correct /tools/call endpoint
- Update all Hub tool tests to use POST /tools/call endpoint instead
of individual paths like /workloads, /calls, /stats
- Verify arguments in POST body instead of URL query parameters
- Add newMockHubHandler helper for proper Hub endpoint mocking
- Split TestMCP_ToolsList into three tests:
- TestMCP_ToolsList_CLIOnly: Tests without Hub backend
- TestMCP_ToolsList_WithDestructive: Tests with destructive flag
- TestMCP_ToolsList_WithHubBackend: Tests with mock Hub providing tools
- Fix TestMCP_FullConversation to mock Hub MCP endpoint correctly
- Rename URL encoding tests for clarity
- All tests now correctly reflect the implementation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Simplify MCP unit tests
- Remove section header comments (10 headers)
- Consolidate similar tests using table-driven patterns
- Simplify test assertions with more concise checks
- Combine edge case tests into single test function
- Reduce verbose test structures
Total reduction: 1477 → 495 lines (66%)
All 24 tests still pass.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add MCP integration test framework
Add integration tests that run against a real Kubernetes cluster:
- MCP protocol tests (initialize, tools/list, prompts/list)
- Cluster management tests (check_kubeshark_status, start_kubeshark, stop_kubeshark)
- Full lifecycle test (check -> start -> check -> stop -> check)
- API tools tests (list_workloads, list_api_calls, get_api_stats)
Also includes:
- Makefile targets for running integration tests
- Test helper functions (startMCPSession, cleanupKubeshark, etc.)
- Documentation (README.md, TEMPLATE.md, ISSUE_TEMPLATE.md)
* Address review comments on integration tests
Makefile:
- Use unique temporary files (mktemp) instead of shared /tmp/integration-test.log
to prevent race conditions when multiple test targets run concurrently
- Remove redundant test-integration-verbose target (test-integration already uses -v)
- Add cleanup (rm -f) for temporary log files
integration/mcp_test.go:
- Capture stderr from MCP server for debugging failures
- Add getStderr() method to mcpSession for accessing captured stderr
- Fix potential goroutine leak by adding return statements after t.Fatalf
- Remove t.Run subtests in TestMCP_APIToolsRequireKubeshark to clarify
sequential execution with shared session
- Fix benchmark to use getKubesharkBinary helper for consistency
- Add Kubernetes cluster check to benchmark (graceful skip)
- Add proper error handling for pipe creation in benchmark
- Remove unnecessary bytes import workaround (now actually used for stderr)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Simplify and clean up MCP integration tests
- Remove unrelated L4 viewer files (1239 lines)
- Remove template/issue documentation files (419 lines)
- Trim README to essential content only
- Remove TEMPLATE comments from common_test.go
- Add initialize() helper to reduce test boilerplate
- Add hasKubernetesCluster() helper for benchmarks
- Simplify all test functions with consistent patterns
Total reduction: 2964 → 866 lines (71%)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add MCP registry metadata for official registry submission
Add metadata files for submitting Kubeshark MCP server to the official
MCP registry at registry.modelcontextprotocol.io:
- mcp/server.json: Registry metadata with tools, prompts, and configuration
- mcp/README.md: MCP server documentation and usage guide
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* Add MCP (Model Context Protocol) server command
Implement `kubeshark mcp` command that runs an MCP server over stdio,
enabling AI assistants to query Kubeshark's network visibility data.
Features:
- MCP protocol implementation (JSON-RPC 2.0 over stdio)
- Dynamic tool discovery from Hub's /api/mcp endpoint
- Local cluster management tools (check_kubeshark_status, start_kubeshark, stop_kubeshark)
- --url flag for direct connection to existing Kubeshark deployment
- --kubeconfig flag for proxy mode with kubectl
- --allow-destructive flag to enable start/stop operations (safe by default)
- --list-tools flag to display available tools
- --mcp-config flag to generate MCP client configuration
- 5-minute cache TTL for Hub tools/prompts
- Prompts for common analysis tasks
* Address code review comments for MCP implementation
- Add 30s timeout to HTTP client to prevent hanging requests
- Add scanner.Err() check after stdin processing loop
- Close HTTP response bodies to prevent resource leaks
- Add goroutine to wait on started process to prevent zombies
- Simplify polling loop by removing ineffective context check
- Advertise check_kubeshark_status in URL mode (was callable but hidden)
- Update documentation to clarify URL mode only disables start/stop
* Fix lint errors in mcpRunner.go
- Use type conversion instead of struct literals for hubMCPTool -> mcpTool
and hubMCPPromptArg -> mcpPromptArg (S1016 gosimple)
- Lowercase error string to follow Go conventions (ST1005 staticcheck)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* In preparation for v200
* updated README
* Enable raw capture
* changed 0.0.0.0 to 127.0.0.1
as 0.0.0.0 is insecure address
* added tip: kubeshark proxy
* added new TCP/UDP connection dissectors
Set API2 as the default
* increased storageLimit per worker.
* Updated makefile
* updated the complementary license
to the end of Jan 2026.
* readme touch ups
* Updated snapshot image
* updated license
removed dashboard subproject
* 🚑 Migrate to `kubehq.com` in helm values
* 🚑 Migrate to `kubehq.com` in cloud-api-url envs
* 🚑 Migrate to `kubehq.com` in manifest label keys
* 🚑 Migrate to `kubehq.com` in `Chart.yaml`
* 🚑 Migrate to `kubehq.com` in helm-chart notes/readme
* 🔨 Add `tap.dashboard.streamingType` helm value
* 🔨 Add `streamingType` to tap config
* 🔨 Adjust `REACT_APP_STREAMING_TYPE` front env value
* 🔨 Use default empty string for `streamingType` value
* cleanup data directory in init container
* cleanup data directory in init container
---------
Co-authored-by: Alon Girmonsky <1990761+alongir@users.noreply.github.com>
* Disable Intercom support by default.
Support can be enabled using a helm flag.
* updated the license notification
as a result of a successful helm installation.
* GenAI assistant enabled by default
* 🔨 Add `tap.routing.front.basePath` helm value
* 🔨 Use `tap.routing.front.basePath` to adjust nginx blocks
* 🔨 Set `front` base path to empty string
* 📝 Update `front` base path docs
* 📝 Add `front` base path example
* 📝 Add base-path to Kubeshark URL in instructions
---------
Co-authored-by: Alon Girmonsky <1990761+alongir@users.noreply.github.com>
* Fix spammy logs
* Fix err related to value missing from pcap config
* Test target dir only when provided
* Improve consistency of error handling
* Remove obsolete code
---------
Co-authored-by: bogdan.balan1 <bogdanvalentin.balan@1nce.com>
* Add hub metrics port
* Add policies and service
* Use static 9100 port for hub metrics
* fix
---------
Co-authored-by: Alon Girmonsky <1990761+alongir@users.noreply.github.com>
* updated helm values
* removed the tap.debug field
from the tapConfig struct
* Revert "removed the tap.debug field"
This reverts commit f911c02f0d.
* support the -d --debug command
with the new logLevel flag
* First commit in this PR
Added `scripting.active` as a helm value
* added `scripting.active` to the config struct and the helm chart
this array of strings will include the active script titles
* updated the `active` filed in the script struct
* go mod tidy
* update go ver to 1.21.1
Added both the `scripting` and `console` commands to the `proxy` command
Added a `scripting.console`, a boolean value indicating whether the `console`
functionality should be part of the `tap` and `proxy` commands
* Add cmd to copy pcaps from worker
* Update commands to merge pcaps
* Remove test img
* Remove usage of http endpoint in copy
* Unify commands
* Add copy flag
* Address review comments
* Update k8s config path processing
* Remove debug prints
* setting the pcapSrcDit to the name of the command
* Update values.yaml
* Remove the start,stop and copy flags
* Clean up the the code a bit
Changed the logic so it's either copy or start/stop.
Works well for a first version.
* Improved the logic
* Changed pcapdump enable flag to boolean
* Added helm value documentation
* minor default configuration changes
* Fix default val for enabled
* Final changes
Cleaned up the helm worker template
Improve the logic a bit
* Code cleanup
Changed instances of `enable` to `enabled` for purpose of consistency
Removed unused helm environment variables
* Enable merging all node files to a single file.
Before the outcome had been a merged file per node.
Now the outcome is a single merged file for all nodes.
* Committed for testing purpose
* Reduced the initial disk foot print to 10MB per node
---------
Co-authored-by: bogdan.balan1 <bogdanvalentin.balan@1nce.com>
Co-authored-by: Alon Girmonsky <1990761+alongir@users.noreply.github.com>
* Add `udp` to list of enabled dissectors
* ignore udp as part of a global filter
* have globalFilter ignore udp and icmp
* Have globalFilter ignore udp and icmp
* Update README.md
---------
Co-authored-by: Alon Girmonsky <1990761+alongir@users.noreply.github.com>
* Make the `scritps` command directly use the K8s API without requiring a connector to Hub
* Fix linter
* Fix linter
---------
Co-authored-by: Alon Girmonsky <1990761+alongir@users.noreply.github.com>
* Add hub to the list of containers in `pprof` command and add flags to `pprof` command
* Reduce duplication
---------
Co-authored-by: Alon Girmonsky <1990761+alongir@users.noreply.github.com>
* tcp dissector enabled by default
* changing the readme
In support of having the `tcp` dissector enabled by default.
* Update values.yaml
* Update complete.yaml
* updated the defaultFilter default value
1. Start with some level of "noise reduction" (`tcp` and `dns`).
2. Provide a hint how to use a display filter to filter out protocol aliases.
* Update values.yaml
filter out DNS and TCP
* Update complete.yaml
Filter out DNS and TCP
* Update README.md
Filter out TCP and DNS by default
TCP dissector can be added as a helm value. This dissector shouldn't be used in production clusters, as enabling this dissector will consume enormous amounts of CPU and memory.
* Add `PROFILING_ENABLED` environment variable and port number to `tracer` container
* Update `complete.yaml`
---------
Co-authored-by: Alon Girmonsky <1990761+alongir@users.noreply.github.com>
TCP dissector can be added as a helm value. This dissector shouldn't be used in production clusters, as enabling this dissector will consume enormous amounts of CPU and memory.
TODO: Have the TCP dissector adhere to pod targeting rules.
* Add -debug prefix to container tag when profiling enabled
* Update helm-chart/templates/_helpers.tpl
* Update helm-chart/templates/_helpers.tpl
---------
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* Add `X-Kubeshark-Capture: ignore` header to all of the HTTP requests
* Add `X-Kubeshark-Capture: ignore` header to WebSocket requests
* Reduce duplication
* Start `ExcludedNamespaces` empty by default
* Started Kubeshark with tap.stopped true by default
* Revert "Start `ExcludedNamespaces` empty by default"
This reverts commit 7de515dd3a.
* Start with traffic capture paused by default
Remove any namespaces to exclude by default
* 🔧 Set worker BPF override from config
* 🔧 Disable `front` BPF override if capture is not `af_packet`
* feature condition change
Extend the feature visibility condition from explicitely using af_packet to not explicitly using ebpf, and therefore supporting all methods other than ebpf
* reversing the logic
fixing the previous comment logic as it was reversed.
---------
Co-authored-by: tiptophelmet <serhii.ponomarenko.jobs@gmail.com>
Promote AF_PACKET as the default option and make kernelModule as an explicit option.
This is a temporary change, until we bring back ebpf as the default option.
This behavior can be reversed by setting the `tap.packetCapture`
to a specific source or manually adding the command line property:
`-disable-ebpf` to both the `worker` and the `tracer`
* Revert "Revert "as eBPF is a significant feature that can impact many users, this PR is meant (#1532)""
This reverts commit 7ab63ec745.
* Added the missing -disable-ebpf parameters to Tracer
to provide it NOT as the default option, but require an explicit indication
to use it. To use eBPF instead of AF-PACKET or PF-RING, use:
--set tap.packetCapture=ebpf
Pre-built binaries and checksum files are released at GitHub Releases.
https://github.com/kubeshark/kubeshark/releases
But checksum files for windows/amd64 have the following issues.
kubeshark.exe
kubeshark_windows_amd64.sha256
- The executable file name and the checksum file name don't conform to the naming convention
- We can't verify the pre-built binaries with checksum files because the pre-built binary name is different from the actual binary name
```console
$ cat kubeshark_windows_amd64.sha256
ea8fffa952bc8047f493469d024887ed80f966c0d74cf5fb039ea12f71174629 kubeshark_windows_amd64
```
```console
$ sha256sum -c kubeshark_windows_amd64.sha256
sha256sum: kubeshark_windows_amd64: No such file or directory
kubeshark_windows_amd64: FAILED open or read
sha256sum: WARNING: 1 listed file could not be read
```
The cause of these issues is pre-built binaries were renamed after checksum files were generated.
b125860d06/Makefile (L41)b125860d06/Makefile (L61)
This commit resolves the issue by generating the checksum file after renaming the pre-built binary.
Co-authored-by: Volodymyr Stoiko <me@volodymyrstoiko.com>
* Global filter quote change
Global filter uses a single quote as opposed to double quote. This limits the use of `'` inside the string as it can not be escaped. When using double quote ("), single quote can be used and double quote can be escaped as part of a string. An example for a Global Filter string: "redact(\"request.headers.Authorization\", \"request.headers['X-Aws-Ec2-Metadata-Token']\")"
* support escaping double quotes in the global filter string
* Expose worker metrics
* Add metrics documentation
* upd
* Update metrics port configuration
* Update config/configStructs/tapConfig.go
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* Update helm-chart/README.md
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* Update helm-chart/templates/16-worker-service-metrics.yaml
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
---------
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* Disabled Tracer by default
As Tracer requires significantly more resources and elevated security capability, it is recommended to have it disabled by default and enabled on demand.
* Updated the tap.tls default value to false
* added description to the default and global KFL filters
* serviceMesh false by default
As serviceMesh requires elevated security permissions.
Furthermore this capability is required only in a fraction of the userbase. Some service mesh versions/configurations aren't supported. Therefore, it is recommended to start as disabled and enable on-demand
* Update the readme related to the service mesh default value
Set the default value of serviceMesh to false as among other things, it requires elevated security permissions and therefore should be enabled on demand.
* Added OS route
* Openshift Port-changes
* custom-scc
* custom-scc name update
* Revert "custom-scc name update"
This reverts commit 7e6d96c086.
* Added pre-install hook
* default port
* worker port update
* Update helm-chart/templates/14-kubeshark-scc.yaml
Co-authored-by: M. Mert Yildiran <mehmetmertyildiran@gmail.com>
* SCC only for openshift - capability added
---------
Co-authored-by: M. Mert Yildiran <mehmetmertyildiran@gmail.com>
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* ✨ Add `kube://` prefixed URI support
* 🐛 Fix the `a container name must be specified for pod <POD_NAME>, choose one of: [sniffer tracer]` error
* 🐛 Fix all of the issues in `kube://` prefixed URI support
* 🐛 Fix the `invalid reference format` error
* 🐛 Fix the `kubeUrl`
* Update README.md
* Update helm-chart/README.md
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* Update helm-chart/README.md
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* Update README.md
fixed storage limit and change a title auth+eks
---------
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* 🔨 Add `tracer` as a separate container to worker `DaemonSet`
* 🔥 Delete some of the unused connector methods
* 🔨 Set `POD_NAME` and `POD_NAMESPACE` environment variables in worker `DeamonSet`
* 🔨 Set `POD_NAME` and `POD_NAMESPACE` environment variables in hub `Deployment`
* Fix the labels
* Fix the self config role
* Restrict it to specific resource names
* Run `make generate-manifests`
* include role and rolebinding to write secrets
With this, the kubeshark service-account have rights to
update the value of the secrets of the same namespace
where kubeshark was deployed. This was necessary to keep
the value of the license updated
Signed-off-by: Luiz Oliveira <ziuloliveira@gmail.com>
* Update helm-chart/templates/02-cluster-role.yaml
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* Update helm-chart/templates/03-cluster-role-binding.yaml
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* Update helm-chart/templates/03-cluster-role-binding.yaml
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* Update helm-chart/templates/03-cluster-role-binding.yaml
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* Update helm-chart/templates/02-cluster-role.yaml
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
---------
Signed-off-by: Luiz Oliveira <ziuloliveira@gmail.com>
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* Give the user hability to set ingress as needed
- Removed unecessary IngressClass.
- If no IngressClassName passed, use cluster's default class
- Renamed `ingressclass` with `IngressClassName`. Is the standard name
used for it.
- Included custom annotations for Ingress. This way user can set any
custom annotation for the ingress only.
Signed-off-by: Luiz Oliveira <ziuloliveira@gmail.com>
* Update helm-chart/templates/11-ingress.yaml
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* Update config/configStructs/tapConfig.go
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* Update helm-chart/templates/11-ingress.yaml
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* update default ingressClassName value
Signed-off-by: Luiz Oliveira <ziuloliveira@gmail.com>
---------
Signed-off-by: Luiz Oliveira <ziuloliveira@gmail.com>
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* include kubernetes default labels
Using _helpers.tpl to define those labels
Signed-off-by: Luiz Oliveira <ziuloliveira@gmail.com>
* include Notes with tips after the installs
Signed-off-by: Luiz Oliveira <ziuloliveira@gmail.com>
* create a standard service account name
Signed-off-by: Luiz Oliveira <ziuloliveira@gmail.com>
* Update helm-chart/templates/NOTES.txt
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* Update helm-chart/templates/NOTES.txt
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* fixes ingress and nginx labels
Signed-off-by: Luiz Oliveira <ziuloliveira@gmail.com>
* fixes new label mapping from values
Signed-off-by: Luiz Oliveira <ziuloliveira@gmail.com>
* update makefile to to use correct default namespace and release name to generate manifests
Signed-off-by: Luiz Oliveira <ziuloliveira@gmail.com>
---------
Signed-off-by: Luiz Oliveira <ziuloliveira@gmail.com>
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* ✨ Use the Helm chart in `tap` command to install Kubeshark
* ⬆️ Set Go version to `1.19` in `go.mod` file
* ✨ Add `Helm` struct`, `NewHelm` and `NewHelmDefault` methods
* ⚡ Better logging and error return
* ⚡ Pass the config as `values.yaml` to Helm install
* 🔥 Remove `helm-chart`, `manifests` and `check` commands
* ➖ Run `go mod tidy`
* 🎨 Move `helm` package into `kubernetes` package
* 🔥 Remove `# THIS FILE IS AUTOMATICALLY GENERATED BY KUBESHARK CLI. DO NOT EDIT!` notice from the manifests and Helm templates
* 🔥 Remove the unused `GenerateApplyConfiguration` and `buildWithDefaultLabels` methods
* ✨ Add `Ingress`
* ⚡ Rewrite the target in `Ingress`
* ⚡ Fix the path of front pod in `Ingress`
* ✨ Add `IngressConfig` struct
* ⚡ Generate the correct Helm chart based on `tap.ingress` field of `values.yaml`
* feat: add goreleaser config for creating automatically homebrew formula
* Fix the formatting of YAML and add a newline at the end of file
* Fix the formatting of YAML, add a newline at the end of file and change the commit author
Co-authored-by: M. Mert Yildiran <me@mertyildiran.com>
* Use `github.com/rs/zerolog` for logging
* Use `github.com/rs/zerolog` for logging (continue)
* Add `debug` flag
* Remove `github.com/op/go-logging` dependency completely
* Fix linter
* Remove `logger` module
* Remove `shared` module
* Move `cli` folder contents into project root
* Fix linter
* Change the module name from `github.com/kubeshark/kubeshark/cli` to `github.com/kubeshark/kubeshark`
* Set the default `Makefile` rule to `build`
* Add `lint` rule
* Fix the linter errors
* Remove `tap` directory
* Fix the depedencies and build errors
* Fix the linter errors
* Use `kubeshark/worker` image as tapper
* Arrange the pod prefixes and suffixes
* Don't install any dependencies in the CI
* Remove `devops` directory
* Don't generate eBPF object files in the CI
* Fix `Makefile`
* Update `Dockerfile`
* Remove the `ui` directory
* Deploy the UI in a separate pod named `front`
* Fix the port number
* Fix the port forwarding
* Call `postFrontStarted` only after `kubeshark-api-server` and `front` are ready
* Fix linter
* Fix `yaml` comments
* Rename `mizu` to `kubeshark`
* Rename `up9inc` to `kubeshark`
* Change the logo, title, motto and the main color
* Replace the favicon
* Update the docs link
* Change the copyright text in C files
* Remove a comment
* Rewrite the `README.md` and update the logo and screenshots used in it
* Add a `TODO`
* Fix the grammar
* Fix the bottom text in the filtering guide
* Change the Docker Hub username of cross-compilation intermediate images
* Add an install script
* Fix `docker/login-action` in the CI
* Delete `build-custom-branch.yml` GitHub workflow
* Update `README.md`
* Remove `install.sh`
* Change the motto back to "Traffic viewer for Kubernetes"
Fetch source and destination addresses with bpf from tcp kprobes, similar to how it is done for openssl lib.
Chunk contains both source address and destination address.
FD is no longer used to obtain addresses.
Instead of going through the socket fd, addresses are obtained in kprobe/tcp_sendmsg on ssl write and kprobe/tcp_recvmsg on ssl read. The tcp kprobes and the openssl uprobes communicate through the id->sslInfo bpf map.
* add protocols array to the endpoint
* no message
* no message
* fix tests and small fix for the iteration
* fix the color of the protocol
* Get protocols list and method colors from server
* fix tests
* cr fixes
Co-authored-by: Amit Fainholts <amit@up9.com>
* Determine the Go ABI and get `goid` offset from DWARF
* Add `ABI` enum and morph the function according to the detected ABI
* Pass `goid` offset to an eBPF map to retrieve it in eBPF context
* Add `vmlinux.h` and implement `get_goid_from_thread_local_storage`
* Fix BPF verifier errors
* Update the comments
* Add `go_abi_0.h` and implement `ABI0` specific reads for `arm64`
* Upgrade `github.com/cilium/ebpf` to `v0.9.0`
* Add a comment
* Add macros for x86 specific parts
* Update `x86.o`
* Fix the map key type
* Add `user_pt_regs`
* Update arm64 object file
* Fix the version detection logic
* Add `getGStructOffset` method
* Define `goid_offsets`, `goid_offsets_map` structs and pass the offsets correctly
* Fix the `net.TCPConn` and buffer addresses for `ABI0`
* Remove comment
* Fix the issues for arm64 build
* Update x86.o
* Revert "Fix the issues for arm64 build"
This reverts commit 48b041b1b6.
* Revert `user_pt_regs`
* Add `vmlinux` directory
* Fix the `build.sh` and `Dockerfile`
* Add vmlinux_arm64.h
* Disable `get_goid_from_thread_local_storage` on ARM64 with a macro
* Update x86.o
* Update arm64.o
* x86
* arm64
* Fix the cross-compilation issue from x86 to arm64
* Fix the same thing for x86
* Use `BPF_CORE_READ` macro instead of `bpf_ringbuf_reserve` to support kernel versions older than 5.8
Also;
Add legacy version of thread_struct: thread_struct___v46
Build an additional object file for the kernel versions older than or equal to 4.6 and load them accordingly.
Add github.com/moby/moby
* Make #define directives more definitive
* Select the x86 and arm64 versions of `vmlinux.h` using macros
* Put `goid` offsets into the map before installing `uprobe`(s)
* arm64
* #run_acceptance_tests
* Remove a forgotten `fmt.Printf`
* Log the detected Linux kernel version
* close ws on open
* chech if json before parsing
* setting defualt tab reponse and missing dep
* remove redundant
* space
* PR fixes
* remove redundant
* changed order
* Revert "remove redundant"
This reverts commit 2f0bef5d33.
* revert order change
* changes
* change
* changes
Co-authored-by: Leon <>
* Add select protocol → when selected, the view will be on commands of that exact protocol
* CR fixes
* added const instead of free string
* remove redundant sass file
* Handle the Go `ABIInternal` differences on ARM64
* Log the Capstone version, arch and mode
* Upgrade Capstone from `4.0.2` to `5.0-rc2` to have ARM64 instructions fix
* Use the correct register on ARM64 for reading buffer length
* Fix the addresses on ARM64
* #run_acceptance_tests
* Update `x86.o`
* Update `arm64.o`
* #run_acceptance_tests
* pie chart for protocols and methods by requests and volume
* protocols legend
* timeline bar chart component created
* timeline can view requests and volume
* sorting the bra charts by timestemp
* disable view of <1% pieces in pie
* space added to the end of the file
* package.json update
* cr fixes
* remove spave
* remove unnecessary react fragment
Co-authored-by: Liraz Yehezkel <lirazy@up9.com>
* Define and use `BPF_CFLAGS` environment variable
* Add eBPF dependencies to `builder-from-amd64-to-arm64v8` and `builder-native-base`
* Add eBPF dependencies to `builder-from-arm64v8-to-amd64`
* Only compile x86 arch of Capstone for x86 target
* Build and install `libbpf` from source
* Fix `builder-from-arm64v8-to-amd64`
* Add `BPF_TARGET` environment variable
* Fix the eBPF verifier error on ARM64
* Fix `go_crypto_tls_ex_uprobe`
* Fix the check
* #run_acceptance_tests
* Fix the build script
* Include ARM64 files
* Bring back `x86.o`
* Generate both endianness
* Fix Dockerfile
* #run_acceptance_tests
* Determine the endianness on runtime if it's possible in Go (default little-endian) #run_acceptance_tests
* Revert "Determine the endianness on runtime if it's possible in Go (default little-endian) #run_acceptance_tests"
This reverts commit a2c83c6040.
* Remove big-endian files #run_acceptance_tests
* Fix Dockerfile #run_acceptance_tests
Co-authored-by: Ubuntu <ubuntu@ip-172-31-33-233.eu-central-1.compute.internal>
* pie chart for protocols and methods by requests and volume
* protocols legend
* methods legend
* pie chart component
* code refactor
* no message
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
Do not save OAS example response if it is over the limit.
SpecGen.MaxExampleLen is measured in bytes.
Limit=0 means "don't record any examples", while limit=-1 means "record all".
Limit is configured via the config file / --set: --set oas.max-example-len=100.
The default is 10KB.
This PR breaks the previous config. Moved oas bool (enable/disable OAS) to oas.enable.
Users who wish to disable OAS (or to explicitly enable it) should now to so with --set oas.enable=false instead of --set oas=false.
Co-authored-by: Nimrod Gilboa Markevich <nimrod@up9.com>
Co-authored-by: Nimrod Gilboa Markevich <59927337+nimrod-up9@users.noreply.github.com>
* Run `go generate tls_tapper.go`
* Add `golang_uprobes.c`
* Add Golang hooks and offsets
* Add `golangConnection` struct and implement `pollGolangReadWrite` method
* Upgrade `github.com/cilium/ebpf` version to `v0.8.1`
* Fix the linter error
* Move map related stuff to `maps.h` and run `go generate tls_tapper.go`
* Remove unused parameter
* Add an environment variable to test Golang locally
* Replace `Libssl` occurrences with `Ssllib` for consistency
* Fix exe path finding
* Temporarily disable OpenSSL
* Fix the mixed offsets and dissection preparation
* Change the read symbol from `net/http.(*persistConn).Read` to `crypto/tls.(*Conn).Read`
* Remove `len` and `cap` fields
* Fix the indent
* Fix the read data address
* Make `golang_dial_writes` key `__u64` and include the PID
* Fix the read data address one more time
* Temporarily disable the PCAP capture
* Add a uprobe for `net/http.(*gzipReader).Read` to read chunked HTTP response body
* Cancel `golang_crypto_tls_read_uprobe` if it's a gzip read
* Make hash map names more meaningful
* Pass the connection address from `write` to `gzip` through a common address between `gzip` and `dial`
* Fix the probed line number links
* Add `golangReader` struct and implement its `Read` method
* Have a single counter pair and request response matcher per Golang connection
* Add `MIZU_GLOBAL_GOLANG_PATH` environment variable
* `NULL` terminate the bytes with `unix.ByteSliceToString`
* Temporarily reject the gzip chunks
* Add malformed TODOs
* Revert "`NULL` terminate the bytes with `unix.ByteSliceToString`"
This reverts commit 7ee7ef7e44.
* Bring back `len` and `cap` fields
* Set `len` and `cap` in `golang_net_http_gzipreader_read_uprobe` as well
* Remove two `TODO`s
* Fix the `key_gzip` offsets
* Compress if it's gzip chunk (probably wrong!)
* Revert "Compress if it's gzip chunk (probably wrong!)"
This reverts commit 094a7c3da4.
* Remove `golang_net_http_gzipreader_read_uprobe`
* Read constant 4KiB
* Use constant read length
* Get the correct len of bytes (saw the second entry)
* Set all buffer sizes to `CHUNK_SIZE`
* Remove a `TODO`
* Revert "Temporarily disable the PCAP capture"
This reverts commit a2da15ef2d.
* Update `golang_crypto_tls_read_uprobe`
* Set the `reader` field of `tlsStream` to fix a `nil pointer dereference` error
* Don't export any fields of `golangConnection`
* Close the reader when we drop the connection
* Add a tracepoint for `sys_enter_close` to detect socket closes
* Rename `socket` struct to `golang_socket`
* Call `should_tap` in Golang uprobes
* Add `log_error` calls
* Revert "Temporarily disable OpenSSL"
This reverts commit f54d9a453f.
* Fix linter
* Revert "Revert "Temporarily disable OpenSSL""
This reverts commit 2433d867af.
* Change `golang_read_writes` map type from `BPF_RINGBUF` to `BPF_PERF_OUTPUT`
* Rename `golang_read_write` to `golang_event`
* Define an error
* Add comments
* Revert "Revert "Revert "Temporarily disable OpenSSL"""
This reverts commit e5a1de9c71.
* Fix `pollGolang`
* Revert "Revert "Revert "Revert "Temporarily disable OpenSSL""""
This reverts commit 6e1bd5d4f3.
* Fix `panic: send on closed channel`
* Revert "Revert "Revert "Revert "Revert "Temporarily disable OpenSSL"""""
This reverts commit 57d0584655.
* Use `findLibraryByPid`
* Revert "Revert "Revert "Revert "Revert "Revert "Temporarily disable OpenSSL""""""
This reverts commit 46f3d290b0.
* Revert "Revert "Revert "Revert "Revert "Revert "Revert "Temporarily disable OpenSSL"""""""
This reverts commit 775c833c06.
* Log tapping Golang
* Fix `Poll`
* Refactor `golang_net_http_dialconn_uprobe`
* Remove an excess error check
* Fix `can only use path@version syntax with 'go get' and 'go install' in module-aware mode` error in `tap/tlstapper/bpf-builder/build.sh`
* Unify Golang and OpenSSL under a single perf event buffer and `tls_chunk` struct
* Generate `tlsTapperChunkType` type (enum) as well
* Use kernel page size for the `sys_closes` perf buffer
* Fix the linter error
* Fix `MIZU_GLOBAL_GOLANG_PID` environment variable's functionality
* Rely on tracepoints for file descriptor retrieval in Golang implementation
* Remove the unnecessary changes
* Move common functions into `common.c`
* Declare `lookup_ssl_info` function to reduce duplication
* Fix linter
* Add comments and TODOs
* Remove `MIZU_GLOBAL_GOLANG_PATH` environment variable
* Update the object files
* Fix indentation
* Update object files
* Add `go_abi_internal.h`
* Fix `lookup_ssl_info`
* Convert indentation to spaces
* Add header guard comment
* Add more comments
* Find the `ret` instructions using Capstone Engine and `uprobe` the `return` statements
* Implement `get_fd_from_tcp_conn` function
* Separate SSL contexts to OpenSSL and Go
* Move `get_count_bytes` from `common.c` to `openssl_uprobes.c`
* Rename everything contains Golang to Go
* Reduce duplication in `go_uprobes.c`
* Update the comments
* Install Capstone in CI and Docker native builds
* Update `devops/install-capstone.sh`
* Add Capstone to AArch64 cross-compilation target
* Fix some of the issues on ARM64
* Delete the map element in `_ex_urpobe`
* Remove an unsued `LOG_` macro
* Rename `aquynh` to `capstone-engine`
* Add comment
* Revert "Fix some of the issues on ARM64"
This reverts commit 0b3eceddf4.
* Revert "Revert "Fix some of the issues on ARM64""
This reverts commit 681534ada1.
* Update object files
* Remove unnecessary return
* Increase timeout
* #run_acceptance_tests
* #run_acceptance_tests
* Fix the `arm64v8` sourced builds
* #run_acceptance_tests
* install @mui v5 and change imports
* upgrade MUI v5 in mizu community
* package-lock of mizu community and ui-common
* fix ui-common path
* #run_acceptance_tests
* remove comment
* cr fixes
* Major npm packages update
* npm i command added to dockerfile
* globally install npm new version
* remove the packages lock file copy
* package-lock commit and dockerfile revert changes
* space removal
Co-authored-by: Roee Gadot <roee.gadot@up9.com>
* Call `SetProtocol` in AMQP faster and remove `GetProtocol` method
* #run_acceptance_tests
* Remove the unused fields from the test mocks #run_acceptance_tests
* Add gin-contrib/pprof dependency
* Run pprof server on agent with --profiler flag
* Add --profiler flag to cli
* Fix error message
* Print cpu usage percentage
* measure cpu of current pid instead of globaly on the system
* Add scripts to plot performance
* Plot packetsCount in analysis
* Concat to DataFrame
* Plot in turbo colorscheme
* Make COLORMAP const
* Fix rss units
* Reduce code repetition by adding function for plotting
* Allow grouping based on filenames
* Temporary: Marked with comments where to disable code for experiments
* Add newline at end of file
* Add tap.cpuprofile flag. Change memprofile flag to tap.memprofile
* create tapper modes for debugging using env vars
* Fix rss plot units (MB instead of bytes)
* Remove comment
* Add info to plot script
* Remove tap.cpumemprofile. Rename tap.memprofile to memprofile
* Remove unused import
* Remove whitespaces
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Remove whitespaces
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Remove whitespaces
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Remove whitespaces
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Remove whitespaces
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Remove whitespaces
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Rename debug env vars
* Create package for debug env vars, read each env var once
* Run go mod tidy
* Increment MatchedPairs before emitting
* Only count cores once
* Count virtual and physical cores
* Add dbgctl replace in cli
* Fix lint: Check return values
* Add tap/dbgctl to test-lint make rule
* Replace tap/dbgctl in all modules
* #run_acceptance_tests
* Copy dbgctl module to docker image
* Debug/profile tapper benchmark (#1093)
* add mizu debug env to avoid all extensions
* add readme + run_tapper_benchmark.sh
* temporary change branch name
* fix readme
* fix MIZU_BENCHMARK_CLIENTS_COUNT env
* change tap target to tcp stream
* track live tcp streams
* pr fixes
* rename tapperPacketsCount to ignored_packets_count
* change mizu tapper to mizu debugg
Co-authored-by: David Levanon <dvdlevanon@gmail.com>
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* stop tapping self tapper traffic
* run go mod tidy
* allow to explicitly ignore ports
* remove unused code
* remove shared from tap + go mod tidy
* move ignroe ports to tapper
* rename TapperPacketsCount to IgnoredPacketsCount
* don't check null - go is smart
* remove nil check
* Fix a `nil pointer dereference` error that occurs in `tcpReader`'s `Read` method
* #run_acceptance_tests
* #run_acceptance_tests
* Revert "Fix a `nil pointer dereference` error that occurs in `tcpReader`'s `Read` method"
This reverts commit ccef6cb393.
* Fix the race condition using locks #run_acceptance_tests
* Handle the wait for fetch in acceptance tests better
* #run_acceptance_tests
* Fix the error #run_acceptance_tests
* Fix `waitForFetchAndPause` and `checkFilter` #run_acceptance_tests
* Fix the tests #run_acceptance_tests
* Spawn only two Goroutines per TCP stream
* Fix the linter error
* Use `isProtocolIdentified` method instead
* Fix the `Read` method of `tcpReader`
* Remove unnecessary `append`
* Copy to buffer only a message is received
* Remove `exhaustBuffer` field and add `rewind` function
* Rename `buffer` field to `pastData`
* Update tap/tcp_reader.go
Co-authored-by: Nimrod Gilboa Markevich <59927337+nimrod-up9@users.noreply.github.com>
* Use `copy` instead of assignment
* No lint
* #run_acceptance_tests
* Fix `rewind` #run_acceptance_tests
* Fix the buffering algorithm #run_acceptance_tests
* Add `TODO`
* Fix the problems in AMQP and Kafka #run_acceptance_tests
* Use `*bytes.Buffer` instead of `[]api.TcpReaderDataMsg` #run_acceptance_tests
* Have a single `*bytes.Buffer`
* Revert "Have a single `*bytes.Buffer`"
This reverts commit fad96a288a.
* Revert "Use `*bytes.Buffer` instead of `[]api.TcpReaderDataMsg` #run_acceptance_tests"
This reverts commit 0fc70bffe2.
* Fix the early timing out issue #run_acceptance_tests
* Remove `NewBytes()` method
* Update the `NewTcpReader` method signature #run_acceptance_tests
* #run_acceptance_tests
* #run_acceptance_tests
* #run_acceptance_tests
Co-authored-by: Nimrod Gilboa Markevich <59927337+nimrod-up9@users.noreply.github.com>
* #run_acceptance_tests
* Wait 4 seconds after filter submission #run_acceptance_tests
* Revert "Wait 4 seconds after filter submission #run_acceptance_tests"
This reverts commit 3c20ccfcec.
* Upgrade Basenine version to `v0.8.2` #run_acceptance_tests
* #run_acceptance_tests
* Revert "Revert "Wait 4 seconds after filter submission #run_acceptance_tests""
This reverts commit f0c595150d.
* Reduce the delay to 2 seconds #run_acceptance_tests
* Use `cy.wait()` instead of `setTimeout`
* #run_acceptance_tests
* Increase it to 4 seconds #run_acceptance_tests
* #run_acceptance_tests
* Wait for a second and pause the stream to preserve the DOM #run_acceptance_tests
* Wait in a better place #run_acceptance_tests
* Wait `pause-icon` to disappear #run_acceptance_tests
* Wait one more second #run_acceptance_tests
* Fix `setup.sh`
* #run_acceptance_tests
* Fix the place of `npm i` call
* #run_acceptance_tests
* Fix the other workflow as well #run_acceptance_tests
* Fix the workflows once more
* #run_acceptance_tests
* Don't ignore `*/cypress/support` #run_acceptance_tests
* Do `npm i` in `setup.sh` #run_acceptance_tests
* Wait for at least 4 seconds #run_acceptance_tests
* #run_acceptance_tests
* Fix #run_acceptance_tests
* Comment #run_acceptance_tests
* Fix `{alt+enter}` to `{ctrl+enter}` and update the `checkFilter` and `deeperCheck` method signatures #run_acceptance_tests
* #run_acceptance_tests
* #run_acceptance_tests
* Extract it to a function #run_acceptance_tests
* Remove `cypress-wait-until`
* Revert `.gitignore` #run_acceptance_tests
* filters visble on click
* servicemap layout
* headers added
Icon changed
* flex removed , we have max size for filter
* selection only from edges
* caption changed
* removed duplicated code
* changes
Co-authored-by: Leon <>
* Fetch N number of records in M milliseconds timeout before streaming the records
* Implement the functionality inside socket data streamer
* Reverse the `fetchData` slice
* #run_acceptance_tests
* Trying to fix the tests.
#run_acceptance_tests
* javascript compilation error.
* #run_acceptance_tests
* Name the method better
* Upgrade Basenine version to `v0.8.0`
* Fix some issues related to `Fetch`
* Upgrade the Basenine version in `Dockerfile` as well
* Remove underscore from the parameter name
* Parameterize fetch timeout ms
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
Co-authored-by: Roee Gadot <roee.gadot@up9.com>
* changed icon
* close icon postion
* linter fixes
* make onSelectedOASService as callback function
* removing lint warning
* small fix
Co-authored-by: Leon <>
* avoid chunks with invalid address
* tls tapper should distict between pids
* prettfy tls verbose log and tls key
* support tls from multi threads + duplicate calls to the same target
* introduce fdCache and user address pair as tls key
* remove unused comment
* fix merge conflicts
* use lru for fdcache
* pr fixes - renaming
* fix conflict issue
* Add GraphQL detection
* Change the abbreviation to `GQL`
* Fix the `TestMacros` test case
* Try to fix the security issues reported by Snyk
* Run `go mod tidy` in `agent` directory
* Upgrade `golang.org/x/crypto`
* Downgrade `golang.org/x/crypto`
* Downgrade `golang.org/x/crypto`
* Downgrade `golang.org/x/crypto`
* Upgrade to `github.com/vektah/gqlparser/v2 v2.4.2`
* Run `go mod tidy`
* Replace `github.com/vektah/gqlparser/v2` with its fork `github.com/mertyildiran/gqlparser/v2` to fix the vulns
* Upgrade the `github.com/mertyildiran/gqlparser/v2 v2.4.6`
* Don't upgrade `golang.org/x/net`
* Fix `panic: interface conversion: api.RequestResponseMatcher is nil, not *http.requestResponseMatcher` error
Also fix the request-response matcher maps iteration in `clean()` method.
* Fix the mocks in the unit tests
* Remove unnecessary fields from `tlsPoller` and implement `SetProtocol` method
* Use concrete types in `tap` package
* Share the streams map with the TLS tapper
* Check interface conversion error
* Remove `tcpStreamWrapper` struct
* Refactor `tap` module and move some of the code to `tap/api` module
* Move `TrafficFilteringOptions` struct to `shared` module
* Change the `Dissect` method signature to have `*TcpReader` as an argument
* Add `CloseOtherProtocolDissectors` method and use it to synchronously close the other protocol dissectors
* Run `go mod tidy` in `cli` module
* Rename `SuperIdentifier` struct to `ProtoIdentifier`
* Remove `SuperTimer` struct
* Bring back `CloseTimedoutTcpStreamChannels` method
* Run `go mod tidy` everywhere
* Remove `GOGC` environment variable from tapper
* Fix the tests
* Bring back `debug.FreeOSMemory()` call
* Make `CloseOtherProtocolDissectors` method mutexed
* Revert "Remove `GOGC` environment variable from tapper"
This reverts commit cfc2484bbb.
* Bring back the removed `checksum`, `nooptcheck` and `ignorefsmerr` flags
* Define a bunch of interfaces and don't export any new structs from `tap/api`
* Keep the interfaces in `tap/api` but move the structs to `tap/tcp`
* Fix the unit tests by depending on `github.com/up9inc/mizu/tap`
* Use the modified `tlsEmitter`
* Define `TlsChunk` interface and make `tlsReader` implement `TcpReader`
* Remove unused fields in `tlsReader`
* Define `ReassemblyStream` interface and separate `gopacket` specififc fields to `tcpReassemblyStream` struct
Such that make `tap/api` don't depend on `gopacket`
* Remove the unused fields
* Make `tlsPoller` implement `TcpStream` interface and remove the call to `NewTcpStreamDummy` method
* Remove unused fields from `tlsPoller`
* Remove almost all of the setter methods in `TcpReader` and `TcpStream` interface and remove `TlsChunk` interface
* Revert "Revert "Remove `GOGC` environment variable from tapper""
This reverts commit ab2b9a803b.
* Revert "Bring back `debug.FreeOSMemory()` call"
This reverts commit 1cce863bbb.
* Remove excess comment
* Fix acceptance tests (`logger` module) #run_acceptance_tests
* Bring back `github.com/patrickmn/go-cache`
* Fix `NewTcpStream` method signature
* Put `tcpReader` and `tcpStream` mocks into protocol dissectors to remove `github.com/up9inc/mizu/tap` dependency
* Fix AMQP tests
* Revert 960ba644cd
* Revert `go.mod` and `go.sum` files in protocol dissectors
* Fix the comment position
* Revert `AppStatsInst` change
* Fix indent
* Fix CLI build
* Fix linter error
* Fix error msg
* Revert some of the changes in `chunk.go`
* filter graph when refresh
* change to const
* listen only for getServicesForFilter
Co-authored-by: Leon <>
Co-authored-by: Igor Gov <iggvrv@gmail.com>
* Remove non-critical TLS detected log that causes `slice bounds out of range` error
* Remove all non-functional `OutboundLink` code that was providing `/status/recentTLSLinks` endpoint
* Fix more unused code
* Increase the OOM risk in exchange of less idle CPU usage
* Read the interval from an environment variable named `CLOSE_TIMEDOUT_TCP_STREAM_CHANNELS_INTERVAL_MS`
* Log the `getCloseTimedoutTcpChannelsInterval` return value
* Basenine MongoDB mess
* Fix more
* Fix the `mongodb` container arguments
* Add Basenine ARM64 binary
* Make the changes related to `leftOff` becoming a string value
* Make `leftOffTop` state string
* Handle `CloseConnection` in `Fetch`
* Upgrade Basenine to `0.7.0`
* Revert the changes in `package.json` and `package-lock.json`
* Fix the `Dockerfile`
* Remove the binaries
* Increase the Basenine up deadline to 20 seconds
* Revert the changes in `shared/kubernetes/provider.go`
* Fix the OAS generator tests
* Protect from race condition
* Fix mutexes
* Fix unlock
* Fix logging data types
* Try to stabilize the tests
* Remove the `replace` statement
* revert the change the done in 2899414f2b to not change the leftOff
* Change `leftOffBottom` empty string default value to `latest`
* Upgrade Basenine to `0.7.1`
* Handle the Basenine client library errors better
* Use `DEFAULT_QUERY` constant
* Remove `min=-1`
* Replace some `Errorf`s with `Panicf`s
* Remove the closure in `runGenerator` method
* Remove an unnecessary check
Co-authored-by: M. Mert Yildiran <mehmet@up9.com>
Co-authored-by: Andrey Pokhilko <apc4@ya.ru>
Co-authored-by: undera <undera@undera-old-desktop.home>
Co-authored-by: AmitUp9 <96980485+AmitUp9@users.noreply.github.com>
* fixed toast
fixed filter refresh on reload
* revarted
* sticky selectlist header
* apply check to filtered items
* grpc filter Bug
* should almost fix filtering
* working without disabled
* handle disabled items
* small refactor
* almost working with weird jesture
* test
* servicesFilterList height
* fixed to work
* refresh margin
* after PR notes
* remove redunded var
* pr review
* Pr comments
* removed line
* removed redundant
* nullable check
Co-authored-by: Leon <>
* Added log message
* Remove Reset function from OasGenerator interface, use Stop+Start instead
* SetEntriesQuery returns a bool stating whether the query changed
* Remove gRPC related modifications
* Remove gRPC status text related modifications as well
* Fixing gRPC vertical image
detect grpc when content type is 'application/grpc' as well (and not only from the grpc-status)
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Separate socket and basenine logic
* WIP
* Update socket_server_handlers.go
* Update socket_data_streamer.go and socket_server_handlers.go
* Update socket_server_handlers.go
* Merge branch 'develop' into refactor_ws
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
* empty commit for actions
* empty commit for actions
* commit for actions
* Revert "commit for actions"
This reverts commit 8ba2ecf7d3.
Co-authored-by: RoyUP9 <87927115+RoyUP9@users.noreply.github.com>
* OpenAPI renamed to Service Catalog
* Docs icon change
Hide Navbar on serviceMap modal open
* PR comments
Co-authored-by: Leon <>
Co-authored-by: RoyUP9 <87927115+RoyUP9@users.noreply.github.com>
* Read from service mesh network namespaces upon update (#944) #patch
* Set the entry namespace to the source namespace if the destination is not resolved (#950)
* Set the entry namespace to the source namespace if the destination is not resolved
* Overwrite src namespace with dst namespace only if dst non-empty
* Call OAS feeder
* Don't call old OAS code
* Rework calls
* Work on it
* Put back rules
* Make it compile
* start thinking of test
* Compiles
* Save
* Fixes
* Save
* Fixing
* Trying to fake conn
* add timeout
* Test timeout
* Fix tests
* Only build OAS for HTTP entries
* Remove some dead code
* Adding SampleIDs
* Cosmetics
* lint
* Revert rename
* Sample ID for content
* Cleanuo
* Add more sample IDs
* Checking hypothesis
* Move assignment place a bit
* Cosmetics
* Update test.yml
Co-authored-by: undera <undera@undera-old-desktop.home>
Co-authored-by: Igor Gov <iggvrv@gmail.com>
* support multiple workspaces
* reopen by websocket url dep
* open websocket only when websocketURL is changed
* upgrade common version
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* link open in a new tab
* fixed double toast
* added const
* javiers new icon
* epbg img fix
* pkg update
* changed import
* formated
Co-authored-by: Leon <>
* Make `EntryTitle` component responsive
* useRequetTextByWidth added
* renamed
Co-authored-by: M. Mert Yildiran <mehmet@up9.com>
Co-authored-by: Leon <>
* information icon added
* new icon and position
* icon changed
* new Ver
* space removed
Co-authored-by: Adam Kol <adam@up9.com>
Co-authored-by: Leon <>
Update tappers via websocket instead of by env var. This way the DaemonSet doesn't have to be applied just to notify the tappers that the tap targets changed. The number of tapper restarts is reduced. The DaemonSet still gets applied when there is a need to add/remove a tapper from a node.
* Define `ReadProgress` struct and update `Dissector` interface such that the `bufio.Reader` progress can be learned on item emitting
* Display the `requestSize` and `responseSize` fields in the UI
* Update the tests
* publish ui-common version 1.0.130 and bump to this version in ui/package.json file
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
Co-authored-by: Roee Gadot <roee.gadot@up9.com>
* Add `/db/flush` and `/db/reset` API endpoints
* Handle the unmarshalling errors better in the WebSocket
* Handle Basenine connection error better in the WebSocket
* Upgrade to Basenine `v0.6.5`
* Fix the duplicated `StartTime` state
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Define `Capture` type and expect it as an argument in `Dissect` method
* Add an indicator for the eBPF sourced entries
* Fix the Go lint error
* Fix the logic in the UI
* Update the expected JSONs
* Add TODOs
* Add `UndefinedCapture` constant
* Define `CaptureTypes` enum
* initial commit
* removing files
* after pr
* move StatusBar to common
* last changes from dev
* update common-ui
* webSocket was added to TrafficViewerApi
* useWS
* actionButtons added to TrafficV
* comment clean
* api clean up
* api clean up
* statusbar position changed
* Checkbox changed
* AnalyzeButton exported to common
* CustomModal added from Ent
* oas modal exported to common
* removed redundant
* oasmodal usage
* es6 function
* api changed
* removed react-scripts
Co-authored-by: Leon <>
* Upgrade to Basenine `v0.6.2`, add `xml` helper, make `xml` and `json` helpers available in `redact` helper
* URL encode the query
* Upgrade to Basenine `v0.6.3`
* Always derive the summary and method fields from the entry in the database on read
* Update the expected JSONs in the protocol unit tests
* Add test cases for `Summarize` method
* Remove unused `GetEntry` method, `DataUnmarshaler` struct and `UnmarshalData` method
* Temporarily enable the acceptance tests
* Temporarily disable Slack notification on failure
* Update the Cypress tests
* Fix an issue in Redis
* Fix a typo and the Cypress tests
* Revert "Temporarily disable Slack notification on failure"
This reverts commit cad1901ea4.
* Revert "Temporarily enable the acceptance tests"
This reverts commit bad7706c9b.
* Add the ability to set the insertion filter into CLI
* Resolve the conflict
* Upgrade Basenine to `v0.5.0` and check the insertion filter against syntax errors inside CLI
* Upgrade Basenine to `v0.5.1`
* Update the sums
* Figure out decimal pattern
* More pre-loaded
* Tune predefined spec
* Prefix and suffix detected
* Implement entry compacting
* God bless unit tests
* Fix a bug
* REsearch it more
* Write back test file
* Working on merging pathObjs
* Working on merging ops
* Commit
* Roll back some changes
* Fix test
* Fixed sorting
* Accept test file
* adding end line in the end of the file
Co-authored-by: Igor Gov <iggvrv@gmail.com>
Reorganize permissions example.
Permissions for optional features are separated from those that are mandatory.
Revised the list of permissions. Added and removed features to make it fit what Mizu currently requires.
* initial tls tapper commit
* add tls flag to mizu cli
* support ssl_read_ex/ssl_write_ex
* use hostproc to find libssl
* auto discover tls processes
* support libssl1.0
* recompile ebpf with old clang/llvm
* Update tap/passive_tapper.go
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Update tap/tlstapper/tls_poller.go
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Update tap/tlstapper/tls_poller.go
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Update tap/tlstapper/tls_poller.go
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Update tap/tlstapper/tls_poller.go
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Update tap/tlstapper/tls_poller.go
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Update tap/tlstapper/tls_poller.go
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Update tap/tlstapper/tls_poller.go
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* upgrade ebpf go lib
* handling big tls messages
* fixing max buffer size in ebpf
* remove unused import
* fix linter issues
* minor pr fixes
* compile with old clang
* fix cgroup file format
* pr fixes + cgroup extract enhance
* fix linter
* adding indirect ebpf dep to agent go.mod
* adding ebpf docker builder
* minor pr fixes
* add req resp matcher to dissect
* rename ssl hooks to ssl hooks structs
* move to alpine, use local copy of mizu instead of git, add readme
* use global req resp mather for tls
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Add unit tests for Kafka dissector
* Return `io.EOF` if request or response header size is zero
* Sort the slice in `representMapAsTable`
* Remove the dead code
* Remove more dead code
* Remove more dead code
* Fix `dissector.Analyze` call
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Add unit tests for AMQP dissector
* Always use UTC as the timezone in the timestamps
* Remove the dead code
* Remove more dead code
* Fix `dissector.Analyze` call
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* ws pause after buttons click (#798)
* ws pause after buttons click
* name change
Co-authored-by: Igor Gov <iggvrv@gmail.com>
* moved CHANGELOG to Mizu wiki in Github (#801)
* Adding logs of k8s client config (#800)
* Support rancher client config (#802)
* Move the request-response matcher's scope from global-level to TCP stream-level (#793)
* Create a new request-response matcher for each TCP stream
* Fix the `ident` formats in request-response matchers
* Don't sort the items in the HTTP tests
* Update tap/extensions/kafka/matcher.go
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Temporarily change the bucket folder to the new expected
* Bring back the `deleteOlderThan` method
* Use `api.RequestResponseMatcher` instead of `interface{}` as type
* Use `api.RequestResponseMatcher` instead of `interface{}` as type (more)
* Update the key format comments
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Force DaemonSet apply (#804)
Required for apply to work if the DaemonSet is created by another program e.g. Helm.
* Tag entries destination namespace (#803)
* Update main.go, socket_server_handlers.go, and 7 more files...
* Update cors.go
* omit empty namespace in json so tests pass
* fix indent
* Sending telemetry config to server (#808)
* Print http error response details (#792)
* View command - no version check (#810)
* Update mizu install command (#811)
Co-authored-by: AmitUp9 <96980485+AmitUp9@users.noreply.github.com>
Co-authored-by: Alex Haiut <alex@up9.com>
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
Co-authored-by: Nimrod Gilboa Markevich <59927337+nimrod-up9@users.noreply.github.com>
Co-authored-by: RamiBerm <54766858+RamiBerm@users.noreply.github.com>
* Create a new request-response matcher for each TCP stream
* Fix the `ident` formats in request-response matchers
* Don't sort the items in the HTTP tests
* Update tap/extensions/kafka/matcher.go
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Temporarily change the bucket folder to the new expected
* Bring back the `deleteOlderThan` method
* Use `api.RequestResponseMatcher` instead of `interface{}` as type
* Use `api.RequestResponseMatcher` instead of `interface{}` as type (more)
* Update the key format comments
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Add unit tests for HTTP dissector
* Ignore some fields on test environment
* Remove Git patches
* Don't have indent in the expected JSONs
* Fix more issues and update expected JSONs
* Refactor the test environment lookup
* Add a Makefile
* Include HTTP tests into the CI
* Fix the linting errors
* Fix another linting error
* Update the expected JSONs
* Sort `PostData.Params` params as well
* Move expected JSONs into `expect/dissect`
* Add `TestAnalyze` method
* Add `TestRepresent` method
* Add `TestRegister`, `TestMacros` and `TestPing` methods
* Test extensions first
* Remove expected JSONs
* Remove `bin` directory and update `Makefile` rules
* Update `.gitignore`
* Fix skipping download functionality in the Makefile
* Run `go mod tidy`
* Fix the race condition in the tests
* Revert "Test extensions first"
This reverts commit b8350cf139.
* Make `TEST_UPDATE` env lookup one-liner
* Update .github/workflows/test.yml
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Add a newline
* Replace `ls` with `find`
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
Fixes a bug which causes the tap command to hang until timeout if Mizu
is missing the permission to create ConfigMaps, after printing a wrong
warning message which addresses the deprecated policy validation
feature.
* Add a PCAP based testbed
* Fix typos
* Download PCAPs from the Google Cloud bucket
* Add a Python script to automate the PCAP testbed
* Dump the test suite into a file named `suite.json`
* Serialize entries separately
* Dissect individual TCP streams one by one through separate PCAP files
* Improve the reliability a little bit
* Ditch the individual TCP streams idea
* Fix some issues in Kafka
* Print the total number of packets and TCP streams
* Fix an interface conversion error in AMQP
* Print the total number of returning items from the dissectors
* Print the total number of returning items from the dissectors really
* Fix a possible race condition
* Do atomic increments just to be sure
* Print the total number of Redis `Dissect` calls
* Improve the request-response matching in Redis by including the TCP stream ID
* Update the request-response pair matching key format in HTTP and Kafka
* Rearrange the test suite
* Add more queries to the test suite
* Remove the debug prints
* Add the assertions
* Close the WebSocket connection faster
* Make `MIZU_TEST` enviroment variable a shared constant
* Add `test-lint` rule
* Fix several issues in Kafka
* Update the test suite
* Add more queries
* Fix the `test-lint` rule
* Exit only after PCAP EOF
* Add more queries
* Update `suite.json`
* Make the tests more stable
* Revert the bad changes
* Run `go mod tidy` on `tap/`
* Start with tests
* Expected file
* Almost works
* Make test stab;e
* 5 examples, not 6
* Add param type
* multipart example
* parsing multipart
* Commit
* Commit
* multipart
* Write encoding into schema
* Stable test
* Add reset
* Refactoring
* Refactoring
* Maintain the required flag
* lint
* Evidence of problems
* Improving it
* Progressing
* Progress
* Fixes
* progress
* log is not right
* Fixing thresholds
* Almost there
* Imptovements
* Move some false negatives into TODO
* cosmetics
* linter (I disagree)
* linter (I disagree)
* fix test
* 0.9 (#37)
* Update .gitignore
* WIP
* WIP
* Update README.md, root.go, and 4 more files...
* Update README.md
* Update README.md
* Update root.go
* Update provider.go
* Update provider.go
* Update root.go, go.mod, and go.sum
* Update mizu.go
* Update go.sum and provider.go
* Update portForward.go, watch.go, and mizu.go
* Update README.md
* Update watch.go
* Update mizu.go
* Update mizu.go
* no message
* no message
* remove unused things and use external for object id (instead of copy)
* no message
* Update mizu.go
* Update go.mod, go.sum, and 2 more files...
* no message
* Update README.md, go.mod, and resolver.go
* Update README.md
* Update go.mod
* Update loader.go
* some refactor
* Update loader.go
* no message
* status to statusCode
* return data directly
* Traffic viewer
* cleaning
* css
* no message
* Clean warnings
* Makefile - first draft
* Update Makefile
* Update Makefile
* Update Makefile, README.md, and 4 more files...
* Add api build and clean to makefile (files restructure) (#9)
* no message
* add clean api command
* no message
* stating with web socket
* Add tap as a separate executable (#10)
* Added tap.
* Ignore build directories.
* Added tapper build to Makefile.
* Improvements (#12)
* no message
* no message
* Feature/makefile (#11)
* minor fixes
* makefile fixes - docker build
* minor fix in Makefile
Co-authored-by: Alex Haiut <alex@up9.com>
* Update Dockerfile, multi-runner.sh, and 31 more files...
* Update multi-runner.sh
* no message
* Update .dockerignore, Dockerfile, and 30 more files...
* Update cleaner.go, grpc_assembler.go, and 2 more files...
* start the pod with host network and privileged
* fix multi runner passive tapper command
* add HOST_MODE env var
* do not return true in the should tap function
* remove line in the end
* default value in api is input
fix description and pass the parameter in the multi runner script
* missing flag.parse
* no message
* fix image
* Create main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Small fixes - permission + har writing exception (#17)
* Select node by pod (#18)
* Select node by pod.
* Removed watch pod by regex. Irrelevant for now.
* Changed default image to develop:latest.
* Features/clifix (#19)
* makefile fixes - docker build
* readme update, CLI usage fix
* added chmod
Co-authored-by: Alex Haiut <alex@up9.com>
* meta information
* Only record traffic of the requested pod. Filtered by pod IP. (#21)
* fixed readme and reduced batch size to 5 (#22)
Co-authored-by: Alex Haiut <alex@up9.com>
* API and TAP in single process (#24)
* no message
* no message
* CLI make --pod required flag and faster api image build (#25)
* makefile fixes - docker build
* readme update, CLI usage fix
* added chmod
* typo
* run example incorreect in makefile
* no message
* no message
* no message
Co-authored-by: Alex Haiut <alex@up9.com>
* Reduce delay between tap and UI - Skip dump to file (#26)
* Pass HARs between tap and api via channel.
* Fixed make docker commad.
* Various fixes.
* Added .DS_Store to .gitignore.
* Parse flags in Mizu main instead of in tap_output.go.
* Use channel to pass HAR by default instead of files.
* Infinite scroll (#28)
* no message
* infinite scroll + new ws implementation
* no message
* scrolling top
* fetch button
* more Backend changes
* fix go mod and sum
* mire fixes against develop
* unused code
* small ui refactor
Co-authored-by: Roee Gadot <roee.gadot@up9.com>
* Fix gRPC crash, display gRPC as base64, display gRPC URL and status code (#27)
* Added Method (POST) and URL (emtpy) to gRPC requests.
* Removed quickfix that skips writing HTTP/2 to HAR.
* Use HTTP/2 body to fill out http.Request and htt.Response.
* Make sure that in HARs request.postData.mimeType and response.content.mimeType are application/grpc in case of grpc.
* Comment.
* Add URL and status code for gRPC.
* Don't assume http scheme.
* Use http.Header.Set instead of manually acccessing the underlaying map.
* General stats api fix (#29)
* refactor and validation
* Show gRPC as ASCII (#31)
* Moved try-catch up one block.
* Display grpc as ASCII.
* Better code in entries fetch endpoint (#30)
* no message
* no message
* Feature/UI/filters (#32)
* UI filters
* refactor
* Revert "refactor"
This reverts commit 70e7d4b6ac.
* remove recursive func
* CLI cleanup (#33)
* Moved cli root command to tap subcommand.
* tap subcommand works.
* Added view and fetch placeholders.
* Updated descriptions.
* Fixed indentation.
* Added versio subcommand.
* Removed version flag.
* gofmt.
* Changed pod from flag to arg.
* Commented out "all namespaces" flag.
* CLI cleanup 2 (#34)
* Renamed dashboard -> GUI/web interface.
* Commented out --quiet, removed unused config variables.
* Quiter output when calling unimplemented subcommands.
* Leftovers from PR #30 (#36)
Co-authored-by: up9-github <info@up9.com>
Co-authored-by: RamiBerm <54766858+RamiBerm@users.noreply.github.com>
Co-authored-by: Liraz Yehezkel <lirazy@up9.com>
Co-authored-by: Alex Haiut <alex@testr.io>
Co-authored-by: lirazyehezkel <61656597+lirazyehezkel@users.noreply.github.com>
Co-authored-by: Alex Haiut <alex@up9.com>
Co-authored-by: nimrod-up9 <59927337+nimrod-up9@users.noreply.github.com>
Co-authored-by: RamiBerm <rami.berman@up9.com>
Co-authored-by: Alex Haiut <alex.haiut@gmail.com>
* remove leftovers (#43)
* end of week - develop to master (#50)
* Provide cli version as git hash from makefile
* Update Makefile, version.go, and 3 more files...
* Update mizuRunner.go
* Update README.md, resolver.go, and 2 more files...
* Update provider.go
* Feature/UI/light theme (#44)
* light theme
* css polish
* unused code
* css
* text shadow
* footer style
* Update mizuRunner.go
* Handle nullable vars (#47)
* Decode gRPC body (#48)
* Decode grpc.
* Better variable names.
* Added protobuf-decoder dependency.
* Updated protobuf-decoder's version.
Co-authored-by: RamiBerm <rami.berman@up9.com>
Co-authored-by: RamiBerm <54766858+RamiBerm@users.noreply.github.com>
Co-authored-by: lirazyehezkel <61656597+lirazyehezkel@users.noreply.github.com>
Co-authored-by: nimrod-up9 <59927337+nimrod-up9@users.noreply.github.com>
* Fix mizu image parameter (#53)
* remove file
* mizu release 2021-06-21 (#79)
* Show pod name and namespace (#61)
* WIP
* Update main.go, consts.go, and 2 more files...
* Update messageSensitiveDataCleaner.go
* Update consts.go and messageSensitiveDataCleaner.go
* Update messageSensitiveDataCleaner.go
* Update main.go, consts.go, and 3 more files...
* WIP
* Update main.go, messageSensitiveDataCleaner.go, and 6 more files...
* Update main.go, messageSensitiveDataCleaner.go, and 3 more files...
* Update consts.go, messageSensitiveDataCleaner.go, and tap.go
* Update provider.go
* Update serializableRegexp.go
* Update tap.go
* TRA-3234 fetch with _source + no hard limit (#64)
* remove the HARD limit of 5000
* TRA-3299 Reduce footprint and Add Tolerances(#65)
* Use lib const for DNSClusterFirstWithHostNet.
* Whitespace.
* Break lines.
* Added affinity to pod names.
* Added tolerations to NoExecute and NoSchedule taints.
* Implementation of Mizu view command
* .
* .
* Update main.go and messageSensitiveDataCleaner.go
* Update main.go
* String and not pointers (#68)
* TRA-3318 - Cookies not null and fix har file names (#69)
* no message
* TRA-3212 Passive-Tapper and Mizu share code (#70)
* Use log in tap package instead of fmt.
* Moved api/pkg/tap to root.
* Added go.mod and go.sum for tap.
* Added replace for shared.
* api uses tap module instead of tap package.
* Removed dependency of tap in shared by moving env var out of tap.
* Fixed compilation bugs.
* Fixed: Forgot to export struct field HostMode.
* Removed unused flag.
* Close har output channel when done.
* Moved websocket out of mizu and into passive-tapper.
* Send connection details over har output channel.
* Fixed compilation errors.
* Removed unused info from request response cache.
* Renamed connection -> connectionID.
* Fixed rename bug.
* Export setters and getters for filter ips and ports.
* Added tap dependency to Dockerfile.
* Uncomment error messages.
* Renamed `filterIpAddresses` -> `filterAuthorities`.
* Renamed ConnectionID -> ConnectionInfo.
* Fixed: Missed one replace.
* TRA-3342 Mizu/tap dump to har directory fails on Linux (#71)
* Instead of saving incomplete temp har files in a temp dir, save them in the output dir with a *.har.tmp suffix.
* API only loads har from *.har files (by extension).
* Add export entries endpoint for better up9 connect funcionality (#72)
* no message
* no message
* no message
* Filter 'cookie' header
* Release action (#73)
* Create main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* trying new approach
* no message
* yaml error
* no message
* no message
* no message
* missing )
* no message
* no message
* remove main.yml and fix branches
* Create tag-temp.yaml
* Update tag-temp.yaml
* Update tag-temp.yaml
* no message
* no message
* no message
* no message
* no message
* no message
* no message
* #minor
* no message
* no message
* added checksum calc to CLI makefile
* fixed build error - created bin directory upfront
* using markdown for release text
* use separate checksum files
* fixed release readme
* #minor
* readme updated
Co-authored-by: Alex Haiut <alex@up9.com>
* TRA-3360 Fix: Mizu ignores -n namespace flag and records traffic from all pods (#75)
Do not tap pods in namespaces which were not requested.
* added apple/m1 binary, updated readme (#77)
Co-authored-by: Alex Haiut <alex@up9.com>
* Update README.md (#78)
Co-authored-by: lirazyehezkel <61656597+lirazyehezkel@users.noreply.github.com>
Co-authored-by: RamiBerm <rami.berman@up9.com>
Co-authored-by: RamiBerm <54766858+RamiBerm@users.noreply.github.com>
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
Co-authored-by: nimrod-up9 <59927337+nimrod-up9@users.noreply.github.com>
Co-authored-by: Igor Gov <igor.govorov1@gmail.com>
Co-authored-by: Alex Haiut <alex@up9.com>
* temp fix - ignore agent image in config command (#185)
* removed duplicate har page header (#187)
* Hotfix - ignore not allowed set flags (#192)
#patch
* Add to periodic stats print in tapper (#221)
#patch
* Fixing bad conflict resolution
* some changes in the read me (#241)
change prerequisite to permissions and kubeconfig. These are more FYIs as Mizu requires very little prerequisites.
Change the description to match getmizu.io
* added tapper count route and wait time for tappers in test (#226)
* Introducing API server provider (#243)
* added tap acceptance tests, fixed duplicate namespace problem (#244)
* added custom config path option (#247)
* Fixing call to analysis (#248)
* no message
* upgrade alpine base image (#413)
* Develop -> main (#544)
* Add support of listening to multiple netns (#418)
* multiple netns listen - initial commit
* multiple netns listen - actual work
* remove redundant log line
* map /proc of host to tapper
* changing kubernetes provider again after big conflict
* revert node-sass version back to 5.0.0
* Rename host_source to hostSource
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* PR fixes - adding comment + typos + naming conventions
* go fmt + making procfs read only
* setns back to the original value after packet source initialized
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* TRA-3842 daemon acceptance tests (#429)
* Update tap_test.go and testsUtils.go
* Update tap_test.go
* Update testsUtils.go
* Update tap_test.go and testsUtils.go
* Update tap_test.go and testsUtils.go
* Update testsUtils.go
* Update tap_test.go
* gofmt
* TRA-3913 support mizu via expose service (#440)
* Update README.md, tapRunner.go, and 4 more files...
* Update testsUtils.go
* Update proxy.go
* Update README.md, testsUtils.go, and 3 more files...
* Update testsUtils.go and provider.go
* fix readme titles (#442)
* Auto close inactive issues (#441)
* Migrate from SQLite to Basenine and introduce a new filtering syntax (#279)
* Fix the OOMKilled error by calling `debug.FreeOSMemory` periodically
* Remove `MAX_NUMBER_OF_GOROUTINES` environment variable
* Change the line
* Increase the default value of `TCP_STREAM_CHANNEL_TIMEOUT_MS` to `10000`
* Write the client and integrate to the new real-time database
* Refactor the WebSocket implementaiton for `/ws`
* Adapt the UI to the new filtering system
* Fix the rest of the issues in the UI
* Increase the buffer of the scanner
* Implement accessing single records
* Increase the buffer of another scanner
* Populate `Request` and `Response` fields of `MizuEntry`
* Add syntax highlighting for the query
* Add database to `Dockerfile`
* Fix some issues
* Update the `realtime_dbms` Git module commit hash
* Upgrade Gin version and print the query string
* Revert "Upgrade Gin version and print the query string"
This reverts commit aa09f904ee.
* Use WebSocket's itself to query instead of the query string
* Fix some errors related to conversion to HAR
* Fix the issues caused by the latest merge
* Fix the build error
* Fix PR validation GitHub workflow
* Replace the git submodule with latest Basenine version `0.1.0`
Remove `realtime_client.go` and use the official client library `github.com/up9inc/basenine/client/go` instead.
* Move Basenine host and port constants to `shared` module
* Reliably execute and wait for Basenine to become available
* Upgrade Basenine version
* Properly close WebSocket and data channel
* Fix the issues caused by the recent merge commit
* Clean up the TypeScript code
* Update `.gitignore`
* Limit the database size
* Add `Macros` method signature to `Dissector` interface and set the macros provided by the protocol extensions
* Run `go mod tidy` on `agent`
* Upgrade `github.com/up9inc/basenine/client/go` version
* Implement a mechanism to update the query using click events in the UI and use it for protocol macros
* Update the query on click to timestamps
* Fix some issues in the WebSocket and channel handling
* Update the query on clicks to status code
* Update the query on clicks to method, path and service
* Update the query on clicks to is outgoing, source and destination ports
* Add an API endpoint to validate the query against syntax errors
* Move the query background color state into `TrafficPage`
* Fix the logic in `setQuery`
* Display a toast message in case of a syntax error in the query
* Remove a call to `fmt.Printf`
* Upgrade Basenine version to `0.1.3`
* Fix an issue related to getting `MAX_ENTRIES_DB_BYTES` environment variable
* Have the `path` key in request details, in HTTP
* Rearrange the HTTP headers for the querying
* Do the same thing for `cookies` and `queryString`
* Update the query on click to table elements
Add the selectors for `TABLE` type representations in HTTP extension.
* Update the query on click to `bodySize` and `elapsedTime` in `EntryTitle`
* Add the selectors for `TABLE` type representations in AMQP extension
* Add the selectors for `TABLE` type representations in Kafka extension
* Add the selectors for `TABLE` type representations in Redis extension
* Define a struct in `tap/api.go` for the section representation data
* Add the selectors for `BODY` type representations
* Add `request.path` to the HTTP request details
* Change the summary string's field name from `path` to `summary`
* Introduce `queryable` CSS class for queryable UI elements and underline them on hover
* Instead of `N requests` at the bottom, make it `Displaying N results (queried X/Y)` and live update the values
Upgrade Basenine version to `0.2.0`.
* Verify the sha256sum of Basenine executable inside `Dockerfile`
* Pass the start time to web UI through WebSocket and always show the `EntriesList` footer
* Pipe the `stderr` of Basenine as well
* Fix the layout issues related to `CodeEditor` in the UI
* Use the correct `shasum` command in `Dockerfile`
* Upgrade Basenine version to `0.2.1`
* Limit the height of `CodeEditor` container
* Remove `Paused` enum `ConnectionStatus` in UI
* Fix the issue caused by the recent merge
* Add the filtering guide (cheatsheet)
* Update open cheatsheet button's title
* Update cheatsheet content
* Remove the old SQLite code, adapt the `--analyze` related code to Basenine
* Change the method signature of `NewEntry`
* Change the method signature of `Represent`
* Introduce `HTTPPair` field in `MizuEntry` specific to HTTP
* Remove `Entry`, `EntryId` and `EstimatedSizeBytes` fields from `MizuEntry`
Also remove the `getEstimatedEntrySizeBytes` method.
* Remove `gorm.io/gorm` dependency
* Remove unused `sensitiveDataFiltering` folder
* Increase the left margin of open cheatsheet button
* Add `overflow: auto` to the cheatsheet `Modal`
* Fix `GetEntry` method
* Fix the macro for gRPC
* Fix an interface conversion in case of AMQP
* Fix two more interface conversion errors in AMQP
* Make the `syncEntriesImpl` method blocking
* Fix a grammar mistake in the cheatsheet
* Adapt to the changes in the recent merge commit
* Improve the cheatsheet text
* Always display the timestamp in `en-US`
* Upgrade Basenine version to `0.2.2`
* Fix the order of closing Basenine connections and channels
* Don't close the Basenine channels at all
* Upgrade Basenine version to `0.2.3`
* Set the initial filter to `rlimit(100)`
* Make Basenine persistent
* Upgrade Basenine version to `0.2.4`
* Update `debug.Dockerfile`
* Fix a failing test
* Upgrade Basenine version to `0.2.5`
* Revert "Do not show play icon when disconnected (#428)"
This reverts commit 8af2e562f8.
* Upgrade Basenine version to `0.2.6`
* Make all non-informative things informative
* Make `100` a constant
* Use `===` in JavaScript no matter what
* Remove a forgotten `console.log`
* Add a comment and update the `query` in `syncEntriesImpl`
* Don't call `panic` in `GetEntry`
* Replace `panic` calls in `startBasenineServer` with `logger.Log.Panicf`
* Remove unnecessary `\n` characters in the logs
* Remove the `Reconnect` button (#444)
* Upgrade `github.com/up9inc/basenine/client/go` version (#446)
* Fix the `Analysis` button's style into its original state (#447)
* Fix the `Analysis` button's style into its original state
* Fix the MUI button style into its original state
* Fix the acceptance tests after the merger of #279 (#443)
* Enable acceptance tests
* Fix the acceptance tests
* Move `--headless` from `getDefaultCommandArgs` to `getDefaultTapCommandArgs`
* Fix rest of the failing acceptance tests
* Revert "Enable acceptance tests"
This reverts commit 3f919e865a.
* Revert "Revert "Enable acceptance tests""
This reverts commit c0bfe54b70.
* Ignore `--headless` in `mizu view`
* Make all non-informative things informative
* Remove `github.com/stretchr/testify` dependency from the acceptance tests
* Move the helper methods `waitTimeout` and `checkDBHasEntries` from `tap_test.go` to `testsUtils.go`
* Split `checkDBHasEntries` method into `getDBEntries` and `assertEntriesAtLeast` methods
* Revert "Revert "Revert "Enable acceptance tests"""
This reverts commit c13342671c.
* Revert "Revert "Revert "Revert "Enable acceptance tests""""
This reverts commit 0f8c436926.
* Make `getDBEntries` and `checkEntriesAtLeast` methods return errors instead
* Revert "Revert "Revert "Revert "Revert "Enable acceptance tests"""""
This reverts commit 643fdde009.
* Send the message into this WebSocket connection instead of all (#449)
* Fix the CSS issues in the cheatsheet modal (#448)
* Fix the CSS issues in the cheatsheet modal
* Change the Sass variable names
* moved headless to root config, use headless in view (#450)
* extend cleanup timeout to solve context timeout problem in dump logs (#453)
* Add link to exposing mizu wiki page in README (#455)
* changed logger debug mode to log level (#456)
* fixed acceptance test go sum (#458)
* Ignore `SNYK-JS-JSONSCHEMA-1920922` (#462)
Dependency tree:
`node-sass@5.0.0 > node-gyp@7.1.2 > request@2.88.2 > http-signature@1.2.0 > jsprim@1.4.1 > json-schema@0.2.3`
`node-sass` should fix it first.
* Optimize UI entry feed performance (#452)
* Optimize the React code for feeding the entries
By building `EntryItem` only once and updating the `entries` state on meta query messages.
* Upgrade `react-scrollable-feed-virtualized` version from `1.4.3` to `1.4.8`
* Fix the `isSelected` state
* Set the query text before deciding the background to prevent lags while typing
* Upgrade Basenine version from `0.2.6` to `0.2.7`
* Set the query background color only if the query is same after the HTTP request and use `useEffect` instead
* Upgrade Basenine version from `0.2.7` to `0.2.8`
* Use `CancelToken` of `axios` instead of trying to check the query state
* Turn `updateQuery` function into a state hook
* Update the macro for `http`
* Do the `source.cancel()` call in `axios.CancelToken`
* Reduce client-side logging
* Upgrade Basenine version from `0.2.8` to `0.2.9` (#465)
Fixes `limit` helper being not finished because of lack of meta updates.
* Set `response.bodySize` to `0` if it's negative (#466)
* Prevent `elapsedTime` to be negative (#467)
Also fix the `elapsedTime` for Redis.
* changes log format to be more readable (#463)
* Stop reduction of user agent header (#468)
* remove newline in logs, fixed logs time format (#469)
* TRA-3903 better health endpoint for daemon mode (#471)
* Update main.go, status_controller.go, and 2 more files...
* Update status_controller.go and mizuTapperSyncer.go
* fixed redact acceptance test (#472)
* Return `404` instead of `500` if the entry could not be found and display a toast message (#464)
* TRA-3903 add flag to disable pvc creation for daemon mode (#474)
* Update tapRunner.go and tapConfig.go
* Update tapConfig.go
* Revert "Update tapConfig.go"
This reverts commit 5c7c02c4ab.
* TRA-3903 - display targetted pods before waiting for all daemon resources to be created (#475)
* WIP
* Update tapRunner.go
* Update tapRunner.go
* Update the UI screenshots (#476)
* Update the UI screenshots
* Update `mizu-ui.png`
* TRA-3903 fix daemon mode in permission restricted configs (#473)
* Update tapRunner.go, permissions-all-namespaces-daemon.yaml, and 2 more files...
* Update tapRunner.go
* Update tapRunner.go and permissions-ns-daemon.yaml
* Update tapRunner.go
* Update tapRunner.go
* Update tapRunner.go
* TRA-3903 minor daemon mode refactor (#479)
* Update common.go and tapRunner.go
* Update common.go
* Don't omit the key-value pair if the value is `false` in `EntryTableSection` (#478)
* Sync entries in batches just as before (using `uploadIntervalSec` parameter) (#477)
* Sync entries in batches just as before (using `uploadIntervalSec` parameter)
* Replace `lastTimeSynced` value with `time.Time{}`
Since it will be overwritten by the very first iteration.
* Clear `focusedEntryId` state in case of a filter is applied (#482)
* Prevent the crash on client-side in case of `text` being undefined in `FancyTextDisplay` (#481)
* Prevent the crash on client-side in case of `text` being undefined in `FancyTextDisplay`
* Use `String(text)` instead
* Refactor watch pods to allow reusing watch wrapper (#470)
Currently shared/kubernetes/watch.go:FilteredWatch only watches pods.
This PR makes it reusable for other types of resources.
This is done in preparation for watching k8s events.
* Show the source and destination IP in the entry feed (#485)
* Upgrade Basenine version from `0.2.9` to `0.2.10` (#484)
* Upgrade Basenine version from `0.2.9` to `0.2.10`
Fixes the issues in `limit` and `rlimit` helpers that occur when they are on the left operand of a binary expression.
* Upgrade the client hash to latest
* Remove unnecessary `tcpdump` dependency from `Dockerfile` (#491)
* Ignore gob files (#488)
* Ignore gob files
* Remove `*.db` from `.gitignore`
* Update README (#486)
* Add token validity check (#483)
* Add support to auto discover envoy processes (#459)
* discover envoy pids using cluster ips
* add istio flag to cli + rename mtls flag to istio
* add istio.md to docs
* Fixing typos
* Fix minor typos and grammer in docs
Co-authored-by: Nimrod Gilboa Markevich <nimrod@up9.com>
* Improving daemon documentation (#457)
* Some changes to the doc (#494)
* Warn pods not starting (#493)
Print warning event related to mizu k8s resources.
In non-daemon print to CLI. In Daemon print to API-Server logs.
* Remove `tap/tester/` directory (#489)
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Disable IPv4 defragmentation and support IPv6 (#487)
* Remove the extra negation on `nodefrag` flag's value
* Support IPv4 fragmentation and IPv6 at the same time
* Re-enable `nodefrag` flag
* Make the `gRPC` and `HTTP/2` distinction (#492)
* Remove the extra negation on `nodefrag` flag's value
* Support IPv4 fragmentation and IPv6 at the same time
* Set `Method` and `StatusCode` fields correctly for `HTTP/2`
* Replace unnecessary `grpc` naming with `http2`
* Make the `gRPC` and `HTTP/2` distinction
* Fix the macros of `http` extension
* Fix the macros of other protocol extensions
* Update the method signature of `Represent`
* Fix the `HTTP/2` support
* Fix some minor issues
* Upgrade Basenine version from `0.2.10` to `0.2.11`
Sorts macros before expanding them and prioritize the long macros.
* Don't regex split the gRPC method name
* Re-enable `nodefrag` flag
* Remove `SetHostname` method in HTTP extension (#496)
* Remove prevPodPhase (#497)
prevPodPhase does not take into account the fact that there may be more
than one tapper pod. Therefore it is not clear what its value
represents. It is only used in a debug print. It is not worth the effort
to fix for that one debug print.
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* minor logging changes (#499)
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Use one channel for events instead of three (#495)
Use one channel for events instead of three separate channels by event type
* Add response body to the error in case of failure (#503)
* add response body to the error in case of failure
* fix typo + make inline condition
* Remove local dev instruction from readme (#507)
* Rename `URL` field to `Target URI` in the UI to prevent confusion (#509)
* Add HTTP2 Over Cleartext (H2C) support (#510)
* Add HTTP2 Over Cleartext (H2C) support
* Remove a parameter which is a remnant of debugging
* Hide `Encoding` field if it's `undefined` or empty in the UI (#511)
* Show the `EntryItem` as `EntrySummary` in `EntryDetailed` (#506)
* Fix the selected entry behavior by propagating the `focusedEntryId` through WebSocket (before #452) TRA-3983 (#513)
* Revert the select entry behavior into its original state RACING! (before #452) [TRA-3983 alternative 3]
* Remove the remaining `forceSelect`(s)
* Add a missing `focusedEntryId` prop
* Fix the race condition
* Propagate the `focusedEntryId` through WebSocket to prevent racing
* Handle unexpected socket close and replace the default `rlimit(100)` filter with `leftOff(-1)` filter (#508)
* Handle unexpected socket close and replace the default `rlimit(100)` filter with `leftOff(-1)` filter
* Rename `dontClear` parameter to `resetEntriesBuffer` and remove negation
* Add `Queryable` component to show a green add circle icon for the queryable UI elements (#512)
* Add `Queryable` component to show a green circle and use it in `EntryViewLine`
* Refactor `Queryable` component
* Use the `Queryable` component `EntryDetailed`
* Use the `Queryable` component `Summary`
* Instead of passing the style to `Queryable`, pass the children components directly
* Make `useTooltip = true` by default in `Queryable`
* Refactor a lot of styling to achieve using `Queryable` in `Protocol` component
* Migrate the last queryable elements in `EntryListItem` to `Queryable` component
* Fix some of the styling issues
* Make horizontal `Protocol` `Queryable` too
* Remove unnecessary child constants
* Revert some of the changes in 2a93f365f5
* Fix rest of the styling issues
* Fix one more styling issue
* Update the screenshots and text in the cheatsheet according to the change
* Use `let` not `var`
* Add missing dependencies to the React hook
* Bring back `GetEntries` HTTP endpoint (#515)
* Bring back `GetEntries` HTTP endpoint
* Upgrade Basenine version from `0.2.12` to `0.2.13`
* Accept negative `leftOff` value
* Remove `max`es from the validations
* Make `timeoutMs` optional
* Update the route comment
* Add `EntriesResponse` struct
* Disable telemetry by env var MIZU_DISABLE_TELEMTRY (#517)
* Replace `privileged` with specific CAPABILITIES requests (#514)
* Fix the styling of `Queryable` under `StatusCode` and `Summary` components (#519)
* Fix the CSS issue in `Queryable` inside `EntryViewLine` (#521)
* TRA-4017 Bring back `getOldEntries` method using fetch API and always start streaming from now (#518)
* Bring back `getOldEntries` method using fetch API
* Determine no more data on top based on `leftOff` value
* Remove `entriesBuffer` state
* Always open WebSocket with some `leftOff` value
* Rename `leftOff` state to `leftOffBottom`
* Don't set the `focusedEntryId` through WebSocket if the WebSocket is closed
* Call `setQueriedCurrent` with addition
* Close WebSocket upon reaching to top
* Open WebSocket upon snapping to bottom
* Close the WebSocket on snap broken event instead
* Set queried current value to zero upon filter submit
* Upgrade `react-scrollable-feed-virtualized` version and use `scrollToIndex` function
* Change the footer text format
* Improve no more data top logic
* Fix `closeWebSocket()` call logic in `onSnapBrokenEvent` and handle `data.meta` being `null` in `getOldEntries`
* Fix the issues around fetching old records
* Clean up `EntriesList.module.sass`
* Decrement initial `leftOffTop` value by `2`
* Fix the order of `incomingEntries` in `getOldEntries`
* Request `leftOffTop - 1` from `fetchEntries`
* Limit the front-end total entries fetched through WebSocket count to `10000`
* Lose the UI performance gain that's provided by #452
* Revert "Fix the selected entry behavior by propagating the `focusedEntryId` through WebSocket (before #452) TRA-3983 (#513)"
This reverts commit 873f252544.
* Fix the issues caused by 09371f141f
* Upgrade Basenine version from `0.2.13` to `0.2.14`
* Upgrade Basenine version from `0.2.14` to `0.2.15`
* Fix the condition of "Fetch old records" button visibility
* Upgrade Basenine version from `0.2.15` to `0.2.16` and fix the UI code related to fetching old records
* Make `newEntries` constant
* Add type switch for `Base` field of `MizuEntry` (#520)
* Disable version check for devs (#522)
* Report the platform in telemtry (#523)
Co-authored-by: Igor Gov <igor.govorov1@gmail.com>
* Include milliseconds information into the timestamps in the UI (#524)
* Include milliseconds information into the timestamps in the UI
* Upgrade Basenine version from `0.2.16` to `0.2.17`
* Increase the `width` of timestamp
* Fix the CSS issues in queryable vertical protocol element (#526)
* Remove unnecessary fields and split `service` into `src.name` and `dst.name` (#525)
* Remove unnecessary fields and split `service` into `src.name` and `dst.name`
* Don't fall back to IP address but instead display `[Unresolved]` text
* Fix the CSS issues in the plus icon position and replace the separator `->` text with `SwapHorizIcon`
* make description of mizu config options public (#527)
* Fix the glitch (#529)
* Fix the glitch
* Bring back the functionality to "Fetch old records" and "Snap to bottom" buttons
* Fix the CSS issue in `Queryable` component for `src.name` field on heading mode (#530)
* API server stores tappers status (#531)
* Decreased API server boot time (#536)
* Change the connection status text and the toggle connection behavior (#534)
* Update the "Started listening at" timestamp and `queriedTotal` state based on database truncation (#533)
* Send pod info to tapper (#532)
* Alert on acceptance tests failure (#537)
* Fix health tapper status count (#538)
* Fix: acceptance tests (#539)
* Fix a JavaScript error in case of `null` attribute and an interface conversion error in the API server (#540)
* Bringing back the pod watch api server events to make acceptance test more stable (#541)
* TRA-4060 fix proxying error (#542)
* TRA-4062 remove duplicate target pod print (#543)
* Report pods "isTapped" to FE (#535)
* Fix acceptance tests (after pods status request change) (#545)
Co-authored-by: David Levanon <dvdlevanon@gmail.com>
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
Co-authored-by: RamiBerm <54766858+RamiBerm@users.noreply.github.com>
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
Co-authored-by: RoyUP9 <87927115+RoyUP9@users.noreply.github.com>
Co-authored-by: Nimrod Gilboa Markevich <59927337+nimrod-up9@users.noreply.github.com>
Co-authored-by: Nimrod Gilboa Markevich <nimrod@up9.com>
Co-authored-by: Alon Girmonsky <1990761+alongir@users.noreply.github.com>
Co-authored-by: Igor Gov <igor.govorov1@gmail.com>
Co-authored-by: Alex Haiut <alex@up9.com>
* no message
* Implement counters per operation
* Add service total counters
* Fix the new method usage
* Fix compile
* Output counters into description
* Add svc-level description
* Auto-rearrange the imports
* Add hits/s
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
Co-authored-by: up9-github <info@up9.com>
Co-authored-by: RamiBerm <54766858+RamiBerm@users.noreply.github.com>
Co-authored-by: Liraz Yehezkel <lirazy@up9.com>
Co-authored-by: Alex Haiut <alex@testr.io>
Co-authored-by: lirazyehezkel <61656597+lirazyehezkel@users.noreply.github.com>
Co-authored-by: Alex Haiut <alex@up9.com>
Co-authored-by: nimrod-up9 <59927337+nimrod-up9@users.noreply.github.com>
Co-authored-by: RamiBerm <rami.berman@up9.com>
Co-authored-by: Alex Haiut <alex.haiut@gmail.com>
Co-authored-by: Roee Gadot <roee.gadot@up9.com>
Co-authored-by: Igor Gov <igor.govorov1@gmail.com>
Co-authored-by: Igor Gov <iggvrv@gmail.com>
Co-authored-by: RoyUP9 <87927115+RoyUP9@users.noreply.github.com>
Co-authored-by: Alon Girmonsky <1990761+alongir@users.noreply.github.com>
Co-authored-by: Roy Island <roy@up9.com>
Co-authored-by: David Levanon <dvdlevanon@gmail.com>
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
Co-authored-by: Nimrod Gilboa Markevich <nimrod@up9.com>
* TRA-4235 Revert "Move Basenine binary into a separate container"
* Deploy the same agent image as a separate container for Basenine
Co-authored-by: Igor Gov <iggvrv@gmail.com>
* modified Dockerfile to work for both amd64 (Intel) and arm64 (M1)
* added changelog
* Update `Dockerfile` to have `ARCH` build argument
* Remove `docs/CHANGES.md`
* Upgrade the Basenine version from `v0.3.0` to `v0.4.6`
* Update `publish.yml` to have `ARCH` build argument
* Switch `BasenineImageRepo` to Docker Hub
* Have separate build arguments for `ARCH` and `GOARCH`
* Upgrade the Basenine version from `v0.4.6` to `v0.4.10`
* Oops forgot to update the 10th duplicated shell script
* Fix the oopsie and reduce duplications
* Fix `Dockerfile`
* Fix the incompatibility issue between Go plugins and gold linker in Alpine inside `Dockerfile`
* Fix `asm: xxhash_amd64.s:120: when dynamic linking, R15 is clobbered by a global variable access` error
* Update `Dockerfile` to have cross-compilation on an AMD64 machine
Also revert changes in the shell scripts
* Delete `debug.Dockerfile`
* Create a custom base (`debian:buster-slim` based) image for the shipped image
* Replace `mertyildiran/debian-pcap` with `up9inc/debian-pcap`
* Upgrade Basenine version to `v0.4.12`
* Use `debian:stable-slim` as the base
* Fix the indentation in the `Dockerfile`
* Update `publish.yml`
* Enable `publish.yml` for `feature/multiarch_build` branch
* Tag correctly and set `ARCH` Docker argument
* Remove the lines that are forgotten to be removed from the shell scripts
* Add `MizuAgentImageRepo` constant and use it as default `AgentImage` value
* Bring back `Set up Cloud SDK` step to `Build the CLI and publish` job
* Build ARM64 CLI for Linux as well
* Revert "Enable `publish.yml` for `feature/multiarch_build` branch"
This reverts commit d30be4c1f0.
* Revert Go 1.17 upgrade
* Remove `build_extensions_debug.sh` as well
* Make the `Dockerfile` to compile the agent statically
* Statically link the protocol extensions
* Fix `Dockerfile`
* Bring back `-s -w` flags
* Verify the signatures of the downloads in `dockcross/linux-arm64-musl`
* Revert modifications in some shell scripts
* Make the `BUILDARCH` and `TARGETARCH` separation in the `Dockerfile`
* Separate cross-compilation builder image into a separate repo named `up9inc/linux-arm64-musl-go-libpcap`
* Fill the shell script and specify the tag for `dockcross/linux-arm64-musl`
* Remove the unnecessary dependencies from `builder-native-base`
* Improve the comments in the `Dockerfile`
* Upgrade Basenine version to `v0.4.13`
* Fix `Dockerfile`
* Revert "Revert "Enable `publish.yml` for `feature/multiarch_build` branch""
This reverts commit 303e466bdc.
* Revert "Revert "Revert "Enable `publish.yml` for `feature/multiarch_build` branch"""
This reverts commit 0fe252bbdb.
* Remove `push-docker-debug` from the `Makefile`
* Rename `publish.yml` to `release.yml`
Co-authored-by: Alex Haiut <alex@up9.com>
* debug builds and gcflags
* update dockerfile for debug
* service map routes and controller
* service map graph structure
* service map interface and new methods
* adding service map edges from mizu entries
* new service map count methods
* implementing the status endpoint
* ServiceMapResponse and ServiceMapEdge models
* service map get endpoint logic
* reset logic and endpoint
* fixed service map get status
* improvements to graph node structure
* front-end implementation and service map buttons
* new render endpoint to render the graph in real time
* spinner sass
* new ServiceMapModal component
* testing react-force-graph-2d lib
* Improvements to service map graph structure, added node id and updated edge source/destination type
* Revert "testing react-force-graph-2d lib"
This reverts commit 1153938386.
* testing react-graph-vis lib
* updated to work with react-graph-vis lib
* removed render endpoint
* go mod tidy
* serviceMap config flag
* using the serviceMap config flag
* passing mizu config to service map as a dependency
* service map tests
* Removed print functions
* finished service map tests
* new service property
* service map controller tests
* moved service map reset button to service map modal
reset closes the modal
* service map modal refresh button and logic
* reset button resets data and refresh
* service map modal close button
* node size/edge size based on the count value
edge color based on protocol
* nodes and edges shadow
* enabled physics to avoid node overlap, changed kafka protocol color to dark green
* showing edges count values and fixed bidirectional edges overlap
* go mod tidy
* removed console.log
* Using the destination node protocol instead of the source node protocol
* Revert "debug builds and gcflags"
Addressed by #624 and #626
This reverts commit 17ecaece3e.
* Revert "update dockerfile for debug"
Addressed by #635
This reverts commit 5dfc15b140.
* using the entire tap Protocol struct instead of only the protocol name
* using the backend protocol background color for node colors
* fixed test, the node list order can change
* re-factoring to get 100% coverage
* using protocol colors just for edges
* re-factored service map to use TCP Entry data. Node key is the entry ip-address instead of the name
* fallback to ip-address when entry name is unresolved
* re-factored front-end
* adjustment to main div style
* added support for multiple protocols for the same edge
* using the item protocol instead of the extension variable
* fixed controller tests
* displaying service name and ip-address on graph nodes
* fixed service map test, we cannot guarantee the slice order
* auth middleware
* created a new pkg for the service map
* re-factoring
* re-factored front-end
* reverting the import order as previous
* Aligning with other UI feature flags handling
* we don't need to get the status anymore, we have window["isServiceMapEnabled"]
* small adjustments
* renamed from .tsx to .ts
* button styles and minor improvements
* moved service map modal from trafficPage to app component
Co-authored-by: Igor Gov <igor.govorov1@gmail.com>
* parent d97d481392
author Amit Fainholts <amit@up9.com> 1641398982 +0200
committer Igor Gov <igor.govorov1@gmail.com> 1642070154 +0200
init
* revert
* small fixes
* api request to oas added
* redoc version downgraded and remove redundant package-lock
* remove redundant package json
* redoc updated to latest
* libraries updated to prevent vulnerabilities
* pr fixes
* remove ! from global var
* update useEffect in OasModal and other pr fixes
* change errors messages
Co-authored-by: Amit Fainholts <amit@up9.com>
Co-authored-by: Igor Gov <igor.govorov1@gmail.com>
Co-authored-by: lirazyehezkel <61656597+lirazyehezkel@users.noreply.github.com>
* add shortcuts listeners and config
* key added
* listen for shortcut on input
* refactoring listensing to Enter Press
* comment for support
Co-authored-by: Leon <>
* Handle nested `topicData` in `representProduceRequest`
* Handle nested `topics` in `representCreateTopicsRequest` and `representCreateTopicsResponse`
* Handle nested `responses` in `representProduceResponse`
* Handle nested `topics` in `representFetchRequest` and nested `responses` in `representFetchResponse`
* Introduce `ignoreKeys` argument to `representMapAsTable` and ignore the keys based on that argument
* Bring back the `nil` checks
Support source IP resolving for HTTP traffic in Istio service mesh.
If X-Forwarded-For HTTP request header is present, replace the source address with the left-most address in X-Forwarded-For (earliest in Envoy implementation of this header).
This allows Mizu to resolve source IPs in Istio service meshes, if the use_remote_address option is on. Added instructions on how to turn it on.
* Upgrade Basenine version from `0.2.26` to `0.3.0`
* Remove `Summarize` method from `Dissector` interface and refactor the data structures in `tap/api/api.go`
* Rename `MizuEntry` to `Entry` and `BaseEntryDetails` to `BaseEntry`
* Populate `ContractStatus` field as well
* Update the cheatsheet
* Upgrade the Basenine version in the helm chart as well
* Remove a forgoten `console.log` call
* Enable acceptance tests
* Fix the acceptance tests and a typo in `CONFIGURATION.md`
* Include the container name into the log fetching function
* Duplicate the fix for the logs test
* Revert "Enable acceptance tests"
This reverts commit c10a67c293.
- Rename --istio flag to the more general --service-mesh
- Rename internal variables, consts and structures to reflect this conceptual change
- Update the docs accordingly
* Move Basenine binary into a separate container
* Set `WorkingDir` to `shared.DataDirPath` in the `basenine` container
* Use `consts.go` to set the Basenine image and port
* Bring back the `net-wait-go` usage to prevent startup failures
* Add support of listening to multiple netns (#418)
* multiple netns listen - initial commit
* multiple netns listen - actual work
* remove redundant log line
* map /proc of host to tapper
* changing kubernetes provider again after big conflict
* revert node-sass version back to 5.0.0
* Rename host_source to hostSource
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* PR fixes - adding comment + typos + naming conventions
* go fmt + making procfs read only
* setns back to the original value after packet source initialized
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* TRA-3842 daemon acceptance tests (#429)
* Update tap_test.go and testsUtils.go
* Update tap_test.go
* Update testsUtils.go
* Update tap_test.go and testsUtils.go
* Update tap_test.go and testsUtils.go
* Update testsUtils.go
* Update tap_test.go
* gofmt
* TRA-3913 support mizu via expose service (#440)
* Update README.md, tapRunner.go, and 4 more files...
* Update testsUtils.go
* Update proxy.go
* Update README.md, testsUtils.go, and 3 more files...
* Update testsUtils.go and provider.go
* fix readme titles (#442)
* Auto close inactive issues (#441)
* Migrate from SQLite to Basenine and introduce a new filtering syntax (#279)
* Fix the OOMKilled error by calling `debug.FreeOSMemory` periodically
* Remove `MAX_NUMBER_OF_GOROUTINES` environment variable
* Change the line
* Increase the default value of `TCP_STREAM_CHANNEL_TIMEOUT_MS` to `10000`
* Write the client and integrate to the new real-time database
* Refactor the WebSocket implementaiton for `/ws`
* Adapt the UI to the new filtering system
* Fix the rest of the issues in the UI
* Increase the buffer of the scanner
* Implement accessing single records
* Increase the buffer of another scanner
* Populate `Request` and `Response` fields of `MizuEntry`
* Add syntax highlighting for the query
* Add database to `Dockerfile`
* Fix some issues
* Update the `realtime_dbms` Git module commit hash
* Upgrade Gin version and print the query string
* Revert "Upgrade Gin version and print the query string"
This reverts commit aa09f904ee.
* Use WebSocket's itself to query instead of the query string
* Fix some errors related to conversion to HAR
* Fix the issues caused by the latest merge
* Fix the build error
* Fix PR validation GitHub workflow
* Replace the git submodule with latest Basenine version `0.1.0`
Remove `realtime_client.go` and use the official client library `github.com/up9inc/basenine/client/go` instead.
* Move Basenine host and port constants to `shared` module
* Reliably execute and wait for Basenine to become available
* Upgrade Basenine version
* Properly close WebSocket and data channel
* Fix the issues caused by the recent merge commit
* Clean up the TypeScript code
* Update `.gitignore`
* Limit the database size
* Add `Macros` method signature to `Dissector` interface and set the macros provided by the protocol extensions
* Run `go mod tidy` on `agent`
* Upgrade `github.com/up9inc/basenine/client/go` version
* Implement a mechanism to update the query using click events in the UI and use it for protocol macros
* Update the query on click to timestamps
* Fix some issues in the WebSocket and channel handling
* Update the query on clicks to status code
* Update the query on clicks to method, path and service
* Update the query on clicks to is outgoing, source and destination ports
* Add an API endpoint to validate the query against syntax errors
* Move the query background color state into `TrafficPage`
* Fix the logic in `setQuery`
* Display a toast message in case of a syntax error in the query
* Remove a call to `fmt.Printf`
* Upgrade Basenine version to `0.1.3`
* Fix an issue related to getting `MAX_ENTRIES_DB_BYTES` environment variable
* Have the `path` key in request details, in HTTP
* Rearrange the HTTP headers for the querying
* Do the same thing for `cookies` and `queryString`
* Update the query on click to table elements
Add the selectors for `TABLE` type representations in HTTP extension.
* Update the query on click to `bodySize` and `elapsedTime` in `EntryTitle`
* Add the selectors for `TABLE` type representations in AMQP extension
* Add the selectors for `TABLE` type representations in Kafka extension
* Add the selectors for `TABLE` type representations in Redis extension
* Define a struct in `tap/api.go` for the section representation data
* Add the selectors for `BODY` type representations
* Add `request.path` to the HTTP request details
* Change the summary string's field name from `path` to `summary`
* Introduce `queryable` CSS class for queryable UI elements and underline them on hover
* Instead of `N requests` at the bottom, make it `Displaying N results (queried X/Y)` and live update the values
Upgrade Basenine version to `0.2.0`.
* Verify the sha256sum of Basenine executable inside `Dockerfile`
* Pass the start time to web UI through WebSocket and always show the `EntriesList` footer
* Pipe the `stderr` of Basenine as well
* Fix the layout issues related to `CodeEditor` in the UI
* Use the correct `shasum` command in `Dockerfile`
* Upgrade Basenine version to `0.2.1`
* Limit the height of `CodeEditor` container
* Remove `Paused` enum `ConnectionStatus` in UI
* Fix the issue caused by the recent merge
* Add the filtering guide (cheatsheet)
* Update open cheatsheet button's title
* Update cheatsheet content
* Remove the old SQLite code, adapt the `--analyze` related code to Basenine
* Change the method signature of `NewEntry`
* Change the method signature of `Represent`
* Introduce `HTTPPair` field in `MizuEntry` specific to HTTP
* Remove `Entry`, `EntryId` and `EstimatedSizeBytes` fields from `MizuEntry`
Also remove the `getEstimatedEntrySizeBytes` method.
* Remove `gorm.io/gorm` dependency
* Remove unused `sensitiveDataFiltering` folder
* Increase the left margin of open cheatsheet button
* Add `overflow: auto` to the cheatsheet `Modal`
* Fix `GetEntry` method
* Fix the macro for gRPC
* Fix an interface conversion in case of AMQP
* Fix two more interface conversion errors in AMQP
* Make the `syncEntriesImpl` method blocking
* Fix a grammar mistake in the cheatsheet
* Adapt to the changes in the recent merge commit
* Improve the cheatsheet text
* Always display the timestamp in `en-US`
* Upgrade Basenine version to `0.2.2`
* Fix the order of closing Basenine connections and channels
* Don't close the Basenine channels at all
* Upgrade Basenine version to `0.2.3`
* Set the initial filter to `rlimit(100)`
* Make Basenine persistent
* Upgrade Basenine version to `0.2.4`
* Update `debug.Dockerfile`
* Fix a failing test
* Upgrade Basenine version to `0.2.5`
* Revert "Do not show play icon when disconnected (#428)"
This reverts commit 8af2e562f8.
* Upgrade Basenine version to `0.2.6`
* Make all non-informative things informative
* Make `100` a constant
* Use `===` in JavaScript no matter what
* Remove a forgotten `console.log`
* Add a comment and update the `query` in `syncEntriesImpl`
* Don't call `panic` in `GetEntry`
* Replace `panic` calls in `startBasenineServer` with `logger.Log.Panicf`
* Remove unnecessary `\n` characters in the logs
* Remove the `Reconnect` button (#444)
* Upgrade `github.com/up9inc/basenine/client/go` version (#446)
* Fix the `Analysis` button's style into its original state (#447)
* Fix the `Analysis` button's style into its original state
* Fix the MUI button style into its original state
* Fix the acceptance tests after the merger of #279 (#443)
* Enable acceptance tests
* Fix the acceptance tests
* Move `--headless` from `getDefaultCommandArgs` to `getDefaultTapCommandArgs`
* Fix rest of the failing acceptance tests
* Revert "Enable acceptance tests"
This reverts commit 3f919e865a.
* Revert "Revert "Enable acceptance tests""
This reverts commit c0bfe54b70.
* Ignore `--headless` in `mizu view`
* Make all non-informative things informative
* Remove `github.com/stretchr/testify` dependency from the acceptance tests
* Move the helper methods `waitTimeout` and `checkDBHasEntries` from `tap_test.go` to `testsUtils.go`
* Split `checkDBHasEntries` method into `getDBEntries` and `assertEntriesAtLeast` methods
* Revert "Revert "Revert "Enable acceptance tests"""
This reverts commit c13342671c.
* Revert "Revert "Revert "Revert "Enable acceptance tests""""
This reverts commit 0f8c436926.
* Make `getDBEntries` and `checkEntriesAtLeast` methods return errors instead
* Revert "Revert "Revert "Revert "Revert "Enable acceptance tests"""""
This reverts commit 643fdde009.
* Send the message into this WebSocket connection instead of all (#449)
* Fix the CSS issues in the cheatsheet modal (#448)
* Fix the CSS issues in the cheatsheet modal
* Change the Sass variable names
* moved headless to root config, use headless in view (#450)
* extend cleanup timeout to solve context timeout problem in dump logs (#453)
* Add link to exposing mizu wiki page in README (#455)
* changed logger debug mode to log level (#456)
* fixed acceptance test go sum (#458)
* Ignore `SNYK-JS-JSONSCHEMA-1920922` (#462)
Dependency tree:
`node-sass@5.0.0 > node-gyp@7.1.2 > request@2.88.2 > http-signature@1.2.0 > jsprim@1.4.1 > json-schema@0.2.3`
`node-sass` should fix it first.
* Optimize UI entry feed performance (#452)
* Optimize the React code for feeding the entries
By building `EntryItem` only once and updating the `entries` state on meta query messages.
* Upgrade `react-scrollable-feed-virtualized` version from `1.4.3` to `1.4.8`
* Fix the `isSelected` state
* Set the query text before deciding the background to prevent lags while typing
* Upgrade Basenine version from `0.2.6` to `0.2.7`
* Set the query background color only if the query is same after the HTTP request and use `useEffect` instead
* Upgrade Basenine version from `0.2.7` to `0.2.8`
* Use `CancelToken` of `axios` instead of trying to check the query state
* Turn `updateQuery` function into a state hook
* Update the macro for `http`
* Do the `source.cancel()` call in `axios.CancelToken`
* Reduce client-side logging
* Upgrade Basenine version from `0.2.8` to `0.2.9` (#465)
Fixes `limit` helper being not finished because of lack of meta updates.
* Set `response.bodySize` to `0` if it's negative (#466)
* Prevent `elapsedTime` to be negative (#467)
Also fix the `elapsedTime` for Redis.
* changes log format to be more readable (#463)
* Stop reduction of user agent header (#468)
* remove newline in logs, fixed logs time format (#469)
* TRA-3903 better health endpoint for daemon mode (#471)
* Update main.go, status_controller.go, and 2 more files...
* Update status_controller.go and mizuTapperSyncer.go
* fixed redact acceptance test (#472)
* Return `404` instead of `500` if the entry could not be found and display a toast message (#464)
* TRA-3903 add flag to disable pvc creation for daemon mode (#474)
* Update tapRunner.go and tapConfig.go
* Update tapConfig.go
* Revert "Update tapConfig.go"
This reverts commit 5c7c02c4ab.
* TRA-3903 - display targetted pods before waiting for all daemon resources to be created (#475)
* WIP
* Update tapRunner.go
* Update tapRunner.go
* Update the UI screenshots (#476)
* Update the UI screenshots
* Update `mizu-ui.png`
* TRA-3903 fix daemon mode in permission restricted configs (#473)
* Update tapRunner.go, permissions-all-namespaces-daemon.yaml, and 2 more files...
* Update tapRunner.go
* Update tapRunner.go and permissions-ns-daemon.yaml
* Update tapRunner.go
* Update tapRunner.go
* Update tapRunner.go
* TRA-3903 minor daemon mode refactor (#479)
* Update common.go and tapRunner.go
* Update common.go
* Don't omit the key-value pair if the value is `false` in `EntryTableSection` (#478)
* Sync entries in batches just as before (using `uploadIntervalSec` parameter) (#477)
* Sync entries in batches just as before (using `uploadIntervalSec` parameter)
* Replace `lastTimeSynced` value with `time.Time{}`
Since it will be overwritten by the very first iteration.
* Clear `focusedEntryId` state in case of a filter is applied (#482)
* Prevent the crash on client-side in case of `text` being undefined in `FancyTextDisplay` (#481)
* Prevent the crash on client-side in case of `text` being undefined in `FancyTextDisplay`
* Use `String(text)` instead
* Refactor watch pods to allow reusing watch wrapper (#470)
Currently shared/kubernetes/watch.go:FilteredWatch only watches pods.
This PR makes it reusable for other types of resources.
This is done in preparation for watching k8s events.
* Show the source and destination IP in the entry feed (#485)
* Upgrade Basenine version from `0.2.9` to `0.2.10` (#484)
* Upgrade Basenine version from `0.2.9` to `0.2.10`
Fixes the issues in `limit` and `rlimit` helpers that occur when they are on the left operand of a binary expression.
* Upgrade the client hash to latest
* Remove unnecessary `tcpdump` dependency from `Dockerfile` (#491)
* Ignore gob files (#488)
* Ignore gob files
* Remove `*.db` from `.gitignore`
* Update README (#486)
* Add token validity check (#483)
* Add support to auto discover envoy processes (#459)
* discover envoy pids using cluster ips
* add istio flag to cli + rename mtls flag to istio
* add istio.md to docs
* Fixing typos
* Fix minor typos and grammer in docs
Co-authored-by: Nimrod Gilboa Markevich <nimrod@up9.com>
* Improving daemon documentation (#457)
* Some changes to the doc (#494)
* Warn pods not starting (#493)
Print warning event related to mizu k8s resources.
In non-daemon print to CLI. In Daemon print to API-Server logs.
* Remove `tap/tester/` directory (#489)
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Disable IPv4 defragmentation and support IPv6 (#487)
* Remove the extra negation on `nodefrag` flag's value
* Support IPv4 fragmentation and IPv6 at the same time
* Re-enable `nodefrag` flag
* Make the `gRPC` and `HTTP/2` distinction (#492)
* Remove the extra negation on `nodefrag` flag's value
* Support IPv4 fragmentation and IPv6 at the same time
* Set `Method` and `StatusCode` fields correctly for `HTTP/2`
* Replace unnecessary `grpc` naming with `http2`
* Make the `gRPC` and `HTTP/2` distinction
* Fix the macros of `http` extension
* Fix the macros of other protocol extensions
* Update the method signature of `Represent`
* Fix the `HTTP/2` support
* Fix some minor issues
* Upgrade Basenine version from `0.2.10` to `0.2.11`
Sorts macros before expanding them and prioritize the long macros.
* Don't regex split the gRPC method name
* Re-enable `nodefrag` flag
* Remove `SetHostname` method in HTTP extension (#496)
* Remove prevPodPhase (#497)
prevPodPhase does not take into account the fact that there may be more
than one tapper pod. Therefore it is not clear what its value
represents. It is only used in a debug print. It is not worth the effort
to fix for that one debug print.
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* minor logging changes (#499)
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Use one channel for events instead of three (#495)
Use one channel for events instead of three separate channels by event type
* Add response body to the error in case of failure (#503)
* add response body to the error in case of failure
* fix typo + make inline condition
* Remove local dev instruction from readme (#507)
* Rename `URL` field to `Target URI` in the UI to prevent confusion (#509)
* Add HTTP2 Over Cleartext (H2C) support (#510)
* Add HTTP2 Over Cleartext (H2C) support
* Remove a parameter which is a remnant of debugging
* Hide `Encoding` field if it's `undefined` or empty in the UI (#511)
* Show the `EntryItem` as `EntrySummary` in `EntryDetailed` (#506)
* Fix the selected entry behavior by propagating the `focusedEntryId` through WebSocket (before #452) TRA-3983 (#513)
* Revert the select entry behavior into its original state RACING! (before #452) [TRA-3983 alternative 3]
* Remove the remaining `forceSelect`(s)
* Add a missing `focusedEntryId` prop
* Fix the race condition
* Propagate the `focusedEntryId` through WebSocket to prevent racing
* Handle unexpected socket close and replace the default `rlimit(100)` filter with `leftOff(-1)` filter (#508)
* Handle unexpected socket close and replace the default `rlimit(100)` filter with `leftOff(-1)` filter
* Rename `dontClear` parameter to `resetEntriesBuffer` and remove negation
* Add `Queryable` component to show a green add circle icon for the queryable UI elements (#512)
* Add `Queryable` component to show a green circle and use it in `EntryViewLine`
* Refactor `Queryable` component
* Use the `Queryable` component `EntryDetailed`
* Use the `Queryable` component `Summary`
* Instead of passing the style to `Queryable`, pass the children components directly
* Make `useTooltip = true` by default in `Queryable`
* Refactor a lot of styling to achieve using `Queryable` in `Protocol` component
* Migrate the last queryable elements in `EntryListItem` to `Queryable` component
* Fix some of the styling issues
* Make horizontal `Protocol` `Queryable` too
* Remove unnecessary child constants
* Revert some of the changes in 2a93f365f5
* Fix rest of the styling issues
* Fix one more styling issue
* Update the screenshots and text in the cheatsheet according to the change
* Use `let` not `var`
* Add missing dependencies to the React hook
* Bring back `GetEntries` HTTP endpoint (#515)
* Bring back `GetEntries` HTTP endpoint
* Upgrade Basenine version from `0.2.12` to `0.2.13`
* Accept negative `leftOff` value
* Remove `max`es from the validations
* Make `timeoutMs` optional
* Update the route comment
* Add `EntriesResponse` struct
* Disable telemetry by env var MIZU_DISABLE_TELEMTRY (#517)
* Replace `privileged` with specific CAPABILITIES requests (#514)
* Fix the styling of `Queryable` under `StatusCode` and `Summary` components (#519)
* Fix the CSS issue in `Queryable` inside `EntryViewLine` (#521)
* TRA-4017 Bring back `getOldEntries` method using fetch API and always start streaming from now (#518)
* Bring back `getOldEntries` method using fetch API
* Determine no more data on top based on `leftOff` value
* Remove `entriesBuffer` state
* Always open WebSocket with some `leftOff` value
* Rename `leftOff` state to `leftOffBottom`
* Don't set the `focusedEntryId` through WebSocket if the WebSocket is closed
* Call `setQueriedCurrent` with addition
* Close WebSocket upon reaching to top
* Open WebSocket upon snapping to bottom
* Close the WebSocket on snap broken event instead
* Set queried current value to zero upon filter submit
* Upgrade `react-scrollable-feed-virtualized` version and use `scrollToIndex` function
* Change the footer text format
* Improve no more data top logic
* Fix `closeWebSocket()` call logic in `onSnapBrokenEvent` and handle `data.meta` being `null` in `getOldEntries`
* Fix the issues around fetching old records
* Clean up `EntriesList.module.sass`
* Decrement initial `leftOffTop` value by `2`
* Fix the order of `incomingEntries` in `getOldEntries`
* Request `leftOffTop - 1` from `fetchEntries`
* Limit the front-end total entries fetched through WebSocket count to `10000`
* Lose the UI performance gain that's provided by #452
* Revert "Fix the selected entry behavior by propagating the `focusedEntryId` through WebSocket (before #452) TRA-3983 (#513)"
This reverts commit 873f252544.
* Fix the issues caused by 09371f141f
* Upgrade Basenine version from `0.2.13` to `0.2.14`
* Upgrade Basenine version from `0.2.14` to `0.2.15`
* Fix the condition of "Fetch old records" button visibility
* Upgrade Basenine version from `0.2.15` to `0.2.16` and fix the UI code related to fetching old records
* Make `newEntries` constant
* Add type switch for `Base` field of `MizuEntry` (#520)
* Disable version check for devs (#522)
* Report the platform in telemtry (#523)
Co-authored-by: Igor Gov <igor.govorov1@gmail.com>
* Include milliseconds information into the timestamps in the UI (#524)
* Include milliseconds information into the timestamps in the UI
* Upgrade Basenine version from `0.2.16` to `0.2.17`
* Increase the `width` of timestamp
* Fix the CSS issues in queryable vertical protocol element (#526)
* Remove unnecessary fields and split `service` into `src.name` and `dst.name` (#525)
* Remove unnecessary fields and split `service` into `src.name` and `dst.name`
* Don't fall back to IP address but instead display `[Unresolved]` text
* Fix the CSS issues in the plus icon position and replace the separator `->` text with `SwapHorizIcon`
* make description of mizu config options public (#527)
* Fix the glitch (#529)
* Fix the glitch
* Bring back the functionality to "Fetch old records" and "Snap to bottom" buttons
* Fix the CSS issue in `Queryable` component for `src.name` field on heading mode (#530)
* API server stores tappers status (#531)
* Decreased API server boot time (#536)
* Change the connection status text and the toggle connection behavior (#534)
* Update the "Started listening at" timestamp and `queriedTotal` state based on database truncation (#533)
* Send pod info to tapper (#532)
* Alert on acceptance tests failure (#537)
* Fix health tapper status count (#538)
* Fix: acceptance tests (#539)
* Fix a JavaScript error in case of `null` attribute and an interface conversion error in the API server (#540)
* Bringing back the pod watch api server events to make acceptance test more stable (#541)
* TRA-4060 fix proxying error (#542)
* TRA-4062 remove duplicate target pod print (#543)
* Report pods "isTapped" to FE (#535)
* Fix acceptance tests (after pods status request change) (#545)
Co-authored-by: David Levanon <dvdlevanon@gmail.com>
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
Co-authored-by: RamiBerm <54766858+RamiBerm@users.noreply.github.com>
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
Co-authored-by: RoyUP9 <87927115+RoyUP9@users.noreply.github.com>
Co-authored-by: Nimrod Gilboa Markevich <59927337+nimrod-up9@users.noreply.github.com>
Co-authored-by: Nimrod Gilboa Markevich <nimrod@up9.com>
Co-authored-by: Alon Girmonsky <1990761+alongir@users.noreply.github.com>
Co-authored-by: Igor Gov <igor.govorov1@gmail.com>
Co-authored-by: Alex Haiut <alex@up9.com>
change prerequisite to permissions and kubeconfig. These are more FYIs as Mizu requires very little prerequisites.
Change the description to match getmizu.io
* Show pod name and namespace (#61)
* WIP
* Update main.go, consts.go, and 2 more files...
* Update messageSensitiveDataCleaner.go
* Update consts.go and messageSensitiveDataCleaner.go
* Update messageSensitiveDataCleaner.go
* Update main.go, consts.go, and 3 more files...
* WIP
* Update main.go, messageSensitiveDataCleaner.go, and 6 more files...
* Update main.go, messageSensitiveDataCleaner.go, and 3 more files...
* Update consts.go, messageSensitiveDataCleaner.go, and tap.go
* Update provider.go
* Update serializableRegexp.go
* Update tap.go
* TRA-3234 fetch with _source + no hard limit (#64)
* remove the HARD limit of 5000
* TRA-3299 Reduce footprint and Add Tolerances(#65)
* Use lib const for DNSClusterFirstWithHostNet.
* Whitespace.
* Break lines.
* Added affinity to pod names.
* Added tolerations to NoExecute and NoSchedule taints.
* Implementation of Mizu view command
* .
* .
* Update main.go and messageSensitiveDataCleaner.go
* Update main.go
* String and not pointers (#68)
* TRA-3318 - Cookies not null and fix har file names (#69)
* no message
* TRA-3212 Passive-Tapper and Mizu share code (#70)
* Use log in tap package instead of fmt.
* Moved api/pkg/tap to root.
* Added go.mod and go.sum for tap.
* Added replace for shared.
* api uses tap module instead of tap package.
* Removed dependency of tap in shared by moving env var out of tap.
* Fixed compilation bugs.
* Fixed: Forgot to export struct field HostMode.
* Removed unused flag.
* Close har output channel when done.
* Moved websocket out of mizu and into passive-tapper.
* Send connection details over har output channel.
* Fixed compilation errors.
* Removed unused info from request response cache.
* Renamed connection -> connectionID.
* Fixed rename bug.
* Export setters and getters for filter ips and ports.
* Added tap dependency to Dockerfile.
* Uncomment error messages.
* Renamed `filterIpAddresses` -> `filterAuthorities`.
* Renamed ConnectionID -> ConnectionInfo.
* Fixed: Missed one replace.
* TRA-3342 Mizu/tap dump to har directory fails on Linux (#71)
* Instead of saving incomplete temp har files in a temp dir, save them in the output dir with a *.har.tmp suffix.
* API only loads har from *.har files (by extension).
* Add export entries endpoint for better up9 connect funcionality (#72)
* no message
* no message
* no message
* Filter 'cookie' header
* Release action (#73)
* Create main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* trying new approach
* no message
* yaml error
* no message
* no message
* no message
* missing )
* no message
* no message
* remove main.yml and fix branches
* Create tag-temp.yaml
* Update tag-temp.yaml
* Update tag-temp.yaml
* no message
* no message
* no message
* no message
* no message
* no message
* no message
* #minor
* no message
* no message
* added checksum calc to CLI makefile
* fixed build error - created bin directory upfront
* using markdown for release text
* use separate checksum files
* fixed release readme
* #minor
* readme updated
Co-authored-by: Alex Haiut <alex@up9.com>
* TRA-3360 Fix: Mizu ignores -n namespace flag and records traffic from all pods (#75)
Do not tap pods in namespaces which were not requested.
* added apple/m1 binary, updated readme (#77)
Co-authored-by: Alex Haiut <alex@up9.com>
* Update README.md (#78)
Co-authored-by: lirazyehezkel <61656597+lirazyehezkel@users.noreply.github.com>
Co-authored-by: RamiBerm <rami.berman@up9.com>
Co-authored-by: RamiBerm <54766858+RamiBerm@users.noreply.github.com>
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
Co-authored-by: nimrod-up9 <59927337+nimrod-up9@users.noreply.github.com>
Co-authored-by: Igor Gov <igor.govorov1@gmail.com>
Co-authored-by: Alex Haiut <alex@up9.com>
* Update .gitignore
* WIP
* WIP
* Update README.md, root.go, and 4 more files...
* Update README.md
* Update README.md
* Update root.go
* Update provider.go
* Update provider.go
* Update root.go, go.mod, and go.sum
* Update mizu.go
* Update go.sum and provider.go
* Update portForward.go, watch.go, and mizu.go
* Update README.md
* Update watch.go
* Update mizu.go
* Update mizu.go
* no message
* no message
* remove unused things and use external for object id (instead of copy)
* no message
* Update mizu.go
* Update go.mod, go.sum, and 2 more files...
* no message
* Update README.md, go.mod, and resolver.go
* Update README.md
* Update go.mod
* Update loader.go
* some refactor
* Update loader.go
* no message
* status to statusCode
* return data directly
* Traffic viewer
* cleaning
* css
* no message
* Clean warnings
* Makefile - first draft
* Update Makefile
* Update Makefile
* Update Makefile, README.md, and 4 more files...
* Add api build and clean to makefile (files restructure) (#9)
* no message
* add clean api command
* no message
* stating with web socket
* Add tap as a separate executable (#10)
* Added tap.
* Ignore build directories.
* Added tapper build to Makefile.
* Improvements (#12)
* no message
* no message
* Feature/makefile (#11)
* minor fixes
* makefile fixes - docker build
* minor fix in Makefile
Co-authored-by: Alex Haiut <alex@up9.com>
* Update Dockerfile, multi-runner.sh, and 31 more files...
* Update multi-runner.sh
* no message
* Update .dockerignore, Dockerfile, and 30 more files...
* Update cleaner.go, grpc_assembler.go, and 2 more files...
* start the pod with host network and privileged
* fix multi runner passive tapper command
* add HOST_MODE env var
* do not return true in the should tap function
* remove line in the end
* default value in api is input
fix description and pass the parameter in the multi runner script
* missing flag.parse
* no message
* fix image
* Create main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Small fixes - permission + har writing exception (#17)
* Select node by pod (#18)
* Select node by pod.
* Removed watch pod by regex. Irrelevant for now.
* Changed default image to develop:latest.
* Features/clifix (#19)
* makefile fixes - docker build
* readme update, CLI usage fix
* added chmod
Co-authored-by: Alex Haiut <alex@up9.com>
* meta information
* Only record traffic of the requested pod. Filtered by pod IP. (#21)
* fixed readme and reduced batch size to 5 (#22)
Co-authored-by: Alex Haiut <alex@up9.com>
* API and TAP in single process (#24)
* no message
* no message
* CLI make --pod required flag and faster api image build (#25)
* makefile fixes - docker build
* readme update, CLI usage fix
* added chmod
* typo
* run example incorreect in makefile
* no message
* no message
* no message
Co-authored-by: Alex Haiut <alex@up9.com>
* Reduce delay between tap and UI - Skip dump to file (#26)
* Pass HARs between tap and api via channel.
* Fixed make docker commad.
* Various fixes.
* Added .DS_Store to .gitignore.
* Parse flags in Mizu main instead of in tap_output.go.
* Use channel to pass HAR by default instead of files.
* Infinite scroll (#28)
* no message
* infinite scroll + new ws implementation
* no message
* scrolling top
* fetch button
* more Backend changes
* fix go mod and sum
* mire fixes against develop
* unused code
* small ui refactor
Co-authored-by: Roee Gadot <roee.gadot@up9.com>
* Fix gRPC crash, display gRPC as base64, display gRPC URL and status code (#27)
* Added Method (POST) and URL (emtpy) to gRPC requests.
* Removed quickfix that skips writing HTTP/2 to HAR.
* Use HTTP/2 body to fill out http.Request and htt.Response.
* Make sure that in HARs request.postData.mimeType and response.content.mimeType are application/grpc in case of grpc.
* Comment.
* Add URL and status code for gRPC.
* Don't assume http scheme.
* Use http.Header.Set instead of manually acccessing the underlaying map.
* General stats api fix (#29)
* refactor and validation
* Show gRPC as ASCII (#31)
* Moved try-catch up one block.
* Display grpc as ASCII.
* Better code in entries fetch endpoint (#30)
* no message
* no message
* Feature/UI/filters (#32)
* UI filters
* refactor
* Revert "refactor"
This reverts commit 70e7d4b6ac.
* remove recursive func
* CLI cleanup (#33)
* Moved cli root command to tap subcommand.
* tap subcommand works.
* Added view and fetch placeholders.
* Updated descriptions.
* Fixed indentation.
* Added versio subcommand.
* Removed version flag.
* gofmt.
* Changed pod from flag to arg.
* Commented out "all namespaces" flag.
* CLI cleanup 2 (#34)
* Renamed dashboard -> GUI/web interface.
* Commented out --quiet, removed unused config variables.
* Quiter output when calling unimplemented subcommands.
* Leftovers from PR #30 (#36)
Co-authored-by: up9-github <info@up9.com>
Co-authored-by: RamiBerm <54766858+RamiBerm@users.noreply.github.com>
Co-authored-by: Liraz Yehezkel <lirazy@up9.com>
Co-authored-by: Alex Haiut <alex@testr.io>
Co-authored-by: lirazyehezkel <61656597+lirazyehezkel@users.noreply.github.com>
Co-authored-by: Alex Haiut <alex@up9.com>
Co-authored-by: nimrod-up9 <59927337+nimrod-up9@users.noreply.github.com>
Co-authored-by: RamiBerm <rami.berman@up9.com>
Co-authored-by: Alex Haiut <alex.haiut@gmail.com>
2021-05-09 11:45:39 +03:00
431 changed files with 13434 additions and 57070 deletions
description:Request a new feature or an improvement to an existing one
title:"[Feature Request:]"
labels:["enhancement"]
assignees:
- alongir
body:
- type:markdown
attributes:
value:|
Thanks for taking the time to request a new feature!
- type:input
id:contact
attributes:
label:Contact Details
description:How can we get in touch with you if we need more info?
placeholder:ex. email@example.com
validations:
required:false
- type:textarea
id:the-problem
attributes:
label:Is your feature request related to a problem? Please describe.
description:Please describe the problem you are trying to solve
validations:
required:true
- type:input
id:original-thread
attributes:
label:Original Thread
description:A link to the original discussion thread (e.g. Slack, Discord, Email, Verbal)
validations:
required:false
- type:textarea
id:the-solution
attributes:
label:Describe the solution you'd like to see
description:A clear and concise description of what you want to happen.
validations:
required:false
- type:textarea
id:the-context
attributes:
label:Provide additional context
description:Add any other context or screenshots about the feature request here.
validations:
required:false
- type:checkboxes
id:terms
attributes:
label:Code of Conduct
description:By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/kubeshark/kubeshark/blob/master/docs/CODE_OF_CONDUCT.md)
options:
- label:I agree to follow this project's Code of Conduct


# Contributing to Mizu
# Contributing to Kubeshark
We welcome code contributions from the community.
Please read and follow the guidelines below.
## Communication
* Before starting work on a major feature, please reach out to us via [GitHub](https://github.com/up9inc/mizu), [Slack](https://join.slack.com/share/zt-u6bbs3pg-X1zhQOXOH0yEoqILgH~csw), [email](mailto:mizu@up9.com), etc. We will make sure no one else is already working on it. A _major feature_ is defined as any change that is > 100 LOC altered (not including tests), or changes any user-facing behavior
* Before starting work on a major feature, please reach out to us via [GitHub](https://github.com/kubeshark/kubeshark), [Discord](https://discord.gg/WkvRGMUcx7), [Slack](https://join.slack.com/t/kubeshark/shared_invite/zt-1k3sybpq9-uAhFkuPJiJftKniqrGHGhg), [email](mailto:info@kubeshark.com), etc. We will make sure no one else is already working on it. A _major feature_ is defined as any change that is > 100 LOC altered (not including tests), or changes any user-facing behavior
* Small patches and bug fixes don't need prior communication.
# this script runs both apiserver and passivetapper and exits either if one of them exits, preventing a scenario where the container runs without one process
@cd ../kubeshark.github.io/ && git add -A . && git commit -m ":sparkles: Update the Helm chart"&& git push
@cd ../kubeshark
release-dry-run:
@cd ../worker && git checkout master && git pull
@cd ../tracer && git checkout master && git pull
@cd ../hub && git checkout master && git pull
@cd ../front && git checkout master && git pull
@cd ../kubeshark && sed -i "s/^version:.*/version: \"$(shell echo$(VERSION)| sed -E 's/^([0-9]+\.[0-9]+\.[0-9]+)\..*/\1/')\"/" helm-chart/Chart.yaml && make
A simple-yet-powerful API traffic viewer for Kubernetes enabling you to view all API communication between microservices to help your debug and troubleshoot regressions.
<p align="center"><b>Network Intelligence for Kubernetes</b></p>
Think TCPDump and Wireshark re-invented for Kubernetes.
- **TLS decryption** — see encrypted traffic without managing keys
- **AI-ready** — query traffic with natural language via MCP
---
### Traffic Analysis and API Dissection
Capture and inspect every API call across your cluster—HTTP, gRPC, Redis, Kafka, DNS, and more. Request/response matching with full payloads, parsed according to protocol specifications. Headers, timing, and complete context. Zero instrumentation required.
[Learn more →](https://docs.kubeshark.com/en/v2/service_map)
### AI-Powered Root Cause Analysis
Resolve production issues in minutes instead of hours. Connect your AI assistant and investigate incidents using natural language. Build network-aware AI agents for forensics, monitoring, compliance, and security.
> *"Why did checkout fail at 2:15 PM?"*
> *"Which services have error rates above 1%?"*
> *"Trace request abc123 through all services"*
Works with Claude Code, Cursor, and any MCP-compatible AI.
SHA256 checksums are available on the [Releases](https://github.com/up9inc/mizu/releases) page
We welcome contributions. See [CONTRIBUTING.md](CONTRIBUTING.md).
### Development (unstable) Build
Pick one from the [Releases](https://github.com/up9inc/mizu/releases) page
## License
## How to Run
1. Find pods you'd like to tap to in your Kubernetes cluster
2. Run `mizu tap` or `mizu tap PODNAME`
3. Open browser on `http://localhost:8899` **or** as instructed in the CLI
4. Watch the API traffic flowing
5. Type ^C to stop
## Examples
Run `mizu help` for usage options
To tap all pods in current namespace -
```
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
carts-66c77f5fbb-fq65r 2/2 Running 0 20m
catalogue-5f4cb7cf5-7zrmn 2/2 Running 0 20m
front-end-649fc5fd6-kqbtn 2/2 Running 0 20m
..
$ mizu tap
+carts-66c77f5fbb-fq65r
+catalogue-5f4cb7cf5-7zrmn
+front-end-649fc5fd6-kqbtn
Web interface is now available at http://localhost:8899
^C
```
### To tap specific pod
```bash
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
front-end-649fc5fd6-kqbtn 2/2 Running 0 7m
..
$ mizu tap front-end-649fc5fd6-kqbtn
+front-end-649fc5fd6-kqbtn
Web interface is now available at http://localhost:8899
^C
```
### To tap multiple pods using regex
```bash
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
carts-66c77f5fbb-fq65r 2/2 Running 0 20m
catalogue-5f4cb7cf5-7zrmn 2/2 Running 0 20m
front-end-649fc5fd6-kqbtn 2/2 Running 0 20m
..
$ mizu tap "^ca.*"
+carts-66c77f5fbb-fq65r
+catalogue-5f4cb7cf5-7zrmn
Web interface is now available at http://localhost:8899
^C
```
## Configuration
Mizu can optionally work with a config file that can be provided as a CLI argument (using `--set config-path=<PATH>`) or if not provided, will be stored at ${HOME}/.mizu/config.yaml
In case of partial configuration defined, all other fields will be used with defaults <br />
You can always override the defaults or config file with CLI flags
To get the default config params run `mizu config` <br />
To generate a new config file with default values use `mizu config -r`
## Advanced Usage
### Kubeconfig
It is possible to change the kubeconfig path using `KUBECONFIG` environment variable or the command like flag
with `--set kube-config-path=<PATH>`. </br >
If both are not set - Mizu assumes that configuration is at `${HOME}/.kube/config`
### Namespace-Restricted Mode
Some users have permission to only manage resources in one particular namespace assigned to them
By default `mizu tap` creates a new namespace `mizu` for all of its Kubernetes resources. In order to instead install
Mizu in an existing namespace, set the `mizu-resources-namespace` config option
If `mizu-resources-namespace` is set to a value other than the default `mizu`, Mizu will operate in a
Namespace-Restricted mode. It will only tap pods in `mizu-resources-namespace`. This way Mizu only requires permissions
to the namespace set by `mizu-resources-namespace`. The user must set the tapped namespace to the same namespace by
using the `--namespace` flag or by setting `tap.namespaces` in the config file
Setting `mizu-resources-namespace=mizu` resets Mizu to its default behavior
For detailed list of k8s permissions see [PERMISSIONS](docs/PERMISSIONS.md) document
### User agent filtering
User-agent filtering (like health checks) - can be configured using command-line options:
```shell
$ mizu tap "^ca.*" --set tap.ignored-user-agents=kube-probe --set tap.ignored-user-agents=prometheus
+carts-66c77f5fbb-fq65r
+catalogue-5f4cb7cf5-7zrmn
Web interface is now available at http://localhost:8899
^C
```
Any request that contains `User-Agent` header with one of the specified values (`kube-probe` or `prometheus`) will not be captured
### Traffic validation rules
This feature allows you to define set of simple rules, and test the traffic against them.
Such validation may test response for specific JSON fields, headers, etc.
Please see [TRAFFIC RULES](docs/POLICY_RULES.md) page for more details and syntax.
panic(fmt.Sprintf("env var %s's value of %s is invalid! json must match the api.TrafficFilteringOptions struct %v",shared.MizuFilteringOptionsEnvVar,filteringOptionsJson,err))
panic(fmt.Sprintf("env var %s's value of %s is invalid! json must match the shared.SyncEntriesConfig struct, err: %v",shared.SyncEntriesConfigEnvVar,syncEntriesConfigJson,err))
dialer:=&websocket.Dialer{// we use our own dialer instead of the default due to the default's 45 sec handshake timeout, we occasionally encounter hanging socket handshakes when tapper tries to connect to api too soon
resolvedName := k8sResolver.Resolve("10.107.251.91") // will always return `nil` in real scenarios as the internal map takes a moment to populate after `Start` is called
logger.Log.Error("Could not find a resolved name for 10.107.251.91")
}
for {
select {
case err := <- errOut:
logger.Log.Errorf("name resolving error %s", err)
}
}
```
### In cluster authentication
Create resolver using the function `NewFromInCluster(errOut chan error)`
### Out of cluster authentication
Create resolver using the function `NewFromOutOfCluster(kubeConfigPath string, errOut chan error)`
the `kubeConfigPath` param is optional, pass an empty string `""` for resolver to auto locate the default kubeconfig file
### Error handling
Please ensure there is always a thread reading from the `errOut` channel, not doing so will result in the resolver threads getting blocked and the resolver will fail to update.
Also note that any error you receive through this channel does not necessarily mean that resolver is no longer running. the resolver will infinitely retry watching k8s resources until the provided context is cancelled.
logger.Log.Errorf("cannot establish http-proxy connection to the Kubernetes cluster. If you’re using Lens or similar tool, please run mizu with regular kubectl config using --%v %v=$HOME/.kube/config flag",config.SetCommandName,config.KubeConfigPathConfigName)
configCmd.Flags().BoolP(configStructs.RegenerateConfigName,"r",defaultConfig.Config.Regenerate,fmt.Sprintf("Regenerate the config file with default values to path %s or to chosen path using --%s",defaultConfig.ConfigFilePath,config.ConfigFilePathCommandName))
}
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.