zabbix===》监控系统介绍及安装

一、监控系统以及常见监控软件

1.为什么要监控?

  • 在需要的时刻,提前提醒我们服务器出问题了
  • 当出问题之后,可以找到问题的根源
  • 网站/服务器 的可用性

2.什么是监控?

服务器监控是实时掌握服务器工作状态,并在需要时可以随时调用监控记录进行查看。

网站监控是通过软件或者网站监控服务提供商对网站进行监控以及数据的获取从而达到网站的排错和数据的分析。

3.常见场景

服务器数量过多时,如何定位到某台服务器的硬件信息?
如何定位到某台服务器上运行的服务运行信息?
按照层次划分可简单分为:
应用层:nginx,mysql,java
运行层:Windows,linux
硬件层:内存,cpu,磁盘。

4.服务器监控的目标

服务器监控是监控服务器系统资源的过程,如CPU使用量、内存消耗、I/O、网络、磁盘使用量、进程等。通过了解服务器的系统资源使用情况,服务器监控还有助于进行容量规划。服务器监控软件有助于实现服务器监控过程的自动化。服务器性能监控还有助于识别其他与性能相关的问题,如资源利用、应用程序宕机和响应时间。

5.为什么监控服务器性能很重要?

  • 监控服务器可用性和数据丢失
  • 监控服务器的响应性。
  • 了解服务器容量、用户负载和服务器速度。
  • 检测并防止任何可能影响服务器的问题。

6.监控范畴

img

监控系统分层

一般我们将监控系统分为五层来考虑,当然也有人分成三层,大致的意思都差不多,仅供参考:

  • 客户端监控,用户行为信息,业务返回码,客户端性能,运营商,版本,操作系统等。
  • 业务层监控,核心业务的监控,例如:登录,注册,下单,支付等等。
  • 应用层监控,相关的技术参数,例如:URL 请求次数,Service 请求数量,SQL 执行的结果,Cache 的利用率,QPS 等等。
  • 系统层监控,物理主机,虚拟主机以及操作系统的参数。例如:CPU 利用率,内存利用率,磁盘空间情况。
  • 网络层监控,网络情况参数。例如:网关流量情况,丢包率,错包率,连接数等等。

扩展:Linux中常见的监控命令

1.top 			系统时间 登录用户  负载 进程 cpu 内存 swap    进程详细信息
2.htop(eple)   系统时间 登录用户  负载 进程 cpu 内存 swap   进程详细信息 支持鼠标 树状 快捷键
3.uptime 	    当前系统时间、登录用户、负载 
4.free			监控内存
5.vmstat		程、虚存、页面交换空间及 CPU
5.iostat		磁盘I/O统计
6.df			硬盘 -h block	-i inode
7.iftop			流量监控工具
8.nethogs		查看进程占用的网络带宽
9.iotop			进程占用的硬盘I/O


shell脚本监控服务器
没有监控工具的时候,shell脚本+定时任务
[root@k8s ~]# cat mem_alter.sh
#!/bin/bash
MEM=`free -m|awk 'NR==2{print $NF}'`
if [ $MEM -lt 100 ];then
echo "web服务器 192.168.2.104 可用内存不足,当前可用内存
$MEM" | mail -s "web服务器内存不足" [email protected]
fi

缺点:效率低,不能实现集中报警,不能分析历史数据
什么时候用shell:我只有一台云主机需要监控,适合shell脚本+定时任务

7.时下最流行的监控软件对比

其实,在 Prometheus 之前,市面已经出现了很多的监控系统,如 Zabbix、Open-Falcon、Nagios 等。那么 Prometheus 和这些监控系统有啥异同呢?我们先简单回顾一下这些监控系统。

1)Zabbix

Zabbix 是一款企业级的分布式开源监控方案。它由 Alexei Vladishev 创建,由 Zabbix SIA 在持续开发和支持。

Zabbix 能够监控网络参数,服务器健康和软件完整性。它提供通知机制,允许用户配置告警,从而快速反馈问题。

