如何使用 Matomo 跟踪 Icecast2 访问?

How to track Icecast2 visits with Matomo?

我心爱的网络电台有一个 icecast2 实例,它可以正常工作。我们还有一个 Matomo 实例来跟踪我们 WordPress 网站的访问情况,仅使用 Free/Libre 和开源软件。

主要问题是,由于 Matomo 通过 JavaScript 跟踪访问,默认情况下 Matomo 不会拦截对网络广播流的直接访问。

如何使用 Matomo 跟踪对 Icecast2 音频流的访问?

是的,这是可能的。这是我的方式。

首先,尝试使用 Matomo 内部导入脚本。请务必设置 --idsite= 和 Matomo 安装的正确路径:

su www-data -s /bin/bash
python2.7 /var/www/matomo/misc/log-analytics/import_logs.py --show-progress --url=https://matomo.example.com --idsite=1 --recorders=2 --enable-http-errors --log-format-name=icecast2 --strip-query-string /var/log/icecast2/access.log

注意:如果您看到此错误

[INFO] Error when connecting to Matomo: HTTP Error 400: Bad Request

在这种情况下,请务必激活所有需要的插件:

  • 管理 > 系统 > 插件 > 批量插件

因此,如果脚本有效,它应该开始打印如下内容:

0 lines parsed, 0 lines recorded, 0 records/sec (avg), 0 records/sec (current)
Parsing log /var/log/icecast2/access.log...
1013 lines parsed, 200 lines recorded, 99 records/sec (avg), 200 records/sec (current)

如果是这样,立即停止脚本以避免在安装最终解决方案之前导入重复条目。

要停止脚本,请使用 CTRL+C

现在我们需要在每次旋转日志时运行这个脚本,在旋转之前。

官方文档建议 crontab 但我不推荐此解决方案。相反,我建议改为配置 logrotate

配置文件/etc/logrotate.d/icecast2。来自:

/var/log/icecast2/*.log {
       ...
       weekly
       ...
}

收件人:

/var/log/icecast2/*.log {
        ...
        daily
        prerotate
                su www-data -s /bin/bash --command 'python2.7 ... /var/log/icecast2/access.log' > /var/log/logrotate-icecast2-matomo.log
        endscript
        ...
}

重要提示:在上面的示例中,将 ... 替换为正确的命令。

现在您也可以手动尝试了:

logrotate -vf /etc/logrotate.d/icecast2

从另一个终端你应该能够实时看到它的结果:

tail -f /var/log/logrotate-icecast2-matomo.log

如果它有效,则意味着一切都会自动完美地工作,每天导入所有访问,没有任何重复,也没有遗漏任何行。

这里有更多关于导入脚本本身的文档:

https://github.com/matomo-org/matomo-log-analytics

这里有更多关于 logrotate 的文档:

https://linux.die.net/man/8/logrotate