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 7 ip: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
(4)、解压、编译、安装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
此过程需要很长时间
(5)初始化安装数据库。
进入到数据库安装目录/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/
(6)、数据库服务文件配置
复制数据库安装目录(/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
(7)、配置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
只修改这两项。
(8)复制libmariadb.so.3 到/usr/lib/目录中
[root@localhost ~]# cp /usr/local/mysql/lib/libmariadb.so.3 /usr/lib/
(9)、启动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、zabbix_agentd.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
[root@localhost zabbix]# vim etc/zabbix_agentd.conf
Server=192.168.10.200
ServerActive=192.168.10.200
Hostname=192.168.10.200
(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.5 ip: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.200
zabbix的客户端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=<key>,<shell command> 比如: UserParameter=get.os.type,head /etc/redhat-release
(2)创建发现Action
zabbix发现规则创建后,被发现的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,如下图:
配置Action
New condition: Trigger severity >= Warning
勾选Enabled
配置Operations
点击Operations:
配置Recovery Operations
点击Recovery Operations:
最后添加Update。
(4)测试
关闭几个主机的zabbix_agentd服务看看。过几分钟之后,就会收到被监控的主机异常的邮件,如下图所示:
至此,邮件告警设置成功。