基于存储的数据,Zabbix 提供报表和数据可视化,并且支持主动轮询和被动捕获。它的所有报告、统计信息和配置参数都可以通过 Web 页面访问。

Zabbix 核心组件主要是 Agent 和 Server。其中 Agent 主要负责采集数据并通过主动或者被动的方式将采集数据发送到 Server/Proxy。除此之外,为了扩展监控项,Agent 还支持执行自定义脚本。Server 主要负责接收 Agent 发送的监控信息,并进行汇总存储、触发告警等

Zabbix Server 将收集的监控数据存储到 Zabbix Database 中。Zabbix Database 支持常用的关系型数据库,如 MySQL、PostgreSQL、Oracle 等(默认是 MySQL),并提供 Zabbix Web 页面(PHP 编写)数据查询。

由于使用了关系型数据存储时序数据,Zabbix在监控大规模集群时常常在数据存储方面捉襟见肘。所以从 4.2 版本后 Zabbix开始支持 TimescaleDB 时序数据库,不过目前成熟度还不高。

Zabbix 由 Server,Agent,Proxy(可选项)组成:

  • Agent 负责收集数据,并且传输给 Server。
  • Server 负责接受 Agent 的数据,进行保存或者告警。
  • Proxy 负责代理 Server 收集 Agent 传输的数据,并且转发给 Server。Proxy 是安装在被监控的服务器上的,用来和 Server 端进行通信,从而传输数据。

img

Zabbix 的数据采集,主要有两种模式:Server 主动拉取数据和 Agent 主动上报数据。

以 Server 拉取数据为例,用户在 Web-portal 中,设置需要监控的机器,配置监控项,告警策略。Zabbix-Server 会根据策略主动获取 Agent 的数据,然后存储到 MySQL 中。

同时根据用户配置的策略,判定是否需要告警。用户可以在 Web 端,以图表的形式,查看各种指标的历史趋势。

在 Zabbix 中,将 Server 主动拉取数据的方式称之为 Active Check。这种方式配置起来较为方便,但是会对 Zabbix-Server 的性能存在影响。

所以在生产环境中,一般会选择主动推送数据到 Zabbix-Server 的方式,称之为 Trapper。

即用户可以定时生成数据,再按照 Zabbix 定义的数据格式,批量发送给 Zabbix-Server,这样可以大大提高 Server 的处理能力。

Proxy,作为可选项,起到收集 Agent 数据并且转发到 Server 的作用。

当 Server 和 Agent 不在一个网络内,就需要使用 Proxy 做远程监控,特别是远程网络有防火墙的时候。同时它也可以分担 Server 的压力,降低 Server 处理连接数的开销。

随着云计算,弹性计算,容器器技术,SaaS等IT形态的出现,Zabbix已经无法覆盖这些监控,或者只能通过兼容的方式实现对其监控,如在一个主机上去监控这些对象,而这些对象则变成了主机的某个指标。

2)open-falcon

Open-Falcon 是小米开源的企业级监控工具,用 Go 语言开发而成。这是一款灵活、可扩展并且高性能的监控方案,包括小米、滴滴、美团等在内的互联网公司都在使用它。它的主要组件包括:

Falcon-agent:这是用 Go 语言开发的 Daemon 程序,运行在每台 Linux 服务器上,用于采集主机上的各种指标数据,主要包括 CPU、内存、磁盘、文件系统、内核参数、Socket 连接等,目前已经支持 200 多项监控指标。并且,Agent 支持用户自定义的监控脚本。

Hearthbeat server:简称 HBS 心跳服务。每个 Agent 都会周期性地通过 RPC 方式将自己的状态上报给 HBS,主要包括主机名、主机 IP、Agent 版本和插件版本,Agent 还会从 HBS 获取自己需要执行的采集任务和自定义插件。

Transfer:负责接收 Agent 发送的监控数据,并对数据进行整理,在过滤后通过一致性 Hash 算法发送到 Judge 或者 Graph。

Graph:这是基于 RRD 的数据上报、归档、存储组件。Graph 在收到数据以后,会以 rrdtool 的数据归档方式来存储,同时提供 RPC 方式的监控查询接口。

