链路追踪skywalking安装部署
来源:原创
时间:2022-07-10
作者:脚本小站
分类:Linux
skywalking下载:下载服务端和对应语言的agent
https://skywalking.apache.org/downloads/
服务端:要安装jdk环境。
https://archive.apache.org/dist/skywalking/8.8.1/apache-skywalking-apm-8.8.1.tar.gz
agent:不同语言不同agent。
https://archive.apache.org/dist/skywalking/java-agent/8.8.0/apache-skywalking-java-agent-8.8.0.tgz
安装服务端:
tar -xf apache-skywalking-apm-8.8.1.tar.gz cd apache-skywalking-apm-bin/config vim application.yml ... storage: selector: ${SW_STORAGE:elasticsearch} # 改成es作为存储 elasticsearch: namespace: ${SW_NAMESPACE:""} clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.199.39:9200} # 填写地址端口 ...
启动服务:
./apache-skywalking-apm-bin/bin/startup.sh
访问web端:
http://192.168.199.10:8080/
客户端部署:
这里使用的示例程序是一个博客:
wget https://dl.halo.run/release/halo-1.5.4.jar
需要安装java11:halo是用java11环境编写的
yum install java-11-openjdk -y
客户端agent的使用方法:
https://skywalking.apache.org/docs/skywalking-java/v8.8.0/en/setup/service-agent/java-agent/readme/
配置agent:
vim ./skywalking-agent/config/agent.config # The agent namespace agent.namespace=${SW_AGENT_NAMESPACE:default} # The service name in UI agent.service_name=${SW_AGENT_NAME:halo} # Backend service addresses. collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.199.10:11800}
启动命令:
java -javaagent:./skywalking-agent/skywalking-agent.jar -jar halo-1.5.4.jar
正式环境中启动命令:
java -javaagent:./skywalking-agent/skywalking-agent.jar \ -DSW_AGENT_NAMESPACE=default \ -DSW_AGENT_NAME=halo \ -Dskywalking.collector.backend_service=skywalking.service.com:11800 \ -jar halo-1.5.4.jar
skywalking在k8s中的使用:
有几种方法:
一是将skywalking-agent.jar包随着java应用一起构建到应用镜像当中随着java应用一起启动,
二是使用k8s的 initContainers 在容器初始化时将 skywalking-agent.jar 包拷贝到主镜像当中,然后使用入参的方式将agent的jar包随着主程序一起启动。
将skywalking-agent.jar 构建到agent镜像当中:这个容器的作用就是在初始化时将agent 包拷贝到主应用的容器中。
agent dockerfile:
cat > Dockerfile <<EOF FROM busybox:latest LABEL maintainer="even" COPY skywalking-agent/ /usr/skywalking/agent/ EOF
构建镜像打标签:
docker build -t skywalking-agent-8.8.0:0.1 . docker tag skywalking-agent-8.8.0:0.1 harbor.k8s.local/skywalking/skywalking-agent-8.8.0:0.1 docker push harbor.k8s.local/skywalking/skywalking-agent-8.8.0:0.1
测试镜像dockerfile:
FROM centos:centos7 COPY repos/* /etc/yum.repos.d/ RUN yum install wget iproute java-11-openjdk -y RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" >/etc/timezone ADD skywalking-agent/ skywalking-agent/ COPY halo-1.5.4.jar /root/ EXPOSE 8090 ENTRYPOINT ["java","-jar","/root/halo-1.5.4.jar"]
部署文件:
apiVersion: v1 kind: Service metadata: labels: app: halo name: halo namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 8090 selector: app: halo type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: labels: app: halo name: halo namespace: default spec: replicas: 1 selector: matchLabels: app: halo template: metadata: labels: app: halo spec: containers: - env: - name: TZ value: Asia/Shanghai - name: SW_AGENT_INSTANCE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: JAVA_TOOL_OPTIONS value: -javaagent:/skywalking-agent/skywalking-agent.jar - name: SW_AGENT_NAME value: halo - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES value: 192.168.199.50:11800 image: harbor.k8s.local/skywalking/halo-skywalking:0.1 imagePullPolicy: IfNotPresent name: halo-skywalking ports: - containerPort: 8090 name: http protocol: TCP resources: limits: memory: 2G cpu: 1 requests: memory: 1G cpu: 100m
initContainers方式部署文件:通过volume将初始化容器的agent文件拷贝到主容器中。不建议使用initContainers的方式将agent拷贝到主容器中,因为这种方式运行的程序非常不稳定,只适合临时简单测试。
apiVersion: apps/v1 kind: Deployment metadata: name: springboot-demo namespace: skywalking labels: app: springboot-demo spec: replicas: 1 selector: matchLabels: app: springboot-demo template: metadata: labels: app: springboot-demo spec: initContainers: - image: harbor.k8s.local/skywalking/skywalking-agent-8.8.0:0.1 name: skywalking-agent-sidecar imagePullPolicy: IfNotPresent command: [ "sh" ] args: [ "-c", "cp -R /usr/skywalking/agent/* /skywalking/agent", ] volumeMounts: - mountPath: /skywalking/agent name: skywalking-agent containers: - name: springboot-demo image: xjk27400861/springbootapp:42 imagePullPolicy: IfNotPresent env: #更多变量详见配置文件 application.yml - name: TZ value: Asia/Shanghai - name: SW_AGENT_INSTANCE_NAME valueFrom: fieldRef: fieldPath: metadata.name # 使用Pod名称方便数据查看 - name: NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: JAVA_TOOL_OPTIONS #这里通过JAVA_TOOL_OPTIONS变量将启动命令加入到启动参数中 value: -javaagent:/usr/skywalking/agent/skywalking-agent.jar - name: SW_AGENT_NAME value: springboot-demo - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES value: 192.168.199.49:11800 # skywalking server端地址 ports: - containerPort: 8080 resources: requests: cpu: 200m memory: 512Mi volumeMounts: - mountPath: /usr/skywalking/agent name: skywalking-agent volumes: - name: skywalking-agent emptyDir: sizeLimit: 50M --- apiVersion: v1 kind: Service metadata: name: springboot-demo namespace: skywalking labels: app: springboot-demo spec: ports: - name: port port: 80 protocol: TCP targetPort: 8080 selector: app: springboot-demo type: ClusterIP
参考文章:
cnblogs.com/even160941/p/16933062.html cnblogs.com/klvchen/articles/17446847.html
docker运行skywalking server:
mkdir /data/elasticsearch/{logs,data} -pv chmod 777 -R /data/elasticsearch/logs /data/elasticsearch/data docker run -d --name elasticsearch \ -p 9200:9200 \ -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ -v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \ -v /data/elasticsearch/data:/usr/share/elasticsearch/data \ elasticsearch:7.17.1 docker run \ --name skywalking-oap \ --restart always \ -p 11800:11800 \ -p 12800:12800 -d \ --privileged=true \ -e TZ=Asia/Shanghai \ -e SW_STORAGE=elasticsearch7 \ -e SW_STORAGE_ES_CLUSTER_NODES=172.31.8.48:9200 \ -v /etc/localtime:/etc/localtime:ro \ apache/skywalking-oap-server:8.6.0-es7 docker run \ --name skywalking-ui \ --restart always \ -p 8080:8080 -d \ --privileged=true \ --link skywalking-oap:skywalking-oap \ -e TZ=Asia/Shanghai \ -e SW_OAP_ADDRESS=172.31.8.48:12800 \ -v /etc/localtime:/etc/localtime:ro \ apache/skywalking-ui:8.6.0 docker run \ -d --name kibana \ -p 5601:5601 \ kibana:7.17.1 mkdir -p /data/kibana/config -pv docker cp kibana:/usr/share/kibana/config /data/kibana/ vim /data/kibana/config/kibana.yml server.host: "0" server.shutdownTimeout: "5s" elasticsearch.hosts: [ "http://localhost:9100" ] # 记得修改ip monitoring.ui.container.elasticsearch.enabled: true i18n.locale: "zh-CN" docker stop kibana docker rm kibana docker run \ -d --name kibana \ -p 5601:5601 \ -v /data/kibana/config:/usr/share/kibana/config \ kibana:7.17.1
参考文章:
juejin.cn/post/7073720092273590309 cnblogs.com/baoshu/p/16128127.html