Git Product home page Git Product logo

skywalking-ui's Introduction

Apache SkyWalking UI

This UI has been replaced by SkyWalking RocketBot UI since SkyWalking 6.1 release.

Sky Walking logo

The UI for Apache SkyWalking.

Build Status Join the chat

Contributing

See CONTRIBUTING.

Development

The app was built with dva framework.

Getting codes

Fork, then clone the incubator-skywalking-ui repo and change directory into it.

git clone https://github.com/apache/incubator-skywalking-ui.git
cd incubator-skywalking-ui

Install dependencies via npm:

npm install

Running the application

Mock mode

This mode is suitable for developing locally. Use username:admin, password:888888 to login system.

npm start

No-Mock mode

This mode is suitable for e2e test with backend collector. No webapp proxy required.

npm run start:no-proxy

The default collector query address is http://localhost:12800. You can change this address by editing .webpack.js file. From 5.0.0-beta2, login auth is supported, but without webapp proxy, there is no one to take charge of authentication, so we need specific processes to login in this mode.

  1. Start up in Mock mode.
  2. Do login by username:admin, password:888888. (Now, browser saved authentication in local storage)
  3. Stop and restart in No-Mock mode.
  4. You could access without username/password and webapp proxy.

Commands

Command Description
npm start Starts development server with hot reloading and mock.
npm run start:no-proxy Starts development server to access collector
npm test Runs all the tests
npm run lint Lint the project (eslint, stylelint)
npm run build Runs production build. Outputs files to /dist.

Build

Running build will output all the static files to the ./dist folder:

npm install
npm run build

skywalking-ui's People

Contributors

ajanthan avatar ascrutae avatar bai-yang avatar clevertension avatar cloudgc avatar hanahmily avatar jjlu521016 avatar leizhiyuan avatar liuhaoyang avatar peng-yongsheng avatar tinyallen avatar wendal avatar willemjiang avatar withlin avatar wu-sheng avatar wynn5a avatar zhangkewei avatar zhaoyuguang avatar zuohl 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  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

skywalking-ui's Issues

Don't refresh Trace page when auto refresh is on

Trace is too many, and people are not usually looking for the latest one, except for preview and demo. And if refresh the list every time, people will lose their trace timeline graph even they already open it.

And of source, you could show a tip at the top of the page to tell users that, this page will not refresh even you open the auto refresh.

alarm/loadAlarmList

TL;DR;

No result.

Input

{  
   "variables":{  
      "duration":{  
         "start":"2017-02",
         "end":"2018-02",
         "step":"MONTH"
      },
      "alarmType":"APPLICATION",
      "paging":{  
         "pageNum":1,
         "pageSize":10,
         "needTotal":true
      }
   },
   "query":"
  query Alarm($keyword: String, $alarmType: AlarmType, $duration:Duration!, $paging: Pagination!){
    loadAlarmList(keyword: $keyword, alarmType: $alarmType, duration: $duration, paging: $paging) {
      items {
        key: id
        title
        content
        startTime
        causeType
      }
      total
    }
  }
"
}

Output

{"data":{"loadAlarmList":{"items":[],"total":0}}}

server/getServerTPSTrend

TL;DR;

No result

Input

{
    "variables": {
        "duration": {
            "start": "2017-08-03", 
            "end": "2017-08-05", 
            "step": "DAY"
        }, 
        "serverId": "2"
    }, 
    "query": "
  query Application($serverId: ID!, $duration: Duration!) {
    getServerTPSTrend(serverId: $serverId, duration: $duration) {
      trendList
    }
  }
"
}

Output

{"data":{"getServerTPSTrend":{"trendList":[0,0,0]}}}

server/getServerResponseTimeTrend

Input

{
    "variables": {
        "duration": {
            "start": "2017-08-03", 
            "end": "2017-08-05", 
            "step": "DAY"
        }, 
        "serverId": "2"
    }, 
    "query": "
  query Application($serverId: ID!, $duration: Duration!) {
    getServerResponseTimeTrend(serverId: $serverId, duration: $duration) {
      trendList
    }
  }
"
}

Output

{"data":{"getServerResponseTimeTrend":{"trendList":[0,4624,0]}}}

unable to build the project under feature/5.0.0

two errors occurs

  1. Dashboard.java:[31,2] incompatible types: graphql.schema.GraphQLSchema cannot be converted to java.lang.annotation.Annotation
  2. /CollectorUIServerGetterTimer.java:[70,38] cannot find symbol symbol: method getServers() location: variable uiConfig of type org.apache.skywalking.apm.ui.config.UIConfig
    for 2nd error, the getter is generated by lombok, just wonder why maven report it is not found. So as the IDE...

trace/queryBasicTraces

TL;DR;

Application "dubbox-consumer" got error messages on fetching trace data.

Input

