最流行的十大开源云监控工具
在企业级应用中,Linux系统的源码广泛运用使得监控和日志记录成为不可或缺的任务。随着Docker和Kubernetes的源码持续发展,监控工具的源码重要性愈发凸显。本文将介绍十大最受欢迎的源码开源云监控工具,以帮助企业更全面地管理其基础设施。源码流量主盒子源码 监控和测试工具的源码种类繁多,包括实时数据库、源码数据采集工具、源码可视化工具、源码意见反馈工具、源码日志记录器等。源码近年来,源码开源监控工具市场经历了爆炸式增长,源码下文将详细介绍其中的源码个佼佼者。 Prometheus Prometheus是一个强大的云监控解决方案,专门解决时间序列监控问题。它是CNCF支持的9个核心项目之一,由谷歌、CoreOS、RedHat、IBM等公司共同支持,成为Docker生态系统中不可或缺的组件。Prometheus最初由SoundCloud开发,后被广泛应用于Kubernetes性能改进中。 Prometheus不仅是一个监控系统,还集成了时间序列数据库和代码实现框架。它能够监控各种环境,包括系统、Hadoop集群、语言运行环境,甚至Python、Go等应用程序栈。与Graphite相比,Prometheus功能更为全面,但企业需自定义指标以便与Prometheus系统交互。mybatis插件拦截源码 Graphite Graphite是一款流行的开源工具,专门用于构建基于Web的监控仪表板和数据分析系统。它由Orbitz的Chris Davis创建,专为监视和绘制计算机系统性能而设计。目前,Graphite被许多大型企业如GitHub、Salesforce和Reddit等广泛采用。尽管Graphite不直接收集指标,但企业通常会集成其他指标收集器来提供指标数据。 Graphite由三部分组成:Carbon(监听时间序列数据)、Whisper(类似RRDtool的简单数据库)和Graphite-web(呈现图表的Web应用)。自动化程度高,所有新数据点在数据库中自动创建,这是Graphite在企业中流行的原因之一。 由于围绕生态系统开发的工具数量众多,开源监控工具的当前状态尚不明朗。Graphite等工具能够独立运行,也可与其他工具集成。 应用监控工具 下面介绍几种特定应用监控工具: Riemann Riemann是一款流处理器,用于聚合和处理事件流,同时提供警报功能。与Prometheus相比,Riemann不直接收集度量,而是用于从各种来源(如度量、日志、事件、主机和服务)收集数据,然后根据需求存储、图表或触发警报。 Riemann特别受到Clojure开发人员的欢迎,因为其配置文件可以高度定制和构建为Clojure代码。 Elasticsearch Elasticsearch是ELK堆栈(Elasticsearch、Kibana、Beats、Logstash)的168开网站源码一部分,可单独使用,也可与堆栈的其他组件集成。Elasticsearch是一个强大的搜索引擎,支持快速搜索和数据发现,几乎兼容所有数据,并且与其他查询数据库工具广泛集成。 Kibana Kibana是ELK堆栈的可视化部分,帮助用户直观浏览数据。尽管Kibana是堆栈的一部分,但其功能通常会被Grafana、Graphite等其他可视化工具替代。 Logstash Logstash是一个流处理系统,能够从日志、指标、Web应用、数据存储和各种AWS服务中摄取流数据。Logstash还支持特定事件(如可警报事件)的输出,可以与Riemann等工具集成。 这些工具虽然看似复杂,但它们往往可以协作处理各种问题,实现高效的数据管理和监控。 Grafana Grafana是一款功能丰富的度量仪表板和图形编辑器,支持Graphite、ElasticSearch、OpenTSDB、Prometheus和流数据库的可视化。Grafana允许用户轻松创建仪表板并查询指标,无论数据存储在哪里,同时提供高质量的交互式和可视化图表功能。 Kafka Kafka是一个用于处理无限制、不断更新数据集的流处理系统,最初由LinkedIn开发用于构建可扩展的公共消息传递系统。现在,Kafka已成为实时数据管道、分布式日志分析器以及统一数据集成堆栈的多任务下载源码一部分。 FluentD FluentD是CNCF主持的项目之一,使用C语言编写,旨在统一数据收集和利用。FluentD声称具有快速启动特性,可实时构建“log-everything”体系结构,为超过种系统类型提供支持。CNCF的背书和广泛的用户基础使得FluentD成为数据收集的强大工具。 Weave Scope Weave Scope提供监视、可视化、管理和故障排除功能,自动创建应用程序地图,无需编码或设置。它帮助用户在系统级别监视和控制堆栈,实时查看系统活动及其原因,通过零配置和自动检测进程、系统和主机,节省开发人员的时间。 随着更多针对性的开源监控工具被开发,市场上的工具地位可能随时发生变化。然而,在当前的DevOps环境中,上述开源监控工具在企业监控工具中占据重要地位。Elasticsearch:和 LIamaIndex 的集成
Elasticsearch与LLamaIndex集成:构建私有数据框架 LLamaIndex是一个开源的数据框架,专为LLM应用程序设计,用于处理和访问特定领域的私有数据。通过GitHub可以获取该项目的源代码以构建多样化的应用程序。 为了在Docker中设置Elasticsearch,首先,您可以参考"如何在Docker上运行Elasticsearch 8.x"的教程,启动单节点实例。使用docker-compose启动,不启用安全配置,如下所示:.env
docker-compose.yml
通过命令行启动后,Elasticsearch和Kibana就安装并运行了,但请注意,全套源码分享C生产环境不建议使用这种配置。 在应用设计阶段,我们将使用Jupyter notebook进行。首先安装Python依赖:安装Python依赖的命令
接着创建.env文件,配置OpenAI key:.env
连接到Elasticsearch时,可以使用以下示例代码:连接Elasticsearch的代码示例
然后,加载文档并使用Elasticsearch构建VectorStoreIndex,如文档 pau_graham_essay.txt所示: 在进行基本查询和元数据过滤时,可以利用这些结构进行文本检索。例如,搜索 "weather is so beautiful" 会得到特定结果。然而,自定义过滤器和覆盖查询是Elasticsearch的高级功能,LLamaIndex目前仅支持ExactMatchFilters,其他复杂过滤器可能需要直接在Elasticsearch中使用。 想要深入了解和实践,可以访问我的GitHub项目:github.com/liu-xiao-guo/semantic_search_es,查看相关文件。 继续深入学习高级文本检索技术,如句子窗口检索,将有助于您更好地利用Elasticsearch和LLamaIndex。kubernetes-8ï¼kibana容å¨å
åéå¾ç大å°éå¶ï¼æäºå¾çä¸æ¯å¾æ¸ æ°ï¼å¯ä»¥å°å¾®ä¿¡å ¬ä¼å·æ¥çï¼
åç½®é 读ï¼
kubernetes-7ï¼elasticsearch容å¨å
/item//
æä¾helmåyaml两ç§é¨ç½²æ¹å¼ã
Helmé¨ç½²æ¥éª¤è¯¦è§ç¬è gitå°åï¼
/hepyu/k8s-app-config/tree/master/helm/min-cluster-allinone/kibana-min
yamlé¨ç½²æ¥éª¤è¯¦è§ç¬è gitå°åï¼
/hepyu/k8s-app-config/tree/master/yaml/min-cluster-allinone/kibana-min
1.progressDeadlineSeconds
2.podæ»å¨å级
3.readinessProbe
4.restartPolicy
容å¨åæååçç»ä»¶ï¼
docker pull kibana:6.4.3
éå½åéå为ï¼docker.elastic.co/kibana/kibana:6.4.3
docker images |grep kibana |awk '{ print "docker tag ",$1":"$2,$1":"$2}' |sed -e 's#kibana#docker.elastic.co/kibana/kibana#2' |sh -x
Add the elastic helm charts repoï¼
helm repo add elastic /hepyu/k8s-app-config/tree/master/yaml/min-cluster-allinone/kibana-min
æä¾äºä¸ä¸ªdeploy.shï¼å¯ä»¥ç´æ¥è¿è¡sh deploy.shå®æ容å¨åï¼
æè ä¾æ¬¡æ§è¡å½ä»¤ï¼
kubectl apply -f kibana-min-deployment.yaml
kubectl apply -f kibana-min-service.yaml
ç¬è çyamlé ç½®æ件ä¸åäºè¯¦ç»æ³¨éï¼å¯ä»¥ç´æ¥è¿å ¥githubå»é 读ç¸å ³yamlé ç½®æ件ï¼è¿éåªç½åå ¶ä¸çéç¹ï¼
1.progressDeadlineSeconds
Deployment失败å¤å®æ åï¼ç±äºelasticsearchç¸å ³æå¡çå¯å¨/就绪é½æºæ ¢ï¼ç¹å«å½elasticsearché群åkibanaåæ¶å®¹å¨çæ¶åï¼æ以éè¦è®¾ç½®æ¤å¤å®åæ°ã
2.podæ»å¨å级
æ¯æ两ç§æ»å¨æ¹å¼ï¼æç §æ¯ä¾å¯å¨ï¼ä¹å¯ä»¥æå®å ·ä½ä¸ªæ°ã
3.readinessProbe
pod就绪å¤å®æ å, å¾æå¿ è¦ï¼å½esé群è´è·è¿é«æ¶ï¼kibanaä¸esçèéä¼ä¸éç ï¼éè¦K8Så»è¯å«æ¯kibana podæ¯ä¸æ¯ççå®æºäºã
4.restartPolicy
Podä¿æ´»çéè¦æ段ã
Elasticsearch 简介
Elasticsearch 是一款功能强大的搜索引擎,广泛应用于 IT 行业。它由 Elastic 公司开发,代码托管在 GitHub 上。Elasticsearch 是一个分布式、免费和开源的搜索和分析引擎,能够处理各种类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。该引擎基于 Apache Lucene 构建,于 年首次发布。
Elasticsearch 以其简单的 REST API、分布式特性、快速搜索和良好的可扩展性而闻名。它是 Elastic Stack 的核心组件,该 Stack 包括用于数据摄取、丰富、存储、分析和可视化的免费开源工具,通常被称为 ELK Stack。Elastic 公司还拥有 Logstash 和 Kibana 等开源项目,三者共同构成了 ELK 软件栈,形成一个强大的生态圈。
简单来说,Logstash 负责数据采集和处理,Kibana 负责数据展示、分析和监控,而 Elasticsearch 负责数据存储、搜索和分析。随着 Beats 的加入,ELK 软件栈也被称为 ELKB。Beats 是一些轻量级代理,可以收集所有需要的事件,并将其发送至 Elasticsearch 或 Logstash 进行进一步处理。
在 Elastic Stack 架构中,通常使用 Search Service 作为中间接口,向 Elasticsearch 发送请求。通过 Beats 可以采集服务日志和指标信息,并使用 Elastic Stack 提供的 APM 来监控应用和服务的性能。Beats 收集的信息可以直接发送至 Elasticsearch,也可以先发送至 Logstash 进行加工后再发送至 Elasticsearch。Kibana 可以用于数据可视化、分析、管理和监控服务。
在最新的 Elastic Stack 架构中,推荐使用 integration 来采集数据,这有助于集中监控采集端。Elastic Agent 可以安装在采集端,以收集数据,并在 Kibana 中进行集中管理。
Elastic Stack 在全球范围内被广泛应用于不同领域的公司。你可以在 Elastic 的官方网站上找到更多关于客户的信息。
Elasticsearch 是一个基于 Apache Lucene 的开源搜索引擎,使用 Java 编写。它通过简单连贯的 RESTful API 实现全文搜索,并隐藏 Lucene 的复杂性。Elasticsearch 提供了丰富的功能,包括全文搜索、分析、聚合、数据可视化等,并且易于上手。
Elasticsearch 的特点包括高速、可扩展性和搜索结果的相关性。它支持分布式部署,易于扩展,可以处理 petabytes 的数据量。Elasticsearch 还可以根据业务场景进行 relevance 定制。
docker-compose快速部署elasticsearch-8.x集群+kibana
在GitHub上,你可以找到我的资源库,那里详细整理了我欣宸的所有原创作品,包括配套的源码:github.com/zq/blog... 本文将引导你通过docker-compose快速部署Elasticsearch 8.x版本的集群,并配合Kibana使用。特别提示,如果你使用的是Linux系统,请注意配置文件的编写。接下来,我们将一步步启动应用并进行验证,包括设置不带密码的集群和确保其正常运行。 在学习的道路上,你并不孤单,欣宸原创的内容将全程陪伴你。让我们一起探索和实践,让技术助力你的成长。Elasticsearch:如何使用 Java 对索引进行 ES|QL 的查询
在本文中,我们将探讨如何使用Java对Elasticsearch执行ES|QL查询。为了简化理解,所有代码已整理并置于GitHub(链接:GitHub - liu-xiao-guo/elasticsearch-java-esql),这是一个Maven项目。运行项目所需的命令为:
首先,确保安装了Elasticsearch及Kibana(参考链接进行安装)。特别注意,ES|QL仅在Elastic Stack 8.及以上版本中可用,需下载对应版本进行安装。首次启动Elasticsearch时,记录输出中的密码用于后续配置。
准备数据集时,从先前文章下载数据集,并注意数据字段可能与文章中描述的不同。选取个数据样本,并将其链接放置于此。克隆项目后,可见包含数据集的sample.csv文件。数据样本如下:
数据集字段重新命名,示例文档如下。
配置项目时,需编辑application.conf文件以适应具体设置,包括Elasticsearch访问地址、数据集路径及证书。为访问Elasticsearch,请申请API密钥。至此,配置基本完成。
在项目中,首先根据CSV格式字段创建Book.java类,对应数据集中的字段。阅读EsqlArticle.java文件,读取application.conf配置并创建Elasticsearch访问客户端。在客户端配置下,删除或创建books索引,定义索引映射(year为short类型,ratings为浮点数,其他为text字段)。使用Jackson CSV映射器配置文件读取,优化文档摄取,索引速度极快。
接下来,提取书籍信息。假设目标为['Julie Strain'],需注意在摄入文档时未针对author进行处理。当前ES|QL版本中,所有text字段作为keyword字段,全文搜索尚未完全实现。查询结果展示,通过ObjectsEsqlAdapter忽略ES|QL查询的JSON结果,返回熟悉的书籍列表。对于习惯SQL查询和JDBC接口的用户,客户端提供ResultSetEsqlAdapter,以相同方式使用,返回java.sql.ResultSet。示例中,找出Plympton PressIntl出版评分最高的书籍,结果可见于GitHub项目。
通过遵循本文所述步骤及代码示例,您将能够熟练使用Java对Elasticsearch执行ES|QL查询。
Docker安装部署Elasticsearch+Kibana+IK分词器
Docker安装部署Elasticsearch
推荐使用Elasticsearch版本是8..2 或 7..。我尝试安装8.x版本,但由于虚拟机内存限制,集群状态常为RED,无法重置elastic账户密码。因此,我选择使用7.x版本的Elasticsearch以避免安全性问题。
由于IK分词器在7.x版本最高支持到7..6,我下载了此版本。接下来,我将演示如何使用Docker安装Elasticsearch和IK分词器。
首先,拉取Elasticsearch镜像:
docker pull elasticsearch:7..6
接着,创建两个数据卷:
docker volume create es-data
docker volume create es-plugins
然后,创建一个用于连接Elasticsearch和Kibana的网络:
docker net create es-net
启动Elasticsearch容器:
docker run \\
-d \\
--name es \\
--net es-net \\
-p : \\
-p : \\
-e ES_JAVA_OPTS="-Xmsm -Xmxm" \\
-e "discovery.type=single-node" \\
-v es-data:/usr/share/elasticsearch/data \\
-v es-plugins:/usr/share/elasticsearch/plugins \\
--privileged \\
elasticsearch:7..6
访问Elasticsearch的端口,验证启动成功。
接下来,使用Docker安装Kibana:
docker pull kibana:7..6
启动Kibana容器,使用ELASTICSEARCH_HOSTS环境变量指定Elasticsearch的地址:
docker run \\
-d \\
-e ELASTICSEARCH_HOSTS= es: \\
--name kibana \\
--net es-net \\
-p : \\
kibana:7..6
Kibana的启动可能需要一段时间,请耐心等待。访问端口,验证Kibana部署成功。
最后,安装IK分词器以改进中文分词效果。Elasticsearch默认分词器对中文分词不太友好,而IK分词器则能提供更准确的中文分词。
使用以下请求测试默认与IK分词器的分词效果:
默认分词器测试:
POST /_analyze \\
{ \\
"analyzer": "standard", \\
"text": "elasticsearch 8.x版本太难啦!" \\
}
IK分词器测试:
POST /_analyze \\
{ \\
"analyzer": "ik_smart", \\
"text": "elasticsearch 8.x版本太难啦!" \\
}
通过比较结果,可以观察到IK分词器在处理中文分词方面表现更佳。
如果需要安装IK分词器,有以下两种方式:
方式一:从GitHub直接下载:
./bin/elasticsearch-plugin install github.com/medcl/elasticsearch-x-pack
方式二:利用已创建的数据卷安装:
从GitHub下载压缩文件,解压到es-plugins数据卷对应位置,然后重启Elasticsearch容器。
至此,Elasticsearch、Kibana以及IK分词器的Docker部署完成,支持了中文分词的高效处理。
2024-12-24 00:36
2024-12-23 23:57
2024-12-23 23:55
2024-12-23 22:27
2024-12-23 22:24