博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zabbix 4.0安装
阅读量:6944 次
发布时间:2019-06-27

本文共 11001 字,大约阅读时间需要 36 分钟。

#zabbix基本


一. 监控的重要性

应用运维的三大任务之一:故障处理。如何找到故障就成了一个问题。

通过客户反馈可以得知故障的发生,但是从客户感知到故障到提交故障可能周期很长。因为有些客户即使发现了无法访问服务也不会提交故障。

即使客户提交故障了,还需要从客户的描述中找出故障发生的位置,这中间可能还需要很长的时间。

这时,我们就需要一个能随时监控系统并提供报警功能的软件了。


二. 监控的项目有哪些

我们的整个应用系统包括硬件和软件两大部分。

硬件:包括主机、交换机、路由器、网线等各种肉眼能看得到的设备。
软件:提供服务的各种软件、各项软件的相关指标、系统使用率等
以上无论哪个部分发生故障都可能导致业务的中断。
并且因业务系统访问压力的增大,对系统资源的使用率持续上升,直至上升到系统资源完全被占用导致业务不可用,这种情况也是非常有必要注意的。这种情况下,就需要我们通过向外扩展增加提供服务的主机,来减轻系统的压力。


三. 监控系统的实现:

  1. 数据采集

在对一个应用系统进行监控时,各项数据可以通过系统内建的接口获取信息,也可以自己收集,有时数据采集后还需要计算。如ifconfig中RX packets是一个累加数据,单纯采集数据无实际意义,我们需要的单位时间内的数量,这种情况下就需要进行计算。

  • 需要监控的指标项:

    • 通用指标项:许多服务都需要监控的项目,可定义为模板使用
    • 自定义监控指标:通用监控指标不够用,可自定义一些需要关注的指标,并且还可以再定义为模板使用。
  • 数据采集的方式:

    • 可通过侵入式:如在需监控的主机上安装agent。
    • 通过非侵入式:不需要安装agent。基于ssh,telnet实现。
  • 若监控系统布署好之后,系统内又新增了主机,为了方便新增监控主机,监控系统有自动发现能力。自动发现的方式通常有以下两种:
    • 可以自动发现网络中新加入的主机,并基于某种认证机制进行监控。
    • 可以自动发现主机中的服务,对于后期新增的服务也可自动发现
  1. 数据存储
  • 监控系统获取的各项指标数据需要保存在本地磁盘上,若是零散的数据,对统计和查看都各种不方便,故可保存在自开发的数据系统中,也可以使用现有的数据系统。
  • zabbix使用mysql和pgsql,因这些数据系统自身的局限性,在某些大型场景下,数据库很容易成为系统瓶颈。

    1. 定义合理的阈值区间并向有能力处理的人发出警告
  • 前提:基于某个监控项的某个采集数据高于合理阈值范围。这就需要长期对系统监控,并调整各项指标项的阈值。之后再根据阈值,设定一个布尔表达式,满足条件时(true)就发出警告。
  • 另外还可以借助一些配置系统,在警告前做出一些自愈操作。如重启服务等。

    1. 数据可视化处理
  • 人类在几千年的进化中,并没有进化为擅长处理数据的物种。所以就需要把数据以流式化方式处理为图表,以便于人处理数据。

四. 现有监控系统简单比较:

  • cacti:基于snmp,结合crontab采集数据,把采集的数据存入rrd(round robin databases)数据库。且cacti的报警功能弱暴了。通常配合nagios使用。但这两种数据库结合使用经常会出现各种问题。

    • rrd数据库保存下来的数据只有一定时长的。如保存一年的数据,无论什么时候看,只能看到一整年的数据,之前的数据全部被删除。
  • nagios:周期性采集数据,采集后立即判定数据是否达到指定的阈值,达到或超过就告警,达不到就把数据丢掉。

  • zabbix:传统意义上的监控系统
    • 内建有数据采集功能,存储数据借助于mysql(pgsql)实现。
    • 告警:告警前可做阈操作。有报警升级操作。先给处理人员告警,过一小时未处理好,向上一级领导告警,再过一小时未处理好,再向更上一级领导告警。
    • 可通过流式化处理把数据以图形化方式显示出来。