Judge 告警模块:Transfer 转发到 Judge 的数据会触发用户设定的告警规则,如果满足,则会触发邮件、微信或者回调接口。这里为了避免重复告警引入了 Redis 暂存告警,从而完成告警的合并和抑制。

Dashboard:这是面向用户的监控数据查询和告警配置界面。

3)nagios+cacti

img

Nagios 原名为 NetSaint,由 Ethan Galstad 开发并维护。Nagios 是一个老牌监控工具,由 C 语言编写而成,主要针对主机监控(CPU、内存、磁盘等)和网络监控(SMTP、POP3、HTTP 和 NNTP 等),当然也支持用户自定义的监控脚本

它还支持一种更加通用和安全的采集方式:NREP(Nagios Remote Plugin Executor)。它会先在远端启动一个 NREP 守护进程,用于在远端主机上运行检测命令,在 Nagios 服务端用 check nrep 的 plugin 插件通过 SSL 对接到 NREP 守护进程执行相应的监控行为。相比 SSH 远程执行命令的方式,这种方式更加安全。

4)Prometheus(普罗米修斯)

随着这几年云环境的发展,Prometheus 被广泛地认可。它的本质是时间序列数据库,而 Zabbix 采用 MySQL 进行数据存储。

从上面我们对时间序列数据库的分析来看,Prometheus 能够很好地支持大量数据的写入。

它采用拉的模式(Pull)从应用中拉取数据,并通过 Alert 模块实现监控预警。据说单机可以消费百万级时间序列。

一起来看看 Prometheus 的几大组件:

  • Prometheus Server,用于收集和存储时间序列数据,负责监控数据的获取,存储以及查询。
  • 监控目标配置,Prometheus Server 可以通过静态配置管理监控目标,也可以配合 Service Discovery(K8s,DNS,Consul)实现动态管理监控目标。
  • 监控目标存储,Prometheus Server 本身就是一个时序数据库,将采集到的监控数据按照时间序列存储在本地磁盘中。
  • 监控数据查询,Prometheus Server 对外提供了自定义的 PromQL 语言,实现对数据的查询以及分析。
  • Client Library,客户端库。为需要监控的服务生成相应的 Metrics 并暴露给 Prometheus Server。
  • 当 Prometheus Server 来 Pull 时,直接返回实时状态的 Metrics。通常会和 Job 一起合作。
  • Push Gateway,主要用于短期的 Jobs。由于这类 Jobs 存在时间较短,可能在 Prometheus 来 Pull 之前就消失了。为此,这些 Jobs 可以直接向 Prometheus Server 端推送它们的 Metrics。
  • Exporters,第三方服务接口。将 Metrics(数据集合)发送给 Prometheus。
  • Exporter 将监控数据采集的端点,通过 HTTP 的形式暴露给 Prometheus Server,使其通过 Endpoint 端点获取监控数据。
  • Alertmanager,从 Prometheus Server 端接收到 Alerts 后,会对数据进行处理。例如:去重,分组,然后根据规则,发出报警。
  • Web UI,Prometheus Server 内置的 Express Browser UI,通过 PromQL 实现数据的查询以及可视化。

img

​ Prometheus 架构图

说完了 Prometheus 的组件,再来看看 Prometheus 的架构:

Prometheus Server 定期从 Jobs/Exporters 中拉 Metrics。同时也可以接收来自 Pushgateway 发过来的 Metrics。

Prometheus Server 将接受到的数据存储在本地时序数据库,并运行已定义好的 alert.rules(告警规则),一旦满足告警规则就会向 Alertmanager 推送警报。

Alertmanager 根据配置文件,对接收到的警报进行处理,例如:发出邮件告警,或者借助第三方组件进行告警。

WebUI/Grafana/APIclients,可以借助 PromQL 对监控数据进行查询。

5)综合对比

img

综合对比如上面的表格,从开发语言上看,为了应对高并发和快速迭代的需求,监控系统的开发语言已经慢慢从 C 语言转移到 Go。不得不说,Go 凭借简洁的语法和优雅的并发,在 Java 占据业务开发、C 占领底层开发的情况下,准确定位中间件开发需求,在当前开源中间件产品中被广泛应用。

