基于zabbix-proxy的分布式监控
1.1 分布式监控的作用
1)分担 server 的集中式压力;
2)解决多机房之间的网络延时问题。
1.2 数据流向
agent --> proxy --> server
1.3 构成组件
zabbix-server:整个监控体系中最核心的组件,它负责接收客户端发送的报告信息,所有配置、 统计数据及操作数据都由它组织。
Database:所有配置信息和zabbix收集到的数据都存储在数据库中。
zabbix-proxy:用于分布式系统中,可以代理zabbix-server的功能,减轻server的压力。
zabbix-agent:客户端软件,装在被监控主机上,用于采集监控数据,并把采集到的的数据发送给proxy或者server。
web界面:web界面可以让用户随时随地都能够轻松的访问到zabbix,是zabbix-server的一部分,通常跟server运行在同一台物理机上。
二、部署步骤
2.1、进入源仓库设置一个nginx的源
cd /etc/yum.repos.d/
vim nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/
r
e
l
e
a
s
e
v
e
r
/
releasever/
releasever/basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
安装nginx
yum install -y nginx
安装PHP
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install -y epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache php72w-ldap php72w-bcmath
修改配置文件
vim /etc/nginx/conf.d/zbx.conf
server {
listen 80;
server_name zbx.dznb.com;
location / {
root /var/www/zbx;
index index.php;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/zabbix$fastcgi_script_name;
include fastcgi_params;
}
}
vim /etc/php-fpm.d/www.conf
vim /etc/php.ini
max_execution_time = 300 # 368行
max_input_time = 600 # 378行
post_max_size = 80M # 656行
date.timezone = Asia/Shanghai # 877行
测试
mkdir -p /var/www/zabbix
vim /var/www/zabbix/index.php
systemctl enable --now nginx php-fpm
3、zabbix-DB部署数据库
cat > /etc/yum.repos.d/mariadb.repo << EOF
[mariadb]
name = MariaDB
baseurl = http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
enabled=1
EOF
yum install -y mariadb-server mariadb
systemctl enable --now mariadb
初始化数据库
mysql_secure_installation
分别输入 回车 -> n -> Y (设置root密码,如abc123) -> 后面一路 Y
mysql -u root -pabc123
创建数据库并指定字符集
CREATE DATABASE zabbix character set utf8 collate utf8_bin;
创建 zabbix 数据库用户并授权
GRANT all ON zabbix.* TO ‘zabbix’@‘localhost’ IDENTIFIED BY ‘zabbix’;
GRANT all ON zabbix.* TO ‘zabbix’@‘%’ IDENTIFIED BY ‘zabbix’;
flush privileges;
向数据库导入 zabbix 数据
上传源码包 zabbix-6.0.*.tar.gz 到 /opt 目录
cd /opt
tar xf zabbix-6.0.13.tar.gz
cd /opt/zabbix-6.0.13/database/mysql
mysql -uroot -pabc123 zabbix < schema.sql
mysql -uroot -pabc123 zabbix < images.sql
mysql -uroot -pabc123 zabbix < data.sql
mysql -uroot -pabc123 zabbix < double.sql
mysql -uroot -pabc123 zabbix < history_pk_prepare.sql
4、zabbix-server编译安装
yum install -y mysql-devel pcre-devel openssl-devel zlib-devel libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel openldap-devel libcurl-devel fping gcc gcc-c++ make
4.1创建用户
useradd -s /sbin/nologin -M Zabbix
cd /opt/zabbix-6.0.13/
./configure
–sysconfdir=/etc/zabbix/
–enable-server
–with-mysql
–with-net-snmp
–with-libxml2
–with-ssh2
–with-openipmi
–with-zlib
–with-libpthread
–with-libevent
–with-openssl
–with-ldap
–with-libcurl
–with-libpcre
4.3检查版本
zabbix_server –version
4.4、修改 zabbix server 配置文件,修改数据库的密码
vim /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix_server.log # 38行,指定 zabbix 日志路径
DBPassword=zabbix # 123行,指定 zabbix 数据库的密码
准备 systemctl 服务管理文件
cat > /usr/lib/systemd/system/zabbix-server.service << EOF
[Unit]
Description=Zabbix Server with MySQL DB
After=syslog.target network.target mysqld.service
[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix
[Install]
WantedBy=multi-user.target
EOF
创建一个日志文件
touch /var/log/zabbix_server.log
chown Zabbix:zabbix /var/log/zabbix_server.log
systemctl restart zabbix-server.service
6、部署 Web 前端,进行访问
将这个目录里的文件进行复制到之前创建的目录文件中
cp -r /opt/zabbix-6.0.27/ui/* /var/www/zab
给这个目录文件加上数组和属主为nginx
chown -R nginx.nginx /var/www/zab/
5.Zabbix-proxy操作
#关闭防火墙和selinux
systemctl disable --now firewalld
setenforce 0
设置 zabbix 的下载源,安装 zabbix-proxy
rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
sed -i ‘s#https://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#’ /etc/yum.repos.d/zabbix.repo
yum install -y zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy zabbix-get
部署数据库并将zabbix相关文件导入
#配置 Mariadb yum源
cat > /etc/yum.repos.d/mariadb.repo << EOF
[mariadb]
name = MariaDB
baseurl = http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
enabled=1
EOF
#安装mariaDB;proxy需要一个独立的数据库,请勿和server同库
yum install -y mariadb-server mariadb
#启动
systemctl enable --now mariadb
#初始化数据库
mysql_secure_installation
分别输入 回车 -> n -> Y (设置root密码,如abc123) -> 后面一路 Y
#登录数据库
mysql -u root -pabc123
#创建数据库并指定字符集
create database zabbix_proxy character set utf8 collate utf8_bin;
#创建 zabbix 数据库用户并授权
grant all on zabbix_proxy.* to ‘zabbix’@‘localhost’ identified by ‘zabbix’;
grant all on zabbix_proxy.* to ‘zabbix’@‘%’ identified by ‘zabbix’;
flush privileges;
#导入数据库信息
rpm -ql zabbix-sql-scripts #查询 sql 文件的位置
cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql -uroot -pabc123 zabbix_proxy
修改zabbix-proxy的配置文件,启动服务
#修改 zabbix-proxy 配置文件
vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.2.100 #32行,指定 zabbix 服务端的 IP 地址
Hostname=zbx-proxy #42行,指定当前 zabbix 代理服务器的主机名
DBPassword=zabbix #194行,指定当前数据库 zabbix 用户的密码
#启动 zabbix-proxy
systemctl enable zabbix-proxy --now;systemctl status zabbix-proxy
在所有主机上配置 hosts 解析
vim /etc/hosts
192.168.2.100 zbx-server
192.168.2.102 zbx-agent01
192.168.2.103 zbx-agent02
192.168.2.106 zbx-proxy
在 Web 页面配置 agent 代理
在客户端修改 agent2 配置文件
vim /etc/zabbix/zabbix_agent2.conf
…
Server=192.168.2.106 #80行,指定 zabbix 代理服务器的 IP 地址
ServerActive=192.168.2.106 #120行,指定 zabbix 代理服务器的 IP 地址