Zabbix(一)

Zabbix(一)

1.Zabbix介绍

  首先是对zabbix进行了解,监控的本质是当某些指标不符合我们的要求和设置的条件时,我们能够第一时间发现异常的问题,所以需要一个监控感觉能够定期的对监控主机进行检查、信息收集等操作,被监控主机出现异常时,能够及时报警、通知管理员,并且需要记录这些异常。

  为了使得监控设备具有一定的通用性,zabbix提供了一些通讯方式方便管理:

方式             功能
agent   通过专用的代理程序进行监控,与常见的master/agent模型类似,如果被监控对象支持对应的agent
ssh/telnet   通过远程控制协议进行通讯,比如ssh或者telnet
SNMP   通过SNMP协议与被监控对象进行通讯,通常来说,我们无法在路由器、交换机这种硬件上安装agent,但是这些硬件往往都支持SNMP协议,大部分网络设备都支持这种协议,其实SNMP协议的工作方式也可以理解为master/agent的工作方式
IPMI   通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压,温度,风扇状态,电源状态等
JMX   通过JMX进行监控,JMX(Java Management Extensions,即Java管理扩展)

  一般情况下,我们将zabbix agent部署到被监控主机上,由agent采集数据,报告给负责监控的中心主机,中心主机也就是master/agent模型中的master,负责监控的中心主机被称为zabbix server,zabbix server将从agent端接收到的信息存储于zabbix的数据库中,我们把zabbix的数据库端称为zabbix database

2.Zabbix安装

  这里使用的是3.0.32版本的编译安装,首先下载安装zabbix的YUM源

1
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

  安装Zabbix

1
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-get

  安装之后进入MySQL数据库,创建Zabbix数据库

1
2
3
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to 'zabbix'@'%' identified by 'zabbixpass';
flush privileges;

  导入Zabbix到数据库

1
2
cd /usr/share/doc/zabbix-server-mysql-3.0.32/
zcat create.sql.gz |mysql -uroot -proot zabbix
1
2
3
4
5
6
7
8
9
#配置zabbix用户
groupadd zabbix
useradd -g zabbix -s /bin/false zabbix
#配置Zabbix服务器端
vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbixpass
1
2
3
4
5
6
7
8
9
10
#赋予相对应的权限
cd /usr/share/
cp -r zabbix /usr/local/nginx/html
chown -R zabbix:zabbix /etc/zabbix
chown -R zabbix:zabbix /usr/share/zabbix
chown -R zabbix:zabbix /usr/lib/zabbix

#Zabbix加入开机启动并启动
systemctl enable zabbix-server
systemctl start zabbix-server

  最后就是在浏览器中测试Zabbix,这里出现了问题,就是在访问zabbix/setup.php网址的时候,访问不了,一直反馈的是空白的状态,使用curl抓取也是没有任何反馈,这里一开始以为是php-fpm的问题,重启服务后没有作用

  后面进行排查和尝试,表示有一些常见错误,使用一下命令

1
chmod -R 755 /etc/zabbix/web

  我怀着试一试的办法,也是最终成功了,但是没法理解是因为什么,最终是成功了进入到了setup的界面,这是因为一开始访问的界面不在对应的那个文件中,所以我们赋权的时候没赋权到,所以给web界面进行了赋权,至于为什么要分开放,我也不知道(sad)

3.Zabbix配置

  进入界面后进行了报错,zabbix自动检查了环境,显示php的部分内容是不满足要求的,需要进行修改,这里进入到php.ini文件进行相关的修改即可

1
2
3
4
5
6
7
8
max_execution_time= 300 
max_input_time=300
upload_max_filesize= 2M
post_max_size= 16M
memory_limit= 128M
date.timezone= Asia/Shanghai
mbstring.func_overload= 1
always_populate_raw_post_data= -1

  这里使用vim编辑器,并使用/ 查找单词的模式进行了相关查找

  修改后就剩下是最后就是jpeg的支持问题,尝试先安装jpeg

1
2
3
4
wget "http://www.ijg.org/files/jpegsrc.v9.tar.gz"
tar zxvf jpegsrc.v9.tar.gz
cd jpeg-9
CFLAGS="-O3 -fPIC" ./configure --prefix=/usr/local/jpeg && make && make install

  接下来需要cd到php源码的 gd 目录,否则会报 cannot find config.m4 之类的错误

1
2
3
cd php源码安装包的路径
cd ext
cd gd

  然后再这个目录中执行命令 /usr/local/php/bin/phpize。当我们需要再加些模块,又不想重新编译php,这时我们就可以用phpize了

1
/usr/local/php56/bin/phpize

  现在可以进行单独编译安装了

1
./configure --with-php-config=/usr/local/php56/bin/php-config --with-jpeg-dir=/usr/local/jpeg

  这个报错意味着编译器无法找到php-config文件

  使用find命令查找一番,明显就是有的啊,这不睁眼说瞎话吗,很奇怪,没理解这是为什么。,总感觉是我哪里理解出了问题,导致没有办法让他找到config的文件,后面发现是我的拼写出了问题,应该是config,不是configrue,重新运行

  显示添加成功了,接下来进行make操作

