向MetricFire发送指标数据

image.png

首先

监控IT资源是大中型企业日常业务的一部分,但中小企业也从监控系统、内存容量、可用性和性能方面受益。这样的主动性目的是为了确保流畅的流程。例如,IT管理员需要在几天前就知道磁盘容量不足的情况,这样IT管理员可以采取措施应对。

有许多监控工具可供选择,但Prometheus、Graphite和Grafana是受欢迎的开源监控工具。将这些工具与MetricFire等解决方案进行整合,将构建出一整套出色的监控平台。

传统的监控工具通常重点关注基础设施资源,如内存和CPU的使用情况,但仅凭此已不再足够。现在需要基于指标和更广泛的可观测性,以获得对应用程序、服务器和平台更全面的视图。

Prometheus、Grafana、以及Graphite是几个优秀的开源工具,可用于指标收集和可视化,但如果需要自己设置堆栈,那将是一项繁琐的任务。这就是MetricFire发挥作用的地方。除了基础设施的成本和维护外,我们还提供出色的功能。

MetricFire 是什么?

MetricFire提供了上述三个开源工具的托管和维护服务,因此您可以通过令人愉悦的Grafana界面轻松可视化指标。对于能够集成各种监控相关工具的监控平台的需求空前高涨,最近出现了许多新的热门基础设施技术,如Docker、Kubernetes等。所有这些都是可扩展的,并且由于整合了官方工具和第三方工具,功能数量和监控负载都有增加的趋势。MetricFire能够将系统的指标收集到一个仪表盘上,并提供可扩展的解决方案。

为了简化数据收集和可视化监控,全一致的平台如MetricFire是至关重要的。此外,MetricFire对于基础监控技术和平台是持中立态度的。

如果您尚未拥有帐号,您可以选择免费注册14天,并解锁所有功能。注册后,MetricFire支持人员将立即给您来电,以便找到解决方案。

将指标发送到MetricFire的方法

在本教程中,我们将介绍如何将指标发送到MetricFire并开始监视的方法。

要向MetricFire提供数据,有以下两种方法可以选择。

    • Hosted Graphite agent

 

    CollectDとStatsD

一旦确认了上述的两种方法,我们将对如何设置Prometheus实例以收集指标进行说明,并在教程最后解释保护这些指标发送到MetricFire过程的技巧。

使用Hosted GraphiteAgent发送指标

如果使用Hosted Graphite,将指标传送到MetricFire平台有三种方法。

    • MetricFireのエージェントを使用する

 

    • コードの使用

 

    エージェント+Hosted Graphiteアドオン

使用MetricFire的代理

在最初的方法中,我们将使用终端。在服务器上运行cURL命令,将自动设置所需的组件。该命令还会开始将数据发送到MetricFire实例。请注意,该命令包含与每个MetricFire帐户不同的API密钥。

登录仪表盘后,点击[如何发送度量]按钮即可获取API密钥。复制安装命令并在服务器上执行,即可连接到MetricFire仪表盘。

image.png
image.png

这是使用基于Debian的系统的示例。

curl -s https://XXXXXXXXXXXXXXXX@www.hostedgraphite.com/agent/installer/deb/ | sudo sh

请注意,根据下面的截图所述,您可以通过点击“代理人”,然后添加新的代理人,以获得相同的命令。

image.png

从代码中提取的指标

在MetricFire的仪表板中,点击代码选项后,会显示可立即使用的各种编程语言(如Python、Java、Bash)的代码片段。

一旦可以使用源代码,您就可以以应用程序的形式轻松使用它,并开始将指标发送到MetricFire。

代理商 + 托管的Graphite附加组件

第三个选项非常有趣,可能是最简单的选项之一。在这个选项中,您可以使用Hosted Graphite附加组件和代理,使代理可以自动将数据输入到默认的Grafana仪表板中。

通常情况下,使用插件可以简单点击按钮即可从第三方服务获取数据。另外,还有可以生成示例仪表板集的插件,您可以在几分钟内查看详细仪表板所需的信息。

アドオンは、Graphiteエージェントによってエクスポートされた基本システムメトリックのダッシュボードを提供します。 MetricFireのダッシュボードで、[アドオン]セクションに移動し、[ホスティングされたGraphiteエージェント(ベース)]オプションをクリックして、このアドオンを有効にします。 [ダッシュボードを再生成]ボタンをクリックして、このアドオンでGrafanaを構成します。 Grafanaダッシュボードを再生成しようとすると、次のメッセージが表示される場合があります。

