CentOS7 部署zabbix4.2

时间:2023-03-08 20:31:32

zabbix我就不介绍了吧,但是可能又有些小白,我还是介绍一下吧,嘿嘿!

一:什么是zabbix及优缺点(对比cacti和nagios)

Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

agent端:主机通过安装agent方式采集数据。

server端:通过收集agent发送的数据,写入数据库(MySQL,ORACLE等),再通过php+apache在web前端展示.

zabbix = cacti + nagios

优点:基于两款工具优点于一身并更强大,实现企业级分布式监控。

缺点:2.2版本带宽占用大但是升级到2.4版本后更节省了带宽资源,其它再无发现。

二:功能

1:zabbix的功能

数据收集

灵活的阈值定义

高度可配置的告警

实时绘图

web监控能力

广泛的可视化选项

历史数据存储

容易配置

使用模板

网络发现

快速的web接口

Zabbix API

权限系统

功能齐全并且易于扩展的代理(agent)

二进制守护进程

适合复杂环境

2:可监控对象

设备:服务器,路由器,交换机

软件:操作系统,网络,应用程序

3:主机性能指标监控

故障监控: down机,服务不可用,主机不可达

二:工作原理

一个监控系统运行的大概的流程是这样的:

zabbix agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agent收集数据分为主动和被动两种模式:

主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy

被动:server向agent请求获取监控项的数据,agent返回数据。

三:zabbix的组件及进程

1:重要组件

zabbix由以下几个组件部分构成:

(1)Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;

(2)Database Storage:专用于存储所有配置信息,以及由zabbix收集的数据;

(3)Web interface:zabbix的GUI接口,通常与Server运行在同一台主机上;

(4)Proxy:可选组件,常用于分布监控环境中,代理Server收集部分被监控端的监控数据并统一发往Server端;

(5)Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端;

注:zabbix node也是 zabbix server的一种 。

2:常见进程

默认情况下zabbix包含5个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一个zabbix_java_gateway是可选,这个需要另外安装。下面来分别介绍下他们各自的作用。

(1)zabbix_agentd:

客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等。

(2)zabbix_get

zabbix工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令。通常用户排错。例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。

(3)zabbix_sender

zabbix工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。

(4)zabbix_server

zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server

备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。

(5)zabbix_proxy

zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到server里。为什么要用代理?代理是做什么的?卖个关子,请继续关注运维生存时间zabbix教程系列。

(6)zabbix_java_gateway

zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。

四:zabbix监控环境中基本概念

1:主机(host):要监控的网络设备,可由IP或DNS名称指定;

2:主机组(host group):主机的逻辑容器,可以包含主机和模板,但同一个组织内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用;

3:监控项(item):一个特定监控指标的相关的数据;这些数据来自于被监控对象;item是zabbix进行数据收集的核心,相对某个监控对象,每个item都由"key"标识;

4:触发器(trigger):一个表达式,用于评估某监控对象的特定item内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从"OK"转变为"Problem",当数据再次恢复到合理范围,又转变为"OK";

5:事件(event):触发一个值得关注的事情,比如触发器状态转变,新的agent或重新上线的agent的自动注册等;

6:动作(action):指对于特定事件事先定义的处理方法,如发送通知,何时执行操作;

7:报警升级(escalation):发送警报或者执行远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等;

8:媒介(media):发送通知的手段或者通道,如Email、Jabber或者SMS等;

9:通知(notification):通过选定的媒介向用户发送的有关某事件的信息;

10:远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下时自动执行;

11:模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、appication以及low-level discovery rule;模板可以直接链接至某个主机;

12:应用(application):一组item的集合;

13:web场景(web scennario):用于检测web站点可用性的一个活多个HTTP请求;

14“”前端(frontend):Zabbix的web接口;

五:zabbix的监控架构

在实际监控架构中,zabbix根据网络环境、监控规模等 分了三种架构: server-client 、master-node-client、server-proxy-client三种 。

1:server-client架构

也是zabbix的最简单的架构,监控机和被监控机之间不经过任何代理 ,直接由zabbix server和zabbix agentd之间进行数据交互。适用于网络比较简单,设备比较少的监控环境 。

2:server-proxy-client架构

其中proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身并不存放数据,只是将agentd发来的数据暂时存放,而后再提交给server 。该架构经常是和master-node-client架构做比较的架构 ,一般适用于跨机房、跨网络的中型网络架构的监控。

3:master-node-client架构

该架构是zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境 。每个node同时也是一个server端,node下面可以接proxy,也可以直接接client 。node有自已的配置文件和数据库,其要做的是将配置信息和监控数据向master同步,master的故障或损坏对node其下架构的完整性。