1
make && make install

  重启 Nginx 之后再看看是否安装成功了。再执行z/usr/local/php/bin/php -m 查看gd模块是否加载成功。

1
2
service nginx restart
/usr/local/php/bin/php -m

  重启php-fpm服务和zabbix-server服务。还是失败了

  这个报错比较特殊,,我首先是尝试了单独的安装jped库的安装包,尝试使用单独配置的办法,类比与openssl的解决思路进行尝试,结果是失败了,这让我有些走入了死胡同的感觉,参照了网络上查询的解决办法,大体上也是我这样子的思路,所以我一直也在追求如何不重新编译php的情况下,进行二次编译扩展的使用,但遗憾的是没有成功,我似乎根本找不到对应的so文件,这使得我卡主了很久,后来找了导师,导师和我说我这安装的gd库有些特殊,需要先make clean后才能重新编译make成功,总之最终还是选择了重新编译php的操作,最后就是解决最后的报错提示

1
zabbix     PHP ldap Warning

  这个问题的话,通过查询资料,大部分显示warning并不会影响最终的zabbix配置,直接下一步也是能够通过的,但是这里我觉得还是本着不对红字放过,不对报错马虎的态度进行了解决,这个报错的提示是php的ldap并不存在,我们需要安装对应的库即可,这里采用了二次编译扩展的方法进行尝试

1
2
cd /lfs/desktop/php-5.6/ext/ldap/   # 进入模块所在的源码位置
/usr/local/php56/bin/phpize # 编译PHP扩展的工具,主要是根据系统信息生成对应的configure文件
1
2
./configure  --with-php-config=/usr/local/php/bin/php-config  --with-ldap
make && make install

  执行过程中出现如下报错

configure: error: Cannot find ldap.h 解决办法:

1
yum -y install openldap openldap-devel

  configure: error: Cannot find ldap libraries in /usr/lib 解决办法 :

1
cp -frp /usr/lib64/libldap* /usr/lib/

  出现对应的so扩展文件,接下来就是编辑php.ini,5版本的php添加

1
extension=ldap.so

  退出重启服务:

1
2
systemctl restart nginx
systemctl restart php-fpm

4.Zabbix初始化

  完成上述安装步骤后,访问 Zabbix_Web_IP/zabbix ,可以看到如下图的zabbix安装页面,点击下一步按钮

  以看到,zabbix自动检查了安装环境是否满足要求,如果出现不满足要求的情况,需要进一步处理,这里已经全部处理完成没有问题了,点击下一步

  此处zabbix需要配置数据库连接,此处配置数据库的类型,IP,端口,数据库名,用户密码等信息,端口填写0表示使用默认端口(3306端口),这里就使用默认端口,然后密码使用4399,这里使用命令查看3306端口使用情况

1
sudo lsof -i :3306

  这里是之前配置myslq中zabbix账号和密码,我设置的是zabbix和zabbixpass(忘记了,还好前面有保存日报),吓得我以为又是数据库的问题

  好咧,这里就明显通过了,没有报错,接下来,我们可以填写zabbix server的详细信息,包括IP地址,端口号,以及server名称等,填写完成后点击下一步

  在配置之前,请确定概要信息无误,点击下一步。这里可能会有无法创建文件的问题,无所谓,直接手动下载迁移到其指定的位置即可

  Zabbix将提示初始化完成,点击“Finish”即可进入登录界面

  Zabbix Web默认管理员用户为Admin,密码为zabbix。输入用户名密码即可登录Zabbix Web

  进入界面

  这里出现了问题,就是服务器运行中显示为不,进行排错,首先查看zabbix日志

1
tail -100 /var/log/zabbix/zabbix_server.log

  发现日志链接不上,可以知道是/var/lib/mysql/mysql.sock不存在,首先查找一下

1
find / -name mysql.sock

  发现是在/tmp/下,这里使用软连接进行尝试

1
2
3
mkdir /var/lib/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
/etc/rc.d/init.d/mysqld restart

  再次重启zabbix-server服务

  搞定!但是为了更加安全,我们不应该使用管理员的默认密码,所以先修改管理员密码

5.Zabbix菜单了解

  zabbix的使用一般就围绕着web界面进行展开,首先了解下zabbix的菜单

  • 管理菜单

  一般用于管理zabbix自身以及zabbix相关的设置,用于管理Zabbix的用户、权限、日志、报告等等。可以在这里添加、编辑或删除用户、设置权限、查看日志、生成报告等等

  • 配置菜单

  一般用于配置监控相关设置,用于管理Zabbix的各种配置信息,包括主机、模板、动作、媒介类型等等。

  • 报表菜单

  为管理员生成一段时间内的监控统计信息,用于显示各种监控数据的概览信息,包括主机状态、网络流量、CPU使用率等等

  • 资产记录菜单

  管理员可以查看被管控的主机有哪些,以及相关的资产信息

  • 检测菜单

  一般用于查看被监控的相关数据


Zabbix(一)
https://one-null-pointer.github.io/2023/06/09/Linux运维——Zabbix/
Author
liaoyue
Posted on
June 9, 2023
传送口