emarketa / advanced-logger-magento2
Magento 2 模块。将日志发送到 Elasticsearch 或 Datadog。
Requires
- php: >=7.4.0
- magento/framework: ^100.1|^101.0|^102.0|^103.0
This package is auto-updated.
Last update: 2024-09-11 21:23:59 UTC
README
版本 0.4.0 (Beta) 一个将您的 Magento 2 日志发送到 Elasticsearch 服务器或 Datadog 的模块。
这个模块源于将多个运行 Magento 2 网站的节点日志集中的需求。它目前有3种解决方案可以将日志发送到外部服务进行消费,并且将捕获 Monolog 日志记录器(随 Magento 2 一起提供)处理的几乎所有内容。
安装
使用以下命令安装或升级,通过 Composer:
composer require emarketa/advanced-logger-magento2
.
需要 Magento 2 和 PHP 7.0 或更高版本。
Elasticsearch 日志记录器
配置在 Magento 2 管理员中通过 商店 > 配置 > EMARKETA > 高级日志记录器 > Elasticsearch。
配置选项
-
启用 Elasticsearch 日志记录器:在这里,您可以启用将日志记录到在 主机 配置中指定的 Elasticsearch 服务器/。
-
开发者模式启用:由于开发者模式会创建大量日志记录,这可能不是您希望始终启用的功能(如果有的话),因此默认情况下已禁用,以防您从生产副本刷新本地开发数据库时忘记禁用此功能。但是,如果您需要覆盖它,此选项可供使用。
-
最低级别:默认设置为 警告,以防止 Magento 2 调试日志导致 Elasticsearch 服务器出现日志记录条目洪水的情况。请谨慎降低级别。
-
索引标签后缀:当创建一个新的索引以进行日志记录时,高级日志记录器将尝试创建一个名为
magento_log_[SUFFIX]
的索引。如果留空,则索引名称将默认为default
,创建索引名称magento_log_default
。您有机会在这里为不同的网站或甚至不同的 Magento 2 店铺视图使用不同的索引名称。
连接
- 主机:在这里,您可以指定传递给 Elasticsearch PHP 模块(https://github.com/elastic/elasticsearch-php)的主机。逗号分隔的列表(这里避免空格)将设置多个主机。您的条目应符合以下格式:
host:port,host:port.
用户名和密码也会包含在主机的 HTTP 身份验证中。
示例
对于 HTTP 身份验证,请使用以下格式:
http://user:pass@1.2.3.4:9200
对于 SSL,请使用以下格式:
https://1.2.3.4:9200
如果您需要指定证书文件,请通过以下命令添加
bin/magento config:set advanced_logger/elasticsearch/cafile /full/path/to/ca.pem
.这将被传递到
elastic/elasticsearch-php
模块,但请注意,在本模块的上下文中尚未完全测试到 Elasticsearch 的安全连接。
Datadog 日志记录器
配置在 Magento 2 管理员中通过 商店 > 配置 > EMARKETA > 高级日志记录器 > Datadog。
您有两种方法可以将日志发送到 Datadog
通过 Datadog Agent(首选)。
- 启用:这同样是用来启用将日志写入一个JSON格式的文件,以便Datadog Agent可以消费。请参阅以下链接了解安装和设置代理的说明:https://docs.datadoghq.com/getting_started/agent/?tab=datadogussite
小贴士:您需要配置路径,指向
/path/to/your/magento/var/log/datadog.log.json
在您的Datadog PHP配置文件中,您会有类似以下的内容
init_config: instances: ## Log section logs: - type: file path: "/path/to/your/magento/var/log/datadog.log.json" service: php source: php sourcecategory: sourcecode您也可以在此文件中添加自己的标签。
警告:如果您同时启用HTTP API和代理方法,并且有一个与您的API密钥相同账户的正在运行的Datadog代理,您将在这个账户中看到每条日志都被重复记录。
-
开发者模式启用:由于开发者模式会创建大量日志记录,这可能不是您希望始终启用的功能(如果有的话),因此默认情况下已禁用,以防您从生产副本刷新本地开发数据库时忘记禁用此功能。但是,如果您需要覆盖它,此选项可供使用。
-
最低级别:默认设置为警告,以防止因为Magento 2的调试日志导致大量日志记录出现在您的Datadog账户中,从而增加存储成本。请谨慎降低日志级别。
通过HTTP API
-
通过Cron发送:如果您无法在您的服务器上设置Datadog代理,但又不希望在发送日志时阻塞网站,您现在可以使用此功能作为Magento cron的一部分,每分钟发送一次日志。请注意,这意味着事件与日志发送到Datadog之间最多有一个分钟的延迟。Cron将在每次成功发送后清除文件,以保持请求大小最小。
-
单独发送日志:由于PHP是一种阻塞语言,并且因为PHP Curl在收到响应之前会挂起,您可能会因为不需要设置Datadog代理而获得便利性,但可能会牺牲网站性能。您可以通过将最低级别提高到ERROR来进一步缓解这个问题。如果调试日志被激活并发送到Datadog,即使有120毫秒的超时,您也可能会在低于WARNING级别的日志上遇到显著的挂起。
小贴士:实际上,这个解决方案在您想要对生产集群的Web节点问题进行临时洞察时非常有用,或者您可以在预发布环境中启用它来帮助审计发布。
如果您永久启用了HTTP,请注意,您应该将最低日志级别设置为警告或更高,并且所有发送记录失败的尝试都会静默失败。
警告:如果您同时启用http和代理方法,并且有一个与您的账户相同的正在运行的Datadog代理,您将在这个账户中看到每条日志都被重复记录。
-
开发者模式启用:建议您不要在开发者模式下启用此功能,因为您将为此存储付费,并且由于如此多的日志活动,您会减慢速度,因为PHP在等待每个curl调用。但是,如果您真的必须在开发者模式下启用HTTP,那么这里有一个选项可以做到这一点。它默认是禁用的,以防您从生产环境的副本刷新本地开发数据库时忘记禁用此功能。
-
最低级别:将级别设置在警告以下可能会创建大量记录,这可能会显著增加您的成本;特别是如果正在创建调试日志的话。
-
账户区域:指定您的账户区域。如果您不确定,请登录仪表板查看您是否在
https://app.datadoghq.eu/
或https://app.datadoghq.com/
。 -
API密钥:您需要正确获取这个密钥,因为目前没有其他方法可以知道它是否失败(由于“一次性且不考虑后果”的政策),除非等待几秒钟来查看日志是否出现。
对于欧盟账户,您的API密钥在此处可用:https://app.datadoghq.eu/account/settings#api
对于美国账户,您的API密钥在此处可用:https://app.datadoghq.com/account/settings#api
许可
本软件遵循GNU通用公共许可证第3版发布。请记得授权使用。