其实zabbix做的还是挺人性化的,给了我们下载地址:http://repo.zabbix.com/ 里面可以选很多版本,但这里就给大家提供一个目前最新版本4.2的部署及添加客户端方式。

胡扯了一大通,现在咱们开始吧(喝口水)

rpm -ivh http://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm #这里给搭建提供的时4.2yum源,你们安装那个版本的zabbix就要用那个版本的yum源,不然可能会报错,当然我也没有试过(略略略),不过最好还是不要试。

yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent #安装服务端,安装web界面,安装客户端,默认目录会在/etc下。

因为需要MySQL数据库的支持我这里用的是5.7的,可以根据自己的实际环境选择安装

rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

yum install mysql-community-server (慢慢装吧,下载需要时间的)

systemctl start mysqld #安装完之后启动MySQL数据库

systemctl enable mysqld #设置开机自启MySQL数据库

Mysql5.7默认安装之后root是有密码的。
为了加强安全性,MySQL5.7为root用户随机生成了一个密码,在error log中,关于error log的位置,如果安装的是RPM包,则默认是/var/log/mysqld.log。
只有启动过一次mysql才可以查看临时密码
grep 'temporary password' /var/log/mysqld.log #会反馈给你们一个临时密码的

mysql -u root -p #登录MySQL数据库

使用刚刚反馈的临时MySQL密码登录

set password = password(‘123456’) ; #设置密码

flush privileges; #保存配置

再次进入MySQL数据库

mysql -u root -p

输入刚刚改的123456密码进入数据库

create database zabbix character set utf8 collate utf8_bin;   #创建数据库实例

grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix'; #授权所有主机访问数据库实例zabbix,用户名/密码:zabbix/zabbix

grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; #授权localhost主机名访问数据库实例zabbix,用户名/密码:zabbix/zabbix

grant all privileges on zabbix.* to zabbix@localhost.localdomain identified by 'zabbix';  #授权localhost.localdomain主机访问数据库实例zabbix,用户名/密码:zabbix/zabbix

flush privileges; #保存配置

systemctl restart mysqld #重启数据库

whereis zabbix

zabbix: /usr/lib/zabbix /etc/zabbix /usr/share/zabbix #安装完会生成三个目录

cd /etc/zabbix/

总用量 28
drwxr-x---. 2 apache apache 56 4月 18 11:31 web
-rw-r--r--. 1 root root 10632 4月 18 11:08 zabbix_agentd.conf  #客户端主配文件
drwxr-xr-x. 2 root root 38 4月 17 14:33 zabbix_agentd.d
-rw-r-----. 1 root zabbix 15536 4月 17 14:53 zabbix_server.conf  #服务端主配文件

cp zabbix_server.conf zabbix_server.conf.bak #要养成先备份后修改的好习惯哦

vim zabbix_server.conf  #修改一下几项即可

DBHost=localhost          # 数据主机名,默认是#号的,可不修改
DBName=zabbix            # 数据库实例
DBUser=zabbix              # 用户名
DBPassword=zabbix      # 密码,这里设置的密码要和数据库的里的要一致

systemctl start zabbix-server #启动zabbix-server

systemctl enable zabbix-server #设置开机启动zabbix-server服务

vim /etc/httpd/conf.d/zabbix.conf #修改标绿的位置,默认不是Asia/Shanghai,改成这个Asia/Shanghai即可

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 Asia/Shanghai

systemctl start httpd #启动httpd服务

systemctl enable httpd #设置开机启动httpd服务

在浏览器输入地址http://服务器ip/zabbix/,出现欢迎界面,点击下一步

CentOS7 部署zabbix4.2

接下来点击 Next setup

CentOS7 部署zabbix4.2

从上图可以看到zabbix相关组件配置,继续点击 Next setup

CentOS7 部署zabbix4.2

上图中配置好之后,继续点击 Next setup

CentOS7 部署zabbix4.2

上图中,name尽量取有意义的名字,继续点击 Next setup

CentOS7 部署zabbix4.2

到这一步可以看到全部配置,确认无误后点击 Next setup

CentOS7 部署zabbix4.2

登录zabbix

CentOS7 部署zabbix4.2

登录之后点击 管理-用户-点击Admin,可以设置超级管理基本属性,例如语言和主题
点击 配置-主机,可以看到如下图,接下来安装zabbix客户端

CentOS7 部署zabbix4.2

这里咱们已经安装过zabbix-agent客户端了,修改下主配文件

vim /etc/zabbix/zabbix_agentd.conf

# 主要配置如下,默认即可
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server

systemctl start zabbix-agent #启动zabbix-agent客户端

systemctl enable zabbix-agent #设置开机自启zabbix-agent客户端

到这就部署完成了!

忍耐是痛苦的,但它的果实是甜蜜的。