Skip to content

Commit

Permalink
GitBook: [master] 58 pages modified
Browse files Browse the repository at this point in the history
  • Loading branch information
woop authored and gitbook-bot committed Apr 1, 2021
1 parent 862f344 commit 63db0e3
Show file tree
Hide file tree
Showing 54 changed files with 2,929 additions and 146 deletions.
16 changes: 6 additions & 10 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
# Introduction

{% hint style="success" %}
_Would you prefer a lighter-weight, pip-install, no-Kubernetes deployment of Feast?_ The Feast maintainers are currently building a new deployment experience for Feast. If you have thoughts on Feast's deployment, [chat with the maintainers](https://calendly.com/d/gc29-y88c/feast-chat-w-willem-and-jay) to learn more and provide feedback.
{% endhint %}

## What is Feast?

Feast \(**Fea**ture **St**ore\) is an operational data system for managing and serving machine learning features to models in production.
Expand Down Expand Up @@ -47,16 +43,16 @@ Feast addresses this problem by introducing feature reuse through a centralized
## How can I get started?

{% hint style="info" %}
The best way to learn Feast is to use it. Head over to our [Quickstart](quickstart.md) and try out our examples!
The best way to learn Feast is to use it. Head over to our [Quickstart](feast-on-kubernetes/getting-started/install-feast/quickstart.md) and try out our examples!
{% endhint %}

Explore the following resources to get started with Feast:

