cheng029 发表于 2012-9-28 18:03:34

让smokeping图片支持中文

今天使用smokeping配置几个节点的服务器,节点名称使用的是中文。图上的中文显示方块,就想把中文弄出来。
网上查了,全都是解决网页上的中文的,没有能解决图片上中文的。

一看smokeping的图就知道是rrdtool生成的,本人对rrdtool比较熟悉,工作中使用了N多年了,就是一个字体参数的设置而已。关键是找到在什么地方设。

smokeping是用perl写的,本人对perl是一窍不通啊,但是还是大概能看懂一点点。
顺着线索一步步找,好在本人对rrdtool的参数还算熟悉,看到rrdtool参数的地方,就知道在哪添加了。

废话少说,赶紧上正题。
先要知道自己系统中的中文字体有哪些,用fc-list命令看看。如果没有合适的中文字体,就先安装。
debian上可以先apt-cache search wqy(文泉译), centos可以yum search wqy试试。
安装完再fc-list看看,如果有类似下面一行
WenQuanYi Zen Hei,文泉驛正黑,文泉驿正黑:style=Regular
那么字体名称就是WenQuanYi Zen Hei。如果你没有装wqy,但是有宋体,楷体之类的,也行,只是名称不同而已。
打开/usr/share/smokeping/lib/Smokeping/Graph.pm
找到下面这一段代码




[*]for my $host (@hosts){

            my ($graphret,$xs,$ys) = RRDs::graph

("dummy",

'--start', $tasks,

'--end', $tasks,

"DEF:maxping=$cfg->{General}{datadir}${host}.rrd:median:AVERAGE",

'PRINT:maxping:MAX:%le');


在'--end', $tasks,之后插入一行


[*]'--font TITLE:20:"WenQuanYi Zen Hei Mono"',

就可以了。注意字体名称使用你自己系统上的中文字体名称。
修改完之后要重启一下smokeping


[*]/etc/init.d/smokeping restart

smokeping有图片缓存,立刻刷新会看到中文还没出来。过会再刷新一下就可以看到中文了。


zzss 发表于 2012-10-17 09:15:03

{:6_387:}{:6_387:}

zzss 发表于 2012-10-17 09:15:29

{:6_408:}{:6_408:}

所谓覅破解 发表于 2013-5-15 17:49:40

如果跟导师讲不清楚,那么就把他搞胡涂吧!

孤独海岸线 发表于 2013-5-15 21:14:04

走,MM,咱们化蝶去……

lb20309 发表于 2013-5-15 23:10:15

找不到恐龙,就用蜥蜴顶

liyeho 发表于 2013-5-16 02:45:39

天塌下来你顶着,我垫着!

Carreychen 发表于 2013-8-4 22:06:48

{:6_438:}{:6_438:}
页: [1]
查看完整版本: 让smokeping图片支持中文