整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Zabbix6.0安装后初步使用碰到的中文字符乱码和图标时间显示问题

景&环境:

操作系统:CentOS7

Zabbix版本:6.0.1

遇到的问题:

Question One:Graph图表部分中文字符显示乱码,主要表现为方括号,具体位置在图表下方。

详见下图:


针对这个问题,主要问题点就是字符显示,Zabbix中没有合适的中文字体,我们就给他一个合适的字体即可。

解决办法:

1.在自己的个人电脑中找到字体库,本人的是WIN10系统:找到的是微软雅黑

打开C:\Windows\Fonts

搜索微软雅黑



拷贝出来到另外的文件夹,是三个文件,分别是msyh.ttc、msyhbd.ttc、msyhl.ttc



上传至zabbix服务器指定位置。我使用的Xshell的自带Xftp,不管用什么工具,能够正确上传即可



这个比较关键,网上有些是错的,Zabbix相关字体所在的真正位置是在

/var/www/html/assets/fonts


将DejaVuSans.ttf 文件进行备份 使用mv DejaVuSans.ttf DejaVuSans.ttf.bk

在linux系统中或者说在其他系统中要进行配置变更时,最好将原始配置文件进行保存,常见的就是move然后更改文件后缀名为.bk或者.backup

然后把msyhbd.ttc 改为 DejaVuSans.ttf

使用命令mv msyhbd.ttc DejaVuSans.ttf

这个时候刷新页面应该就OK了,保险起见,可以进行systemctl restart httpd

效果就是这样,中文字体就出来了。


---------------------------------------------分割线-------------------------------------------

Question Two:


时间不一致问题,就是图表上的时间和实际时间不一致,引发这个问题有几点原因:

第一,zabbix服务器的时间

第二,mysql数据库的时间

第三,PHP设置时间

服务器时区有问题



第一 使用 ntpdate 0.asia.pool.ntp.org 校准时间 首先要确保你的时区是你所想要的


但是RTC时间未变,我们要把时间同步到硬件时钟,避免下次重启改变

使用命令hwclock --systohc


这下操作系统时间都OK了,但是我的Zabbix的图表时间依然未变,查询了mysql,时区正常。(select sysdate();

接下里就是比较重要的了,是PHP中设置的时间。

使用find命令查找linux中相关配置文件

find / -name defines.inc.php

显示两条,我的相关的路径是/var/www/html/include/defines.inc.php

使用VI编辑

vi /var/www/html/include/defines.inc.php

使用 /date.timezone 查找到时区 补上Asia/Shanghai

记得删除前面的;符号这是配置文件的注释符号


然后:wq!保存退出

然后保险起见,重启http和zabbix服务

systemctl restart httpd

systemctl restart zabbix-server

结果就一切OK

: 刚部署完zabbix后的正常状态,左下角标注的位置是中文乱码。

2:中文乱码问题

3:找到windows控制面板复制其中的字体文件,黑体为佳:simhei.ttf

4:服务器搜索zabbix的fonts目录


[root@hlying fonts]# find / -name fonts

/app/jdk1.8.0_291/jre/lib/fonts

/boot/grub2/fonts

/etc/fonts

/usr/share/fonts

/usr/share/httpd/noindex/css/fonts

/usr/share/zabbix/assets/fonts

/mnt/dvd/EFI/BOOT/fonts

/mnt/cdrom/EFI/BOOT/fonts

[root@hlying fonts]# cd /usr/share/zabbix/assets/fonts/

[root@hlying fonts]# ls

graphfont.tt


5:将本机自己选好的字体上传


[root@hlying fonts]# ls

graphfont.ttf simhei.ttf


6: 将原有的文件进行移动重命名备份,将上传的字体改为跟原有文件名一样,并重启服务

[root@hlying fonts]# mv graphfont.ttf graphfont.ttf.bak

[root@hlying fonts]# mv simhei.ttf graphfont.ttf

[root@hlying fonts]# systemctl restart zabbix-server.service

[root@hlying fonts]# ls

graphfont.ttf graphfont.ttf.bak


7: 刷新zabbix的web页面可以看到正常了

zabbix监控配置详程

zabbix邮件报警

KVM虚拟机的安装\扩容\迁移\克隆\配置

nginx

用 python2 抓取网页的时候,经常会遇到抓下来的内容显示出来是乱码。

发生这种情况的最大可能性就是编码问题: 运行环境的字符编码和网页的字符编码不一致。

比如,在 windows 的控制台(gbk)里抓取了一个 utf-8 编码的网站。或者,在 Mac / Linux 的终端(utf-8)里抓取了一个 gbk 编码的网站。因为多数网站采用 utf-8 编码,而不少人又是用 windows,所有这种情况相当常见。

如果你发现你抓下来的内容,看上去英文、数字、符号都是对的,但中间夹杂了一些乱码,那基本可以断定是此情况。

私信小编007即可获取小编精心准备的教程以及大量的PDF哦!

解决这个问题的办法就是,把结果先按网页的编码方式 decode 解码成 unicode,再输出。如果不确定网页的编码,可参照以下代码:

import urllib
req = urllib.urlopen("http://some.web.site")
info = req.info()
charset = info.getparam('charset')
content = req.read()
print content.decode(charset, 'ignore')
复制代码

'ignore' 参数的作用是忽略掉无法解码的字符。

不过这种方法不总是有效。还有种方式就是通过正则直接匹配网页代码中的编码设置:

<meta http-equiv=Content-Type content="text/html;charset=utf-8">
复制代码

除了编码问题造成乱码之外,还有种常被忽视的情况,就是 目标网页启用了 gzip 压缩 。压缩后的网页传输数据少了,打开速度更快。在浏览器中打开时,浏览器会根据网页的 header 信息自动做解压。但直接用代码抓取则不会。因此很可能就被搞糊涂了,为什么明明打开网页地址是对的,但程序抓取就不行。连我自己也曾经被这个问题坑过。

这种情况的表现是抓取的内容几乎全是乱码,甚至无法显示。

要判断网页是否启用了压缩并对其解压,可参考以下代码:

import urllib
import gzip
from StringIO import StringIO
req = urllib.urlopen("http://some.web.site")
info = req.info()
encoding = info.getheader('Content-Encoding')
content = req.read()
if encoding == 'gzip':
 buf = StringIO(content)
 gf = gzip.GzipFile(fileobj=buf)
 content = gf.read()
print content
复制代码

在我们教室的编程实例查天气系列(点击查看) 中,这两个问题困扰了相当多人。在此特别讲解一下。

最后,还有个“利器”要介绍一下。如果一开始就用它,你甚至不知道还有上述两个问题的存在。

这就是 requests 模块。

同样抓取网页,只需要:

import requests
print requests.get("http://some.web.site").text
复制代码

没有编码问题,没有压缩问题。

This is why I love Python.

至于如何安装 requests 模块,请参考之前的文章:

如何安装 Python 的第三方模块 -