首页 文章 精选 留言 我的

精选列表

搜索[内容智能分发],共10005篇文章
优秀的个人博客,低调大师

OpenTelemetry 演示与 OpenTelemetry 的 Elastic 分发

作者:来自 ElasticRoger Coll 了解 Elastic 如何致力于支持用户使用 OpenTelemetry。探索我们对 OpenTelemetry Demo 的公开部署,并了解 Elastic 的解决方案如何增强你的可观察性体验。 最近,Elastic 为各种 OpenTelemetry 组件引入了 Elastic Distributions (EDOT),我们很自豪地宣布,这些 EDOT 组件现已在 Elastic 的 OpenTelemetry Demo 分支中可用。我们还公开了一个 Kibana 端点,让你可以深入了解演示的实时数据并亲自探索其功能。在这篇博文中,我们将详细说明分支背后的原因,并探索它引入的强大新功能。我们还将全面概述如何利用这些增强功能与 OpenTelemetry (EDOT) 的 Elastic Distributions 进行高级错误检测,以及 EDOT Collector(Elastic Agent 的尖端发展)进行无缝数据收集和分析。 什么是 OpenTelemetry 演示? OpenTelemetry 演示是一个基于微服务的应用程序,由 OpenTelemetry 社区创建,旨在展示其在现实的分布式系统环境中的功能。这个演示应用程序称为 OpenTelemetry Astronomy Shop,它模拟了一个由 10 多个互连微服务(以多种语言编写:Go、Java、.NET、Node.js 等)组成的电子商务网站,通过 HTTP 和 gRPC 进行通信。每项服务都完全使用 OpenTelemetry 进行检测,生成全面的跟踪、指标和日志。该演示是了解如何在实际应用程序中实现和使用 OpenTelemetry 的宝贵资源。 其中一项微服务名为 loadgenerator,它会自动开始向演示的各个端点生成请求,模拟多个客户端与系统交互的真实环境。这有助于复制具有并发用户活动的繁忙实时应用程序的行为。 Elastic 的分支 Elastic 认识到了通过分支 OpenTelemetry Demo 并集成高级 Elastic 功能来增强 OpenTelemetry Demo 的机会,以实现更深入的可观察性和更简单的监控。虽然分支是推荐的 OpenTelemetry 方法,但我们的目标是尽可能利用上游版本的强大基础和最新更新。为了实现这一点,Elastic 的 OpenTelemetry Demo 分支每天都会从上游进行拉取,将它们与 Elastic 特定的更改无缝集成。为了避免冲突,我们不断向上游做出贡献,确保 Elastic 的修改始终是附加的或可通过环境变量进行配置的。其中一个贡献是 .env.override 文件,它专为供应商分支而设计,用于覆盖演示中使用的微服务镜像和配置文件。 使用 Elastic 发行版获得更深入的洞察 在 Elastic 的 OpenTelemetry Demo 分支的最新更新中,我们已将用于检测的一些微服务 OTel SDK 替换为 Elastic 的专用发行版。这些更改确保与 Elastic 的可观察性工具进行更深入的集成,提供更丰富的洞察和更强大的监控功能。以下是分支的一些更改: Java 服务:广告、欺诈检测和 Kafka 服务现在使用 OpenTelemetry Java 代理的 Elastic 发行版。发行版中包含的功能之一是堆栈跟踪,它提供有关 span 起源于代码路径中何处的精确信息。在此处了解有关 Elastic Java 代理的更多信息。 Cart 服务已升级为使用 OpenTelemetry .NET 代理的 Elastic 发行版。此替换可让你了解如何使用 OpenTelemetry .NET 的 Elastic 发行版 (EDOT .NET) 开始在 .NET 应用程序中使用 OpenTelemetry,而无需进行任何代码更改。在此博客文章中了解有关 Elastic .NET 代理的更多信息。 在 Payment 服务中,我们配置了 OpenTelemetry Node.js 代理的 Elastic 发行版。该发行版附带 host-metrics 扩展,Kibana 提供了精选的服务指标 UI。在此处阅读有关 Elastic Node.js 代理的更多信息。 Recommendation 服务现在利用 EDOT Python,取代了标准的 OpenTelemetry Python 代理。Python 发行版是零代码(或自动)检测的另一个示例,这意味着发行版将设置 OpenTelemetry SDK 并为你启用所有推荐的检测。在此博客文章中了解有关 Elastic Python Agent 的更多信息。 需要强调的是,OpenTelemetry 的 Elastic 发行版不捆绑专有软件,它们建立在原始 OTel SDK 之上,但它们提供了一些优势,例如安装的单一软件包、使用合理的默认配置轻松自动检测、自动日志遥测发送等等。沿着这些思路,最终目标是将尽可能多的 EDOT 功能贡献给上游 OpenTelemetry 代理;它们的设计方式是,作为扩展实现的附加功能可直接与 OTel SDK 配合使用。 使用 Elastic Collector Distribution 收集数据 OpenTelemetry Demo 应用程序生成信号并将其发送到 OpenTelemetry Collector OTLP 端点。在 Demo 的分支中,EDOT 收集器设置为将所有 OTLP 信号从微服务转发到APM 服务器OTLP 端点。此外,它还将收集器收集的所有其他指标和日志发送到Elasticsearch端点。 如果分支部署在 Kubernetes 环境中,收集器将自动开始收集系统的指标。收集器将配置为使用hostmetrics 接收器来监控所有 K8s 节点的指标,使用kuebeletstats 接收器来检索 Kubelet 的指标,使用 filelog 接收器来收集所有集群的指标。 微服务生成的信号和 EDOT 收集器收集的信号都富含 Kubernetes 元数据,使用户可以无缝关联它们。这样可以轻松跟踪和观察每个服务在哪些 Kubernetes 节点和 pod 上运行,从而深入了解应用程序性能和基础设施健康状况。 了解有关 Elastic 的 OpenTelemetry Collector 发行版的更多信息:https://www.elastic.co/observability-labs/blog/elastic-distribution-opentelemetry-collector 使用 Elastic 进行错误检测 OpenTelemetry Demo 结合了flagd,这是一个用于模拟错误场景的功能标志评估引擎。例如,paymentServiceFailure 标志将强制对 charge 服务收费端点的每个请求都产生错误。由于该服务使用 OpenTelemetry 进行检测,因此错误将被捕获到生成的跟踪中。然后,我们可以使用 Kibana 强大的可视化和搜索工具将错误追溯到其根本原因。 另一个可用标志名为 adServiceHighCpu,它会导致广告服务中的 CPU 负载过高。可以通过服务的指标或其 Kubernetes pod 的相关指标来监控这种增加的 CPU 使用率: 模拟场景的完整列表可在此链接中找到。 开始你自己的探索 准备好探索带有 Elastic 的 OpenTelemetry Demo 及其增强的可观察性功能了吗?点击 Kibana 链接,开始你自己的探索,了解 Elastic 和 OpenTelemetry 如何改变你的可观察性方法。 现场演示:https://ela.st/demo-otel 但这还不是全部 —— 如果你想更进一步,你可以直接使用自己的 Elasticsearch 堆栈部署 OpenTelemetry Demo。按照此处提供的步骤进行设置,并开始从你自己的环境中获得有价值的见解。 原文:OpenTelemetry Demo with the Elastic Distributions of OpenTelemetry — Elastic Observability Labs

优秀的个人博客,低调大师

Gearman——分布式任务分发框架

工作中我们有时候会遇到比如需要同时发布数据到多个个服务器上,或者同时处理多个任务。可以使用PHP的curl_multi的方式并发处理请求,但是由于网络和数据以及各个服务器等等的一些情况导致这种并发处理的响应时间很慢,因为在并发请求的过程中还包括记录日志,处理数据等逻辑,等待处理结果并返回,所以也不能友好的满足后台操作的体验。 现在有另外一种方案,利Gearman来实现并发的需求。通过Client将请求发送到Gearman的Jobs,在每个Work中来再来进行curl_multi和数据处理和日志等一些操作,同时用supervisor 来监控Gearman以及Works的进程,这样可以实现一个并行的多进程和负载均衡的方案。 Gearman可以做什么: 异步处理:图片处理,订单处理,批量邮件/通知之类的 要求高CPU或内存的处理:大容量的数据处理,MapReduce运算,日志聚集,视频编码 分布式和并行的处理 定时处理:增量更新,数据复制 限制速率的FIFO处理 分布式的系统监控任务 Gearman工作原理: 使用Gearman的应用通常有三部分组成:一个Client、一个Worker、一个 任务服务器。 Client的作用是提出一个 Job 任务 交给 Job Server 任务服务器。Job Server 会去寻找一个 合适的 Worker 来完成这项任务。Worker 执行由 Client 发送过来的 Job,并且将结果通过 Job Server 返回给 Client。Gearman 提供了 Client 和 Worker 的 API,利用这些API 应用可以同 Gearman Job Server来进行通信。Gearman 内部 Client 和 Worker 之间的通信都是通过 TCP 连接来进行的。 通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用WebService的方式来处理此类集成问题,但不管采用何种风格的WebService,如RPC风格,或者REST风格,其本身都有一定的复杂性。相比之下,Gearman也能实现类似的作用,而且更简单易用。 一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。 Client:请求的发起者,可以是C,PHP,Perl,MySQL UDF等等。 Job:请求的调度者,用来负责协调把Client发出的请求转发给合适的Work。 Worker:请求的处理者,可以是C,PHP,Perl等等。 因为Client,Worker并不限制用一样的语言,所以有利于多语言多系统之间的集成。 甚至我们通过增加更多的Worker,可以很方便的实现应用程序的分布式负载均衡架构。 3 Gearman下载 1)官网 http://gearman.org/ 2)官网下载 https://launchpad.net/gearmand 3)官网使用向导 http://gearman.org/getting-started/ 3)本次安装用到的所有软件下载地址(安装环境为CentOS-6.5) http://download.csdn.net/detail/clevercode/8698699 4 Gearman安装 4.1 安装linux必备常用库 Linux中必备常用支持库的安装:http://blog.csdn.net/clevercode/article/details/45438401 4.2 安装gearmand依赖的库 # yum install -y boost-devel gperf libevent-devel libuuid-devel 4.3 安装gearmand服务 1)解压 # cd /usr/local/src/gearman # tar xzf gearmand-1.1.12.tar.gz 2)配置 # cd gearmand-1.1.12 # ./configure 3)编译 # make 4)安装 # make install 5)安装成功图,输入 # gearman 5 安装php扩展 1)安装phpize # yum install -y php-devel 2)解压 # cd /usr/local/src/gearman # tar xzf gearman-1.1.2.tgz 3)配置 # cd gearman-1.1.2 # phpize # ./configure 4)编译 # make 5)安装 # make install 6)安装成功 出现“Installing shared extensions: /usr/lib64/PHP/modules/”表示安装成功,/usr/lib64/php/modules/是gearman.so扩展的目录。如图 7)配置(加入扩展) # vi /usr/local/php5/etc/php.ini extension="gearman.so" 8)查配置是否成功 # vi test.php print gearman_version() . "\n"; ?> 执行php test.php后,出现1.1.12表示安装成功 # php test.php 1.1.12 6 Gearman启动停止 1) 创建日志/data0/logs/gearmand.log # touch /data0/logs/gearmand.log 2)启动 # /usr/local/sbin/gearmand -d -u root -L 192.168.142.130 --log-file=/data0/logs/gearmand.log 3)参数详解 -b,--backlog= 储备的监听连接数量 -d, --daemon 后台运行 -f, --file-descriptors= 文件描述符的数量 -h, --help 帮助 -j, --job-retries= 在ob server移除不可用job之前运行的次数,防止不断运行导致其他可用worker崩溃。默认没有限制 -l, -log-file= 日志文件存放位置(默认记录最简单日志) -L, --listen= 监听的IP,默认全部接受 -p, --port= 指定监听端口 -P, --pid-file= 指定进程ID写入位置 -r, --protocol= 加载协议模块 -q, --queue-type= 指定持久化队列 -t, --threads= 使用的I/9线程数量。默认为0 -u, --user= 启动后,切换到指定用户 -v, --verbose 增加一级详细程度 -V, --version 显示版本信息 4)查是否运行 # ps axu | grep gearmand 5)查看监听端口 # netstat -anp | grep 4730 6)停止,直接kill掉进程。 7 Gearman使用 7.1 创建Worker 创建worker.php,创建一个发送邮件的Worker端。代码如下 [php]view plaincopy $worker=newGearmanWorker(); $worker->addServer('192.168.142.130','4730'); $worker->addFunction("sendMail","my_sendmail_function"); while($worker->work()); functionmy_sendmail_function($job){ //接收数据 $tmp=$job->workload(); $receiveArr=unserialize($tmp); $from=$receiveArr['from']; $to=$receiveArr['to']; $subject=$receiveArr['subject']; $content=$receiveArr['content']; //发送邮件 //.... return$subject.'sendmailOK'; } ?> 7.2 启动Worker端 如果处理的数据量大,可以执行以下脚本多次,即启动多个Worker端。 # nohup php worker.php > tmp.txt & 7.3 创建Client(阻塞模式,需要等待返回结果才结束) 创建一个client.php。do()方法是阻塞模式,必须等待worker端返回结果,程序才能停止。(如图返回:hello Gearman sendmail OK) [php]view plaincopy $client=newGearmanClient(); $client->addServer('192.168.142.130','4730'); $job=array(); $job['from']='Code'; $job['to']='Gearman'; $job['subject']='helloGearman'; $job['content']='helloGearman:thisisfromGearmanClient'; $job=serialize($job); //等到worker端返回结果,才会结束。 $ret=$client->do("sendMail",$job); echo$ret."\r\n"; ?> 7.4 创建Client(非阻塞,不用等结果) 创建一个client2.php。doBackground()不用等待worker端返回结果,程序就结束了。 [php]view plaincopy $client=newGearmanClient(); $client->addServer('192.168.142.130','4730'); $job=array(); $job['from']='Code'; $job['to']='Gearman'; $job['subject']='helloGearman'; $job['content']='helloGearman:thisisfromGearmanClient'; $job=serialize($job); //不等待返回结果,就会结束 $ret=$client->doBackground("sendMail",$job); echo$ret."\r\n"; ?> 8 Gearman管理 输入以下命令,查看4730端口情况。 # (echo "status" ; sleep 2 ) | telnet 192.168.142.130 4730 1)字段说明:"已知注册的任务" "正在运行的任务" "队列中的任务" "可用的 Worker". 2)sendMail 0 0 1,注册的任务名为 sendMail,0 个正常在运行,队列为空,有一个可用的 Worker.

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册