Git Product home page Git Product logo

dashboard's Introduction

Dapr Dashboard

codecov FOSSA Status

Dapr Dashboard is a web-based UI for Dapr, allowing users to see information, view logs and more for the Dapr applications, components, and configurations running on a supported Dapr Dashboard platform.

Supported Dapr Dashboard plaforms are:

  • Standalone - running locally via Dapr CLI
  • Kubernetes - running inside a Kubernetes cluster
  • Docker Compose - running inside a docker compose network

Features

Dapr Dashboard provides information about Dapr applications, components, configurations, and control plane services (Kubernetes only). Users can view metadata, manifests and deployment files, actors, logs, and more. For more information, check out the changelog.

Getting started

Prerequisites

If you intend to run in the Standalone or Kubernetes platform mode you will need to have the following:

Dapr Dashboard comes pre-packaged with the Dapr CLI. To learn more about the dashboard command, use the CLI command dapr dashboard -h.

If you intend to run in the Docker Compose platform mode, you don't need to install anything. Instead you specify Dapr docker images to use.

Installation

If you want to install via Helm, run:

helm repo add dapr https://dapr.github.io/helm-charts/
helm repo update
helm install dapr-dashboard dapr/dapr-dashboard

Kubernetes

Run dapr dashboard -k, or if you installed Dapr in a non-default namespace, dapr dashboard -k -n <your-namespace>.

Standalone

Run dapr dashboard, and navigate to http://localhost:8080.

Docker Compose

Construct a docker compose file that references the specific Dapr pieces that you want to use. The following example defines an application and its corresponding daprd sidecar, the Dapr Placement service, and the Dapr Dashboard.

When running inside docker compose, the dashboard needs access to the component and configuration files that are passed to the daprd services. It also needs to know about all daprd services running inside the docker compose network - it retrieves this by parsing the docker-compose.yml file. To achieve this, you define docker bind mounts to these files/directories and pass them as command args to the dashboard process. In addition, you must specify the command arg --docker-compose=true to tell the dashboard to use the docker compose platform type.

version: '3.8'
services:
      
  my-application-webhost:
    build:
      context: .
      dockerfile: src/My.Application.WebHost/Dockerfile   
    ports:
      - "5002:80"
    networks:
      - my-network

  my-application-webhost-dapr:
    image: "daprio/daprd:1.8.0"
    command: [ "./daprd",
               "-app-id", "MyApplication.DaprSidecar",
               "-app-port", "80",
               "-placement-host-address", "dapr-placement:50000",
               "-components-path", "/components",
               "-config", "/configuration/config.yaml" ]
    volumes:
      - "./dockercompose/dapr/components/:/components"
      - "./dockercompose/dapr/config/:/configuration"
    depends_on:
      - my-application-webhost
      - dapr-placement
    network_mode: "service:my-application-webhost" 
        
  dapr-placement:
    image: "daprio/dapr:1.8.0"
    command: [ "./placement", "-port", "50000" ]
    ports:
      - "50000:50000"
    networks:
      - my-network

  dapr-dashboard:
    image: "daprio/dashboard:latest"
    command: [ "--docker-compose=true", 
      "--components-path=/home/nonroot/components", 
      "--config-path=/home/nonroot/configuration", 
      "--docker-compose-path=/home/nonroot/docker-compose.yml" ]
    ports:
      - "8080:8080"
    volumes:
      - "./dockercompose/dapr/components/:/home/nonroot/components"
      - "./dockercompose/dapr/config/:/home/nonroot/configuration"
      - ./docker-compose.yml:/home/nonroot/docker-compose.yml
    networks:
      - my-network
      
networks:
  my-network:

The above example assumes the following file system layout

dockercompose
  dapr
    components
      (component yaml files e.g. pubsub.yaml, statestore.yaml etc.)
    config
      config.yaml
src
  My.Application.WebHost
    Dockerfile
docker-compose.yml

