- JDK8 ( SkyWalking collector and SkyWalking WebUI )
- Elasticsearch 5.x, cluster mode or not
- Zookeeper 3.4.10
- OS time(include time zone) of Applications under monitoring, collectors, UIs and your local machine are all correct and same.
## Download released version
- Go to [released page](http://skywalking.apache.org/downloads/)
## Deploy Elasticsearch server
## Deploy Zookeeper
Zookeeper is used for collector coordination. Only required if you need more than one collector instances.
Add Zookeeper cluster info in each collector `application.yml`
```yml
cluster:
# The Zookeeper cluster for collector cluster management.
zookeeper:
# multiple instances should be separated by comma.
hostPort:localhost:2181
sessionTimeout:100000
```
## Deploy ElasticSearch server
ElasticSearch is using for storage all traces, metrics and alarms.
- Modify `elasticsearch.yml`
- Set `cluster.name: CollectorDBCluster`
- Set `node.name: anyname`, this name can be any, it based on Elasticsearch.
- Add the following configurations to
- Add the following configurations
```
# The ip used for listening
network.host: 0.0.0.0
thread_pool.bulk.queue_size: 1000
```
See ElasticSearch Official documents to understand how to deploy cluster(Recommend).
- Start Elasticsearch
### Deploy collector servers
1. Run `tar -xvf skywalking-dist.tar.gz`
2. Config collector in cluster mode.
### Set collector
There are five types of connection for SkyWalking cluster, related to collector settings.
1. Agent to collectors by using HTTP, named as `naming`.
1. Agent to collectors by using gRPC, named as `agent_gRPC`.
1. Collector to collector by using gRPC, named as `remote`.
1. UI to collector by using HTTP, named as `ui`. Don't need to change in most cases.
1. Optional connection: Agent to collector by using HTTP, named as `agent_jetty`.
Cluster mode depends on Zookeeper register and application discovery capabilities. So, you just need to adjust the IP config items in `config/application.yml`. Change IP and port configs of naming, remote, agent_gRPC, agent_jetty and ui,
replace them to the real ip or hostname which you want to use for cluster.
The following segment of `application.yml` shows you the detail of each settings.
-`config/application.yml`
```
...
...
@@ -37,20 +58,26 @@ cluster:
sessionTimeout: 100000
naming:
# Host and port used for agent config
jetty:
host: localhost
jetty:
# OS real network IP(binding required), for agent to find collector cluster. agent --(HTTP)--> collector
host: localhost
port: 10800
contextPath: /
remote:
gRPC:
host: localhost
# OS real network IP(binding required), for collector node to communicate with each other in cluster. collectorN --(gRPC) --> collectorM
host: localhost
port: 11800
agent_gRPC:
gRPC:
# OS real network IP(binding required), for agent to uplink data(trace/metrics) to collector. agent--(gRPC)--> collector
host: localhost
port: 11800
agent_jetty:
jetty:
# OS real network IP(binding required), for agent to uplink data(trace/metrics) to collector through HTTP. agent--(HTTP)--> collector
# SkyWalking native Java/.Net/node.js agents don't use this.
# Open this for other implementor.
host: localhost
port: 12800
contextPath: /
...
...
@@ -65,6 +92,7 @@ analysis_segment_parser:
bufferSegmentMaxFileSize: 500M
ui:
jetty:
# OS real network IP(binding required), for UI to query from collector.
host: localhost
port: 12800
contextPath: /
...
...
@@ -77,7 +105,7 @@ storage:
indexShardsNumber: 2
indexReplicasNumber: 0
highPerformanceMode: true
# Set a timeout on metric data. After the timeout has expired, the metric data will automatically be deleted.
# Set an expired for metric/trace data. After the timeout has expired, the metric/trace data will be deleted automatically.
traceDataTTL: 90 # Unit is minute
minuteMetricDataTTL: 45 # Unit is minute
hourMetricDataTTL: 36 # Unit is hour
...
...
@@ -85,8 +113,9 @@ storage:
monthMetricDataTTL: 18 # Unit is month
configuration:
default:
# namespace: xxxxx
# alarm threshold
# namespace: xxxxx
# alarm threshold
applicationApdexThreshold: 2000
serviceErrorRateThreshold: 10.00
serviceAverageResponseTimeThreshold: 2000
...
...
@@ -94,23 +123,25 @@ configuration:
instanceAverageResponseTimeThreshold: 2000
applicationErrorRateThreshold: 10.00
applicationAverageResponseTimeThreshold: 2000
# thermodynamic
# thermodynamic
thermodynamicResponseTimeStep: 50
thermodynamicCountOfResponseTimeSteps: 40
```
3. Run `bin/collectorService.sh`
### Set UI
### Deploy UI servers
1. Run `tar -xvf skywalking-dist.tar.gz`
2. Config UI in cluster mode.
The config items of UI is saved in `bin/webappService.sh` (`bin\webappService.bat` for windows).
The config items of UI is saved in `bin/webappService.sh` (`bin\webappService.bat` for windows).
Change `collector.ribbon.listOfServers` by following the description, with matching `naming.jetty`.
| `server.port` | Port to listen on. Default: 8080 |
| `collector.ribbon.listOfServers` | Address to access collector naming service.(Consist with `naming.jetty` in `config/application.yml`). Multiple collector addresses are split by ',' |
3. Run `bin/webappService.sh`
### Start up collector node
1. Run `bin/startup.sh` to start collector and UI together.
2. (Run if don't use 1 to start up)Run `bin/collectorService.sh` when you only want to start up collector.
3. (Run if don't use 1 to start up)Run `bin/webappService.sh` when you only want to start up UI.
@@ -3,10 +3,12 @@ Default standalone mode collector means don't support cluster. It uses H2 as sto
If you are using SkyWalking in a low throughputs monitoring scenario, and don't want to deploy cluster, at least, switch the storage implementation from H2 to Elasticsearch.
**H2 storage implementation is not provided in 5.0.0-alpha, so you must deploy ElasticSearch before try to start backend**
**H2 storage implementation is not provided in 5.0.0 for now, so you must deploy ElasticSearch before try to start backend. Welcome to contribute.**
## Requirements
* JDK 8+
- JDK 6+(instruments application can run in jdk6)
- JDK8 ( SkyWalking collector and SkyWalking WebUI )
@@ -14,12 +16,13 @@ If you are using SkyWalking in a low throughputs monitoring scenario, and don't
## Quick start
You can simply tar/unzip and startup if ports 8080, 10800, 11800, 12800 are free.
- Deploy ElasticSearch.
-`tar -xvf skywalking-dist.tar.gz` in Linux, or unzip in windows.
- run `bin/startup.sh` or `bin/startup.bat`
You should keep the `config/application.yml` as default.
- NOTICE: **In 5.0.0-alpha, startup.sh will start two processes, collector and UI, and UI uses 127.0.0.1:10800 as default.**
- NOTICE: **In 5.0.0, startup.sh will start two processes, collector and UI, and UI uses 127.0.0.1:10800 as default.**
## Use Elastic Search instead of H2 as storage layer implementation
Even in standalone mode, collector can run with Elastic Search as storage. If so, uncomment the `storage` section in `application.yml`, set the config right. The default configs fit for collector and Elasticsearch both running in same machine, and not cluster.