monogon-dev / netmeta Goto Github PK
View Code? Open in Web Editor NEWNetMeta is a scalable network observability toolkit optimized for performance.
Home Page: https://netmeta.demo.monogon.dev/
License: Apache License 2.0
NetMeta is a scalable network observability toolkit optimized for performance.
Home Page: https://netmeta.demo.monogon.dev/
License: Apache License 2.0
Contributions guide and dev setup.
For, say, NetFlow data it's pointless to group by a 1s interval
Just load the entire Geolite DB as an IP Trie and look at at query time.
Grafana can display RSS feeds, use it to display news about NetMeta.
-> embed https://github.com/bio-routing/bio-rd
Slightly tricky - might be hard to do via dictionary lookup, better to have a separate Kafka topic for postprocessing.
Add an extra annotation to the interface configs to group interfaces ("show transit ports only").
persistentvolumeclaim/grafana-data-claim created
persistentvolumeclaim/traefik-data created
unable to recognize "STDIN": no matches for kind "Kafka" in version "kafka.strimzi.io/v1beta1"
unable to recognize "STDIN": no matches for kind "KafkaTopic" in version "kafka.strimzi.io/v1beta1"
unable to recognize "STDIN": no matches for kind "ClickHouseInstallation" in version "clickhouse.altinity.com/v1"
unable to recognize "STDIN": no matches for kind "IngressRoute" in version "traefik.containo.us/v1alpha1"
command "kubectl apply --all -f -" failed: exit status 1
Plus an embedded node_exporter for the host itself.
Should be a LowCardinality(String) field to account for weird customers.
Viable replacements:
We can probably pin almost every binary dependency we pull in via digests.
(is there a way to verify k3s binaries and containers?)
This does not work due to missing features in k3s/cri.
microk8s isn't any better.
This allows for declarative parameter changes in the engine spec without migrations.
The current templating engine becomes ....unwieldy:
SELECT
$timeSeries as t,
SrcAS,
sum(Bytes * SamplingRate) * 8 / $interval AS Bps
FROM $table
WHERE
$timeFilter AND FlowDirection = 0
$conditionalTest(AND SamplerAddress = toIPv6($sampler), $sampler)
$conditionalTest(AND SrcAddr = toIPv6('$srcIP'), $srcIP)
$conditionalTest(AND DstAddr = toIPv6('$dstIP'), $dstIP)
$conditionalTest(AND (SrcAddr = toIPv6('$hostIP') OR DstAddr = toIPv6('$hostIP')), $hostIP)
$conditionalTest(AND NextHop = toIPv6('$nextHop'), $nextHop)
$conditionalTest(AND (InIf = $interface OR OutIf = $interface), $interface)
AND SrcAS IN (
SELECT SrcAS
FROM $table
WHERE $timeFilter AND FlowDirection = 0 AND $adhoc
$conditionalTest(AND SamplerAddress = toIPv6($sampler), $sampler)
$conditionalTest(AND SrcAddr = toIPv6('$srcIP'), $srcIP)
$conditionalTest(AND DstAddr = toIPv6('$dstIP'), $dstIP)
$conditionalTest(AND (SrcAddr = toIPv6('$hostIP') OR DstAddr = toIPv6('$hostIP')), $hostIP)
$conditionalTest(AND NextHop = toIPv6('$nextHop'), $nextHop)
$conditionalTest(AND (InIf = $interface OR OutIf = $interface), $interface)
$conditionalTest(AND ($extra), $extra)
GROUP BY SrcAS
ORDER BY count(*) DESC
LIMIT 10)
$conditionalTest(AND ($extra), $extra)
GROUP BY
t,
SrcAS
ORDER BY t, Bps
We need to fork https://github.com/Vertamedia/clickhouse-grafana and add custom templates for this.
We don't need 1-second high resolution data for long-term archival.
Use an AggreatingMergeTree, aggregate it to 5m or so and possibly keep min/max/median.
Depends On: #44
Once we have the AS paths, it's trivial to build a Sankey diagram for egress traffic. Might require a server-side component to feed something like this: https://github.com/kumaravel29/grafana-sankey-panel
Explain if and how to add larger customizations
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.