专栏名称: 马哥Linux运维
马哥linux致力于linux运维培训,连续多年排名第一,订阅者可免费获得学习机会和相关Linux独家实战资料!
目录
相关文章推荐
51好读  ›  专栏  ›  马哥Linux运维

原创投稿 | Zabbix的编译安装并发送通知邮件

马哥Linux运维  · 公众号  · 运维  · 2017-05-01 09:53

正文

1.写在前面

本文主要介绍的是zabbix的编译安装过程,包含它的基础环境LNMP,虽然zabbix官方一般推荐的环境是LAMP。以及实现简单的监控任务,在发现问题时能够发送通知邮件。

2.系统环境

提前安装好如下两个包组:yum groupinstall  "Development Tools" "Server  Platform Development"。

3.搭建web服务

zabbix作为监控系统需要有图形化的页面呈现给运维人员,它使用web+php的方式来实现。这里首先搭建其需要的web服务。我使用的是nginx-1.10.3的源码包编译安装的方式。相应步骤如下:

  • 添加nginx用户

  • 编译安装nginx
    将前面提到的 nginx-1.10.3.tar.gz 包解压以后,cd到 nginx-1.10.3 目录中,然后使用如下参数进行 configure

  • 创建软链接至nginx
    默认情况下nginx编译安装的路径(prefix) 是在 /usr/local/nginx ,所以创建一个软链接,使用起来更方便:

    ln -s /usr/local/nginx-1.10.3/ /usr/local/nginx
  • 将源码安装的nginx执行程序放到PATH环境变量中

在Linux中,通过源码安装的各类软件包的执行程序都可以都通过这种方式放入PATH环境变量中方便使用,且相应的文件不需要赋予执行权限。

  • 更改nginx文件夹属主为nginx

    chown -R nginx.nginx /usr/local/nginx-1.10.3
  • 验证web service

  • 设置nginx开机自启
    这里我选择的是直接将nginx执行程序添加到 rc.local 脚本中:

  • 至此web service的搭建工作完成。下面继续mysql的搭建。

4. 搭建mysql服务

zabbix的server和proxy是需要连接数据库的,zabbix支持多种类型的数据库,本文只涉及到mysql。

  • 添加mysql用户

    useradd -s /sbin/nologin -M mysql
  • 解压mysql 二进制包到目标文件夹
    因为我使用的是名为 mysql-5.5.53-linux2.6-x86_64.tar.gz 的压缩包,此包实际是一个mysql的二进制包,相当于从相应平台安装编译好后打包出来的,直接解压以后可以使用,而无需再configure和make&&make install了。操作指令:

    tar xf mysql-5.5.53-linux2.6-x86_64.tar.gz -C /usr/local   
    #解压出来的文件会自动放置于/usr/local/mysql-5.5.53-linux2.6-x86_64中
  • 创建软链接
    为后续使用方便,如在脚本中引用路径时更方便,这里还是给它设置一个软链接:

    ln -s /usr/local/mysql-5.5.53-linux2.6-x86_64/ /usr/local/mysql
  • 更改mysql文件夹属主为mysql

    chown -R mysql.mysql /usr/local/mysql/
  • 初始化mysql数据库
    在解压后的mysql目录中有一个scripts目录其中有一个 mysql_install_db 的文件,执行它,并指定用户为 mysql ,数据目录使用其默认的路径 /usr/local/mysql/data ,操作如下:

  • 设置mysql开机自启
    mysql目录中有一个support-files目录,其中有一个 mysql.server 文件,将其复制到 /etc/init.d/ 下,并更名为 mysqld

    cp support-files/mysql.server /etc/init.d/mysqld 
    chkconfig --add mysqldchkconfig mysqld on
  • 提供mysql的配置文件
    同样是在 support-files 目录中有多种不同类型的mysql配置文件,本文我使用的是 my-small.cnf ,将其复制到 /etc 目录下,因为我没有设置非常规的basedir和datadir,所以这里可以不用对其进行修改:

    cp support-files/my-small.cnf /etc/my.cnf     #更名为my.ncf
  • 启动mysql服务

    service mysqld start   lsof -i :3306   #检查mysql是否启动成功
  • 设置mysql root账户密码

    mysqladmin -uroot -ppassword>

    然后在使用root用户登录。

5.搭建php-fpm环境

  • configure php
    在将前面提到的 php-5.5.38.tar.gz 包解压以后, cd php-5.5.38 目录中,执行以下 configure 指令:

  • configure 完成以后,会提示进行 make test ,这是一个非常耗时间的过程,最后的结果有可能有一些警告,但不一定会有很大的影响,可以忽略。我在操作过程中遇到如下提示,没有去深究它,后面编译安装正常完成,没有错误提示,使用也还未发现问题。

  • configure 过程中如果碰到的有错误提示,请根据提示信息予以解决,查看是否上述指定的包并未安装所致。

  • 安装php-fpm

    makemake install
  • 设置php的软链接

    ln -s /usr/
    
    
    
    
        
    local/php-5.5.38/ /usr/local/php
  • 将php的执行程序放入PATH变量中

  • 提供php的配置文件
    php 的源码包中提供的有php的配置文件,在解压后的目录中将其复制到我们在 configure 时指定的位置并更名为 php.ini ,如: --with-config-file-path=/usr/local/php-5.5.38/etc

  • 提供php-fpm的配置文件
    php-fpm 的配置文件在执行 make install 时已安装好了,只需要将其改名即可:

  • 启动php-fpm

  • 设置php-fpm开机自启
    在编译后的php源码包中其实就提供了php-fpm服务脚本: ./sapi/fpm/init.d.php-fpm ,我们只需要将其复制到 /etc/init.d/ 目录下,并更名即可。操作如下:

  • 将php-fpm与nginx结合
    php-fpm 可以正常启动以后,需要配置web service可以访问php-fpm服务,因为我这里使用的 nginx 提供web service,所以修改其配置 文件 /etc/usr/local/nginx/conf/nginx.conf 如下:

  • 可以直接将原 nginx.conf 文件中与 php-fpm 相关的部分的注释直接去掉,并修改成如上所示内容。

  • 测试nginx是否可正常使用php-fpm

    • 要进行此测试,还需要修改 nginx.conf 中的根 location ,在其首页中添加 index.php ,内容如下:

    • nginx html 文件夹中使用如下指令,建立 index.php 文件:

      echo " phpinfo(); ?>" > index.php
    • 重启nginx程序和php-fpm服务

    • 浏览器中输入这台server的ip后回车
      正常情况下,可以显示phpinfo的详细信息了,如下所示:


      php info页面

6.搭建zabbix server

  • 创建zabbix用户

    useradd -s /sbin/nologin -M zabbix
  • configure zabbix
    将前面提到的 zabbix-3.2.4.tar.gz 包解压以后, cd 到解压后的目录(zabbix-3.2.4)后执行如下指令:

  • 因为zabbix server也需要被监控,所以其也需要agent。
    configure时使用了 --with-net-snmp --with-libcurl --with-libxml2 所以需要先在系统中使用 yum 安装net-snmp-devel、libcurl-devel、libxml2-devel包,使用 yum 安装会自动解决依赖关系将net-snmp、libcurl、libxml2一并安装上。
    正常完成 configure 后,会显示如下汇总信息:

  • 安装zabbix
    根据 configure 完成后的提示执行 make install 即可,无需执行make然后再make install。

7.建立给zabbix使用的数据库

zabbix 要实现将其相关的配置信息,监控的信息都存储于后台的数据库中,自然需要建立相应的数据库,并配置相应的账号。 zabbix 支持多种类型的数据库,这里只以 mysql 为例,且是在zabbix server上的mysql上需要做的。

  • 创建给zabbix使用的数据库zabbix

  • 初始化zabbix数据库
    在zabbix的源码解压目录中有一个 database 目录,其中有针对不同类型数据库要使用的初始化sql语句,在这里需要选择mysql目录中的语句:

  • 修改zabbix server配置文件
    源码安装的zabbix,其配置文件默认位于其安装目录的 etc 目录中,即: /usr/local/zabbix/etc 下,server的为 zabbix_server.conf ,此时修改其连接数据库的相关信息即可,默认连接的数据库即为本机的数据库,数据库即为zabbix,密码为空,所以将密码设置为前面创建的密码即可。

    DBPassword=
  • 修改zabbix agent的配置文件
    文件位置和server的一样,需要修改的地方有如下几处:

  • 设置zabbix server和agent开机自启动
    zabbix原生也提供了用于实现开机自启动的服务脚本,它们在3.2.4版本中位于解压后的目录 /root/softwares/zabbix-3.2.4/misc/init.d ,这个目录下有针对不同类型系统的脚本,这里我选择的是fedora这一目录中的脚本,脚本位置及名称如下:

很明显分别有针对server和agent的脚本,把它们复制到 /etc/init.d/ 目录下:


打开这两个文件(zabbix_agentd和zabbix_server)查看其内容,根据实际情况进行修改,一般需要更改的只是如下内容:

将这两个服务安装添加到自启动中:

  • 启动zabbix server和agent程序

8.安装zabbix web程序

zabbix对于监控的结果可以通过web页面来进行展示和查看,它需要安装一个使用php程序来运行的web站点,根据zabbix的官方要求,还有如下php的参数需要提前修改:

上述修改都在 php.ini 文件中完成。在本文的环境中它位于 /usr/local/php/etc/php.ini 。另外需要补充一下,zabbix3.2.4它要求的php版本最低为5.4。 修改完 php.ini 文件后,重启php-fpm服务 service php-fpm restart

