当前位置: 首页 > news >正文

编辑网站的软件手机电子工程网账号

编辑网站的软件手机,电子工程网账号,西安市在建工程项目,wordpress组件作者#xff1a;来自 Elastic Jack Shirazi•Sylvain Juge•Alexander Wert Elastic APM K8s Attacher 允许将 Elastic APM 应用程序代理#xff08;例如 Elastic APM Java 代理#xff09;自动安装到 Kubernetes 集群中运行的应用程序中。该机制使用变异 webhook#xff0…作者来自 Elastic Jack Shirazi•Sylvain Juge•Alexander Wert Elastic® APM K8s Attacher 允许将 Elastic APM 应用程序代理例如 Elastic APM Java 代理自动安装到 Kubernetes 集群中运行的应用程序中。该机制使用变异 webhookmutating webhook这是一个标准的 Kubernetes 组件但你无需了解使用 Attacher 的所有详细信息。本质上你可以安装 Attacher向任何包含你想要监控的应用程序的 Kubernetes 部署添加一个注释annotation就这样 在本博客中我们将使用 Java 应用程序从头开始介绍一个完整的示例。除了 Java 代码和为应用程序使用 JVM 之外对于 Attacher 支持的其他语言其他一切都相同。 先决条件 本演练假设系统上已安装以下内容JDK 17、Docker、Kubernetes 和 Helm。 示例应用程序 虽然该应用程序如下所示是 Java 应用程序但它可以轻松地用任何语言实现因为它只是一个简单的循环每 2 秒调用一次方法链 methodA-methodB-methodC-methodD其中 methodC 休眠 10 毫秒methodD 休眠 200 毫秒。选择应用程序只是为了能够在 Elastic APM UI 中清楚地显示正在监视该应用程序。 完整的 Java 应用程序如下所示 package test;public class Testing implements Runnable {public static void main(String[] args) {new Thread(new Testing()).start();}public void run(){while(true) {try {Thread.sleep(2000);} catch (InterruptedException e) {}methodA();}}public void methodA() {methodB();}public void methodB() {methodC();}public void methodC() {System.out.println(methodC executed);try {Thread.sleep(10);} catch (InterruptedException e) {}methodD();}public void methodD() {System.out.println(methodD executed);try {Thread.sleep(200);} catch (InterruptedException e) {}} }我们为你创建了一个包含该简单 Java 应用程序的 Docker 镜像可从以下 Docker 存储库中提取 docker.elastic.co/demos/apm/k8s-webhook-test部署 pod 首先我们需要一个部署配置。我们将配置文件命名为 webhook-test.yaml内容非常少 — 只需拉取镜像并将其作为默认命名空间中名为 webhook-test 的 pod 和容器运行即可 apiVersion: v1 kind: Pod metadata:name: webhook-testlabels:app: webhook-test spec:containers:- image: docker.elastic.co/demos/apm/k8s-webhook-testimagePullPolicy: Alwaysname: webhook-test这可以使用 kubectl 正常部署 kubectl apply -f webhook-test.yaml结果正如预期 $ kubectl get pods NAME READY STATUS RESTARTS AGE webhook-test 1/1 Running 0 10s$ kubectl logs webhook-test methodC executed methodD executed methodC executed methodD executed到目前为止这只是设置了一个没有 APM 监控的标准 Kubernetes 应用程序。现在我们开始讨论有趣的部分添加自动检测。 安装 Elastic APM K8s Attacher 第一步是安装 Elastic APM K8s Attacher。对于集群这只需要执行一次 — 一旦安装它就始终可用。在安装之前我们将定义监视数据的去向。正如你稍后将看到的我们可以随时决定或更改这一点。现在我们将指定我们自己的 Elastic APM 服务器该服务器位于 https://myserver.somecloud:443 — 我们还有一个用于授权该 Elastic APM 服务器的秘密令牌其值为 MY_SECRET_TOKEN。如果你想设置快速测试 Elastic APM 服务器你可以在 https://cloud.elastic.co/ 上进行设置。 为应用程序设置了两个额外的环境变量这些变量通常不需要但当我们在演练结束时看到生成的 UI 内容时会有所帮助当代理自动安装时这两个变量会告诉代理在 UI 中给这个应用程序起什么名字以及要跟踪什么方法。现在我们只需要定义自定义 yaml 文件来保存这些内容。安装时自定义 yaml 将合并到 Attacher 的 yaml 中 apm:secret_token: MY_SECRET_TOKENnamespaces:- default webhookConfig:agents:java:environment:ELASTIC_APM_SERVER_URL: https://myserver.somecloud:443ELASTIC_APM_TRACE_METHODS: test.Testing#methodBELASTIC_APM_SERVICE_NAME: webhook-test该 custom.yaml 文件就是我们安装附加器所需的全部内容请注意我们目前仅为代理自动安装指定了默认命名空间 - 这可以轻松更改稍后你将看到。接下来我们将 Elastic 图表添加到 helm - 这只需执行一次然后所有 Elastic 图表都可用于 helm。这是常用的 helm add repo 命令具体来说 helm repo add elastic https://helm.elastic.co现在 Elastic 图表可供安装helm search repo 将显示所有可用图表。我们将使用 “elastic-webhook” 作为安装名称从而产生以下安装命令 helm install elastic-webhook elastic/apm-attacher --namespaceelastic-apm --create-namespace --values custom.yaml就这样我们现在安装了 Elastic APM K8s Attacher并将其设置为将数据发送到 custom.yaml 文件中定义的 APM 服务器如果需要你可以使用 helm list -A 确认安装。 自动安装 Java 代理 Elastic APM K8s Attacher 已安装但它不会将 APM 应用程序代理自动安装到每个 pod 中 — 这可能会导致问题相反Attacher 被故意限制为将代理自动安装到 a) 由 custom.yaml 中列出的命名空间定义的部署中以及 b) 那些具有特定注释 “co.elastic.apm/attach” 的命名空间中的部署中。 因此目前重新启动我们上面创建的 webhook-test pod 不会对 pod 产生任何不同的影响因为它尚未设置为受监控。我们需要做的是添加注释annotation。具体来说我们需要使用与 Attacher 一起安装的默认代理配置为 Java 代理添加注释该配置称为 “java”我们稍后会看到该代理配置是如何更改的 — 默认配置会安装最新的代理版本并将该版本的所有其他内容保留为默认设置。因此将该注释添加到 webhook-test yaml 中会为我们提供新的 yaml 文件内容附加配置显示为标签 (1) apiVersion: v1 kind: Pod metadata:name: webhook-testannotations: #(1)co.elastic.apm/attach: java #(1)labels:app: webhook-test spec:containers:- image: docker.elastic.co/demos/apm/k8s-webhook-testimagePullPolicy: Alwaysname: webhook-test应用此更改使我们现在可以监控应用程序 $ kubectl delete -f webhook-test.yaml pod webhook-test deleted $ kubectl apply -f webhook-test.yaml pod/webhook-test created $ kubectl logs webhook-test … StartupInfo - Starting Elastic APM 1.45.0 …由于代理现在正在将数据提供给我们的 APM 服务器我们现在可以在 UI 中看到它 请注意由于 custom.yaml 中的 ELASTIC_APM_TRACE_METHODS 环境变量设置为 test.Testing#methodB因此代理将 Testing.methodB 方法标识为跟踪根 — 这会告诉代理专门跟踪该方法。该方法所花费的时间将在每次调用的 UI 中可用但我们目前看不到子方法。在下一节中我们将看到自定义 Attacher 是多么容易并且在这样做时我们将看到有关应用程序中正在执行的方法链的更多详细信息。 自定义代理 在你的系统中你可能会有开发、测试和生产环境。你需要指定要使用的代理版本而不仅仅是提取最新版本你需要对某些应用程序或实例进行调试并且你需要将特定选项设置为特定值。这听起来很费劲但附加器可以让你以非常简单的方式启用这些类型的更改。在本节中我们将添加一个指定所有这些更改的配置我们可以看到配置和启用它是多么容易。 我们从上面定义的 custom.yaml 文件开始。这是合并到 Attacher 中的文件。添加一个包含上一段列出的所有项目的新配置很容易 —— 尽管首先我们需要为新配置确定一个名称。我们在这里将其称为 “java-interesting”。完整的新 custom.yaml 是第一部分与之前相同新配置只是附加的 apm:secret_token: MY_SECRET_TOKENnamespaces:- default webhookConfig:agents:java:environment:ELASTIC_APM_SERVER_URL: https://myserver.somecloud:443ELASTIC_APM_TRACE_METHODS: test.Testing#methodBELASTIC_APM_SERVICE_NAME: webhook-testjava-interesting:image: docker.elastic.co/observability/apm-agent-java:1.52.0artifact: /usr/agent/elastic-apm-agent.jarenvironment:ELASTIC_APM_SERVER_URL: https://myserver.somecloud:443ELASTIC_APM_TRACE_METHODS: test.Testing#methodBELASTIC_APM_SERVICE_NAME: webhook-testELASTIC_APM_ENVIRONMENT: testingELASTIC_APM_LOG_LEVEL: debugELASTIC_APM_PROFILING_INFERRED_SPANS_ENABLED: trueJAVA_TOOL_OPTIONS: -javaagent:/elastic/apm/agent/elastic-apm-agent.jar将附加配置分解我们有 新配置的名称 java-interestingAPM Java 代理映像 docker.elastic.co/observability/apm-agent-java 使用特定版本 1.43.0 而不是最新我们需要指定代理 jar 位置附件将其放在此处 artifact“/usr/agent/elastic-apm-agent.jar”然后是环境变量 ELASTIC_APM_SERVER_URL 与之前一样ELASTIC_APM_ENVIRONMENT 设置为 testing在 UI 中查看时很有用ELASTIC_APM_LOG_LEVEL 设置为 debug 以获得更详细的代理输出ELASTIC_APM_PROFILING_INFERRED_SPANS_ENABLED 启用它设置为 true将为我们提供有关应用程序中正在执行的方法链的其他有趣信息最后我们需要将 JAVA_TOOL_OPTIONS 设置为启用启动代理“-javaagent:/elastic/apm/agent/elastic-apm-agent.jar” —— 这基本上是 Attacher 自动附加 Java 代理的方式 Java 代理的更多配置和配置选项详细信息可在此处找到其他语言代理也可用。 使用新配置跟踪的应用程序 最后我们只需使用更改后的 custom.yaml 升级附加程序 helm upgrade elastic-webhook elastic/apm-attacher --namespaceelastic-apm --create-namespace --values custom.yaml这是与原始安装相同的命令但现在使用升级。就是这样 — 将配置添加到 custom.yaml 并升级附件就完成了很简单。 当然我们仍然需要在应用程序上使用新配置。在本例中我们将编辑现有的 webhook-test.yaml 文件将 java 替换为 java-interesting因此注释行现在是 co.elastic.apm/attach: java-interesting应用新的 pod 配置并重新启动 pod你可以看到日志现在包含调试输出 $ kubectl delete -f webhook-test.yaml pod webhook-test deleted $ kubectl apply -f webhook-test.yaml pod/webhook-test created $ kubectl logs webhook-test … StartupInfo - Starting Elastic APM 1.44.0 … … DEBUG co.elastic.apm.agent. … … DEBUG co.elastic.apm.agent. …更有趣的是 UI。现在推断跨度inferred spans已打开完整的方法链可见。 这给出了 methodB 的详细信息它耗时 211 毫秒因为它调用 methodC - 10 毫秒 - 而 methodC 又调用 methodD - 200 毫秒。methodC 和 methodD 的时间是推断出来的而不是记录出来的推断出来的而不是跟踪出来的 — 如果你需要准确的时间你可以把这些方法添加到 trace_methods 中然后对它们进行跟踪。 关于 ECK operator 的说明 Elastic Cloud on Kubernetes operator 允许你在 Kubernetes 上安装和管理许多其他 Elastic 组件。在发布本博客时Elastic APM K8s Attacher 是一个单独的组件这些管理机制之间没有冲突 —— 它们适用于不同的组件并且彼此独立。 自己尝试一下 此演练可轻松在你的系统上重复你可以通过将示例应用程序替换为你自己的应用程序并将 Docker 注册表替换为你使用的注册表来使其更有用。 了解有关使用 Kubernetes 和 Elastic Observability 进行实时监控的更多信息。 本文中描述的任何特性或功能的发布和时间均由 Elastic 自行决定。任何当前不可用的特性或功能可能无法按时交付或根本无法交付。 原文How to easily add application monitoring in Kubernetes pods — Elastic Observability Labs
http://www.hkea.cn/news/14312590/

