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