zabbix监控平台搭建

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

至此,邮件告警设置成功。

4、zabbix 微信报警

转载于:https://my.oschina.net/logmm/blog/1838546

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值