阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Zabbix的编译安装并发送通知邮件

200次阅读
没有评论

共计 8275 个字符,预计需要花费 21 分钟才能阅读完成。

1. 写在前面

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

2. 系统环境

Zabbix 的编译安装并发送通知邮件

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

3. 搭建 web 服务

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

  • 添加 nginx 用户

Zabbix 的编译安装并发送通知邮件

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

Zabbix 的编译安装并发送通知邮件

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

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

Zabbix 的编译安装并发送通知邮件

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

  • 更改 nginx 文件夹属主为 nginx
    chown -R nginx.nginx /usr/local/nginx-1.10.3
  • 验证 web service

Zabbix 的编译安装并发送通知邮件

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

Zabbix 的编译安装并发送通知邮件

  • 至此 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,操作如下:

Zabbix 的编译安装并发送通知邮件

  • 设置 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 -p<password>

    然后在使用 root 用户登录。

5. 搭建 php-fpm 环境

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

Zabbix 的编译安装并发送通知邮件

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

Zabbix 的编译安装并发送通知邮件

  • configure 过程中如果碰到的有错误提示,请根据提示信息予以解决,查看是否上述指定的包并未安装所致。
  • 安装 php-fpm
    makemake install
  • 设置 php 的软链接
    ln -s /usr/local/php-5.5.38/ /usr/local/php
  • 将 php 的执行程序放入 PATH 变量中

Zabbix 的编译安装并发送通知邮件

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

Zabbix 的编译安装并发送通知邮件

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

Zabbix 的编译安装并发送通知邮件

  • 启动 php-fpm

Zabbix 的编译安装并发送通知邮件

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

Zabbix 的编译安装并发送通知邮件

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

Zabbix 的编译安装并发送通知邮件

    • 可以直接将原 nginx.conf 文件中与 php-fpm 相关的部分的注释直接去掉,并修改成如上所示内容。
    • 测试 nginx 是否可正常使用 php-fpm
      • 要进行此测试,还需要修改 nginx.conf 中的根location,在其首页中添加index.php,内容如下:

Zabbix 的编译安装并发送通知邮件

      • nginxhtml文件夹中使用如下指令,建立 index.php 文件:
        echo "<?php phpinfo(); ?>" > index.php
      • 重启 nginx 程序和 php-fpm 服务

Zabbix 的编译安装并发送通知邮件

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

      Zabbix 的编译安装并发送通知邮件

      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 的编译安装并发送通知邮件

  • 因为 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 的编译安装并发送通知邮件

Zabbix 的编译安装并发送通知邮件

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

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

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

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

Zabbix 的编译安装并发送通知邮件

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

Zabbix 的编译安装并发送通知邮件

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

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

Zabbix 的编译安装并发送通知邮件

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

Zabbix 的编译安装并发送通知邮件

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

Zabbix 的编译安装并发送通知邮件

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

Zabbix 的编译安装并发送通知邮件

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

Zabbix 的编译安装并发送通知邮件

  • 启动 zabbix server 和 agent 程序

Zabbix 的编译安装并发送通知邮件

8. 安装 zabbix web 程序

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

Zabbix 的编译安装并发送通知邮件

上述修改都在 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 的编译安装并发送通知邮件

 

  • 打开 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 的环境如下:

    Zabbix 的编译安装并发送通知邮件

    Zabbix 的编译安装并发送通知邮件

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

Zabbix 的编译安装并发送通知邮件

zabbix web php 环境检测通过图 1

Zabbix 的编译安装并发送通知邮件

zabbix web php 环境检测通过图 2

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

Zabbix 的编译安装并发送通知邮件

zabbix web DB 配置

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

Zabbix 的编译安装并发送通知邮件

zabbix server 详细信息

  • zabbix web 安装信息汇总

Zabbix 的编译安装并发送通知邮件

zabbix web 安装信息汇总

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

Zabbix 的编译安装并发送通知邮件

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

Zabbix 的编译安装并发送通知邮件

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 用户。

Zabbix 的编译安装并发送通知邮件

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

Zabbix 的编译安装并发送通知邮件

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

Zabbix 的编译安装并发送通知邮件

