如何通过settings.py配置NewRelic,用环境变量替代硬编码密钥
解决NewRelic配置文件使用环境变量的问题
正确配置步骤
NewRelic的newrelic.ini本身支持直接引用系统环境变量,无需通过Django的settings.py中转,具体操作如下:
1. 修改newrelic.ini配置
在配置文件中用${环境变量名}的格式直接引用环境变量,示例:
[newrelic] license_key = ${NEW_RELIC_LICENSE_KEY} app_name = ${NEW_RELIC_APP_NAME}
注意:如果环境变量未设置,NewRelic启动会失败,务必确保服务启动前已正确配置这两个变量。
2. 设置环境变量
根据运行环境设置对应变量:
- Linux/macOS终端(本地开发):
export NEW_RELIC_LICENSE_KEY="你的密钥内容" export NEW_RELIC_APP_NAME="你的应用名称" python manage.py runserver - Windows终端(本地开发):
set NEW_RELIC_LICENSE_KEY=你的密钥内容 set NEW_RELIC_APP_NAME=你的应用名称 python manage.py runserver - 生产环境(Docker/云平台):
在对应平台的环境变量配置面板中添加NEW_RELIC_LICENSE_KEY和NEW_RELIC_APP_NAME即可。
3. 验证配置有效性
启动服务后,可通过以下命令检查配置是否生效:
newrelic-admin validate-config newrelic.ini
该命令会校验配置文件格式,以及环境变量是否成功加载。
之前方法无效的原因
- 移除/设空
license_key和app_name:NewRelic启动必须读取有效值,空值或缺失会导致初始化失败。 - 直接写
NEW_RELIC_LICENSE_KEY:ini文件会将其当作普通字符串,不会识别为环境变量。 - 通过Django settings传递:NewRelic的初始化(
manage.py中调用newrelic.agent.initialize())早于Django加载settings的时机,因此无法读取到settings里的配置。
内容的提问来源于stack exchange,提问作者nt95
相关产品推荐
相关产品推荐