This will create/overwrite a dashboard in Grafana called Hosted Graphite Agent (Base). Are you sure?

已经按照以上的方法准备就绪。系统会显示安装代理程序到发送指标的系统中,并且执行提供的指令后,系统会开始将数据发送到MetricFire。如果想要确切地了解系统/服务器的配置,请检查以下服务的状态。

sudo systemctl status hg-agent

只要在服务器上运行着hg-agent,它就会开始向MetricFire仪表盘提供数据。

那么,让我们来检查一下发送指标的不同方法。

使用StatsD或collectd发送指标

Collectd和StatsD是两个广泛使用的用于发送度量数据的工具。它们本质上相似,但根据发送的数据类型不同。Collectd主要用于收集和发送与系统相关的度量(例如CPU,内存,磁盘等),而StatsD则用于发送与应用程序相关的统计数据。

这两者都使用守护进程进行执行。它们持续在后台执行并处理将指标收集并发送到MetricFire仪表板的作业。StatsD是由Node.js编写的,而collectd是使用C语言开发的,但与MetricFire的集成过程基本相同。

为了将指标发送到外部系统,您需要按照特定的格式进行。StatsD提供了丰富的指标类型。StatsD最常见的指标类型包括仪表、计数器、定时器、直方图、计量器和集合。只要设置好与MetricFire的连接后,这些指标类型就可以正常使用。如需详细信息,请查看此处。

将这两种方法整合在一起非常简单。只需登录MetricFire账户并进入“附加组件”部分,就会发现在“数据源附加组件”部分下方显示了可以同时使用StatsD和collectd的附加组件。

image.png

当启用扩展时,将显示重要的使用注意事项。请记住这些信息,以配置系统以使用StatsD。

例:在帳戶中啟用了StatsD功能。

    • StatsD形式のデータをstatsd.hostedgraphite.com:8125に送信します

 

    • Hosted Graphite APIキー(XXXXXXXXXXXXXXXXXX)でデータのプレフィックスを付けます。

 

    ほとんどのクライアントは、「プレフィックス」または「名前空間」オプションを受け入れて、APIキーを含めることができます。

启用StatsD后,您可以开始计划收集和发送指标数据。按照本教程的步骤,您可以使用这些信息来配置Grafana仪表板。

Prometheus的安装设置

Prometheus 是一個強大的開源度量收集和儲存系統。它可以收集系統和用戶定義的度量,並將其儲存到可擴展的時間序列資料庫中。隨著時間的推移,它越來越受歡迎,被許多知名的雲計算和軟體工程公司所采用。

如果你正在进行数据收集并将其作为时序数据库使用,那么MetricFire将能够强大地帮助你。通过配置Prometheus将数据收集并发送到MetricFire实例,以及启用Prometheus的导出插件,你可以扩展Prometheus的功能。

– 节点导出器
– 黑匣子导出器
– MySQL导出器
– RabbitMQ导出器
– Nginx虚拟主机状态导出器

虽然Prometheus在过去几年里有着广泛的功能,但仍然存在一些缺失的功能,其中之一是TLS支持。如果需要启用TLS加密,那就需要在Prometheus之前设置一个代理工具。

在中国本地化的繁体字中,以下是对上述问题的原生汉语的简单描述:

要安装和配置Prometheus有3种方法。一种方法是使用Prometheus官方文件中提供的源代码安装方法,另一种方法是使用系统软件包管理器来安装Prometheus。第三种方法是使用容器化的Prometheus。在Dockerhub上有非常好的打包好的Docker镜像可用,但使用这种方法可能会导致不稳定性和数据持久性问题,如果忘记了细节。

在Ubuntu上,最简单的方法是使用软件包管理器(如apt、snap、yum等)。

启动和运行完全功能的Prometheus实例所需的步骤如下。首先,您需要将apt-key添加到Ubuntu系统中。

GET https://s3-eu-west-1.amazonaws.com/deb.robustperception.io/41EFC99D.gpg | apt-key add -

执行更新,并确认您喜欢的软件包管理器已收到新的更改。

apt-get update

这个命令用来与默认组件一起安装Prometheus。

apt-get install prometheus prometheus-node-exporter prometheus-pushgateway prometheus-alertmanager

我将确认Prometheus正在运行。

当您启动浏览器并输入http://localhost:9090时,您将在浏览器中看到PrometheusWeb接口。您可以使用位于/etc/prometheus.yml的配置文件来配置Prometheus的端口设置或其他重要的运行时参数,或者将同一文件复制并粘贴到新文件中以备后用。

