{"id":26153976,"url":"https://github.com/tricorder-observability/Starship","last_synced_at":"2025-03-11T08:03:06.404Z","repository":{"id":65935035,"uuid":"602592542","full_name":"tricorder-observability/Starship","owner":"tricorder-observability","description":"Starship: next-generation Observability platform built with eBPF+WASM","archived":false,"fork":false,"pushed_at":"2023-04-06T01:46:03.000Z","size":20139,"stargazers_count":163,"open_issues_count":90,"forks_count":25,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-26T09:51:20.424Z","etag":null,"topics":["ebpf","observability","opentelemetry","prometheus","wasm","webassembly"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tricorder-observability.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-02-16T14:38:53.000Z","updated_at":"2025-02-25T02:53:06.000Z","dependencies_parsed_at":"2024-04-16T20:58:12.514Z","dependency_job_id":"7e474de8-7df6-4ef8-b666-4b23696060f5","html_url":"https://github.com/tricorder-observability/Starship","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tricorder-observability%2FStarship","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tricorder-observability%2FStarship/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tricorder-observability%2FStarship/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tricorder-observability%2FStarship/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tricorder-observability","download_url":"https://codeload.github.com/tricorder-observability/Starship/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242995900,"owners_count":20218828,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ebpf","observability","opentelemetry","prometheus","wasm","webassembly"],"created_at":"2025-03-11T08:02:12.162Z","updated_at":"2025-03-11T08:03:06.384Z","avatar_url":"https://github.com/tricorder-observability.png","language":"Go","funding_links":[],"categories":["Observability \u0026 Monitoring","BPF and eBPF Projects"],"sub_categories":["Notes"],"readme":"# Starship ![Starship stars](https://img.shields.io/github/stars/tricorder-observability/starship?style=social)\n\n⚠️ **Starship is in active development; it's unstable, and should only be used for evaluation**  ⚠️\n\n![image](https://user-images.githubusercontent.com/112656580/219543149-2e2bbebc-1891-4dcb-ba66-0f8b7f1bcd68.png)\n![image](https://user-images.githubusercontent.com/112656580/219542981-5a4e5fb1-0603-4c0b-91e2-c94c36a92c0b.png)\n\n🖖 Starship 🪐 is a next-generation Observability platform built on 🐝 eBPF➕WASM ![image](https://user-images.githubusercontent.com/112656580/219543881-046af389-ca10-4dda-b79a-a60088a1220a.png)\n\n🚀 Starship is to modern Observability, as ChatGPT is to consumer knowledge discovery.\n🐝 eBPF enables instrumentation-free data collection, and\n![image](https://user-images.githubusercontent.com/112656580/219543881-046af389-ca10-4dda-b79a-a60088a1220a.png)\nWASM complements eBPF's inability to perform complex data processing.\n\nStarship is developed by [Tricorder Observability](https://tricorder.dev/),\nproudly supported by [MiraclePlus](https://www.miracleplus.com/) and the Open Source\ncommunity.\n\n[![Bazel build and test](https://github.com/tricorder-observability/Starship/actions/workflows/build-and-test.yml/badge.svg?branch=main\u0026event=push)](https://github.com/tricorder-observability/Starship/actions/workflows/build-and-test.yml)\n[![Release](https://github.com/tricorder-observability/Starship/actions/workflows/release.yaml/badge.svg)](https://github.com/tricorder-observability/Starship/actions/workflows/release.yaml)\n\n![GitHub issues](https://img.shields.io/github/issues/tricorder-observability/starship)\n![GitHub pull requests](https://img.shields.io/github/issues-pr/tricorder-observability/starship)\n\n![Twitter Follow](https://img.shields.io/twitter/follow/tricorder_o11y?style=social)\n[![Slack Badge](https://img.shields.io/badge/Slack-4A154B?logo=slack\u0026style=social\u0026label=Join%20Tricorder)](https://join.slack.com/t/tricorderobse-mfl6648/shared_invite/zt-1oxqtq793-rRA03FN1YuyCiQrN_TrZoQ)\n\n## Building Starship\nThe easiest way to get started with building Starship is to use the dev image:\n\n```\ngit clone git@github.com:\u003cfork\u003e/Starship.git\ncd Starship\n# Luanch dev image container\ndevops/dev_image/run.sh\n# Inside the container\nbazel build src/...\n```\n\n`devops/dev_image/run.sh` mounts the `pwd` (which is the root of the cloned Starship repo)\nto `/starship` inside the dev image.\n\n## Get Started\n\n☸️ [Helm-charts](https://tricorder-observability.github.io/Starship),\ninstall Starship on your Kubernetes cluster with helm.\n\nWe recommend [Minikube](https://minikube.sigs.k8s.io/docs/start/)\n[**v1.24.0**](https://github.com/kubernetes/minikube/releases/tag/v1.24.0).\nStarship deployment is broken on Kubernetes version 1.25 and newer version because of incompatbility\nof the bundled kube prometheus stack using Pod Security Policy, which was removed in Kubenetes 1.25.\nSee [issues/258](https://github.com/tricorder-observability/Starship/issues/258).\n\n```\nminikube version\nminikube version: v1.24.0\ncommit: 76b94fb3c4e8ac5062daf70d60cf03ddcc0a741b\n\n# First start the minikube cluster, and make sure have at least 8 cpus and\n# 8196 MB memory.\nminikube start --profile=${USER} --cpus=8 --memory=8192\n\n# Create a namespace for installing Starship.\n# Do not use a different namespace, as our documentation uses this namespace\n# consistently, and you might run into unexpected issues with a different\n# namespace.\nkubectl create namespace tricorder\nkubectl config set-context --current --namespace=tricorder\n\n# Add Starship's helm-charts and install Starship\nhelm repo add tricorder-starship https://tricorder-observability.github.io/Starship\nhelm install my-starship tricorder-starship/starship\n```\n\nYou should see the following pods running on your cluster.\n![image](https://user-images.githubusercontent.com/112656580/220381364-65bebd35-bf6d-4780-981b-be94c5464607.png)\n\nMore details can be found at [helm-charts installation](\nhttps://github.com/tricorder-observability/Starship/tree/main/helm-charts).\n\nThen follow the [CLI build and install](\nhttps://github.com/tricorder-observability/starship/blob/main/src/cli/README.md#build-and-install)\nto install `starship-cli`.\n\nThen expose the API Server http endpoint with `kubectl port-forward`:\n```\n# This allows starship-cli accessing API Server with\n# --api-address=localhost:8081\nkubectl port-forward service/api-server 8081:80 -n tricorder\n```\n\n\u003e DO NOT use the Web UI, as it's not working right now\n\u003e [issue/#80](https://github.com/tricorder-observability/starship/issues/80).\n\nThen make sure you are the root of the Starship repo, and create a pre-built module:\n```\nstarship-cli --api-address localhost:8081 module create \\\n    --bcc-file-path=modules/ddos_event/ddos_event.bcc \\\n    --wasm-file-path=modules/ddos_event/write_events_to_output.wasm \\\n    --module-json-path=modules/ddos_event/module.json\n```\n![image](https://user-images.githubusercontent.com/112656580/220375093-687b65b4-08fb-4be7-952a-89134306bb9c.png)\n\nThen deploy this module:\n```\nstarship-cli --api-address=localhost:8081 module deploy -i 0aa9e5db_ffce_4276_b37e_0b2dd82814a1\n```\n![image](https://user-images.githubusercontent.com/112656580/220375739-82f7b971-f0af-45e1-815e-e3c65c48be57.png)\n\n```\nstarship-cli --api-address=localhost:8081 module deploy -i 0aa9e5db_ffce_4276_b37e_0b2dd82814a1\nkubectl port-forward service/my-starship-grafana 8082:80 -n tricorder\n```\nThen open `http://localhost:8082`, login Grafana with username `admin` and password `tricorder`.\nThen click the `Dashboards`-\u003e`Browse`, and then select the dashboard named `tricorder_\u003cmodule_id\u003e`.\nYou should see data reporting packets arriving with timestamp, as shown in the screenshot below.\n\n![image](https://user-images.githubusercontent.com/112656580/220397224-5238110f-a1a0-4e0a-91de-4b9f9611caf9.png)\n\n\u003e Not yet very useful. We are working tirelessly 👩‍👨‍💻💻 on micro-service tracing!\n\u003e Stay tuned! 🫶\n\n## Architecture\n\n🤿 Before diving into the code base:\n\n- Starship is built for Kubernetes platform. Starship provides all things you'll\n  need to get started with Zero-Cost (or Zero-Friction) Observability.\n- Starship provides `Service Map`, the most valuable information for\n  understanding Cloud Native applications, and numerous other data, analytic,\n  and visualization capabilities to satisfy the full spectrum of your needs in\n  running and managing Cloud Native applications on Kubernetes.\n- The core of starship is the tricorder agent, which runs data collection\n  modules written in your favorite language, and are executed in eBPF+WASM.  You\n  can write your own modules in C/C++ (Go, Rust, and more languages are coming).\n\nWe are working on supporting all major frontend languages of writing eBPF\nprograms, including:\n* [BCC](https://github.com/iovisor/bcc)\n* [BPFtrace](https://github.com/iovisor/bpftrace)\n* Rust ([readbpf](https://github.com/foniod/redbpf)\n  [aya](https://github.com/aya-rs/aya))\n\nAdditionally, [libbpf](https://github.com/libbpf/libbpf)-style eBPF binary\nobject files are supported as well.\n\n## Components\n\n* Starship [Tricorder](src/agent) (aka. Starship Agent): a data collection agent\n  running as daemonset. Agent executes eBPF+WASM modules and export structured\n  data to storage engine.  The code lives in [src/agent](src/agent).\n* Starship [API Server](src/api-server): manages Tricorder agents, and Promscale\n  \u0026 Grafana backend server; also supports management Web UI and CLI.  The code\n  lives in [src/api-server](src/api-server).\n* Starship [CLI](src/cli): the command line tool to use Starship on your\n  Kubernetes cluster. The code lives in [src/cli](src/cli).\n* Starship [Web UI](ui): a Web UI for using Starship.  The code lives in\n  [ui](ui).\n\n### 3rd party dependencies\n\n* [Promscale](https://github.com/timescale/promscale): A unified metric and\n  trace observability backend for Prometheus \u0026 OpenTelemetry.  Starship use\n  `Promscale` to support Prom and OTel.\n* [Grafana](https://github.com/grafana/grafana): Starship use `Grafana` to\n  visualize Observability data.\n\n### Prepherials\n\n* [Kube-state-metrics](https://github.com/kubernetes/kube-state-metrics) (KSM):\n  listens to the Kubernetes API server and generates metrics about the state of\n  the objects. Starship use `KSM` to expose cluster-level metrics.\n* [Prometheus](https://github.com/prometheus/prometheus): collects metrics from\n  `KSM` and then remote write to `Promscale`.\n* [OpenTelemetry](https://github.com/open-telemetry): for distributed tracing\n  and other awesome Observability features.\n\n## Contributing\n\n### Overview\n- Fork the repo\n- Createing Pull Request\n- Ask for review\n\n### Provision development environment on localhost\nYou can use Ansible to provision development environment on your localhost.\nFirst install `ansible`:\n\n```\nsudo apt-get install ansible-core -y\ngit clone git@github.com:tricorder-observability/starship.git\ncd starship\nsudo devops/dev_image/ansible-playbook.sh devops/dev_image/dev.yaml\n```\n\nThis installs a list of apt packages, and downloads and installs a list of other\ntools from online.\n\nAfterwards, you need source the env var file to pick up the PATH environment\nvariable (or put this into your shell's rc file):\n```\nsource devops/dev_image/env.inc\n```\nAfterwards, run `bazel build src/...` to build all targets in the Starship repo.\n\n### Creating Pull Requests\n\nAfter making changes, run `tools/cleanup.sh` to cleanup the codebase, and then push\nthe changes to the forked repo, and create `Pull Request` on github Web UI.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftricorder-observability%2FStarship","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftricorder-observability%2FStarship","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftricorder-observability%2FStarship/lists"}