Zabbix 安装详解

avatar 2019年12月24日09:38:14 评论 1,044 次浏览

zabbix是一款开源的监控系统,不过开源的监控系统不至只有zabbix,像一些大公司自己开发的监控系统也开源了,不过这种开源只是适合他们的环境的应用以及服务监控。每个公司的架构虽然都是大同小异但是监控的点还是不一样的,我们就举个简单的例子,有的公司使用的是php有的使用的java,不同的语言使用的环境也不一样。开源软件那么多,如何选择呢?首先要适合自己的环境,其次,用过的或者说用的比较熟悉的,跟自身的技术有很大的关系。其他的先不说,这篇文章就说说zabbix的搭建,以及如何使用。搭建我们围绕着基本搭建和高可用环境的搭建,搭建后的基本使用方法,如何自定义自己的监控方法,敬请期待下次更新。

Zabbix环境

主机名 主机IP 角色
wulaoer_zabbix01 10.211.55.139 server
wulaoer_zabbix02 10.211.55.131 Client01
wulaoer_zabbix03 10.211.55.132 Client02
wulaoer_zabbix04 10.211.55.133 Client03

需求:
1、需要一个mysql存储监控数据
2、需要一个nginx浏览zabbix前端
3、zabbix是php写的,所以需要安装php
我这里已经安装好了,mysql版本5.7,php 7.0,nginx 1.16.如果不知道如何安装可以使用一键安装,目前的脚本安装方式已经很完善了。一键安装脚本:

wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz -cO lnmp1.6.tar.gz && tar zxf lnmp1.6.tar.gz && cd lnmp1.6 && ./install.sh lnmp

如果不会一键安装,可以参考这里的说明:https://lnmp.org/install.html

下载zabbix

首先下载并解压

[root@wulaoer_zabbix01 ~]# wget https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.15/zabbix-4.4.3.tar.gz
[root@localhost ~]# tar -zxf zabbix-4.4.3.tar.gz
[root@localhost ~]# cd zabbix-4.4.3 zabbix

安装zabbix

[root@wulaoer_zabbix01 zabbix-4.4.3]# yum -y install  net-snmp-devel curl-devel libevent-devel  mysql-devel openldap openldap-devel
[root@localhost zabbix-4.4.3]#  ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-proxy --with-mysql=/usr/local/mysql/bin/mysql_config --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
[root@localhost zabbix-4.4.3]# make && make install

设置mysql的zabbix连接用户

zabbix收集的数据是需要存储到mysql中的,所以需要我们创建一个用户并给与权限,然后把zabbix的数据库格式导入到创建的mysql中。这里注意,如果使用了zabbix_proxy建议把zabbix_server和的库分开,如果都放在一个库下容易被破坏,zabbix_proxy只导入schema.sql就可以了,zabbix_server需要schema.sql、images.sql、data.sql都导入进去。

[root@wulaoer_zabbix01 zabbix]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.26-log Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> create database zabbix_server charset=utf8;
Query OK, 1 row affected (0.02 sec)
mysql> create database zabbix_proxy charset=utf8;
Query OK, 1 row affected (0.00 sec)
mysql> use mysql
Database changed
mysql> grant all on zabbix_server.* to 'zabbix_server'@'%' identified by 'zabbix_server';
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> grant all on zabbix_proxy.* to 'zabbix_proxy'@'%' identified by 'zabbix_proxy';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> use zabbix_server;
Database changed
mysql> source /root/zabbix-4.4.3/database/mysql/schema.sql
mysql> source /root/zabbix-4.4.3/database/mysql/images.sql
mysql> source /root/zabbix-4.4.3/database/mysql/data.sql
mysql> use zabbix_proxy      #如果不适用zabbix_proxy可以选择不导入
Database changed
mysql> source /root/zabbix-4.4.3/database/mysql/schema.sql	
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

配置zabbix

zabbix配置需要注意,这里有两配置文件分别是zabbix_server.conf和zabbix_proxy.conf,两者的区别就是一个辅助的关系,在远程监控环境或者本地网络不好的环境下,zabbix_server.conf的压力会非常大,这个时候zabbix_proxy.conf就可以替代zabbix_server.conf检索客户端的数据,然后把数据汇报给zabbix_server.conf,在一定程度上减轻了zabbix_server.conf的压力。这个时候zabbix_proxy.conf就可以实现集群中式、分布式监控。这里先做zabbix_server,后面针对zabbix_proxy单独使用另外一台服务安装,容易区分。

