Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/vinceanalytics/vince

vince - The Self Hosted Cloud Native Web Analytics Platform. Built on Go + Apache Arrow + Apache Parquet + MySQL compatible api for data analysts [ STILL UNDER EARLY ACTIVE DEVELOPMENT]
https://github.com/vinceanalytics/vince

apache-arrow apache-parquet cloud-native golang k8s kubernetes mysql self-hosted vince vince-operator vince-staples web-analytics zero-dependency

Last synced: about 1 month ago
JSON representation

vince - The Self Hosted Cloud Native Web Analytics Platform. Built on Go + Apache Arrow + Apache Parquet + MySQL compatible api for data analysts [ STILL UNDER EARLY ACTIVE DEVELOPMENT]

Awesome Lists containing this project

README

        


Vince Logo

> **Warning**
> This is still under early development its not in a usable state yet

# vince

The Cloud Native Web Analytics Platform. Built on Apache Arrow and Apache Parquet.

> **note**
> Vince does not support realtime queries. Events are processed daily at configured time of the day.
> There is a possibility you will have to wait 24h to be able to get actionable insight from your site
> when you configure it for the first time.
>
> However , if you wish to trigger saving manually (This is not recommended ,
> do this only when testing vince not in production) we provide `force_save`
> procedure which you can call any time.

# Features

- :white_check_mark: SQL for querying stats (All MySQL compatible clients are supported)
- :white_check_mark: Time on site tracking
- :white_check_mark: Conversion tracking
- :white_check_mark: Multiple site management
- :white_check_mark: Campaign Management
- :x: Report Generation
- :white_check_mark: Goal Tracking
- :white_check_mark: Event Tracking
- :x: Cloud Native (seamless k8s integration)
- :white_check_mark: API for sites management
- :white_check_mark: No runtime dependency (Static binary with everything you need)

## Usage

Throughout this guide we will be using `http://localhost:8080` to refer to the url where you self hosted vince instance. We expect the url to change to the internet accessible url where you self hosted your vince instance.`example.com` is used to represent your website that you wish to track.

Install

vince provides a single binary `vince` that provides both the server and client
functionality. For now only `Mac OS` and `Linux` are supported.

```bash
curl -fsSL https://github.com/vinceanalytics/vince/releases/latest/download/install.sh | bash
```

```bash
brew install vinceanalytics/tap/vince
```

```bash
docker pull ghcr.io/vinceanalytics/vince
```

Initialize a project

`vince init` sets up a directory for serving vince instance. This includes creating directories for databases and generating of configurations. You can later edit generated configuration file to reflect what you need.

```bash
NAME:
vince init - Initializes a vince project

USAGE:
vince init [command [command options]] [arguments...]

OPTIONS:
-i Shows interactive prompt for username and password (default: false) || --no-i Shows interactive prompt for username and password (default: false)
--username value Name of the root user (default: "root") [$VINCE_ROOT_USER]
--password value password of the root user (default: "vince") [$VINCE_ROOT_PASSWORD]
--help, -h show help (default: false)
```

Vince instances are password protected. Access to resources is provided via JWT tokens served using the builtin oauth2 server.

```bash
VINCE_ROOT_PASSWORD=xxxxx vince init example
```

Start server

Vince binds to two ports, one for vince api and another for mysql api.

```bash
NAME:
vince serve - Serves web ui console and expose /api/events that collects web analytics

USAGE:
vince serve [command [command options]] [arguments...]

OPTIONS:
core

--db-path value path to main database (default: "db") [$VINCE_DB_PATH]
--enable-profile Expose /debug/pprof endpoint (default: false) [$VINCE_ENABLE_PROFILE]
--env value Deployment environment (default: "dev") [$VINCE_ENV]
--listen value http address to listen to (default: ":8080") [$VINCE_LISTEN]
--listen-mysql value serve mysql clients on this address (default: ":3306") [$VINCE_MYSQL_LISTEN]
--log-level value log level, values are (trace,debug,info,warn,error,fatal,panic) (default: "debug") [$VINCE_LOG_LEVEL]
--tls-cert-file value path to tls certificate [$VINCE_TLS_CERT_FILE]
--tls-key-file value path to tls key [$VINCE_TLS_KEY_FILE]

```

```bash
vince serve example
```

Login

```bash
VINCE_ROOT_PASSWORD=xxxxx vince login http://localhost:8080
```

Connect with mysql

```bash
LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN=y mysql --host 127.0.0.1 --port 3306 -uroot -p$VINCE_ACCESS_TOKEN
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.9-Vitess Dolt

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
```

You can obtain `VINCE_ACCESS_TOKEN` via vince client

```bash
vince login --token
```

Add site

You can add a website to allow collection of web analytics using mysql api with
the procedure `add_site` which accepts the domain name of the site as the first argument and optionally site description as a second argument.

Site domain, is the part of the website url without `http://` or `http://` or
`wwww`. Example domain for `https://www.vinceanalytics.com` is `vinceanalytics.com`

There is no limit on the number of sites that can be added. Also you can setup and sent events for sites that have not been added (the events will just be dropped).

Please see `Embedding js tracker` section on how to setup tracker script on your website to start collecting and send web analytics to your vince instance.

```shell
mysql> call add_site('example.com');
+--------+
| status |
+--------+
| ok |
+--------+
1 row in set (0.00 sec)
```

Embedding js tracker
Vince instance hosts and serve the javascript tracker that you can embed in
your website.

Update `html` of your website to include the script in the `head` tag of your
`html`

```html

```

Check if the site is configured

Procedures `seen_first_event` shows if the vince is processing events from the
site.

- `0`: when not configured
- `1`: when configured

```bash
mysql> call seen_first_event('example.com');
+------------------+
| seen_first_event |
+------------------+
| 1 |
+------------------+
1 row in set (0.00 sec)
```