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
解决方法防火墙或者客户端未启动。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