If you have configured your Dapr sidecars to require API token authentication, you can set the environment variable DAPR_API_TOKEN: {your token} on the Dapr Dashboard service declaration as follows

  dapr-dashboard:
    image: "daprio/dashboard:latest"
    environment:
      DAPR_API_TOKEN:  {your token}
    ...

For more information about running Dapr with docker compose see Run using Docker-Compose

Contributing

Anyone is free to open an issue, a feature request, or a pull request.

To get started in contributing, check out the development documentation.

dashboard's People

Contributors

aaroncrawfis avatar amanbha avatar andrew-hillier avatar artursouza avatar berndverst avatar dependabot[bot] avatar dmitsh avatar fabrizziocht avatar greenie-msft avatar hueifeng avatar l0ll098 avatar lmwf avatar mukundansundar avatar pravinpushkar avatar rogerogers avatar rtmorgan avatar shalabhms avatar shubham1172 avatar tcnghia avatar timcallaghan avatar toneill818 avatar wcs1only avatar willdavsmith avatar yaron2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dashboard's Issues

Show only Applications in the main page

Currently applications are shown in the main page, but there are other information like pid, ports are also shown. This issue is to just show the running applications in the main page.
Once the user selected application, then show other information in tabs - Summary.

Dashboard should detect and highlight communication issues with components like the statestore

I recently spent hours trying to figure out the reason why my Dapr deployment was not functioning. The issue ended being simply that the statestore and pub-sub components were totally not functioning due to misconfiguration. I had to dig through the logs on the dapr sidecart's to get this information - it would have been incredibly valuable if the dashboard detected the issue with the components and highlighted that.

Show detailed view for Dapr Components

Currently, the Dapr Components tab shows the component information in a tabular format. This should be changed to allow the user to select a component and view more details, such as summary, metadata, and configuration (yaml file).

Running with Docker-compose

I've built an image (dapr_dashboard_cp) using the instructions in the Readme and run a container image for the dashboard, but I am unable to see any components showing up with my docker-compose configuration. Is there something else that needs to be set?

I can see calls being made to http://localhost:8080/api/instances and http://localhost:8080/api/controlplanestatus but the payload only contains an empty JSON array.

  #####  API & DAPR Sidecar #####
  productsapi:
    build:
      context: ./src/ContosoCrafts.ProductsApi
      dockerfile: Dockerfile
    volumes:
      - ~/.aspnet/https:/https:ro
    ports:
      - "90:80"
      - "91:443"
    depends_on:
      - mongodb

  productsapi_dapr:
    image: "daprio/daprd:0.8.0"
    command:
      [
        "./daprd",
        "-app-id",
        "productsapi",
        "-app-port",
        "80",
        "-placement-address",
        "placement:6000",
        "-components-path",
        "/components",
      ]
    volumes:
      - "./components/:/components"
    depends_on:
      - website
    network_mode: "service:productsapi"

dashboard:
    image: dapr_dashboard_cp:latest
    container_name: dashboard
    ports:
      - "8080:8080"

 placement:
    image: "daprio/placement:0.8.0"
    container_name: "placement"
    command: ["./placement", "-port", "6000"]
    ports:
      - "6000:6000"

redis:
    image: "redis:6.0.5-alpine"
    ports:
      - "6379:6379"

networks:
  default:
    name: dapr_network
    driver: bridge

Provide namespace filter to show selected namespace apps/components

when my application is deployed to any other namespace than "default" and the dapr components are also deployed to this namespace it will not show up in the Dapr dashboard.

would be nice to either filter/select the namespace or scan through all namespaces and list all of them together with what namespace they are in.

Improve log page for K8s

The logs page freezes on a refresh: Add an option to configure auto-refresh interval (+off option).
The logs are oldest at the top, but I do not want to continue to always scroll. So, default should be "Newest First".
The view box size for logs details is too small and would be nice if this was resizable.

image

Parent: #93

