美文网首页
搭建zabbix,实现自动邮件报警

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

作者: 任总 | 来源:发表于2018-09-19 23:19 被阅读31次
    实验拓扑结构

    一、环境准备

    第一步、安装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 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
    
    
    [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   #创建测试页面
    <h1>This is a test page</h1>
    [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,实现自动邮件报警

          本文链接:https://www.haomeiwen.com/subject/odxowftx.html