功能:配置 skywalking jacoco jar包

  1. FROM bytest-harbor.ur.com.cn/base-image/busybox:1.28.3
  2. ADD agent /agent

skywalking 配置

插件部署:
optional-plugins扩展插件:

  1. apm-spring-cloud-gateway-2.1.x-plugin-8.5.0
  2. apm-spring-annotation

配置文件
开启数据库sql追踪

  1. plugin.jdbc.trace_sql_parameters=${SW_JDBC_TRACE_SQL_PARAMETERS:true}
  2. plugin.jdbc.sql_parameters_max_length=${SW_PLUGIN_JDBC_SQL_PARAMETERS_MAX_LENGTH:512}

image.png

image.png

  1. # 引入skywalking agent
  2. - name: SW_AGENT_NAME
  3. value: ${APP_NAME}_${NAMESPACE}
  4. - name: SW_JDBC_TRACE_SQL_PARAMETERS
  5. value: 'true'
  6. - name: SW_PLUGIN_JDBC_SQL_PARAMETERS_MAX_LENGTH
  7. value: '512'
  8. # skywalking oap 后端
  9. - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
  10. value: ${SW_BACKEND}
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. labels:
  5. app: kubesphere
  6. component: $APP_NAME
  7. tier: backend
  8. # 服务名称
  9. name: $APP_NAME
  10. # 项目名称
  11. namespace: $NAMESPACE
  12. spec:
  13. progressDeadlineSeconds: 600
  14. replicas: 2
  15. selector:
  16. matchLabels:
  17. app: kubesphere
  18. component: $APP_NAME
  19. tier: backend
  20. template:
  21. metadata:
  22. labels:
  23. app: kubesphere
  24. component: $APP_NAME
  25. tier: backend
  26. spec:
  27. affinity:
  28. podAntiAffinity:
  29. requiredDuringSchedulingIgnoredDuringExecution:
  30. - labelSelector:
  31. matchExpressions:
  32. - key: component
  33. operator: In
  34. values:
  35. - $APP_NAME
  36. topologyKey: "kubernetes.io/hostname"
  37. initContainers:
  38. # 初始化容器
  39. - name: ur-paas-init
  40. image: $HARBOR_HOST/paas/init-container:1.0.2
  41. imagePullPolicy: IfNotPresent
  42. command: ["cp", "-r", "/agent/", "/share/"]
  43. volumeMounts:
  44. - name: ur-share
  45. mountPath: /share
  46. resources:
  47. requests:
  48. cpu: 200m
  49. memory: 200Mi
  50. limits:
  51. cpu: 200m
  52. memory: 200Mi
  53. containers:
  54. - name: $APP_NAME
  55. image: $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:$BRANCH_NAME-$BUILD_NUMBER
  56. command: ["sh","/home/run.sh"]
  57. imagePullPolicy: Always
  58. lifecycle:
  59. preStop:
  60. exec:
  61. command: ["sh", "-c", "sleep 10"]
  62. env:
  63. - name: JAVA_OPTS
  64. value: $JAVA_OPTS
  65. - name: CACHE_IGNORE
  66. value: js|html
  67. - name: CACHE_PUBLIC_EXPIRATION
  68. value: 3d
  69. # 时区
  70. - name: TZ
  71. value: Asia/Shanghai
  72. # 引入skywalking agent
  73. - name: SW_AGENT_NAME
  74. value: ${APP_NAME}
  75. - name: SW_JDBC_TRACE_SQL_PARAMETERS
  76. value: 'true'
  77. - name: SW_PLUGIN_JDBC_SQL_PARAMETERS_MAX_LENGTH
  78. value: '512'
  79. # skywalking oap 后端
  80. - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
  81. value: ${SW_BACKEND}
  82. # nacos 注册中心配置中心
  83. - name: NACOS_HOST
  84. value: ${NACOS_HOST}
  85. - name: NACOS_NAMESPACE
  86. value: ${NACOS_NAMESPACE}
  87. - name: NACOS_GROUP
  88. value: ${NACOS_GROUP}
  89. - name: POD_ID
  90. valueFrom:
  91. fieldRef:
  92. fieldPath: metadata.name
  93. livenessProbe:
  94. httpGet:
  95. path: $HEALTH_PATH
  96. port: $CONTAINER_PORT
  97. initialDelaySeconds: 60
  98. successThreshold: 1
  99. timeoutSeconds: 10
  100. failureThreshold: 10
  101. periodSeconds: 10
  102. readinessProbe:
  103. httpGet:
  104. path: $HEALTH_PATH
  105. port: $CONTAINER_PORT
  106. initialDelaySeconds: 30
  107. timeoutSeconds: 10
  108. failureThreshold: 30
  109. periodSeconds: 5
  110. ports:
  111. - containerPort: $CONTAINER_PORT
  112. protocol: TCP
  113. volumeMounts:
  114. - name: ur-share
  115. mountPath: /share
  116. - name: gc
  117. mountPath: /home/gc/
  118. - name: dump
  119. mountPath: /home/dump/
  120. - name: run
  121. mountPath: /home/run.sh
  122. subPath: run.sh
  123. - name: vol-log
  124. mountPath: /var/log
  125. policy:
  126. logs:
  127. rotate: Hourly
  128. annotations:
  129. format: '{"multi":{"mode":"regular","value":"([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))"}}'
  130. pathPattern: /info.log
  131. resources:
  132. limits:
  133. cpu: 1
  134. memory: 2Gi
  135. requests:
  136. cpu: 1
  137. memory: 2Gi
  138. terminationMessagePath: /dev/termination-log
  139. terminationMessagePolicy: File
  140. volumes:
  141. # ur共享文件夹
  142. - name: ur-share
  143. emptyDir: {}
  144. - name: vol-log
  145. emptyDir: {}
  146. - name: gc
  147. persistentVolumeClaim:
  148. claimName: $APP_NAME
  149. - name: dump
  150. persistentVolumeClaim:
  151. claimName: scp-dump
  152. - name: run
  153. configMap:
  154. defaultMode: 0777
  155. name: $APP_NAME
  156. dnsPolicy: ClusterFirst
  157. imagePullSecrets:
  158. - name: $HARBOR_CREDENTIAL_ID
  159. restartPolicy: Always
  160. terminationGracePeriodSeconds: 30
  161. ---
  162. apiVersion: v1
  163. kind: ConfigMap
  164. metadata:
  165. name: $APP_NAME
  166. namespace: $NAMESPACE
  167. data:
  168. run.sh: |
  169. #!/bin/bash
  170. echo -javaagent:/share/agent/skywalking/skywalking-agent.jar \
  171. -XX:+UseContainerSupport \
  172. -XX:MaxRAMPercentage=75.0 \
  173. -XX:MinRAMPercentage=75.0 \
  174. -XX:InitialRAMPercentage=75.0 \
  175. -XX:MetaspaceSize=256m \
  176. -XX:MaxMetaspaceSize=256m \
  177. -XX:+UseConcMarkSweepGC \
  178. -XX:+UseCMSCompactAtFullCollection \
  179. -XX:+CMSClassUnloadingEnabled \
  180. -XX:CMSInitiatingOccupancyFraction=80 \
  181. -XX:+UseCMSInitiatingOccupancyOnly \
  182. -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses \
  183. -Dsun.rmi.dgc.server.gcInterval=2592000000 \
  184. -Dsun.rmi.dgc.client.gcInterval=2592000000 \
  185. -XX:+UseParNewGC \
  186. -XX:ParallelGCThreads=4 \
  187. -XX:SurvivorRatio=8 \
  188. -XX:+PrintGCDetails \
  189. -XX:+PrintGCDateStamps \
  190. -XX:+PrintTenuringDistribution \
  191. -XX:+PrintHeapAtGC \
  192. -XX:+PrintReferenceGC \
  193. -XX:+PrintGCApplicationStoppedTime \
  194. -XX:+UseGCLogFileRotation \
  195. -XX:NumberOfGCLogFiles=10 \
  196. -XX:GCLogFileSize=1000m \
  197. -Xloggc:/home/gc/gc-$${p}POD_ID-$(date +"%Y-%m-%d-%H-%M-%S").log \
  198. -XX:+HeapDumpOnOutOfMemoryError \
  199. -XX:HeapDumpPath=/home/dump/dump-$${p}POD_ID-$(date +"%Y-%m-%d-%H-%M-%S").hprof > /home/gc/java_tool_opts.sh
  200. export JAVA_TOOL_OPTIONS=$(cat /home/gc/java_tool_opts.sh)
  201. java -jar ${${p}JAVA_OPTS} -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=10000 -Dsun.net.client.defaultReadTimeout=30000 -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom *.jar
  202. ---
  203. kind: PersistentVolumeClaim
  204. apiVersion: v1
  205. metadata:
  206. name: $APP_NAME
  207. namespace: $NAMESPACE
  208. spec:
  209. accessModes:
  210. - ReadWriteMany
  211. volumeMode: Filesystem
  212. resources:
  213. requests:
  214. storage: 2Gi
  215. storageClassName: sfsturbo-ur-scp
  216. ---
  217. apiVersion: autoscaling/v1
  218. kind: HorizontalPodAutoscaler
  219. metadata:
  220. annotations:
  221. extendedhpa.metrics: '[{"type":"Resource","name":"cpu","targetType":"Utilization","targetRange":{"low":"55","high":"65"}}]'
  222. extendedhpa.option: '{"downscaleWindow":"60m","upscaleWindow":"0m"}'
  223. name: $APP_NAME
  224. namespace: $NAMESPACE
  225. spec:
  226. minReplicas: 2
  227. maxReplicas: 6
  228. scaleTargetRef:
  229. apiVersion: apps/v1
  230. kind: Deployment
  231. name: $APP_NAME
  232. targetCPUUtilizationPercentage: 60