搭建zabbix,实现自动邮件报警

实验拓扑结构

一、环境准备

第一步、安装Zabbix Server端与数据库

1.安装Zabbix server
  • 安装依赖包:
[root@zabbix-server-72 ~]# yum install gcc libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath phpmbstring mariadb-server mariadb-devel  wget -y
  • 设置数据库,添加zabbix用户
[root@zabbix-server-72 ~]# vim /etc/my.cnf #添加以下语句
[mysqld]
skip_name_resolve = ON
innodb_file_per_table = ON

注意:  #执如果出现,登录mysql错误代码1045,添加skip-grant-tables 此句,完安全设定把它删掉

[root@zabbix-server-72 ~]# systemctl start mariadb.service
[root@zabbix-server-72 ~]# systemctl enable mariadb.service
[root@zabbix-server-72 ~]# mysql_secure_installation   #执行mysql的安全设定
[root@zabbix-server-72 ~]# mysql -uroot -p #登录数据库
Enter password: 
MariaDB [(none)]> CREATE DATABASE zabbix CHARSET 'utf8'; #创建数据库
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL ON zabbix.* TO 'zbxuser'@'192.168.%.%' IDENTIFIED BY '123456'; #远程用户地址授权
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL ON zabbix.* TO 'zbxuser'@'127.0.0.1' IDENTIFIED BY '123456';  #本机用户授权
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;     #刷新
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye

  • 下载jdk源码包,比较大
    下载页面:https://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.html

    下载页面

  • 解压缩编译安装jdk-10.0.2

[root@zabbix-server-72 src]# tar xvf  jdk-10.0.2_linux-x64_bin.tar.gz
创建软连接:
[root@zabbix-server-72 src]# ln -sv /usr/local/src/jdk-10.0.2 /usr/local/jdk
"/usr/local/jdk" -> "/usr/local/src/jdk-10.0.2"
  • 配置java环境变量
[root@zabbix-server-72 src]# vim /etc/profile   #在配置段末端,添加以下语句
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
[root@zabbix-server-72 src]# source /etc/profile    #语法检查 
[root@zabbix-server-72 src]# java -version     #出现以下版本信息,说明jdk已成功安装
java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
  • 下载zabbix3.0源码包
[root@zabbix-server-72 ~]# cd /usr/local/src
[root@zabbix-server-72 src]# wget https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.0.21/zabbix-3.0.21.tar.gz
  • 解压缩编译安装zabbix3.0
[root@zabbix-server-72 zabbix-3.0.21]# mkdir -pv /usr/local/zabbix #创建安装目录
[root@zabbix-server-72 src]# tar xvf  zabbix-3.0.21.tar.gz   #解压缩
[root@zabbix-server-72 src] cd zabbix-3.0.21
[root@zabbix-server-72 zabbix-3.0.21]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java   #预编译
[root@zabbix-server-72 src]# make&&make install 编译安装
  • 按顺序导入zabbix数据库模板
[root@zabbix-server-72 zabbix-3.0.21]# mysql -uzbxuser -p123456 -h192.168.1.72 zabbix < /usr/local/src/zabbix-3.0.21/database/mysql/schema.sql 
[root@zabbix-server-72 zabbix-3.0.21]# mysql -uzbxuser -p123456 -h192.168.1.72 zabbix < /usr/local/src/zabbix-3.0.21/database/mysql/images.sql
[root@zabbix-server-72 zabbix-3.0.21]# mysql -uzbxuser -p123456 -h192.168.1.72 zabbix < /usr/local/src/zabbix-3.0.21/database/mysql/data.sql

  • 拷贝启动脚本,编辑zabbix启动脚本
[root@zabbix-server-72 ~]# cp /usr/local/src/zabbix-3.0.21/misc/init.d/fedora/core/zabbix_server /etc/init.d/ #服务拷贝到init.d下
[root@zabbix-server-72 ~]# vim /etc/init.d/zabbix_server  #编辑启动脚本,并指定目录
............

# functions
start() {
        if [ $RUNNING -eq 1 ]
                then
                echo "$0 $ARG: $BINARY_NAME (pid $PID) already running"
        else
                action $"Starting $BINARY_NAME: " $FULLPATH -c /usr/local/zabbix/etc/zabbix_server.conf   #另外可以在此处用-c选项指定zabbix_server的配置文件路径,默认为/usr/local/zabbix/etc/zabbix_server.conf
                touch /var/lock/subsys/$BINARY_NAME
                touch /var/lock/subsys/$BINARY_NAME
    fi
}
.............
  • 配置zabbix_server的配置文件
