使用Grafana和Graphite监视Elasticsearch实例
首先
在本文中,我们将介绍如何使用Graphite监控Elasticsearch实例,并通过Grafana可视化数据。此外,我们还将重点介绍如何使用Graphite监控自定义应用程序的指标,并将它们集中显示在Grafana的一个仪表盘上。
MetricFire是一個托管的服務平台,提供用於監控時序數據指標的開源工具,包括Hosted Graphite、Hosted StatsD和Hosted Grafana。這些開源軟體可以直接在MetricFire網頁應用程序中使用,由我們進行管理,因此不需擔心擴展、更新、維護或插件設定的繁瑣工作。現在就預約MetricFire的免費演示並註冊免費試用,立即開始監控Elasticsearch實例。
石墨的概述
Graphite是一款流行的开源工具,用于收集指标并创建可视化的收集数据。它由Carbon、Graphite web和Whisper这三个组件组成。本文不涉及Graphite的详细信息。请参阅有关Graphitera和Grafana以及使用Graphite进行监控的安装和设置以及使用Graphite进行监控的架构和概念等文章来了解更多有关Graphite的详细信息。
Elasticsearch的概述
Elasticsearch是一个用于搜索和分析数据的分布式开源应用程序。它的主要强大功能是基于Lucene查询语言的全文搜索引擎。Elasticsearch基于逆向索引数据结构,能够实现非常快速的全文搜索。因此,在应用程序、网站搜索、日志记录和分析等用例中广泛使用。
Graphite、Elasticsearch和Grafana的安装配置
为了设置Graphite、Elasticsearch和Grafana的实例,我们将使用在Docker Hub上可用的Docker镜像。
还会使用三个额外的Docker镜像。
-
- es2graphite: このコンテナーは、Elasticsearchクラスターにクエリを実行し、ElasticsearchメトリックをGraphiteにプッシュします。
-
- collectd-write-graphite: このコンテナはホストにクエリを送信し、メトリックをGraphiteにプッシュします。
-
- dejavu: そのまま使用できるElasticsearchのインストールには、グラフィカルユーザーインターフェイスは付属していません。 dejavuは、Elasticsearch APIの上にグラフィカルユーザーインターフェイスを提供します。 このグ
- ラフィカルユーザーインターフェイスを使用して、セクションの後半でサンプルデータをインポートします。
以下是一个示例docker-compose.yml文件,它可以实例化上述容器,并使其能够使用Graphite、Elasticsearch和Grafana。
version: "3"
services:
grafana:
image: grafana/grafana
ports:
- 3000:3000
graphite-statsd:
image: graphiteapp/docker-graphite-statsd
ports:
- 2003-2004:2003-2004
- 2023-2024:2023-2024
- 8125:8125/udp
- 8126:8126
- 8080:80
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.0.1
container_name: elasticsearch
environment:
- discovery.type=single-node
- http.port=9200
- http.cors.enabled=true
- http.cors.allow-origin=http://localhost:1358,http://127.0.0.1:1358
- http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization
- http.cors.allow-credentials=true
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ports:
- "9200:9200"
- "9300:9300"
# elasticsearch browser
dejavu:
image: appbaseio/dejavu:3.2.3
container_name: dejavu
ports:
- "1358:1358"
links:
- elasticsearch
es2graphite:
image: logzio/es2graphite
environment:
- ELASTICSEARCH_ADDR=elasticsearch
- GRAPHITE=graphite-statsd
- GRAPHITE_PREFIX=PROD.Elasticsearch
collectd-write-graphite:
image: andreasjansson/collectd-write-graphite
environment:
- HOST_NAME=elasticsearch
- GRAPHITE_HOST=graphite-statsd
使用「docker-compose up -d」命令可以运行此Docker Compose脚本,从而可以访问每个容器。
首先,访问http:// localhost:3000 /,确认可以访问Grafana。使用管理员凭据admin / admin,登录Grafana仪表板。
另外,您应该能够访问http://localhost:9200,并确认Elasticsearch正在运行。应该会显示以下类似输出。
如果您想要跳过安装和配置过程,您可以随时使用MetricFire的Hosted Graphite。您可以在这里访问免费试用并进行确认。MetricFire平台提供了简单的插件和代理,用于从各种数据源收集指标,并提供现成可用的Graphite和Grafana。
使用Grafana监控Elasticsearch指标。
在这个时候,容器开始将Elasticsearch的指标推送到Graphite。使用Grafana,从Graphite的指标中进行可视化绘图。因此,通过访问http://localhost:3000,在Grafana中将Elasticsearch指标仪表板导入如下。