相关文章:

  • 合肥市建设网站市场信息价沈阳口碑最好的装修公司
  • 企业网站源代码免费下载情人节网站怎么做
  • 网站怎样排版上海龙雨建设工程有限公司网站
  • wordpress网站被自动跳转wordpress备份博客图片
  • 网站建设排名公司哪家好wordpress是免费吗
  • 深圳做网站最电商联盟推广
  • 网站建设的客户都在哪里移动网站建站
  • 做网站组服务器鹤岗网站seo
  • 织梦后台做的网站怎么绑定域名服务好的企业网站怎么建设
  • 商务网站构建与维护wordpress 主题依赖插件
  • 洮南网站正规的扬中网站建设
  • 徐州网站建设找哪家上海企业信息查询系统
  • 江苏网站建设基本流程wordpress流水布局主题
  • 四川省微信网站建设推广dw个人网页制作素材
  • 主题资源网站建设模块五作业企业网站能提供哪些服务
  • 廊坊网站群建设那个网站可以免费做风面
  • 利用云服务器做网站wordpress使用html5
  • 高端大气网站设计欣赏互联网营销师报名官网
  • 漯河公司做网站wordpress 变装小说
  • 网站推广外包北京西站在几环
  • 苏州手机网站建设报价网站建设哪里公司好
  • 乌尔禾区做网站哪里好校园网站建设案例
  • 平面设计师必看的网站建设部网站资质核查
  • 北京网站建设排行廊坊做网站找谁
  • 生鲜网站建设的总体目标有哪个网站可以做链接
  • 答辩的时间_老师问了我做的网站可以同时支持的并发用户是多少用了wordpress的电商网站
  • 企业门户网站建设情况wordpress免签约
  • asp网站首页模板ps详情页模板
  • 如何做能上传视频网站城乡建设部网站首页
  • 公司网站设计素材网页设计咨询