zabbix介绍与安装部署

当前参与的项目中使用F5设备对部分服务器进行简要的监控以及使用nacos检查服务的状态,缺乏一个统一的能够完整监控服务器以及服务的运维工具,公司中也有部分同事和项目在研究与使用zabbix,因此在此前提下结合相关资料,研究一下zabbix的架构以及实际的安装部署,并于此记录整个过程,为后续的实际使用做基础,也为后来的读者提供参考借鉴,文中不免疏漏之处,望读者予以指正,不胜感激!

1. zabbix介绍

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。

2. zabbix架构

在这里插入图片描述

2.1 功能组件

Zabbix 由几个主要的功能组件组成,其功能介绍如下所示。

  1. Server
    Zabbix server 是 Zabbix软件的核心组件,agent 向其报告可用性、系统完整性信息和统计信息。server也是存储所有配置信息、统计信息和操作信息的核心存储库。

  2. 数据库
    所有配置信息以及 Zabbix 采集到的数据都被存储在数据库中。

  3. Web 界面
    为了从任何地方和任何平台轻松访问 Zabbix ,我们提供了基于 web 的界面。该界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 运行在同一台物理机器上。

  4. Proxy
    Zabbix proxy 可以代替 Zabbix server采集性能和可用性数据。Zabbix proxy在Zabbix的部署是可选部分;但是proxy的部署可以很好的分担单个Zabbix server的负载。

  5. Agent
    Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。

    扫描二维码关注公众号,回复: 15049375 查看本文章

2.2 监控方式

Zabbix监控方式
1、被动模式
被动检测:相对于agent而言;server向agent请求获取配置的各监控项相关的数据,agent接收请求、获取数据并响应给server;

2、主动模式
主动检测:相对于agent而言;agent向server请求与自己相关监控项配置,主动地将server配置的监控项相关的数据发送给server;
主动监控能极大节约监控server 的资源。

3. zabbix安装部署

3.1 安装环境

Linux版本:CentOS Linux release 7.2.1511 (Core)
zabbix版本:zabbix-5.0.17.tar.gz
php版本:php-7.4.23.tar.gz
mysql版本:mysql-8.0.26
zabbix版本要求参考:https://www.zabbix.com/documentation/5.0/zh/manual/installation/requirements

3.2 安装过程

3.2.1 安装nginx

  1. 参考 nginx架构原理简介以及部署配置. 此处不再详细介绍
  2. 编译时注意增加以下模块
  --with-http_stub_status_module:支持nginx状态查询
  --with-http_ssl_module:支持https
  --with-http_v2_module:支持google的spdy,想了解请百度spdy,这个必须有ssl的支持,nginx-1.19以后使用v2
  --with-pcre:为了支持rewrite重写功能,必须制定pcre
  1. 配置文件调整
location ~ \.php$ {
        # root           html;
        root   /usr/local/nginx/html/zabbix;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        # fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
}

注意:需要将zabbix文件下的js文件夹和assets文件夹复制到html下,否则在浏览器访问会出现js和部分其他静态文件无法获取的问题。

3.2.2 安装PHP

1.安装依赖
yum install gcc make gcc-c++ glibc-headers gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel sqlite-devel oniguruma oniguruma-devel openssl openssl-devel libwebp-devel libicu-devel openldap  openldap-devel epel-release oniguruma oniguruma-devel net-snmp net-snmp-devel  libxslt-devel libzip libzip-devel -y

2.安装php

wget https://www.php.net/distributions/php-7.4.23.tar.gz

 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/conf.d --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir=/usr/local/php --with-freetype --with-jpeg  --with-zlib  --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-intl --enable-ftp --enable-gd --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --with-zip  --enable-soap --with-gettext --enable-opcache --with-xsl --with-webp --with-xpm --with-snmp --with-ldap

make && make install

php启动需要创建nginx用户:
useradd nginx

php启动命令:
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf

3.配置php-fpm
cp php.ini-production /usr/local/php/etc/php.ini

修改php.ini文件,将对应参数做如下修改。
max_execution_time = 300
max_input_time = 300
post_max_size = 16M
date.timezone =Asia/Shanghai

cd sapi/fpm && cp php-fpm.conf /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

测试php-fpm配置
/usr/local/php/sbin/php-fpm -t
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t
sudo chown -R nginx:nginx /usr/local/php/var

4.php-fpm开机自启动
vim /usr/lib/systemd/system/php-fpm.service
***********************************************
[Unit]
Description=PHP-FPM
After=network.target syslog.target2
 
[Install]
WantedBy=default.target
Alias=php-fpm.service

[Service]
User=nginx
Group=nginx
#User and Group can be set in the php-fpm configure file
Type=forking
#PIDFile=/usr/local/php/var/run/php-fpm.pid
#不需要在这里指定pid文件位置,需要到php-fpm.conf文件中指定
ExecStart=/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf
ExecStop=/bin/kill -INT $MAINPID
ExecReload=/bin/kill -USR2 $MAINPID
****************************************************************************

