Newrelic Error: RPM cmd=‘get_redirect_host’ error

异常日志:

2016-09-04 16:21:25.238 (7137) error: RPM cmd='get_redirect_host' for '2d...e3' failed: Failed to connect to collector.newrelic.com port 443: Connection timed out
2016-09-04 16:21:25.238 (7137) warning: error connecting app='Infrastructure' rv=7. Retry after delay.
2016-09-04 16:22:25.249 (7137) error: RPM cmd='get_redirect_host' for '2d...e3' failed: Failed to connect to collector.newrelic.com port 443: Connection timed out
2016-09-04 16:22:25.249 (7137) warning: error connecting app='Infrastructure' rv=7. Retry after delay.
2016-09-04 16:23:25.249 (7137) error: RPM cmd='get_redirect_host' for '2d...e3' failed: Failed to connect to collector.newrelic.com port 443: Connection timed out
2016-09-04 16:23:25.249 (7137) warning: error connecting app='Infrastructure' rv=7. Retry after delay.

分析:

newrelic agent无法连接到newrelic远程服务器。无法将本地搜集的信息传输到远程Server端。


原因:

有些机器配置了代理服务器,但是newrelic连接服务器需要再配置一次。

vi /etc/newrelic/nrsysmond.cfg
# Default: none (use a direct connection)
#
proxy=10.73.18.11:8888

#
# Setting: ssl
# Type   : boolean

参考:

https://discuss.newrelic.com/t/error-rpm-cmd-get-redirect-host-error/28902

https://docs.newrelic.com/docs/servers/new-relic-servers-linux/installation-configuration/configuring-servers-linux#cfgvar-proxy


<think>好的,我现在需要解决用户在使用pysnmp时遇到的getCmd未定义错误。首先,用户提到在代码中使用了getCmd,但出现未定义的错误。我需要先分析可能的原因。 首先,用户可能没有正确导入getCmd函数。pysnmp的高版本中,API可能有所变化,比如函数的位置或命名方式发生了变化。比如在旧版本中,getCmd可能直接位于pysnmp.hlapi模块中,而新版本可能需要从其他子模块导入,或者函数名被更改了。这时候需要检查用户的导入语句是否正确。 其次,用户可能安装了错误版本的pysnmp库。如果用户使用的是较旧的版本,可能某些函数还未被引入,或者在新版本中被弃用或移除了。这时候需要确认用户的pysnmp版本,并建议升级到最新版本,或者根据版本调整导入方式。 另外,用户可能在使用getCmd时传入了错误的参数,导致函数无法正确调用,但根据错误提示“未定义”,更可能的是导入问题而不是参数错误。不过也不能完全排除拼写错误的可能性,比如函数名的大小写错误,比如GetcmdGETCMD之类的,但根据常见命名习惯,getCmd应该是正确的。 接下来,我需要参考用户提供的引用内容。虽然引用[1]中的内容是关于Python的os模块的,似乎和pysnmp无关,但可能用户是想说明如何查看模块的方法,比如使用dir()函数或help()函数来检查模块是否有getCmd方法。这可能是一个线索,建议用户检查pysnmp模块中是否存在getCmd函数。 总结可能的原因: 1. 导入语句不正确,未正确导入getCmd。 2. pysnmp版本过旧或过新,导致API变化。 3. 函数名拼写错误或大小写问题。 解决方法步骤可能包括: - 确认导入语句是否正确,例如是否从pysnmp.hlapi导入getCmd。 - 检查pysnmp的版本,并查看对应版本的文档,确认getCmd是否存在。 - 使用dir()函数检查导入的模块是否有getCmd。 - 更新或降级pysnmp版本以适配代码。 - 提供正确的代码示例,确保导入和使用正确。 此外,用户可能在代码中没有正确安装pysnmp,或者安装了其他同名库导致冲突,但这种情况比较少见。但需要确认用户是否确实安装了pysnmp,并且没有安装错误的包(比如pysnmp和pysnmp4可能存在差异)。 可能还需要考虑异步和同步API的区别,比如是否应该使用不同的函数名,但getCmd通常属于同步API的一部分。 最后,根据这些分析,给出逐步的解决方案,并生成相关问题供用户进一步学习。</think>### 问题分析:`pysnmp` 中 `getCmd` 未定义错误的原因及解决方法 `getCmd` 是 `pysnmp` 中用于执行 SNMP GET 请求的核心函数。若出现未定义错误,通常由以下原因导致: #### 原因 1:未正确导入函数 在 `pysnmp` 的高版本(如 `v4.3+`)中,`getCmd` 需要从 `pysnmp.hlapi` 模块显式导入: ```python # 正确导入方式 from pysnmp.hlapi import getCmd, SnmpEngine, CommunityData, UdpTransportTarget, ContextData, ObjectType, ObjectIdentity ``` 如果直接调用 `pysnmp.getCmd()` 或未导入相关模块,会触发 `NameError: name 'getCmd' is not defined` 错误[^1]。 #### 原因 2:版本兼容性问题 - **旧版本**(如 `pysnmp<=4.2`)的 API 设计不同,`getCmd` 可能通过其他模块(如 `pysnmp.entity.rfc3413.cmdgen`)导入。 - **新版本**(如 `pysnmp>=4.3`)重构了 API,推荐使用 `hlapi`(High-Level API)简化操作。 #### 解决方法 1. **检查导入语句** 确保代码中使用了高版本的标准导入方式: ```python from pysnmp.hlapi import getCmd # 核心函数 ``` 2. **验证 `pysnmp` 版本** 通过以下命令查看版本: ```bash pip show pysnmp ``` - 如果版本低于 `4.3`,升级到最新版本: ```bash pip install --upgrade pysnmp ``` - 如果需兼容旧代码,降级到 `4.2.x` 并使用旧版 API: ```python from pysnmp.entity.rfc3413.cmdgen import getCmd # 旧版本导入方式 ``` 3. **完整代码示例** ```python from pysnmp.hlapi import getCmd, SnmpEngine, CommunityData, UdpTransportTarget, ContextData, ObjectType, ObjectIdentity error_indication, error_status, error_index, var_binds = next( getCmd(SnmpEngine(), CommunityData('public'), # SNMP community string UdpTransportTarget(('demo.snmplabs.com', 161)), # 目标设备地址 ContextData(), ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0))) ) if error_indication: print(f"Error: {error_indication}") elif error_status: print(f"SNMP Error: {error_status}") else: for var_bind in var_binds: print(f"{var_bind[0]} = {var_bind[1]}") ``` ### 关键排查工具 - 使用 `dir(pysnmp.hlapi)` 查看模块内所有可用函数。 - 通过 `help(getCmd)` 查看函数文档,确认参数是否符合要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能体格

你的鼓将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值