opensearch-project / opensearch-catalog

The OpenSearch Catalog is designed to make it easier for developers and community to contribute, search and install artifacts like plugins, visualization dashboards, ingestion to visualization content packs (data pipeline configurations, normalization, ingestion, dashboards).
Apache License 2.0
21 stars 19 forks source link

[RFC]Getting Started Template catalog - schema suggestion #165

Open YANG-DB opened 4 months ago

YANG-DB commented 4 months ago

Is your feature request related to a problem?

Today the Integrations catalog are becoming more popular due to its simple installation and opinionated schema governed by the Otel protocol. Each integration has a TryMe button that has a small dataset which functions as a mock data-points for the dashboard to show some minimal visual appearance.

The need for a comprehensive documentation and instruction (including scripts or live docker image) of how to actually add the agent on top of the observed service, how to map the resulting logs into the Otel (simple schema) format and the actual setup of the agent that will be responsible of the data shipping is not covered and very much missing.

What solution would you like? This is a proposal for the content of such getting-started template and format that will lead to a catalog of getting started component that are accompanied with the following :

Each such component will have the following relationships:

Do you have any additional context?

Getting Started Schema Specification

Getting-Started within the Integration Json Specification

Properties

getting-started

Metadata-Properties

Properties

workflows

Workflow Object

steps

Step Object

ps48 commented 4 months ago

Can we add the field for getting_started in the existing integrations config type: https://github.com/opensearch-project/dashboards-observability/blob/b328720c11811d45da9d0594c5c28a18dd8fa2d0/server/adaptors/integrations/types.ts#L12-L29

Something like:


interface IntegrationConfig {
  name: string;
  version: string;
  displayName?: string;
  license: string;
  type: string;
  labels?: string[];
  author?: string;
  description?: string;
  sourceUrl?: string;
  workflows?: IntegrationWorkflow[];
  statics?: IntegrationStatics;
  components: IntegrationComponent[];
  assets: IntegrationAsset[];
  sampleData?: {
    path: string;
  };
gettingStarted?: GettingStartedType;
}

interface GettingStartedType {

// contains all the delta we add 
// workflow
// statics
// relatedAssets

}

Also Let's add type to the workflow steps; so content-type field can help UI component to tell what to render is it an image, video, code, etc.

ps48 commented 4 months ago

@Swiddis Can you please enlighten us how validator behaves when an asset with gettingStarted field is added to older integrations code base?

Swiddis commented 4 months ago

It'd reject it, since additionalProperties: false is set

TackAdam commented 4 months ago

Need create schema section which describes the index template and name/alias to be generated as part of the preparation for ingestion. The actual schema should come from the integration meta-deta component section. Which refers to the integration schema.