Centos7 安装Zabbix

Zabbix

Zabbix logo商标

zabbix介绍

一、zabbix是什么

Zabbix是一个企业级的开源分布式监控解决方案,由Alexei Vladishev创建,并由Zabbix是一个企业级的开源分布式监控解决方案,由Alexei Vladishev创建,并由Zabbix SIA主导开发和支持。它能够监控众多网络参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康状况和完整性。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的警报,从而使得系统管理员可以快速定位和解决存在的问题。

1.1 zabbix专用词汇

词汇 描述
zabbix server 服务端、收集数据,写入数据
zabbix agent 部署在被监控的机器上,是一个进程,和zabbix server进行交互,以及负责执行命令
host 服务器的概念,指zabbix监控的实体,服务器,交换机等
applications 应用
events 事件
media 发送通知的通道
remote command 远程命令
template 模版
item 对于某一个指标的监控,称之为items,如某台服务器的内存使用情况,就是一个item监控项
trigger 触发器,定义报警的逻辑,有正常,异常,未知三个状态
action 当trigger符合设定值后,zabbix指定的动作,如发送邮件给运维人员,告诉报警

1.2 zabbix程序组件

zabbix_server 服务端守护进程
zabbix_agentd agent守护进程
zabbix_proxy 代理服务器
zabbix_database 存储系统,mysql,pgsql
zabbix_web gui图形化界面
zabbix_get 命令行工具,测试向agent发起数据采集请求
zabbix_sender 命令行工具,测试向server发送数据
zabbix_java_gateway java网关

二、zabbix的优缺点

Zabbix是一个企业级的开源分布式监控解决方案,它提供自动发现服务器和网络设备的功能,同时,它还允许运维人员根据需求自定义监控项并设置报警规则。当被监控对象的状态异常时,Zabbix会通过邮件、短信等方式及时通知相关人员。

然而,Zabbix也存在一些缺点。首先,由于监控系统的特殊性质,即持续的周期性数据收集和处理,因此在高峰期,性能瓶颈问题尤为突出。具体来说,随着监控的机器数量增加,数据量也会随之增大,这会使数据库的写入成为一项瓶颈。目前,官方给出的单机上限是5000台,超过这个数量就需要引入proxy来分担压力,从而会增加成本。其次,Zabbix采集数据有pull方式,也就是server主动模式。当目标机器数量增大之后,pull任务会出现积压,进而导致数据采集的延迟。此外,对于项目二次开发,需要分析MySQL表结构,由于其表结构较为复杂,因此对开发能力有一定的要求。最后,Zabbix内置的housekeeping在执行过程中会对数据库增加压力,这就需要进行数据库优化以保持其良好运行。

三、为什么使用zabbix

Zabbix是一款优秀的开源网络监控工具,它具备诸多优点。首先,Zabbix具有强大的数据采集能力,支持可用性和性能检测,自动发现服务器和网络设备,同时支持agent、snmp、JMX、telnet等多种采集方式。其次,Zabbix同样具备良好的高可用性,其server对设备性能要求低,支持proxy分布式监控和分布式集中管理。

除此之外,Zabbix也因为其灵活性而备受好评。它可以通过自定义监控项、触发器和报警方式来适应各种复杂的监控需求。与此同时,Zabbix的扩展性也非常强,它支持与其他监控工具和第三方应用程序的集成,并且可以通过API进行自动化操作。最后,Zabbix能够处理大量的监控数据,并提供高度可扩展的架构。

然而,任何事物都存在两面性,Zabbix也不例外。尽管Zabbix是一款优秀的开源网络监控工具,但它同样存在一些缺点。例如,由于Zabbix的灵活性和可扩展性,配置过程可能比较复杂,需要耗费一定的时间和精力。再比如,zabbix的系统级别报警设置较多,如果不筛选报警邮件会比较多;自定义项目报警需要自行设置过程繁琐。因此,用户在选择使用Zabbix时,也需要根据自身的需求和技术水平来权衡。

3.1 zabbix可以满足的监控系统需求

  • 支持自定义监控脚本,提供需要输出的值即可
  • zabbix存储的数据库表结构稍有复杂但是逻辑清晰
  • zabbix存在模版的概念,可以方便的将一组监控项进行部署
  • zabbix每一个item也就是监控项,都可以看到历史记录,且web界面友好
  • zabbix有强大的trigger(触发器)定义规则,可以定义复杂的报警逻辑
  • zabbix提供了ack报警确认机制
  • zabbix支持邮件、短信、微信等告警
  • zabbix在触发告警后,可以远程执行系统命令
  • zabbix有原生的php绘图模块

四、zabbix监控的生命周期

