在Linux上管理主机代理

安装主机代理后,根据需要配置和管理代理。 有关Linux 上所有可用的代理配置选项,请参阅以下列表。

检查主机代理的状态

安装主机代理后,请在 Instana 用户界面或主机上查看主机代理的状态。 有关更多信息,请参阅检查主机代理的状态

自定义代理配置

安装主机代理后,将创建以下配置文件:

/opt/instana/agent/etc/mvn-settings.xml
/opt/instana/agent/etc/org.ops4j.pax.url.mvn.cfg
/opt/instana/agent/etc/instana/com.instana.agent.bootstrap.AgentBootstrap.cfg
/opt/instana/agent/etc/instana/com.instana.agent.main.config.Agent.cfg
/opt/instana/agent/etc/instana/com.instana.agent.main.config.UpdateManager.cfg
/opt/instana/agent/etc/instana/com.instana.agent.main.sender.Backend.cfg
/opt/instana/agent/etc/instana/configuration.yaml
 

您可以根据需要定制代理的配置。 例如,您可以更改主机代理连接到的 Instana 后端及服务的 TCP 端口和主机名,配置代理向多个后端报告,或配置代理以实现主机代理与 Instana 后端之间的间接通信。

有关自定义代理配置的更多信息,请参阅以下主题:

启动、停止和更新代理

请参阅以下章节了解如何在Linux 上启动停止更新主机代理:

启动代理程序

安装主机代理时,会启用它在系统启动时自动启动。 您可以在安装代理时通过设置环境变量 "INSTANA_AGENT_AUTOSTART=false来关闭此行为。

  • 要启动主机代理,请运行以下命令:

    /opt/instana/agent/bin/start
     
  • 如果操作系统使用 "systemd作为初始系统,请运行以下命令:

    systemctl start instana-agent.service
     
  • 如果操作系统使用 "SysVinit作为初始系统,请运行以下命令:

    service instana-agent start
     

停止代理程序

要停止代理,请运行以下命令:

 /opt/instana/agent/bin/stop
 
  • 如果操作系统使用 "systemd作为初始系统,请运行以下命令:

    systemctl stop instana-agent.service
     
  • 如果操作系统使用 "SysVinit作为初始系统,请运行以下命令:

    service instana-agent stop
     

更新代理程序

您可以使用操作系统的软件包管理器升级机器上的代理软件包。 要更新和管理系统的软件包和补丁,请运行以下命令:

yum update // apt-get upgrade
 

instana-agent-staticinstana-agent-dynamic软件包已升级。

使用 "代理管理 "仪表板管理代理

您可以通过 Instana 用户界面的“代理管理”仪表板完成以下操作:

要打开代理管理控制面板,请完成以下步骤:

  1. 在 Instana 用户界面的侧边栏中,选择 “基础设施”。 或者,在主机概览中,在“ Instana 代理 ”下,单击该代理。
  2. 单击特定受监控主机。
  3. 在主机仪表板上,单击打开代理管理

设置和覆盖环境变量

当主机代理作为软件包安装,并通过 SystemV init 或 启动 systemd时,必须设置特定的 Instana 环境变量。 此外,您可能需要覆盖特定的环境变量。 例如,要支持 LXC 容器,主机代理的路径中必须包含 LXC 命令行工具。

  • 如果操作系统使用 "SysVinit作为初始系统,要设置和覆盖环境变量,请访问SystemVInit部分。

  • 如果操作系统使用 "Systemd作为初始系统,要设置和覆盖环境变量,请访问Systemd部分。

SystemV 初始化

如果操作系统使用 "SysVinit作为启动系统,主机代理会在 "/etc/default/目录Debian及其衍生版本)或 "/etc/sysconfig/目录Red Hat及其衍生版本)中获取相应的 shell 脚本。

如果不更改服务名称,SysVinit脚本将从 "/etc/default/instana-agent文件或 "/etc/sysconfig/instana-agent文件获取资源。

例如,在 Debian 中,你可以通过使用 /etc/default/instana-agent (当该文件 PATH 可读时)来更新 Instana 变量:

INSTANA_AGENT_KEY=$agentkey
INSTANA_AGENT_ENDPOINT=$endpoint
INSTANA_AGENT_ENDPOINT_PORT=$endpoint_port
PATH=/usr/local/bin:${PATH}
 