{  
   "variables":{  
      "condition":{  
         "applicationId":[  
            "-1"
         ],
         "queryDuration":{  
            "start":"2017-02",
            "end":"2018-02",
            "step":"MONTH"
         },
         "paging":{  
            "pageNum":1,
            "pageSize":10,
            "needTotal":true
         }
      }
   },
   "query":"
  query BasicTraces($condition: TraceQueryCondition) {
    queryBasicTraces(condition: $condition) {
      traces {
        operationName
        duration
        start
        isError
        traceId
  }
      total
    }
  }
"
}

Output

{"errors":[{"message":"Invalid value '[1]' for Int"}]}

时间显示不正确

界面显示时间比实际早了将近8小时。应该是用docker启动的后端服务的原因,docker没有主动设置过时区。

service/getServiceTPSTrend

TL;DR;

Testing in a real environment.

Input

{
    "variables": {
        "duration": {
            "start": "2017-08-04 2248", 
            "end": "2017-08-04 2250", 
            "step": "MINUTE"
        }, 
        "serviceId": "-1"
    }, 
    "query": "
  query Service($serviceId: ID!, $duration: Duration!) {
    getServiceTPSTrend(serviceId: $serviceId, duration: $duration) {
      trendList
    }
   
  }
"
}

Output

        "getServiceTPSTrend": {
            "trendList": [
                0, 
                0, 
                0
            ]
        },

service/getServiceTopology

TL;DR;

No data

Input

{
    "variables": {
        "duration": {
            "start": "2017-08-04 2248", 
            "end": "2017-08-04 2250", 
            "step": "MINUTE"
        }, 
        "serviceId": "-1"
    }, 
    "query": "
  query Service($serviceId: ID!, $duration: Duration!) {
    getServiceTopology(serviceId: $serviceId, duration: $duration) {
      nodes {
        id
        name
        type
        ... on ApplicationNode {
          sla
          callsPerSec
          responseTimePerSec
          apdex
          isAlarm
          numOfServer
          numOfServerAlarm
          numOfServiceAlarm
        }
      }
      calls {
        source
        target
        isAlert
        callType
        callsPerSec
        responseTimePerSec
      }
    }
  }
"
}

Output

"getServiceTopology": {
            "nodes": [ ], 
            "calls": [ ]
        }

service/getServiceSLATrend

Input

{
    "variables": {
        "duration": {
            "start": "2017-08-04 2248", 
            "end": "2017-08-04 2250", 
            "step": "MINUTE"
        }, 
        "serviceId": "-1"
    }, 
    "query": "
  query Service($serviceId: ID!, $duration: Duration!) {
    getServiceSLATrend(serviceId: $serviceId, duration: $duration) {
      trendList
    }
  }
"
}

Output

 "getServiceSLATrend": {
            "trendList": [
                10000, 
                10000, 
                10000
            ]
        }, 

overview/getAlarmTrend

Exception while fetching data (/getAlarmTrend) : Duration data error, step: MONTH, start: 20170200000000, end: 20180200000000

server/searchServer

TL;DR;

No result

Input

{  
   "variables":{  
      "duration":{  
         "start":"2017-02",
         "end":"2018-02",
         "step":"MONTH"
      },
      "keyword":"pengys"
   },
   "query":"
                  query SearchServer($keyword: String!, $duration: Duration!) {
                    searchServer(keyword: $keyword, duration: $duration) {
                      key: id
                      label: name
                      host
                      pid
                      ipv4
                    }
                  }
                "
}

Output

{  
   "data":{  
      "searchServer":[  

      ]
   }
}

service/searchService

TL;DR;

No result.

Input

{  
   "variables":{  
      "keyword":"org.skywaking.apm.testcase.dubbo.services.GreetService"
   },
   "query":"
                  query SearchService($keyword: String!) {
                    searchService(keyword: $keyword, topN: 10) {
                      key: id
                      label: name
                    }
                  }
                "
}

Output

{"data":{"searchService":[]}}

Add total distributed calls in Overview page

For improving the end user experience, current overview is too static. I recommend to add a new metric, also a new backend service.

The metric is Total distributed calls, every distributed call or rpc will be included. So the value will be every big, Recommend show as xxx K, xxx M, xxx B and xxx T to represent kilo, million, billion and trillion times calls.

server/getCPUTrend

TL;DR;

No result

Input

{
    "variables": {
        "duration": {
            "start": "2017-08-03", 
            "end": "2017-08-05", 
            "step": "DAY"
        }, 
        "serverId": "2"
    }, 
    "query": "
  query Application($serverId: ID!, $duration: Duration!) {
    getCPUTrend(serverId: $serverId, duration: $duration) {
      cost
    }
  }
"
}

Output

{"data":{"getCPUTrend":{"cost":[0,0,0]}}}

server/getGCTrend

TL;DR;

No result

Input

{
    "variables": {
        "duration": {
            "start": "2017-08-03", 
            "end": "2017-08-05", 
            "step": "DAY"
        }, 
        "serverId": "2"
    }, 
    "query": "
  query Application($serverId: ID!, $duration: Duration!) {
    getGCTrend(serverId: $serverId, duration: $duration) {
      youngGC
      oldGC
    }
  }
"
}

