首页 > 技术文章 > 我搞zabbix的那两天(2)

zishengY 2018-01-05 14:35 原文

摘要:前一篇(我搞zabbix的那两天(1))我介绍了Zabbix的安装部署以及遇到的问题,这一篇将介绍zabbix 使用及短信等告警实现!!!

我搞zabbix的那两天(1)

我搞zabbix的那两天(2)

  1. Zabbix主界面及汉化方法介绍

1.1 初始化主界面

浏览器中输入地址:http://ip地址/zabbix,输入用户名和密码登陆后,进入监控软件主界面,登陆后的界面如下图:

可以看到初始化的界面是英文的,为方便使用,需添加中文支持

1.2 添加中文支持

修改文件 /var/www/html/zabbix/include/locales.inc.php

'zh_CN' => array('name' => _('Chinese (zh_CN)'), 'display' => false),

修改成

'zh_CN' => array('name' => _('Chinese (zh_CN)'), 'display' => true),

修改文件 /var/www/html/zabbix/include/defines.inc.php

define('ZBX_FONT_NAME', 'DejaVuSans');

修改成

define('ZBX_FONT_NAME', 'STKAITI');

重启zbbix服务端,重启apache

登陆页面设置相应用户的默认语言Administrator---->Users(此处要保证显示的是用户,否则显示的都是用户组)

点击用户名进入用户信息编辑,默认语言选择简体中文,然后点击update更新

 

1.3 中文主界面

二、Zabbix 基本配置

2.1 菜单介绍

如上图,zabbix主要有5个一级菜单栏:监控中、资产记录、报表、配置、管理每个主菜单栏下面又多个二级菜单.

  • 监控中:主要是对监控对象的一些相关展示,比如说对web应用的展示。

  • 资产记录:资产管理,类似于公司里的资产管理,比如一个硬件设备,这里可能会标识设备的名称,操作系统,mac地址,资产编号等

  • 报表:这里主要展示了zabbix服务的状态,比如主机数,报警数。还有就是展示了一些设备的可用性报表等相关信息。

  • 配置:这里主要用来对服务器的配置,比如创建主机,创创建模版,创建报警,创建流量图片等相关应用基本的配置主要通过这里来实现。

  • 管理:这里也是用了对服务器进行配置,可配置相比,这里的配置主要实现对zabbix本身的一些相关的配置工作,比如登录zabbix的用户的创建等工作主要通过这里来配置。

2.2 添加监控主机

2.2.1 配置主机

菜单路径:配置->主机,

点击右上角创建主机按钮,在界面中填写必要信息,主机名称和IP地址,组群那里选择预定义的“Linux servers”

2.2.2 增加监控项和图表

添加后主机要添加监控项,菜单路径:配置->主机,点击主机名称,再点击“监控项”

后点击“创建监控项”,我们这里用尝试监控CPU idle比例,这个配置的关键是键值,具体键值的定义请参考zabbix联机文档,数据更新时间(数据采集频率),历史数据保留时长等信息使用缺省值。

 

 

创建完监控项,就可以针对监控项建图表了,比较简单:
然后可以点击“预览”查看效果:

2.2.3 定义触发器

