zabbix  是一个基于web界面的分布式开源监控开源软件,主要由2部分构成:zabbix server和zabbix agent,同时也支持zabbix proxy。优点:

支持自动发现服务器和网络设备
 
 分布式的监控体系和集中式的web管理
 
 支持主动和被动模式
 
 服务器端支持多种操作系统,如:Linux,Solaris,HP-UX,FreeBSD,OpenBSD,MAC等
 
 客户端支持多种操作系统,如:Linux,Solaris,HP-UX,FreeBSD,Windows等
 
 基于SNMP、IPMI接口、Zabbix Agent方式监控客户端
 
 支持脚本监控、自定义key、自动化运维整合调用

Zabbix监控流程:

Agent安装在被监控的主机上,Agent负责定期收集客户端本地各项数据,并发送到Zabbix server端,Zabbix server端收到数据,将数据存储到数据库中,用户基于Zabbix  Web可以看到数据在前端显示的图像。

实验环境:

本次实验使用4台主机,规划如下:

主机1:安装Zabbix server和Zabbix agent,系统:CentOS 7,ip:192.168.10.200
 
 主机2:安装Zabbix agent,系统:RHEL 7.5 ,ip:192.168.10.205
 
 主机3:安装Zabbix agent,系统:RHEL 7.5 ,ip:192.168.10.206
 
 主机4:安装Zabbix agent,系统:CentOS 6.5 ,ip:192.168.10.207

===(1)zabbix服务端搭建===

实验环境:CentOS 7ip:192.168.10.200实验前关闭清空防火墙规则:

[root@localhost ~]# iptables -F

一、安装相关依赖包

安装相关依赖包

[root@localhost ~]# yum install -y bzip2-devel openssl-devel gnutls-devel gcc gcc-c++ cmake ncurses-devel bison-devel libaio-devel openldap  openldap-devel 
[root@localhost ~]# yum -y autoconf install bison net-snmp-devel libxml2-devel libcurl-devel libevent libevent-devel gd-devel curl

二、lnmp环境搭建

1、源码安装mariadb

这里使用最新版的mariadb演示。最新版:mariadb-10.3.7。

(1)、下载mariadb

[root@localhost ~]# curl -O https://mirrors.shu.edu.cn/mariadb//mariadb-10.3.7/source/mariadb-10.3.7.tar.gz

(2)、创建mysql用户和组

[root@localhost ~]# useradd -r -s /sbin/nologin mysql

(3)、创建数据库安装目录,数据库数据存放目录。数据库安装目录:/usr/local/mysql

数据库数据存放目录:/mydata/mariadb

[root@localhost ~]# mkdir /mydata/mariadb/ -pv
[root@localhost ~]# chown -R mysql.mysql  /mydata

(3)、解压、编译、安装mariadb。

[root@localhost ~]# tar mariadb-10.3.7.tar.gz
[root@localhost ~]# cd mariadb-10.3.7
[root@localhost mariadb-10.3.7]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock  \
-DMYSQL_DATADIR=/mydata/mariadb  \
-DSYSCONFDIR=/etc  \
-DMYSQL_USER=mysql  \
-DMYSQL_TCP_PORT=3306  \
-DWITH_XTRADB_STORAGE_ENGINE=1  \
-DWITH_INNOBASE_STORAGE_ENGINE=1  \
-DWITH_PARTITION_STORAGE_ENGINE=1  \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1  \
-DWITH_MYISAM_STORAGE_ENGINE=1  \
-DWITH_READLINE=1  \
-DENABLED_LOCAL_INFILE=1  \
-DWITH_EXTRA_CHARSETS=all  \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci  \
-DEXTRA_CHARSETS=all  \
-DWITH_BIG_TABLES=1  \
-DWITH_DEBUG=0
[root@localhost mariadb-10.3.7]# make && make install

此过程需要很长时间(4)初始化安装数据库。进入到数据库安装目录/usr/local/mysql,然后进行初始化。