安装zabbix web程序操作步骤如下:

  • 创建web站点
    在web service的根目录下给zabbix单独创建一个根目录,用于存放zabbix的php程序文件,然后再将源码解压目录中名为 frontends/php 目录中的全部内容复制过来。


  • 打开zabbix web完成配置过程


    浏览器中输入 http://server_ip/zabbix 打开zabbix的web界面,初次打开会显示欢迎界面,此时web程序的安装还没有完成,并不需要登录web站点的用户名和密码,然后点击 Next step 可以看到它会进行一个php环境参数的检测,需要它们全部显示为 OK 在继续进行下一步,从此步也可以看到很多之前php configure时所enable和with的选项参数,它们都是运行zabbix web程序所要求的。

  • zabbix 3.2.4 web需求php的环境如下:


php环境检测通过的结果如下图所示:


zabbix web php环境检测通过图1


zabbix web php环境检测通过图2

  • 配置zabbix web连接的数据库
    数据库为本机名为zabbix的mysql数据库,账户名和密码输入此前创建zabbix数据库时配置授权的账户和密码。


zabbix web DB配置

  • 配置zabbix server信息
    这里在Name处可以填上本机的主机名,其它保持默认即可。


zabbix server详细信息

  • zabbix web安装信息汇总


zabbix web安装信息汇总

  • 生成zabbix web的配置文件并导入站点配置目录中
    zabbix web安装程序会自动生成一个名为 zabbix.conf.php 的配置文件,并尝试自动将其放入zabbix站点配置目录中,但由于权限问题,会创建失败,此时只需要通过浏览器下载,然后手动入到指定目录即可,web安装程序会有相关提示,如下图所示:


zabbix web conf install


文件导入完成后,点击 Finish ,会出现以下信息,即表示zabbix web安装成功。


zabbix web安装成功提示信息

  • 登录zabbix web界面
    在浏览器中输入 http://server_ip/zabbix 即可打开zabbix的登录界面,输入如下默认账户和密码即可登录:
    user name: Admin
    password: zabbix
    此用户为zabbix web系统中super user,拥有最高权限,用户名注意字母大小写。

初始情况下,只配置了让zabbix server监控它自己,下面继续配置一台Linux server,让zabbix server可以监控它,并可以发送监控通知邮件。

9.被监控端安装zabbix agent

安装过程还是使用源码编译安装的方式,先创建zabbix用户。

在被监控的Linunx server上,只需要安装zabbix agent,在configure时使用如下参数即可:

configure完成以后,注意观察汇总信息是否有错误提示,是否只启用了agent,有问题根据实际情况去排查并解决。如果没有错误,则根据提示信息执行 make install 完成安装过程。
被监控端设置软链接,添加zabbix执行程序路径至PATH变量,修改 zabbix_agentd.conf 文件以及zabbix_agentd服务开机自启的过程参考前文相关内容即可,此处不在赘述。
最后启动被监控端的zabbix_agentd服务。

10.zabbix server上配置监控内容

在zabbix server上配置刚安装了zabbix agent的主机,并设置要监控的内容。

  • 添加要监控的主机
    在zabbix web上添加要监控的主机,选择 Configuration ----> Hosts ---> Create host ,在如下界面中填写相应信息:

    zabbix web添加主机1


根据实际情况填写主机名,选择主机分组,主机ip,对于主机分组此处我选择 Linux servers 作为示例。
然后可以选择 Host 旁的 Templates ,zabbix内置了很多种不同的模板,它包含的有监控条目 item ,告警触发器 trigger ,图形展示 Graphs ,屏幕 Screens 等。以下为给主机应用模板的操作过程:


给主机应用监控模板1


选择相应的监控模板


确认主机是否应用了监控模板


示例中的 server3 上我启用的有web服务,所以这里选择了zabbix内置的 Template App HTTP Serivice 这一模板对http服务进行监控。 等待片刻, ZBX 会显示成绿色即表示zabbix server能和server3上的zabbix agent正常通信了,如下所示:


zabbix server已可监控到server3

11.配置zabbix server发送通知邮件

zabbix server默认支持多种发送通知的方式,其中就包含的有名为 Email 的方式,但经过多次尝试都未能实现让zabbix server发送通知邮件,所以这里使用zabbix调用外部脚本且借助公网smtp服务器的方式来发送通知邮件。详细过程如下:

  • 配置Media Type
    zabbix支持自定义Media Type,这里我创建一个名为user mail的Media Type,并指定它是需要使用 Scripts 的方式。在 Administration 下选择 Media Types ,然后选择 Create media type ,创建内容如下:


zabbix自定义media type

  • 建立通知邮件脚本
    默认情况下通知邮件脚本应该存放在 /usr/local/zabbix/share/zabbix/alertscripts ,直接在这个路径下建立相应的脚本即可,如果脚本不是存放在此处,需要修改 zabbix_server.conf 文件中此处 # AlertScriptsPath=${datadir}/zabbix/alertscripts 取消掉注释并写上脚本完整的存放路径。mail.sh的内容如下:







请到「今天看啥」查看全文