从系统成熟度上看,Zabbix 和 Nagios 都是老牌的监控系统:Nagios 是在 1999 年出现的,Zabbix 是在 1998 年出现的,系统功能比较稳定,成熟度较高。而 Prometheus 和 Open-Falcon 都是最近几年才诞生的,虽然功能还在不断迭代更新,但站在巨人的肩膀之上,在架构设计上借鉴了很多老牌监控系统的经验。

从系统扩展性方面看,Zabbix 和 Open-Falcon 都可以自定义各种监控脚本,并且 Zabbix 不仅可以做到主动推送,还可以做到被动拉取。Prometheus 则定义了一套监控数据规范,并通过各种 exporter 扩展系统采集能力。

从数据存储方面来看,Zabbix 采用关系数据库保存,这极大限制了 Zabbix 的采集性能;Nagios 和 Open-Falcon 都采用 RDD 数据存储,Open-Falcon 还加入了一致性 hash 算法分片数据,并且可以对接到 OpenTSDB;而 Prometheus 则自研了一套高性能的时序数据库,在 V3 版本可以达到每秒千万级别的数据存储,通过对接第三方时序数据库扩展历史数据的存储。

从配置复杂度上看,Prometheus 只有一个核心 server 组件,一条命令便可以启动。相比而言,其他系统配置相对麻烦,尤其是 Open-Falcon。

从社区活跃度上看,目前 Zabbix 和 Nagios 的社区活跃度比较低,尤其是 Nagios;Open-Falcon 虽然也比较活跃,但基本都是国内公司在参与;Prometheus 在这方面占据绝对优势,社区活跃度最高,并且受到 CNCF 的支持,后期的发展值得期待。

从容器支持角度看,由于 Zabbix 和 Nagios 出现得比较早,当时容器还没有诞生,它们对容器的支持自然比较差;Open-Falcon 虽然提供了容器的监控,但支持力度有限;Prometheus 的动态发现机制,不仅可以支持 Swarm 原生集群,还支持 Kubernetes 容器集群的监控,是目前容器监控最好解决方案;Zabbix 在传统监控系统中,尤其是在服务器相关监控方面,占据绝对优势;而 Nagios 则在网络监控方面有广泛应用。伴随着容器的发展,Prometheus 已开始成为主导及容器监控方面的标配,并且在未来可见的时间内将被广泛应用。

二、zabbix介绍

1.什么是zabbix?

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。这些功能使得Zabbix成为容量规划的理想方案。

Zabbix支持主动轮询和被动捕获。Zabbix所有的报告、统计信息和配置参数都可以通过基于Web的前端页面进行访问。基于Web的前端页面可以确保从任何方面评估网络状态和服务器的健康性。适当的配置后,Zabbix可以在IT基础架构监控方面扮演重要的角色。对于只有少量服务器的小型组织和拥有大量服务器的大型公司也同样如此。

Zabbix是免费的。Zabbix是根据GPL通用公共许可证第2版编写和发行的。这意味着它的源代码都是免费发行的,可供公众任意使用。

zabbix由两部分组成,zabbix server和可选组件zabbix agent。

zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux、Solaris、HP-UX、AIX、Free-BSD,open BSD,OS X等平台上。

2.zabbix功能

概述

Zabbix是一个高度集成的网络监控解决方案,一个简单的安装包中提供多样性的功能。

数据收集

  • 可用性和性能检查
  • 支持SNMP(包括主动轮训和被动获取),IPMI,JMX,VMware监控
  • 自定义检查
  • 按照自定义的间隔收集需要的数据
  • 通过server/proxy+agents来执行

灵活的阀值定义

  • 可以非常灵活的定义问题阈值,称之为触发器,触发器从后端数据库获取参考值

高度可配置化的告警

  • 可根据递增机制,接收方和媒介类型自定义发送告警通知
  • 使用宏变量可以使告警通知更加高效有用
  • 自动相应动作可包含远程命令

