职高门户网站建设标准,做网站的经验和体会,wordpress建立非博客,网站维护托管公司elk入门朋友不允许朋友写用户身份验证。 厌倦了管理自己的用户#xff1f; 立即尝试Okta的API和Java SDK。 数分钟之内即可在任何应用程序中对用户进行身份验证#xff0c;管理和保护。 好的设计原则要求微服务架构是可观察的#xff0c;并提供集中的监视工具。 该工具使开… elk入门 朋友不允许朋友写用户身份验证。 厌倦了管理自己的用户 立即尝试Okta的API和Java SDK。 数分钟之内即可在任何应用程序中对用户进行身份验证管理和保护。 好的设计原则要求微服务架构是可观察的并提供集中的监视工具。 该工具使开发团队可以验证整个系统的运行状况检查日志和错误以及在部署后获取反馈。 那么什么是弹性或ELK堆栈为什么它是满足此需求的绝佳选择 在本教程中您将学习如何… 在Docker容器中设置并运行ELK堆栈 设置JHipster控制台以监视微服务基础架构 使用JHipster创建微服务架构 使用JHipster控制台启用监视 为微服务配置OpenID Connect身份验证 弹性堆栈的演变 首字母缩写词ELK代表ElasticsearchLogstash和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: Z8GFVXu9UVsBrM6nup5fHwstack-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// localhost5601登录到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-jhipster6.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 生成器将要求您定义以下配置 应用程序类型微服务应用程序 网关类型 基于Zuul的JHipster 包括哪些应用程序 博客 网关 商店 如果数据库是集群的 否 如果必须启用监视 是使用JHipster控制台 监视其他技术 Zipkin 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 ConnectOIDC身份验证 默认情况下微服务架构通过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_IDclient_id
OIDC_CLIENT_SECRETclient_secret
RESOURCE_ISSUER_URIorg_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” “ 授权服务器” 选择默认服务器然后使用以下设置添加“声明 ” 名称团体 包含在令牌类型中ID令牌始终 值类型组 过滤器匹配正则表达式将正则表达式设置为.* 启用调试日志和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 {BeanProfile({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_ACTIVEprod,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.htmlelk入门