[root@zabbix-server-72 ~]# vim /usr/local/zabbix/etc/zabbix_server.conf  #编辑
LogFile=/var/log/zabbix_server.log   #此文件没有需要创建
DBHost=192.168.1.72
DBName=zabbix
DBUser=zbxuser
DBPassword=123456
DBPort=3306
Timeout=30
LogSlowQueries=3000

启动zabbix-server

[root@zabbix-server-72 ~]# touch /var/log/zabbix_server.log    #创建日志文件
[root@zabbix-server-72 ~]# chown zabbix:zabbix /var/log/zabbix_server.log  #设定属主属组
[root@zabbix-server-72 ~]# /etc/init.d/zabbix_server start
Starting zabbix_server (via systemctl):                    [  确定  ]
  • 安装httpd
[root@zabbix-server-72 ~]# yum install httpd -y
[root@zabbix-server-72 ~]# mkdir /var/www/html/zabbix
[root@zabbix-server-72 ~]# cp -a /usr/local/src/zabbix-3.0.21/frontends/php/* /var/www/html/zabbix
  • 安装php依赖包
[root@zabbix-server-72 ~]# yum install php-gettext php-session php-ctype php-xmlreader php-xmlwriter php-xml php-net-socket php-gd php-mysql php-ldap -y
编辑配置文件
[root@zabbix-server-72 ~]# vim /etc/php.ini #修改配置文件
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Shanghai
  • 启动httpd服务
[root@zabbix-server-72 ~]# systemctl start httpd

浏览器浏览http://192.168.1.72/zabbix进行配置

检查php相关

数据库设置

信息页

上传配置文件

上传然后刷新登录

选择界面语言

  • 当选择中文时候要注意字体,为了避免乱码,从windows里面控制面板中字体选择一个字体上传到
    /var/www/html/zabbix/fonts/目录下
[root@zabbix-server-72 conf]# yum -y install lrzsz #安装拖拽工具
上传字体文件

在C:\Windows\Fonts中复制想要的字体,后缀为ttf,若本身问大写,请改成小写的文件后缀ttf,并上传至zabbix服务器的/var/www/html/zabbix/fonts/目录中
使用sed命令替换/var/www/html/zabbix/include/defines.inc.php文件中DejaVuSans.ttf字段(两处,也可直接进入文件搜索DejaVuSans字符进行替换,替换时仅写文件名不写后缀名)(也可以将DejaVuSans.ttf 进行重命名为DejaVuSans.ttf.bak,上传新的字体后,更名为DejaVuSans.ttf同样可以实现)

[root@zabbix-server-72 fonts]# ls  #查询上传的新字体
DejaVuSans.ttf  SIMKAI.TTF
[root@zabbix-server-72 fonts]# mv SIMKAI.TTF SIMKAI.ttf #修改后缀为小写.ttf
[root@zabbix-server-72 fonts]# ls
DejaVuSans.ttf  SIMKAI.ttf

[root@zabbix-server-72 fonts]# vim /var/www/html/zabbix/include/defines.inc.php #编辑PHP默认配置文件

 45        define('ZBX_GRAPH_FONT_NAME',           'SIMKAI'); // font file name #修改默认字体
 93      define('ZBX_FONT_NAME', 'SIMKAI');

  • 安装java gateway配置
    编辑配置zabbix_java的配置脚本:
[root@zabbix-server-72~ ]# vim /usr/local/zabbix/sbin/zabbix_java/settings.sh
LISTEN_IP="0.0.0.0" #监听地址
LISTEN_PORT=10052 #端口
PID_FILE="/tmp/zabbix_java.pid"
START_POLLERS=5  #启动多少个进程轮训java, 要和java 应用保持一定关系
TIMEOUT=30    #超时时间
  • 配置zabbix_server调用zabbix_java作为java gateway
[root@zabbix-server-72~]# vim /usr/local/zabbix/etc/zabbix_server.conf
JavaGateway=192.168.1.72 #配置java gateway的Ip地址
JavaGatewayPort=10052
StartJavaPollers=5  #启动多少个进程去轮训 java gateway, 要和java gateway的配置一致
  • 启动zabbix_java服务:
[root@zabbix-server-72 ~]#  /usr/local/zabbix/sbin/zabbix_java/startup.sh
  • 重启zabbix服务
[root@zabbix-server-72 ~]# /etc/init.d/zabbix_server restart
Reloading systemd:                                         [  确定  ]
Restarting zabbix_server (via systemctl):                  [  确定  ]

第二步安装tomcat服务器被监控端

安装tomcat服务

[root@tomecat-74 src]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.90/bin/apache-tomcat-7.0.90.tar.gz  #下载tomcat源码包
[root@tomecat-74 src]# tar vxf apache-tomcat-7.0.90.tar.gz   #解压缩
[root@tomecat-74 src]# ln -sv /usr/local/src/apache-tomcat-7.0.90 /usr/local/tomcat  #创建软连接
"/usr/local/tomcat" -> "/usr/local/src/apache-tomcat-7.0.90"
  • 配置tomcat 监控参数,在配置文件中添加
