10.zabbix学习笔记:记一次zabbix故障引发的排查过程

zabbix学习笔记:记一次zabbix故障引发的排查过程

背景

在今天下午实验的时候部署zabbix3.2.1版本,安装完成后使用的时候突然发现系统选择里的语言无法更换为中文,它提示我中文无法切换。如下图所示:
10.zabbix学习笔记:记一次zabbix故障引发的排查过程_第1张图片

解决的方法由下文展开?

解决步骤

因为之前安装配置过很多次,从来没有遇到过这个问题。突然就说中文复发支持。我的解决步骤和思路如下:

1.首先它给出了提示“you are not able to choose some of the languages, because locates for them are not installed on the web server”。按照以往的惯例,首先我将上述内容进行了百度,得到的方案有以下两个:

(1)第一种认为是/var/www/html/zabbix/include/locales.inc.php的文件中没有打开支持中文:

'en_GB' => ['name' => _('English (en_GB)'),     'display' => true],
                'en_US' => ['name' => _('English (en_US)'),     'display' => false],
                'bg_BG' => ['name' => _('Bulgarian (bg_BG)'),   'display' => false],
                'zh_CN' => ['name' => _('Chinese (zh_CN)'),     'display' => true],
                'zh_TW' => ['name' => _('Chinese (zh_TW)'),     'display' => false],
                'cs_CZ' => ['name' => _('Czech (cs_CZ)'),       'display' => false],
                'nl_NL' => ['name' => _('Dutch (nl_NL)'),       'display' => false],

可以看到zh_CN是true的状态,当时我的配置中也是打开的状态,所以应该不是这个问题导致的,pass!

(2)在zabbix的官方网站中的官方文档中进行查看,果然找到了需要的内容:

10.zabbix学习笔记:记一次zabbix故障引发的排查过程_第2张图片

看这个内容感觉应该是字符集的问题,这又引发了思路:

1.我应该安装完整的中文支持(yum groupinstall即可);

[root@e004935f81df include]# yum groupinstall "chinese-support" -y

安装完成后使用上述图片中的命令查看系统上安装的字符集,结果发现还是没有中文字符集:

[root@e004935f81df include]# locale -a
C
POSIX
en_AG
en_AG.utf8
en_AU
en_AU.iso88591
en_AU.utf8
en_BW
en_BW.iso88591
en_BW.utf8
en_CA
en_CA.iso88591
en_CA.utf8
en_DK
en_DK.iso88591
en_DK.utf8
en_GB
en_GB.iso88591
en_GB.iso885915
en_GB.utf8
en_HK
en_HK.iso88591
en_HK.utf8
en_IE
en_IE.iso88591
en_IE.iso885915@euro
en_IE.utf8
en_IE@euro
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ
en_NZ.iso88591
en_NZ.utf8
en_PH
en_PH.iso88591
en_PH.utf8
en_SG
en_SG.iso88591
en_SG.utf8
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
en_ZA
en_ZA.iso88591
en_ZA.utf8
en_ZW
en_ZW.iso88591
en_ZW.utf8
no_NO.iso88591
no_NO.utf8
vi_VN.tcvn

于是认为可能是需要重新启动系统让中文生效,重新启动服务器后查看,还是没有中文字符集。

2.此时其实已经陷入一个自我循环当中,总是觉得其实该做的事情都已经处理过了。问了下相关群友,可能是php的配置问题,但是个人觉得如果是php的问题,则在zabbix初始化检测中都无法通过,所以排除了这个可能,还有群友建议是不是mysql的编码格式问题,查看后发现mysql的编码格式是utf8。

3.最终还是坚持官方的看法, 应该是字符集的缺失,那么应该绕开其他因素,直接解决字符集缺失的问题,所以在搜索了如何安装中文字符集之后给出了如下的解决方案:

(1)在其他可以通过locale -a列出中文字符集的机器上找到对应的安装包,在目录/usr/share/i18n/charmaps中有很多的字符集:

[root@b0fc43d2e0ad charmaps]# ls
ANSI_X3.110-1983.gz    DIN_66003.gz        GB_1988-80.gz        IBM275.gz     IBM869.gz         ISO-8859-6.gz               JIS_C6229-1984-HAND.gz  NF_Z_62-010.gz
ANSI_X3.4-1968.gz      DS_2089.gz          GEORGIAN-ACADEMY.gz  IBM277.gz     IBM870.gz         ISO-8859-7.gz               JIS_C6229-1984-KANA.gz  NF_Z_62-010_1973.gz
ARMSCII-8.gz           EBCDIC-AT-DE-A.gz   GEORGIAN-PS.gz       IBM278.gz     IBM871.gz         ISO-8859-8.gz               JIS_X0201.gz            NS_4551-1.gz
ASMO_449.gz            EBCDIC-AT-DE.gz     GOST_19768-74.gz     IBM280.gz     IBM874.gz         ISO-8859-9.gz               JOHAB.gz                NS_4551-2.gz
BIG5-HKSCS.gz          EBCDIC-CA-FR.gz     GREEK-CCITT.gz       IBM281.gz     IBM875.gz         ISO-8859-9E.gz              JUS_I.B1.002.gz         PT.gz
BIG5.gz                EBCDIC-DK-NO-A.gz   GREEK7-OLD.gz        IBM284.gz     IBM880.gz         ISO-IR-197.gz               JUS_I.B1.003-MAC.gz     PT154.gz
BRF.gz                 EBCDIC-DK-NO.gz     GREEK7.gz            IBM285.gz     IBM891.gz         ISO-IR-209.gz               JUS_I.B1.003-SERB.gz    PT2.gz
BS_4730.gz             EBCDIC-ES-A.gz      HP-GREEK8.gz         IBM290.gz     IBM903.gz         ISO-IR-90.gz                KOI-8.gz                RK1048.gz
BS_VIEWDATA.gz         EBCDIC-ES-S.gz      HP-ROMAN8.gz         IBM297.gz     IBM904.gz         ISO_10367-BOX.gz            KOI8-R.gz               SAMI-WS2.gz
CP10007.gz             EBCDIC-ES.gz        HP-ROMAN9.gz         IBM420.gz     IBM905.gz         ISO_10646.gz                KOI8-RU.gz              SAMI.gz
CP1125.gz              EBCDIC-FI-SE-A.gz   HP-THAI8.gz          IBM423.gz     IBM918.gz         ISO_11548-1.gz              KOI8-T.gz               SEN_850200_B.gz
CP1250.gz              EBCDIC-FI-SE.gz     HP-TURKISH8.gz       IBM424.gz     IBM922.gz         ISO_2033-1983.gz            KOI8-U.gz               SEN_850200_C.gz
CP1251.gz              EBCDIC-FR.gz        IBM037.gz            IBM437.gz     IEC_P27-1.gz      ISO_5427-EXT.gz             KSC5636.gz              SHIFT_JIS.gz
CP1252.gz              EBCDIC-IS-FRISS.gz  IBM038.gz            IBM500.gz     INIS-8.gz         ISO_5427.gz                 LATIN-GREEK-1.gz        SHIFT_JISX0213.gz
CP1253.gz              EBCDIC-IT.gz        IBM1004.gz           IBM850.gz     INIS-CYRILLIC.gz  ISO_5428.gz                 LATIN-GREEK.gz          T.101-G2.gz
CP1254.gz              EBCDIC-PT.gz        IBM1026.gz           IBM851.gz     INIS.gz           ISO_646.BASIC.gz            MAC-CENTRALEUROPE.gz    T.61-7BIT.gz
CP1255.gz              EBCDIC-UK.gz        IBM1047.gz           IBM852.gz     INVARIANT.gz      ISO_646.IRV.gz              MAC-CYRILLIC.gz         T.61-8BIT.gz
CP1256.gz              EBCDIC-US.gz        IBM1124.gz           IBM855.gz     ISIRI-3342.gz     ISO_6937-2-25.gz            MAC-IS.gz               TCVN5712-1.gz
CP1257.gz              ECMA-CYRILLIC.gz    IBM1129.gz           IBM856.gz     ISO-8859-1.gz     ISO_6937-2-ADD.gz           MAC-SAMI.gz             TIS-620.gz
CP1258.gz              ES.gz               IBM1132.gz           IBM857.gz     ISO-8859-10.gz    ISO_6937.gz                 MAC-UK.gz               TSCII.gz
CP737.gz               ES2.gz              IBM1133.gz           IBM860.gz     ISO-8859-11.gz    ISO_8859-1,GL.gz            MACINTOSH.gz            UTF-8.gz
CP775.gz               EUC-JISX0213.gz     IBM1160.gz           IBM861.gz     ISO-8859-13.gz    ISO_8859-SUPP.gz            MIK.gz                  VIDEOTEX-SUPPL.gz
CP949.gz               EUC-JP-MS.gz        IBM1161.gz           IBM862.gz     ISO-8859-14.gz    IT.gz                       MSZ_7795.3.gz           VISCII.gz
CSA_Z243.4-1985-1.gz   EUC-JP.gz           IBM1162.gz           IBM863.gz     ISO-8859-15.gz    JIS_C6220-1969-JP.gz        NATS-DANO-ADD.gz        WINDOWS-31J.gz
CSA_Z243.4-1985-2.gz   EUC-KR.gz           IBM1163.gz           IBM864.gz     ISO-8859-16.gz    JIS_C6220-1969-RO.gz        NATS-DANO.gz
CSA_Z243.4-1985-GR.gz  EUC-TW.gz           IBM1164.gz           IBM865.gz     ISO-8859-2.gz     JIS_C6229-1984-A.gz         NATS-SEFI-ADD.gz
CSN_369103.gz          GB18030.gz          IBM256.gz            IBM866.gz     ISO-8859-3.gz     JIS_C6229-1984-B-ADD.gz     NATS-SEFI.gz
CWI.gz                 GB2312.gz           IBM273.gz            IBM866NAV.gz  ISO-8859-4.gz     JIS_C6229-1984-B.gz         NC_NC00-10.gz
DEC-MCS.gz             GBK.gz              IBM274.gz            IBM868.gz     ISO-8859-5.gz     JIS_C6229-1984-HAND-ADD.gz  NEXTSTEP.gz

