网站流量日志埋点收集- -方案二- -中文乱码问题解决|学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习网站流量日志埋点收集- -方案二- -中文乱码问题解决

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第一阶段)网站流量日志埋点收集- -方案二- -中文乱码问题解决】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/693/detail/12183


网站流量日志埋点收集- -方案二- -中文乱码问题解决


内容简介

一、中文乱码问题

二、具体操作演示

本节内容解决 nginx 中让人难受的问题:如果你收集的数据包含中文,日志中显示不是中文,数据该如何正确保存?


一、中文乱码问题

在页面中,有属性这是点击,这是中文符号,但是通过 js 采集保存到后端发送存储时,日志不是以想象的中文形式存在,而是代码,Nginx 对中文做了移位编码变成16进制。

image.png

所以遇到现实中存在的尴尬问题:我们是在中文环境下进行开发,工作,如果涉及需要去采集中文数据该如何正确保存?如果不去处理问题,后续处理将会非常麻烦。

通过资料发现这个代码

\XE8\XBF\x98\XAF\xE7\x82\xB9\xE5\x87\XBB2 逻辑来自 nginx 一段源码,nginx 源码是用 c 语言写的,因此要改变需要打开 nginx 源码,把里面进行移位编码逻辑注释或删除,就可以保存中文数据。


二、具体操作演示

要想涉及源码的修改,我们应该想到之前编译的 nginx 就不能再使用。

打开参考文档中的 nginx 中文乱码,造成中文乱码就是源码中有这样的文件 ngx_http_log_module.c 。

打开 ngx_http_log_module.c,在第八百多行里会进行移位编码,变成16进制。

接下来学习如何进行相关操作:

首先把之前 nginx 源码和安装包删除,cd 到根目录下,使用 rm -rf/ 把 usr/local/nginx/下的 nginx 删除,这是之前定义的安装包,再把 usr/local/src/nginx-1.8.1,这是之前的源码包。

1.删除之后需要重新解压 nginx 源码并且进行源码修改,然后进行

编译。cd/export/software/ ,里面有 nginx 源码包。

image.png

使用 tar-zxvf nginx-1.8.1.tar.gz-C/usr/local/src/ 命令解压,

解压之后 cd/usr/local/src/nginx-1.8.1/

image.png

进去之后修改里面的源码,源码路径在 src/http/modules/ngx_http_log_module.c ,所以 cd 至src/http/modules/ ,然后 rm -rf ngx_http_log_module.c ,删除之前的。

image.png

删除好之后需要把附件的替换进去,就是把文件

ngx_http_log_module.c  复制进去,这就对我们 nginx C 语言的源码进行了修改。

改好之后 cd/usr/local/src/nginx-1.8.1/

因为修改了源码,所以需要重新编译。编译之前需要做两件事,一是确保之前的模块有没有存在,在路径 usr/local/nginx/modules 中查看,不存在需要重新解压。如图表示不存在,所以重新解压。

所以首先使用 mkdir-p/usr/local/nginx/modules  创建文件夹,然后 cd/export/software/,再把四个命令解压到页面

tar-zxvflua-nginx-module-0.10.0.tar.gz-C /usr/local/nginx/modules/

tar-zxvfset-misc-nginx-module-0.29.tar.gz-C /usr/local/nginx/modules/

tar-zxvfngx_develkit-0.2.19.tar.gz-C /usr/local/nginx/modules/

tar-zxvfecho-nginx-module-0.58.tar.gz-C /usr/local/nginx/modules/

image.png

解压之后,验证模块已经存在

image.png

最后进行重新编译安装,cd/usr/local/src/nginx-1.8.1/,然后先用 configue 进行编译:打开新的 notepad++,输入

./configure --prefix=/usr/local/nginx \

--with-ld-opt-="-Wl,-rpath/usr/local/luajit/lib" \

--add-module=/usr/local/nginx/modules/ngx_devel_kit-0.2.19 \

