elk入门_ELK堆栈入门
elk入門
朋友不允許朋友寫用戶身份驗證。 厭倦了管理自己的用戶? 立即嘗試Okta的API和Java SDK。 數分鐘之內即可在任何應用程序中對用戶進行身份驗證,管理和保護。
好的設計原則要求微服務架構是可觀察的,并提供集中的監視工具。 該工具使開發團隊可以驗證整個系統的運行狀況,檢查日志和錯誤以及在部署后獲取反饋。 那么什么是彈性(或ELK)堆棧,為什么它是滿足此需求的絕佳選擇?
在本教程中,您將學習如何…
- 在Docker容器中設置并運行ELK堆棧
- 設置JHipster控制臺以監視微服務基礎架構
- 使用JHipster創建微服務架構
- 使用JHipster控制臺啟用監視
- 為微服務配置OpenID Connect身份驗證
彈性堆棧的演變
首字母縮寫詞ELK代表Elasticsearch,Logstash和Kibana ,這三個開源項目構成了功能強大的堆棧,用于日志攝取和可視化,日志搜索,事件分析以及用于監視應用程序的有用的可視化指標。
E lasticsearch是堆棧的核心:一個基于JSON的搜索和分析引擎,可分布式且可擴展。 它基于Apache Lucene構建,并提供JSON REST API,集群管理,高可用性和容錯能力。
L ogstash是一種ETL(提取,轉換,加載)工具,用于豐富文檔,運行數據處理管道。 這些管道從多個來源獲取數據,進行轉換并將其發送到Elasticsearch。
K ibana提供可視化前端,這是進入Elastic Stack的窗口。 借助儀表板和可視化元素,可以瀏覽,匯總和分析Elasticsearch中存儲的數據。
從版本7開始,ELK堆棧被重命名為Elastic Stack ,并將Beats添加到堆棧中。 Beats是與Elasticsearch和Logstash一起使用的輕量級數據托運人系列。
設置彈性堆棧
Elastic發布了Docker Compose配置 ,以演示單臺計算機上的堆棧組件。 安裝Docker和Docker Compose并按照以下步驟啟動堆棧:
Windows用戶必須配置2個環境變量,查看堆棧docker github存儲庫上的說明
至少為容器提供4GB的RAM,并查看有關您的環境的說明
- 克隆stack-docker存儲庫
- 使用Docker Compose設置堆棧
設置完成后,它將輸出彈性用戶的密碼 。 如果連接速度較慢,則最多可能需要20分鐘。 完成后,您將看到以下日志:
setup_1 | Setup completed successfully. To start the stack please run:setup_1 | docker-compose up -dsetup_1 |setup_1 | If you wish to remove the setup containers please run:setup_1 | docker-compose -f docker-compose.yml -f docker-compose.setup.yml down --remove-orphanssetup_1 |setup_1 | You will have to re-start the stack after removing setup containers.setup_1 |setup_1 | Your 'elastic' user password is: Z8GFVXu9UVsBrM6nup5fHw==stack-docker_setup_1 exited with code 0- 啟動堆棧
在前臺啟動堆棧以查看容器日志:
docker-compose up當您看到Kibana記錄了Beats家族發送的對健康檢查請求的響應并且您在日志中看到至少一個心跳條目時,可以嘗試登錄(下面的步驟4):
kibana | {"type":"response","@timestamp":"2019-09-23T20:38:47Z","tags":[],"pid":1,"method":"get","statusCode":200,"req":{"url":"/login?next=%2F","method":"get","headers":{"host":"kibana:5601","user-agent":"Go-http-client/1.1","referer":"http://kibana:5601"},"remoteAddress":"172.25.0.9","userAgent":"172.25.0.9","referer":"http://kibana:5601"},"res":{"statusCode":200,"responseTime":30,"contentLength":9},"message":"GET /login?next=%2F 200 30ms - 9.0B"}...heartbeat | 2019-09-23T20:38:52.213Z INFO [monitoring] log/log.go:144 Non-zero metrics in the last 30s {"monitoring": {"metrics": {"beat":{"cpu":{"system":{"ticks":160,"time":{"ms":50}},"total":{"ticks":430,"time":{"ms":120},"value":430},"user":{"ticks":270,"time":{"ms":70}}},"handles":{"limit":{"hard":1048576,"soft":1048576},"open":9},"info":{"ephemeral_id":"d8d4f6a2-39fa-41cb-9e9c-520438d49a9e","uptime":{"ms":93132}},"memstats":{"gc_next":4194304,"memory_alloc":3365792,"memory_total":12191384,"rss":327680}},"libbeat":{"config":{"module":{"running":0}},"output":{"events":{"acked":24,"batches":6,"total":24},"read":{"bytes":5970},"write":{"bytes":16878}},"pipeline":{"clients":4,"events":{"active":0,"published":24,"total":24},"queue":{"acked":24}}},"system":{"load":{"1":4.83,"15":2.43,"5":3.44,"norm":{"1":1.2075,"15":0.6075,"5":0.86}}}}}} 您可能會在日志輸出中注意到異常。 對于此演示,可以安全地忽略它們。 如果您遇到docker的任何問題,可以從以下位置重新開始:
docker container ls -a | cut -c1-12 | xargs docker container rm --force docker images | cut -c69-80 | xargs docker rmi docker system prune -a
注意:這將銷毀所有docker容器,映像和網絡,因此使用后果自負。
- 轉到http:// localhost:5601登錄到Kibana。
登錄后(使用彈性用戶和您在上面捕獲的密碼),通過左側菜單從“儀表板”部分中瀏覽已安裝的儀表板。 心跳是Beat服務之一,可從提供的URL列表中監視您的服務正常運行時間。 打開儀表板Heartbeat HTTP監視,并查看堆棧的功能以進行數據可視化。
JHipster控制臺
Jhipster控制臺是基于Elastic Stack的出色監控解決方案,可隨著時間的推移可視化和分析JHipster應用程序指標。 控制臺提供了預配置的儀表板,以監視微服務基礎架構。 您可以在JHipster Console的文檔中查看功能的完整列表。
從JHipster控制臺啟動的一種更簡單的方法是部署應用程序,并使用docker -compose子生成器啟用監視。 您將使用它來:
- 使用JHipster創建微服務架構
- 使用JHipster控制臺啟用監視
- 配置OpenID Connect以對微服務進行身份驗證
使用JHipster創建Java微服務架構
要安裝一個版本JHipster的,將在這里工作,你需要安裝Node.js的 。
安裝JHipster
npm install -g generator-jhipster@6.3.1 jhipster --version版本命令應輸出如下內容:
INFO! Using JHipster version installed globally 6.3.1為項目創建目錄:
mkdir jhipster cd jhipster創建apps.jh以使用JHipster域語言(JDL)定義商店,博客和網關微服務。 我們將重新創建本教程之前構建的基于Java的微服務架構示例。
application {config {baseName gateway,packageName com.okta.developer.gateway,applicationType gateway,authenticationType oauth2,prodDatabaseType postgresql,serviceDiscoveryType eureka,testFrameworks [protractor]}entities Blog, Post, Tag, Product }application {config {baseName blog,packageName com.okta.developer.blog,applicationType microservice,authenticationType oauth2,prodDatabaseType postgresql,serverPort 8081,serviceDiscoveryType eureka}entities Blog, Post, Tag }application {config {baseName store,packageName com.okta.developer.store,applicationType microservice,authenticationType oauth2,databaseType mongodb,devDatabaseType mongodb,prodDatabaseType mongodb,enableHibernateCache false,serverPort 8082,serviceDiscoveryType eureka}entities Product }entity Blog {name String required minlength(3),handle String required minlength(2) }entity Post {title String required,content TextBlob required,date Instant required }entity Tag {name String required minlength(2) }entity Product {title String required,price BigDecimal required min(0),image ImageBlob }relationship ManyToOne {Blog{user(login)} to User,Post{blog(name)} to Blog }relationship ManyToMany {Post{tag(name)} to Tag{post} }paginate Post, Tag with infinite-scroll paginate Product with paginationmicroservice Product with store microservice Blog, Post, Tag with blog現在,在您的jhipster文件夾中,運行import-jdl generator 。
jhipster import-jdl apps.jh使用
在項目文件夾中,為docker-compose配置創建一個子文件夾,然后運行該子生成器。
mkdir docker-compose cd docker-compose jhipster docker-compose生成器將要求您定義以下配置:
您可以在下面的記錄中查看其工作原理。
當發電機快要用完時,輸出中將顯示警告:
WARNING! Docker Compose configuration generated, but no Jib cache found If you forgot to generate the Docker image for this application, please run: To generate the missing Docker image(s), please run:./mvnw package -Pprod verify jib:dockerBuild in /home/indiepopart/jhipster/blog./mvnw package -Pprod verify jib:dockerBuild in /home/indiepopart/jhipster/gateway./mvnw package -Pprod verify jib:dockerBuild in /home/indiepopart/jhipster/store您可以按照上述說明創建微服務映像,或創建一個聚合器pom.xml并僅使用一個命令來構建所有映像,如我們在Java微服務上的文章所述。
為您的微服務設置Okta OpenID Connect(OIDC)身份驗證
默認情況下,微服務架構通過Keycloak進行身份驗證。 更新設置以將Okta用作身份驗證提供程序:
首先,前往Okta以獲得免費的開發者帳戶 。
登錄后,點擊您的單位 ,它將帶您進入開發者控制臺 。 轉到“ 應用程序”部分,并添加一個新的Web應用程序 。 設置以下身份驗證設置:
- 名稱:為您的應用程序命名
- 基本URI: http://localhost:8761和http://localhost:8080
- 登錄重定向URI: http://localhost:8080/login/oauth2/code/oidc和http://localhost:8761/login/oauth2/code/oidc
- 允許的授予類型:授權碼和刷新令牌
為簡單起見,本教程僅創建Web App,并且其憑據將用于所有服務。 在實際環境中,每個服務都必須使用其自己的憑據進行標識,并且您應該在Okta控制臺中為它們中的每個創建一個Web應用程序或服務。
復制Client ID和Client secret ,因為我們將使用它來進行應用程序的設置。 在Okta信息中心的右上角找到組織URL 。
創建具有以下內容的docker-compose/.env文件:
OIDC_CLIENT_ID=<client_id> OIDC_CLIENT_SECRET=<client_secret> RESOURCE_ISSUER_URI=<org_url>/oauth2/default編輯docker-compose/docker-compose.yml并更新服務blog-app , gateway-app和store-app的SECURITY_*設置:
SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_OIDC_ISSUER_URI=${RESOURCE_ISSUER_URI} SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_OIDC_CLIENT_ID=${OIDC_CLIENT_ID} SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_OIDC_CLIENT_SECRET=${OIDC_CLIENT_SECRET}必須為JHipster注冊表設置相同的身份驗證。 編輯docker-compose/jhipster-registry.yml并設置與gateway-app的environment部分相同的值。
JHipster應用程序需要特定的用戶角色ROLE_USER和ROLE_ADMIN作為ID令牌中的聲明。 在Okta開發人員控制臺中,轉到“ 用戶” >“ 組”,并為每個JHipster角色創建一個組,然后將用戶添加到每個組。
現在轉到“ API” >“ 授權服務器” ,選擇默認服務器,然后使用以下設置添加“聲明 ”:
啟用調試日志和Zipkin
要將調試日志發送到JHipster控制臺,讓我們更新prod配置文件中的日志級別。 編輯src/main/resources/config/application-prod.yml ,以將com.okta.developer.*記錄器的每個服務( blog-app , store-app和gateway-app )的級別設置為DEBUG 。 例如,在博客的application-prod.yml :
logging:level:com.okta.developer.blog: DEBUG另外,對于每個服務,更新產品配置文件處于活動狀態時要加載的LoggingAspectConfiguration 。 更改@Profile批注:
@Configuration @EnableAspectJAutoProxy public class LoggingAspectConfiguration {@Bean@Profile({JHipsterConstants.SPRING_PROFILE_DEVELOPMENT, JHipsterConstants.SPRING_PROFILE_PRODUCTION})public LoggingAspect loggingAspect(Environment env) {return new LoggingAspect(env);} }Zipkin是一個分布式跟蹤系統,可幫助解決微服務體系結構中的延遲問題。 通過在服務之間傳播traceId,可以將對不同服務的調用進行關聯并作為同一流的一部分進行分析。 JHipster控制臺提供了Zipkin服務器和UI,并且JHipster應用程序可以通過Spring Cloud Sleuth與Zipkin集成。 要啟用Zipkin跟蹤,請將zipkin配置文件添加到zipkin docker-compose/docker-compose.yml blog-app , gateway-app和store-app 。
- SPRING_PROFILES_ACTIVE=prod,swagger,zipkin您還需要使用以下Maven命令使用zipkin配置文件為blog-app , store-app和gateway-app重建Docker映像:
./mvnw package -Pprod -Pzipkin verify jib:dockerBuild -DskipTests ProTip:如果您使用的是具有bash shell的系統(例如Linux或MacOs),則可以從jhipster文件夾執行此操作,以一次構建每個項目:
for i in blog gateway store do cd $i ./mvnw package -Pprod -Pzipkin verify jib:dockerBuild -DskipTests cd .. done
運行受監控的微服務架構
您準備好了嗎? 轉到docker-compose文件夾,并使用以下命令啟動服務:
docker-compose upjhipster-registry_1 | ---------------------------------------------------------- jhipster-registry_1 | Application 'jhipster-registry' is running! Access URLs: jhipster-registry_1 | Local: http://localhost:8761 jhipster-registry_1 | External: http://172.20.0.2:8761 jhipster-registry_1 | Profile(s): [composite, dev, swagger, oauth2] jhipster-registry_1 | ----------------------------------------------------------使用Okta用戶憑據登錄到http://localhost:8761的JHipster注冊表,并檢查服務的運行狀況。
所有服務啟動后,登錄到網關應用程序并創建一些博客和帖子以產生流量。 為此,請使用應用程序左上方的“ 實體”菜單。 網關的主頁位于http://localhost:8080 。
有趣的部分! 通過http://localhost:5601訪問JHipster控制臺。 轉到“儀表板”部分,然后打開“ requests-dashboard” 。 您應該會看到一些漂亮的曲線:
由于您將JHipster控制臺與Zipkin UI集成在一起,因此在traces-dashboard中,您可以在左側找到最長的跟蹤持續時間。 如果單擊右側的traceId,它將在UI中打開跟蹤,您將能夠檢查流。
了解有關JHipster和Elastic Stack的更多信息
我希望您喜歡本教程以及Elastic Stack和JHipster Console監視微服務架構的功能。 要繼續擴展您對JHipster監控以及Okta與Elastic Stack集成的知識,請查看以下鏈接:
- Github上的JHipster控制臺
- JHipster監視文檔
- SAML身份驗證和彈性堆棧
- Kibana中的身份驗證
如果您喜歡這篇文章,那么您很可能會喜歡我們關于JHipster和微服務的其他文章:
- 帶有Java 12和JHipster 6的更好,更快,更輕量的Java
- 通過Java Hipster升級Spring Security OAuth和JUnit測試
- 帶有Spring Boot和Spring Cloud的Java微服務
- 帶有Spring Cloud Config和JHipster的Java微服務
- 使用Spring Cloud Gateway保護React式微服務
要在我們發布新帖子時得到通知, 請在Twitter上關注@oktadev 。 我們還會定期將截屏視頻發布到我們的YouTube頻道 。
ELK堆棧入門最初于2019年9月26日發布在Okta開發人員博客上。
朋友不允許朋友寫用戶身份驗證。 厭倦了管理自己的用戶? 立即嘗試Okta的API和Java SDK。 數分鐘之內即可在任何應用程序中對用戶進行身份驗證,管理和保護。
翻譯自: https://www.javacodegeeks.com/2019/10/get-started-with-the-elk-stack.html
elk入門
總結
以上是生活随笔為你收集整理的elk入门_ELK堆栈入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 朶怎么读 朶的拼音及解释
- 下一篇: 也组词 也组词有哪些