使用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等平台上。
前言
zabbix的主要特点:
- 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- email等通知功能。
一、基础环境搭建
zabbix分布式监控工作流程如下图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201206173709417.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1plcm9DaGVuMTk5OA==,size_16,color_FFFFFF,t_70#pic_center)
1.地址、角色分配
使用1台centos8作为zabbix-server,3台centos7,其中1台作为zabbix-proxy,其他两台作为zabbix-agent。
server监控agent1和proxy,proxy监控agent2具体配置如下:
主机名称 |
IP地址 |
角色 |
zbx.server.cn |
192.168.115.128 |
server |
zbx.proxy.cn |
192.168.115.129 |
proxy |
zbx.agent1 |
192.168.1115.131 |
agent |
zbx.agent2 |
192.168.115.132 |
agent |
2.时间服务器设置
时间服务只需要在server端和proxy端设置
这里使用的时间服务器由阿里提供(ntp1.aliyun.com)
centos8配置如下:
#在centos8中使用chrony插件
vim /etc/chrony.conf
...
#pool 2.centos.pool.ntp.org iburst
server ntp1.aliyun.com iburst
...
centos7配置如下:
yum install ntp ntpdate -y
ntpdate ntp1.aliyun.com
3.引入yum源
由于我们要使用centos7作为proxy代理所以要使用zabbix5.0的yum源(zabbix5.2的不支持centos7安装zabbix-proxy)
代码如下(示例):
#下载并安装zabbixyum源仓库
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all
#以上操作需要在4台机器上执行
4.所有机器关闭防火墙和 selinux
二、Server端
1.安装zabbix插件
代码如下(示例):
#使用yum方式安装插件
yum -y install zabbix-agent zabbix-get zabbix-sender zabbix-server-mysql zabbix-web zabbix-web-mysql
2.安装并设置数据库
1.创建mariadb.repo
vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.4/centos7-amd64
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
也可以去官网下载所需安装包
2.修改mariadb的配置文件
vim /etc/my.cnf.d/server.cnf
[mysqld]
skip_name_resolve = ON # 跳过主机名解析
innodb_file_per_table = ON # 开启独立表空间
innodb_buffer_pool_size = 256M # 缓存池大小
max_connections = 2000 # 最大连接数
log-bin = master-log # 开启二进制日志
3.启动并初始化数据库
systemctl start mariadb
mysql_secure_installation
4.创建数据库并授权用户
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all on zabbix.* to 'zbxuser'@'localhost' identified by 'keer';
5.导入zabbix服务表;
利用create.sql.gz压缩文件
#这个压缩文件有zabbix-server-mysql提供
[root@zbx ~]# rpm -ql zabbix-server-mysql
/etc/logrotate.d/zabbix-server
/etc/zabbix/zabbix_server.conf
/usr/lib/.build-id
/usr/lib/.build-id/69
/usr/lib/.build-id/69/dcfe332bdfafaf33d1f61de905db4609e1577f
/usr/lib/systemd/system/zabbix-server.service
/usr/lib/tmpfiles.d/zabbix-server.conf
/usr/lib/zabbix/alertscripts
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql
/usr/share/doc/zabbix-server-mysql/AUTHORS
/usr/share/doc/zabbix-server-mysql/COPYING
/usr/share/doc/zabbix-server-mysql/ChangeLog
/usr/share/doc/zabbix-server-mysql/NEWS
/usr/share/doc/zabbix-server-mysql/README
/usr/share/doc/zabbix-server-mysql/create.sql.gz
/usr/share/doc/zabbix-server-mysql/double.sql
/usr/share/man/man8/zabbix_server.8.gz
/var/log/zabbix
/var/run/zabbix
解压后将其导入数据库
msyql -uroot -p zabbix < create.sql
Enter password:
3.配置zabbix-server
修改配置文件
vim /etc/zabbix/zabbix_server.conf
ListenPort=10051 # 默认监听端口
SourceIP=192.168.115.128 # 发采样数据请求的 IP
DBHost=192.168.37.111 #数据库对外的主机
DBName=zabbix #数据库名称
DBUser=zbxuser #数据库用户
DBPassword=keer #数据库密码
DBPort=3306 #数据库启动端口
配置完成后启动zabbix-server
systemctl start zabbix-server
4.配置zabbix-agent
在zabbix默认是监听本地的,但是需要将zabbix-agent启动
systemctl restart zabbix-agent
5.配置web GUI
vim /etc/httpd/conf.d/zabbix.conf
···
<IfModule mod_php5.c>
php_value max_execution_time = 300
php_value memory_limit = 128M
php_value post_max_size = 16M
php_value upload_max_filesize = 2M
php_value max_input_time = 300
php_value max_input_vars = 1000
php_value always_populate_raw_post_data -1
</IfModule>
···
修改php.ini文件
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone = Asia/Shanghai
启动httpd服务
systemctl start httpd
6.使用浏览器访问并设置初始化
使用浏览器访问http://192.168.115.128/zabbix
登陆名:Admin ,密码:zabbix(默认)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020121020125783.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1plcm9DaGVuMTk5OA==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201210201340798.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1plcm9DaGVuMTk5OA==,size_16,color_FFFFFF,t_70#pic_center)
这里默认是英文界面在选择语言时可以设置为中文
三、Proxy端
1.安装zabbix-proxy需要的插件
zabbix-proxy-mysql zabbix-get zabbix-agent zabbix-sender
2.安装并设置数据库
这里可以采纳上面的过程
1.创建数据库与授权用户
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all on zbxproxydb.* to 'zbxproxyuser'@'192.168.115.%' identified by 'zbxproxypass';
2.初始化数据库与导入表
这里的初始化使用zabbix-proxy-mysql包里的schema.sql.gz步骤与上面相同
3.配置zabbix-proxy
vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.115.128 # server 的IP
ServerPort=10051 # server 的端口
Hostname=zbx.proxy.cn
ListenPort=10051
EnableRemoteCommands=1
LogRemoteCommands=1
# 数据库的配置
DBHost=192.168.192.168.115.129
DBName=zbxproxydb
DBUser=zbxproxyuser
DBPassword=zbxproxypass
ConfigFrequency=30 #这里设置30秒,默认3600s
DataSenderFrequency=1 # 每一秒向server 端发一次数据,发送频度
开启zabbix-proxy服务
systemctl start zabbix-proxy
四、配置agent端
1.安装zabbix-agent
在两台agent主机上安装
yum install zabbix-agnet
2.配置zabbix-agent
首先配置被server直接监控的agent1主机
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.115.128
ServerActive=192.168.115.128
Hostname=zbx.agent1.cn
LogFileSize=0
在agent1上启动zabbix-agent
systemctl start zabbix-agent
配置被proxy代理监控的agent2主机
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.115.128,192.168.115.129
ServerActive=192.168.115.128,192.168.115.129
Hostname=zbx.agent2.cn
LogFileSize=0
五、使用浏览器监控主机
登陆后的界面如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201210212311598.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1plcm9DaGVuMTk5OA==,size_16,color_FFFFFF,t_70#pic_center)
创建两台主机agent1,agent2(使用代理)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201210212729319.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1plcm9DaGVuMTk5OA==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201210212729327.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1plcm9DaGVuMTk5OA==,size_16,color_FFFFFF,t_70)
分别创建监控项,这里为了好区别创建同样的监控项
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201210213337972.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1plcm9DaGVuMTk5OA==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201210213337953.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1plcm9DaGVuMTk5OA==,size_16,color_FFFFFF,t_70)
然后分别创建图形,再创建聚合图形是否能够正常运行
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201210214201184.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1plcm9DaGVuMTk5OA==,size_16,color_FFFFFF,t_70#pic_center)
总结
使用代理监控zabbix proxy,就是zabbix server的代理服务,它能帮助zabbix server采集数据,然后再统一的发送给zabbix server ;它的功能和zabbix server 很类似,zabbix server 能做到它几乎都能做;主要作用就是代理zabbix server ;
主要的目的是减轻zabbix-server的压力,proxy代替server去收集数据,然后将数据统一汇报给sever,避免server再向所有主机获取信息。