newrelic.newrelic-infra

New Relic Community Plus header

:warning: New Relic 提供了一种新的 Ansible 解决方案,旨在简化您的 New Relic 可观察性工作。请考虑今后使用此解决方案。

New Relic 基础设施代理的 Ansible 角色 test_ansible release_ansible

一个可以用于安装和/或配置 New Relic 基础设施代理并安装 New Relic 基础设施集成的 Ansible 角色。

安装

使用以下命令下载最新版本的 New Relic 角色:

ansible-galaxy install newrelic.newrelic-infra

开始使用

要在剧本中直接使用 newrelic.newrelic-infra 角色,只需 在您的剧本中包含该角色。例如:

# myplaybook.yml
---
- hosts: webservers
  roles:
    - role: newrelic.newrelic-infra
      vars:
        nrinfragent_config:
          license_key: 12345

要在您自己的角色中将 newrelic.newrelic-infra 作为角色依赖关系, 在您角色的 meta/main.yml 中添加依赖关系。例如:

# roles/myapp/meta/main.yml
---
dependencies:
  - role: newrelic.newrelic-infra

用法

此角色可用于与 New Relic 基础设施代理进行以下交互:

  • 通过操作系统包管理器安装代理
  • 通过 tarball 安装代理(仅限 Linux)
  • 通过操作系统包管理器安装集成
  • 配置代理
  • 设置代理初始化服务

默认情况下,该角色将通过操作系统包管理器安装代理,通过操作系统包管理器安装任何集成,配置代理,并设置代理初始化服务。此外,还提供以下标签以执行其他操作。

  • nria_install
  • nria_install_tarball
  • nria_install_integrations
  • nria_configure
  • nria_setup_service

基本用法

以下代码片段将通过操作系统包管理器安装代理,使用指定的配置配置代理,并设置代理操作系统初始化服务。

---
- hosts: ap_ne_1
  roles:
    - name: newrelic.newrelic-infra
      vars:
        log_file: /opt/logs/newrelic-infra.log
        verbose: 0
        nrinfragent_config:
          license_key: 12345
          custom_attributes:
            environment: dev

tarball 安装(仅限 Linux)

要使用 tarball 安装方法 进行安装,您必须将 nrinfragent_tarball_version 变量设置为有效的 tarball 版本号。通过 tarball 安装方法进行的安装将运行配置和代理初始化服务的任务,除非指定 nria_install_tarball 标签。

- hosts: ap_ne_1
  roles:
    - name: newrelic.newrelic-infra
      vars:
        nrinfragent_tarball_version: 1.18.0
        nrinfragent_tarball_download_dir: /opt/newrelic/
        nrinfragent_config:
          log_file: /opt/logs/newrelic-infra.log
          verbose: 0
          license_key: 12345
          custom_attributes:
            environment: dev

离线 tarball 安装

要使用本地 tarball 而不是从网上下载,您需要将 nrinfragent_tarball_local_file_path 变量设置为 tarball 的本地路径,路径来源于 http://download.newrelic.com/infrastructure_agent/binaries/linux/{{ architecture }}/newrelic-infra_linux_{{ version }}_{{ architecture }}.tar.gz

- hosts: ap_ne_1
  roles:
    - name: newrelic.newrelic-infra
      vars:
        nrinfragent_tarball_version: 1.18.0
        nrinfragent_tarball_download_dir: /opt/newrelic/
        nrinfragent_tarball_from_local: yes
        nrinfragent_config:
          log_file: /opt/logs/newrelic-infra.log
          verbose: 0
          license_key: 12345
          custom_attributes:
            environment: dev

仅配置

以下代码片段将仅配置已存在安装的代理配置,只要在运行剧本时使用 --tags nria_configure。请注意,此时必须使用 include_role

- hosts: ap_ne_1
  tasks:
  - name: 配置 New Relic 基础设施代理
    include_role:
      name: newrelic.newrelic-infra
    vars:
      nrinfragent_config:
        license_key: 12345
        log_file: /opt/logs/newrelic-infra.log
        verbose: 0
        custom_attributes:
          environment: dev
    tags:
    - nria_configure

参考

角色配置

变量

角色配置变量在 inline 中有文档记录,以下是常见变量。

nrinfragent_state(可选)

安装或卸载软件包(包管理器安装)。包管理器安装通过 Ansible 包模块 执行。

  • 'latest' - [默认] 安装最新版本的代理。同样适用于 present
  • 'absent' - 卸载代理。
nrinfragent_service_state(可选)

指定安装后 newrelic-infra 服务的状态。默认为 started,确保服务将运行。将其更改为 stopped 仅安装,而不立即启动。有关有效值的更多信息,请参见 Ansible 服务模块文档

nrinfragent_service_enabled(可选)

指定服务在启动时是否会启动。默认为 yes。将其更改为 no 以防止服务在启动时自动启动。有关有效值的更多信息,请参见 Ansible 服务模块文档

