本文部分内容引用自《Zabbix 企业级分布式监控系统》一书。
如果只是为了查看如何安装Zabbix,建议跳过第一、二节,直接从第三节开始阅读。
一、监控工具选型
监控工具选型主要还是看实际业务需求,是需要监控性能、还是监控日志,或者监控业务等等,先确定自己的需求;
常见的开源监控产品有Cacti、Nagios、Prometheus、Netdata、ELK、Zabbix等,他们各自有什么区别呢?我们主要从以下几个方面进行对比:
产品 | 数据收集方式 | 是否支持告警 | 常用领域 |
---|---|---|---|
Cacti | SNMP | 邮件、微信 | 网络设备监控 |
Nagios | 客户端 | 支持 | 服务可用性监控 |
Prometheus | 私有客户端 | 支持邮件、短信、钉钉、微信、自定义 | 微服务监控(docker、k8s) |
Netdata | 私有客户端 | 邮件 | Linux实时性能监控 |
ELK | logstash、beats | 原生不支持、可使用ElastAlert实现 | 日志监控 |
Zabbix | Agent、SNMP、IPMI、JMX、SSH、Telnet | 支持邮件、短信、钉钉、微信、自定义 | 系统性能监控 |
以上对常见的监控工具做了简单的对比,但仅仅是挑选了代表各自特点的功能进行了对比,不代表仅具有上表列举的功能。
建议:日志监控选ELK,系统性能、服务状态监控选Zabbix
二、zabbix介绍
Zabbix的优点:
- 完全免费:Zabbix 公司采用提供技术支持的运作方式盈利,产品本身完全免费
- 完全开源:用户可以进行二次开发
- 环境搭建简单,仅需要Linux、Apache/Nginx、MySQL/PostgreSQL/Oracle、PHP即可
- Zabbix-agent 完全支持 Linux、UNIX、Windows、AIX、BSD、Solaris 的监控
- C语言编写,占用系统资源很少
- 扩展能力超强,只要想监控的,全都可以实现
- 论坛活跃、网上资料丰富,很多坑前人已经帮你踩过了,排错简单
- 由Zabbix 授权的公司提供商业服务支持
使用人群:
- 运维、系统管理员、网络管理员
- 开发人员、DEVOPS
三、硬件选型
环境 | 平台 | CPU/内存 | 数据库 | 硬盘 | 监控主机数 |
---|---|---|---|---|---|
小型 | CentOS | 2CPU/1GB | MySQL、InnoDB | 普通 | 100 |
中型 | CentOS | 2CPU/2GB | MySQL、InnoDB | 普通 | 500 |
大型 | Red Hat Enterprise Linux | 4CPU/8GB | MySQL、InnoDB 或 PostgreSQL | RAID 10 SAS 或 SSD | 大于1000 |
超大型 | Red Hat Enterprise Linux | 8CPU/16GB | MySQL、InnoDB 或 PostgreSQL | RAID 10 SAS 或 SSD | 大于10000 |
四、安装Zabbix
我这里没有调研Zabbix版本和CentOS版本是否有对应关系,我的系统是CentOS7,直接安装Zabbix 4.0;
- 安装 Zabbix 仓库
[root@soft-pro-monitor /]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
[root@soft-pro-monitor /]# yum clean all
- 安装 Zabbix server, frontend, agent, ntp
[root@soft-pro-monitor /]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-get ntp
- 创建初始化数据库
CentOS7 默认安装有mariaDB,版本为5.5。mariaDB默认root用户无需密码即可登录,记得修改root密码。
[root@soft-pro-monitor /]# systemctl start mariadb
[root@soft-pro-monitor /]# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
mysql> use zabbix;
mysql> source /usr/share/doc/zabbix-server-mysql-4.0.0/create.sql
- 修改配置文件
[root@soft-pro-monitor /]# vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix#2019
全部配置信息
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix#2019
StartPollers=10
StartTrappers=10
StartPingers=10
StartDiscoverers=10
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
CacheSize=128M
HistoryCacheSize=128M
TrendCacheSize=64M
Timeout=30
TrapperTimeout=300
AlertScriptsPath=/etc/zabbix/alertscripts
ExternalScripts=/etc/zabbix/externalscripts
LogSlowQueries=3000
新建目录
[root@soft-pro-monitor /]# mkdir -p /etc/zabbix/alertscripts /etc/zabbix/externalscripts
- 设置开机自启
[root@soft-pro-monitor /]# systemctl enable zabbix-server zabbix-agent httpd ntpd
- 启动Zabbix server agent
[root@soft-pro-monitor /]# systemctl restart zabbix-server zabbix-agent httpd ntpd
- 修改防火墙
CentOS的firewalld如何关闭、iptables如何开启,此处不进行记录。
[root@soft-pro-monitor /]# vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
#zabbix
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10051 -j ACCEPT
:wq保存退出
[root@soft-pro-monitor /]# systemctl restart iptables
-
关闭selinux
CentOS7 关闭selinux分为临时和永久两种方式,此处不进行记录。不更改selinux配置的情况下,Zabbix 无法启动成功,而selinux的配置很复杂,建议直接关闭selinux。 -
Web端访问
直接通过http://ip地址/zabbix即可访问,初始用户名Admin,密码zabbix
感谢阅读,有兴趣的小伙伴可以关注我的公众号DevOps探索之旅
,大家一起学习进步