使用InfluxDB可视化HAProxy度量指标

导航到

本文由Jim O’Connell撰写,最初于2021年5月24日发布在HAProxy博客上。经许可转载。

Visualize HAProxy with InfluxDB

HAProxy生成超过一百个指标,以提供对您的负载均衡器和它们代理的服务的几乎实时的视图,但要充分利用这些数据,您需要一个可视化的方法。

InfluxData的InfluxDB应用程序套件将构成HAProxy指标的许多离散数据点转换为时间序列数据,然后进行收集和绘图,从而让您深入了解系统和服务的运作。

当您查询HAProxy以获取指标时,您将查询每个指标的单个数据点,没有历史或上下文。这些数据点很有价值,但为了查看该指标随时间的变化,您需要收集历史数据。InfluxData的InfluxDB套件工具提取这些指标,添加时间戳,发送、存储、聚合和显示。其基于Web的界面复杂且直观,允许进行即席数据分析。

在这篇文章中,我们将介绍将您的HAProxy指标显示在InfluxDB中的所有必要步骤。

InfluxDB有几种版本,包括InfluxDBInfluxDB CloudInfluxDB Enterprise。在这篇帖子中,我们将使用InfluxDB,他们的开源产品,但配置步骤和基本操作几乎与其它产品相同。

为了给HAProxy指标添加时间戳并将其发送到InfluxDB,我们使用InfluxData的一个名为Telegraf的工具。Telegraf是一个服务器代理,具有超过200个输入插件,作为独立Go二进制文件编写,具有最小的内存占用。Telegraf的HAProxy输入插件直接连接到HAProxy运行时API,您可以在HAProxy配置中用一行命令设置。

HAProxy配置

确保您已在HAProxy配置的全局部分中添加了运行时API,并重新加载HAProxy以启用它

global 
   stats socket /run/haproxy/api.sock mode 660 level admin

记下/run/haproxy/api.sock的位置。在配置Telegraf时将需要此信息。

注意:我们的示例使用域套接字,但Telegraf的HAProxy输入文档中概述了其他选项,例如抓取HAProxy统计页面。

访问开始使用InfluxDB 2.0并安装适用于您的操作系统的版本。登录后,点击左侧的数据菜单项,然后点击“桶”标签。如果不存在,则创建一个名为haproxy的桶,并将数据保留时长设置为30天。

Create bucket in InfluxDB

点击 令牌 选项卡,如果您用户还没有令牌,请生成一个新的令牌。这些令牌用于Telegraf和InfluxDB之间的认证通信。选择您生成的令牌,然后将其复制到剪贴板。将它粘贴到文本文件中并妥善保管。

Tokens in InfluxDB

如果您不想将此令牌硬编码到配置文件中,可以将它作为环境变量存储在Telegraf运行的服务器上

$ export INFLUXDB_TOKEN="<在此处插入InfluxDB令牌>"

为了使此变量持久化,请将其添加到系统的 /etc/environment 文件中,以便在启动时加载。

安装Telegraf

安装Telegraf 到已安装HAProxy的同一服务器。在文本编辑器中打开一个新的、空的配置文件 /etc/telegraf/telegraf.conf 。

我们将从InfluxDB和HAProxy收集一些信息,并将其放入此文件中。

Telegraf配置有两个基本组件,一个输出部分指向InfluxDB,一个输入部分从HAProxy的运行时API收集指标。

创建一个新的、空的 /etc/telegraf/telegraf.conf 文件,并添加以下内容

[[outputs.influxdb_v2]]
  ## The URLs of the InfluxDB cluster nodes.
  ## urls exp: http://127.0.0.1:9999
  urls = ["http://127.0.0.1:8086"]

  ## Token for authentication.
  # token = "$INFLUX_TOKEN" # Uncomment to use environment variable
  token = "Your InfluxDB token" # Plain text token
  ## Organization is the name of the organization you wish to write to; must exist.
  organization = "haproxy"

  ## Destination bucket to write into.
  bucket = "haproxy"  

[[inputs.haproxy]]
  servers = ["socket:/run/haproxy/api.sock"]

保存并关闭文件。

尽管您通常会以 systemd 服务的形式运行Telegraf,但您可以先以交互式方式运行它以检查错误

$ sudo systemctl stop telegraf
$ telegraf --config /etc/telegraf/telegraf.conf
2021-04-23T00:01:17Z I! Starting Telegraf 1.18.1
2021-04-23T00:01:17Z I! Loaded inputs: haproxy
2021-04-23T00:01:17Z I! Loaded aggregators:
2021-04-23T00:01:17Z I! Loaded processors:
2021-04-23T00:01:17Z I! Loaded outputs: influxdb_v2
2021-04-23T00:01:17Z I! Tags enabled: host=spion
2021-04-23T00:01:17Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"my-haproxy", Flush Interval:10s

等待约30秒以检查输出是否有错误。如果没有错误,InfluxDB正在接收您的HAProxy指标。停止上面的交互式命令,并以 systemd 服务的形式启动它。

$ sudo systemctl start telegraf

打开您的InfluxDB工作区并导航到探索部分。查找您创建的 haproxy 桶,并深入查看HAProxy指标。从 过滤器 列选择一个指标,然后点击 提交。这将在您选择的时间段内创建该指标的基本折线图。

下面的插图显示了在基准测试期间的平均响应时间 rtime

Data Explorer benchmarking test

使用模板

InfluxData创建了一个全面的 仪表板模板 ,使您轻松启动。只需单击几次即可完成安装。

InfluxDB模板<figcaption> 将HAProxy模板添加到InfluxDB</figcaption>

从您的InfluxDB工作区,导航到左侧的 设置 标签,点击 模板,并输入模板的资源文件URL: https://raw.githubusercontent.com/influxdata/community-templates/master/haproxy/haproxy.yml 这将安装一个仪表板,其中已经预填充了各种图表和图形,以便对您的指标有一个信息性的视图

HAProxy监控模板仪表板<figcaption> InfluxData的HAProxy仪表板模板</figcaption>

结论

当您将HAProxy指标与InfluxDB结合使用时,您可以看到您的负载均衡器所看到的网络内部运作情况。您可以对被负载均衡的应用程序服务的性能获得洞察。这使您能够进行数据分析,并让您能够智能地应对事件,评估新部署的软件的效率,并满足您的服务水平目标。