[root@tomecat-74 ~]# vim /usr/local/tomcat/bin/catalina.sh #在配置文件中添加以下字段
 CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote #启用远程监控JMX
-Dcom.sun.management.jmxremote.port=12345 #默认启动的JMX端口号,要和zabbix添加主机
时候的端口一致即可
-Dcom.sun.management.jmxremote.authenticate=false #不使用用户名密码
-Dcom.sun.management.jmxremote.ssl=false #不使用ssl认证
-Djava.rmi.server.hostname=192.168.1.74" #tomcat主机自己的IP地址,不要写zabbix服务器的地址
  • 安装jdk环境:
    把jdk包拷贝到/usr/local/src目录下
[root@tomecat-74 src]# tar xvf jdk-10.0.2_linux-x64_bin.tar.gz #j解压缩
[root@tomecat-74 src]# ln -sv /usr/local/src/jdk-10.0.2 /usr/local/jdk  #创建别名软连接
"/usr/local/jdk" -> "/usr/local/src/jdk-10.0.2"
[root@tomecat-74 src]# vim /etc/profile #编辑文件,在尾部添加以下字段

export JAVA_HOME=/usr/local/jdk
export TOMCAT_HOME=/apps/tomcat
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$TOMCAT_HOME/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

[root@tomecat-74 src]# source /etc/profile  #语法检查
[root@tomecat-74 src]# java -version  #显示版本信息,表示配置成功
java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)

启动tomcat服务:

[root@tomecat-74 src]# /usr/local/tomcat/bin/catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
tomcat启动成功
  • 编译安装zabbix 客户端:
[root@tomecat-74 ~]#  useradd zabbix -s /sbin/nologin #添加用户
[root@tomecat-74~]#  yum install -y gcc
[root@tomecat-74 src]# wget https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.0.21/zabbix-3.0.21.tar.gz
[root@tomecat-74 src]# tar xvf zabbix-3.0.21.tar.gz
[root@tomecat-74 src]# cd zabbix-3.0.21
[root@tomecat-74 zabbix-3.0.21]#  ./configure --enable-agent --prefix=/usr/local/zabbix
[root@tomecat-74 zabbix-3.0.21]#  make && make install
[root@tomecat-74 zabbix-3.0.21]# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ #拷贝启动脚本
[root@tomecat-74 zabbix-3.0.21]# cd
[root@tomecat-74 ~]# vim /etc/init.d/zabbix_agentd #编辑启动脚本

 # Zabbix-Directory
        BASEDIR=/usr/local/zabbix   #修改目录

更改zabbix agentd配置文件:

[root@tomecat-74 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf

LogFile=/tmp/zabbix_agentd.log
ListenPort=10050
Server=192.168.1.72    #监控服务器地址
ServerActive=192.168.1.72
StartAgents=5
Hostname=192.168.1.74   #被监控主机,本机地址
UnsafeUserParameters=1

  • 启动
[root@tomecat-74 ~]# /etc/init.d/zabbix_agentd start
Reloading systemd:                                         [  确定  ]
Starting zabbix_agentd (via systemctl):                    [  确定  ]

第三步安装nginx服务器被监控端

  • 安装nginx服务:
[root@nginx-73 ~]# yum install epel-release  #安装epel源
[root@nginx-73 ~]# yum -y install nginx          #安装nginx
[root@nginx-73 ~]# vim /usr/share/nginx/html/test.html   #创建测试页面

This is a test page

[root@nginx-73 ~]# systemctl start nginx #启动nginx [root@nginx-73 ~]# systemctl enable nginx #设置开机启动 Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
  • 安装zabbix_agent:
[root@nginx-73 ~]# useradd zabbix -s /sbin/nologin
[root@nginx-73 ~]#  yum install -y gcc
[root@nginx-73 src~]# wget https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.0.21/zabbix-3.0.21.tar.gz
[root@nginx-73  src]# tar xvf zabbix-3.0.21.tar.gz
[root@nginx-73  src]# cd zabbix-3.0.21
[root@nginx-73 zabbix-3.0.21]#  ./configure --enable-agent --prefix=/usr/local/zabbix
[root@nginx-73 zabbix-3.0.21]#  make && make install
[root@nginx-73 zabbix-3.0.21]# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ #拷贝启动脚本
[root@nginx-73 zabbix-3.0.21]# cd
[root@nginx-73 ~]# vim /etc/init.d/zabbix_agentd #编辑启动脚本

 # Zabbix-Directory
        BASEDIR=/usr/local/zabbix   #修改目录
  • 更改zabbix agentd配置文件:
[root@nginx-73 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf

LogFile=/tmp/zabbix_agentd.log
ListenPort=10050
Server=192.168.1.72    #监控服务器地址
StartAgents=5
ServerActive=192.168.1.72
Hostname=192.168.1.73   #被监控主机,本机地址
UnsafeUserParameters=1

  • 启动
[root@nginx-73 ~]# /etc/init.d/zabbix_agentd start
Reloading systemd:                                         [  确定  ]
Starting zabbix_agentd (via systemctl):                    [  确定  ]

二、监控服务设置

1、添加被监控主机

  • 登录zabbix server的web管理页面,添加相应的nginx和tomcat主机,添加完成后其配置状态应如下图所示:


    创建主机

    添加被监控主机,主机名要写ip地址

2、编辑创建脚本监控指定的服务进程和端口

  • 首先对应的被监控主机的/usr/local/zabbix/etc/zabbix_agentd.conf.d目录下编辑创建如下脚本:
[root@nginx-73 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/process_port_check.sh
#!/bin/bash

check_process() {
        NUM=`ps -ef | grep ${NAME} | grep -v grep | wc -l`
        if [ $NUM -eq 0 ]; then
                echo 60
        else
                echo 10
        fi
}

check_port() {
        ss -tnl | grep -v grep | grep ${PORT} &>/dev/null
        if [ $? -eq 0 ] ;then
                echo 20
        else
                echo 70
        fi
}

main() {
        case $1 in
        process)
                NAME=$2
                check_process;
                ;;
        port)
                PORT=$2
                check_port;
                ;;
        esac
}

main $1 $2

[root@nginx-73 ~]# chmod +x  /usr/local/zabbix/etc/zabbix_agentd.conf.d/process_port_check.sh  #设置可执行权限
  • 在此目录下创建zabbix agent的监控配置模板文件:
[root@nginx-73 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/process_port.conf

UserParameter=process_port[*],/usr/local/zabbix/etc/zabbix_agentd.conf.d/process_port_check.sh "$1" "$2"
  • 编辑zabbix_agent的配置文件:
[root@nginx-73 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
### Option: Include
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf #调用自定义模板
  • 重启zabbix_agent服务
[root@nginx-73 ~]# /etc/init.d/zabbix_agentd restart
Restarting zabbix_agentd (via systemctl):                  [  确定  ]
  • 因为zabbix_agent进程的运行用户是zabbix,而zabbix用户本身是没有执行相关系统管理命令的权限的,为了能够让zabbix用户能够运行我们编辑的监控脚本,需要修改其相关的执行权限:
[root@nginx-73 ~]# visudo
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
zabbix  ALL=(ALL)       NOPASSWD:ALL
  • 在zabbix server创建对应的监控模板:


    创建对应的监控模板
选择监控项

创建监控项
 这里设置的key值,就用于传递参数给刚才在zabbix_agent创建的process_port_check.sh脚本。port和80分别对应$1,$2。
nginx端口和进程的监控项
  • 创建相关监控项的对应图表
设置
  • 设置相应的触发器进行报警操作:
设置触发器阈值
完成设置触发器
  • 最后在对应的host主机上调用相应的监控模板即可:


    调用模板

    在最新数据里,查看相关相关进程和端口检测正常

3、设置web监测

zabbix本身支持web监测,能监控指定URL的状态,包括访问速度、响应时间等等。这里我们就来尝试监控nginx的test.html页面。
首先点击进入相应的web监测创建页面:


点击web监控
点击创建

选择应用集

添加步骤和url

监控最新数据查看,返回状态码

4、设置邮件报警

  • 这里我使用qq邮箱,发送和接收都是同一个账号,首先查看qq邮箱的smtp服务是否开启,开启后qq会给一个授权密码,注意不是qq的登录密码。


    查看qq邮箱的smtp服务是否开启
  • 在给相应的监控项设置邮件报警前,我们要在zabbix server上添加相应的邮件媒介:

添加QQ邮件媒介
  • 我使用QQ邮件服务器来测试。

  • 添加完邮件媒介后,还需要在对应的管理员账号中调用此邮件媒介:


    给对应账号调用此邮件媒介

    给管理员发送qq邮箱

添加完用户的邮件媒介后,还需要在配置的动作Actions中配置添加邮件报警的动作:


点击创建动作
邮件名称和内容
选择条件

选择操作,第一步发送邮件

生成动作

当nginx停止服务时候,自动发送告警邮件,并返回邮件状态
告警邮件接收

当nginx恢复服务时候,自动发送恢复邮件,并返回邮件状态
恢复邮件接收

参考链接:https://www.jianshu.com/p/21fb110d7b1e

你可能感兴趣的:(搭建zabbix,实现自动邮件报警)