注意: 在代理配置中使用 INSTANA_AGENT_PORT 环境变量 INSTANA_AGENT_HOST 和 已弃用。 这些环境变量专用于配置 Instana 追踪器以连接到代理。 如果这些设置是全局性的, Instana 追踪器将无法连接到代理。 在 Instana 的未来版本中,将不再支持使用这些环境变量来配置代理。

要查找端点、端口和代理密钥的值,请转到 Instana 用户界面的主页,然后单击 “代理部署 ”。 在代理部署目录页面上,单击“ Linux - 自动安装(单行命令) ”磁贴。 然后,就可以在部署脚本中看到端点、端口和代理键值。

Systemd

如果操作系统使用 "Systemd作为初始系统,则可以通过以下可用选项设置或覆盖环境变量。 推荐使用 "插入单元 "方法,因为您无需修改服务单元文件,而其他方法则需要修改文件。 这些更改也可能在更新过程中被删除。 插入式单元方法可确保即使在更新后也能保留所设置的更改和环境变量。

注意: 修改环境变量后,请务必先运行 sudo systemctl daemon-reload 命令,然后运行 命令 sudo systemctl restart instana-agent.service ,以便将变量更改应用到代理程序中。

随到随学单位

通过使用 “即插即用 ”单元,您可以在不修改原始 systemd 单元文件的情况下覆盖特定设置。 您必须将插入文件放置到名称为 "<name>.conf /etc/systemd/system/<unit>.d/中。

例如,要设置 Instana 和PATH 环境变量,请创建一个 /etc/systemd/system/instana-agent.service.d/10-environment.conf 文件,内容如下:

[Service]
Environment=INSTANA_AGENT_KEY=$agentkey
Environment=INSTANA_AGENT_ENDPOINT=$endpoint
Environment=INSTANA_AGENT_ENDPOINT_PORT=$endpoint_port
Environment=PATH=/usr/local/bin:${PATH}
 
注意: 在代理配置中使用 INSTANA_AGENT_PORT 环境变量 INSTANA_AGENT_HOST 和 已弃用。 这些环境变量专用于配置 Instana 追踪器以连接到代理。 如果这些设置是全局性的, Instana 追踪器将无法连接到代理。 在 Instana 的未来版本中,将不再支持使用这些环境变量来配置代理。

EnvironmentFile指令

除了从单独文件中读取的环境指令外,该方法使用了插入式单元。 例如,创建内容如下的 "/etc/instana/environment.conf文件:

INSTANA_AGENT_KEY=$agentkey
INSTANA_AGENT_ENDPOINT=$endpoint
INSTANA_AGENT_ENDPOINT_PORT=$endpoint_port
PATH=/usr/local/bin:${PATH}
 

然后,在 systemd 下拉单元文件中使用以下配置:

[Service]
EnvironmentFile=/etc/instana/environment.conf
 
注意: 在代理配置中使用 INSTANA_AGENT_PORT 环境变量 INSTANA_AGENT_HOST 和 已弃用。 这些环境变量专用于配置 Instana 追踪器以连接到代理。 如果这些设置是全局性的, Instana 追踪器将无法连接到代理。 在 Instana 的未来版本中,将不再支持使用这些环境变量来配置代理。

全局环境设置

默认情况下,systemd 会从 "/etc/systemd/system.conf或 "/etc/systemd/system.conf.d/10-default-env.conf等不同路径读取全局配置。 将 "DefaultEnvironment配置放入这些文件后,所有 systemd 设备都可以使用它们。 如需更多信息,请参阅 systemd 配置

例如,当你在文件/etc/systemd/system.conf.d/10-default-env.conf 中设置以下配置时,会创建三个 Instana 环境变量:

[Manager]
DefaultEnvironment="INSTANA_AGENT_KEY=<key>" "INSTANA_AGENT_ENDPOINT=<endpoint>" "INSTANA_AGENT_ENDPOINT_PORT=<endpoint-port>"
 
注意: 在代理配置中使用 INSTANA_AGENT_PORT 环境变量 INSTANA_AGENT_HOST 和 已弃用。 这些环境变量专用于配置 Instana 追踪器以连接到代理。 如果这些设置是全局性的, Instana 追踪器将无法连接到代理。 在 Instana 的未来版本中,将不再支持使用这些环境变量来配置代理。

正在删除临时文件

Instana 主机代理会在目录中安装其所需的一些文件 /tmp/.instana/ 。 如果这些文件在主机运行期间被删除,就会在更新时产生问题。

Tmpfiles.d

