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存储库
git clone https://github.com/elastic/stack-docker.git
  • 使用Docker Compose设置堆栈
cd stack-dockerdocker-compose -f setup.yml up

设置完成后,它将输出弹性用户的密码 。 如果连接速度较慢,则最多可能需要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

生成器将要求您定义以下配置:

  1. 应用程序类型:微服务应用程序
  2. 网关类型: 基于Zuul的JHipster
  3. 包括哪些应用程序: 博客网关商店
  4. 如果数据库是集群的:
  5. 如果必须启用监视: 是,使用JHipster控制台
  6. 监视其他技术: Zipkin
  7. JHipster注册表的密码: 默认

您可以在下面的记录中查看其工作原理。

当发电机快要用完时,输出中将显示警告:

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:8761http://localhost:8080
  • 登录重定向URI: http://localhost:8080/login/oauth2/code/oidchttp://localhost:8761/login/oauth2/code/oidc
  • 允许的授予类型:授权码和刷新令牌

为简单起见,本教程仅创建Web App,并且其凭据将用于所有服务。 在实际环境中,每个服务必须使用其自己的凭据进行标识,并且您应该在Okta控制台中为每个服务创建一个Web应用程序或服务。

复制Client IDClient 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-appgateway-appstore-appSECURITY_*设置:

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_USERROLE_ADMIN作为ID令牌中的声明。 在Okta开发人员控制台中,转到“ 用户” >“ 组”,并为每个JHipster角色创建一个组,然后将用户添加到每个组。

现在转到“ API” >“ 授权服务器” ,选择默认服务器,然后使用以下设置添加“声明 ”:

  1. 名称:团体
  2. 包含在令牌类型中:ID令牌,始终
  3. 值类型:组
  4. 过滤器:匹配正则表达式,将正则表达式设置为.*

启用调试日志和Zipkin

