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服务看看。过几分钟之后,就会收到被监控的主机异常的邮件,如下图所示:
至此,邮件告警设置成功。