[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/  --datadir=/mydata/mariadb/

(5)、数据库服务文件配置复制数据库安装目录(/usr/local/mysql/)中support-files里面的mysql.server文件到/etc/rc.d/init.d/目录中,并重命名为mariadb。

[root@localhost ~]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mariadb
[root@localhost ~]# chmod +x /etc/rc.d/init.d/mariadb
[root@localhost ~]# chkconfig --add mariadb

(6)、配置mariadb配置文件配置文件为:/etc/my.cnf,如果没有,则把mariadb源码包解压目录中的mariadb-10.3.7/support-files/rpm/my.cnf文件复制到/etc目录中即可。

/etc/my.cnf配置文件修改:

[root@localhost ~]# vim /etc/my.cnf
[mysqld]
datadir=/mydata/mariadb
socket=/tmp/mysql.sock

只修改这两项。(7)复制libmariadb.so.3 到/usr/lib/目录中[root@localhost ~]# cp /usr/local/mysql/lib/libmariadb.so.3 /usr/lib/(8)、启动mariadb数据库服务

[root@localhost ~]# systemctl start  mariadb

2、编译安装nginx

这里使用最新的nginx,版本: nginx-1.14.0(1)、下载nginx-1.14.0源码包

[root@localhost ~]# curl -O  http://nginx.org/download/nginx-1.14.0.tar.gz

(2)、创建nginx用户和组

[root@localhost ~]# useradd -r -s /sbin/nologin nginx

(3)解压、编译、安装nginx解压编译安装nginx

[root@localhost ~]# tar xf nginx-1.14.0.tar.gz 
[root@localhost ~]# cd  nginx-1.14.0
[root@localhost nginx-1.14.0]#./configure --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--http-log-path=/mydata/logs/nginx/access.log \
--error-log-path=/mydata/logs/nginx/error.log \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_image_filter_module \
--with-http_stub_status_module
[root@localhost nginx-1.14.0]# make -j 4 && make install

(4)创建网站目录在这里不想使用nginx的默认网站目录,我们自定义一个目录,假设为:/htdocs/zabbix

[root@localhost ~]# mkdir /htdocs/zabbix  -pv

在使用开启SELinux,自定义的网站目录会受到SELinux的限制,因此要设置SELinux安全上下文标签:

[root@localhost ~]# yum install selinux-policy-devel -y
[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t /htdocs
[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t /htdocs/zabbix
[root@localhost ~]# restorecon -Rv /htdocs/
restorecon reset /htdocs context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /htdocs/zabbix context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
[root@localhost ~]#

同时设置selinux域:

[root@localhost ~]# setsebool -P httpd_can_network_connect on

(5)修改nginx主配置文件因为编译安装的时候指定了nginx的安装目录为:/usr/local/nginx,所以其主配置文件为:/usr/local/nginx/conf/nginx.conf。

该文件默认情况为:

[root@localhost nginx-1.14.0]# cat /usr/local/nginx/conf/nginx.conf

#user  nobody;
worker_processes  1; 
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pidlogs/nginx.pid;


events {
worker_connections  1024;
}


http {
include   mime.types;
default_type  application/octet-stream;

#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
#  '$status $body_bytes_sent "$http_referer" '
#  '"$http_user_agent" "$http_x_forwarded_for"';

#access_log  logs/access.log  main;

sendfileon;
#tcp_nopush on;

#keepalive_timeout  0;
keepalive_timeout  65;

#gzip  on;

server {
listen   80;
server_name  localhost;

#charset koi8-r;

#access_log  logs/host.access.log  main;

location / {
root   html;
index  index.html index.htm;
}

#error_page  404  /404.html;

# redirect server error pages to the static page /50x.html
#
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#proxy_pass   http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#root   html;
#fastcgi_pass   127.0.0.1:9000;
#fastcgi_index  index.php;
#fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#includefastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#deny  all;
#}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#listen   8000;
#listen   somename:8080;
#server_name  somename  alias  another.alias;

#location / {
#root   html;
#index  index.html index.htm;
#}
#}


# HTTPS server
#
#server {
#listen   443 ssl;
#server_name  localhost;

#ssl_certificate  cert.pem;
#ssl_certificate_key  cert.key;

#ssl_session_cacheshared:SSL:1m;
#ssl_session_timeout  5m;

#ssl_ciphers  HIGH:!aNULL:!MD5;
#ssl_prefer_server_ciphers  on;

#location / {
#root   html;
#index  index.html index.htm;
#}
#}

}
[root@localhost nginx-1.14.0]#

主配置文件中的server{}段类似于Apache httpd的虚拟主机,为方便管理,把server{}段从主配置文件中剥离出来,单独作为一个文件,假设放在/usr/local/nginx/conf.d/目录中,文件名为zabbix.conf。因为/usr/local/nginx/目录中并不存在conf.d,所以先创建conf.d目录。

[root@localhost ~]# cd /usr/local/nginx/
[root@localhost nginx]# ls
conf  html  logs  sbin
[root@localhost nginx]# mkdir conf.d

先备份原来的nginx.conf:

[root@localhost nginx]# cp conf/nginx.conf conf/nginx.conf.bak

修改过nginx.conf文件:

[root@localhost nginx]# grep -vE "#|^$" conf/nginx.conf>conf/nginx.conf.swp
[root@localhost nginx]# rm -f conf/nginx.conf
[root@localhost nginx]# cp conf/nginx.conf.swp  conf/nginx.conf
[root@localhost nginx]# sed -i '/server/,$d' conf/nginx.conf
[root@localhost nginx]# echo -e 'include /usr/local/nginx/conf.d/*.conf;\n}' >> conf/nginx.conf
[root@localhost nginx]#sed -i '1i\user nginx nginx;' conf/nginx.conf

修改后的nginx.conf为:

[root@localhost nginx]# cat conf/nginx.conf
user nginx nginx;
worker_processes  1;
events {
worker_connections  1024;
}
http {
include   mime.types;
default_type  application/octet-stream;
sendfileon;
keepalive_timeout  65;
include /usr/local/nginx/conf.d/*.conf;
}

显然,这样比原来的好看多了。

接下配置server{}段的内容。

[root@localhost nginx]# vim conf.d/zabbix.conf
server {
listen   80;
server_name  localhost;
location / {
  root   /htdocs/zabbix;
  index  index.php index.html index.htm;
  }
  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
  root   /usr/local/nginx/html;
  }
  location ~ \.php$ {
  root   /htdocs/zabbix;
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_FILENAME  /htdocs/zabbix$fastcgi_script_name;
  include  fastcgi_params;
  }
}

(6)启动nginx

[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]# /usr/local/nginx/sbin/nginx
[root@localhost ~]#

3、编译安装php

这里使用php7.2.7版本(1)编译安装libmcrypt安装php之前,先编译安装libmcrypt,libmcrypt是用于加密算法的扩展库程序

[root@localhost ~]# curl -O https://www.linuxprobe.com/Software/libmcrypt-2.5.8.tar.gz
[root@localhost ~]# tar xf libmcrypt-2.5.8.tar.gz 
[root@localhost ~]# cd libmcrypt-2.5.8
[root@localhost libmcrypt-2.5.8]# ./configure && make && make install

(2)下载、解压、编译、安装php

[root@localhost ~]# curl -O http://cn2.php.net/distributions/php-7.2.7.tar.gz
[root@localhost ~]# tar xf php-7.2.7.tar.gz 
[root@localhost ~]# cd php-7.2.7
[root@localhost php-7.2.7]#./configure  --prefix=/usr/local/php7 --with-config-file-path=/etc/php7 --with-config-file-scan-dir=/etc/php7.d --with-mysqli=mysqlnd  --with-pdo-mysql=mysqlnd --with-mysql-sock=/tmp/mysql.sock --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-bz2 --with-libxml-dir --with-curl --with-gd --with-openssl --with-mhash  --with-xmlrpc --with-pdo-mysql --with-libmbfl --with-onig --with-pear --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring --enable-pcntl --enable-sockets --enable-zip --enable-soap --enable-opcache --enable-pdo --enable-mysqlnd-compression-support --enable-maintainer-zts  --enable-session --with-fpm-user=nginx --with-fpm-group=nginx
[root@localhost php-7.2.7]# make && make install

(3)配置php-fpm服务文件和php配置文件上面编译php的时候指定配置文件存放目录为/etc/php7、/etc/php7.d,所以要创建这两个目录。

[root@localhost php-7.2.7]# mkdir /etc/php7{,.d}

php的配置文件:复制php解压目录中的php.ini-production(此文件就是php的配置文件)到/etc/php7/目录中,并重命名为php.ini。

[root@localhost php-7.2.7]# cp php.ini-production /etc/php7/php.ini

php-fpm的服务文件:php-fpm的服务文件在php解压目录中的sapi/fpm/目录里面,名字为:init.d.php-fpm,将此文件复制到/etc/rc.d/init.d/目录中,并且重命名为:php-fpm,并且添加可执行权限。

[root@localhost php-7.2.7]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
[root@localhost php-7.2.7]# chmod +x /etc/rc.d/init.d/php-fpm
[root@localhost php-7.2.7]# chkconfig --add php-fpm

(4)配置php-fpm的配置文件php-fpm的配置文件在php安装目录中的/etc/目录里面。编译安装的时候指定了安装目录是/usr/local/php7/,所以php-fpm的配置文件在/usr/local/php7/etc目录中,将此文件复制一份,并重命名为php-fpm.conf即可。

[root@localhost php-7.2.7]# cd /usr/local/php7/
[root@localhost php7]# cp etc/php-fpm.conf.default etc/php-fpm.conf
[root@localhost php7]#

此外,etc/php-fpm.d/目录中有一个www.conf.default文件,将此文件复制一份,并且重命名为www.conf:

[root@localhost php7]# cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf

(5)启动php-fpm服务

[root@localhost php7]# systemctl start php-fpm

三、编译安装zabbix

服务端配置Zabbix server和agent

这里使用最新版的zabbix,最新版:zabbix-3.4.11。(1)、下载zabbix3.4.11

[root@localhost ~]#curl -O https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.4.11/zabbix-3.4.11.tar.gz

(2)、创建zabbix用户、组

[root@localhost ~]#useradd -r -s /sbin/nologin zabbix

(3)、解压zabbix源码包,并编译、安装

[root@localhost ~]# tar xf zabbix-3.4.11
[root@localhost ~]# cd zabbix-3.4.11
[root@localhost zabbix-3.4.11]# 
[root@localhost zabbix-3.4.11]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

....

Enable Java gateway:   no

  LDAP support:  no
  IPv6 support:  yes

***********************************************************
*Now run 'make install'   *
* *
*Thank you for using Zabbix!  *
*  <http://www.zabbix.com>*
***********************************************************

[root@localhost zabbix-3.4.11]# make && make install

(4)配置zabbix数据库创建zabbix数据库,数据库名称为:zabbix,用户名:zabbix,密码:123456创建数据库:

[root@localhost ~]# /usr/local/mysql/bin/mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.7-MariaDB Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all on zabbix.* to zabbix@localhost identified by '123456';
MariaDB [(none)]> grant all on zabbix.* to zabbix@127.0.0.1 identified by '123456';
MariaDB [(none)]> flush privileges;

导入数据:zabbix源码包解压后的database/mysql/目录中有zabbix的模版数据,导入即可。

[root@localhost ~]# cd zabbix-3.4.11/database/mysql/
[root@localhost mysql]# mysql -uzabbix -p123456 zabbix < schema.sql
[root@localhost mysql]# mysql -uzabbix -p123456 zabbix < images.sql
[root@localhost mysql]# mysql -uzabbix -p123456 zabbix < data.sql

(5)zabbix server和agent服务文件配置。在zabbix源码包解压后的目录中的misc/init.d/fedora/core/目录下有zabbix_agentd、zabbix_server两个文件,这两个文件就是zabbix服务端、客户端的服务文件。

[root@localhost ~]# cd zabbix-3.4.11
[root@localhost zabbix-3.4.11]# 
[root@localhost zabbix-3.4.11]# ls misc/init.d/fedora/core/
zabbix_agentd  zabbix_server

zabbix_agentd、zabbix_server就是服务端和客户端的服务文件,复制到/etc/rc.d/init.d/目录中。分别设置可执行权限并添加到系统服务管理中。

[root@localhost zabbix-3.4.11]# cp misc/init.d/fedora/core/*  /etc/rc.d/init.d/
[root@localhost zabbix-3.4.11]# chmod +x /etc/rc.d/init.d/zabbix_server 
[root@localhost zabbix-3.4.11]# chmod +x /etc/rc.d/init.d/zabbix_agentd 
[root@localhost zabbix-3.4.11]# chkconfig --add /etc/rc.d/init.d/zabbix_agentd
[root@localhost zabbix-3.4.11]# chkconfig --add /etc/rc.d/init.d/zabbix_server 
[root@localhost zabbix-3.4.11]#

修改zabbix_agentd、zabbix_server文件的BASEDIR:

[root@localhost ~]# vim /etc/rc.d/init.d/zabbix_server
BASEDIR=/usr/local/zabbix/
[root@localhost ~]# vim /etc/rc.d/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix/

BASEDIR就是zabbx的安装目录。(6)配置zabbix_server.conf

[root@localhost ~]# cd /usr/local/zabbix/
[root@localhost zabbix]# vim etc/zabbix_server.conf

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
DBPort=3306

(7)复制zabbix的Web应用程序到网站目录中

[root@localhost ~]# cd zabbix-3.4.11
[root@localhost zabbix-3.4.11]# cp -r frontends/php/* /htdocs/zabbix/
[root@localhost zabbix-3.4.11]# chown -R nginx.nginx /htdocs/
[root@localhost zabbix-3.4.11]#

(8)启动zabbix服务

[root@localhost ~]# systemctl start zabbix_server zabbix_agentd

(9)安装zabbix浏览器打开:192.168.10.200·进入zabbix安装向导。·点击下一步,检测PHP环境。根据上面所示,总共有4个失败,2个警告。对于检测失败的解决方法:按照提示,修改php配置文件:

[root@localhost ~]# vim /etc/php7/php.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone =  Asia/Shanghai

PHP LDAP、PHP gettext警告的解决方法:在php的解压目录中的ext目录里面有ldap、gettext这两个模块。编译这两个模块,然后在php.ini文件里配置相关选项即可。编译ldap模块:

[root@localhost ~]# cd php-7.2.7/ext/
[root@localhost ext]# cd ldap/
[root@localhost ext]# cd ldap/
[root@localhost ldap]# /usr/local/php7/bin/phpize 
Configuring for:
PHP Api Version: 20170718
Zend Module Api No:  20170718
Zend Extension Api No:   320170718
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

[root@localhost ldap]#

报错:Cannot find autoconf
安装autoconf软件包即可。

[root@localhost ~]# yum install autoconf -y

安装autoconf,重新执行phpize命令:

[root@localhost ldap]# /usr/local/php7/bin/phpize 
Configuring for:
PHP Api Version: 20170718
Zend Module Api No:  20170718
Zend Extension Api No:   320170718
[root@localhost ldap]#

编译安装ldap:

[root@localhost ldap]# ./configure --with-php-config=/usr/local/php7/bin/php-config --with-ldap

...
configure: error: Cannot find ldap.h

报错:没有找到ldap.h文件。解决方法:安装openldap-devel

[root@localhost ~]# yum install openldap  openldap-devel -y

将ldap相关库文件复制到/usr/lib目录中:

[root@localhost ~]# cp -frp /usr/lib64/libldap* /usr/lib/

重新编译安装ldap模块:

[root@localhost ldap]# ./configure --with-php-config=/usr/local/php7/bin/php-config --with-ldap
[root@localhost ldap]# make && make install

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

Installing shared extensions: /usr/local/php7/lib/php/extensions/no-debug-zts-20170718/

ldap模块安装在:/usr/local/php7/lib/php/extensions/no-debug-zts-20170718/目录中。

至此,完成了ldap模块的安装。编译gettext模块:进入到php解压包中的gettext目录,进行编译安装。

[root@localhost ldap]# cd ..
[root@localhost ext]# pwd
/root/php-7.2.7/ext
[root@localhost ext]# cd  gettext/
[root@localhost gettext]# /usr/local/php7/bin/phpize 
Configuring for:
PHP Api Version: 20170718
Zend Module Api No:  20170718
Zend Extension Api No:   320170718
[root@localhost gettext]#

编译安装gettext模块:

[root@localhost gettext]# ./configure --with-php-config=/usr/local/php7/bin/php-config
[root@localhost gettext]# make && make install

查看一下这两个模块是否安装好:

[root@localhost ~]# ls /usr/local/php7/lib/php/extensions/no-debug-zts-20170718/
gettext.so  ldap.so  opcache.a  opcache.so
[root@localhost ~]#

OK,已经安装好了。

最后在php配置文件中添加这两个模块,然后重启php-fpm服务。

[root@localhost ~]# vim /etc/php7/php.ini
extension=gettext.so
extension=ldap.so
[root@localhost ~]# systemctl restart php-fpm

刷新浏览器:OK,检测全部都ok了,点击下一步。选择数据库为MySql,数据库名为:zabbix,用户为zabbix,密码:123456,点击下一步:这里保留默认即可,点击下一步:再点击下一步:点击完成,进入zabbix登录界面:默认的用户名为:Admin,密码:zabbix。输入之后即可登录。

四、zabbix配置文件参数解析

1、zabbix_server.conf配置文件参数

DBHost:数据库主机地址
 
 DBName:数据库名称
 
 DBUser:连接数据库的用户名
 
 DBPassword:连接数据库的密码
 
 DBPort:数据库端口,默认为3306
 
 AlertScriptPath:告警脚本的存放路径
 
 CacheSize:存储监控数据的缓存
 
 CacheUpdateFrequency:更新一次缓存时间
 
 DebugLevel:日志级别
 
 LogFile:日志文件
 
 LogFileSie:日志文件大小,超过会自动切割
 
 LogSlowQueries:数据库慢查询记录,单位为ms
 
 PidFile:PID文件
 
 ProxyConfigFrequency:proxy被动模式下,server用多少秒同步配置文件至proxy
 
 ProxyDataFrequency:被动模式下,server间隔多少秒向proxy请求历史数据
 
 StartDiscoverers:发现规则线程数
 
 TimeOut:连接agent超时时间
 
 TrendCacheSize:历史数据缓存大小
 
 User:Zabbix运行的用户
 
 HistoryCacheSize:历史记录缓存大小
 
 ListenIP:监听本机的ip
 
 ListenPort:监听端口
 
 LoadModule:模块名称
 
 LoadModulePath:模块路径

2、zabbix_agentd.conf配置文件参数

EnableRemoteCommands:运行服务端远程至客户端执行命令或脚本
 
 Hostname:客户端主机名
 
 ListenIP:监听的ip
 
 ListenPort:客户端监听的端口
 
 LoadModulePath:模块路径
 
 LogFile:日志文件
 
 PidFile:PID文件
 
 Server:指定server IP地址
 
 ServerActive:zabbix主动监控server的IP地址
 
 StartAgents:agent启动进程,如果设为0,表示禁用被动监控
 
 Timeout:超时时间
 
 User:运行zabbix的用户
 
 UserParameter:用户自定义key
 
 BufferSize:缓存区大小
 
 DebugLevel:zabbix日志级别

3、zabbix_proxy.conf配置文件参数

ProxyMode:proxy工作模式,默认为主动模式,主动发送数据至server
 
 Server:指定server端地址
 
 ServerPort:server端的端口
 
 Hostname:proxy端主机名
 
 ListenPort:proxy端监听端口
 
 LogFile:proxy代理端日志
 
 PidFile:PID文件
 
 DBHost:proxy端数据库主机名
 
 DBName:proxy端数据库名称
 
 DBUser:proxy端数据库用户
 
 DBPoassword:proxy端数据密码
 
 DBSocket:proxy数据库socket路径
 
 DataSenderFrequency:proxy向server发送数据的时间间隔
 
 StartPollers:proxy程池数量
 
 StartDiscoverers:proxy端自动发现主机的线程数量
 
 CacheSize:内存缓存配置
 
 StartDBSyncers:同步数据线程数
 
 HistoryCacheSize:历史记录缓存大小
 
 LogSlowQueries:慢查询日志记录,单位是ms
 
 Timeout:超时时间

===(2)zabbix客户端搭建===

实验环境:RHEL 7.5ip:192.168.10.206

1、安装依赖包

[root@node1 ~]# yum install gcc libcurl-devel pcre-devel -y

2、创建zabbix用户

[root@node1 ~]# useradd -r -s /sbin/nologin zabbix

3、下载zabbix3.4.11

[root@node1 ~]# curl -O https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.4.11/zabbix-3.4.11.tar.gz

4、解压编译安装zabbix

[root@node1 ~]# tar xf zabbix-3.4.11.tar.gz 
[root@node1 ~]# cd zabbix-3.4.11
[root@node1 zabbix-3.4.11]# ./configure --prefix=/usr/local/zabbix --enable-agent
[root@node1 zabbix-3.4.11]# make && make install

5、配置zabbix_agentd.conf配置文件

[root@node1 zabbix-3.4.11]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=192.168.10.200
ServerActive=192.168.10.200
Hostname=192.168.10.206

6、复制zabbix_agentd启动脚本到/etc/rc.d/init.d/目录中。

复制zabbix_agentd启动脚本到/etc/rc.d/init.d/目录中

 [root@node1 zabbix-3.4.11]# cp misc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/

修改服务脚本中的BASEDIR

[root@node1 zabbix-3.4.11]# vim /etc/rc.d/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix

添加可执行权限,添加到系统服务

[root@node1 zabbix-3.4.11]# chmod +x /etc/rc.d/init.d/zabbix_agentd 
[root@node1 zabbix-3.4.11]# chkconfig --add zabbix_agentd

启动zabbix_agentd服务

[root@node1 zabbix-3.4.11]# systemctl start zabbix_agentd

7、添加防火墙规则

zabbix_agentd服务的监听端口为10050/tcp。

[root@node1 ~]# ss -tnlp | grep zabbix
LISTEN 0  128  *:10050*:*   users:(("zabbix_agentd",pid=32534,fd=4),("zabbix_agentd",pid=32533,fd=4),("zabbix_agentd",pid=32532,fd=4),("zabbix_agentd",pid=32531,fd=4),("zabbix_agentd",pid=32530,fd=4),("zabbix_agentd",pid=32528,fd=4))
[root@node1 ~]#

添加防火墙规则:

[root@node1 ~]# firewall-cmd --permanent --add-port=10050/tcp
success
[root@node1 ~]# firewall-cmd --reload
success
[root@node1 ~]#

===(3)zabbix监控应用===

前面已经搭建好zabbix监控体系了。zabbix的服务端ip: 192.168.10.200zabbix的客户端ip: 192.168.10.200、192.168.10.205、192.168.10.206

浏览器打开:192.168.10.200,登录后成功如下图所示:

1、添加监控主机

配置好server端和agentd端之后,就可以监控agentd主机了。

依次选择Configuration –> Hosts –> Create host,如下图:Host配置:Host name:主机名,要与zabbix_agentd.conf配置文件中的Hostname保持一致。

Groups:组,可以在右边的“Other groups”列表中选择,这里使用Linux servers。

Agent interfaces:agentd端的ip

其他选项保持不变。Templates配置:Link new templates:点击右边的Select根据需要选择,这里使用Template OS Linux。然后点击Add即可。

设置完成以上内容后,保存退出即可。
用同样的方法设置192.168.10.205、192.168.10.206两台被监控的主机即可。

2、zabbix自动发现及注册

zabbix可以利用discovery模块,实现自动发现主机、自动将主机添加到主机组、自动加载模版、自动创建项目、自动创建监控图像。具体操作如下:(1)依次选择Configuration–>Discovery–>Create discovery rule。创建客户端发现规则。如下图所示:参数解释:

Name:规则名称,自定义名称
 
 Discovery by proxy:通过代理搜索
 
 IP range:zabbix_server搜索区域的IP范围
 
 Update interval:更新的间隔
 
 Checks:检测方式,如果用ping方式去发现主机,则zabbix_server需要安装fping。此处使用agent方式发现。使用zabbix agentd方式的时候,要使用key,这里key为:system.uname。也可以在zabbix_agentd配置文件中自定义key。
 
 Device uniqueness criteria:以IP地址作为被发现主机的标识

配置好之后点击add即可。自定义key在所有的agentd端编辑zabbix_agentd.conf文件,定义key。

定义key语法:
 
 UserParameter=

(2)创建发现Actionzabbix发现规则创建后,被发现的IP主机不会自动添加至zabbix监控列表,必须添加发现动作。设置如下:

依次选择Configuration–>Actions–>Event source(Discovery)–>Create action。如下图:Action设置:Name:名称,自定义

New condition:设置ip段。我的实验ip段为192.168.10.Operations设置:这里只设置Operations部分。点击New添加相关的选项,这里添加了Add host、Add to host groups: Linux servers、Link to templates: Template OS Linux这3个选项。(3)查看监控主机1、设置好之后。依次点击Monitoring–>Discovery,这样就可以查看到发现到的主机。如下图:本次使用使用了4台机子。其中192.168.10.200主机既是zabbix服务端,也是被监控的agent端。

2、依次选择Configuration–>Hosts,查看主机是否被自动监控至Zabbix监控平台。如下图:3、查看监控图像,依次选择Monitoring–>Graphs,如下图:Group:组,可以选择查看某个组

Host:主机,可以选择查看某个主机

Graph:图像类型,图像类型有很多,比如:cpu使用率、负载、磁盘使用、网络等等。可以根据需要查看某个类型。

3、zabbix 邮件报警

前面已经搭建好Zabbix监控平台。这里在Zabbix服务端设置邮件报警。Zabbi设置邮件报警步骤:

(1)设置邮件模版及邮件服务器。依次选择Administration–> Media types,如下图:上图所示,默认有Email、Jabber、SMS3个,点击Email,如下图所示:配置参数:

SMTP server:smrp服务器,这里使用163的邮箱,所以是smtp.163.com
 
 SMTP helo:邮箱地址    SMTP email:邮箱地址, Authentication:选择用户名和密码认证
 
 Username:用户名,也就是邮箱地址
 
 Password:登录邮箱的密码。现在的163邮箱安全系数比较高,因此这个密码并不是你登录邮箱的真正密码,而是授权码。授权码怎么得到,后面有介绍。
 
 Enabled:要勾上。

官方的参数解释:  https://www.zabbix.com/documentation/3.4/zh/manual/config/notifications/media/email设置完成之后,记得保存。授权码的获取:登录你的邮箱,如下图:点击设置–>客户端授权密码,开通并设置授权码即可。(2)配置接收报警的邮箱。依次选择Administration–>Users–>Admin,如下图:点击Amin–>Media,然后点击Add,后进入如下界面:Send to:设置接收邮件的邮箱。

其他选项保持默认。(3)添加报警触发器。依次选择Configuration–>Actions–>Event source (Triggers)。如下图:然后点击:Report problems to Zabbix administrators,如下图:配置ActionNew condition:  Trigger severity >= Warning

勾选Enabled配置Operations点击Operations:配置Recovery Operations点击Recovery Operations:最后添加Update。(4)测试关闭几个主机的zabbix_agentd服务看看。过几分钟之后,就会收到被监控的主机异常的邮件,如下图所示:至此,邮件告警设置成功。

4、zabbix 微信报警

分类: Linux服务

发表评论

电子邮件地址不会被公开。 必填项已用*标注