实时图表绘制

  • 使用内置图表绘制功能可以将监控项的内容实时绘制成图表

Web监控功能

  • Zabbix可以追踪模拟鼠标在Web网站上的点击操作,来检查Web的功能和响应时间

丰富的可视化选项

  • 支持创建自定义的图表,一个试图集中展现多个监控项
  • 网络拓扑图
  • 以仪表盘的样式自定义大屏展现和幻灯片轮询播放
  • 报表
  • 监控内容的高级(业务)视图

历史数据存储

  • 数据库数据
  • 可配置历史数据
  • 内置数据管理机制(housekeeping)

配置简单

  • 将被监控对象添加为主机
  • 在数据库中获取主机进行监视
  • 应用模板来监控设备

使用模板

  • 在模板中分组检查
  • 模板可以关联其他模板

网络发现

  • 自动发现网络设备
  • 监控代理自动注册
  • 发现文件系统,网络接口和SNMP OID值

快捷的Web界面

  • PHP Web前端
  • 可从任何地方访问
  • 你可以定制自己的操作方式
  • 审核日志

Zabbix API

  • Zabbix API为Zabbix 提供了对外的可编程接口,用于批量操作,第三方软件集成和其他目的

权限管理系统

  • 安全用户认证
  • 特定用户可以限制访问特定的视图

功能强大,易于扩展的agent

  • 部署在被监控对象上
  • 支持Linux和Windows

二进制代码

  • 为了性能和更少内存的占用,用C语言编写
  • 便于移植

为复杂环境准备

  • 使用Zabbix proxy代理服务器,使得远程监控更简单

3.zabbix概述

结构

Zabbix由几个主要的软件组件构成,这些组件的功能如下。
在这里插入图片描述

SERVER

Zabbix server 是agent程序报告系统可用性、系统完整性和统计数据的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。

数据库存储

所有配置信息和Zabbix收集到的数据都被存储在数据库中。

WEB界面

为了从任何地方和任何平台都可以轻松的访问Zabbix, 我们提供基于Web的Zabbix界面。该界面是Zabbix Server的一部分,通常(但不一定)跟Zabbix Server运行在同一台物理机器上。

如果使用SQLite,Zabbix Web界面必须要跟Zabbix Server运行在同一台物理机器上。

PROXY代理服务器

Zabbix proxy 可以替Zabbix Server收集性能和可用性数据。Proxy代理服务器是Zabbix软件可选择部署的一部分;当然,Proxy代理服务器可以帮助单台Zabbix Server分担负载压力。

AGENT监控代理

Zabbix agents监控代理 部署在监控目标上,能够主动监控本地资源和应用程序,并将收集到的数据报告给Zabbix Server。

数据流

此外,了解Zabbix内部的数据流同样很重要。监控方面,为了创建一个监控项(item)用于采集数据,必须先创建一个主机(host)。告警方面,在监控项里创建触发器(trigger),通过触发器(trigger)来触发告警动作(action)。 因此,如果想收到Server XCPU负载过高的告警,必须完成以下几个动作:

1.为Server X创建一个host并关联一个用于对CPU进行监控的监控项(Item)。

2.创建一个Trigger,设置成当CPU负载过高时会触发

3.Trigger被触发,发送告警邮件

虽然看起来有很多步骤,但是使用模板的话操作起来其实很简单,Zabbix这样的设计使得配置机制非常灵活易用。

4.相关定义

主机 (host)

- 一台你想监控的网络设备,用IP或域名表示


主机组 (host group)

- 主机的逻辑组;它包含主机和模板。一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主机组。


监控项 (item)

- 想要接收的主机的特定数据,一个度量数据。


触发器 (trigger)

- 一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式

当接收到的数据高于阈值时,触发器从“OK”变成“Problem”状态。当接收到的数据低于阈值时,触发器保留/返回一个“OK”的状态。


事件 (event)

- 单次发生的需要注意的事情,例如触发器状态改变或发现有监控代理自动注册


异常 (problem)

- 一个处在“异常”状态的触发器


动作 (action)

- 一个对事件做出反应的预定义的操作。

