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

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 一、簡要說明
    • 二、環(huán)境配置
    • 四、應(yīng)用測試
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

面試問3個東西,就知道你是否真的上線了項目!

04/21 14:17
1372
閱讀需 17 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

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

本文的宗旨在于通過易于上手實操的方式,教會讀者完成系統(tǒng)ELK日志采集的對接和使用。那你知道對于一個系統(tǒng)的上線考察,必備的幾樣?xùn)|西是什么嗎?其實這也是面試中考察求職者,是否真的做過系統(tǒng)開發(fā)和上線的必備問題。包括:服務(wù)治理(熔斷/限流)、監(jiān)控日志,如果你做的系統(tǒng)里沒有這樣幾個東西,一種是說明系統(tǒng)是玩具項目,另外一種就是壓根沒做過或者沒關(guān)心過。前面的已經(jīng)寫完了,所以今天來給大家寫ELK日志。

本文涉及的工程:

    xfg-dev-tech-elk:https://gitcode.net/KnowledgePlanet/road-map/xfg-dev-tech-elk官網(wǎng):https://www.elastic.co/cn/

一、簡要說明

Elastic Stack 技術(shù)棧,別是 Elasticsearch、Logstash、Kibana 組成,簡稱 ELK 是一套針對日志數(shù)據(jù)做解決方案的框架。它使您能夠聚合來自所有系統(tǒng)和應(yīng)用程序的日志,分析這些日志,并創(chuàng)建可視化來進(jìn)行應(yīng)用程序和基礎(chǔ)設(shè)施監(jiān)控、更快的故障排除、安全分析等。

    E = Elasticsearch:Elasticsearch 是在 Apache Lucene 上構(gòu)建的分布式搜索和分析引擎。對各種語言、高性能和無架構(gòu) JSON 文檔的支持使 Elasticsearch 成為各種日志分析和搜索使用案例的理想選擇。L = Logstash:Logstash 是一個開源數(shù)據(jù)攝取工具,允許您從各種來源收集數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù),并將數(shù)據(jù)發(fā)送到您希望的目標(biāo)。通過預(yù)構(gòu)建的篩選器和對 200 多種插件的支持,Logstash 使用戶能夠輕松攝取數(shù)據(jù),無論數(shù)據(jù)源或類型如何。K = Kibana:Kibana 是一種數(shù)據(jù)可視化和挖掘工具,可以用于日志和時間序列分析、應(yīng)用程序監(jiān)控和運(yùn)營智能使用案例。它提供了強(qiáng)大且易用的功能,例如直方圖、線形圖、餅圖、熱圖和內(nèi)置的地理空間支持。此外,付費的 Kibana 還有 x-pack-jdbc 可以使用,讓你就像使用 MyBatis 操作 MySQL 數(shù)據(jù)庫一樣操作 Elasticsearch 數(shù)據(jù)。

綜上,3個組件的組合使用。由 Logstash 將攝取、轉(zhuǎn)換數(shù)據(jù)并將其發(fā)送到 Elasticsearch 為攝取的數(shù)據(jù)編制索引,并且分析和搜索這些數(shù)據(jù)。最終 Kibana 會將分析結(jié)果可視化。也就是你可以在 Kibana 上實時看到系統(tǒng)的運(yùn)行日志。

二、環(huán)境配置

這里小傅哥做了個工程案例,并配有對應(yīng)的環(huán)境安裝、日志上報,你只需要跟隨接下來的文章說明,即可知道 ELK 如何配置和使用。

    環(huán)境;jdk 1.8、Maven 3.6.x、Docker組件;ELK version 7.17.14 支持 ARM&ARM代碼;在 xfg-dev-tech-elk 測試工程中提供了測試代碼和環(huán)境安裝,綠色按鈕點擊即可安裝【確保你已經(jīng)本地安裝了 Docker】

1. 環(huán)境配置

    docker-compose.yml 運(yùn)行時會加載下面的 kibana、logstash 配置信息。kibana.yml 設(shè)置了資源的基本信息,包括 ES 的連接,中文漢化。logstash.conf 設(shè)置了日志的格式,上報到 es:9200 的地址信息。這些都可以保持默認(rèn)不用修改。

2. 安裝環(huán)境

version:?'3'
#?執(zhí)行腳本;docker-compose -f docker-compose.yml up -d
#?控制臺;GET _cat/indices -?查看 springboot-logstash-?是否存在,上報后存在,則表示接入成功
services:
??elasticsearch:
????image:?elasticsearch:7.17.14
????ports:
??????-?'9200:9200'
??????-?'9300:9300'
????container_name:?elasticsearch
????restart:?always
????environment:
??????-?'cluster.name=elasticsearch'?#?設(shè)置集群名稱為elasticsearch
??????-?'discovery.type=single-node'?#?以單一節(jié)點模式啟動
??????-?"cluster.name=docker-cluster"?#?設(shè)置名稱
??????-?'ES_JAVA_OPTS=-Xms512m?-Xmx512m'?#?設(shè)置使用jvm內(nèi)存大小
????networks:
??????-?elk

