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

本文涉及的产品
日志服务 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月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
505 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
4月前
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
2月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
275 0
|
2月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
|
4月前
|
Java Windows Spring
Spring Boot CMD 运行日志输出中文乱码
Spring Boot CMD 运行日志输出中文乱码
116 0
|
6月前
|
应用服务中间件
Tomcat日志中文乱码
Tomcat日志中文乱码
|
6月前
|
存储 Java 关系型数据库
基于JSP的九宫格日志网站
基于JSP的九宫格日志网站
|
6月前
|
JSON 中间件 数据格式
Gin框架学习笔记(六)——gin中的日志使用
Gin框架学习笔记(六)——gin中的日志使用
268 0
|
7月前
|
安全 Linux 调度
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
42 1
|
7月前
|
存储 弹性计算 监控
日志服务SLS最佳实践:通过SLS数据加工从VPC flowlog中过滤出跨region CEN流量
本文就通过一个客户的实际案例开介绍如何使用在无法直接开启CEN flowlog的情况下,使用SLS的数据加工能力,从VPC flowlog的数据中过滤出客户需要的流量日志出来。
153 0
日志服务SLS最佳实践:通过SLS数据加工从VPC flowlog中过滤出跨region CEN流量