在基于 "system.d的系统中,"systemd-tmpfiles守护进程可能会删除 "/tmp/.instana目录中主机代理需要的文件,从而导致难以排除故障的更新失败。

自 181 版起,DEB 和 RPM 代理包会自动安装以下配置脚本, /usr/lib/tmpfiles.d 该脚本可调整行为,避免删除必需文件,从而确保不影响 Instana 主机代理的功能。

# Instana files in /tmp cannot be deleted when the agent is running,
# or it may lead to issues on agent update
R! /tmp/.java_pid*
R! /tmp/.instana/*
 

此配置允许仅在主机 tmpdfiles.d 重启后删除 Instana 代理所需的文件。 新启动的 Instana 主机代理会在启动时重新创建这些文件。

Red Hat Enterprise Linux和CentOS,的第 6 版和第 7 版包含默认的 "tmpdfiles.d策略,每 10 天删除整个 "/tmp目录,而不管软件包可以指定哪些策略。 这意味着像 Instana 这样的包可以定义自定义策略,以控制系统或该包本身的行为。

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# See tmpfiles.d(5) for details
# Clear tmp directories separately, to make them easier to override
v /tmp 1777 root root 10d
v /var/tmp 1777 root root 30d

...
 

除了编辑默认的 "tmpfiles.d策略外,没有其他已知的解决方法。 有问题的 tmpfiles.d 策略位于 /usr/lib/tmpfiles.d/tmp.conf 中。

许多 Debian 的派生版本(包括 Ubuntu )都包含默认 tmpdfiles.d 策略,这些策略会删除整个 /tmp 目录,无论像 Instana 这样的软件包指定了哪些策略。 安装时,DEB 和 RPM 软件包会运行一个测试,以验证临时文件 "tmpfiles.d的行为,并运行命令 "systemd-tmpfiles --remove

在那些策略覆盖了 Instana 代理包所指定的必需行为的系统上,您可能会看到以下警告:

WARNING: The tmpfiles.d policies of this system may cause the Instana agent to malfunction by deleting the /tmp/.instana directory; refer https://www.instana.com/docs/setup_and_manage/host_agent/on/linux#tmpfiles.d for more information.
 

您可以通过编辑默认的 "tmpfiles.d策略来解决这个问题。 有问题的 tmpfiles.d 策略位于 /usr/lib/tmpfiles.d/tmp.conf 中。

Tmpwatch

Red Hat Enterprise Linux6 和CentOS6 包含 tmpwatch 工具,该工具会删除 "/tmp/.instana中不必要的文件。 不过,在这些发行版中使用 tmpwatch 有时会导致主机代理出现更新问题。 有关更多信息,请参阅删除临时文件

# Deal with tmpwatch, found in RHEL 6 and CentOS 6.
# It is a cronjob, installed in /etc/cron.d/daily, with pretty much hardcoded
# configurations to wipe data the Instana agent needs.
readonly TMPWATCH_CRONJOB='/etc/cron.d/daily/tmpwatch'
if [ -f "${TMPWATCH_CRONJOB}" ]; then
  # Let's check if we already touched the file and, if not, add our excludes
  if ! grep "${TMPWATCH_CRONJOB}" Instana 2&>1 > /dev/null; then
    echo "tmpwatch discovered in '${TMPWATCH_CRONJOB}': adding the exclude flags for Instana"
    # Edit in place with `sed`
    sed -i '/^flags=/a flags="${flags} -x /tmp/instana -x /tmp/.javapid* # Added by Instana"' "${TMPWATCH_CRONJOB}"
  fi
fi
 

清洁剂数据目录

您可以使用该环境变量 AGENT_CLEAN_DATA_DIR 来清理代理的数据目录。

在代理启动前将 true 设置 AGENT_CLEAN_DATA_DIR 为 时,tmp、cache 和 logs 目录中的内容将被清除。 对于动态代理,此过程还会清除过时的构建产物,并获取最新的构建产物和 JAR 文件。 对于动态代理和静态代理而言,该过程将继续进行,包括重建缓存并生成新的代理日志。

要启用该环境变量,请使用以下配置:

export AGENT_CLEAN_DATA_DIR=true
 

启用环境变量后,启动代理程序以运行清理流程。

如果您使用动态代理,建议在不再需要时删除该 AGENT_CLEAN_DATA_DIR 环境变量。 如果保持启用状态,代理程序将在每次启动时清理其数据目录并下载包括日志在内的构建产物,这会增加代理程序的启动时间。