newrelic.newrelic-infra
:warning: | New Relic 提供了一种新的 Ansible 解决方案,旨在简化您的 New Relic 可观察性工作。请考虑今后使用此解决方案。 |
---|
New Relic 基础设施代理的 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
(可选)
指定通过操作系统包管理器安装的主机集成。可用集成列表可以在 这里 找到。
每个包都应提供其 name
和 state
。集成包名称位于 单个集成文档 的 安装和激活 部分。其名称通常为服务名称前加 nri-
前缀(如 nri-apache
、nri-redis
等)。
默认情况下,其状态为 absent
,这不会安装包;您可以将其更改为 latest
或 present
。例如:
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 进行测试。提供了三种场景。
- 默认 场景测试如何通过操作系统包管理器进行代理的安装和配置及操作系统初始化服务的设置。
- 配置 场景仅使用
nria_configure
标签测试代理运行配置。请注意,为了运行此测试,必须首先运行default
场景的create
和converge
方法,以便configure
场景有已安装的代理进行测试。 - targz 场景测试使用 tarball 安装方法进行代理的安装和配置及操作系统初始化服务的设置。
default
和 targz
场景可以通过执行 molecule test
完整运行。请注意,test
命令在测试并验证场景后会销毁容器。因此,运行 configure
场景的最佳方式是使用 molecule converge && molecule test -s configure && molecule destroy
。
发布到 Ansible Galaxy
要将新版本发布到 Ansible Galaxy,请按照以下步骤进行:
- 更新 CHANGELOG.md 文件。
- 创建一个新的 GitHub 发布。
- 关注 GitHub Actions 中的版本号构建:https://github.com/newrelic/infrastructure-agent-ansible/actions
- 确保版本已导入到 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 中也有相关的社区主题。您可以在这里找到该项目的主题/线程:
- New Relic 文档:使用我们平台的全面指南
- New Relic 社区:解决故障排除问题的最佳场所
- New Relic 开发者:构建自定义可观察性应用的资源
- New Relic 大学:为不同级别的 New Relic 用户提供多种在线培训
- New Relic 技术支持 24/7/365 的票务支持。阅读有关我们的 技术支持服务 的更多信息。
贡献
我们鼓励您为改善 [项目名称] 作出贡献!请记住,当您提交拉取请求时,您需要通过 CLA 助手进行点击签署 CLA。您只需为每个项目签署一次 CLA。
如果您有任何问题,或者需要执行我们的公司 CLA(如果您的贡献是代表公司提交),请通过电子邮件与我们联系:opensource@newrelic.com。
关于漏洞的说明
正如我们在 安全政策 中所述,New Relic 致力于保护客户及其数据的隐私和安全。我们认为,安全研究者提供协调披露并与安全社区互动是实现我们安全目标的重要手段。
如果您认为在此项目或 New Relic 的任何产品或网站中发现了安全漏洞,我们欢迎并非常感谢您通过 HackerOne 向 New Relic 报告。
如果您想为此项目贡献,请查看 这些指南。
感谢所有贡献者!没有您们的贡献,这个项目无法达到今天的规模。
许可证
infrastructure-agent-ansible 根据 Apache 2.0 许可证进行授权。