【问题标题】:How to configure multiple telegraf.service file to run multiple telegraf instances如何配置多个 telegraf.service 文件以运行多个 telegraf 实例
【发布时间】:2019-11-18 18:13:18
【问题描述】:

我有一个 Kuberenetes 集群,并且 telegraf 在每个节点上运行。 Telegraf 正在收集数据并将其存储到 InfluxDB 中。现在我想运行另一个 Telegraf 实例,它将使用其中一个 Pod 命名空间,并从 Pod 内运行的 Apache 服务器收集统计信息,并将统计信息存储在同一个 InfluxDB 存储中。

我点击了这个链接 (https://community.influxdata.com/t/multiple-telegraf-configs/245/6),但不知道如何在我的设置中实现它。

我正在使用 Debian GNU/Linux 9 (stretch)telegraf_1.12.5-1

我创建了两个服务文件如下:

cat /usr/lib/telegraf/scripts/telegraf.service
[Unit]
Description=The plugin-driven server agent for reporting metrics into InfluxDB
Documentation=https://github.com/influxdata/telegraf
After=network.target

[Service]
EnvironmentFile=-/etc/default/telegraf
User=telegraf
ExecStart=/usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d $TELEGRAF_OPTS
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartForceExitStatus=SIGPIPE
KillMode=control-group

[Install]
WantedBy=multi-user.target
cat /usr/lib/telegraf/scripts/telegraf_xyz.service
[Unit]
Description=The plugin-driven server agent for reporting metrics into InfluxDB
Documentation=https://github.com/influxdata/telegraf
After=network.target

[Service]
EnvironmentFile=-/etc/default/telegraf_xyz
User=telegraf
ExecStart=/usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d $TELEGRAF_OPTS
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartForceExitStatus=SIGPIPE
KillMode=control-group

[Install]
WantedBy=multi-user.target

但是当我尝试运行第二个实例时,它给出了错误:

Failed to start telegraf_xyz.service: Unit telegraf_xyz.service not found.

作为其中的一部分,我还需要做哪些更改?我在许多其他位置(/sys/)看到了 telegraf.service 文件,我不确定我还需要在哪里配置第二个 telegraf 实例。我对此很陌生。

还有其他更好的方法可以在我的设置中实现吗?

注意:我已经创建了两个服务文件并且能够在我的主机上运行它。现在真正的挑战是在另一个网络命名空间中运行实例。谁能帮我实现这个?

【问题讨论】:

    标签: kubernetes telegraf


    【解决方案1】:

    请将您的服务文件放在这里:/etc/systemd/system/.然后使用 systemctl daemon-reload 重新加载 systemd。现在应该可以找到您的服务了。

    【讨论】:

    • 谢谢。现在我想要的是,我想在另一个网络名称空间中运行它并从那里收集数据。我想要这个,因为我的 Apache 没有暴露在节点中,它将在 pod 中运行。如果我手动执行该命令可以正常工作,但如果我在服务文件中使用相同的命令ExecStart 参数,它会给出Executable path is not absolute, ignoring: ip netns exec mag /usr/bin/telegraf -config /etc/telegraf/telegraf_mag.conf。这是我正在使用的命令 ip netns exec mag /usr/bin/telegraf -config /etc/telegraf/telegraf_mag.conf -config-directory /etc/telegraf/telegraf.d
    • 我以前从未尝试过。我猜你必须在你的 systemd 单元中使用适当的附加参数。抱歉,我帮不上忙。
    猜你喜欢
    • 1970-01-01
    • 2016-04-16
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 2013-08-20
    • 1970-01-01
    • 2015-04-24
    相关资源
    最近更新 更多