--add-module=/usr/local/nginx/modules/lua-nginx-module-0.10.0\

--add-module=/usr/local/nginx/modules/set-misc-nginx-module-0.29\

--add-module=/usr/local/nginx/modules/echo-nginx-module-0.58

保证格式不出现问题,再进行重新复制进行执行,这一步会对环境进行相关检测,检测误 make && make install 写入就可以开始编译安装

image.png

编译完成后就需要查看这种情况下的 nginx 到底对中文能不能支持,会不会出现16进制编码乱码的问题。完成后 cd/usr/local/nginx/ 路径下

image.png

这时第一台机器不动,把第二台机器的相关配置放入。首先 cd 至 html 中,把 ma.js 放置,然后来到cd../conf/ 路径下,通过  rm -rf nginx.conf把自带的 nginx.conf  删除,删除之后把参考文档中的 nginx.conf 放入。

完成之后cd..返回上级目录进行nginx启动,

通过 sbin/nginx -c conf/nginx.conf 启动,启动之后同样使用 tail-f logs/user_defined.log 打开日志查看是否出现中文乱码问题。

所以打开浏览器,进行点击事件,发现未出现乱码问题。

以上就是解决问题的操作,这样就极大方便了针对中文数据的收集,尤其我们大多人的工作环境,以及日常的开发环境是中文情况下。

修改完源码之后,就会非常的方便。

image.png

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
存储 监控 Serverless
阿里泛日志设计与实践问题之Grafana Loki在日志查询方案中存在哪些设计限制,如何解决
阿里泛日志设计与实践问题之Grafana Loki在日志查询方案中存在哪些设计限制,如何解决
|
14天前
|
Kubernetes API Docker
跟着iLogtail学习容器运行时与K8s下日志采集方案
iLogtail 作为开源可观测数据采集器,对 Kubernetes 环境下日志采集有着非常好的支持,本文跟随 iLogtail 的脚步,了解容器运行时与 K8s 下日志数据采集原理。
|
2月前
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
5月前
|
存储 数据采集 Kubernetes
一文详解K8s环境下Job类日志采集方案
本文介绍了K8s中Job和Cronjob控制器用于非常驻容器编排的场景,以及Job容器的特点:增删频率高、生命周期短和突发并发大。文章重点讨论了Job日志采集的关键考虑点,包括容器发现速度、开始采集延时和弹性支持,并对比了5种采集方案:DaemonSet采集、Sidecar采集、ECI采集、同容器采集和独立存储采集。对于短生命周期Job,建议使用Sidecar或ECI采集,通过调整参数确保数据完整性。对于突发大量Job,需要关注服务端资源限制和采集容器的资源调整。文章总结了不同场景下的推荐采集方案,并指出iLogtail和SLS未来可能的优化方向。
|
2月前
|
Java 编译器 数据库
异步日志方案——spdlog
异步日志方案——spdlog
|
2月前
|
存储 Prometheus Kubernetes
在K8S中,如何收集K8S日志?有哪些方案?
在K8S中,如何收集K8S日志?有哪些方案?
|
2月前
|
存储 Kubernetes Java
阿里泛日志设计与实践问题之在写多查少的降本场景下,通过SLS Scan方案降低成本,如何实现
阿里泛日志设计与实践问题之在写多查少的降本场景下,通过SLS Scan方案降低成本,如何实现
|
3月前
|
Java API Apache
通用快照方案问题之Feign对日志的记录如何解决
通用快照方案问题之Feign对日志的记录如何解决
22 0
|
4月前
|
消息中间件 存储 监控
微服务日志监控的挑战及应对方案
【6月更文挑战第26天】微服务化带来模块独立与快速扩展,但也使得日志监控复杂。日志作用包括业务记录、异常追踪和性能定位。
|
3月前
|
存储 运维 监控
在Spring Boot中集成分布式日志收集方案
在Spring Boot中集成分布式日志收集方案