5.php-fpm相关系统命令
cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
systemctl daemon-reload
Systemctl enable php-fpm.service
Systemctl start php-fpm.service

3.2.3 安装MySQL

  1. 参考 MySQL相关介绍以及MySQL8.0安装部署. 此处不再详细介绍
  2. 初始化数据:
    在mysql数据库服务器端创建zabbix数据库、数据库账户及到导入zabbix sql语句,操作命令如下
1. 创建用户并指定密码:
create user 'zabbix'@'%' identified by 'zabbix123456.';
alter user 'zabbix'@'%' identified by 'zabbix123456.';

2. 修改密码plugin
alter user 'zabbix'@'%' identified with mysql_native_password by 'zabbix123456.'; 

3. 创建数据库
create database zabbix character set utf8 collate utf8_bin;

4. zabbix用户授权
grant all privileges on zabbix.* to zabbix@'%' ;
grant all privileges on *.* to 'zabbix'@'%' with grant option;
flush privileges;

5. 导入数据,sql脚本来源于zabbix安装包下database
use zabbix;
source schema.sql;     
source images.sql;
source data.sql;
source double.sql;
quit

3.2.4 源码安装zabbix

  1. 下载安装包
wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.17.tar.gz
tar -zvxf zabbix-5.0.17.tar.gz
  1. 安装依赖包:
yum install unixODBC-devel ncurses-devel OpenIPMI libevent java-1.8.0-openjdk-devel openldap-devel gnutls-devel mysql-devel libevent-devel -y
  1. 编译
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
make install
注意:编译命令中,同时使用--enable-server 与 --enable-agent,
表示zabbix server和zabbix agent同时编译出来,此章节主要介绍zabbix server的安装过程,有关zabbix agent的安装配置放在后面的章节介绍。
  1. 创建用户
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
  1. 创建日志目录
cd /usr/local/zabbix
mkdir logs
chown -R zabbix:zabbix /app/zabbix
systemctl restart nginx.service
chown -R zabbix:zabbix /usr/local/zabbix
  1. 修改配置文件
    修改/usr/local/zabbix/etc/zabbix_server.conf文件,将对应参数修改如下
LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/usr/local/zabbix/logs/zabbix_server.pid
DBHost=192.168.65.162
DBPort=3306
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix123456.
  1. 配置zabbix服务开机自启动
    创建/etc/systemd/system/zabbix-server.service文件,并输入如下内容
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
 
[Service]
Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_server.conf"
EnvironmentFile=-/usr/local/zabbix/sbin/zabbix_server
Type=forking
Restart=on-failure
PIDFile=/usr/local/zabbix/logs/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/local/zabbix/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s

[Install]
WantedBy=multi-user.target
  1. 重载系统服务
systemctl daemon-reload
  1. 设置开机启动
systemctl enable zabbix-server.service
systemctl start zabbix-server.service
systemctl status zabbix-server.service

3.2.5 配置web页面

浏览器访问 http://192.168.65.163/setup.php
在这里插入图片描述
下一步
在这里插入图片描述
下一步
在这里插入图片描述
下一步,name为主机名,可通过hostname命令查询
在这里插入图片描述
下一步
在这里插入图片描述
下一步
在这里插入图片描述
错误提示:Unable to create the configuration file.
执行命令

cd /usr/local/nginx/html/zabbix/conf
cp zabbix.conf.php.example zabbix.conf.php
vi  zabbix.conf.php
调整以下配置项
**********************************************************
$DB['TYPE']				= 'MYSQL';
$DB['SERVER']			= '192.168.65.162';
$DB['PORT']				= '3306';
$DB['DATABASE']			= 'zabbix';
$DB['USER']				= 'zabbix';
$DB['PASSWORD']			= 'zabbix123456.';

$ZBX_SERVER				= '192.168.65.163';
$ZBX_SERVER_PORT		= '10051';
$ZBX_SERVER_NAME		= 'localhost.localdomain';
*********************************************************************

刷新界面
在这里插入图片描述
完成
在这里插入图片描述
Web页面配置完成,初始账户密码为 Admin/zabbix
在这里插入图片描述

3.2.6 安装zabbix proxy

  1. 创建用户
groupadd -g 5007 zabbix
useradd -u 5007 -g zabbix -G zabbix zabbix
  1. 创建proxy 数据库,proxy库只需要执行schema.sql
create database zabbixproxy01 character set utf8 collate utf8_bin;
grant all privileges on *.* to 'zabbix'@'%' with grant option;
flush privileges;

use zabbixproxy01;
source schema.sql;  
quit
  1. 安装依赖包