Zabbix的监控生命周期开始于服务器的上架,并会持续到服务被下架或替换。在监控过程中,Zabbix将定期收集各项指标数据,包括硬件的信息如服务器温度、风扇转速、检查线路、服务器接口状态等。同时,Zabbix也支持灵活的时间间隔设置,可以定义多达七个灵活的时间间隔。

然而,值得注意的是,任何Zabbix版本都有其生命周期,一旦生命周期到期,Zabbix将会停止进一步的维护更新,包括blocker和严重bug修复。因此,对于使用Zabbix的企业或者个人来说,定期升级Zabbix监控解决方案到最新版本是非常必要的,以保证监控系统的稳定性和安全性。

Contos 7 安装

2.1 软件源配置

Zabbix官网

Zabbix:企业级开源监控解决方案

https://www.zabbix.com/cn

https://cdn.zabbix.com/zabbix/sources/stable/

选择对应版本下载

注意:zabbix7.0 LTS版本支持MySQL要达到mysql 8.0.30以上版本。

选择之后往下拉会看到相应的部署步骤:

根据教程安装

注意:如果下载地址服务器的证书不受信任(例如,自签名证书或证书颁发机构不在你的系统信任列表中),就会出现错误

你可以使用 -k--insecure 选项来跳过 SSL 证书验证。这允许 curl 忽略证书验证错误,继续下载文件。不过,这种方法存在安全隐患,因为它会使连接容易受到中间人攻击。

curl -k -o zabbix-release-latest-5.0.el7.noarch.rpm https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-latest-5.0.el7.noarch.rpm

# rpm -ivh zabbix-release-latest-5.0.el7.noarch.rpm
# yum clean all

更换阿里源

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

安装Zabbix server,Web前端,agent:

yum install zabbix-server-mysql zabbix-agent -y

安装Zabbix前端
启用Red Hat软件集合

yum install centos-release-scl -y

编辑文件/etc/yum.repos.d/zabbix.repo并启用zabbix前端存储库。

[zabbix-frontend]
...
enabled=1
...

安装Zabbix前端软件包。

yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl -y

注意:安装失败 scl源报错解决方法:

需要在这三个文件中配置yum源,但是查看发现CentOS-Base.repo配置了阿里云镜像,因此需要修改其他两个文件。配置yum的镜像源。首先对CentOS-SCLo-scl-rh.repo进行修改。

vi CentOS-SCLo-scl-rh.repo

修改后

[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=http://vault.centos.org/centos/7/sclo/$basearch/rh/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

修改后发现依旧无法使用,将CentOS-SCLo-scl.repoyum源进行修改。

vi CentOS-SCLo-scl.repo

修改后

[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=http://vault.centos.org/centos/7/sclo/$basearch/rh/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

2.2 初始化数据库

这里由于文档中未介绍,需要自己安装MySQL或者PostgreSQL,这里我们直接安装MySQL(Zabbix 5.0最好不要用mysql8.0后面导入数据会有问题):

创建相关的数据库:

# 创建数据库zabbix
mysql> create database zabbix character set utf8 collate utf8_bin;
# 创建用户zabbix并设置密码为password,只允许从localhost登录。
mysql> create user zabbix@localhost identified by 'password';
# 将数据库zabbix授权给zabbix用户
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;

导入初始架构和数据,系统将提示您输入新创建的密码。

zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

注意 zabbix-server-mysql 路径格式

导入数之后重新禁用log_bin_trust_function_creators:

 mysql -uroot -p
 mysql> set global log_bin_trust_function_creators = 0;
 mysql> quit;

2.3 配置zabbix

为Zabbix server配置数据库

编辑配置文件 /etc/zabbix/zabbix_server.conf

DBPassword=password

添加密码

编辑配置文件 /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf取消注释并设置“listen”和“server_name”指令。

listen 80;
server_name example.com;

编辑配置文件/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf将nginx添加到listen.acl_users指令中。

listen.acl_users = apache,nginx

然后取消注释并为您设置正确的时区。

php_value[date.timezone] = Asia/Shanghai

2.4 启动zabbix

启动Zabbix server和agent进程

启动Zabbix server和agent进程,并为它们设置开机自启:

# systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
# systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm

如果启动报错:journalctl -xe 排查问题原因

注意:如果zabbix-agent.service 一直启动不起来缺失pid文件,就直接设置开机自启动,然后再重启系统

错误如下

2.5 访问

浏览器 访问 http://localhost/zabbix

注意访问不了检查/etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf 配置是否正确(有无特殊符号空格)

检查/etc/opt/rh/rh-nginx116/nginx/nginx.conf是否关联成功(路径可删除重新输入)

posted @ 2025-03-21 17:43  DYF-linux  阅读(1311)  评论(0)    收藏  举报