一个动作由操作(例如发出通知)和条件(当时操作正在发生)组成


升级 (escalation)

- 一个在动作内执行操作的自定义场景; 发送通知/执行远程命令的序列


媒介 (media)

- 发送告警通知的手段;告警通知的途径


通知 (notification)

- 利用已选择的媒体途径把跟事件相关的信息发送给用户


远程命令 (remote command)

- 一个预定义好的,满足一些条件的情况下,可以在被监控主机上自动执行的命令


模版 (template)

- 一组可以被应用到一个或多个主机上的实体(监控项,触发器,图形,聚合图形,应用,LLD,Web场景)的集合

模版的任务就是加快对主机监控任务的实施;也可以使监控任务的批量修改更简单。模版是直接关联到每台单独的主机上。


应用 (application)

- 一组监控项组成的逻辑分组


web 场景 (web scenario)

- 利用一个或多个HTTP请求来检查网站的可用性


前端 (frontend)

- Zabbix提供的web界面


Zabbix API

- Zabbix API允许你使用JSON RPC协议来创建、更新和获取Zabbix对象(如主机、监控项、图形和其他)信息或者执行任何其他的自定义的任务


Zabbix server

- Zabbix软件实现监控的核心程序,主要功能是与Zabbix proxies和Agents进行交互、触发器计算、发送告警通知;并将数据集中保存等


Zabbix agent

- 一个部署在监控对象上的,能够主动监控本地资源和应用的程序


Zabbix proxy

- 一个帮助Zabbix Server收集数据,分担Zabbix Server的负载的程序

5.zabbix进程

Zabbix server是整个Zabbix软件的核心程序。

Server通过轮询和捕获数据,计算是否满足触发器条件,向用户发送通知。它是Zabbix监控代理和Proxy代理报告系统可用性和完整性数据的核心组件。Server自身可以通过简单服务远程检查网络服务(如Web服务器和邮件服务)。

Sever是一个包含了被存储了所有配置,统计方面的和可操作数据的中央仓库,它是监控系统问题升级以至于激活警告管理器的Zabbix中的实体。

基本的Zabbix服务器起作用分三个不同的组件;他们是:Zabbix服务器,Web前端和数据库存储。

Zabbix的所有配置信息都存储在服务器和Web前端进行交互的数据库中。例如,当你通过Web前端(或者API)新增一个条目时,它会被添加到数据库的item表里。然后,Zabbix服务器以每分钟一次的频率查询item表中的活动列表,接着将它存储在Zabbix服务器中的缓存里。这就是为什么Zabbix前端所做的任何更改最多需要花费两分钟才能显示在最新的数据段的原因。

1)服务进程

zabbix服务进程是以守护进程(Daemon)运行的。服务器的启动可以通过执行一下命令来完成:

[root@localhost ~]# cd sbin
[root@localhost ~]# ./zabbix_server

zabbix的命令行参数:
-c --config <file>        配置文件的绝对路径 (默认路径: /etc/zabbix/zabbix_server.conf)
-R --runtime-control <选项>     执行管理能力
-h --help                       帮助提示
-V --version                    显示版本号

命令行参数示例:
[root@localhost ~]# zabbix_server -c /usr/local/etc/zabbix_server.conf
[root@localhost ~]# zabbix_server --help
[root@localhost ~]# zabbix_server -V

2)进程用户

Zabbix server定义了使用非root用户运行,启动后运行在非root用户的环境下,所以使用非root用户运行server是没有任何问题的.

如果您想尝试root用户运行,它会切换到一个硬编码的用户,您可以参考 present,您需要修改配置文件中参数’AllowRoot’的值

如果Zabbix server和agent运行在同一台服务器上,建议您使用不同的用户运行server和agent. 否则, 如果两者都运行相同的用户, 代理可以访问服务器的配置文件, 任何Zabbix管理员级别的用户都可以很容易地检索server的信息, 例如, 数据库密码.

3)配置文件

请看 配置文件 有关Zabbix_server的详细配置选项.

4)启动脚本