要将调试日志发送到JHipster控制台,让我们更新prod配置文件中的日志级别。 编辑src/main/resources/config/application-prod.yml以将com.okta.developer.*记录器的每个服务( blog-appstore-appgateway-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-appgateway-appstore-app

- SPRING_PROFILES_ACTIVE=prod,swagger,zipkin

您还需要使用以下Maven命令使用zipkin配置文件为blog-appstore-appgateway-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 up
jhipster-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 StackJHipster 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保护反应式微服务

要在我们发布新帖子时得到通知, 请在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/341031.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

speex在stm32f407单片机上的移植

最近做的网络语音的项目需要用到speex中的一些功能&#xff0c;查了一下资料发现移植给mcu的经验大多零零碎碎&#xff0c;自己捣鼓了一晚上总算是移植好了&#xff0c;写个博客记录一下。1.获取speex源码 官方下载&#xff1a; 官方地址 博主移植用的源码以及移植好的工程下…

vmware网络桥接模式无法上网的解决办法

1.vmware->编辑->虚拟网络编辑器->桥接模式->选择有线网卡 2.VMware-虚拟机设置-网络适配器-桥接模式-复制物理网络连接状态、启动时连接 3.重启虚拟机&#xff0c;完成 如果出现连接到网络但是无法上网的情况&#xff0c;还需做如下处理 1.sudo gedit /etc/res…

oracle idm_深入了解Oracle IDM审核

oracle idm在处理敏感信息的任何产品中&#xff0c; 报告都是至关重要的功能。 同样适用于身份和访问管理工具。 Oracle IDM的审核模块是其OOTB报告功能的基础。 让我们快速了解一下审核引擎以及它如何促进OIM中的报告功能。 这里介绍的用例很简单– 在OIM中更改为用户记录。 …

C语言编写贪吃蛇游戏

自己用C语言编写一个贪吃蛇游戏&#xff0c;效果如图&#xff1a; 源代码可免费下载&#xff0c;传送门如下&#xff1a; 点击下载贪吃蛇游戏和源代码

两个常见的并发错误

作为Baeldung的编辑&#xff0c;我很高兴与一位作者一起撰写有关Java通用并发陷阱的文章。 这是一本不错的书&#xff0c;但是假设开发人员具有一定的能力。 我已经看到了几件即时并发失败的事情。 它们很容易添加到代码中&#xff0c;并保证为您提供奇怪的结果。 开发人员仍会…

AWS Loft的数据库周

这是我的笔记&#xff1a; https://databaseweekoctober2019sf.splashthat.com AWS上的数据库&#xff1a;正确工作的正确工具 在许多此类谈话中&#xff0c;我并没有做过深刻的记录。 我正在关注重点。 PostgreSQL排在MySQL之后。 AWS上8种类型的数据库&#xff1a; 关系…

Log4j Bug –减慢您的应用程序

最近&#xff0c;我们正在对流行的SaaS应用程序进行故障排除。 该应用程序间歇性地减慢了速度。 要从问题中恢复&#xff0c;必须重新启动应用程序。 在高流量期间&#xff0c;此应用有时会变慢&#xff1b; 有时在交通繁忙时也是如此。 没有凝聚力模式。 这种应用程序变慢并重…

javafx透明边框_JavaFX技巧6:使用透明颜色

javafx透明边框为用户界面元素选择正确的颜色始终是一个很大的挑战&#xff0c;但是当您开发可重用的框架控件时&#xff0c;开发人员就无法控制使用它们的应用程序的外观和感觉&#xff0c;这甚至更具挑战性。 尽管您可能总是将元素添加到默认的灰色背景之上&#xff0c;但是嵌…

win10 更新 英特尔显示器音频 后显示器音箱没有声音

问题 如题&#xff0c;win10系统更新后显示器音箱没有声音&#xff0c;且右击桌面声音查看播放设备 &#xff08;说明&#xff1a;这是在解决问题之后截的图&#xff0c;没解决前&#xff0c;只有一个“扬声器/听筒”&#xff0c;原先是存在BenQ LCD的&#xff09; 解决过…

unity ppr_智能自动PPR更改事件策略

unity pprADF开发人员普遍认为&#xff0c;将迭代器绑定更改事件策略设置为ppr在性能方面不是一件好事&#xff0c;因为此策略会强制框架刷新每个请求上绑定到此迭代器的所有属性绑定。 这不是真的&#xff01; 框架仅刷新在请求期间已更改的属性和依赖于已更改属性的属性。 …

如何构建一个Maven插件

使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证&#xff0c;管理和保护。 今天尝试Okta。 由于其插件生态系统的普及&#xff0c;Apache Maven仍然是Java领域中最流行的构建工具。 很容易找到一个现有的插件来…

javafx中css选择器_JavaFX技巧12:在CSS中定义图标

javafx中css选择器当您是像我这样来自Swing的UI开发人员时&#xff0c;您很有可能仍在代码中直接设置图像/图标。 最可能是这样的&#xff1a; import javafx.scene.control.Label; import javafx.scene.image.ImageView;public class MyLabel extends Label {public MyLabel(…

python去除图像光照不均匀_CVPR 2020 | 从重建质量到感知质量:用于低光照增强的半监督学习方法...

CVPR 2020 | 从重建质量到感知质量&#xff1a;用于低光照增强的半监督学习方法Code: https://github.com/flyywh/CVPR-2020-Semi-Low-Light1背景本篇为大家介绍我们组被2020年IEEE国际计算机视觉与模式识别会议(CVPR 2020)接收的工作《From Fidelity to Perceptual Quality: A…

多层陶瓷电容器用处_【科普贴】多层陶瓷电容器的制造工序,你知道吗?

本文将向大家介绍多层陶瓷电容器的结构及制造工序。多层陶瓷电容器的基本结构电容器用于储存电荷&#xff0c;其最基本结构如图1所示&#xff0c;在2块电极板中间夹着介电体。图1. 电容器的基本结构电容器的性能指标也取决于能够储存电荷的多少。多层陶瓷电容器为了能够储存更多…

分段式多级离心泵_离心泵与多级离心泵工作原理

离心泵工作原理&#xff1a;离心泵工作时&#xff0c;液体注满泵壳&#xff0c;叶轮高速旋转&#xff0c;液体在离心力作用下产生高速度&#xff0c;高速液体经过逐渐扩大的泵壳通道&#xff0c;动压头转变为静压头。性能特点&#xff1a;高效节能&#xff1a;泵有高效的水力形…

牛客网数据开发题库_数据库刷题—牛客网(21-30)

21.查找所有员工自入职以来的薪水涨幅情况&#xff0c;给出员工编号emp_no以及其对应的薪水涨幅growth&#xff0c;并按照growth进行升序CREATE TABLE employees ( emp_no int(11) NOT NULL, birth_date date NOT NULL, first_name varchar(14) NOT NULL, last_name varchar(16…

弹性堆栈介绍

当您运行对公司至关重要的软件时&#xff0c;您将无法获得仅用于分析一段时间前发生的事情的日志&#xff0c;让客户端告诉您您的应用程序已损坏&#xff0c;而您甚至不知道发生了什么是真实的问题。 解决该问题的方法之一是使用监视和日志记录。 大多数应用程序都将具有日志记…

access统计没有选课的人数_当代大学生发愁求职就业,更发愁“选课”,自主选课变成了负担...

当代大学生除了求职就业&#xff0c;最发愁的就是“选课”。不得不说&#xff0c;随着科技的发展&#xff0c;各行各业都发生了翻天覆地的变化。而在大学里的选课&#xff0c;也因此有了巨大的改变。过去&#xff0c;大学生上课&#xff0c;其实课程都是被安排好的&#xff0c;…

产线数字化软件源码_品质笔记⑥丨卢宇聪:把握数字化趋势,坚定创新发展道路...

6天5夜&#xff0c;跨越3座城市&#xff0c;深度走访7家企业&#xff0c;对话多位企业家……这是一趟开阔视野之旅。我接触了很多之前极少有机会接触的企业&#xff0c;比如做光缆的法尔胜泓晟集团、做节能装备的双良集团、做密封件的天生密封件有限公司等。我以前经常接触的是…

es 安装kopf_Elasticsearch-kopf导览

es 安装kopf当我需要一个插件来显示Elasticsearch的集群状态时&#xff0c;或者需要深入了解通常为经典插件elasticsearch-head所达到的索引时。 由于有很多建议&#xff0c;而且似乎是非官方的继任者&#xff0c;所以我最近更详细地研究了elasticsearch-kopf 。 我喜欢它。 我…