一、环境准备
第一步、安装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进行配置
- 当选择中文时候要注意字体,为了避免乱码,从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.
- 编译安装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主机,添加完成后其配置状态应如下图所示:
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。
- 创建相关监控项的对应图表
- 设置相应的触发器进行报警操作:
-
最后在对应的host主机上调用相应的监控模板即可:
3、设置web监测
zabbix本身支持web监测,能监控指定URL的状态,包括访问速度、响应时间等等。这里我们就来尝试监控nginx的test.html页面。
首先点击进入相应的web监测创建页面:
4、设置邮件报警
-
这里我使用qq邮箱,发送和接收都是同一个账号,首先查看qq邮箱的smtp服务是否开启,开启后qq会给一个授权密码,注意不是qq的登录密码。
在给相应的监控项设置邮件报警前,我们要在zabbix server上添加相应的邮件媒介:
我使用QQ邮件服务器来测试。
-
添加完邮件媒介后,还需要在对应的管理员账号中调用此邮件媒介:
添加完用户的邮件媒介后,还需要在配置的动作Actions中配置添加邮件报警的动作:
参考链接:https://www.jianshu.com/p/21fb110d7b1e