当系统启动/关机时启动脚本用来自动启动/停止Zabbix进程,脚本放在目录misc/init.d下.

5)支持平台

由于安全要求和服务器关键任务的操作, UNIX系统是唯一能够提供必要性能,容错和恢复能力的操作系统. Zabbix运转也是市场领先版本.

Zabbix server支持以下平台:

  • Linux
  • Solaris
  • AIX
  • HP-UX
  • Mac OS X
  • FreeBSD
  • OpenBSD
  • NetBSD
  • SCO Open Server
  • Tru64/OSF1

三、zabbix安装

1.安装要求

硬件

内存和磁盘
Zabbix同时需要物理内存和磁盘空间。刚开始使用Zabbix,建议128MB物理内存和256MB可用磁盘空间。然而, 具体需要的内存大小和磁盘空间要根据主机数量和监控参数而定。如果你计划对监控的参数进行长期保存,你应该考虑至少在数据库中预留几个GB的空间,以用来保留历史数据。 每个Zabbix的守护进程需要与数据库服务器建立多个连接。分配给连接的内存数量,取决于数据库引擎的配置。


CPU
根据监控参数及选择的数据库引擎,Zabbix,特别是Zabbix数据库,可能需要大量的CPU资源

硬件配置示例

下表是几个硬件配置的示例:

名称 平台 CPU/内存 数据库 监控主机数量
小型 CentOS 虚拟应用 MySQL InnoDB 100
中型 CentOS 2 CPU cores/2GB MySQL InnoDB 500
大型 RedHat Enterprise Linux 4 CPU cores/8GB RAID10 MySQL InnoDB or PostgreSQL >1000
巨大型 RedHat Enterprise Linux 8 CPU cores/16GB 快速RAID10 MySQL InnoDB or PostgreSQL >10000

具体的配置极其依赖于Active Item数量和轮询频率。如需要进行大规模部署,强烈建议将数据库进行独立部署。

时钟同步

对于Zabbix稳定运行而言,服务获得精确的系统时间是非常重要的。ntpd 是一个最流行的用于同步主机和其他服务器之间的时间的后台程序。对于所有运行Zabbix组件的系统,强烈建议这些系统的时间保持同步。

2.从部署包安装

1)安装源码库配置部署包

安装源码库配置部署包。这个部署包包含了yum配置文件。

#安装3.4版本zabbix
[root@localhost packages]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
#安装4.0版本zabbix
[root@db01 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
[root@db01 ~]# yum clean all

2)安装zabbix部署包

[root@localhost packages]# yum install zabbix-server-mysql zabbix-web-mysql

3)被监控端安装agent包 (zabbix客户端服务)

[root@localhost packages]# yum install zabbix-agent -y

4)创建zabbix依赖数据库

[root@localhost packages]# mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> grant all privileges on zabbix.* to zabbix@'192.168.100.%' identified by 'zabbix';
mysql> quit;

5)安装MySQL数据库 (如果服务器已有数据库则不需下载安装,从初始化数据库开始)

1>配置MySQL的yum源

[root@db02 ~]# cat /etc/yum.repos.d/mysql-community.repo
# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/
enabled=1
gpgcheck=0



2>安装MySQL

[root@db02 ~]# sudo yum install mysql-community-server

3>启动MySQL

[root@db02 ~]#  sudo service mysqld start
Starting mysqld (via systemctl):                           [  OK  ]

4>检查MySQL运行状态

[root@db02 ~]# sudo service mysqld status

6)初始化数据库

[root@localhost packages]# cd /usr/share/doc/zabbix-server-mysql-3.4.15/
[root@localhost packages]# zcat create.sql.gz | mysql -uroot -p123456 zabbix

7) 修改zabbix server端的配置文件

在zabbix_server.conf中编辑数据库配置
[root@localhost packages]# vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

8)启动zabbix server进程

[root@localhost packages]# systemctl start zabbix-server
[root@localhost packages]# systemctl enable zabbix-server   #可设置开机自启

9) 编辑前端的PHP配置