yum install gcc mysql-devel net-snmp-devel libssh2-devel libxml2-devel OpenIPMI-devel libevent-devel gnutls-devel java-1.8.0-openjdk-devel openldap-devel libcurl-devel unixODBC-devel
  1. 编译安装proxy
./configure --prefix=/usr/local/zabbix --enable-proxy  --enable-ipv6  --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc --with-ssh2 --with-zlib --with-libpcre --enable-java --with-ldap --with-gnutls

make && make install
mkdir /usr/local/zabbix/logs
chown -R zabbix:zabbix /usr/local/zabbix
  1. 调整配置文件
Server=10.0.0.10           #<===指定zabbix server的ip地址或主机名
Hostname=zabbix-proxy      #<===定义监控代理的主机名,需和zabbix server前端配置时指定的节点名相同
LogFile=/usr/local/zabbix/logs/zabbix_proxy.log       #<===指定日志文件的位置
PidFile=/usr/local/zabbix/logs/zabbix_proxy.pid       #<===pid文件的位置
DBHost=192.168.65.162
DBPort=3306 
DBName=zabbixproxy01          #<===数据库名
DBUser=zabbix             #<===连接数据库的用户
DBPassword=zabbix123456.         #<===连接数据库用户的密码
ConfigFrequency=60         #<===zabbix proxy从zabbix server取得配置数据的频率
DataSenderFrequency=60       #<===zabbix proxy发送监控到的数据给zabbix server的频率
  1. 配置开机自启动
1、创建/etc/systemd/system/zabbix-proxy.service文件,并输入如下内容:
***************************************************************
[Unit]
Description=Zabbix Proxy
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_proxy.conf"
EnvironmentFile=-/usr/local/zabbix/sbin/zabbix_proxy
Type=forking
Restart=on-failure
PIDFile=/usr/local/zabbix/logs/zabbix_proxy.pid
KillMode=control-group
ExecStart=/usr/local/zabbix/sbin/zabbix_proxy -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
 
[Install]
WantedBy=multi-user.target
*****************************************************************
2、重载系统服务:
systemctl daemon-reload

3、设置开机启动:
systemctl enable zabbix-proxy.service

3.2.7 安装agent

  1. 创建用户
groupadd -g 5007 zabbix
useradd -u 5007 -g zabbix -G zabbix zabbix
  1. 安装依赖,编译安装
yum install gcc pcre-devel -y
./configure --prefix=/usr/local/zabbix-agent --enable-agent
make && make install

mkdir /usr/local/zabbix-agent/logs
chown -R zabix:zabix /usr/local/zabbix-agent/
  1. 调整配置文件zabbix_agentd.conf
vi /usr/local/zabbix-agent/etc/zabbix_agentd.conf

Server=192.168.65.163        # zabbix-server或者zabbix-proxy的ip
ServerActive=192.168.65.163     # zabbix-server或者zabbix-proxy的ip
Hostname=mysql-agent        # 主机名
AllowKey=system.run[*]        # 允许zabbix使用system.run监控项执行命令
PidFile=/usr/local/zabbix-agent/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix-agent/logs/zabbix_agentd.log

主机名与系统hostname保持一致,可通过命令修改
hostname
hostnamectl set-hostname mysql-agent
  1. 配置开机自启动
1、创建/etc/systemd/system/zabbix-agent.service文件,并输入如下内容:
***************************************************************
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/usr/local/zabbix-agent/etc/zabbix_agentd.conf"
EnvironmentFile=-/usr/local/zabbix-agent/sbin/zabbix_agentd
Type=forking
Restart=on-failure
PIDFile=/usr/local/zabbix-agent/logs/zabbix_agentd.pid
KillMode=control-group
ExecStart=-/usr/local/zabbix-agent/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
 
[Install]
WantedBy=multi-user.target
*****************************************************************
2、重载系统服务:
systemctl daemon-reload

3、设置开机启动:
systemctl enable zabbix-agent.service
systemctl start zabbix-agent.service
  1. Web配置agent
    创建主机: Configuration – Hosts – Create host
    在这里插入图片描述
    注:查看centso主机dns命令 cat /etc/resolv.conf
    关联模板
    在这里插入图片描述
    查看Hosts情况: Monitoring – Hosts
    在这里插入图片描述
    zabbix安装部署后,后续的具体使用方法等,待后续实际实践应用后再继续整理汇总。

4. 参考资料

[1] https://www.zabbix.com/
[2] https://www.cnblogs.com/huss2016/p/14717512.html
[3] https://blog.csdn.net/weixin_30191947/article/details/115948002
[4] https://blog.csdn.net/sqlquan/article/details/101123205
[5] https://www.cnblogs.com/kaishirenshi/p/9879249.html
[6] https://www.cnblogs.com/chenppp/p/13430932.html

猜你喜欢

转载自blog.csdn.net/shy871/article/details/120669226