使用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指标仪表板导入如下。

image.png

当您进行导入后,您应该可以在Grafana仪表板上看到Elasticsearch指标。

在主机上保存JVM / CPU和内存指标。

image.png
image.png

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

image.png
image.png

即时搜索指标

image.png

在上述的仪表盘上显示的指标仅仅是可监控的子集。每个组织都有根据需求来监控不同的指标集合。如果想要基于这些指标创建更多的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索引,您可以检查数据负载。

image.png

下一步,将Elasticsearch群集作为数据源添加到Grafana中,并创建可视化的数据展示。

请参考本地主机上的Grafana,按照下述方式添加Elasticsearch数据源。

image.png

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

image.png

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

image.png

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

image.png

总结

在这篇文章中,我们讲解了如何使用Graphite和Grafana来监控Elasticsearch实例。我们还了解了如何通过Grafana来可视化Elasticsearch中的应用程序数据。

MetricFire提供了対生产环境的Hosted Graphite和Hosted Grafana,以及其他许多优点。用户可以将精力集中在应用程序的构建上,同时将度量的可伸缩性和存储管理交给MetricFire处理。

请注册 MetricFire 的免费试用账户,设置 Graphite,并立即创建 Grafana 仪表盘。您还可以预约演示,与 MetricFire 团队讨论如何优化配置监控堆栈的方法。

广告
将在 10 秒后关闭
bannerAds