[root@localhostt ~]# vi  /etc/httpd/conf.d/zabbix.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
# php_value date.timezone Europe/Riga  #这行内容更改为以下上海时区(去掉注释)

修改zabbix设置的时区设置,取消注释,并设置正确的时区
php_value date.timezone Asia/Shanghai


10)同步当前系统时间

1.安装ntp时间服务
[root@localhost ~]# yum install ntpdate -y

2.关闭默认的时间同步,然后再进行设置
[root@localhost ~]# timedatectl set-ntp no 

3.查看
[root@localhostt ~]# timedatectl status

4.列出可用时区
[root@localhost ~]# timedatectl list-timezones

5.设置
[root@localhost ~]# timedatectl set-timezone "Asia/Shanghai"

6.更新当前系统时间
[root@localhost ~]# ntpdate ntp1.aliyun.com

11)解决中文乱码问题

[root@localhost ~]# yum -y install wqy-microhei-fonts
[root@localhost ~]# cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf

12)启动http服务

[root@localhostt ~]# systemctl start httpd
[root@localhostt ~]# systemctl enable httpd   #可设置开机自启

Zabbix前端可以在浏览器中通过 http://localhost/zabbix 进行访问。默认的用户名密码为 Admin/zabbix。

3.zabbix自动配置脚本

1)服务端快速安装脚本

#!/bin/bash
#oldboy

#设置解析 注意:网络条件较好时,可以不用自建yum源
# echo '10.0.0.1 mirrors.aliyuncs.com mirrors.aliyun.com repo.zabbix.com' >> /etc/hosts

#安装zabbix源、aliyun YUM源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm


#安装zabbix 
yum install -y zabbix-server-mysql zabbix-web-mysql

#安装启动 mariadb数据库
yum install -y  mariadb-server
systemctl start mariadb.service

#创建数据库
mysql -e 'create database zabbix character set utf8 collate utf8_bin;'
mysql -e 'grant all privileges on zabbix.* to zabbix@localhost identified by "zabbix";'

#导入数据
zcat /usr/share/doc/zabbix-server-mysql-3.4.15/create.sql.gz|mysql -uzabbix -pzabbix zabbix

#配置zabbixserver连接mysql
sed -i.ori '115a DBPassword=zabbix' /etc/zabbix/zabbix_server.conf

#添加时区
sed -i.ori '18a php_value date.timezone  Asia/Shanghai' /etc/httpd/conf.d/zabbix.conf

#解决中文乱码
yum -y install wqy-microhei-fonts
\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf

#启动服务
systemctl start zabbix-server
systemctl start httpd

#写入开机自启动
chmod +x /etc/rc.d/rc.local
cat >>/etc/rc.d/rc.local<<EOF
systemctl start mariadb.service
systemctl start httpd
systemctl start zabbix-server
EOF

#输出信息
echo "浏览器访问 http://`hostname -I|awk '{print $1}'`/zabbix"

2)客户端快速安装脚本

#!/bin/bash
#oldboy

#设置解析
# echo '10.0.0.1 mirrors.aliyuncs.com mirrors.aliyun.com repo.zabbix.com' >> /etc/hosts

#安装zabbix源、aliyu nYUM源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm


#安装zabbix客户端
yum install zabbix-agent -y
sed -i.ori 's#Server=127.0.0.1#Server=192.168.100.102#' /etc/zabbix/zabbix_agentd.conf
systemctl start  zabbix-agent.service

#写入开机自启动
chmod +x /etc/rc.d/rc.local
cat >>/etc/rc.d/rc.local<<EOF
systemctl start  zabbix-agent.service
EOF

3)测试连通性

服务端安装zabbix-get检测工具
[root@localhost ~]# yum install zabbix-get -y


在服务端进行测试,只能在服务端进行测试
[root@localhost ~]# zabbix_get -s 192.168.100.105 -p 10050 -k "system.cpu.load[all,avg1]"
0.000000
[root@localhost ~]# zabbix_get -s 192.168.100.106 -p 10050 -k "system.cpu.load[all,avg1]"
0.000000

猜你喜欢

转载自blog.csdn.net/weixin_52492280/article/details/114677539