定义触发器:(我们定义一个系统CPU IDLE80%就发出警告信息的触发器

 

2.2.4 定义动作

然后定义动作,规定触发器触发时执行的动作,即报警时要通过什么方式发送给运维人员
菜单路径:配置 >动作,创建动作,我们这里创建一个名为“sendSMS”,即通过短信发送报警信息给运维人员(后面2.3 短信告警配置介绍)

 

然后再切换到“操作”,定义默认发送信息

2.3 短信告警配置

短信报警的设置和邮件报警的思路是类似的,主要划分为一下几个过程:

1.编写短信报警的脚本;

2.zabbix的操作界面添加短信报警媒介;

3.对指定的用户添加短信报警方式;

4.设置动作何时进行短信报警;

  • 设置短信脚本

接下来我们来服务器配置短信脚本sendSMS.sh,进入到/usr/local/zabbix/alertscripts(为什么是进入到这个目录,因为我们zabbix_server.conf配置的AlertScriptsPath目录是这个),创建sendSMS.sh

注意:
1、打包jar方式
/lutong/zabbix-3.2.0/sms/SMS.jar包含的是短信告警的代码,该工程包括了第三方的jar包,我是用Eclipse将引用了第三方jar包的Java项目打包成可执行jar,这里不做多说明,请查看附件
2、执行jar包的环境
这里是直接用到java命令执行jar包的方式,所以确保你的电脑是是安装了java环境,像上图服务器java环境是安装在/usr/lcoal/java/jdk1.7.0_76/bin/java
3、两个变量说明
MOBILE_NUMBER=$1 # 手机号码

MESSAGE_UTF8=$2 # 短信内容

 

 

这两个变量即我们在页面报警媒介中填写的手机号码,最后是通过执行jar包中的方法时传进去了,来看下我们的jar中的打包前main方法
上面我们提到了配置动作用到了短信告警,接下来我们来介绍短信告警实现。
需要先设置“报警媒介类型“,
在菜单”管理”→“报警媒介类型”里面创建报警媒介类型,我这里名称填写“福富短信”,类型选择“脚本”,脚本名称填写“sendSMS.sh”(sendSMS.sh就是我们在服务器创建的短信告警脚本)

 

  • 对指定的用户添加短信报警方式

在菜单”管理”→“用户”里面创建用户Admin,名称填写“福富短信”,类型选择“脚本”

切换到“报警媒介”,依次选择报警类型(即我们上面填写创建的福富短信)、收件人手机号码,以及何时触发短信发送

测试,我们通过使其中一台服务器CPU偏高,立即就收到了短信

 

 

附件:

方案:利用Eclipse自带的Export功能打包可执行的jar

步骤1:准备主清单文件 “MANIFEST.MF”

由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF,内容如下:

Manifest-Version: 1.0

Class-Path: SMS.justTest

第一行是MAINIFEST的版本,第二行Class-Path就指定了外来jar包的位置,第三行指定我们要执行的MAIN java文件。

这里要注意几点:

1Class-Path: Main-Class: 后边都有一个空格,必须加上,否则会打包失败,错误提示为:Invalid header field

2、假设我们的项目打包后为SMS.jar,那么按照上面的定义,SMS.jar和其用到的jaropen189-sign-1.0.jar应该在在同一个目录下。

否则将会出现“Exception in thread "main" java.lang.NoClassDefFoundError”的错误;
3、Main-Class后面是类的全地址,比如你的主文件是KillCheatFans.java,文件里打包为package com.main; 那么这里就写com.main.KillCheatFans,
不要加.java后缀,主文件地址写错将会出现“找不到或无法加载主类”的错误;
4、写完Main-Class后一定要回车(即最后一行是空白行),让光标到下一行,这样你生成的jar包才能找到你的主class去运行,
否则将会出现“jar中没有主清单属性”的错误。
步骤2:右击Java工程选择Export—>选择JAR file—>Next

步骤3:选择要打包的文件,不需要的文件不必打包,减小打包后的jar文件大小,并进行选项配置如下

这里有几个选项:

* Export generated class files and resources 表示只导出生成的.class文件和其他资源文件

* Export all output folders for checked projects 表示导出选中项目的所有文件夹

* Export java source file and resouces 表示导出的jar包中将包含你的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了

* Export refactorings for checked projects 把一些重构的信息文件也包含进去

步骤4:选择我们在第一步中自定义的配置文件路径,这一步很重要,不能采用默认选项

这里解释一下配置项:

* Generate the manifest file:是系统帮我们自动生成MANIFEST.MF文件,如果你的项目没有引用其他18class-path,那可以选择这一项。

* Use existing mainfest from workspace:这是可以选择我们自定义的.MF文件,格式如上所写,引用了第三方包时选用。

* Seal content:要封装整个jar或者指定的包packet

* Main class:这里可以选择你的程序入口,将来打包出来的jar就是你这个入口类的执行结果。

最后Finish,即生成了我们要的jar文件。

在命令行下运行命令java -jar 你的jar文件名称,比如上面的短信脚本执行如下:

 

如果在jar中有一些System.out.prinln语句(如上执行结果),运行后不想在控制台输出而是保存在文件中方便以后查看,可以用一下命令:

/usr/local/java/jdk1.7.0_76/bin/java -jar /lutong/zabbix-3.2.0/sms/SMS.jar "$MOBILE_NUMBER" "$MESSAGE_UTF8" > log.txt (这时命令行窗口不会有任何输出)
输出信息会被打印到log.txt中,当然log.txt自动生成,并位于和SMS .jar一个目录中。



学习本就是一个不断模仿、练习、再到最后面自己原创的过程。

虽然可能从来不能写出超越网上通类型同主题博文,但为什么还是要写?
于自己而言,博文主要是自己总结。假设自己有观众,毕竟讲是最好的学(见下图)。

于读者而言,笔者能在这个过程get到知识点,那就是双赢了。
当然由于笔者能力有限,或许文中存在描述不正确,欢迎指正、补充!
感谢您的阅读。如果本文对您有用,那么请点赞鼓励。

  

 



推荐阅读