Skip to content

Commit dee5b46

Browse files
committed
README updates
1 parent 922c849 commit dee5b46

File tree

3 files changed

+50
-62
lines changed

3 files changed

+50
-62
lines changed

README.md

Lines changed: 44 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
![Build status](https://github.com/ns1labs/pktvisor/workflows/Build/badge.svg)
44
[![LGTM alerts](https://img.shields.io/lgtm/alerts/g/ns1/pktvisor.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/ns1/pktvisor/alerts/)
5-
[![Coverity alerts](https://img.shields.io/coverity/scan/22731.svg)](https://scan.coverity.com/projects/ns1-pktvisor)
65

76
<p align="left">
87
<strong>
@@ -17,36 +16,32 @@
1716

1817
## What is pktvisor?
1918

20-
**pktvisor** (pronounced "packet visor") is a **network observability agent** for analyzing high volume, information dense
21-
data streams and producing actionable insights directly from the edge. Its goal is to extract
22-
the signal from the noise; to separate the needles from the haystacks as close to the source as possible.
19+
**pktvisor** (pronounced "packet visor") is an **observability agent** for analyzing high volume, information dense
20+
network data streams and extracting actionable insights directly from the edge while integrating tightly with modern observability stacks.
2321

24-
It is a resource efficient agent built from the ground up to be modular and dynamically controlled in
25-
real time via API. Input and processor modules may be dynamically loaded at runtime. Metric output can be used and visualized
22+
It is resource efficient and built from the ground up to be modular and dynamically controlled in
23+
real time via API and YAML policies. Input and processor modules may be dynamically loaded at runtime. Metric output can be used and visualized
2624
both on-node via command line UI (for localized, hyper real-time actions)
2725
as well as centrally collected into industry standard observability stacks like Prometheus and Grafana.
2826

29-
The [input stream system](src/inputs) is designed to _tap into_ data streams. It currently supports [packet capture](https://en.wikipedia.org/wiki/Packet_analyzer), [dnstap](https://dnstap.info/)
30-
and [sFlow](https://en.wikipedia.org/wiki/SFlow) and will soon support additional taps such as [Netflow](https://en.wikipedia.org/wiki/NetFlow)
31-
, [envoy taps](https://www.envoyproxy.io/docs/envoy/latest/operations/traffic_tapping),
32-
and [eBPF](https://ebpf.io/).
27+
The [input stream system](src/inputs) is designed to _tap into_ data streams. It currently supports [packet capture](https://en.wikipedia.org/wiki/Packet_analyzer),
28+
[dnstap](https://dnstap.info/) and [sFlow](https://en.wikipedia.org/wiki/SFlow) and will soon support additional taps such as [Netflow](https://en.wikipedia.org/wiki/NetFlow),
29+
[envoy taps](https://www.envoyproxy.io/docs/envoy/latest/operations/traffic_tapping), and [eBPF](https://ebpf.io/).
3330

34-
The [stream processor system](src/handlers) includes full application layer analysis,
35-
and [efficiently](https://en.wikipedia.org/wiki/Streaming_algorithm) summarizes to:
31+
The [stream processor system](src/handlers) includes full application layer analysis, and [efficiently](https://en.wikipedia.org/wiki/Streaming_algorithm) summarizes to:
3632

3733
* Counters
3834
* Histograms and Quantiles
3935
* Timers and Rates
4036
* Heavy Hitters/Frequent Items/Top N
4137
* Set Cardinality
42-
* GeoIP
38+
* GeoIP/ASN
4339

4440
pktvisor has its origins in observability of critical internet infrastructure in support of DDoS protection, traffic
4541
engineering, and operations.
4642

4743
These screenshots display both the [command line](golang/) and [centralized views](centralized_collection/) of
48-
the [Network](src/handlers/net)
49-
and [DNS](src/handlers/dns) stream processors, and the types of summary information provided:
44+
the [Network](src/handlers/net) and [DNS](src/handlers/dns) stream processors, and the types of summary information provided:
5045

5146
![Image of CLI UI](docs/images/pktvisor3-cli-ui-screenshot.png)
5247
![Image 1 of Grafana Dash](docs/images/pktvisor-grafana-screenshot1.png)
@@ -67,6 +62,8 @@ the container, you specify which tool to run.
6762
docker pull ns1labs/pktvisor
6863
```
6964

65+
or use `ns1labs/pktvisor:develop` to get the latest development version.
66+
7067
2. *Start the collector agent*
7168

7269
This will start in the background and stay running. Note that the final two arguments select `pktvisord` agent and
@@ -84,15 +81,15 @@ If the container does not stay running, check the `docker logs` output.
8481

8582
After the agent is running, you can observe results locally with the included command line UI. This command will run the
8683
UI (`pktvisor-cli`) in the foreground, and exit when Ctrl-C is pressed. It connects to the running agent locally using
87-
the built in [REST API](https://app.swaggerhub.com/apis/ns1labs/pktvisor/3.0.0-oas3).
84+
the built in REST API.
8885

8986
```
9087
docker run -it --rm --net=host ns1labs/pktvisor pktvisor-cli
9188
```
9289

93-
### Linux Static Binary
90+
### Linux Static Binary (AppImage, x86_64)
9491

95-
You may also use the Linux static binary, built with [AppImage](https://appimage.org/), which is available for
92+
You may also use the Linux all-in-one binary, built with [AppImage](https://appimage.org/), which is available for
9693
download [on the Releases page](https://github.com/ns1labs/pktvisor/releases). It is designed to work on all modern
9794
Linux distributions and does not require installation or any other dependencies.
9895

@@ -122,27 +119,25 @@ background), and either the `--log-file` or `--syslog` argument to record logs.
122119

123120
Also see [Advanced Agent Example](#advanced-agent-example).
124121

125-
### StandAlone Static Binaries
122+
### Linux Static Binaries (Stand Alone, x86_64)
126123

127-
Pktvisor also provides standalone linux static binaries. It is also designed to work on Linux distributions and does not
128-
require installation or any other dependencies.
124+
pktvisor provides statically linked, dependency free linux binaries for each individual pktvisor tool. These are the smallest, most compact versions of the binaries.
129125

130-
You can run pktvisord by typing the following commands in your linux machine.
126+
pktvisord:
131127
```shell
132128
curl -L http://pktvisor.com/download/pktvisord -o pktvisord-x86_64
133129
chmod +x pktvisord-x86_64
134130
./pktvisord-x86_64 -h
135131
```
136132

137-
The command line UI (`pktvisor-cli`) can also be downloaded and run over an environment which contains an agent collector.
133+
pktvisor-cli:
138134
```shell
139135
curl -L http://pktvisor.com/download/cli -o pktvisor-cli-x86_64
140136
chmod +x pktvisor-cli-x86_64
141137
./pktvisor-cli-x86_64 -h
142138
```
143139

144-
Also, The pcap and dnstap file analyzer (`pktvisor-reader`) can be run over input files to analyze network data.
145-
140+
pktvisor-reader:
146141
```shell
147142
curl -L http://pktvisor.com/download/reader -o pktvisor-reader-x86_64
148143
chmod +x pktvisor-reader-x86_64
@@ -151,8 +146,7 @@ chmod +x pktvisor-reader-x86_64
151146

152147
### Other Platforms
153148

154-
If you are unable to use the Docker container or the Linux binary, then you will have to build your own executable,
155-
please see the [Build](#build) section below.
149+
We are working on support for additional operating systems, CPU architectures and packaging systems. If you do not see your binary available, please see the [Build](#build) section below to build your own.
156150

157151
If you have a preferred installation method that you would like to see support
158152
for, [please create an issue](https://github.com/ns1/pktvisor/issues/new).
@@ -161,8 +155,6 @@ for, [please create an issue](https://github.com/ns1/pktvisor/issues/new).
161155

162156
### Agent Usage
163157

164-
A collector agent should be installed on each node to be monitored.
165-
166158
Current command line options are described with:
167159

168160
```
@@ -220,9 +212,8 @@ or
220212
--config FILE Use specified YAML configuration to configure options, Taps, and Collection Policies
221213
Please see https://pktvisor.dev for more information
222214
Modules:
223-
--module-list List all modules which have been loaded (builtin and dynamic)
224-
--module-load FILE Load the specified dynamic module
225-
--module-dir DIR Set module search path
215+
--module-list List all modules which have been loaded (builtin and dynamic).
216+
--module-dir DIR Set module load path. All modules in this directory will be loaded.
226217
Logging Options:
227218
--log-file FILE Log to the given output file name
228219
--syslog Log to syslog
@@ -327,25 +318,26 @@ Usage:
327318
pktvisor-cli -h
328319
pktvisor-cli --version
329320
330-
-H string
331-
Query pktvisord metrics webserver on the given host (default "localhost")
332-
-h Show help
333-
-p int
334-
Query pktvisord metrics webserver on the given port (default 10853)
335-
-version
336-
Show client version
321+
Options:
322+
-p PORT Query pktvisord metrics webserver on the given port [default: 10853]
323+
-H HOST Query pktvisord metrics webserver on the given host [default: localhost]
324+
-P POLICY pktvisor policy to query [default: default]
325+
--tls Use TLS to communicate with pktvisord metrics webserver
326+
--tls-noverify Do not verify TLS certificate
327+
-h Show this screen
328+
--version Show client version
337329
338330
```
339331

340-
### pcap and dnstap File Analysis
332+
### File Analysis (pcap and dnstap)
341333

342334
`pktvisor-reader` is a tool that can statically analyze prerecorded packet capture and dnstap files.
343335

344336
pcap files can come from many sources, the most famous of which is [tcpdump](https://www.tcpdump.org/). Dnstap files
345337
can be generated from most DNS server software that support dnstap logging, either directly or
346338
using a tool such as [golang-dnstap](https://github.com/dnstap/golang-dnstap).
347339

348-
Both take many of the same options, and do all of the same analysis, as `pktvisord` for live capture.
340+
Both take many of the same options, and do all of the same analysis, as `pktvisord` for live capture. pcap files may include sFlow capture data.
349341

350342
```
351343
docker run --rm ns1labs/pktvisor pktvisor-reader --help
@@ -482,20 +474,20 @@ interval = "60"
482474

483475
#### Prometheus Metrics
484476

485-
`pktvisord` also has native Prometheus support, which you can enable by passing `--prometheus`. The metrics are
486-
available for collection at the standard `/metrics` endpoint.
477+
`pktvisord` has native Prometheus support. The `default` policy metrics are
478+
available for collection at the standard `/metrics` endpoint, or use `/api/v1/policies/__all/metrics/prometheus` to collect metrics from all policies.
487479

488480
```shell
489-
$ ./pktvisor-x86_64.AppImage pktvisord -d --prometheus eth0
481+
$ ./pktvisor-x86_64.AppImage pktvisord -d eth0
490482
$ curl localhost:10853/metrics
491483
# HELP dns_wire_packets_udp Total DNS wire packets received over UDP (ingress and egress)
492484
# TYPE dns_wire_packets_udp gauge
493-
dns_wire_packets_udp{instance="node"} 28
485+
dns_wire_packets_udp{instance="node",policy="default"} 28
494486
# HELP dns_rates_total Rate of all DNS wire packets (combined ingress and egress) per second
495487
# TYPE dns_rates_total summary
496-
dns_rates_total{instance="node",quantile="0.5"} 0
497-
dns_rates_total{instance="node",quantile="0.9"} 4
498-
dns_rates_total{instance="node",quantile="0.95"} 4
488+
dns_rates_total{instance="node",policy="default",quantile="0.5"} 0
489+
dns_rates_total{instance="node",policy="default",quantile="0.9"} 4
490+
dns_rates_total{instance="node",policy="default",quantile="0.95"} 4
499491
...
500492
```
501493

@@ -506,6 +498,8 @@ using [remote write](https://prometheus.io/docs/operating/integrations/#remote-e
506498
cloud providers, there is a [docker image available](https://hub.docker.com/r/ns1labs/pktvisor-prom-write) to make this
507499
easy. See [centralized_collection/prometheus](centralized_collection/prometheus) for more.
508500

501+
Also see [getorb.io](https://getorb.io) for information on connecting pktvisor agents to the Orb observability platform.
502+
509503
### REST API
510504

511505
REST API documentation is available in [OpenAPI Format](https://app.swaggerhub.com/apis/ns1labs/pktvisor/3.0.0-oas3)
@@ -549,7 +543,7 @@ Please [contact us](#contact-us) if you have any questions on installation, use,
549543

550544
## Contact Us
551545

552-
We are _very_ interested in hearing about your use cases, feature requests, and other feedback!
546+
We are very interested in hearing about your use cases, feature requests, and other feedback!
553547

554548
* [File an issue](https://github.com/ns1labs/pktvisor/issues/new)
555549
* Use our [public work board](https://github.com/ns1labs/pktvisor/projects/1)
@@ -565,9 +559,7 @@ build system requires CMake and the [Conan](https://conan.io/) package manager s
565559

566560
pktvisor adheres to [semantic versioning](https://semver.org/).
567561

568-
pktvisor is developed and tested on Linux and OSX. Windows is not yet officially supported, though the dependencies and
569-
code base do not preclude a Windows build. If you are interested in developing a Windows version,
570-
please [contact us](#contact-us).
562+
pktvisor is developed and tested on Linux and OSX. A Windows port is in progress. Both x86_64 and ARM architectures are known to function.
571563

572564
#### Dependencies
573565

@@ -577,11 +569,6 @@ please [contact us](#contact-us).
577569

578570
For the list of packages included by conan, see [conanfile.txt](conanfile.txt)
579571

580-
In addition, debugging integration tests make use of:
581-
582-
* [jq](https://stedolan.github.io/jq/)
583-
* [graphtage](https://github.com/trailofbits/graphtage)
584-
585572
#### Building
586573

587574
The general build steps are:
@@ -592,10 +579,6 @@ git clone https://github.com/ns1labs/pktvisor.git
592579
cd pktvisor
593580
mkdir build && cd build
594581
595-
# set up conan
596-
conan profile update settings.compiler.libcxx=libstdc++11 default
597-
conan config set general.revisions_enabled=1
598-
599582
# configure and handle dependencies
600583
cmake -DCMAKE_BUILD_TYPE=Release ..
601584

src/handlers/README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,8 @@ summarize them, typically using a time window of efficient sketch algorithms and
55

66
See the individual READMEs for more information:
77

8-
* [Network](net/)
8+
* [DHCP](dhcp/)
99
* [DNS](dns/)
10+
* [Mock](mock/)
11+
* [Network](net/)
12+
* [PCAP](pcap/)

src/inputs/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ important information.
66

77
See the individual READMEs for more information:
88

9+
* [dnstap](dnstap/)
910
* [Mock](mock/)
1011
* [Packet Capture](pcap/)
12+
* [sFlow](sflow/)
1113

0 commit comments

Comments
 (0)