Dapr dashboard version shows up as edge

On running
~/.dapr/bin/dashboard --version

The output is edge and not the actual dashboard version.

RELEASE NOTE: FIX Display dashboard version correctly in command line interface

build.sh fails to build on macOS

Issue description:

build.sh has hardcoded GOOS variable to linux, hence it fails on macOS.

Screen Shot 2020-06-11 at 9 55 30 AM

Changing export GOOS=linux to export GOOS=darwin in build.sh works fine.

Possible solutions:

  • Update the documentation to call this out
  • Set GOOS value based on the target OS in build.sh

Show Dapr Configurations in the Dashboard

Dapr can have multiple configurations. In the Dashboard, user should be able to see the different configurations.

Need to add, "Configurations" just like "Components" , in the left pane.

Once user selects "Configurations", all the Dapr configurations should be listed as follows with properties:

For example, below shows default and appconfig - two configurations in the Dapr and columns are the properties.

NAME TRACING-ENABLED MTLS-ENABLED MTLS-WORKLOAD-TTL MTLS-CLOCK-SKEW AGE CREATED
default false true 24h 15m 5d 2020-06-10 11:20.12
appconfig false false 26d 2020-05-20 01:50.08

Strongly tied to kubernetes?

From the README

Dapr Dashboard is a web-based UI for Dapr, allowing users to see information, view logs and more for the Dapr applications, components, and configurations running either locally or in a Kubernetes cluster.

Does this mean the dashboard is concerned that its running either locally or in kubernetes cluster as the only two options, and it won't work hosted anywhere else? (docker compose / swarm, service fabric mesh etc) - I'd be surprised if that were the case but the current statement makes me want to check

Feature request: Topology map

Hi,
this feature request came to my mind after yesterday's community call.

I think it would be helpful to include a graphical topology map that somehow visualizes the communication as well as dependencies between Dapr-enabled microservices. Maybe also some basic telemetry data.

I think this could be really helpful in bigger applications/environments and helps to gain insights and dependencies.

Greets Nico

Please, consider adding support for ARM architecture

Hello,

I am trying to install dapr 0.10.0 on k3s running on a Raspberry Pi. dapr itself works fine, but dashboard fails - its Helm chart points to a non-arm container. As a result, pod fails with "exec format error".

Also, in 0.10.0, running dapr init on a Raspberry Pi fails with "error downloading dashboard binary: version not found from url: https://github.com/dapr/dashboard/releases/download/v0.2.0/dashboard_linux_arm.tar.gz".