* [Getting Started](getting-started/) provides guides on [Installing Feast](getting-started/install-feast/) and [Connecting to Feast](getting-started/connect-to-feast/).
* [Concepts](concepts/overview.md) describes all important Feast API concepts.
* [User guide](user-guide/define-and-ingest-features.md) provides guidance on completing Feast workflows.
* [Getting Started](feast-on-kubernetes/getting-started/) provides guides on [Installing Feast](feast-on-kubernetes/getting-started/install-feast/) and [Connecting to Feast](feast-on-kubernetes/getting-started/connect-to-feast/).
* [Concepts](feast-on-kubernetes/concepts/overview.md) describes all important Feast API concepts.
* [User guide](feast-on-kubernetes/user-guide/define-and-ingest-features.md) provides guidance on completing Feast workflows.
* [Examples](https://github.com/feast-dev/feast/tree/master/examples) contains a Jupyter notebook that you can run on your Feast deployment.
* [Advanced](advanced/troubleshooting.md) contains information about both advanced and operational aspects of Feast.
* [Reference](reference/api/) contains detailed API and design documents for advanced users.
* [Advanced](feast-on-kubernetes/advanced-1/troubleshooting.md) contains information about both advanced and operational aspects of Feast.
* [Reference](feast-on-kubernetes/reference-1/api/) contains detailed API and design documents for advanced users.
* [Contributing](contributing/contributing.md) contains resources for anyone who wants to contribute to Feast.

114 changes: 68 additions & 46 deletions docs/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,65 +2,87 @@

* [Introduction](README.md)
* [Quickstart](quickstart.md)
* [Getting Started](getting-started/README.md)
* [Install Feast](getting-started/install-feast/README.md)
* [Kubernetes \(with Helm\)](getting-started/install-feast/kubernetes-with-helm.md)
* [Amazon EKS \(with Terraform\)](getting-started/install-feast/kubernetes-amazon-eks-with-terraform.md)
* [Azure AKS \(with Helm\)](getting-started/install-feast/kubernetes-azure-aks-with-helm.md)
* [Azure AKS \(with Terraform\)](getting-started/install-feast/kubernetes-azure-aks-with-terraform.md)
* [Google Cloud GKE \(with Terraform\)](getting-started/install-feast/google-cloud-gke-with-terraform.md)
* [IBM Cloud Kubernetes Service \(IKS\) \(with Helm\)](getting-started/install-feast/ibm-cloud-iks-with-helm.md)
* [Connect to Feast](getting-started/connect-to-feast/README.md)
* [Python SDK](getting-started/connect-to-feast/python-sdk.md)
* [Feast CLI](getting-started/connect-to-feast/feast-cli.md)
* [Learn Feast](getting-started/learn-feast.md)
* [Roadmap](roadmap.md)
* [Changelog](https://github.com/feast-dev/feast/blob/master/CHANGELOG.md)
* [Community](community.md)

## Concepts

* [Overview](concepts/overview.md)
* [Architecture](concepts/architecture.md)
* [Entities](concepts/entities.md)
* [Sources](concepts/sources.md)
* [Feature Tables](concepts/feature-tables.md)
* [Stores](concepts/stores.md)
* [Glossary](concepts/glossary.md)
## Tutorials

## User Guide
## How-to Guides

* [Overview](user-guide/overview.md)
* [Define and ingest features](user-guide/define-and-ingest-features.md)
* [Getting training features](user-guide/getting-training-features.md)
* [Getting online features](user-guide/getting-online-features.md)
---

## Tutorials
* [Create a feature repository](create-a-feature-repository.md)
* [Deploy a feature store](deploy-a-feature-store.md)
* [Load data into the online store](load-data-into-the-online-store.md)
* [Build a training dataset](build-a-training-dataset.md)
* [Read features from the online store](read-features-from-the-online-store.md)

* [Minimal Ride Hailing Example](https://github.com/feast-dev/feast/blob/master/examples/minimal/minimal_ride_hailing.ipynb)
## Concepts

## Advanced
---

* [Upgrading Feast](advanced/upgrading.md)
* [Security](advanced/security.md)
* [Audit Logging](advanced/audit-logging.md)
* [Metrics](advanced/metrics.md)
* [Telemetry](advanced/telemetry.md)
* [Troubleshooting](advanced/troubleshooting.md)
* [Architecture](architecture.md)
* [Feature Views](feature-views.md)
* [Entities](entities.md)
* [Sources](sources.md)

## Reference

* [API Reference](reference/api/README.md)
* [Go SDK](https://godoc.org/github.com/feast-dev/feast/sdk/go)
* [Java SDK](https://javadoc.io/doc/dev.feast/feast-sdk)
* [Core gRPC API](https://api.docs.feast.dev/grpc/feast/core/coreservice.pb.html)
* [Python SDK](https://api.docs.feast.dev/python/)
* [Serving gRPC API](https://api.docs.feast.dev/grpc/feast/serving/servingservice.pb.html)
* [gRPC Types](https://api.docs.feast.dev/grpc/feast/types/value.pb)
* [Configuration Reference](reference/configuration-reference.md)
* [Feast and Spark](reference/feast-and-spark.md)
* [Metrics Reference](reference/metrics-reference.md)
* [Limitations](reference/limitations.md)
---

* [Repository Config](repository-config.md)
* [Python API reference](http://rtd.feast.dev/)

## Feast on Kubernetes

* [Getting Started](feast-on-kubernetes/getting-started/README.md)
* [Install Feast](feast-on-kubernetes/getting-started/install-feast/README.md)
* [Docker Compose](feast-on-kubernetes/getting-started/install-feast/quickstart.md)
* [Kubernetes \(with Helm\)](feast-on-kubernetes/getting-started/install-feast/kubernetes-with-helm.md)
* [Amazon EKS \(with Terraform\)](feast-on-kubernetes/getting-started/install-feast/kubernetes-amazon-eks-with-terraform.md)
* [Azure AKS \(with Helm\)](feast-on-kubernetes/getting-started/install-feast/kubernetes-azure-aks-with-helm.md)
* [Azure AKS \(with Terraform\)](feast-on-kubernetes/getting-started/install-feast/kubernetes-azure-aks-with-terraform.md)
* [Google Cloud GKE \(with Terraform\)](feast-on-kubernetes/getting-started/install-feast/google-cloud-gke-with-terraform.md)
* [IBM Cloud Kubernetes Service \(IKS\) \(with Helm\)](feast-on-kubernetes/getting-started/install-feast/ibm-cloud-iks-with-helm.md)
* [Connect to Feast](feast-on-kubernetes/getting-started/connect-to-feast/README.md)
* [Python SDK](feast-on-kubernetes/getting-started/connect-to-feast/python-sdk.md)
* [Feast CLI](feast-on-kubernetes/getting-started/connect-to-feast/feast-cli.md)
* [Learn Feast](feast-on-kubernetes/getting-started/learn-feast.md)
* [Concepts](feast-on-kubernetes/concepts/README.md)
* [Overview](feast-on-kubernetes/concepts/overview.md)
* [Architecture](feast-on-kubernetes/concepts/architecture.md)
* [Entities](feast-on-kubernetes/concepts/entities.md)
* [Sources](feast-on-kubernetes/concepts/sources.md)
* [Feature Tables](feast-on-kubernetes/concepts/feature-tables.md)
* [Stores](feast-on-kubernetes/concepts/stores.md)
* [Glossary](feast-on-kubernetes/concepts/glossary.md)
* [Tutorials](feast-on-kubernetes/tutorials-1/README.md)
* [Minimal Ride Hailing Example](https://github.com/feast-dev/feast/blob/master/examples/minimal/minimal_ride_hailing.ipynb)
* [User Guide](feast-on-kubernetes/user-guide/README.md)
* [Overview](feast-on-kubernetes/user-guide/overview.md)
* [Getting online features](feast-on-kubernetes/user-guide/getting-online-features.md)
* [Getting training features](feast-on-kubernetes/user-guide/getting-training-features.md)
* [Define and ingest features](feast-on-kubernetes/user-guide/define-and-ingest-features.md)
* [Reference](feast-on-kubernetes/reference-1/README.md)
* [Configuration Reference](feast-on-kubernetes/reference-1/configuration-reference.md)
* [Feast and Spark](feast-on-kubernetes/reference-1/feast-and-spark.md)
* [Metrics Reference](feast-on-kubernetes/reference-1/metrics-reference.md)
* [Limitations](feast-on-kubernetes/reference-1/limitations.md)
* [API Reference](feast-on-kubernetes/reference-1/api/README.md)
* [Go SDK](https://godoc.org/github.com/feast-dev/feast/sdk/go)
* [Java SDK](https://javadoc.io/doc/dev.feast/feast-sdk)
* [Core gRPC API](https://api.docs.feast.dev/grpc/feast/core/coreservice.pb.html)
* [Python SDK](https://api.docs.feast.dev/python/)
* [Serving gRPC API](https://api.docs.feast.dev/grpc/feast/serving/servingservice.pb.html)
* [gRPC Types](https://api.docs.feast.dev/grpc/feast/types/value.pb)
* [Advanced](feast-on-kubernetes/advanced-1/README.md)
* [Troubleshooting](feast-on-kubernetes/advanced-1/troubleshooting.md)
* [Metrics](feast-on-kubernetes/advanced-1/metrics.md)
* [Audit Logging](feast-on-kubernetes/advanced-1/audit-logging.md)
* [Security](feast-on-kubernetes/advanced-1/security.md)
* [Upgrading Feast](feast-on-kubernetes/advanced-1/upgrading.md)
* [Telemetry](feast-on-kubernetes/advanced-1/telemetry.md)

## Contributing

Expand Down
2 changes: 2 additions & 0 deletions docs/architecture.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Architecture

2 changes: 2 additions & 0 deletions docs/build-a-training-dataset.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Build a training dataset

2 changes: 1 addition & 1 deletion docs/contributing/release-process.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ For Feast maintainers, these are the concrete steps for making a new release.
2. Add the change log by applying the change log commit created in step 2.
3. Check that versions are updated with `env TARGET_MERGE_BRANCH=master make lint-versions`
7. Create a [GitHub release](https://github.com/feast-dev/feast/releases) which includes a summary of im~~p~~ortant changes as well as any artifacts associated with the release. Make sure to include the same change log as added in [CHANGELOG.md](https://github.com/feast-dev/feast/blob/master/CHANGELOG.md). Use `Feast vX.Y.Z` as the title.
8. Update the[ Upgrade Guide](../advanced/upgrading.md) to include the action required instructions for users to upgrade to this new release. Instructions should include a migration for each breaking change made to this release.
8. Update the[ Upgrade Guide](../feast-on-kubernetes/advanced-1/upgrading.md) to include the action required instructions for users to upgrade to this new release. Instructions should include a migration for each breaking change made to this release.
9. Update[ Feast Supported Versions]() to include the supported versions of each component.

When a tag that matches a Semantic Version string is pushed, CI will automatically build and push the relevant artifacts to their repositories or package managers \(docker images, Python wheels, etc\). JVM artifacts are promoted from Sonatype OSSRH to Maven Central, but it sometimes takes some time for them to be available. The `sdk/go/v tag` is required to version the Go SDK go module so that users can go get a specific tagged release of the Go SDK.
Expand Down
2 changes: 2 additions & 0 deletions docs/create-a-feature-repository.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Create a feature repository

2 changes: 2 additions & 0 deletions docs/deploy-a-feature-store.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Deploy a feature store

2 changes: 2 additions & 0 deletions docs/entities.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Entities

2 changes: 2 additions & 0 deletions docs/feast-on-kubernetes/advanced-1/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Advanced

132 changes: 132 additions & 0 deletions docs/feast-on-kubernetes/advanced-1/audit-logging.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# Audit Logging

{% hint style="warning" %}
This page applies to Feast 0.7. The content may be out of date for Feast 0.8+
{% endhint %}

## Introduction

Feast provides audit logging functionality in order to debug problems and to trace the lineage of events.

## Audit Log Types

Audit Logs produced by Feast come in three favors:

| Audit Log Type | Description |
| :--- | :--- |
| Message Audit Log | Logs service calls that can be used to track Feast request handling. Currently only gRPC request/response is supported. Enabling Message Audit Logs can be resource intensive and significantly increase latency, as such is not recommended on Online Serving. |
| Transition Audit Log | Logs transitions in status in resources managed by Feast \(ie an Ingestion Job becoming RUNNING\). |
| Action Audit Log | Logs actions performed on a specific resource managed by Feast \(ie an Ingestion Job is aborted\). |

## Configuration

| Audit Log Type | Description |
| :--- | :--- |
| Message Audit Log | Enabled when both `feast.logging.audit.enabled` and `feast.logging.audit.messageLogging.enabled` is set to `true` |
| Transition Audit Log | Enabled when `feast.logging.audit.enabled` is set to `true` |
| Action Audit Log | Enabled when `feast.logging.audit.enabled` is set to `true` |

## JSON Format

Audit Logs produced by Feast are written to the console similar to normal logs but in a structured, machine parsable JSON. Example of a Message Audit Log JSON entry produced:

```text
{
"message": {
"logType": "FeastAuditLogEntry",
"kind": "MESSAGE",
"statusCode": "OK",
"request": {
"filter": {
"project": "dummy",
}
},
"application": "Feast",
"response": {},
"method": "ListFeatureTables",
"identity": "105960238928959148073",
"service": "CoreService",
"component": "feast-core",
"id": "45329ea9-0d48-46c5-b659-4604f6193711",
"version": "0.10.0-SNAPSHOT"
},
"hostname": "feast.core"
"timestamp": "2020-10-20T04:45:24Z",
"severity": "INFO",
}
```

## Log Entry Schema

Fields common to all Audit Log Types:

| Field | Description |
| :--- | :--- |
| `logType` | Log Type. Always set to `FeastAuditLogEntry`. Useful for filtering out Feast audit logs. |
| `application` | Application. Always set to `Feast`. |
| `component` | Feast Component producing the Audit Log. Set to `feast-core` for Feast Core and `feast-serving` for Feast Serving. Use to filtering out Audit Logs by component. |
| `version` | Version of Feast producing this Audit Log. Use to filtering out Audit Logs by version. |

Fields in Message Audit Log Type

| Field | Description |
| :--- | :--- |
| `id` | Generated UUID that uniquely identifies the service call. |
| `service` | Name of the Service that handled the service call. |
| `method` | Name of the Method that handled the service call. Useful for filtering Audit Logs by method \(ie `ApplyFeatureTable` calls\) |
| `request` | Full request submitted by client in the service call as JSON. |
| `response` | Full response returned to client by the service after handling the service call as JSON. |
| `identity` | Identity of the client making the service call as an user Id. Only set when Authentication is enabled. |
| `statusCode` | The status code returned by the service handling the service call \(ie `OK` if service call handled without error\). |

Fields in Action Audit Log Type

| Field | Description |
| :--- | :--- |
| `action` | Name of the action taken on the resource. |
| `resource.type` | Type of resource of which the action was taken on \(i.e `FeatureTable`\) |
| resource.id | Identifier specifying the specific resource of which the action was taken on. |

Fields in Transition Audit Log Type

| Field | Description |
| :--- | :--- |
| `status` | The new status that the resource transitioned to |
| `resource.type` | Type of resource of which the transition occurred \(i.e `FeatureTable`\) |
| `resource.id` | Identifier specifying the specific resource of which the transition occurred. |

## Log Forwarder

Feast currently only supports forwarding Request/Response \(Message Audit Log Type\) logs to an external fluentD service with `feast.**` Fluentd tag.

### Request/Response Log Example

```text
{
"id": "45329ea9-0d48-46c5-b659-4604f6193711",
"service": "CoreService"
"status_code": "OK",
"identity": "105960238928959148073",
"method": "ListProjects",
"request": {},
"response": {
"projects": [
"default", "project1", "project2"
]
}
"release_name": 506.457.14.512
}
```

### Configuration

The Fluentd Log Forwarder configured with the with the following configuration options in `application.yml`:

| Settings | Description |
| :--- | :--- |
| `feast.logging.audit.messageLogging.destination` | `fluentd` |
| `feast.logging.audit.messageLogging.fluentdHost` | `localhost` |
| `feast.logging.audit.messageLogging.fluentdPort` | `24224` |

When using Fluentd as the Log forwarder, a Feast `release_name` can be logged instead of the IP address \(eg. IP of Kubernetes pod deployment\), by setting an environment variable `RELEASE_NAME` when deploying Feast.

59 changes: 59 additions & 0 deletions docs/feast-on-kubernetes/advanced-1/metrics.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Metrics

{% hint style="warning" %}
This page applies to Feast 0.7. The content may be out of date for Feast 0.8+
{% endhint %}

## Overview

Feast Components export metrics that can provide insight into Feast behavior:

* [Feast Ingestion Jobs can be configured to push metrics into StatsD](metrics.md#pushing-ingestion-metrics-to-statsd)
* [Prometheus can be configured to scrape metrics from Feast Core and Serving.](metrics.md#exporting-feast-metrics-to-prometheus)

See the [Metrics Reference ](../reference-1/metrics-reference.md)for documentation on metrics are exported by Feast.

{% hint style="info" %}
Feast Job Controller currently does not export any metrics on its own. However its `application.yml` is used to configure metrics export for ingestion jobs.
{% endhint %}

## Pushing Ingestion Metrics to StatsD

### **Feast Ingestion Job**

Feast Ingestion Job can be configured to push Ingestion metrics to a StatsD instance. Metrics export to StatsD for Ingestion Job is configured in Job Controller's `application.yml` under `feast.jobs.metrics`

```yaml
feast:
jobs:
metrics:
# Enables Statd metrics export if true.
enabled: true
type: statsd
# Host and port of the StatsD instance to export to.
host: localhost
port: 9125
```

{% hint style="info" %}
If you need Ingestion Metrics in Prometheus or some other metrics backend, use a metrics forwarder to forward Ingestion Metrics from StatsD to the metrics backend of choice. \(ie Use [`prometheus-statsd-exporter`](https://github.com/prometheus/statsd_exporter) to forward metrics to Prometheus\).
{% endhint %}

## Exporting Feast Metrics to Prometheus

### **Feast Core and Serving**

Feast Core and Serving exports metrics to a Prometheus instance via Prometheus scraping its `/metrics` endpoint. Metrics export to Prometheus for Core and Serving can be configured via their corresponding `application.yml`

```yaml
server:
# Configures the port where metrics are exposed via /metrics for Prometheus to scrape.
port: 8081
```

[Direct Prometheus](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config) to scrape directly from Core and Serving's `/metrics` endpoint.

## Further Reading

See the [Metrics Reference ](../reference-1/metrics-reference.md)for documentation on metrics are exported by Feast.

0 comments on commit 63db0e3

Please sign in to comment.