Zabbix分布式监控快速入门

目录

  • [1 Zabbix简介](#1 Zabbix简介)
    • [1.1 软件架构](#1.1 软件架构)
    • [1.2 版本选择](#1.2 版本选择)
    • [1.3 功能特性](#1.3 功能特性)
  • [2 安装与部署](#2 安装与部署)
    • [2.1 时间同步需求](#2.1 时间同步需求)
    • [2.2 下载仓库官方源](#2.2 下载仓库官方源)
    • [2.3 Zabbix-Server服务端的安装](#2.3 Zabbix-Server服务端的安装)
      • [2.3.1 安装MySQL](#2.3.1 安装MySQL)
        • [2.3.1.1 创建Zabbix数据库](#2.3.1.1 创建Zabbix数据库)
        • [2.3.1.2 导入Zabbix库的数据文件](#2.3.1.2 导入Zabbix库的数据文件)
      • [2.3.2 配置zabbix_server.conf](#2.3.2 配置zabbix_server.conf)
      • [2.3.3 开启Zabbix-Server服务](#2.3.3 开启Zabbix-Server服务)
      • [2.3.4 防火墙、SELinux和权限的设置](#2.3.4 防火墙、SELinux和权限的设置)
        • [2.3.4.1 防火墙的设置](#2.3.4.1 防火墙的设置)
        • [2.3.4.2 SELinux的设置](#2.3.4.2 SELinux的设置)
      • [2.3.5 php.ini配置文件的设置](#2.3.5 php.ini配置文件的设置)
      • [2.3.6 配置Zabbix-Web](#2.3.6 配置Zabbix-Web)
    • [2.4 Zabbix-Agent客户端的安装](#2.4 Zabbix-Agent客户端的安装)
      • [2.4.1 安装Zabbix-Agent](#2.4.1 安装Zabbix-Agent)
      • [2.4.2 防火墙的设置](#2.4.2 防火墙的设置)
      • [2.4.3 配置zabbix_agentd.conf](#2.4.3 配置zabbix_agentd.conf)

1 Zabbix简介

Zabbix是一个企业级的高度集成的开源监控软件,提供了分布式监控解决方案,可以用来监控设备、服务等的可用性和性能。其产品不分企业版和社区版,是一个真正的源码开放产品,用户可以自由下载并使用该软件。地址:https://www.zabbix.com/cn

从功能上说,Zabbix支持多种采集方式和采集客户端,有专用的Agent(代理),也支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库中,可以支持MySQL、Oracle、PostgreSQL、SQLite、Elasticsearch等数据库,然后对其进行分析整理,达到条件触发告警,并支持对告警数据的分析统计。Zabbix具有良好的管理界面。

1.1 软件架构

Zabbix的通用架构采用客户端/服务器端模式,分布式架构采用客户端/代理端/服务器端模式,Zabbix-Server将采集到的数据持久地存储到数据库中,用前端UI友好地展示给用户。

客户端采集数据,代理服务器做代理,服务器端处理数据的架构模式:

Zabbix数据的采集不仅可以使用Agent方式,也可以使用其他方式,如采用SNMP、SSH、Telnet、IPMI等多种协议。

1.2 版本选择

截图来自官网:https://www.zabbix.com/cn/life_cycle_and_release_policy

Zabbix首个发行版本为Zabbix 1.0 alpha1,其发行时间为2001年4月7日。随着版本的升级,其功能特性也在不断地增强和完善。

  • 1.X版本,具备较完备的功能;
  • 2.X版本,增强了很多新的功能特性,如对JMX、自动发现、LLD(Low Level Discovery)、虚拟化功能的原生支持。至此,Zabbix在国内逐渐流行(2013年前后开始逐渐被大多数公司所接受),成为大多数公司首选的监控系统。
  • 3.X版本,对用户体验进行了优化。随着版本的不断迭代,功能持续增强,性能逐步提高。

非LTS的版本均为实验版本,每6个月发布一个新版本。因此,对于生产环境版本的选择,我们尽量选择LTS版本,可享受长期更新支持服务,这样即使出现安全漏洞等问题,也会得到更新支持。

1.3 功能特性

Zabbix具有常见的商业监控软件所具备的功能,如主机性能监控、网络设备性能监控、数据库性能监控、FTP等通用协议监控、多种告警方式、详细的报表图表绘制、分布式、可扩展能力、API等。

  1. 数据收集

    • 可用性、性能检测。
    • 支持Agent、SNMP(包括Trapping和Polling)、IPMI、JMX、SSH、Telnet等。
    • 自定义检测。
    • 自定义收集数据的频率。
    • 客户端/代理端/服务器端模式。
  2. 灵活的触发器

    可以定义非常灵活的告警阈值和与多种告警相关联的条件。

  3. 高度可定制的告警

    • 发送通知,可定制包括告警级别、动作升级、收件人和媒体类型。
    • 通知可以使用全局宏变量和自定义变量。
    • 自动处理功能包括远程命令的自动调用和执行。
  4. 实时的绘图功能

    监控项将数据实时绘制在图形上。

  5. Web监控能力

    Zabbix可以模拟浏览器请求访问一个网站,并检查返回值和响应时间。

  6. 多种可视化展示

    • 可以自定义监控的展示图,将多种监控数据集中展示到一张图上。
    • 网络拓扑图。
    • 自定义的Screens和Slide shows可以将多种图形集中展示。
    • 报表功能。
    • 资源使用情况的监控展示。
  7. 历史数据的存储

    • 将数据存储在数据库中。
    • 历史数据的存放周期可配置。
    • 定期删除过期的历史数据。
  8. 配置非常容易

    配置比较简单,只需要以下两步即可:(1)添加设备。(2)应用模板即可完成监控。

  9. 使用模板

    • 模板可以分组。
    • 模板具有可继承性。
  10. 网络发现

    • 支持自动发现网络设备和服务器(可以通过配置自动发现服务规则实现)。
    • Agent自动注册。
    • 支持用自动发现(Low Level Discovery)实现动态监控项的批量监控(支持自定义),内置的自动发现包括文件系统、网络接口、SNMP OID,可定制自动发现。
  11. 快速的访问接口

    • Web页面基于PHP。
    • 远程访问。
    • 日志审计。
  12. API功能

    应用API功能可以方便地与其他系统结合,包括手机客户端的使用。

  13. 系统权限

    • 不同的用户展示监控的资源不同。
    • 用户身份认证。
  14. 程序特性

    服务器端Zabbix-Server和采集端Zabbix-Agent使用C语言编写,其性能非常高,内存开销非常小。

  15. 大型环境的支持

    利用Zabbix-Proxy方式可轻松构建远程监控。

2 安装与部署

软件环境由CentOS 7(64位)、httpd、PHP和MariaDB组成。

由于Zabbix核心组件是用C语言写的,所以理论上其可以支持Linux、UNIX、Windows等常见的操作系统,但Zabbix-Server和Zabbix-Porxy均不支持Windows系统(底层的实现依赖Linux系统的一些特性)。在Zabbix 3.0版本以后,对其支持最好的CentOS版本为7.0以上版本,7.0以下版本的安装和配置均比较麻烦,因此不再推荐使用。

注意:如果仅仅检测网络服务FTP、SSH、HTTP、DNS、LDAP,则无须安装任何客户端,即可支持获取监控数据。

2.1 时间同步需求

Zabbix-Server对时间的精准要求比较高,时间对数据的计算等都有影响,因此必须设置NTP自动同步时间。

sh 复制代码
[root@linux30 zabbix]# yum -y install ntp

2.2 下载仓库官方源

访问Zabbix的软件仓库网站,网址为http://repo.zabbix.com

安装Zabbix的RPM包软件仓库官方源:

sh 复制代码
[root@linux30 zabbix]# pwd
/opt/itcast/zabbix
[root@linux30 zabbix]# ll
总用量 16
-rw-r--r--. 1 root root 13712 2月  23 11:44 zabbix-release-4.0-1.el7.noarch.rpm
[root@linux30 zabbix]# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm
警告:zabbix-release-4.0-1.el7.noarch.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中...                          ###################### [100%]
正在升级/安装...
   1:zabbix-release-4.0-1.el7         ###################### [100%]
[root@linux30 zabbix]# rpm -ql zabbix-release
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
/etc/yum.repos.d/zabbix.repo
/usr/share/doc/zabbix-release-4.0
/usr/share/doc/zabbix-release-4.0/GPL
[root@linux30 zabbix]# cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/4.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
[root@linux30 zabbix]#

2.3 Zabbix-Server服务端的安装

安装Zabbix-Server服务器端,由于服务器端也是需要监控的,故这里也一并安装了Zabbix-Agent。

sh 复制代码
[root@linux30 zabbix]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-get

2.3.1 安装MySQL

在CentOS 7系统包仓库安装源中,我们需要安装mariadb-server,而不是MySQL数据库服务(7.0以后的版本用MariaDB替换了MySQL),命令如下:

sh 复制代码
[root@linux30 zabbix]# yum -y install mariadb-server

修改MySQL配置文件:

sh 复制代码
[root@linux30 zabbix]# vi /etc/my.cnf

添加如下内容:

properties 复制代码
[mysqld]
# 设置字符集为UTF-8
character-set-server=utf8
# 让InnoDB的每个表文件单独存储
innodb_file_per_table=1

启动服务:

sh 复制代码
[root@linux30 zabbix]# systemctl start mariadb

查看服务是否启动成功:

2.3.1.1 创建Zabbix数据库

首先设置MySQL的root用户密码,然后创建zabbix数据库,设置访问策略.

sh 复制代码
# 设置root用户密码为123456
[root@linux30 zabbix]# mysqladmin -uroot password 123456
# 登录MySQL
[root@linux30 zabbix]# mysql -uroot -p123456
# 创建数据库,名称为zabbix,并将其字符集设置为UTF-8
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
# 设置zabbix数据库的权限,允许用户zabbix的IP地址127.0.0.1和localhost访问
# 并将zabbix账号的密码设置为zabbix
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'localhost' identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'127.0.0.1' identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
# 刷新权限,使其立即生效
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

这里容易出现的问题是,如果创建zabbix数据库的字符集不为UTF-8,则可能会导致Web界面切换到中文语言时出现乱码。

2.3.1.2 导入Zabbix库的数据文件

导入Zabbix库的数据文件,使用以下命令:

sh 复制代码
# 进入对应版本目录
[root@linux30 zabbix]# cd /usr/share/doc/zabbix-server-mysql-4.0.38/
# 将sql文件解压缩
[root@linux30 zabbix-server-mysql-4.0.38]# gunzip create.sql.gz
# 以zabbix用户登录
[root@linux30 zabbix-server-mysql-4.0.38]# mysql -uzabbix -pzabbix -h127.0.0.1
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
| zabbix             |
+--------------------+
3 rows in set (0.00 sec)
# 切换到zabbix数据库
MariaDB [(none)]> use zabbix;
Database changed
# 导入sql文件
# create.sql是zabbix源码包中的3个SQL文件的集合,即分别为schame.sql(表结构);images.sql(图形相关数据);data.sql(模板相关数据)
MariaDB [zabbix]> source /usr/share/doc/zabbix-server-mysql-4.0.38/create.sql

2.3.2 配置zabbix_server.conf

配置zabbix_server.conf文件如下:

sh 复制代码
 vi /etc/zabbix/zabbix_server.conf
 

内容如下:

properties 复制代码
# 日志文件
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
# 数据库连接
DBHost=192.168.10.30
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306

StartPollers=100
StartIPMIPollers=10
StartPollersUnreachable=10
StartTrappers=10
StartPingers=10
StartDiscoverers=10
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
CacheSize=256M
HistoryCacheSize=128M
TrendCacheSize=128M
ValueCacheSize=2048M
Timeout=30
Timeout=4
TrapperTimeout=300
# 告警和扩展脚本路径
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000

告警和扩展脚本路径可能默认不存在,使用以下命令创建目录:

sh 复制代码
[root@linux30 zabbix]# mkdir -p /etc/zabbix/alertscripts /etc/zabbix/externalscripts

2.3.3 开启Zabbix-Server服务

启动服务:

sh 复制代码
[root@linux30 zabbix]# systemctl start zabbix-server
[root@linux30 zabbix]# systemctl start httpd

查看进程:

查看日志:

sh 复制代码
[root@linux30 zabbix]# tail -f /var/log/zabbix/zabbix_server.log

2.3.4 防火墙、SELinux和权限的设置

2.3.4.1 防火墙的设置

如果CentOS操作系统存在防火墙,则需要允许相关端口能够访问,配置命令如下:

sh 复制代码
[root@linux30 ~]# firewall-cmd --permanent --add-port=80/tcp
# 10050是Agent的端口,Agent采用被动方式,Server主动连接Agent的10050端口;
[root@linux30 ~]# firewall-cmd --permanent --add-port=10050/tcp
# 10051是Server的端口,Agent采用主动或Trapper方式,会连接Server的10051端口。
[root@linux30 ~]# firewall-cmd --permanent --add-port=10051/tcp
[root@linux30 ~]# firewall-cmd -reload

2.3.4.2 SELinux的设置

如果操作系统已开启SELinux,则需要设置语句开启允许SELinux的相关策略。

sh 复制代码
[root@linux30 ~]# setsebool -P httpd_can_connect_zabbix on
[root@linux30 ~]# setsebool -P httpd_can_network_connect_db on
# 获取当前SELinux的运行状态
[root@linux30 ~]# getenforce
Enforcing
# 设置为告警模式,只给出提示,不会阻止操作,不用重启服务
[root@linux30 ~]# setenforce 0

直接关闭SELinux的方法:

sh 复制代码
[root@linux30 ~]# vi /etc/selinux/config
SELINUX=disabled
注意:此方式需要重启服务器才能生效。

2.3.5 php.ini配置文件的设置

修改php.ini相关配置参数,命令如下:

sh 复制代码
[root@linux30 etc]# vi /etc/php.ini
data.timezone = Asia/Shanghai
max_execution_time = 300
post_max_size = 16M
max_input_time = 300
# web页面内存不够用时,调节此参数
memory_limit = 128M
mbstring.func_overload = 0

修改zabbix.conf,只需要修改date.timezone即可

sh 复制代码
[root@linux30 etc]# vi /etc/httpd/conf.d/zabbix.conf
# 修改date.timezone
php_value date.timezone Asia/Shanghai

如果在后面配置Web时提示任何参数不满足安装与配置要求,则修改对应的参数后重启httpd即可。

2.3.6 配置Zabbix-Web

打开浏览器,输入http://IP地址/zabbix,会出现欢迎页面。

http://192.168.10.30/zabbix

PHP提示的各项参数都满足后,可以继续往下进行,单击"Next step"按钮。如果提示参数不通过,则修改php.ini配置文件,并重启Web(httpd)服务。

配置数据库连接的各项参数。单击"Next step"按钮进行下一步操作。

Zabbix-Server的连接地址、端口、名称设置,将会显示在Zabbix的前端页面中。

这些配置信息将会被写入/etc/zabbix/web/zabbix.conf.php文件中

配置文件生成成功

登录页面,默认账户是Admin,密码是zabbix

登录成功后的首页

在System information面板中,如Zabbix server is running为No,则分别检查SELinux、iptables,以及zabbix_server.conf和zabbix.conf.php中的各项配置参数

2.4 Zabbix-Agent客户端的安装

通过前面的介绍,我们知道Zabbix监控可以采用服务器端/客户端架构,其客户端的采集方式分为Agent、SNMP等。在这里,我们先学习使用Agent方式对服务器进行监控。

2.4.1 安装Zabbix-Agent

在这里,我们对需要进行监控的服务器安装Zabbix-Agent,使用RPM包方式进行安装,命令如下:

sh 复制代码
# 将rpm包复制到linux31服务器
[root@linux30 zabbix]# scp zabbix-release-4.0-1.el7.noarch.rpm [email protected]:/opt/itcast/zabbix/
# 安装Zabbix官方yum源
[root@linux31 zabbix]# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm
# 安装
[root@linux31 zabbix]# yum -y install zabbix zabbix-agent

2.4.2 防火墙的设置

如果操作系统开启了防火墙,为了允许端口能够正常通信,则需要使用下列命令进行配置:

sh 复制代码
[root@linux31 zabbix]# firewall-cmd --permanent --add-port=10050/tcp
[root@linux31 zabbix]# firewall-cmd --reload

2.4.3 配置zabbix_agentd.conf

zabbix_agentd.conf是Zabbix-Agent的配置参数文件,需要对配置参数进行手动修改。修改的参数如下:

sh 复制代码
[root@linux31 ~]# egrep -v "(^#|^$)" /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.10.30
ServerActive=192.168.10.30
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agentd.d/*.conf
[root@linux31 ~]#

参数含义如下。

  • Server:被动模式,允许zabbix_server服务器连接客户端,此处允许192.168.10.30访问10050端口,多个IP地址之间用逗号分隔。
  • ServerActive:主动模式,向目标zabbix_server服务器传送数据。这种模式的性能较好,建议使用,但需要确保zabbix_agentd.conf的参数Hostname值与Zabbix-Web页面中的主机名一致;

配置完成后,使用如下命令启动Zabbix-Agent:

sh 复制代码
[root@linux31 zabbix]# systemctl start zabbix-agent
相关推荐
躺不平的理查德1 小时前
General Spark Operations(Spark 基础操作)
大数据·分布式·spark
talle20211 小时前
Zeppelin在spark环境导出dataframe
大数据·分布式·spark
渣渣盟1 小时前
大数据开发环境的安装,配置(Hadoop)
大数据·hadoop·分布式
Angindem2 小时前
SpringClound 微服务分布式Nacos学习笔记
分布式·学习·微服务
龙仔72510 小时前
离线安装rabbitmq全流程
分布式·rabbitmq·ruby
〆、风神13 小时前
Spring Boot 整合 Lock4j + Redisson 实现分布式锁实战
spring boot·分布式·后端
胡萝卜糊了Ohh14 小时前
kafka
分布式·kafka
桑榆080616 小时前
Spark-Streaming核心编程
大数据·分布式·spark
nbsaas-boot17 小时前
分布式微服务架构,数据库连接池设计策略
分布式·微服务·架构