Zabbix概述
- 定义:Zabbix是一个监控软件,可以监控各种网络参数,保证企业服务架构的安全运营,并支持灵活的告警机制,帮助运维人员快速定位和解决故障。
- 组成:Zabbix主要由Zabbix Server和可选组件Zabbix Agent组成。通过C/S模式采集数据,通过B/S模式在Web端展示和配置。
主要功能
- 实时监控:监控各种网络参数,如服务器的CPU使用率、内存使用情况、硬盘空间、网络流量等,帮助管理员及时发现潜在问题。
- 数据收集:支持主动和被动两种数据收集方式。主动方式指Zabbix服务器主动向被监控设备发送请求获取状态信息;被动方式指被监控设备将状态信息发送给Zabbix服务器。
- 灵活配置:提供丰富的配置选项,管理员可以根据需要定制监控系统,并设置报警阈值。
- 报警通知:支持多种报警方式,如邮件、短信、电话等,当某个指标超过预设阈值时,立即发送报警通知。
- 数据可视化:提供丰富的数据可视化工具,如图表、图形等,帮助管理员直观查看监控数据。
- 历史数据存储:将监控数据存储在数据库中,管理员可以随时查询历史数据。
- 分布式监控:支持分布式监控,可将多个Zabbix服务器组成一个监控网络,实现对大规模IT基础设施的监控。
- 高可用性:支持高可用性配置,当主Zabbix服务器出现故障时,备用服务器可以自动接管监控任务。
- Web界面:提供友好的Web界面,管理员可以通过浏览器访问Zabbix进行监控配置和数据查看。
- API接口:提供API接口,管理员可以通过API接口实现对Zabbix的自动化操作。
监控原理与机制
- 监控原理:Zabbix Agent安装在被监控的主机上,负责定期收集客户端本地各项数据,并发送至Zabbix Server端。Zabbix Server收到数据后,将数据存储到数据库中,并通过Web界面展示。
- 运行机制:Zabbix采用C/S架构,由Zabbix Server和Zabbix Agent组成。Zabbix Server负责存储和展示硬件信息,通过B/S模式传给Web端展示配置;Zabbix Agent部署在被监控的主机上,采集监控指标数据并发送给Zabbix Server。
监控方式与对象
- 监控方式:包括主动模式和被动模式。主动模式下,Agent向Server请求与自己相关的监控项配置,并主动发送数据;被动模式下,Server向Agent请求获取配置的监控项相关数据。
- 监控对象:Zabbix可以监控各种网络设备、服务器、应用服务等。
优缺点
-
优点:
- 开源,无软件成本投入。
- 对设备性能要求低。
- 支持设备多,自带多种监控模板。
- 支持分布式集中管理,有自动发现功能。
- 开放式接口,扩展性强,插件编写容易。
-
缺点:
- 需要在被监控主机上安装Agent。
- 所有数据都存储在数据库中,产生的数据量大,瓶颈主要在数据库。
- 项目批量修改不方便。
- 中文资料相对较少,服务支持有限。
- 深层次需求需要非常熟悉Zabbix并进行大量的二次定制开发。
Zabbix架构
-
SERVER
- Zabbix server 是 Zabbix 软件的核心组件
- Zabbix Agent 向其报告可用性、系统完整性信息和统计信息。
- Zabbix server也是存储所有配置信息、统计信息和操作信息的核心存储库。
- Zabbix server也是Zabbix监控系统的告警中心。在监控的系统中出现任何异常,将发出通知给管理员。
-
基本的 Zabbix Server 的功能分解成为三个不同的组件。他们是:Zabbix server、Web前端和数据库。
tips:
Zabbix 的所有配置信息都存储在 Server和Web前端进行交互的数据库中。例如,当你通过Web前端(或者API)新增一个监控项时,它会被添加到数据库的监控项表里。然后,Zabbix server 以每分钟一次的频率查询监控项表中的有效项,接着将它存储在 Zabbix server 中的缓存里。这就是为什么 Zabbix前端所做的任何更改需要花费两分钟左右才能显示在最新的数据段的原因。
-
数据库
- 所有配置信息以及 Zabbix 采集到的数据都被持久存储在数据库中
- 可以支持MySQL,PostgreSQL,Oracle 等多种数据库
-
WEB 界面
- WEB 界面是 Zabbix server 的一部分,用于实现展示和配置的界面通常(但不一定)和 Zabbix server 运行在同一台物理机器上基于 Apache(Nginx)+PHP 实现,早期只支持LAMP架构,从Zabbix5.0开始支持LNMP
-
AGENT
- Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给Zabbix server。从Zabbix5.0开始支技Zabbix Agent2
-
PROXY
- Zabbix Proxy 可以代替 Zabbix Server 采集性能和可用性数据
- Zabbix Proxy 在 Zabbix 的部署是可选部分
- Zabbix Proxy 的部署可以很好的分担单个Zabbix server的负载
-
Java 网关
- Zabbix 要监控 tomcat 服务器和其它JAVA程序,需要使用 Java gateway 做为代理,才能从JAVA程序中获取数据
编译安装
./configure --help
#可以查看帮助
./configure --prefix=/apps/zabbix_server --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java
make
make install
添加客户端
./configure --prefix=/apps/zabbix --enable-agent
在别的机器上 客户机需要安装的 客户端
安装数据库
数据库可以安装在本地也可以分离
yum install mariadb-server.x86_64 -y
systemctl start mariadb
mysql_secure_installation 安全加固脚本
mysql -uroot -p
create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by 'zabbix';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;
导入zabbix数据库文件
[root@localhost mysql]# cd /data/zabbix-4.0.30/database/mysql
[root@localhost mysql]#mysql -uzabbix -pzabbix zabbix < schema.sql
[root@localhost mysql]#mysql -uzabbix -pzabbix zabbix < images.sql
[root@localhost mysql]#mysql -uzabbix -pzabbix zabbix < data.sql
###必须最后 导入 data.sql
安装web apapche
[root@localhost mysql]#yum install httpd -y
[root@localhost mysql]#systemctl start httpd
[root@localhost zabbix-4.0.30]#cd /data/zabbix-4.0.30/frontends/php/
[root@localhost php]#cp -a . /var/www/html/zabbix/
# 将前端页面拷贝过去
修改zabbix配置
vim /apps/zabbix_server/etc/zabbix_server.conf
# grep "^[a-Z]" /apps/zabbix_server/etc/zabbix_server.conf
LogFile=/tmp/zabbix_server.log
DBName=zabbix_server
DBUser=zabbix
DBPassword=zabbix
LogSlowQueries=3000
118 行修改 下 密码 其他不用修改
118 DBPassword= zabbix
#启动 zabbixserver 和 zabbixagented
/apps/zabbix_server/sbin/zabbix_server
/apps/zabbix_server/sbin/zabbix_agentd
升级php 版本
打开浏览器 访问 192.168.91.100/zabbix
yum install php-gettext php-xml php-net-socket php-gd php-mysql -y
修改php 软件的配置
vim /etc/php.ini
384 max_execution_time = 300
394max_input_time = 600
672 post_max_size = 16M
878 date.timezone = Asia/Shanghai
#改完 以后
systemctl restart httpd
下载配置文件
cp zabbix.conf.php /var/www/html/zabbix/conf/ -a
默认用户名:Admin
密码: zabbix
准备service 文件
#先停止 zabbix-server
pkill zabbix_server
[root@localhost system]#vim /usr/lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/apps/zabbix_server/etc/zabbix_server.conf"
EnvironmentFile=-/etc/default/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
ExecStart=/apps/zabbix_server/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=infinity
[Install]
WantedBy=multi-user.target
[root@localhost ~]#chown zabbix:zabbix /apps/zabbix_server/ -R
[root@localhost system]#systemctl daemon-reload
[root@localhost system]#systemctl start zabbix-server.service
[root@localhost system]#systemctl status zabbix-server.service
#先停止当前zabbix_agent进程 10050端口
# pkill zabbix_agentd
# cat /usr/lib/systemd/system/zabbix-agent.service
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=apps/zabbix_server/etc/zabbix_agentd.conf"
EnvironmentFile=-/etc/default/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=/apps/zabbix_server/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
# systemctl restart zabbix-agent && systemctl enable zabbix-agent
修改中文
zabbix 配置文件
官方源安装:
服务端 配置文件位置 : /etc/zabbix/zabbix_server.conf
agent 配置文件位置: /etc/zabbix/zabbix_agentd.conf
局部重点讲解:
10051 server监听端口
10050 agent
10052 java插件