nrinfragent_config_file(可选)

指定 New Relic 基础设施代理的 配置文件 的自定义路径。默认情况下在 Linux 上为 /etc/newrelic-infra.yml,在 Windows 上为 %ProgramFiles%\New Relic\newrelic-infra\newrelic-infra.yml。这在 Linux tarball 安装 中尤其有用,当安装到非默认位置时。

nrinfragent_config(必需)

用于填充代理配置。至少必须提供 license_key。有关当前配置选项,请参见 New Relic 文档。例如:

custom_attributes:
  business_unit: sales
  team: newrelic
license_key: D000000000000000000000000000000000000000
log_file: /tmp/logs.log
verbose: 1
nrinfragent_integrations(可选)

指定通过操作系统包管理器安装的主机集成。可用集成列表可以在 这里 找到。

每个包都应提供其 namestate。集成包名称位于 单个集成文档安装和激活 部分。其名称通常为服务名称前加 nri- 前缀(如 nri-apachenri-redis 等)。

默认情况下,其状态为 absent,这不会安装包;您可以将其更改为 latestpresent。例如:

nrinfragent_integrations:
  - name: nri-nginx
    state: latest
  - name: nri-mysql
    state: absent

每个集成的源代码可以在 newrelic 的 GitHub 组织上找到。

license_key(已弃用)

可以通过顶层的 license_key 指定许可证密钥以保持向后兼容。我们建议您改用 nrinfragent_config 中的 license_key。如果同时指定了两者,则 nrinfragent_config 中的优先级更高。

nrinfragent_tarball_version(仅对 tarball 安装必需)

指定要下载的 New Relic 基础设施代理 tarball 版本。仅限 Linux

nrinfragent_tarball_download_dir(仅对 tarball 安装必需)

指定在目标主机上下载和解压 tarball 的目录。

nrinfragent_tarball_agent_dir(可选,仅对 tarball 安装)

指定在目标主机上的代理主目录路径。与 NRIA_AGENT_DIR 参数 相同。默认为 /var/db/newrelic-infra/

nrinfragent_tarball_bin_dir(可选,仅对 tarball 安装)

指定在目标主机上的代理二进制目录路径。与 NRIA_BIN_DIR 参数 相同。默认为 /usr/local/bin/

nrinfragent_tarball_log_file(可选,仅对 tarball 安装)

指定在目标主机上的代理日志文件路径。与 NRIA_LOG_FILE 参数 相同。默认为 /var/run/newrelic-infra/newrelic-infra.log

nrinfragent_tarball_mode(可选,仅对 tarball 安装)

指定代理的权限级别。与 NRIA_MODE 参数 相同。默认为 ROOT

nrinfragent_tarball_pid_file(可选,仅对 tarball 安装)

指定在目标主机上的代理 PID 文件路径。与 NRIA_PID_FILE 参数 相同。默认为 /var/run/newrelic-infra/newrelic-infra.pid

nrinfragent_tarball_plugin_dir(可选,仅对 tarball 安装)

指定在目标主机上的代理插件目录路径。与 NRIA_PLUGIN_DIR 参数 相同。默认为 /etc/newrelic-infra/integrations.d/

nrinfragent_tarball_user(可选,仅对 tarball 安装)

指定在目标主机上运行代理二进制文件的用户。与 NRIA_USER 参数 相同。默认为 root

nrinfragent_os_name(可选)

指定基础设施代理将安装的目标操作系统。默认为 ansible_os_family。有关支持的操作系统列表,请参见 meta/main.yml 文件。

nrinfragent_os_version(可选)

指定此机器所需的安装包的操作系统版本。默认为 ansible_lsb.major_release。主要用于 RedHat 系列操作系统。有关支持的操作系统列表,请参见 meta/main.yml 文件。

nrinfragent_os_codename(可选)

指定此机器所需的安装包的操作系统代号。默认为 ansible_lsb.codename。适用于 Debian 系列操作系统。有关支持的操作系统列表,请参见 meta/main.yml 文件。


nrinfragent_choco_version(可选,仅限 Windows)

指定在 Windows 上安装 newrelic-infra 的 Chocolatey 包版本。可用于固定版本或升级代理。

nrinfragent_yum_lock_timeout(可选)

用于为 Ansible yum 模块设置 lock_timeout 值。当未设置此值时,默认值为 30。仅适用于 ansible 版本 >= 2.8.0。

nrinfragent_logging(可选)

用于生成日志文件。有关当前配置选项,请参见 New Relic 文档。要创建多个日志块,请输入额外的 - name 列表。例如:

vars:
  nrinfragent_logging:
    - name: example-log
      file: /var/log/example.log # 指向单个日志文件的路径

    - name: docker-logs
      file: /var/lib/docker/containers/*/*.log # 指向多个文件夹和文件的路径

    - name: systemd-example
      systemd: cupsd

    # TCP 网络套接字
    - name: syslog-tcp-test
      syslog:
        uri: tcp://0.0.0.0:5140 # 使用 tcp://LISTEN_ADDRESS:PORT 格式
        parser: rfc5424 # 默认 syslog 解析器为 rfc3164

    # Unix TCP 域套接字
    - name: syslog-unix-tcp-test
      syslog:
        uri: unix_tcp:///var/unix-tcp-socket-test
        unix_permissions: 0666 # 默认是 0644。根据自己的风险自行更改

    # Unix UDP 域套接字
    - name: syslog-unix-udp-test
      syslog:
        uri: unix_udp:///var/unix-udp-socket-test
        parser: rfc5424

    - name: tcp-simple-test
      tcp:
        uri: tcp://0.0.0.0:1234 # 使用 tcp://LISTEN_ADDRESS:PORT 格式
        format: none # 原始文本 - 这是 'tcp' 的默认值
        separator: \t # 用于分隔原始文本条目的字符串
      max_line_kb: 32

    - name: tcp-json-test
      tcp:
        uri: tcp://0.0.0.0:2345 # 使用 tcp://LISTEN_ADDRESS:PORT 格式
        format: json

删除 newrelic-infra-integrations 包及其捆绑集成

这仅适用于您已安装 newrelic-infra-integrations 包的情况。

如果要删除 newrelic-infra-integrations 包或其任何捆绑集成(如 nri-redis、nri-cassandra、nri-apache、nri-nginx、nri-mysql),请将 newrelic-infra-integrations 添加为 nrinfragent_integrations 的第一个项目,状态设置为 absent

nrinfragent_integrations:
  - name: newrelic-infra-integrations
    state: "absent"

测试

infrastructure-agent-ansible 角色使用 molecule 进行测试。提供了三种场景。

  1. 默认 场景测试如何通过操作系统包管理器进行代理的安装和配置及操作系统初始化服务的设置。
  2. 配置 场景仅使用 nria_configure 标签测试代理运行配置。请注意,为了运行此测试,必须首先运行 default 场景的 createconverge 方法,以便 configure 场景有已安装的代理进行测试。
  3. targz 场景测试使用 tarball 安装方法进行代理的安装和配置及操作系统初始化服务的设置。

defaulttargz 场景可以通过执行 molecule test 完整运行。请注意,test 命令在测试并验证场景后会销毁容器。因此,运行 configure 场景的最佳方式是使用 molecule converge && molecule test -s configure && molecule destroy

发布到 Ansible Galaxy

要将新版本发布到 Ansible Galaxy,请按照以下步骤进行:

兼容性

平台

  • RHEL/CentOS
    • RHEL/CentOS 8
    • RHEL/CentOS 7
    • RHEL/CentOS 6
    • RHEL/CentOS 5
  • Ubuntu
    • 18 Bionic
    • 16 Xenial
    • 14 Trusty
    • 12 Precise
  • Debian
    • 10 Buster
    • 9 Stretch
    • 8 Jessie
    • 7 Wheezy
  • SUSE Linux Enterprise
    • 12
  • Windows
    • 所有版本
    • _免责声明_:Windows 支持取决于由第三方维护的 newrelic-infra Chocolatey 包,该包由 @ripclawffb 和 @xandrellas 维护。New Relic 不提供任何保证或支持。

支持

New Relic 托管并管理一个在线论坛,客户可以在论坛中与 New Relic 员工以及其他客户互动以获得帮助和分享最佳实践。与所有官方的 New Relic 开源项目一样,New Relic Explorers Hub 中也有相关的社区主题。您可以在这里找到该项目的主题/线程:

贡献

我们鼓励您为改善 [项目名称] 作出贡献!请记住,当您提交拉取请求时,您需要通过 CLA 助手进行点击签署 CLA。您只需为每个项目签署一次 CLA。

如果您有任何问题,或者需要执行我们的公司 CLA(如果您的贡献是代表公司提交),请通过电子邮件与我们联系:opensource@newrelic.com

关于漏洞的说明

正如我们在 安全政策 中所述,New Relic 致力于保护客户及其数据的隐私和安全。我们认为,安全研究者提供协调披露并与安全社区互动是实现我们安全目标的重要手段。

如果您认为在此项目或 New Relic 的任何产品或网站中发现了安全漏洞,我们欢迎并非常感谢您通过 HackerOne 向 New Relic 报告。

如果您想为此项目贡献,请查看 这些指南

感谢所有贡献者!没有您们的贡献,这个项目无法达到今天的规模。

许可证

infrastructure-agent-ansible 根据 Apache 2.0 许可证进行授权。

关于项目

Role to install New Relic Infrastructure agent

安装
ansible-galaxy install newrelic.newrelic-infra
许可证
apache-2.0
下载
1.4M
拥有者