global:
    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']

在启动Prometheus之前,需要在同一个配置文件中设置”remote_write”功能和”remote_read”功能。

# Settings related to the remote write feature.
remote_write:
  [ - <remote_write> ... ]
# Settings related to the remote read feature.
remote_read:
  [ - <remote_read> ... ]

在MetricFire的特定情况下,需要使用令牌携带下一个远程地址。

# Settings related to the remote write feature.
remote_write:
  - https://api.metricfire.com/write
  - bearer_token: <YOUR BEARER TOKEN>
# Settings related to the remote read feature.
remote_read:
  - https://api.metricfire.com/read
  - bearer_token: <YOUR BEARER TOKEN>

在MetricFire仪表盘上,点击”Add-Ons”,然后进入Prometheus,您可以获取令牌。

image.png

最终的组成如下所示。

global:
    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']
remote_read:
  - url: https://api.metricfire.com/read
    bearer_token: <YOUR BEARER TOKEN>
remote_write:
  - url: https://api.metricfire.com/write
    bearer_token: <YOUR BEARER TOKEN>

保存YAML文件。

通过使用已创建的配置,您可以启动 Prometheus。

./prometheus --config.file=<CONFIGURATION FILE>

第二步是执行机器指标的导出器节点导出器。如果使用源代码安装Prometheus,则需要使用“node_exporter”二进制文件。但是,如果使用系统软件包管理器安装,则名称可能会有所变化。例如,在基于Debian的系统上使用prometheus-node-exporter。一旦Node Exporter运行,可以通过在/metrics端点上运行cURL命令来确认指标是否被导出。

curl http://localhost:9100/metrics

机器需要向MetricFire提供指标。您可以确保这些数据已保存和汇总到仪表盘上。

image.png

将发送到MetricFire的数据保护起来。

让我们来看看如何保护数据发送至MetricFire的过程。

托管的Graphite代理

将度量安全发送的最简单方法是使用HostedGraphite代理。
一旦安装,它会自动通过HTTPS传输到Hosted Graphite。

如果您已经使用了普通文本TCP或UDP Carbon格式接口等其他方法,您可以继续通过TCP over TLS和HTTPS以相同的格式发送度量数据。下面的段落将给出一些例子。

使用TTPS来安全发送数据。

为了实现这个目标,可以使用cURL命令提供MetricFire的HTTPS端点。

‍curl https://<API_KEY>@www.hostedgraphite.com/api/v1/sink --data-binary "metrics.tar"

需要将(をAPIキーに置き換える必要があります。)翻译成中文。

你可能已经注意到了,这个过程与你在这个教程的开头部分看到的是相同简单的。只需要将HTTP替换为HTTPS。

HTTPS的替代方案:在TLS上的TCP

在HTTPS通信中会有额外的开销,而TCP over TLS可以提供更高级别的安全性。如果选择了TCP,则可以使用以下命令来配置主机系统。

echo "API-KEY.metrics.tar" | ncat --ssl carbon.hostedgraphite.com 20030

由于MetricFire在端口20030上配置了TCP over TLS终端节点,所以上述命令中指定了该特定端口。

其他可考虑的选项包括代理、中继和非阻塞度量。

另一个选项是使用诸如Stunnel之类的工具,在不更改程序代码的情况下向现有服务器添加TLS加密功能。这对于不希望配置应用程序来管理TLS连接的情况非常有用。

我忘记说了一件重要的事,如果您已经在现有的Graphite基础设施中运行Carbon Relay Demon,那么可以通过现有的Carbon Relay安全地转发流量。

此外,如果您需要从多个服务器向MetricFire发送数据,请注意TCP可能会阻塞并进行同步。在这种情况下,您可以使用UDP。语言指南可以帮助您为各种编程语言设置HTTP(S)、TCP和UDP。

总结

在这个教程中,我们介绍了如何向MetricFire服务发送数据,并确认了保护数据传输的方法。我们还确认了StatsD、collectd和Prometheus的安装和配置步骤。MetricFire捆绑了高质量的开源技术,如Grafana、Prometheus和Graphite,使它们易于使用和维护。

我们简化了复杂的度量收集和可视化过程,使企业可以专注于核心业务。

立即获取免费试用,并点击此处开始。另外,请预约演示,在视频通话中加入MetricFire团队。我们始终很高兴能支持用户,以便充分利用平台。

广告
将在 10 秒后关闭
bannerAds