Skip to content

Commit 631de8e

Browse files
authored
Revamp documentation/host on deployment (#23)
Use VuePress to host documentation! Side effects of more focus on docker-compose usage, and some minor UI changes.
1 parent 385a25b commit 631de8e

40 files changed

+976
-166
lines changed

README.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
44
TDM provides an offline, immutable view into advertised data availability from data models, with search affordance to quickly identify data of interest and the capability to map between data to aid in keeping track of what is roughly equivalent to what.
55

6-
![Index Screenshot](/doc/img/index.png)
6+
![Index Screenshot](/doc/docs/.vuepress/public/img/index.png)
77

88
For example, discovering and mapping...
99

@@ -15,16 +15,16 @@ For example, discovering and mapping...
1515
| ... | ... |
1616

1717
## Problem Statement
18-
In its current state, network telemetry can be accessed in many different ways that are not easily reconciled – for instance, finding the same information in SNMP MIBs and YANG models. There is no way of determining if the information gathered will have the same values, or which is more accurate than another. Further, the operational methods of deploying this monitoring varies across platforms and implementations. This makes networking monitoring a fragmented ecosystem of inconsistent and unverified data.
18+
In its current state, network telemetry can be accessed in many different ways that are not easily reconciled – for instance, finding the same information in SNMP MIBs and NETCONF/YANG modules. Discovering the datapaths is often tedious and somewhat arcane, and there is no way of determining if the information gathered will have the same values, or which is more accurate than another. Further, the operational methods of deploying this monitoring varies across platforms and implementations. This makes networking monitoring a fragmented ecosystem of inconsistent and unverified data. There needs to be manageability, and cross-domain insight into data availability.
1919

2020
## Solution
21-
TDM seeks to solve this problem by providing a simple schema to model all forms of accessing network telemetry and capability to create relationships between individual data points to demonstrate qualities in consistency, validity, and interoperability. More documentation can be found in [doc/](/doc/).
21+
TDM seeks to solve this problem by providing an overlay platform to generically access network telemetry and capability purported to be supported by an OS/release or platform, and create relationships between individual datapaths to demonstrate qualities in consistency, validity, and interoperability. This will be both exposed by UI for human usage, and API for automated usage. TDM will not seek to provide domain-specific manageability, but serve as an overlay insight tool. There is significantly more documentation in [doc/](/doc/).
2222

2323
### Architecture
24-
![Architecture](/doc/img/tdm_arch.png)
24+
![Architecture](/doc/docs/.vuepress/public/img/tdm_arch.png)
2525

2626
### Schema
27-
![TDM Schema](/doc/img/tdm_schema.png)
27+
![TDM Schema](/doc/docs/.vuepress/public/img/tdm_schema.png)
2828

2929
## Usage
3030

build_images.sh

-7
This file was deleted.

doc/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
docs/.vuepress/dist

doc/Dockerfile

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
FROM node:alpine
2+
WORKDIR /data/
3+
RUN yarn global add vuepress@next
4+
COPY package.json package.json
5+
COPY docs/ docs/
6+
ENTRYPOINT [ "yarn" ]
7+
CMD [ "docs:build" ]

doc/README.md

+12-52
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,16 @@
1-
# TDM Overview
1+
# TDM Documentation
22

3-
- [TDM Overview](#tdm-overview)
4-
- [Plan](#plan)
5-
- [Problem Statement](#problem-statement)
6-
- [Solution](#solution)
7-
- [Elaboration](#elaboration)
8-
- [Components](#components)
3+
TDM is documented via [VuePress](https://vuepress.vuejs.org/), written in Markdown and converted via VuePress to HTML to be deployed alongside TDM. This allows us to write our documentation in Markdown, and not be responsible for hand-coding HTML documentation documents. This does break some level of GitHub-like navigation, but results in a nice, self-hosted documentation site.
94

10-
* [Crash Course](Crash%20Course.md)
11-
* [Cool Stuff](Cool%20Stuff.md)
5+
```bash
6+
# Run dev server on localhost:8089
7+
./standalone.sh
8+
```
129

13-
## Plan
14-
Anything besides the following must be addressed on an engagement/need basis.
10+
## Manual Navigation
11+
If you do not want to run the standalone server or production TDM, you may navigate through this repositories Markdown documents but the links might be more difficult to navigate.
1512

16-
- [x] MVP1 - Consume existing spreadsheets of mappings and provide same experience via UI.
17-
- [x] MVP2 - Provide search and mapping capability via UI.
18-
- [x] Exit Strategy - Open Source++
19-
- [ ] Extended Goals - Recurring ETL process to remove any maintenance requirement and refactor code to be more maintainable.
20-
21-
## Problem Statement
22-
In its current state, network telemetry can be accessed in many different ways that are not easily reconciled – for instance, finding the same information in SNMP MIBs and YANG models. There is no way of determining if the information gathered will have the same values either, or which is more accurate than another. Further, the operational methods of deploying this monitoring varies across platforms and implementations. This makes networking monitoring a fragmented ecosystem of inconsistent and unverified data. Discovering the datapoints in the first place is often tedious and somewhat arcane as well.
23-
24-
## Solution
25-
TDM seeks to solve this problem by providing a simple schema to model all forms of accessing network telemetry and capability to create relationships between individual data points to demonstrate qualities in consistency, validity, and interoperability.
26-
27-
![TDM Schema](/doc/img/tdm_schema.png)
28-
29-
### Elaboration
30-
We are seeking to alleviate two major problems using TDM.
31-
32-
1. The same data is addressed differently across platforms.
33-
2. Data discovery is difficult.
34-
35-
The two problems above are especially prevalent now with data driving business-impacting decisions and with Streaming Telemetry/Model Driven Telemetry* coming to market. Our customers currently experience a difficult and uncertain upgrade path transitioning from SNMP to MDT. We hope that Telemetry Data Mapper will make it easy to map the data available from different protocols like SNMP, gRPC, NETCONF, etc. and serve as a source of truth for transformation and exploration of data across OS/Releases and platforms.
36-
37-
Telemetry Data Mapper encompasses more than just Streaming Telemetry - it seeks to enable mappings between any form of telemetry on any device or platform such as SNMP. The data points that are gathered via MDT or SNMP, etc. are what TDM focuses upon. The data points will be tracked on a per device/platform basis, and have relationships created between them in a database to illustrate equivalency, or whatever else we would like to track and demonstrate. Thus we can begin to see what data points are equivalent across devices and platforms, and begin to holistically collect and analyze the data.
38-
39-
As a side effect of the necessity of these mappings, we will also gain offline visibility in to what data is available for collection and the ability to easily explore the data. Further, we can begin analyzing data coverage, etc. Even more importantly, we can begin to validate the data on a cross-platform basis! There are huge quality assurance benefits to having an offline vision for our platform data.
40-
41-
In order to solve these problems, we must first understand all of the difficulties and arcane methods to get this data, and provide easy presentation and usage. *yay*
42-
43-
## Components
44-
45-
![Architecture](/doc/img/tdm_arch.png)
46-
47-
TDM is made up of several different technologies. These are expanded in their own code sub-directories if not here.
48-
* [ETL Code](/etl/)
49-
* [Web Code](/web/)
50-
* [NGINX / Goaccess](/nginx/)
51-
* [ArangoDB](https://www.arangodb.com/)
52-
ArangoDB was being used elsewhere in our team and thus we decided to bring it in to another project. Being a graph database, it had some attractive features, flexibility, and GUI that could in theory make it easier for relatively technical users to directly use the database instead of building custom web interfaces. ArangoDB contains our processed source of truth in TDM. The ETL process parses all of the different data we are interested in and formalizes relationships into ArangoDB to enable querying capabilities on the data instead of doing all the work in code. ArangoDB has a nice query language for traversing schemas, as it is a graph database, and simplifies some queries. However, it does come with some limitations in maturity such as lacking "views" (now implemented*), etc. We are currently using it very much like a relational database, and should likely eventually transition to an RDBMS. However, given it works and having operationalized around it, there's no pressing need to do so.
53-
* [Elasticsearch](https://www.elastic.co/products/elasticsearch)
54-
Elasticsearch is effectively a mitigation of search difficulty in ArangoDB. In order to achieve reasonable performance, we wrote a query which resulted in monstrous RAM usage (32 GB for "bgp") with potential to take up to a minute to return. This was unacceptable. We could revisit aspects of TDM's design, but decided to try out ES. Elasticsearch receives all of the data in TDM in a denormalized form to enable fast and powerful search capabilities. Elasticsearch is perfectly suited to our search needs, and solved a couple search issues at once by implicitly handling fuzziness, scoring of results, and more. Our current usage is by no means perfect and is rather naive, but it's extremely fast and sits at a near constant 1 GB of RAM usage during search loads.
55-
* [Kibana](https://www.elastic.co/products/kibana)
56-
Kibana provides a nice interface for exploring Elasticsearch and is useful for determining the Elasticsearch query structures to bring into custom interfaces. Elasticsearch's query syntax has many options, so having a tool which enables easy query iteration to see how the structure of the query needs to look is very useful. If TDM's Web UI Search does not meet your requirements - try using Kibana and open an issue for improvement.
13+
* Documentation
14+
`docs/*` except `.vuepress`
15+
* Static Content
16+
`docs/.vuepress/public`

doc/docs/.vuepress/config.js

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
module.exports = {
2+
title: 'Telemetry Data Mapper',
3+
description: 'Usage and Development Documentation',
4+
base: '/doc/',
5+
themeConfig: {
6+
repo: 'cisco-ie/tdm/',
7+
docsDir: 'doc/docs',
8+
editLinks: true,
9+
editLinkText: 'Help us improve this page!',
10+
sidebar: [
11+
'/',
12+
{
13+
title: 'Guides',
14+
collapsable: false,
15+
children: [
16+
'/guides/Crash Course',
17+
'/guides/Identifying and Validating Mappings'
18+
]
19+
},
20+
{
21+
title: 'Developer Documentation',
22+
collapsable: false,
23+
children: [
24+
'/dev/architecture/Database',
25+
'/dev/architecture/ETL',
26+
'/dev/architecture/Search',
27+
'/dev/architecture/Web',
28+
'/dev/Cool Stuff'
29+
]
30+
},
31+
'/Contact'
32+
],
33+
nav: [
34+
{ text: 'Overview', link: '/' },
35+
{ text: 'Contact', link: '/Contact' }
36+
]
37+
}
38+
}
168 KB
Loading
195 KB
Loading
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// Derived from Cisco UI
2+
$accentColor = #049fd9
3+
// $accentColor = #005073
4+
$textColor = #58585b

doc/docs/Contact.md

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Contact
2+
TDM is developed by [Cisco Innovation Edge](https://github.com/cisco-ie), a worldwide group which seeks to enable automation, analytics, and infrastructure applications with customers upon existing Cisco products.
3+
4+
If you encounter any issues using TDM, please [open an issue](https://github.com/cisco-ie/tdm/issues) or contact [[email protected]](mailto:[email protected]).

doc/docs/README.md

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Overview
2+
**Welcome to TDM!** This documentation should help you get started being productive.
3+
4+
TDM enables easier exploration and insights into data availability from networking operating systems and platforms, including formal constructs for indicating equivalent data. For instance, migrating from SNMP OIDs to Model-Driven Telemetry YANG XPaths. TDM exists to ease data discovery, correlation, and usage.
5+
6+
| SNMP OID | YANG XPath |
7+
|--------------------|---------------------------------------------------------------------------------------------------------------------|
8+
| `bgpLocalAS` | `Cisco-IOS-XR-ipv4-bgp-oper:bgp/instances/instance/instance-active/default-vrf/global-process-info/global/local-as` |
9+
| `ifMTU` | `Cisco-IOS-XR-pfi-im-cmd-oper:interfaces/interface-xr/interface/mtu` |
10+
| `cdpCacheDeviceId` | `Cisco-IOS-XR-cdp-oper:cdp/nodes/node/neighbors/details/detail/device-id` |
11+
| ... | ... |
12+
13+
## Problem
14+
In its current state, network telemetry can be accessed in many different ways that are not easily reconciled – for instance, finding the same information in SNMP MIBs and NETCONF/YANG modules. Discovering the datapaths is often tedious and somewhat arcane, and there is no way of determining if the information gathered will have the same values, or which is more accurate than another. Further, the operational methods of deploying this monitoring varies across platforms and implementations. This makes networking monitoring a fragmented ecosystem of inconsistent and unverified data. There needs to be manageability, and cross-domain insight into data availability.
15+
16+
## Solution
17+
TDM seeks to solve this problem by providing a platform to generically access network telemetry and capability purported to be supported by an OS/release or platform, and create relationships between individual datapaths to demonstrate qualities in consistency, validity, and interoperability. This will be both exposed by UI for human usage, and API for automated usage. TDM will not seek to provide domain-specific manageability, but serve as an overlay insight tool.
18+
19+
![TDM Web UI](/doc/img/index.png)
20+
21+
We are seeking to alleviate two major problems using TDM.
22+
23+
1. The same data is addressed differently across platforms.
24+
2. Data discovery is difficult.
25+
26+
The two problems above are especially prevalent now with data driving business-impacting decisions and with Streaming Telemetry/Model-Driven Telemetry* in market. We currently experience a difficult and uncertain upgrade path transitioning from SNMP to MDT. We hope that Telemetry Data Mapper will make it easy to map the data available from different protocols like SNMP, gRPC, NETCONF, etc. and serve as a source of truth for transformation and exploration of data across OS/releases and platforms.
27+
28+
Telemetry Data Mapper encompasses more than just SNMP/Model-Driven Telemetry - it seeks to enable mappings between any form of telemetry on any device or platform. Datapaths identifying a unit of information are tracked, and the datapaths will be tracked on a per device/platform basis, and have relationships created between them in a database to illustrate equivalency, or whatever else we would like to track and demonstrate. Thus we can begin to see what data points are equivalent across devices and platforms, and begin to holistically collect and analyze the data.
29+
30+
As a side effect of the necessity of these mappings, we will also gain offline visibility in to what data is available for collection and the ability to easily explore the data. Further, we can begin analyzing data coverage, etc. Even more importantly, we can begin to validate the data on a cross-platform basis! There are huge quality assurance benefits to having an offline vision for platform data.
31+
32+
In order to solve these problems, we must first understand all of the difficulties and arcane methods to get this data, and provide easy presentation and usage. *yay*

doc/Cool Stuff.md doc/docs/dev/Cool Stuff.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Cool Stuff
2-
This document is simply to try and express all the cool stuff which we could possibly do.
2+
This document is simply to try and express cool stuff which we could possibly do.
3+
4+
[[toc]]
35

46
## Automatic Data Normalization
57
This is the holy grail, and likely unfortunately out of scope at the moment ([although Google might have a working implementation based on this presentation](https://www.youtube.com/watch?v=McNm_WfQTHw)). If we can determine how to go from one data modeling language to another data modeling language generically, we can provide an API to normalize different data in to one clean presentation. For instance, let us assume we have data points `1`, `2`, and `3` and they are all considered "equivalent" and mapped as `1 <-> 2 <-> 3`. Given this knowledge, and some implementation, we could specify any of these data points to be our desired data form and any time we provide any of the other data points they can be normalized to our specified schema. i.e. `2` is the desired data point to generically perform analysis against. Submitting data points from `1` and `3` will be automatically translated in to the schema of `2` and thus we no longer need to join our analysis against 3 separate data points and instead against 1 as the data is already being normalized by TDM via knowing the mappings.

0 commit comments

Comments
 (0)