使用InfluxDB可视化HAProxy度量指标
作者:社区 / 产品,用例,开发者
2021年7月15日
导航到
本文由Jim O’Connell撰写,最初于2021年5月24日发布在HAProxy博客上。经许可转载。
HAProxy生成超过一百个指标,以提供对您的负载均衡器和它们代理的服务的几乎实时的视图,但要充分利用这些数据,您需要一个可视化的方法。
InfluxData的InfluxDB应用程序套件将构成HAProxy指标的许多离散数据点转换为时间序列数据,然后进行收集和绘图,从而让您深入了解系统和服务的运作。
当您查询HAProxy以获取指标时,您将查询每个指标的单个数据点,没有历史或上下文。这些数据点很有价值,但为了查看该指标随时间的变化,您需要收集历史数据。InfluxData的InfluxDB套件工具提取这些指标,添加时间戳,发送、存储、聚合和显示。其基于Web的界面复杂且直观,允许进行即席数据分析。
在这篇文章中,我们将介绍将您的HAProxy指标显示在InfluxDB中的所有必要步骤。
InfluxDB有几种版本,包括InfluxDB、InfluxDB Cloud和InfluxDB 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天。
点击 令牌 选项卡,如果您用户还没有令牌,请生成一个新的令牌。这些令牌用于Telegraf和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
。
使用模板
InfluxData创建了一个全面的 仪表板模板 ,使您轻松启动。只需单击几次即可完成安装。
<figcaption> 将HAProxy模板添加到InfluxDB</figcaption>
从您的InfluxDB工作区,导航到左侧的 设置 标签,点击 模板,并输入模板的资源文件URL: https://raw.githubusercontent.com/influxdata/community-templates/master/haproxy/haproxy.yml 这将安装一个仪表板,其中已经预填充了各种图表和图形,以便对您的指标有一个信息性的视图
<figcaption> InfluxData的HAProxy仪表板模板</figcaption>
结论
当您将HAProxy指标与InfluxDB结合使用时,您可以看到您的负载均衡器所看到的网络内部运作情况。您可以对被负载均衡的应用程序服务的性能获得洞察。这使您能够进行数据分析,并让您能够智能地应对事件,评估新部署的软件的效率,并满足您的服务水平目标。