源码安装zabbix

1. 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外部脚本存放路径

6. 客户端配置文件

zabbix_agentd.conf常用配置参数:
参数 | 作用
Server | 指定zabbix服务器的IP或域名
ServerActive | 指定zabbix服务器的IP或域名
Hostname | 只当本机的主机名1,此项必须与web界面配置项一致
UnsafeUserParameters | 是否用自定义监控i项,可选值为{1 | 0}
UserParameter | 指定自定义监控脚本呢参数
LogFile | 设置客户端日志文件存放路径

7. 部署zabbix

因为zabbix使用php语言开发的,所以必须先部署lamp架构,使其能够支持运行php网页。
这里我们先安装lamp架构,这里只写步骤,若想知道步骤代表的意思请看之前的文章。

8. 先安装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

8.1 安装开发工具包

[root@node4 ]#yum groups mark install 'Development Tools' -y

8.2 下载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

8.3 创建用户和组

[root@node4 src]#useradd -r -M -s /sbin/nologin apache

8.4 解压压缩包

[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

8.5 编译安装

[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

8.6 配置环境变量

[root@node4 ~]# echo 'export PATH=/sur/local/apache/bin:$PATH' > /etc/profile.d/httpd.sh
[root@node4 ~]# source /etc/profile.d/httpd.sh

8.7 创建软连接

[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

8.8 配置系统服务来管理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 

9. 安装MySQL

MySQL官网

9.1 解压源码包

[root@node4 src]# tar xf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

9.2 安装依赖包

[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

9.3 创建用户和组

[root@node4 src]# useradd -r -M -s /sbin/nologin mysql

9.4 创建软连接

[root@node4 local]# ln -s mysql-5.7.34-linux-glibc2.12-x86_64/ mysql

9.5 创建MySQL属主和属组

[root@node4 local]# chown -R mysql.mysql mysql

9.6 设置环境变量

[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

9.7 创建软连接

[root@node4 local]# ln -s /usr/local/mysql/include/ /usr/include/mysql

9.8 配置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

9.9 创建MySQL的数据库目录,并修改属主和属组

[root@node4 ~]# mkdir -p /opt/data
[root@node4 ~]# chown -R mysql.mysql /opt/data/

9.10 初始化数据库

[root@node4 ~]# mysqld --initialize--insecure --user mysql --datadir /opt/data/

9.11 生成mysql配置文件

[root@node4 ~]# cat > /etc/my.cnf <<EOF
> [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

9.12 配置服务启动脚本

[root@node4 ~]# vim /usr/local/mysql/support-files/mysql.server
basedir=/usr/local/mysql
datadir=/opt/data

9.13 配置系统服务来管理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');"

10. 安装php

官网下载php源码包

10.1 下载依赖包

[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

10.2 解压源码包并编译

[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

10.3 配置环境变量

[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

10.4 配置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

10.5 配置系统服务来管理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

10.6 重新加载配置文件并设置开机自启

[root@node4 php-fpm.d]# systemctl daemon-reload 
[root@node4 php-fpm.d]# systemctl enable --now php-fpm.service

10.7 配置apache

10.7.1 启动代理模块

[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

10.7.2 创建虚拟主机生成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 
<?php
    phpinfo();
?>
[root@node4 PHP]# chown -R apache.apache /usr/local/apache/htdocs/

10.7.3 修改配置文件

[root@node4 conf]# vim httpd.conf 
[root@node4 conf]# pwd
/usr/local/apache/conf
<VirtualHost *:80>
    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
    <Directory "/usr/local/apache/htdocs/PHP">
        Options none
        AllowOverride none
        Require all granted
    </Directory>
</VirtualHost>
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

看到下面的界面说明成功了

11. 安装zabbix

源码包到官网下载

[root@node4 local]# tar xf zabbix-5.4.4.tar.gz -C /usr/local/

11.1安装zabbix依赖包

[root@node4 local]# yum -y install net-snmp-devel libevent-devel

11.2 创建zabbix用户

[root@node4 local]# useradd -r -M -s /sbin/nologin zabbix

11.3 配置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.

11.4 编译安装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

11.5 配置zabbix服务端

[root@node4 etc]# pwd
/usr/local/etc
[root@node4 etc]# vim zabbix_server.conf
123  DBPassword=zabbix123!  //设置zabbix数据库连接密码

11.6 启动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端口号就成功了

11.7 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
<VirtualHost *:80>
    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
    <Directory "/usr/local/apache/htdocs/zabbix">
        Options none
        AllowOverride none
        Require all granted
    </Directory>
</VirtualHost>
让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 
就可以启动成功了

生成以下的配置

12. zabbix监控配置流程

12.1 安装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是否开启。

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值