当您进行导入后,您应该可以在Grafana仪表板上看到Elasticsearch指标。
在主机上保存JVM / CPU和内存指标。


在中文中,Elasticsearch的指标为- Elasticsearch的度量指标


即时搜索指标

在上述的仪表盘上显示的指标仅仅是可监控的子集。每个组织都有根据需求来监控不同的指标集合。如果想要基于这些指标创建更多的Grafana仪表盘,您可以参考文章《从基础到详细的Grafana仪表盘》,了解Grafana警报的设置和自定义仪表盘的创建方法。
您还可以基于Elasticsearch中感兴趣的指标创建其他类型的可视化。请查看”MetricFire团队在Qiita上的[最喜欢的Grafana仪表板](https://qiita.com/MetricFire/items/6d4016e6770911773757)”文章,以创建一些更高级的仪表板。
使用Grafana将Elasticsearch数据进行可视化
我们之前学习了如何将数据推送到Graphite并监视Elasticsearch数据。接下来,我们将学习如何使用Grafana来将Elasticsearch中的数据可视化。Grafana具有非常强大的功能,可以将应用程序数据可视化。
例如,如果将每日的交易数据存储在Elasticsearch内,您可以在数秒内可视化每日的交易量。只需使用dejavu将样本数据集导入Elasticsearch实例并将Grafana连接到Elasticsearch数据源。
首先,将样本数据导入到Elasticsearch,并按照Elasticsearch官方网站的步骤,将logs.json数据加载到Elasticsearch中。
具体来说,执行以下命令。
从 Elastic 服务器下载 logs.jsonl 文件:
curl -O https://download.elastic.co/demos/kibana/gettingstarted/7.x/logs.jsonl.gz
将文件压缩为gzip格式。
gunzip logs.jsonl.gz
最后,将数据上传至Elasticsearch实例。
curl -H 'Content-Type:application / x-ndjson' -XPOST 'localhost:9200 / _bulk?pretty' --data-binary @ logs.jsonl
通过将dejavu UI连接到http://127.0.0.1:1358以及logstash-2015.05.18索引,您可以检查数据负载。

下一步,将Elasticsearch群集作为数据源添加到Grafana中,并创建可视化的数据展示。
请参考本地主机上的Grafana,按照下述方式添加Elasticsearch数据源。

接下来,我们将从数据源创建一个新的仪表盘,以绘制平均机器RAM。请选择并添加仪表盘,并添加图形可视化。在查询下拉框中,选择Elasticsearch作为数据源。然后,使用machine.ram作为平均指标。

当保存了视觉化后,可以在右上方的框中选择自定义的时间范围。这是因为日志数据中包含了2015年5月的条目。配置该时间范围后,将获得以下视觉化。

如果添加了 Average Bytes 的可视化,Grafana 仪表板将如下所示。

总结
在这篇文章中,我们讲解了如何使用Graphite和Grafana来监控Elasticsearch实例。我们还了解了如何通过Grafana来可视化Elasticsearch中的应用程序数据。
MetricFire提供了対生产环境的Hosted Graphite和Hosted Grafana,以及其他许多优点。用户可以将精力集中在应用程序的构建上,同时将度量的可伸缩性和存储管理交给MetricFire处理。
请注册 MetricFire 的免费试用账户,设置 Graphite,并立即创建 Grafana 仪表盘。您还可以预约演示,与 MetricFire 团队讨论如何优化配置监控堆栈的方法。