本文记录最简单的一个过程要点。
参考这里:Install Elasticsearch with Docker
搭建单节点时需要注意配置环境变量:discovery.type=single-node
配置本地存储(例如 hostPath方式)需要注意配置权限:
mkdir esdatadir chmod g+rwx esdatadir chgrp 0 esdatadir 123
官方镜像:apache/skywalking-oap-server:8.1.0-es7
ConfigMap 或环境变量配置,指定存储和 ES7 地址(这里也发现个 BUG,必须指定端口,否则根据 : 分割获取 [1] 端口部分会数组越界)。
apiVersion: v1 data: SW_STORAGE: elasticsearch7 SW_STORAGE_ES_CLUSTER_NODES: elasticsearch-master:9200 kind: ConfigMap metadata: name: skywalking-oap-server namespace: efk 12345678
官方镜像:apache/skywalking-ui:8.1.0
ConfigMap 或环境变量配置,主要是指定 oap 服务和端口。
apiVersion: v1 data: SW_OAP_ADDRESS: skywalking-oap-server:12800 SW_TIMEOUT: "20000" kind: ConfigMap metadata: name: skywalking-ui namespace: efk 12345678
上面3步大家服务端是最简单的,agent 的配置也没那么麻烦,只是看怎么更简单。
下载官方二进制压缩包:
https://www.apache.org/dyn/closer.cgi/skywalking/8.1.0/apache-skywalking-apm-es7-8.1.0.tar.gz
上面是下载页面,不是具体的文件。这里下载的 es7 版本。
解压后主要看 agent 目录。
想要使用 skywalking, 你需要的是整个 agent 目录,不是其中的某几个 jar 。 放在 plugins 和 activations 目录的是激活的插件,这些插件的原理基本上就是查找某个 java class,如果存在就在运行时修改这个类,使得这个类被代理的接口方法调用时能给 skywalking 发送数据。
为了使用skywalking,将 agent 打包到所有镜像中是一个办法,但不是最好的办法。如果 k8s 集群有 nfs,nas 类的存储,可以放一份,然后所有容器挂载目录使用,如果没有共享存储,使用 hostPath,在每个节点的相同位置存放也能一起使用。我这里使用的 hostPath 方式。
先看 agent/config/agent.config 配置,这个目录就一个配置文件,所以如果想要在 hostPath 的基础上统一控制,可以对这个文件使用 ConfigMap 挂载卷。
修改配置中的关键几项内容:
agent.service_name=${SW_AGENT_NAME:Undefined} collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:skywalking-oap-server:11800} logging.file_name=${SW_AGENT_NAME:skywalking-api}.log 123
为了减少配置,我这里直接让日志名和服务名一致。
假设将 agent 放到了所有节点的 /data/skywalking-agent 目录。
写个批量脚本对所有服务执行下面的更新操作:
kubectl patch deployments service1 --patch ' spec: template: spec: containers: - name: service1 env: - name: JAVA_OPTS value: -javaagent:/skywalking-agent/skywalking-agent.jar - name: SW_AGENT_NAME value: service1 volumeMounts: - mountPath: /skywalking-agent name: vol1 volumes: - hostPath: path: /data/skywalking-agent type: "" name: vol1'
12345678910111213141516171819前提,你的 java 服务需要支持 JAVA_OPTS 环境变量。
通过上面的代码会给所有服务挂载 hostPath,并且配置了服务名和 javaagent,服务启动成功后在 skywalking 就能看到服务的信息了。
相关知识
揭秘K8s界传奇:马哥是谁?从入门到精通,他如何引领容器革命?
一键部署微服务生态系统:Docker Compose环境包
K8s系列 Prometheus+Grafana构建智能化监控系统
「云+应用」一体化混合云全景智能化监控平台
环保集成墙面是什么 环保集成墙面有什么优缺点
金属集成墙板,集成装饰墙板,集成墙面
javascript实现玫瑰花
集成墙面板安装方法
寻花之梦~~
集成灶故障怎么解决?花米电器售后维修电话是多少?-集成灶网
网址: K8s 简单集成 SkyWalking https://m.huajiangbk.com/newsview948923.html
上一篇: 我想实现 paypal 支付功能 |
下一篇: 使用php的ci框架,实现微信支 |