??logstash:
????image:?logstash:7.17.14
????container_name:?logstash
????restart:?always
????volumes:
??????-?/etc/localtime:/etc/localtime
??????-?./logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
????ports:
??????-?'4560:4560'
??????-?'50000:50000/tcp'
??????-?'50000:50000/udp'
??????-?'9600:9600'
????environment:
??????LS_JAVA_OPTS:?-Xms1024m?-Xmx1024m
??????TZ:?Asia/Shanghai
??????MONITORING_ENABLED:?false
????links:
??????-?elasticsearch:es?#?可以用es這個域名訪問elasticsearch服務(wù)
????networks:
??????-?elk
????depends_on:
??????-?elasticsearch?#?依賴elasticsearch啟動后在啟動logstash

??kibana:
????image:?kibana:7.17.14
????container_name:?kibana
????restart:?always
????volumes:
??????-?/etc/localtime:/etc/localtime
??????-?./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
????ports:
??????-?'5601:5601'
????links:
??????-?elasticsearch:es?#可以用es這個域名訪問elasticsearch服務(wù)
????environment:
??????-?ELASTICSEARCH_URL=http://elasticsearch:9200?#設(shè)置訪問elasticsearch的地址
??????-?'elasticsearch.hosts=http://es:9200'?#設(shè)置訪問elasticsearch的地址
??????-?I18N_LOCALE=zh-CN
????networks:
??????-?elk
????depends_on:
??????-?elasticsearch

networks:
??elk:
????driver:?bridge?#網(wǎng)絡(luò)

    這是 docker compose 執(zhí)行腳本,如果你本地已經(jīng)安裝了 Docker 可以直接執(zhí)行 安裝即可。安裝完成后,當(dāng)你看到如上截圖,則表示已經(jīng)運(yùn)行。注意 Quick Actions 下可以進(jìn)入日志和控制臺。如果啟動失敗,可以檢查日志。

3. 日志配置

3.1 引入POM - logstash
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>7.3</version>
</dependency>

這個Jar是為了上報應(yīng)用日志用的。工程的根目錄下引入是定義版本,在 xfg-dev-tech-app 模塊下引入是具體的引入。

3.2 logback 采集
#?logstash部署的服務(wù)器IP
logstash:
??host:?127.0.0.1
<springProperty?name="LOG_STASH_HOST"?scope="context"?source="logstash.host"?defaultValue="127.0.0.1"/>

<!--輸出到logstash的appender-->
<appender?name="LOGSTASH"?class="net.logstash.logback.appender.LogstashTcpSocketAppender">
????<!--可以訪問的logstash日志收集端口-->
????<destination>${LOG_STASH_HOST}:4560</destination>
????<encoder?charset="UTF-8"?class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>

<root?level="info">
????<appender-ref?ref="LOGSTASH"/>
</root>
    LOG_STASH_HOST 通過占位符可以使用 yml 配置,這樣方便后期動態(tài)調(diào)整。

四、應(yīng)用測試

1. 啟動應(yīng)用&檢測上報

public?class?Application?{

????public?static?void?main(String[]?args)?{
????????SpringApplication.run(Application.class);
????}

????/**
?????*?curl?http://localhost:8091/api/ratelimiter/login?fingerprint=uljpplllll01009&uId=1000&token=8790
?????*/
????@RequestMapping(value?=?"login",?method?=?RequestMethod.GET)
????public?String?login(String?fingerprint,?String?uId,?String?token)?{
????????log.info("模擬登錄?login?fingerprint:{}",?fingerprint);
????????return?"模擬登錄:登錄成功?"?+?uId;
????}

}

    • 地址:http://0.0.0.0:5601/app/dev_tools#/console命令:

GET _cat/indices

    - 通過命令檢測日志上報

2. 配置日志

地址:http://0.0.0.0:5601/app/discover

2.1 創(chuàng)建索引

    當(dāng)你的應(yīng)用啟動后,會上報數(shù)據(jù)。這個時候在點擊 Discover 會提示你有可用的數(shù)據(jù)。如圖創(chuàng)建索引即可。
2.2 回到監(jiān)控

創(chuàng)建索引后,回到 Discover 即可查看監(jiān)控日志。在這個階段,你可以訪問應(yīng)用程序接口,查看上報日志信息;http://localhost:8091/api/ratelimiter/login?fingerprint=uljpplllll01009&uId=1000&token=8790

    當(dāng)你不段的訪問接口,就可以看到上報的日志數(shù)據(jù)信息了。

小傅哥【星球:碼農(nóng)會鎖】包括了所有這樣的實戰(zhàn)鍛煉;OpenAI大模型應(yīng)用(含支付)、Api網(wǎng)關(guān)、Lottery 抽獎、IM通信、SpringBoot Starter、IDEA Plugin 等。學(xué)習(xí)實戰(zhàn)項目,面試時簡歷才有東西可寫!

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
SPHD-001T-P0.5 1 JST Manufacturing Wire Terminal, 0.33mm2, ROHS COMPLIANT

ECAD模型

下載ECAD模型
$0.04 查看
31894 1 TE Connectivity (31894) PIDG R 22-16 COMM 22-18MIL 1/4

ECAD模型

下載ECAD模型
$0.43 查看
1989764 1 Phoenix Contact Barrier Strip Terminal Block, 2A, 0.5mm2, 1 Row(s), 1 Deck(s), ROHS COMPLIANT

ECAD模型

下載ECAD模型
$0.65 查看

相關(guān)推薦

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

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