五.zabbix的特性:

  1. 数据采集:
    • zabbix可通过snmp, ssh/telnet, agent, ipmi, jmx(java Management eXtensions)等方式采集数据,也可自定义采样机制(基于agent实现)。
  2. 告警:
    • 告警前可做阈操作。
    • 告警升级机制:
    • 先给处理人员告警,过一小时未处理好,向上一级领导告警,再过一小时未处理好,再向更上一级领导告警。
  3. 数据存储:
    • 支持mysql及pgsql
  4. 数据展示:
    • 通过流式化处理把数据以图形化方式显示出来。
    • 实时绘图:graph, screen, slide show, map
    • 另外还支持模板、网络自动发现、分布式监控

六. zabbix的架构体系:

  • zabbix_server:服务端守护进程:负责数据采集
  • zabbix_agentd:agent守护进程;
  • zabbix_proxy:代理服务器,可选组件;
  • zabbix_get:命令行工具,手动测试向agent发起数据采集请求;
  • zabbix_sender:命令行工具,运行于agent端,手动向server端发送数据;
  • zabbix_java_gateway: java网关;
  • zabbix_database:统一存储,监控数据及配置。MySQL或PostgreSQL;
  • zabbix_web:图形化界面,可查看数据,可管理zabbix
  • zabbix proxy:采集数据,发送给zabbix server。分布式监控的实现,小型网络没必要用。
    zabbix proxy的架构图

七. 各种安装包:

zabbix-agent:被监控端需要安装的组件get和sender:手动测试的命令行工具zabbix-java-gateway:zabbix监控java程序所需要安装的包zabbix-proxy-mysql、zabbix-proxy-sqlite3:zabbix代理端通过什么数据库存储,就安装哪个组件zabbix-server-mysql、zabbix-server-pgsql: zabbix服务端基于mysql和pgsql做存储所需要的包zabbix-web:提供zabbix-gui接口

八. zabbix逻辑组件:

  • 主机组(hostgroups):根据功能定义
  • 主机 (host)
  • 监控项(item)
    • key:实现获取监控的目标上的数据的命令或脚本的名称;
  • 应用(application):同一类监控项的集合;
  • 触发器(trigger):表达式;PROBLEM, OK;
  • 事件(event):
  • 动作(action):由条件(condition)和操作(operation)组件;
  • 媒介(media):发送通知的通道;
  • 通知(notification):
  • 远程命令(remote command):
  • 报警升级():
  • 模板(template):快速定义被监控主机的各监控项的预设项目集合;
  • 图形(graph):用于展示历史数据或趋势数据的图像;
  • 屏幕(screen):由多个graph组成;
  • 维护周期(maintenance)
  • 周期性数据采集的(zobbix poller)
  • 添加主机的方式:
    • 手动添加主机:分成组,向组上的主机套模板.zabbix定义被监控项,监控项定义触发器,根据触发器触发事件(一个触发器上可以触发多个事件)。actions上定义事件。满足触发器条件触发事件。
    • 自动发现:通过ansible或cobbler安装agent,zabbix-server自动扫描主机,通过ping,若回应pong,添加到主机列表并套用模板。

九. zabbix的安装:

  1. 安装 Repository
    # rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

    也可直接创建repo文件,使用如下repo内容:

以下为repo文件内容:

[zabbix]        #提供了zabbx各种功能包。name=Zabbix Official Repository - $basearchbaseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/enabled=1gpgcheck=0gpgkey=http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX[Zabbix Official Repository]            #提供了iksemel及fping。name=Zabbix Official Repositorybaseurl=http://repo.zabbix.com/non-supported/rhel/7/x86_64/enabled=1gpgcheck=0gpgkey=http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX

若不添加Zabbix Official Repository,安装zabbix时会出现如下提示:

Error: Execution of '/bin/yum -d 0 -e 0 -y install zabbix-server-mysql' returned 1: Error: Package: zabbix-server-2.4.8-1.el7.x86_64 (zabbix-2.4)                 Requires: iksemel      Error: Package: zabbix-server-mysql-2.4.8-1.el7.x86_64 (zabbix-2.4)                 Requires: libiksemel.so.3()(64bit)       You could try using --skip-broken to work around the problem       You could try running: rpm -Va --nofiles --nodigest

若报错Requires: libiksemel.so.3()(64bit),需下载libiksemel包:

