zabbix简介
- zabbix是一个企业级别的分布式开源监控解决方案,能够监控各种网络参数以及服务器健康性和完整性的软件。分布式指的是通过网络连接的多个组件,通过交换信息协作而形成的系统。
- zabbix使用灵活的通知机制,允许用户为几乎任何事配置基于邮件的告警,这样可以快速反馈服务器的问题。
- 基于已储存的数据,zabbix提供了出色的报告和数据可视化功能。
- zabbix通过C/S模式采集监控数据
- zabbix通过B/S模式实现Web管理
- 官方网站:www.zabbix.com
- zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server通过SNMP,zabbix agent,ping,端口监控等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在linux,Ubuntu,Open BSD,OS X,AIX等平台上 - zabbix agent需要安装在被监控的目标服务器上,他主要完成对硬件信息与操作系统有关的内存,CPU等信息的收集。
- zabbix server可以单独监控远程服务器的服务器的状态;同时也可以与zabbix agent配合,可以轮询zabbix agent主动接收监视数据,同时还可被动接收zabbix agent发送的数据。另外zabbix server还支持SNMP(v1,v2),可以与SNMP软件如net-snmp等配合使用。
2. zabbix的主要功能:
- CPU负荷
- 内存使用
- 磁盘使用
- 网络状况
- 端口监视
- 日志监视
3. 监控指标
- 系统监控:包括内存、CUP、硬盘空间
- 网络监控:监控范围网卡、设备(交换机、路由器等)
- 业务监控:监控范围进程、端口号、日志信息
- 硬件监控:需要借助工具IPMI(传感器)。来监控主机的数量与温度
4. zabbix配置文件
- 服务器端配置文件(/usr/local/etc/zabbix_server.conf)
- 客户端配置文件(/usr/local/etc/zabbix_agentd.conf)
- zabbix代理配置文件(/usr/local/etc/zabbix_proxy.conf)
5. 服务器端配置文件zabbix_server.conf常用配置参数:
参数 | 作用 |
---|---|
LogFile | 设置服务端日志文件存放路径 |
ListenIP | 设置服务端监听IP |
ListenPort | 设置服务端监听的端口号 |
PidFile | 设置服务端进程号文件存放路径 |
DBHost | 指定zabbix的数据库服务器IP |
DBName | 指定zabbix使用的数据库库名 |
DBUser | 指定zabbix数据库登录用户 |
DBPassword | 指定zabbix数据库登录密码 |
DBPort | 指定zabbix数据库端口号 |
User | 设置zabbix以什么用户身份运行 |
AlertScriptsPath | 设置告警脚本存放路径 |
ExternalScripts | 外部脚本存放路径 |
客户端配置文件zabbix_agentd.conf常用配置参数
参数 | 作用
Server | 指定zabbix服务器的IP或域名
ServerActive | 指定zabbix服务器的IP或域名
Hostname | 只当本机的主机名1,此项必须与web界面配置项一致
UnsafeUserParameters | 是否用自定义监控i项,可选值为{1 | 0}
UserParameter | 指定自定义监控脚本呢参数
LogFile | 设置客户端日志文件存放路径
6. 部署zabbix
因为zabbix使用php语言开发的,所以必须先部署lamp架构,使其能够支持运行php网页。
这里我们先安装lamp架构,这里只写步骤,若想知道步骤代表的意思请看之前的文章。
先安装apache
[root@node4 ~]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
[root@node4 ]#curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
[root@node4 ]#yum -y install epel-release wget make openssl openssl-devel pcre pcre-devel gcc gcc-c++ zlib-devel expat-devel zlib expat
安装开发工具包
[root@node4 ]#yum groups mark install 'Development Tools' -y
下载apr、apr-util、httpd
[root@node4 src]#wget -P /usr/src/ https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-1.7.0.tar.gz
[root@node4 src]#wget -P /usr/src/ https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-util-1.6.1.tar.gz
[root@node4 src]#wget -P /usr/src/ https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.4.49.tar.gz
创建用户和组
[root@node4 src]#useradd -r -M -s /sbin/nologin apache
解压压缩包
[root@node4 src]#tar xf apr-1.7.0.tar.gz
[root@node4 src]#tar xf apr-util-1.6.1.tar.gz
[root@node4 src]#tar xf httpd-2.4.49.tar.gz
编译安装
[root@node4 apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@node4 apr-1.7.0]# make && make install
[root@node4 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@node4 apr-util-1.6.1]# make && make install
[root@node4 httpd-2.4.49]#
./configure --prefix=/usr/local/apache \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/ \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork
[root@node4 httpd-2.4.49]# make && make install
配置环境变量
[root@node4 ~]# echo 'export PATH=/sur/local/apache/bin:$PATH' > /etc/profile.d/httpd.sh
[root@node4 ~]# source /etc/profile.d/httpd.sh
创建软连接
[root@node4 ~]# ln -s /usr/local/apache/include/ /usr/include/httpd
[root@node4 ~]# vim /etc/man_db.conf
MANDATORY_MANPATH /usr/local/share/man
MANDATORY_MANPATH /usr/local/apache/man
[root@node4 ~]# vim /usr/local/apache/conf/httpd.conf
ServerName www.example.com:80
配置系统服务来管理apache
[root@node4 system]# cp /usr/lib/systemd/system/sshd.service httpd.service
[root@node4 ~]# vim /usr/lib/systemd/system/httpd.service
[Unit]
Description=httpd server daemon
Documentation=man:httpd(8)
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/apache/bin/apachectl start
ExecStop=/usr/local/apache/bin/apachectl stop
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
[root@node4 ~]# systemctl daemon-reload
[root@node4 ~]# systemctl enable --now httpd.service
安装MySQL
可以去官网下载:https://downloads.mysql.com/archives/community/
解压源码包
[root@node4 src]# tar xf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
安装依赖包
[root@node4 ]#yum -y install gcc gcc-c++ make zlib zlib-devel pcre pcre-devel openssl openssl-devel ncurses-compat-libs perl ncurses-devel cmake
创建用户和组
[root@node4 src]# useradd -r -M -s /sbin/nologin mysql
创建软连接
[root@node4 local]# ln -s mysql-5.7.34-linux-glibc2.12-x86_64/ mysql
创建MySQL属主和属组
[root@node4 local]# chown -R mysql.mysql mysql
设置环境变量
[root@node4 local]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@node4 local]# source /etc/profile.d/mysql.sh
[root@node4 local]# vim /etc/man_db.conf
MANDATORY_MANPATH /usr/local/mysql/man
创建软连接
[root@node4 local]# ln -s /usr/local/mysql/include/ /usr/include/mysql
配置MySQL库文件
[root@node4 ~]# vim /etc/ld.so.conf.d/mysql.conf
[root@node4 ~]# cat /etc/ld.so.conf.d/mysql.conf
/usr/local/mysql/bin
[root@node4 ~]# ldconfig
创建MySQL的数据库目录,并修改属主和属组
[root@node4 ~]# mkdir -p /opt/data
[root@node4 ~]# chown -R mysql.mysql /opt/data/
初始化数据库
[root@node4 ~]# mysqld --initialize--insecure --user mysql --datadir /opt/data/
生成mysql配置文件
[root@node4 ~]# cat > /etc/my.cnf < [mysqld]
> basedir = /usr/local/mysql
> datadir = /opt/data
> socket = /tmp/mysql.sock
> port = 3306
> pid-file = /opt/data/mysql.pid
> user = mysql
> skip-name-resolve
> EOF
配置服务启动脚本
[root@node4 ~]# vim /usr/local/mysql/support-files/mysql.server
basedir=/usr/local/mysql
datadir=/opt/data
配置系统服务来管理mysql
[root@node4 ~]# cp /usr/lib/systemd/system/httpd.service /usr/lib/systemd/system/mysqld.service
[root@node4 ~]# vim /usr/lib/systemd/system/mysqld.service
[root@node4 ~]# cat /usr/lib/systemd/system/mysqld.service
[Unit]
Description=mysql server daemon
Documentation=man:httpd(1)
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
[root@node4 data]# systemctl daemon-reload
[root@node4 data]# systemctl enable --now mysqld
[root@node4 data]# mysql -uroot -e "set password=password('123');"
安装php
可以去官网下载php源码包:https://www.php.net/downloads
下载依赖包
[root@node4 ~]# yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libicu-devel libjpeg libjpeg-devel libpng libpng-devel openldap-devel pcre-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel mhash mhash-devel php-mysqlnd libsqlite3x-devel libzip-devel http://mirror.centos.org/centos/8-stream/PowerTools/x86_64/os/Packages/oniguruma-devel-6.8.2-2.el8.x86_64.rpm
解压源码包并编译
[root@node4 src]# tar xf php-7.4.24.tar.xz -C /usr/local/
[root@node4 local]# cd php-7.4.24/
[root@node4 php-7.4.24]# ./configure --prefix=/usr/local/php7 --with-config-file-path=/etc --enable-fpm --disable-debug --disable-rpath --enable-shared --enable-soap --with-openssl --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --enable-exif --enable-ftp --enable-gd --with-jpeg --with-zlib-dir --with-freetype --with-gettext --enable-mbstring --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-readline --enable-shmop --enable-simplexml --enable-sockets --with-zip --enable-mysqlnd-compression-support --with-pear --enable-pcntl --enable-posix
配置环境变量
[root@node4 php-7.4.24]# echo 'export PATH=/usr/local/php7/bin:$PATH' > /etc/profile.d/php.sh
[root@node4 php-7.4.24]# source /etc/profile.d/php.sh
配置php-fpm配置文件
[root@node4 php-7.4.24]# cp php.ini-production /etc/php.ini
cp:是否覆盖'/etc/php.ini'? y
[root@node4 php-7.4.24]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@node4 php-7.4.24]# chmod +x /etc/init.d/php-fpm
[root@node4 etc]# cp php-fpm.conf.default php-fpm.conf
[root@node4 etc]# pwd
/usr/local/php7/etc
[root@node4 etc]# cd php-fpm.d/
[root@node4 php-fpm.d]# cp www.conf.default www.conf
[root@node4 php-fpm.d]# pwd
/usr/local/php7/etc/php-fpm.d
配置系统服务来管理PHP
[root@node4 php-fpm.d]# cp /usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/php-fpm.service
[root@node4 php-fpm.d]# vim /usr/lib/systemd/system/php-fpm.service
[root@node4 php-fpm.d]# cat /usr/lib/systemd/system/php-fpm.service
[Unit]
Description=php server daemon
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/php-fpm start
ExecStop= /etc/init.d/php-fpm stop
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
重新加载配置文件并设置开机自启
[root@node4 php-fpm.d]# systemctl daemon-reload
[root@node4 php-fpm.d]# systemctl enable --now php-fpm.service
配置apache
启动代理模块
[root@node4 ~]# vim /usr/local/apache/conf/httpd.conf
120 LoadModule proxy_module modules/mod_proxy.so
121 #LoadModule proxy_connect_module modules/mod_proxy_connect.so
122 #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
123 #LoadModule proxy_http_module modules/mod_proxy_http.so
124 LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
创建虚拟主机生成PHP页面
[root@node4 htdocs]# mkdir PHP
[root@node4 htdocs]# pwd
/usr/local/apache/htdocs
[root@node4 htdocs]# cd PHP/
[root@node4 PHP]# vim index.php
[root@node4 PHP]# cat index.php
[root@node4 PHP]# chown -R apache.apache /usr/local/apache/htdocs/
修改配置文件
[root@node4 conf]# vim httpd.conf
[root@node4 conf]# pwd
/usr/local/apache/conf
DocumentRoot "/usr/local/apache/htdocs/PHP"
ServerName www.PHP.com
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/PHP/$1
Options none
AllowOverride none
Require all granted
399 AddType application/x-httpd-php .php
400 AddType application/x-httpd-php-source .phps
261 DirectoryIndex index.html index.php
[root@node4 conf]# systemctl restart httpd.service
看到下面的界面说明成功了
安装zabbix
源码包到官网下载:www.zabbix.com
[root@node4 local]# tar xf zabbix-5.4.4.tar.gz -C /usr/local/
安装zabbix依赖包
[root@node4 local]# yum -y install net-snmp-devel libevent-devel
创建zabbix用户
[root@node4 local]# useradd -r -M -s /sbin/nologin zabbix
配置zabbix数据库
[root@node4 ~]# mysql -uroot -p123
mysql> create database zabbix character set utf8 collate utf8_bin; //创建zabbix数据库并设置字符集
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix123!'; //授权数据库用户并设置用户密码
mysql> flush privileges; //刷新授权
[root@node4 mysql]# pwd
/usr/local/zabbix-5.4.4/database/mysql
[root@node4 mysql]# mysql -uzabbix -pzabbix123! zabbix < schema.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@node4 mysql]# mysql -uzabbix -pzabbix123! zabbix < images.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@node4 mysql]# mysql -uzabbix -pzabbix123! zabbix < data.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
编译安装zabbix
[root@node4 zabbix-5.4.4]# ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
[root@node4 zabbix-5.4.4]# make install
配置zabbix服务端
[root@node4 etc]# pwd
/usr/local/etc
[root@node4 etc]# vim zabbix_server.conf
123 DBPassword=zabbix123! //设置zabbix数据库连接密码
启动zabbix服务端
如果遇到启动zabbix服务报错
zabbix_server: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
意思是:加载共享库时出错:libmysqlclient.so.20:无法打开共享对象文件:没有此类文件或目录
所以解决的方法是:
find / -name "libmysqlclient.so.20"
他会告诉你libmysqlclient.so.20文件的地方
在下面的文件里面添加/usr/local/mysql/lib
[root@node4 etc]# vim /etc/ld.so.conf
[root@node4 etc]# ldconfig //重现加载配置文件
[root@node4 etc]# zabbix_server
[root@node4 ~]# zabbix_agentd
[root@node4 etc]# ss -anlt
最后出现10051、10050端口号就成功了
zabbix安装web界面前配置
修改/etc/php.ini的配置并重启php-fpm
可以使用此方法:
[root@node4 ~]# vim /etc/php.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Shanghai
也可以使用下面的方法:
[root@node4 ~]# sed -ri 's/(post_max_size =).*/\1 16M/g' /etc/php.ini
[root@node4 ~]# sed -ri 's/(max_execution_time =).*/\1 300/g' /etc/php.ini
[root@node4 ~]# sed -ri 's/(max_input_time =).*/\1 300/g' /etc/php.ini
[root@node4 ~]# sed -i '/;date.timezone/a date.timezone = Asia/Shanghai' /etc/php.ini
[root@node4 ~]# service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done
[root@node4 htdocs]# mkdir zabbix
[root@node4 htdocs]# pwd
/usr/local/apache/htdocs
[root@node4 zabbix-5.4.4]# cp -r /usr/local/zabbix-5.4.4/ui/* /usr/local/apache/htdocs/zabbix/
[root@node4 zabbix-5.4.4]# vim /usr/local/apache/conf/httpd.conf
[root@node4 zabbix-5.4.4]# tail -11 /usr/local/apache/conf/httpd.conf
DocumentRoot "/usr/local/apache/htdocs/zabbix"
ServerName www.zabbix.com
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/zabbix/$1
Options none
AllowOverride none
Require all granted
让zabbix有权限生成配置文件zabbix.conf.php
[root@node4 apache]# chmod 777 /usr/local/apache/htdocs/zabbix/conf
启动php-fpm报错
ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
[root@node4 ~]# pkill php-fpm
[root@node4 ~]# systemctl restart php-fpm.service
就可以启动成功了
生成以下的配置
zabbix监控配置流程
安装zabbix的代理服务器
下载源码包这里我们之前有就不下载了
先创建一个zabbix用户
[root@node3 local]# useradd -r -M -s /sbin/nologin zabbix
将源码包解压到/usr/local目录下
[root@node3 src]# tar xf zabbix-5.4.4.tar.gz -C /usr/local/
下载zabbix所需要的依赖包
[root@node3 local]# yum -y install make gcc gcc-c++ openssl openssl-devel pcre pcre-devel
进入zabbix安装目录进行编译安装
[root@node3 zabbix-5.4.4]# ./configure --enable-agent
[root@node3 zabbix-5.4.4]# make install
修改客户端的配置文件
[root@node3 etc]# pwd
/usr/local/etc
[root@node3 etc]# vim zabbix_agentd.conf
113 Server=192.168.182.140 //这里的IP地址为服务端的IP地址
154 ServerActive=192.168.182.140
165 Hostname=uHOXyzzjkf
这里的Hostname需要唯一,所以这里我们随机生成一组字母,使用下面的命令。
tr -dc A-Za-z < /dev/urandom | head -c 10 | xargs
然后进入前面已经部署好的zabbix服务端的web界面
为了方便我们翻译成中文,先点击配置,然后找到主机点击右上角的创建主机
这里的主机名就是我们在zabbix客户端的配置文件里面写的那个名字
这里的团体是就是英文就是groups组的意思。就是创建一个组的名字
接口这里就是使用什么方式去监控,这里的代理就是我们所安装的agent、网络管理协议就是SNMP协议,JMX是用来监控Java里的jvm。
IPMI是传感器是用来监控硬件的。
这里的知识产权是IP,域名系统是DNS,若有域名那就写域名,若没有,就使用IP地址连接。这里的IP地址填客户端的IP。这些都做好之后就点击添加。
添加完成之后就有了一个新的主机
为了方便管理我们将hostname的名字修改一下。点击刚创建的那个主机名。
这里的主机名是我们的名字,但是下面的可见名称就是我们创建成功之后显示的主机名。但是我们连接时还是使用主机名称进行连接。这里的可见名称根据实际需要进行修改。这里我们就改为web01.最后点击更新。
改完之后发现名称改为了web01。
我们对比可以发现web01的ltems等后面都没有数字,而系统自带的有数字,这是因为我们创建的服务没有监控对象。
下面我们使用模板为其添加一个监控对象。点击我们web01,找到里面的templates模板。
点击链接新模板这一栏里的选择,点击选择之后会出现一个模板的窗口,在里面找到选择,点击选择之后会有一个名为主机组的窗口,然后再里面选择和你操作系统相关的模板,这里我们时Linux系统又因为我们时使用agent来进行监控的所以就选择Linux by zabbix agent,最后点击选择之后再点击更新即可。
更新完成之后就有监控对象了,我们发现这里的ZBX是显示灰色的我们重复刷新几次之后就会变绿了。
如果出现爆红那么就检查以下的几个地方。首先看服务端和客户端的防火墙和selinux是否关闭。再查看服务端的zabbix和agent开启没有,还有客户端的agent是否开启。