加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 一、章節(jié)目的
    • 二、基本環(huán)境
    • 三、監(jiān)控配置
    • 四、數(shù)據(jù)上報(bào)
    • 五、啟動(dòng)服務(wù)
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

面試官:“你就說,你的系統(tǒng)QPS、TPS、響應(yīng)時(shí)間都是多少!”

04/24 08:47
3587
閱讀需 21 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

作者:小傅哥,博客:https://bugstack.cn

這位同學(xué),你比上一位面試者好多了,你的簡(jiǎn)歷中做的幾個(gè)項(xiàng)目都不錯(cuò)。既有業(yè)務(wù)項(xiàng)目,也有技術(shù)項(xiàng)目,看得出你對(duì)編程開發(fā)是有一定的經(jīng)驗(yàn)積累的。那么我還想了解下,這些項(xiàng)目在運(yùn)行中的一個(gè)數(shù)據(jù)效果是怎么樣的。比如;tps、qps、響應(yīng)時(shí)間、數(shù)據(jù)庫負(fù)載等,都是什么情況,你用的什么監(jiān)控工具。另外你這里還些了微服務(wù)的架構(gòu),那么微服務(wù)間的鏈路調(diào)用是怎么監(jiān)控的。

咋樣,是不一下就慌了。張口就喊:“java 崩盤了!” 以前靠背題吹牛逼就能入職,現(xiàn)在得把吹的牛逼落地了。而越來越多的面試官也更喜歡用結(jié)果推過程,從過程中再考察細(xì)節(jié)。一上來就問八股文的越來越少了。

所以,做完項(xiàng)目,最好在配上對(duì)應(yīng)的數(shù)據(jù),這樣才更有說服力?!?所以本文小傅哥會(huì)教會(huì)你,如何配置一套全鏈路監(jiān)控系統(tǒng),并完成測(cè)試獲取系統(tǒng)運(yùn)行的數(shù)據(jù)。此外這是整套《@小傅哥 Java 簡(jiǎn)明教程》其中的一節(jié),更多內(nèi)容可以進(jìn)入這里學(xué)習(xí);https://bugstack.cn/md/road-map/road-map.html

一、章節(jié)目的

本章節(jié)通過 Docker 方式部署一套 skywalking 非入侵的全鏈路監(jiān)控系統(tǒng),并在對(duì)應(yīng)的測(cè)試工程中通過 skywalking-agent 字節(jié)碼增強(qiáng)組件,采集系統(tǒng)運(yùn)行時(shí)的各項(xiàng)信息到 skywalking-ui 監(jiān)控平臺(tái)觀察數(shù)據(jù)。

    官網(wǎng):https://skywalking.apache.org/ - 如果你想了解更多關(guān)于此類系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),可以閱讀小傅哥的《字節(jié)碼編程》源碼:https://gitcode.net/KnowledgePlanet/road-map/skywalking - 這是小傅哥整理好的一套可運(yùn)行的監(jiān)控和系統(tǒng),讀者可以下載后對(duì)照本文進(jìn)行驗(yàn)證使用。

二、基本環(huán)境

    Docker version 1.13.1Docker compose - 用于在云服務(wù)器環(huán)境中執(zhí)行的 docker-compose 文件Portainer Docker 容器管理面板

以上內(nèi)容安裝,參考【Java簡(jiǎn)明教程/發(fā)布部署】:https://bugstack.cn/md/road-map/road-map.html - 發(fā)布部署

三、監(jiān)控配置

skywalking 的安裝,需要 elasticsearch - 存放數(shù)據(jù)、skywalking-oap 接收數(shù)據(jù)、skywalking-ui 界面展示。以及還需要一個(gè) skywalking-agent 用于配置到應(yīng)用程序中,采集監(jiān)控?cái)?shù)據(jù)。注意這些內(nèi)容在官網(wǎng)中,都已提供,地址:https://skywalking.apache.org/downloads/

因?yàn)樾「蹈邕@里提供了Docker的自動(dòng)部署以及下載好了 skywalking-agent 所以你就不需要一個(gè)個(gè)去下載安裝了。接下來小傅哥會(huì)分別介紹在本地環(huán)境云服務(wù)器兩套環(huán)境安裝,這樣可以更加方便小伙伴做測(cè)試驗(yàn)證。

在進(jìn)行下面的步驟前,請(qǐng)先下載 skywalking 監(jiān)控工程;https://gitcode.net/KnowledgePlanet/road-map/skywalking

1. 本地環(huán)境

腳本:/road-map/skywalking/docs/dev-ops/skywalking - 你可以打開工程找到這個(gè)位置,查看最新腳本。

version:?'3.8'
services:
??elasticsearch:
????image:?elasticsearch:7.16.2
????container_name:?elasticsearch
????ports:
??????-?"9200:9200"
????healthcheck:
??????test:?[?"CMD-SHELL",?"curl?--silent?--fail?localhost:9200/_cluster/health?||?exit?1"?]
??????interval:?30s
??????timeout:?10s
??????retries:?3
??????start_period:?10s
????environment:
??????-?discovery.type=single-node
??????-?bootstrap.memory_lock=true
??????-?"ES_JAVA_OPTS=-Xms512m?-Xmx512m"
????ulimits:
??????memlock:
????????soft:?-1
????????hard:?-1
????volumes:
??????-?./data/es_data:/usr/share/elasticsearch/data

??oap:
????image:?apache/skywalking-oap-server:8.9.0
????container_name:?oap
????depends_on:
??????elasticsearch:
????????condition:?service_healthy
????links:
??????-?elasticsearch
????ports:
??????-?"11800:11800"
??????-?"12800:12800"
????healthcheck:
??????test:?[?"CMD-SHELL",?"/skywalking/bin/swctl?ch"?]
??????interval:?30s
??????timeout:?10s
??????retries:?3
??????start_period:?10s
????environment:
??????SW_STORAGE:?elasticsearch
??????SW_STORAGE_ES_CLUSTER_NODES:?elasticsearch:9200
??????SW_HEALTH_CHECKER:?default
??????SW_TELEMETRY:?prometheus
??????JAVA_OPTS:?"-Xms1024m?-Xmx1024m"

??skywalking-ui:
????image:?apache/skywalking-ui:8.9.0
????container_name:?skywalking-ui
????depends_on:
??????oap:
????????condition:?service_healthy
????links:
??????-?oap
????ports:
??????-?"9090:8080"
????environment:
??????SW_OAP_ADDRESS:?http://oap:12800

    • 在 Docker 安裝并正確?啟動(dòng)后,你就可以點(diǎn)擊這個(gè)按鈕了。它會(huì)幫你自動(dòng)運(yùn)行安裝出整套的 skywalking 監(jiān)控系統(tǒng)。非常方便。如果你點(diǎn)擊紅圈下面的單個(gè)按鈕,那么代表的是只安裝當(dāng)前一個(gè)應(yīng)用。你可以通過命令執(zhí)行

skywalking-docker-compose.yml

    • 的安裝:

/usr/local/bin/docker-compose -f /docs/dev-ops/skywalking/skywalking-docker-compose.yml up -d

    - 在云服務(wù)器端也是使用這個(gè)命令安裝。

訪問驗(yàn)證:http://localhost:9090/ - 我設(shè)置的端口是9090,如果你是其他的則需要修改。

2. 云服務(wù)器

    準(zhǔn)備一臺(tái)2核4G的云服務(wù)器,整個(gè)服務(wù)啟動(dòng)后會(huì)占用2-3G左右下載 ssh 工具,用于連接云服務(wù)。這里小傅哥推薦使用 Termius 非常好用!docker-compose 安裝,參考:https://bugstack.cn/md/road-map/road-map.html - 發(fā)布部署,Docker#7
2.1 文件上傳

通過 ssh 的 sftp 工具,把 skywalking/docs 全部上傳到云服務(wù)器。

2.2 執(zhí)行腳本

[root@dev-ops?~]#?cd?/docs/
[root@dev-ops?docs]#?ls
dev-ops??skywalking-agent??sql
[root@dev-ops?docs]#?cd?dev-ops/
[root@dev-ops?dev-ops]#?ls
environment??skywalking
[root@dev-ops?dev-ops]#?cd?skywalking/
[root@dev-ops?skywalking]#?ls
skywalking-docker-compose.yml
[root@dev-ops?skywalking]#?/usr/local/bin/docker-compose?-f?/docs/dev-ops/skywalking/skywalking-docker-compose.yml?up?-d
[+]?Building?0.0s?(0/0)??????????????????????????????????????????????????????????????????????????
[+]?Running?3/3
???Container?elasticsearch??Healthy?????????????????????????????????????????????????????????0.5s?
???Container?oap????????????Healthy?????????????????????????????????????????????????????????1.0s?
???Container?skywalking-ui??Running?????????????????????????????????????????????????????????0.0s

安裝完成記得開放端口;

    9090 端口;skywalking-ui 界面端口11800 端口;監(jiān)控?cái)?shù)據(jù)上報(bào)端口

安裝完成后就可以訪問監(jiān)控界面了;http://180.76.138.**:9090/ ?- 替換為你的IP地址

四、數(shù)據(jù)上報(bào)

監(jiān)控?cái)?shù)據(jù)的上報(bào)使用的是 Javaagent 技術(shù),在程序編譯時(shí)候通過字節(jié)碼增強(qiáng)技術(shù),在需要監(jiān)控的位置自動(dòng)加上額外的監(jiān)控代碼,來采集系統(tǒng)的運(yùn)行數(shù)據(jù)。所以我們這里可以把 Javaagent 配置到程序啟動(dòng)上,也可以配置到 Docker 鏡像打包上。

1. 程序啟動(dòng) - 加入探針

配置到 IDEA 程序啟動(dòng)中,VM Options 參數(shù):-javaagent:/Users/fuzhengwei/1024/KnowledgePlanet/road-map/skywalking/docs/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking-app-dev -Dskywalking.collector.backend_service=127.0.0.1:11800

    • 注意修改;

地址、應(yīng)用名、IP

    【如果是云服務(wù),就配置云服務(wù)的IP地址】

2. 鏡像打包 - 加入探針

當(dāng)程序需要運(yùn)行在云服務(wù)的 Docker 容器了,就不能這樣配置了,需要把配置打包到鏡像里,更加方便執(zhí)行。

#?基礎(chǔ)鏡像
FROM?openjdk:8-jre-slim
#?作者
MAINTAINER?xiaofuge
#?配置
ENV?PARAMS=""
#?時(shí)區(qū)
ENV?TZ=PRC
RUN?ln?-snf?/usr/share/zoneinfo/$TZ?/etc/localtime?&&?echo?$TZ?>?/etc/timezone
#?添加應(yīng)用
ADD?/target/skywalking-app.jar?/skywalking-app.jar
##?在鏡像運(yùn)行為容器后執(zhí)行的命令
ENTRYPOINT?["java",?"-Xmx512m",?"-javaagent:/docs/skywalking-agent/skywalking-agent.jar",?"-Dskywalking.agent.service_name=skywalking-app",?"-Dskywalking.collector.backend_service=180.76.138.41:11800",?"-jar",?"/skywalking-app.jar"]
    • 注意;

/docs/skywalking-agent/skywalking-agent.jar

    這個(gè)是通過 SFTP 工具上傳到云服務(wù)器端的。但不在 Docker 容器里,等部署程序的時(shí)候還需要做一次文件映射。

五、啟動(dòng)服務(wù)

如果你希望在把應(yīng)用程序部署到云服務(wù)端,一種是通過 IDEA 連接 Docker 服務(wù),另外一種是把應(yīng)用程序的鏡像發(fā)布到Docker Hub。這里我們通過 IDEA 連接 Docker 服務(wù)。參考:https://bugstack.cn/md/road-map/road-map.html - 開通 2375 端口,用完記得關(guān)閉。

腳本:skywalking/src/bin/main/start.sh

CONTAINER_NAME=skywalking-app
IMAGE_NAME=fuzhengwei/skywalking-app:1.0
PORT=9091

echo?"容器部署開始?${CONTAINER_NAME}"

#?停止容器
docker?stop?${CONTAINER_NAME}

#?刪除容器
docker?rm?${CONTAINER_NAME}

#?啟動(dòng)容器 skywalking-agent 下載:https://archive.apache.org/dist/skywalking/java-agent/8.9.0/apache-skywalking-java-agent-8.9.0.tgz
docker?run?--name?${CONTAINER_NAME}?
-p?${PORT}:${PORT}?
-v?/docs/skywalking-agent/:/docs/skywalking-agent/?
-d?${IMAGE_NAME}

#docker?run?--name?skywalking-app?
#-p?9091:9091?
#-v?/docs/skywalking-agent/:/docs/skywalking-agent/?
#-d?fuzhengwei/skywalking-app:1.2

echo?"容器部署成功?${CONTAINER_NAME}"

docker?logs?-f?${CONTAINER_NAME}
    • 你可以在云服務(wù)執(zhí)行 start.sh 腳本,或者直接復(fù)制 docker run 命令,去執(zhí)行啟動(dòng)。注意;

-v /docs/skywalking-agent/:/docs/skywalking-agent/

    是你的映射地址,只有這樣才能拿到 skywalking-agent另外記得按照 MySQL【environment-docker-compose.yml】 到云服務(wù)以及執(zhí)行 road-map.sql 文件。

如果你需要;簡(jiǎn)明學(xué)習(xí)路線、實(shí)戰(zhàn)項(xiàng)目鍛煉、學(xué)習(xí)幫助輔導(dǎo)幫你簡(jiǎn)歷優(yōu)化 - 應(yīng)對(duì)招聘,那么可以掃碼加入小傅哥的知識(shí)星球【碼農(nóng)會(huì)鎖】- 我會(huì)帶著走捷徑直擊目標(biāo),完成實(shí)戰(zhàn)項(xiàng)目,提高編程思維,鍛煉編碼能力。

- END -

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
TLP291-4(GB-TP,E(T 1 Toshiba America Electronic Components Optocoupler - Transistor Output, 4 CHANNEL TRANSISTOR OUTPUT OPTOCOUPLER, ROHS COMPLIANT, SURFACE MOUNT, MINIFLAT, 11-11F1, SOP-16

ECAD模型

下載ECAD模型
$2.3 查看
ABS09-32.768KHZ-9-T 1 Abracon Corporation CRYSTAL 32.7680KHZ 9PF SMD

ECAD模型

下載ECAD模型
$1.16 查看
NL17SZ126DFT2G 1 onsemi Single Non-Inverting Buffer, 3-State, SC-88A (SC-70-5 / SOT-353), 3000-REEL

ECAD模型

下載ECAD模型
$0.31 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

作者小傅哥多年從事一線互聯(lián)網(wǎng)Java開發(fā),從19年開始編寫工作和學(xué)習(xí)歷程的技術(shù)匯總,旨在為大家提供一個(gè)較清晰詳細(xì)的核心技能學(xué)習(xí)文檔。如果本文能為您提供幫助,請(qǐng)給予支持(關(guān)注、點(diǎn)贊、分享)!