Error: Package: zabbix-server-mysql-4.0.4-1.el7.x86_64 (zabbix)           Requires: libiksemel.so.3()(64bit) You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest[root@zabbix ~]# wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//iksemel-1.4-6.sdl7.x86_64.rpm--2019-02-19 04:32:35--  http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//iksemel-1.4-6.sdl7.x86_64.rpmResolving springdale.math.ias.edu (springdale.math.ias.edu)... 192.16.204.192Connecting to springdale.math.ias.edu (springdale.math.ias.edu)|192.16.204.192|:80... connected.HTTP request sent, awaiting response... 200 OKLength: 51884 (51K) [application/x-rpm]Saving to: ‘iksemel-1.4-6.sdl7.x86_64.rpm’100%[======================================================================================>] 51,884      93.9KB/s   in 0.5s   2019-02-19 04:32:36 (93.9 KB/s) - ‘iksemel-1.4-6.sdl7.x86_64.rpm’ saved [51884/51884][root@zabbix ~]# lsanaconda-ks.cfg  dump.rdb  iksemel-1.4-6.sdl7.x86_64.rpm  private  redis-4.0.10  redis-4.0.10.tar.gz[root@zabbix ~]# yum install -y iksemel-1.4-6.sdl7.x86_64.rpm Loaded plugins: fastestmirrorExamining iksemel-1.4-6.sdl7.x86_64.rpm: iksemel-1.4-6.sdl7.x86_64Marking iksemel-1.4-6.sdl7.x86_64.rpm to be installedResolving Dependencies--> Running transaction check---> Package iksemel.x86_64 0:1.4-6.sdl7 will be installed--> Finished Dependency ResolutionDependencies Resolved================================================================================================================================ Package                  Arch                    Version                     Repository                                   Size================================================================================================================================Installing: iksemel                  x86_64                  1.4-6.sdl7                  /iksemel-1.4-6.sdl7.x86_64                  112 kTransaction Summary================================================================================================================================Install  1 PackageTotal size: 112 kInstalled size: 112 kDownloading packages:Running transaction checkRunning transaction testTransaction test succeededRunning transaction  Installing : iksemel-1.4-6.sdl7.x86_64                                                                                    1/1   Verifying  : iksemel-1.4-6.sdl7.x86_64                                                                                    1/1 Installed:  iksemel.x86_64 0:1.4-6.sdl7                                                                                                   Complete!
  1. 安装 Zabbix server, frontend, agent(若所有主机都在一个局域网内,可不安装zabbix-proxy-mysql)
# yum -y install zabbix-server-mysql zabbix-proxy-mysql zabbix-web-mysql zabbix-agent mariadb-server
  1. 初始化数据库

提示:如果 Zabbix server 和 Zabbix proxy 安装在相同的主机,它们必须创建不同名字的数据库!

默认情况下,zabbix server配置文件中的DBName是zabbix,zabbix proxy配置文件中DBName是zabbix_proxy。

  • 创建用户
# mysql -uroot -ppasswordmysql> create database zabbix character set utf8 collate utf8_bin;mysql> create database zabbix_proxy character set utf8 collate utf8_bin;    #可选mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';mysql> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'password';     #可选mysql> flush privileges;mysql> quit;
  • 初始化数据库
[root@lxk ~]# cd /usr/share/doc/zabbix-proxy-mysql-4.0.2/[root@lxk zabbix-proxy-mysql-4.0.2]# zcat schema.sql.gz > schema.sql    #可选[root@lxk zabbix-proxy-mysql-4.0.2]# cd ../zabbix-server-mysql-4.0.2/    #可选[root@lxk zabbix-server-mysql-4.0.2]# zcat create.sql.gz > create.sql[root@lxk zabbix-server-mysql-4.0.2]# mysql -uroot -hlocalhost -pMariaDB [(none)]> use zabbix_proxy;    #可选MariaDB [zabbix_proxy]> source /usr/share/doc/zabbix-proxy-mysql-4.0.2/schema.sql;    #可选MariaDB [zabbix_proxy]> use zabbix;MariaDB [zabbix]> source /usr/share/doc/zabbix-server-mysql-4.0.2/create.sql;
  1. 为服务端指定数据库密码

编辑 /etc/zabbix/zabbix_server.conf以及/etc/zabbix/zabbix_proxy.conf,把其中的DBPassword值改为对应密码

DBPassword=password
  1. 设置时区

编辑 /etc/httpd/conf.d/zabbix.conf, 设置时区

# php_value date.timezone Asia/Shanghai
  1. 启动zabbix服务端和agent线程
# systemctl restart zabbix-server zabbix-agent httpd# systemctl enable zabbix-server zabbix-agent httpd
  1. 修改/usr/share/zabbix