10.zabbix server 上配置监控内容

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

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

    Zabbix 的编译安装并发送通知邮件zabbix web 添加主机 1

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

Zabbix 的编译安装并发送通知邮件

给主机应用监控模板 1

Zabbix 的编译安装并发送通知邮件

选择相应的监控模板

Zabbix 的编译安装并发送通知邮件

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

Zabbix 的编译安装并发送通知邮件

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 的编译安装并发送通知邮件

zabbix 自定义 media type

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

    Zabbix 的编译安装并发送通知邮件

  • 定义收件人邮件地址
    在 zabbix 中每个用户可以关联多个 Media type,在这里我给Admin 这一用户关联上前面已经定义好的名为 user mail 的 Media type,并填上其邮件地址,即 zabbix 发送邮件通知时的收件人邮件地址。在 zabbix web 上依次选择 AdministrationUsersAdminMedia 标签,然后点击Add,给这一用户定义一个 media,此处选择user mail,如下所示:

Zabbix 的编译安装并发送通知邮件

给用户关联相应的 Media-1

Zabbix 的编译安装并发送通知邮件

给用户关联相应的 Media-2

Zabbix 的编译安装并发送通知邮件

给用户关联相应的 Media-3

  • 设置发送通知的 action
    zabbix 中只有设置 了 action,它才知道应该如何发送通知,如在什么条件下发送,通知通过哪个 media type 发送,发送给哪些人,发送的频率是怎么样的,发送的通知主题和正文是怎样的,当故障恢复以后如何发送通知等。这些必须在 action 中定义好。以下为配置示例,当被监控端不是在工程态 (维护状态) 中,发生了 Problem 事件,即将相关信息发送给 zabbix administraotrs 组内的所有用户且通过上面自定义的 user mail 这一 media 发送。
    大致过程如下:依次选择ConfigurationActionsCreate action,然后按照下图所示过程进行操作:

Zabbix 的编译安装并发送通知邮件

定义 action 名称及触发条件

Zabbix 的编译安装并发送通知邮件

定义故障时 action 的具体行为 -1

Zabbix 的编译安装并发送通知邮件

定义故障时 action 的具体行为 -2

Zabbix 的编译安装并发送通知邮件

定义故障恢复后 action 的具体行为

Zabbix 的编译安装并发送通知邮件

查看刚定义的 action
从上述过程也可以看到其实这些 action 定义的是由 Trigger 来触发的,因为前面我是直接给主机应用了 zabbix 内置的 http service 的模板,它里面已经关联的有相应的 trigger 了,所以当 http service 发生变化,会自动触发相应的 trigger,而后又触发 zabbix 执行相应的 action。这是 zabbix 发送通知的一个大致的过程。

  • 定义 zabbix 发送通知邮件使用的账户
    zabbix server 本机非合法的 smtp 服务器,由它直接发送邮件给公网邮箱,会有很多问题,不一定成功。所以这里依然选择使用公网的 163 smtp 服务器来发送 zabbix 的通知邮件。因为不需要用到本机的 smtp 服务,所以可以选择将 smtp 服务停止,并确保本机有 mail 程序可用,它由 mailx 软件包提供。在上面定义通知邮件脚本时就已经用到了 mail 指令。
    本机服务账户配置方法,在 /etc/mail.rc 中增加如下内容:

    Zabbix 的编译安装并发送通知邮件

  • 制造告警测试是否正常收到通知邮件
    将 server3 的 web service 停掉,将近 3 分钟查看邮件客户端,收到了 zabbix 发送的通知邮件。这个从故障发生到 zabbix 发送通知消息的时长,取决于监控的 item 配置的检测时长和 trigger 判断条件,默认的 http service 的检测时长为 1 分钟,其判断条件为最大连续检测到 3 次失败即认为 http service down,触发相应的 trigger,并与相应的 action 联动,从而发送通知邮件。zabbix 发送的通知邮件内容大致如下:

Zabbix 的编译安装并发送通知邮件

zabbix 通知邮件

12. 小结

以上即为 zabbix 实现监控 Linux 服务器并发送通知邮件的实现过程小记。只是 zabbix 的基础入门,还有很多内容需要在不断的使用中熟悉,也可以参考官网手册,会有很多收获。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-12-03发表,共计8275字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中