问题描述
最近在帮公司迁移python的系统时出现了rrdtool绘图中无法显示中文的问题,如下图所示:
查了很久的资料发现基本上说的都是cacti的中文乱码。但是在cacti里,绘出来的图中文是可以正常显示的。后来我们又手动编译安装了几次rrdtool包括后来换了几次版本。但是都不能解决中文的问题。这里就不详细说明。下面我们具体说一下我们的排查步骤。
问题排查步骤
locale
命令确认终端环境已支持中文
rrdtool命令行直接生成图片,查看是否有中文乱码
为了确认不是python程序的问题,我们直接使用终端rrdtool命令生成图图片,命令如下:
rrdtool graph test.png --imgformat=PNG --start=1591259400 --end=1591295400 --title='SH-05-G06-H5720-Core - 流量 - Eth-Trunk2 - (to guipinglu_H6810)' --base=1000 --height=120 --width=500 --alt-autoscale-max --lower-limit=0 COMMENT:"从 2020/06/04 16\:30\:00 到 2020/06/05 02\:30\:00\c" COMMENT:" \n" --vertical-label='bits per second' --slope-mode --font TITLE:10: --font AXIS:8: --font LEGEND:8: --font UNIT:8: DEF:a="/var/www/html/rra/940/33165.rrd":traffic_in:MAX DEF:b="/var/www/html/rra/940/33165.rrd":traffic_out:MAX DEF:c="/var/www/html/rra/940/33165.rrd":traffic_in:AVERAGE CDEF:cdefa=a,8,* CDEF:cdefe=b,8,* CDEF:cdefi=a,UN,INF,UNKN,IF AREA:cdefa#00CF00FF:"流入" GPRINT:cdefa:LAST:"当前\:%8.2lf %s" GPRINT:cdefa:AVERAGE:"平均\:%8.2lf %s" GPRINT:cdefa:MAX:"最大\:%8.2lf %s\n" LINE1:cdefe#002A97FF:"流出" GPRINT:cdefe:LAST:"当前\:%8.2lf %s" GPRINT:cdefe:AVERAGE:"平均\:%8.2lf %s" GPRINT:cdefe:MAX:"最大\:%8.2lf %s\n" AREA:cdefi#8F9286FF:""
但是发现在终端中就已经无法正常显示中文了。基本可以确定是系统环境的问题。
结论:没有中文字体原因导致
后来无意中想到,也许是没有中文字体造成的。后来经过安装了字体之后就可以显示中文了。Centos7 安装中文字体 图文教程。