[root@nfs zabbix]# chown -R apache.apache ../zabbix/
  1. 图形化安装:
访问zabbix-serverhttp://zabbix-server IP/zabbix/setup.php配置完成后配置文件会保存在以下文件/etc/zabbix/web/zabbix.conf.php安装完成后,默认用户为Admin,默认密码为zabbix

十.服务端基本配置:

[root@nfs ~]# grep "^[^[:space:]]#\+" /etc/zabbix/zabbix_server.conf############ GENERAL PARAMETERS #################### Option: ListenPort      #服务监听的端口### Option: SourceIP        #服务器端若有多个地址,使用哪个地址与agent端连接。### Option: LogType         #指明日志保存位置,syslog、文件、标准输出### Option: LogFile         #日志保存的文件名### Option: LogFileSize     #日志文件大小,超出大小自动滚动,0为不限制大小。### Option: DebugLevel      #debug级别,详见配置文件解释。一般为3### Option: PidFile         #PID文件位置### Option: SocketDir       #基于UNIX SOCKET通讯时的SOCKET文件位置### Option: DBHost          #数据库IP### Option: DBName          #数据库名称### Option: DBSchema        #数据库方案,即Mysql还是pgsql### Option: DBUser          #连接数据库的用户### Option: DBPassword      #连接数据库用户的密码### Option: DBSocket        #DBSocket位置### Option: DBPort          #数据库端口### Option: HistoryStorageURL       #### Option: HistoryStorageTypes     #

十一.zabbix-agent端配置:

[root@nfs ~]# grep "^[^[:space:]]####\+" /etc/zabbix/zabbix_agentd.conf 一般参数############ GENERAL PARAMETERS #################被动检查相关##### Passive checks related主动检查相关##### Active checks related高级配置############ ADVANCED PARAMETERS #################自定义监控参数####### USER-DEFINED MONITORED PARAMETERS #######加载的模块####### LOADABLE MODULES #######安全认证相关:局域网内无需配置####### TLS-RELATED PARAMETERS #######
  1. GENERAL PARAMETERS
### Option: PidFile         #PID文件路径### Option: LogType         #日志类型### Option: LogFile         #日志文件位置### Option: LogFileSize     #日志文件大小### Option: DebugLevel      #debug级别### Option: SourceIP        #与server端连接的IP地址### Option: EnableRemoteCommands    #是否允许远程命令### Option: LogRemoteCommands       #远程命令是否记录在日志中。
  1. Passive checks related
### Option: Server              #server端IP### Option: ListenPort          #server端端口### Option: ListenIP            #agent监听的地址### Option: StartAgents         #启动几个agent
  1. Active checks related
### Option: ServerActive### Option: Hostname### Option: HostnameItem### Option: HostMetadata### Option: HostMetadataItem### Option: RefreshActiveChecks### Option: BufferSend### Option: BufferSize### Option: MaxLinesPerSecond

十二.启动zabbix-agent:

server端的agent无需设置选项,安装好之后纳入server端监控的方法:

直接启动agent--> 在zabbix-server的web-gui页上点击configuration --> hosts.找到Zabbix server并点击disabled --> 在弹出的消息中点击enable。

zabbix server的Availability列会显示当前采集数据的方式。ZBX为通过zabbix-agent方式。

转载于:https://blog.51cto.com/11975865/2344911

你可能感兴趣的文章
transform,
查看>>
好一朵美丽的spacer,
查看>>
json,
查看>>
一:Redis的7个应用场景
查看>>
开启vue源码的解析攻略---认识flow
查看>>
Promise源码深入理解
查看>>
acm 2031
查看>>
【HDOJ】4080 Stammering Aliens
查看>>
Sublime的Package Control的安装
查看>>
从一到二:利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试...
查看>>
Spark集群 + Akka + Kafka + Scala 开发(4) : 开发一个Kafka + Spark的应用
查看>>
HDU1078 FatMouse and Cheese(记忆化搜索)
查看>>
Codeforces Round #437 C. Ordering Pizza
查看>>
leetcode 1 A+B problems
查看>>
在windows xp 平台上安装mvc4失败
查看>>
July 算法习题 - 字符串4(全排列和全组合)
查看>>
Hadoop部署方式-完全分布式(Fully-Distributed Mode)
查看>>
Gerrit和Gitlab服务器的集成
查看>>
整理阅读的论文(五)
查看>>
补全基础资料
查看>>