Output

{"data":{"getGCTrend":{"youngGC":[0,0,0],"oldGC":[0,0,0]}}}

UI not functioning

Hi , does 5.0-2018-preview UI merged all code from 3.2.6 yet? Seems many code from 3.2.6 is not moved to 5.0-2018-preview

trace界面显示建议

trace界面列表建议只显示trace的第1级,并且按照时间倒序排序。目前的列表展示的内容比较混乱。

Feature of dashboard

Topology graph of application

Top N

  1. The alert detail
  2. The slowest service
  3. The thoughtput of application

Sum number

  1. The running instances of application
  2. The services and service alerts

Line graph

  1. The trend of the number of alert

External resource

  1. The list of the number of database instances

service/getServiceResponseTimeTrend

TL;DR;

Response time is zero.

Input

{
    "variables": {
        "duration": {
            "start": "2017-08-04 2248", 
            "end": "2017-08-04 2250", 
            "step": "MINUTE"
        }, 
        "serviceId": "-1"
    }, 
    "query": "
  query Service($serviceId: ID!, $duration: Duration!) {
    getServiceResponseTimeTrend(serviceId: $serviceId, duration: $duration) {
      trendList
    }
  }
"
}

Output

"getServiceResponseTimeTrend": {
            "trendList": [
                0, 
                0, 
                0
            ]
        }, 

Can't see any traces in skywalking UI

Apache :apache-tomcat-9.0.5
I have made changes in setenv.sh under apache-tomcat
My setenv.sh also contains some arguments that I need to pass on to my application.
I have rebooted my application by doing ./catalina run.
My application is running on my local at 9999. But I see nothing under the Skywalking-ui

Provide documents

A document about how to set the config, and query data from sky-walking APM.

Optimize topology re-render when auto refresh open.

In current version, 5.0.0 alpha, if user open Topology or application dependency graph, and open refresh at the same time, the graph will re-render again and again. The node positions are changing in every time.

This is not a good experience for end user

application/getApplicationTopology

{  
         "message":"Cannot return null for non-nullable type: 'Float' within parent 'ApplicationNode' (/getApplicationTopology/nodes[0]/sla)"
      },
      {  
         "message":"Cannot return null for non-nullable type: 'Float' within parent 'ApplicationNode' (/getApplicationTopology/nodes[0]/apdex)"
      },
      {  
         "message":"Cannot return null for non-nullable type: 'Boolean' within parent 'ApplicationNode' (/getApplicationTopology/nodes[0]/isAlarm)"
      },
      {  
         "message":"Cannot return null for non-nullable type: 'Int' within parent 'ApplicationNode' (/getApplicationTopology/nodes[0]/numOfServer)"
      },
      {  
         "message":"Cannot return null for non-nullable type: 'Int' within parent 'ApplicationNode' (/getApplicationTopology/nodes[0]/numOfServerAlarm)"
      },
      {  
         "message":"Cannot return null for non-nullable type: 'Int' within parent 'ApplicationNode' (/getApplicationTopology/nodes[0]/numOfServiceAlarm)"
      },
      {  
         "message":"Cannot return null for non-nullable type: 'Float' within parent 'ApplicationNode' (/getApplicationTopology/nodes[1]/sla)"
      },

overview/getClusterTopology

TL;DR;

No data

Input

{  
   "variables":{  
      "duration":{  
         "start":"2017-02",
         "end":"2018-02",
         "step":"MONTH"
      }
   },
   "query":"
    query Topology($duration: Duration!) {
      getClusterTopology(duration: $duration) {
        nodes {
          id
          name
          type
          ... on ApplicationNode {
            sla
            callsPerSec
            responseTimePerSec
            apdex
            isAlarm
            numOfServer
            numOfServerAlarm
            numOfServiceAlarm
          }
        }
        calls {
          source
          target
          isAlert
          callType
          callsPerSec
          responseTimePerSec
        }
      }
    }
  "
}

Output

{  
   "data":{  
      "getClusterTopology":{  
         "nodes":[  

         ],
         "calls":[  

         ]
      }
   }
}

server/getMemoryTrend

TL;DR;

No result

Input

{
    "variables": {
        "duration": {
            "start": "2017-08-03", 
            "end": "2017-08-05", 
            "step": "DAY"
        }, 
        "serverId": "2"
    }, 
    "query": "
  query Application($serverId: ID!, $duration: Duration!) {
    getMemoryTrend(serverId: $serverId, duration: $duration) {
      heap
      maxHeap
      noheap
      maxNoheap
    }
  }
"
}

Output

{"data":{"getMemoryTrend":{"heap":[0,0,0],"maxHeap":[0,0,0],"noheap":[0,0,0],"maxNoheap":[0,0,0]}}}

Parent POM Missing

Hi, I noticed that the pom.xml was removed recently. Is the build only supported using Travis now?
Thanks, Steve

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.