Centos7 安装Zabbix
Zabbix
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官网
选择对应版本下载
注意: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是否关联成功(路径可删除重新输入)



浙公网安备 33010602011771号