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

2018-09-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
[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"
[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)
[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
[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 编译安装
[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

[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
}
.............
[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):                    [  确定  ]
[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
[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
[root@zabbix-server-72 ~]# systemctl start httpd

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

检查php相关
数据库设置
信息页
上传配置文件
上传然后刷新登录
选择界面语言
[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');

[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    #超时时间
[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的配置一致
[root@zabbix-server-72 ~]#  /usr/local/zabbix/sbin/zabbix_java/startup.sh
[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"
[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服务器的地址
[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启动成功
[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服务器被监控端

[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.

[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   #修改目录
[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、添加被监控主机

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

[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  #设置可执行权限
[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"
[root@nginx-73 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
### Option: Include
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf #调用自定义模板
[root@nginx-73 ~]# /etc/init.d/zabbix_agentd restart
Restarting zabbix_agentd (via systemctl):                  [  确定  ]
[root@nginx-73 ~]# visudo
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
zabbix  ALL=(ALL)       NOPASSWD:ALL
选择监控项
创建监控项
 这里设置的key值,就用于传递参数给刚才在zabbix_agent创建的process_port_check.sh脚本。port和80分别对应$1,$2。
nginx端口和进程的监控项 设置 设置触发器阈值 完成设置触发器

3、设置web监测

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


点击web监控 点击创建
选择应用集
添加步骤和url
监控最新数据查看,返回状态码

4、设置邮件报警

添加QQ邮件媒介

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


点击创建动作 邮件名称和内容 选择条件
选择操作,第一步发送邮件
生成动作
当nginx停止服务时候,自动发送告警邮件,并返回邮件状态 告警邮件接收
当nginx恢复服务时候,自动发送恢复邮件,并返回邮件状态 恢复邮件接收

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

上一篇下一篇

猜你喜欢

热点阅读