diff --git a/docker/Makefile b/docker/Makefile
index 30f159ce03..0d168156d5 100644
--- a/docker/Makefile
+++ b/docker/Makefile
@@ -14,9 +14,16 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-snapshot:
- cd snapshot; \
+oap:
+ cd oap; \
cp ../../dist/apache-skywalking-apm-incubating.tar.gz ./ ; \
docker build -t skywalking/oap:latest .
-.PHONY: snapshot
\ No newline at end of file
+ui:
+ cd ui; \
+ cp ../../dist/apache-skywalking-apm-incubating.tar.gz ./ ; \
+ docker build -t skywalking/ui:latest .
+
+build: oap ui
+
+.PHONY: oap ui
\ No newline at end of file
diff --git a/docker/README.md b/docker/README.md
index 76cfa95892..15d4a2c75b 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -1,12 +1,12 @@
-# Build snapshot image
+# Build all images
```shell
-make snapshot
+make build
```
-# Run oap by docker-compose
+# Run skywalking by docker-compose
```shell
-docker-compose -f stack.yml up
+docker-compose up
```
\ No newline at end of file
diff --git a/docker/config/application.yml b/docker/config/application.yml
new file mode 100644
index 0000000000..367b978558
--- /dev/null
+++ b/docker/config/application.yml
@@ -0,0 +1,82 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+cluster:
+ standalone:
+# zookeeper:
+# hostPort: localhost:2181
+# # Retry Policy
+# baseSleepTimeMs: 1000 # initial amount of time to wait between retries
+# maxRetries: 3 # max number of times to retry
+# kubernetes:
+# watchTimeoutSeconds: 60
+# namespace: default
+# labelSelector: app=collector,release=skywalking
+# uidEnvName: SKYWALKING_COLLECTOR_UID
+core:
+ default:
+ restHost: 0.0.0.0
+ restPort: 12800
+ restContextPath: /
+ gRPCHost: 0.0.0.0
+ gRPCPort: 11800
+ downsampling:
+ - Hour
+ - Day
+ - Month
+ # Set a timeout on metric data. After the timeout has expired, the metric data will automatically be deleted.
+ recordDataTTL: 90 # Unit is minute
+ minuteMetricsDataTTL: 90 # Unit is minute
+ hourMetricsDataTTL: 36 # Unit is hour
+ dayMetricsDataTTL: 45 # Unit is day
+ monthMetricsDataTTL: 18 # Unit is month
+storage:
+ elasticsearch:
+ clusterNodes: elasticsearch:9200
+ indexShardsNumber: 2
+ indexReplicasNumber: 0
+ # Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
+ bulkActions: 2000 # Execute the bulk every 2000 requests
+ bulkSize: 20 # flush the bulk every 20mb
+ flushInterval: 10 # flush the bulk every 10 seconds whatever the number of requests
+ concurrentRequests: 2 # the number of concurrent requests
+# h2:
+# driver: org.h2.jdbcx.JdbcDataSource
+# url: jdbc:h2:mem:skywalking-oap-db
+# user: sa
+receiver-register:
+ default:
+receiver-trace:
+ default:
+ bufferPath: ../trace-buffer/ # Path to trace buffer files, suggest to use absolute path
+ bufferOffsetMaxFileSize: 100 # Unit is MB
+ bufferDataMaxFileSize: 500 # Unit is MB
+ bufferFileCleanWhenRestart: false
+receiver-jvm:
+ default:
+service-mesh:
+ default:
+ bufferPath: ../mesh-buffer/ # Path to trace buffer files, suggest to use absolute path
+ bufferOffsetMaxFileSize: 100 # Unit is MB
+ bufferDataMaxFileSize: 500 # Unit is MB
+ bufferFileCleanWhenRestart: false
+istio-telemetry:
+ default:
+query:
+ graphql:
+ path: /graphql
+alarm:
+ default:
diff --git a/docker/snapshot/log4j2.xml b/docker/config/log4j2.xml
similarity index 100%
rename from docker/snapshot/log4j2.xml
rename to docker/config/log4j2.xml
diff --git a/docker/stack.yml b/docker/docker-compose.yml
similarity index 79%
rename from docker/stack.yml
rename to docker/docker-compose.yml
index 63c25f7c34..927cd4c26e 100644
--- a/docker/stack.yml
+++ b/docker/docker-compose.yml
@@ -35,4 +35,18 @@ services:
restart: always
ports:
- 11800:11800
- - 12800:12800
\ No newline at end of file
+ - 12800:12800
+ volumes:
+ - ./config:/apache-skywalking-apm-incubating/config:ro
+ ui:
+ image: skywalking/ui
+ container_name: ui
+ depends_on:
+ - oap
+ links:
+ - oap
+ restart: always
+ ports:
+ - 8080:8080
+ environment:
+ collector.ribbon.listOfServers: oap:12800
\ No newline at end of file
diff --git a/docker/snapshot/Dockerfile b/docker/oap/Dockerfile
similarity index 85%
rename from docker/snapshot/Dockerfile
rename to docker/oap/Dockerfile
index 59cbe6d736..10d48592e9 100644
--- a/docker/snapshot/Dockerfile
+++ b/docker/oap/Dockerfile
@@ -27,7 +27,8 @@ COPY "$DIST_NAME.tar.gz" /
RUN set -ex; \
tar -xzf "$DIST_NAME.tar.gz"; \
- rm -rf "$DIST_NAME.tar.gz"; rm -rf config/log4j2.xml;
+ rm -rf "$DIST_NAME.tar.gz"; rm -rf "$DIST_NAME/config/log4j2.xml"; \
+ rm -rf "$DIST_NAME/bin"; rm -rf "$DIST_NAME/webapp"; rm -rf "$DIST_NAME/agent";
WORKDIR $DIST_NAME
@@ -36,4 +37,4 @@ COPY docker-entrypoint.sh .
EXPOSE 12800 11800
-ENTRYPOINT ["./docker-entrypoint.sh"]
\ No newline at end of file
+ENTRYPOINT ["sh", "docker-entrypoint.sh"]
\ No newline at end of file
diff --git a/docker/snapshot/docker-entrypoint.sh b/docker/oap/docker-entrypoint.sh
similarity index 84%
rename from docker/snapshot/docker-entrypoint.sh
rename to docker/oap/docker-entrypoint.sh
index 451e9a8b7d..0c194b0b83 100755
--- a/docker/snapshot/docker-entrypoint.sh
+++ b/docker/oap/docker-entrypoint.sh
@@ -16,7 +16,7 @@
#!/bin/bash
-set -e
+set -ex
CLASSPATH="config:$CLASSPATH"
for i in oap-libs/*.jar
@@ -24,6 +24,5 @@ do
CLASSPATH="$i:$CLASSPATH"
done
-java ${JAVA_OPTS} -classpath $CLASSPATH \
- -Dstorage.elasticsearch.clusterNodes=elasticsearch:9200 \
- org.apache.skywalking.oap.server.starter.OAPServerStartUp
+exec java ${JAVA_OPTS} -classpath $CLASSPATH \
+ org.apache.skywalking.oap.server.starter.OAPServerStartUp "$@"
diff --git a/docker/oap/log4j2.xml b/docker/oap/log4j2.xml
new file mode 100644
index 0000000000..eb69a897dc
--- /dev/null
+++ b/docker/oap/log4j2.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docker/ui/Dockerfile b/docker/ui/Dockerfile
new file mode 100644
index 0000000000..62e1432dc5
--- /dev/null
+++ b/docker/ui/Dockerfile
@@ -0,0 +1,40 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM openjdk:8-jre-alpine
+
+ENV DIST_NAME=apache-skywalking-apm-incubating \
+ JAVA_OPTS=" -Xms256M -Xmx512M"
+
+# Install required packages
+RUN apk add --no-cache \
+ bash
+
+COPY "$DIST_NAME.tar.gz" /
+
+RUN set -ex; \
+ tar -xzf "$DIST_NAME.tar.gz"; \
+ rm -rf "$DIST_NAME.tar.gz"; rm -rf "$DIST_NAME/config"; \
+ rm -rf "$DIST_NAME/bin"; rm -rf "$DIST_NAME/oap-libs"; rm -rf "$DIST_NAME/agent";
+
+WORKDIR $DIST_NAME
+
+COPY docker-entrypoint.sh .
+COPY logback.xml webapp/
+
+EXPOSE 8080
+
+ENTRYPOINT ["sh", "docker-entrypoint.sh"]
\ No newline at end of file
diff --git a/docker/ui/docker-entrypoint.sh b/docker/ui/docker-entrypoint.sh
new file mode 100755
index 0000000000..a94d0eceb9
--- /dev/null
+++ b/docker/ui/docker-entrypoint.sh
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#!/bin/bash
+
+set -ex
+
+exec java -jar webapp/skywalking-webapp.jar --logging.config=webapp/logback.xml "$@"
diff --git a/docker/ui/logback.xml b/docker/ui/logback.xml
new file mode 100644
index 0000000000..834036d7bf
--- /dev/null
+++ b/docker/ui/logback.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/kubernetes/oap/00-rbac.yml b/kubernetes/oap/00-rbac.yml
new file mode 100644
index 0000000000..95a989b6d7
--- /dev/null
+++ b/kubernetes/oap/00-rbac.yml
@@ -0,0 +1,41 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: rbac.authorization.k8s.io/v1
+kind: RoleBinding
+metadata:
+ name: skywalking-oap
+ namespace: skywalking
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: Role
+ name: skywalking-oap
+subjects:
+- kind: ServiceAccount
+ name: skywalking-oap
+ namespace: skywalking
+
+---
+
+kind: Role
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+ namespace: skywalking
+ name: skywalking-oap
+rules:
+- apiGroups: [""]
+ resources: ["pods"]
+ verbs: ["watch", "list"]
\ No newline at end of file
diff --git a/kubernetes/oap/01-config.yml b/kubernetes/oap/01-config.yml
new file mode 100644
index 0000000000..b8aa585e52
--- /dev/null
+++ b/kubernetes/oap/01-config.yml
@@ -0,0 +1,338 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: oap-config
+ namespace: skywalking
+data:
+ application.yml: |-
+ cluster:
+ kubernetes:
+ watchTimeoutSeconds: 60
+ namespace: default
+ labelSelector: app=oap
+ uidEnvName: SKYWALKING_COLLECTOR_UID
+ core:
+ default:
+ restHost: 0.0.0.0
+ restPort: 12800
+ restContextPath: /
+ gRPCHost: 0.0.0.0
+ gRPCPort: 11800
+ downsampling:
+ - Hour
+ - Day
+ - Month
+ recordDataTTL: 90 # Unit is minute
+ minuteMetricsDataTTL: 90 # Unit is minute
+ hourMetricsDataTTL: 36 # Unit is hour
+ dayMetricsDataTTL: 45 # Unit is day
+ monthMetricsDataTTL: 18 # Unit is month
+ storage:
+ elasticsearch:
+ clusterNodes: localhost:9200
+ indexShardsNumber: 2
+ indexReplicasNumber: 0
+ bulkActions: 2000 # Execute the bulk every 2000 requests
+ bulkSize: 20 # flush the bulk every 20mb
+ flushInterval: 10 # flush the bulk every 10 seconds whatever the number of requests
+ concurrentRequests: 2 # the number of concurrent requests
+ receiver-register:
+ default:
+ receiver-trace:
+ default:
+ bufferPath: /trace-buffer/ # Path to trace buffer files, suggest to use absolute path
+ bufferOffsetMaxFileSize: 100 # Unit is MB
+ bufferDataMaxFileSize: 500 # Unit is MB
+ bufferFileCleanWhenRestart: false
+ receiver-jvm:
+ default:
+ service-mesh:
+ default:
+ bufferPath: /mesh-buffer/ # Path to trace buffer files, suggest to use absolute path
+ bufferOffsetMaxFileSize: 100 # Unit is MB
+ bufferDataMaxFileSize: 500 # Unit is MB
+ bufferFileCleanWhenRestart: false
+ istio-telemetry:
+ default:
+ query:
+ graphql:
+ path: /graphql
+ alarm:
+ default:
+
+ log4j2.xml: |--
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ alarm-settings.yml: |-
+ rules:
+ service_resp_time_rule:
+ indicator-name: service_resp_time
+ include-names:
+ - dubbox-provider
+ - dubbox-consumer
+ threshold: 1000
+ op: ">"
+ period: 10
+ count: 1
+ webhooks:
+
+ component-libraries.yml: |-
+ Tomcat:
+ id: 1
+ languages: Java
+ HttpClient:
+ id: 2
+ languages: Java,C#,Node.js
+ Dubbo:
+ id: 3
+ languages: Java
+ H2:
+ id: 4
+ languages: Java
+ Mysql:
+ id: 5
+ languages: Java,C#,Node.js
+ ORACLE:
+ id: 6
+ languages: Java
+ Redis:
+ id: 7
+ languages: Java,C#,Node.js
+ Motan:
+ id: 8
+ languages: Java
+ MongoDB:
+ id: 9
+ languages: Java,C#,Node.js
+ Resin:
+ id: 10
+ languages: Java
+ Feign:
+ id: 11
+ languages: Java
+ OKHttp:
+ id: 12
+ languages: Java
+ SpringRestTemplate:
+ id: 13
+ languages: Java
+ SpringMVC:
+ id: 14
+ languages: Java
+ Struts2:
+ id: 15
+ languages: Java
+ NutzMVC:
+ id: 16
+ languages: Java
+ NutzHttp:
+ id: 17
+ languages: Java
+ JettyClient:
+ id: 18
+ languages: Java
+ JettyServer:
+ id: 19
+ languages: Java
+ Memcached:
+ id: 20
+ languages: Java
+ ShardingJDBC:
+ id: 21
+ languages: Java
+ PostgreSQL:
+ id: 22
+ languages: Java,C#,Node.js
+ GRPC:
+ id: 23
+ languages: Java
+ ElasticJob:
+ id: 24
+ languages: Java
+ RocketMQ:
+ id: 25
+ languages: Java
+ httpasyncclient:
+ id: 26
+ languages: Java
+ Kafka:
+ id: 27
+ languages: Java
+ ServiceComb:
+ id: 28
+ languages: Java
+ Hystrix:
+ id: 29
+ languages: Java
+ Jedis:
+ id: 30
+ languages: Java
+ SQLite:
+ id: 31
+ languages: Java,C#
+ h2-jdbc-driver:
+ id: 32
+ languages: Java
+ mysql-connector-java:
+ id: 33
+ languages: Java
+ Spymemcached:
+ id: 35
+ languages: Java
+ Xmemcached:
+ id: 36
+ languages: Java
+ postgresql-jdbc-driver:
+ id: 37
+ languages: Java
+ rocketMQ-producer:
+ id: 38
+ languages: Java
+ rocketMQ-consumer:
+ id: 39
+ languages: Java
+ kafka-producer:
+ id: 40
+ languages: Java
+ kafka-consumer:
+ id: 41
+ languages: Java
+ mongodb-driver:
+ id: 42
+ languages: Java
+ SOFARPC:
+ id: 43
+ languages: Java
+ ActiveMQ:
+ id: 44
+ languages: Java
+ activemq-producer:
+ id: 45
+ languages: Java
+ activemq-consumer:
+ id: 46
+ languages: Java
+ Elasticsearch:
+ id: 47
+ languages: Java
+ transport-client:
+ id: 48
+ languages: Java
+ AspNetCore:
+ id: 3001
+ languages: C#
+ EntityFrameworkCore:
+ id: 3002
+ languages: C#
+ SqlClient:
+ id: 3003
+ languages: C#
+ CAP:
+ id: 3004
+ languages: C#
+ StackExchange.Redis:
+ id: 3005
+ languages: C#
+ SqlServer:
+ id: 3006
+ languages: C#
+ Npgsql:
+ id: 3007
+ languages: C#
+ MySqlConnector:
+ id: 3008
+ languages: C#
+ EntityFrameworkCore.InMemory:
+ id: 3009
+ languages: C#
+ EntityFrameworkCore.SqlServer:
+ id: 3010
+ languages: C#
+ EntityFrameworkCore.Sqlite:
+ id: 3011
+ languages: C#
+ Pomelo.EntityFrameworkCore.MySql:
+ id: 3012
+ languages: C#
+ Npgsql.EntityFrameworkCore.PostgreSQL:
+ id: 3013
+ languages: C#
+ InMemoryDatabase:
+ id: 3014
+ languages: C#
+ AspNet:
+ id: 3015
+ languages: C#
+
+ # NoeJS components
+ # [4000, 5000) for Node.js agent
+ HttpServer:
+ id: 4001
+ languages: Node.js
+ express:
+ id: 4002
+ languages: Node.js
+ Egg:
+ id: 4003
+ languages: Node.js
+ Koa:
+ id: 4004
+ languages: Node.js
+ Component-Server-Mappings:
+ mongodb-driver: MongoDB
+ rocketMQ-producer: RocketMQ
+ rocketMQ-consumer: RocketMQ
+ kafka-producer: Kafka
+ kafka-consumer: Kafka
+ activemq-producer: ActiveMQ
+ activemq-consumer: ActiveMQ
+ postgresql-jdbc-driver: PostgreSQL
+ Xmemcached: Memcached
+ Spymemcached: Memcached
+ h2-jdbc-driver: H2
+ mysql-connector-java: Mysql
+ Jedis: Redis
+ StackExchange.Redis: Redis
+ SqlClient: SqlServer
+ Npgsql: PostgreSQL
+ MySqlConnector: Mysql
+ EntityFrameworkCore.InMemory: InMemoryDatabase
+ EntityFrameworkCore.SqlServer: SqlServer
+ EntityFrameworkCore.Sqlite: SQLite
+ Pomelo.EntityFrameworkCore.MySql: Mysql
+ Npgsql.EntityFrameworkCore.PostgreSQL: PostgreSQL
+ transport-client: Elasticsearch
+
+
diff --git a/kubernetes/oap/01-service.yml b/kubernetes/oap/01-service.yml
index 4dcef4225a..34c95860e4 100644
--- a/kubernetes/oap/01-service.yml
+++ b/kubernetes/oap/01-service.yml
@@ -22,7 +22,6 @@ metadata:
labels:
service: oap
spec:
- clusterIP: None
ports:
- port: 12800
name: rest
diff --git a/kubernetes/oap/02-deployment.yml b/kubernetes/oap/02-deployment.yml
index e0d4344a0c..72be02a6f8 100644
--- a/kubernetes/oap/02-deployment.yml
+++ b/kubernetes/oap/02-deployment.yml
@@ -22,7 +22,7 @@ metadata:
labels:
app: oap
spec:
- replicas: 1
+ replicas: 3
selector:
matchLabels:
app: oap
@@ -30,6 +30,9 @@ spec:
metadata:
labels:
app: oap
+ spec:
+ serviceAccountName: skywalking-oap
+ automountServiceAccountToken: false
spec:
containers:
- name: oap
@@ -46,4 +49,11 @@ spec:
memory: 2Gi
env:
- name: JAVA_OPTS
- value: -Xms256M -Xmx512M
\ No newline at end of file
+ value: -Xms256M -Xmx512M
+ volumeMounts:
+ - name: config
+ mountPath: /apache-skywalking-apm-incubating/config
+ volumes:
+ - name: config
+ configMap:
+ name: oap-config
\ No newline at end of file