skywalking部署
请参考官网使用helm
export REPO=chart
git clone https://github.com/apache/skywalking-kubernetes
cd skywalking-kubernetes
helm repo add elastic https://helm.elastic.co
helm dep up ${REPO}/skywalking
cd /root/skywalking-kubernetes/chart/skywalking
vim values.yaml
------
image:
repository: skywalking.docker.scarf.sh/apache/skywalking-oap-server
改成:
repository: docker.mirrors.ustc.edu.cn/apache/skywalking-oap-server
------
helm install skywalkingelasticsearch ${REPO}/skywalking -n default --set oap.image.tag=8.5.0-es6 --set oap.storageType=elasticsearch --set ui.image.tag=8.5.0 --set elasticsearch.imageTag=6.8.6
kubectl get svc -n default
kubectl edit svc skywalking-ui -n default
---
改ClusterIP 为 NodePort
---
这样安装成功就可以
通过ip:nodeport访问
将服务注册到skywalking中,采用无侵入的方式注册到里面
去skywalking官网下载
创建相应的Dockerfile
FROM busybox:latest
ENV LANG=C.UTF-8
RUN set -eux && mkdir -p /usr/skywalking/agent
add apache-skywalking-apm-bin/agent /usr/skywalking/agent
WORKDIR /
#解压
tar -zxvf apache-skywalking-apm-8.5.0.tar.gz
打镜像之前需要修改里面的config
路径apache-skywalking-apm-bin/agent/config下的agent.config
# 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.
# The agent namespace
# agent.namespace=${SW_AGENT_NAMESPACE:default-namespace}
# The service name in UI
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
# The number of sampled traces per 3 seconds
# Negative or zero means off, by default
# agent.sample_n_per_3_secs=${SW_AGENT_SAMPLE:-1}
# Authentication active is based on backend setting, see application.yml for more details.
# agent.authentication = ${SW_AGENT_AUTHENTICATION:xxxx}
# The max amount of spans in a single segment.
# Through this config item, SkyWalking keep your application memory cost estimated.
# agent.span_limit_per_segment=${SW_AGENT_SPAN_LIMIT:150}
# If the operation name of the first span is included in this set, this segment should be ignored. Multiple values should be separated by `,`.
# agent.ignore_suffix=${SW_AGENT_IGNORE_SUFFIX:.jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg}
# If true, SkyWalking agent will save all instrumented classes files in `/debugging` folder.
# SkyWalking team may ask for these files in order to resolve compatible problem.
# agent.is_open_debugging_class = ${SW_AGENT_OPEN_DEBUG:true}
# If true, SkyWalking agent will cache all instrumented classes files to memory or disk files (decided by class cache mode),
# allow other javaagent to enhance those classes that enhanced by SkyWalking agent.
# agent.is_cache_enhanced_class = ${SW_AGENT_CACHE_CLASS:false}
# The instrumented classes cache mode: MEMORY or FILE
# MEMORY: cache class bytes to memory, if instrumented classes is too many or too large, it may take up more memory
# FILE: cache class bytes in `/class-cache` folder, automatically clean up cached class files when the application exits
# agent.class_cache_mode = ${SW_AGENT_CLASS_CACHE_MODE:MEMORY}
# The operationName max length
# Notice, in the current practice, we don't recommend the length over 190.
# agent.operation_name_threshold=${SW_AGENT_OPERATION_NAME_THRESHOLD:150}
# The agent use gRPC plain text in default.
# If true, SkyWalking agent uses TLS even no CA file detected.
# agent.force_tls=${SW_AGENT_FORCE_TLS:false}
# If true, skywalking agent will enable profile when user create a new profile task. Otherwise disable profile.
# profile.active=${SW_AGENT_PROFILE_ACTIVE:true}
# Parallel monitor segment count
# profile.max_parallel=${SW_AGENT_PROFILE_MAX_PARALLEL:5}
# Max monitor segment time(minutes), if current segment monitor time out of limit, then stop it.
# profile.duration=${SW_AGENT_PROFILE_DURATION:10}
# Max dump thread stack depth
# profile.dump_max_stack_depth=${SW_AGENT_PROFILE_DUMP_MAX_STACK_DEPTH:500}
# Snapshot transport to backend buffer size
# profile.snapshot_transport_buffer_size=${SW_AGENT_PROFILE_SNAPSHOT_TRANSPORT_BUFFER_SIZE:50}
# Backend service addresses.
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.111.90:23961}
# Logging file_name
logging.file_name=${SW_LOGGING_FILE_NAME:skywalking-api.log}
# Logging level
logging.level=${SW_LOGGING_LEVEL:INFO}
# Logging dir
# logging.dir=${SW_LOGGING_DIR:""}
# Logging max_file_size, default: 300 * 1024 * 1024 = 314572800
# logging.max_file_size=${SW_LOGGING_MAX_FILE_SIZE:314572800}
# The max history log files. When rollover happened, if log files exceed this number,
# then the oldest file will be delete. Negative or zero means off, by default.
# logging.max_history_files=${SW_LOGGING_MAX_HISTORY_FILES:-1}
# Listed exceptions would not be treated as an error. Because in some codes, the exception is being used as a way of controlling business flow.
# Besides, the annotation named IgnoredException in the trace toolkit is another way to configure ignored exceptions.
# statuscheck.ignored_exceptions=${SW_STATUSCHECK_IGNORED_EXCEPTIONS:}
# The max recursive depth when checking the exception traced by the agent. Typically, we don't recommend setting this more than 10, which could cause a performance issue. Negative value and 0 would be ignored, which means all exceptions would make the span tagged in error status.
# statuscheck.max_recursive_depth=${SW_STATUSCHECK_MAX_RECURSIVE_DEPTH:1}
# Mount the specific folders of the plugins. Plugins in mounted folders would work.
plugin.mount=${SW_MOUNT_FOLDERS:plugins,activations}
# Exclude activated plugins
# plugin.exclude_plugins=${SW_EXCLUDE_PLUGINS:}
# If set to true, the parameters of the sql (typically java.sql.PreparedStatement) would be collected.
# plugin.jdbc.trace_sql_parameters=${SW_JDBC_TRACE_SQL_PARAMETERS:false}
# Kafka producer configuration
# plugin.kafka.bootstrap_servers=${SW_KAFKA_BOOTSTRAP_SERVERS:localhost:9092}
# Match spring bean with regex expression for classname
# plugin.springannotation.classname_match_regex=${SW_SPRINGANNOTATION_CLASSNAME_MATCH_REGEX:}
#修改上面的或者用下面的
plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:192.168.111.90}
plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:23961}
plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}
#打镜像
docker build -t 192.168.30.85:5000/public/springcloud-action/skywalking-agent-sidecar:8.5.0 .
#推送到私有仓库
docker push 192.168.30.85:5000/public/springcloud-action/skywalking-agent-sidecar:8.5.0
yaml如下
initContainers初始化容器
#启动参数
JAVA_TOOL_OPTIONS:-javaagent:/usr/skywalking/agent/skywalking-agent.jar
#注册上的服务名称
SW_AGENT_NAME:iot-server
#skywalking的后端服务地址
SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.111.90:23961
---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
k8s.kuboard.cn/ingress: 'false'
k8s.kuboard.cn/service: NodePort
k8s.kuboard.cn/workload: iot-server
labels:
app: iot-server
k8s.kuboard.cn/layer: svc
name: iot-server
namespace: kube-public
resourceVersion: '36645951'
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: iot-server
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: iot-server
spec:
containers:
- env:
- name: spring.profiles.active
value: company
- name: JAVA_TOOL_OPTIONS
value: '-javaagent:/usr/skywalking/agent/skywalking-agent.jar'
- name: SW_AGENT_NAME
value: iot-server
- name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
value: '192.168.111.90:23961'
- name: SERVER_PORT
value: '8082'
image: '192.168.30.85:5000/kingc/iotserver:10472'
imagePullPolicy: IfNotPresent
lifecycle: {}
name: iot-server
ports:
- containerPort: 8082
name: http-metrics
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /usr/skywalking/agent
name: sw-agent
dnsConfig: {}
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: harbor
initContainers:
- args:
- '-c'
- >-
mkdir -p /skywalking/agent && cp -r /usr/skywalking/agent/*
/skywalking/agent
command:
- sh
image: >-
192.168.30.85:5000/public/springcloud-action/skywalking-agent-sidecar:8.5.2
imagePullPolicy: IfNotPresent
name: sw-agent-sidecar
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /skywalking/agent
name: sw-agent
restartPolicy: Always
schedulerName: default-scheduler
securityContext:
seLinuxOptions: {}
terminationGracePeriodSeconds: 30
volumes:
- emptyDir: {}
name: sw-agent
---
apiVersion: v1
kind: Service
metadata:
annotations:
k8s.kuboard.cn/workload: iot-server
labels:
app: iot-server
name: iot-server
namespace: kube-public
resourceVersion: '35561134'
spec:
clusterIP: 10.103.132.19
externalTrafficPolicy: Cluster
ports:
- name: web
nodePort: 25393
port: 80
protocol: TCP
targetPort: 8082
selector:
app: iot-server
sessionAffinity: None
type: NodePort
参照官网修改项目中的pom添加依赖
org.apache.skywalking
apm-toolkit-logback-1.x
8.5.0
修改logback.xml
%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n
0
1024
true
%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n
这样就会注册到skywalking上并有日志显示