中文字符集对应的是GB2312.gz安装包:

[root@b0fc43d2e0ad charmaps]# ll GB2312.gz 
-rw-r--r-- 1 root root 44796 Mar 23  2016 GB2312.gz

将其拷贝到当前的机器上,然后安装该字符集,安装命令如下:

[root@e004935f81df include]# gunzip GB2312.gz
[root@e004935f81df include]# localedef -f GB2312 -i zh_CN /usr/lib/locale/zh_CN.GB2312

安装完成后查看系统的字符集:

[root@e004935f81df include]# locale -a
C
POSIX
en_AG
en_AG.utf8
en_AU
en_AU.iso88591
en_AU.utf8
en_BW
en_BW.iso88591
en_BW.utf8
en_CA
en_CA.iso88591
en_CA.utf8
en_DK
en_DK.iso88591
en_DK.utf8
en_GB
en_GB.iso88591
en_GB.iso885915
en_GB.utf8
en_HK
en_HK.iso88591
en_HK.utf8
en_IE
en_IE.iso88591
en_IE.iso885915@euro
en_IE.utf8
en_IE@euro
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ
en_NZ.iso88591
en_NZ.utf8
en_PH
en_PH.iso88591
en_PH.utf8
en_SG
en_SG.iso88591
en_SG.utf8
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
en_ZA
en_ZA.iso88591
en_ZA.utf8
en_ZW
en_ZW.iso88591
en_ZW.utf8
no_NO.iso88591
no_NO.utf8
vi_VN.tcvn
zh_CN.GB2312

可以看到最后一个就是我们的zh_CN,系统支持了中文字符集之后再次登录zabbix查看时候可以切换中文主题:
这里写图片描述

切换完之后主界面如下所示:
这里写图片描述

至此,问题终于解决。

总结

(1)为什么之前的zabbix安装没有遇到这个问题?
之前是在虚拟机或者真机上安装,所以相关组件安装齐全,但是此次是在docker中安装,本身的image可能较小,没有安装中文字符集。

(2)盘查问题的思路:

根据提示的错误信息在搜索引擎上进行查找,你遇到的问题可能别人也遇到过;

继续缩小专业圈,在qq群或者微信群询问相关人员,毕竟是专业人士,而且卧虎藏龙,一定有人可以给出很好的思路;

最关键的是本身要有清晰的思路和对待问题的平和态度,能够从各个角度去排查问题,坚持不懈一定可以找到答案;

不要固化思维,也许跳出常规思维,才会发现问题可能只是一个很细节的失误;

多进行总结,把顽固问题记录下来共享出去,可以帮到更多的人,而且这个过程也可以加深自己方法论的塑造。

以上与君共勉!

你可能感兴趣的:(故障)