背景
近期本司內(nèi)部需要用到Skywalking進(jìn)行鏈路追蹤和日志收集,故記錄下部署過(guò)程,方便后期學(xué)習(xí)與查詢。
ElasticSearch高可用部署
## 1.docker啟動(dòng)elasticsearch,并將內(nèi)存設(shè)置的稍微大一些,然后進(jìn)行端口和配置文件映射
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e ES_JAVA_OPTS="-Xms10240m -Xmx20480m" \
-v /home/mapping/elasticsearch/data:/usr/share/elasticsearch/data \
-v /home/mapping/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /home/mapping/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
--restart=always -d 10.156.204.60/oher/elasticsearch:7.12.0
2. 添加配置文件
elasticsearch.yml配置
NodeA
cluster.name: ClusterDev
node.master: true
node.data: true
discovery.seed_hosts: ["10.156.204.58:9300","10.156.204.59:9300",10.156.204.60:9300]
node.max_local_storage_nodes: 3
node.name: node-a
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
http.port: 9200
transport.tcp.port: 9300
http.cors.allow-headers: Authorization,Content-Type,X-Requested-with,Content-Length
xpack.security.enabled: true
action.auto_create_index: ".watches,.triggered_watches,.watcher-history-*,-markdown"
NodeB
cluster.name: ClusterDev
node.master: true
node.data: true
discovery.seed_hosts: ["10.156.204.58:9300","10.156.204.59:9300",10.156.204.60:9300]
node.max_local_storage_nodes: 3
node.name: node-b
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
http.port: 9200
transport.tcp.port: 9300
http.cors.allow-headers: Authorization,Content-Type,X-Requested-with,Content-Length
xpack.security.enabled: true
action.auto_create_index: ".watches,.triggered_watches,.watcher-history-*,-markdown"
NodeC
cluster.name: ClusterDev
node.master: true
node.data: true
discovery.seed_hosts: ["10.156.204.58:9300","10.156.204.59:9300",10.156.204.60:9300]
node.max_local_storage_nodes: 3
node.name: node-c
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
http.port: 9200
transport.tcp.port: 9300
http.cors.allow-headers: Authorization,Content-Type,X-Requested-with,Content-Length
xpack.security.enabled: true
action.auto_create_index: ".watches,.triggered_watches,.watcher-history-*,-markdown"
3.重置三臺(tái)ES的密碼
- docker exec -it elasticsearch bash進(jìn)入到容器內(nèi)
- 進(jìn)入/usr/share/elasticsearch/bin目錄
- ./elasticsearch-setup-passwords interactive執(zhí)行重置密碼指令
Skywalking-OAP-Sever
本文選定8.5.0-es7版本進(jìn)行演示
- 在rancher中新建服務(wù),鏡像地址填寫(xiě)
apache/skywalking-oap-server:8.5.0-es7
-
端口映射
- 映射容器端口12800到NodePort12800
- 映射容器端口11800到NodePort11800
- 環(huán)境變量配置
Skywalking-UI
- docker鏡像: apache/skywalking-ui:8.5.0
- 端口映射:8000端口到NodePort8000
- 環(huán)境變量
Skywalking-Agent
本文采用K8s部署,K8s部署常有兩種方式:第一種是直接將Agent打包到項(xiàng)目鏡像中,然后通過(guò)-javaagent參數(shù)鏡像啟動(dòng);第二種是通過(guò)K8s的SideCar模式進(jìn)行啟動(dòng).本文采用第二種模式,方便簡(jiǎn)單.
下載apache-skywalking-apm-8.5.0.tar.gz
https://www.apache.org/dyn/closer.cgi/skywalking/8.5.0/apache-skywalking-apm-8.5.0.tar.gz
編寫(xiě)DockerFile打包Agent鏡像
FROM busybox:latest
LABEL maintainer="wangpx02@catl-21c.com"
ENV LANG=C.UTF-8
RUN set -eux && mkdir -p /usr/skywalking/agent/
ADD apache-skywalking-apm-bin/agent/ /usr/skywalking/agent/
WORKDIR /
SideCar接入Skywalking-Agent
前提: 配置PV和PVC
PV:綁定一個(gè)持久卷,這里采用NFS的形式
PVC: 聲明使用持久卷,只能與一個(gè)PV綁定,PVC只能在當(dāng)前命名空間下使用
添加SideCar
-
選擇類(lèi)型為Init類(lèi)型,也就是在主鏡像之前先啟動(dòng)完成
-
選擇鏡像地址為Agent的Docker地址
-
數(shù)據(jù)卷綁定上我們聲明的PVC,這里容器路徑填寫(xiě)/skywalking/agent,也就是將這個(gè)PVC掛載到SideCar鏡像的/skywalking/agent目錄
-
然后配置啟動(dòng)命令如下,主要實(shí)現(xiàn)了目錄創(chuàng)建,還有jar包拷貝到PVC對(duì)應(yīng)的NFS上
入口: /bin/sh 命令: -c 'set -ex; mkdir -p /skywalking/agent; cp -R /usr/skywalking/agent/* /skywalking/agent;'
## 修改原鏡像配置文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-675558.html
- 配置卷映射,將PVC綁定到/skywalking/agent下,這樣就實(shí)現(xiàn)了兩個(gè)鏡像之間,通過(guò)NFS鏡像文件共享
- 添加環(huán)境變量如下
SW_AGENT_NAME 指明當(dāng)前服務(wù)在Skywalking下顯示的名字
SKYWALKING_OPTS 指定SW啟動(dòng)參數(shù)
SW_AGENT_COLLECTOR_BACKEND_SERVICES 指定SW_OAP_SERVER地址
修改自己的服務(wù)的DockerFile
在自己服務(wù)中添加Skywalking啟動(dòng)參數(shù)SKYWALKING_OPTS,或者簡(jiǎn)單粗暴,直接加上-javaagent也行文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-675558.html
日志整合
給自己的項(xiàng)目添加pom依賴
// 日志依賴
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>8.5.0</version>
</dependency>
// 追蹤id
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>8.5.0</version>
</dependency>
修改logback-spring.xml日志配置
<configuration>
<property name="APM_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級(jí)別從左顯示5個(gè)字符寬度%msg:日志消息,%n是換行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %thread %logger %level - [%tid] %msg %n
</pattern>
</encoder>
</appender>
<appender name="sw-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
<Pattern>${APM_PATTERN}</Pattern>
</layout>
</encoder>
</appender>
<!-- root級(jí)別 INFO -->
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
<root level="WARN">
<appender-ref ref="sw-log"/>
</root>
</configuration>
到了這里,關(guān)于Skywalking8.5.0-ES7 Rancher部署及ES高可用部署過(guò)程記錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!