There is a workaround though - I did try to compile dashboard on a Pi and it "mostly" worked. Using 0.2.0 sources, I followed build.sh steps:

  • npm i fails consistently, but I think it is my Pi. On Windows it works fine
  • build.sh does not have arm as a platform in platforms. For my local build, I adjusted build.sh as platforms=("linux_arm")
  • copied to Pi dist folder from Angular build I did on Windows
  • ./build.sh --generate-artifacts --release-version 0.2.0 works as expected. It also generates dashboard_linux_arm.tar.gz
  • running ./dashboard locally works (curl -v http://localhost:8080 returns start page of the dashboard).

What's not working for me is Docker container (probably I am doing something wrong):

  • docker build -t airiam/dapr-dashboard-unofficial-arm:0.2.0 . works
  • executing docker run -it --rm -p 8080:8080 --name dapr-dashboard airiam/dapr-dashboard-unofficial-arm:0.2.0 locally starts the container and I can see "Dapr Dashboard running on http://localhost:8080". Calling the URL (i.e. curl -v http://localhost:8080) fails with "connection reset by peer". Internet said that it might be caused by wrong port mapping, but Docker command looks correct to me.

I am not sure if adding "linux_arm" to build.sh is enough given that I can't confirm that everything works locally on a Pi. Can it be Go version? On the Pi I have "go version go1.13.5 linux/arm". Thank you!

Display full cmd and registered actors

  • summary/command is truncated, looks like showing only 20 char? results in commands like this
    ./bin/Debug/netco...

  • would it be possible to list the type of actors that this app registered (ie has available), in addition to the count of actors that have actually been activated?

Parent: #93

RELEASE NOTE: FIXED display of full cmd and registered actors

Multiple kubeconfigs in KUBECONFIG environment variable

Hello,

I'm using dapr running on minikube.
But, when i try to start the dashboard running the command "dapr dashboard -k", i received the message:

"Failed to initialize kubernetes client: multiple kubeconfigs in KUBECONFIG environment variable"

I do have multiple kubeconfig in my KUBECONFIG variable, and i manage it by kubectx.

Is there any way i can select my context, or which kubeconfig i'm referring when starting the dashboard?

Best regards

Show Dapr system services (control plane) health status

Add the ability/view to show the Dapr system services health.

Create a different node in the left pane "Control Plane" and once user selects the view,

user should be able to all the control plane services and their health:

NAME NAMESPACE HEALTHY STATUS VERSION AGE CREATED
dapr-operator dapr-system True Running 0.8.0 5d 2020-06-10 11:20.12
dapr-placement dapr-system True Running 0.8.0 5d 2020-06-10 11:20.12
dapr-sentry dapr-system True Running 0.8.0 5d 2020-06-10 11:20.12
dapr-sidecar-injector dapr-system True Running 0.8.0 5d 2020-06-10 11:20.12

Show detailed view for Dapr Configurations

Currently, the Dapr Configurations tab shows the configuration information in a tabular format. This should be changed to allow the user to select a configuration and view more details, such as summary, metadata, and configuration (yaml file).

Add action to filter logs

In the application detail view 'logs' tab, a user should be able to filter logs based on severity or any other keyword. This should update the list of logs displayed to the user and highlight the search term. By default, all logs should be shown.

User should be able to view logs.
User should be able to search in the logs.
User should be able to filter the log level in the view.
User should be able to select application logs.
User should be able to select the Daprd logs.
User should be able to go to next page ( pagination support ) in the logs view.

Numerous improvements and issues on the Dashboard

Generally the dashboard should be hosting platform agnostics. Currently it looks like it is closely tied to K8s platform.

K8s mode

  1. dapr-dashboard should be in the control plane list. #102
  2. Configuration tab
  • Summary should include metric setting. #103
  • Configurations should not show K8s config and the view box size for config details is too small and would be nice if this was resizable #105
  • Generally note that for config the Dapr CLI for config will change since it only shows a few settings from the control plane. This will need to be more general
  1. Components tab
  • Configurations should not show K8s config and the view box size for config details is too small and would be nice if this was resizable #106
  1. App Tab
  • Should be able to see list of config and components used by an application
    artursouza: Not possible without tracing data since only the App's code can determine if an application is using a given component.
  • Selector and label are K8s concepts. Are these needed here on the summary and why?
    artursouza: The DaprApplications list shows columns specific to the running platform. In standalone mode, that column (and others) are not shown at all. No need to change it.
  • Configurations should not show K8s config and the view the view box size for config details is too small and would be nice if this was resizable #107
  • The logs page freezes on a refresh. The logs are oldest at the top, but I do not want to continue to always scroll. The view box size for logs details is too small and would be nice if this was resizable. #104
  • Metadata is useful, but again this is K8s specific. Do we need a mode on the dashboard that shows what hosting platform this is running on? K8s, verses Self host verses IoT edge etc
    artursouza: The dashboard renders differently in K8s mode vs standalone mode already. I think it is better to have this dynamic rendering over a static template. I don't think anything should be changed for this.
  1. Control plane tab needs to show dapr in HA mode, either in the number of replicas or by saying HA mode somewhere. #108
  2. When running locally I can press this dustbin icon and it stops my app without any warning. What is the actions column here supposed to do? Create, delete apps? Why only stop? #109

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.