[root@wulaoer_zabbix01 ~]# vim /usr/local/zabbix/etc/zabbix_server.conf
.............................................
LogFile=/tmp/zabbix_server.log
PidFile=/tmp/zabbix_server.pid
DBHost=10.211.55.139
DBName=zabbix_server
DBUser=zabbix_server
DBPassword=zabbix  #修改密码
DBSocket=/tmp/mysql.sock
DBPort=3306
StartDiscoverers=2
Timeout=4
LogSlowQueries=3000
[root@localhost ~]# vim /usr/local/zabbix/etc/zabbix_proxy.conf
..................................................
Server=10.211.55.139            # 真正的服务端(zabbix server)
ServerPort=10051                  # 根据个人需要修改,一般可以不改,默认端口是10051,要实现转发的话使用这个选项(zabbix server)
ListenPort=10051                  # zabbix-proxy服务监听的端口,默认就好
Hostname=Zabbix proxy             # proxy的hostname,在web端网页配置时需要用到
DBHost=10.211.55.139            # 数据库,使用本地,也可以使用ip,我喜欢使用localhost,因为我授权就是本地,也因为配置ip失败踩过坑
DBName=zabbix_proxy               # 数据库名称,创建zabbix-proxy的mysql的数据库名称
DBUser=zabbix_proxy                    # 用户
DBPassword=zabbix_proxy                 # 密码
DBPort=3306                       # 当DBHost填写localhost时,默认是使用socket通信的,这里配置一下也无碍
#HeartbeatFrequency=60            # 心跳线(具体作用网了,看配置文件吧,这个默认就是60)
ConfigFrequency=600               # 这个好像是同步配置文件的时间
DataSenderFrequency=1             # 这个是proxy端向server端发送数据的时间,单位是秒,几乎等于实时同步

如果不安装zabbix_proxy可以不增加这一步,也不用配置zabbix_proxy.conf文件。

[root@wulaoer_zabbix01 ~]# ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20

启动服务

这里先启动zabbix_server,然后在启动zabbix_proxy,因为zabbix_proxy启动必须是普通用户,所以需要给zabbix授权。这里先启动zabbix_server

[root@wulaoer_zabbix01 ~]# groupadd zabbix 
[root@wulaoer_zabbix01 ~]# useradd -g zabbix zabbix 
[root@wulaoer_zabbix01 ~]# chown zabbix:zabbix -R /usr/local/zabbix
[root@wulaoer_zabbix01 ~]# su zabbix
[zabbix@wulaoer_zabbix01 root]$ cd
[zabbix@wulaoer_zabbix01 ~]$ /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
[zabbix@wulaoer_zabbix01 ~]$ ps -ef | grep zabbix
root      74161  38243  0 19:59 pts/2    00:00:00 su zabbix
zabbix    74162  74161  0 19:59 pts/2    00:00:00 bash
zabbix    74199  74162  0 20:00 pts/2    00:00:00 ps -ef
zabbix    74200  74162  0 20:00 pts/2    00:00:00 grep --color=auto zabbix

配置zabbix的前端

我们需要通过zabbix的前端来展示监控的数据,所以需要我们把zabbix的前端数据拷贝到nginx下,直接访问。

[root@wulaoer_zabbix01 zabbix-4.0.15]# rm -rf /home/wwwroot/default/*
[root@wulaoer_zabbix01 zabbix-4.0.15]# cp -r frontends/php/* /home/wwwroot/default/

直接使用浏览器访问即可,http://10.211.55.139/setup.php ,这里出现了几个警告,处理一下:

问题1
PHP option "max_input_time"	60	300	Fail
处理方法:
[root@wulaoer_zabbix01 zabbix-4.4.3]# sed 's/max_input_time = 60/max_input_time = 300/' /usr/local/php/etc/php.ini 
问题2
PHP LDAP	off		Warning
解决方法
[root@wulaoer_zabbix01 ~]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/
opcache.a  opcache.so	
安装php的时候没有安装ldap,所以需要重新安装一下
[root@wulaoer_zabbix01 ~]# cd lnmp1.6/src/
[root@wulaoer_zabbix01 src]# tar -jxf php-7.0.33.tar.bz2  
root@wulaoer_zabbix01 src]# cd php-7.0.33
[root@wulaoer_zabbix01 php-7.0.33]# /usr/local/php/bin/phpize 
Cannot find config.m4. 
Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the module
[root@wulaoer_zabbix01 openssl]# cd ext/openssl
[root@wulaoer_zabbix01 openssl]# ls
config0.m4  config.w32  CREDITS  openssl.c  openssl.mak  php_openssl.h  README  tests  xp_ssl.c
[root@wulaoer_zabbix01 openssl]# cp ./config0.m4 ./config.m4
[root@wulaoer_zabbix01 openssl]# /usr/local/php/bin/phpize 
Configuring for:
PHP Api Version:         20151012
Zend Module Api No:      20151012
Zend Extension Api No:   320151012
[root@wulaoer_zabbix01 ldap]# ./configure  --with-php-config=/usr/local/php/bin/php-config  --with-ldap  && make && make install
configure: error: Cannot find ldap libraries in /usr/lib.
[root@wulaoer_zabbix01 ldap]# cp -frp /usr/lib64/libldap* /usr/lib/
[root@wulaoer_zabbix01 ldap]# ./configure  --with-php-config=/usr/local/php/bin/php-config  --with-ldap  && make && make install
...............................................
出现问题1:
/usr/bin/ld: ext/ldap/.libs/ldap.o: undefined reference to symbol 'ber_scanf'
//usr/lib64/liblber-2.4.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
解决方法:编辑MakeFile找到 开头是 'EXTRA_LIBS' 这一行 在结尾加上 '-llber' 然后执行 make && make install
出现问题2:
ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_ctor':
/ext/iconv/iconv.c:2491: undefined reference to `libiconv_open'
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
解决方法:编辑MakeFile找到 开头是ZEND_EXTRA_LIBS修改ZEND_EXTRA_LIBS='-liconv' 然后执行 make && make install
出现问题3:
configure: error: Cannot find ldap libraries in /usr/lib  
解决办法 : cp -frp /usr/lib64/libldap* /usr/lib/
[root@wulaoer_zabbix01 ldap]# ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/
total 3028
-rwxr-xr-x. 1 root root  174296 Dec 19 10:38 ldap.so
-rwxr-xr-x. 1 root root 1993656 Dec 17 19:36 opcache.a
-rwxr-xr-x. 1 root root  928272 Dec 17 19:36 opcache.so
出现问题4:
[root@wulaoer_zabbix01 ldap]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm [20-Dec-2019 10:25:05] NOTICE: PHP message: PHP Warning:  PHP Startup: Invalid library (maybe not a PHP library) 'ldap.so' in Unknown on line 0
 done
解决办法:首先进行make clean清楚之前的make信息。再次进行make /make install即可通过。

[root@wulaoer_zabbix01 ldap]# vim /usr/local/php/etc/php.ini 
...........................................
; If you wish to have an extension loaded automatically, use the following
; syntax:
extension=ldap.so #我的没有直接增加的
;   extension=modulename.extension
;
; For example, on Windows:
..............................................

下面是设置前端的zabbix页面信息:

下一步显示zabbix需要的相关组件以及基本配置

根据自己的需要安装相应的组件,不过这里建议全部设置ok

配置mysql的连接信息

Zabbix服务端配置

以上配置信息,我们参考上面的配置信息,把前端的配置信息也修改一下

[root@wulaoer_zabbix01 conf]# pwd
/home/wwwroot/default/conf
[root@wulaoer_zabbix01 conf]# cp zabbix.conf.php.example zabbix.conf.php
[root@wulaoer_zabbix01 conf]# vim zabbix.conf.php
<?php
// Zabbix GUI configuration file.
global $DB, $HISTORY;

$DB['TYPE']                             = 'MYSQL';
$DB['SERVER']                   = '10.211.55.139';
$DB['PORT']                             = '3306';
$DB['DATABASE']                 = 'zabbix_server';
$DB['USER']                             = 'zabbix_server';
$DB['PASSWORD']                 = 'zabbix_server';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA']                   = '';

$ZBX_SERVER                             = 'localhost';
$ZBX_SERVER_PORT                = '10051';
$ZBX_SERVER_NAME                = '';

$IMAGE_FORMAT_DEFAULT   = IMAGE_FORMAT_PNG;

// Uncomment this block only if you are using Elasticsearch.
// Elasticsearch url (can be string if same url is used for all types).
//$HISTORY['url']   = [
//              'uint' => 'http://localhost:9200',
//              'text' => 'http://localhost:9200'
//];
// Value types stored in Elasticsearch.
//$HISTORY['types'] = ['uint', 'text'];
~

刷新一下,登录默认用户名admin,密码zabbix。

登录成功,下面我们添加一下客户端

安装客户端

因为上面已经安装了客户端,所以直接设置即可,如果没有安装可以参考一下下面的安装方式,这里在其他机器上安装方法也是一样的,如果防火墙没有关闭的话建议关闭一下

[root@wulaoer_zabbix02 zabbix-4.0.15]# ./configure --prefix=/usr/local/zabbix --enable-agent --with-mysql --with-openssl 
[root@wulaoer_zabbix02 zabbix-4.0.15]# make && make install 
[root@wulaoer_zabbix02 zabbix-4.0.15]# vim /usr/local/zabbix/etc/zabbix_agentd.conf 
............................................................. 
Server=10.211.55.139 #Zabbix Server IP 地址 
ServerActive=10.211.55.139 #Zabbix Server IP 地址 主动向 Zabbix Server 发送监控内容 
Hostname=Zabbix Server #本机主机名 内容要和Zabbix Server 配置的 Host Name 一致 
............................................................. 
[root@wulaoer_zabbix02 ~]# groupadd zabbix 
[root@wulaoer_zabbix02 ~]# useradd -g zabbix zabbix 
[root@wulaoer_zabbix02 ~]# chown zabbix:zabbix -R /usr/local/zabbix
[root@wulaoer_zabbix02 ~]# /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf

至此,客户端设置完成,我们需要把zabbix客户单加到zabbix server中。

在配置--主机--创建主机中输入信息:

稍等几分钟,我们需要给客户端一个监控的模板,在zabbix模板中Template OS Linux已经包含了Template App Zabbix Agent所以我们只做系统的监控只增加Template OS Linux即可。

在配置---主机下面有创建好的客户端,查看一下状态

监控正常,这里如果客户端没有启动或者防火墙限制都会出现红色的zabix

 

Get value from agent failed: cannot connect to [[10.211.55.138]:10050]: [111] Connection refused

解决方法防火墙或者客户端未启动。

 

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: