大数据技术之集群监控——Zabbix
Zabbix集群监控
Zabbix简介
Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件(包括硬件和软件)。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警(过程繁杂)。这样可以快速反馈服务器的问题。基于已存储的数据(监控集群收集的数据),Zabbix提供了出色的报告和数据可视化功能。
Zabbix不仅用于大数据集群的监控,还可以用在运维机器监控上。
简单来说,zabbix-agent监控部署所在机器的硬件和软件资源情况,并将数据汇报给zabbix-server,zabbix-server收集到对应数据后,进行判断,符合条件则执行触发器,执行相应操作。zabbix-server收集到的数据则存储在db中(mysql),一般包括监控的配置信息和监控汇报的数据信息。zabbix-web则是利用db存储的信息进行可视化的展示。
Zabbix部署
集群规划
进程 | hadoop116节点 | hadoop117节点 | hadoop118节点 | |||
---|---|---|---|---|---|---|
zabbix-agent | 1 | 1 | 1 | |||
zabbix-server | 1 | |||||
mysql | 1 | |||||
zabbix-web | 1 |
准备工作
关闭集群
如果集群开启,先关闭集群。因为安装Zabbix前,需要重启虚拟机。这里运行脚本停止集群,之前的文章中有该脚本hdp.sh
可以查阅以前写的文章,亦可以手动停止集群。
注意:如果使用脚本停止集群发现集群仍然在运行,这是因为hadoop3的集群进程pid存在linux的pid路径下,而这个路径会定期删除pid。所以,当集群挂起时间太久,会存在pid被删除的情况,这样启动脚本去停止集群就会因为找不到集群pid而误认为集群已经停止。
这种情况下,如果集群没有运行任何任务,可以直接关机重启。
关闭防火墙
1 | (base) [dw@hadoop116 bin]$ sudo service iptables stop |
关闭主节点的selinux
修改配置文件/etc/selinux/config**
1
sudo vim /etc/selinux/config
修改如下内容:
最后重启下服务器即可。
配置Zabbix yum源(3台节点)
安装yum源
从阿里云镜像中下载zabbix安装包,并执行安装命令。1
2
3
4
5
6
7
8
9
10
11(base) [dw@hadoop116 bin]$ sudo rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
Retrieving https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
warning: /var/tmp/rpm-tmp.LXisVb: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-release-4.4-1.el7 ################################# [100%]
[dw@hadoop117 ~]$ sudo rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
[dw@hadoop118 ~]$ sudo rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
这里是因为yum的仓库,也就是
/etc/yum.repos.d
路径下的仓库文件镜像源都无法找到zabbix安装包,所以需要配置一个zabbix的镜像仓库。这样通过yum安装就能找到zabbix安装包。上面的命令就是在安装zabbix的仓库镜像源地址。
rpm -ivh
安装一个软件
rpm -Uvh
xxx.rpm 安装一个远程rpm包,只是安装一个仓库地址。
修改为阿里云镜像
因为上面安装的仓库镜像源是国外的,下载速度慢,所以这里替换成国内的镜像源。
hadoop116、hadoop117、hadoop118三台节点,依次执行如下步骤。
查看原始zabbix.repo文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22(base) [dw@hadoop116 bin]$ sudo cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/4.4/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=http://repo.zabbix.com/zabbix/4.4/rhel/7/$basearch/debuginfo/
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=1
[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执行以下命令完成全局替换
1
(base) [dw@hadoop116 bin]$ sudo sed -i 's/http:\/\/repo.zabbix.com/https:\/\/mirrors.aliyun.com\/zabbix/g' /etc/yum.repos.d/zabbix.repo
查看修改之后的zabbix.repo文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23(base) [dw@hadoop116 bin]$ sudo sed -i 's/http:\/\/repo.zabbix.com/https:\/\/mirrors.aliyun.com\/zabbix/g' /etc/yum.repos.d/zabbix.repo
(base) [dw@hadoop116 bin]$ sudo cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/$basearch/debuginfo/
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=1
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
安装Zabbix
在hadoop116、hadoop117、hadoop118 三台节点分别执行以下安装命令:1
2
3
4
5(base) [dw@hadoop116 ~]$ sudo yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent
[dw@hadoop117 ~]$ sudo yum install zabbix-agent
[dw@hadoop118 ~]$ sudo yum install zabbix-agent
配置Zabbix
创建Zabbix数据库
1 | (base) [dw@hadoop116 ~]$ mysql -uroot -p888888 -e"create database zabbix character set utf8 collate utf8_bin" |
导入Zabbix建表语句
1 | (base) [dw@hadoop116 ~]$ zcat /usr/share/doc/zabbix-server-mysql-4.4.10/create.sql.gz | mysql -uroot -p888888 zabbix |
配置Zabbix_Server(hadoop116)
修改zabbix-server配置文件:1
2
3
4
5
6
7
8
9
10(base) [dw@hadoop116 ~]$ sudo vim /etc/zabbix/zabbix_server.conf
(base) [dw@hadoop116 ~]$ sudo vim /etc/zabbix/zabbix_server.conf
DBHost=hadoop116
DBName=zabbix
DBUser=root
DBPassword=888888
配置Zabbix_Agent(三台节点)
修改zabbix-agent配置文件:1
(base) [dw@hadoop116 ~]$ sudo vim /etc/zabbix/zabbix_agentd.conf
按照以下内容进行注释新增等修改:1
2
3
4
5Server=hadoop102
#ServerActive=127.0.0.1
#Hostname=Zabbix server
配置Zabbix_Web时区
修改/etc/httpd/conf.d/zabbix.conf文件:1
(base) [dw@hadoop116 ~]$ sudo vim /etc/httpd/conf.d/zabbix.conf
修改如下内容:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Zabbix monitoring system php web frontend
#
Alias /zabbix /usr/share/zabbix
<Directory "/usr/share/zabbix">
Options FollowSymLinks
AllowOverride None
Require all granted
<IfModule mod_php5.c>
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 max_input_vars 10000
php_value always_populate_raw_post_data -1
<!-- 修改时区 -->
hp_value date.timezone Asia/Shanghai
</IfModule>
</Directory>
启动停止Zabbix
启动Zabbix
1 | (base) [dw@hadoop116 ~]$ sudo systemctl start zabbix-server zabbix-agent httpd |
httpd是apache容器,用于装载web,zabbix的web端是用php写的。
停止Zabbix
1 | (base) [dw@hadoop116 ~]$ sudo systemctl stop zabbix-server zabbix-agent httpd |
连接Zabbix_Web数据库
浏览器访问http://hadoop116/zabbix:
检查配置
配置数据库
配置zabbix-server
完成
登陆Zababix
用户名:Admin 密码:zabbix
Zabbix使用
Zabbix术语
主机(Host)
一台你想监控的网络设备,用IP或域名表示。
监控项(Item)
你想要接收的主机的特定数据,一个度量数据。比如内存使用量,CPU资源使用率等。
触发器(Trigger)
一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式。
动作(Action)
一个对事件做出反应的预定义的操作,比如邮件通知。
Zabbix实践
创建Host
1.点击配置/主机/创建主机
2.配置主机(Host)
查看新增hosts,结果:
可用性那一栏的四个方块代表监控的手段,ZBX是指通过zabbix-agent监控,灰色代表不清楚是否可用,红色代表不可用,绿色代表启用。
在配置了监控项后,如果zabbix-agent的数据能发送到zabbix-server,则可用性下的ZBX小方块会显示绿色。
最后一个主机配置的ZBX显示红色是因为ip地址配置的不对,我们对其进行修改更新后即可。
修改后:
配置完成后,要等一段时间。因为agent向server发送数据有时间间隔。
创建监控项(Items)
这里我们创建一个监控datanode的监控项。
1.点击监控项(Items)
配置监控项(Item)
监控项中的键值可以去百度搜索zabbix-agent key属性列表参考配置。
这里就是通过进程名去过滤所有进程然后对符合条件的进程进行计数
查看创建的监控项
查看监控项最新数据
创建触发器(Trigger)
- 点击配置/主机/触发器
2.创建触发器
3.配置触发器
创建动作
点击配置/动作/创建动作
编辑动作(Action)
下面配置完报警媒介后,重新启动HDFS,再关闭HDFS时,即可收到邮件通知。
创建报警媒介类型(Media type)
点击管理/报警媒介类型/Email
测试email
Email绑定收件人
注意,添加用户邮件信息后要点击更新才能保留数据。
测试
- 关闭集群中的HDFS,会有如下效果
1
2
3
4(base) [dw@hadoop116 hadoop-3.1.3]$ sbin/stop-dfs.sh
Stopping namenodes on [hadoop116]
Stopping datanodes
Stopping secondary namenodes [hadoop118]
2.查看邮件,接受报错信息
模版
为了简化监控配置的工作量,这里需要用到模版。这里通过创建一个虚拟主机,在这个虚拟主机里配置各种各样的监控项,每个监控项对应自己的触发器,这样就形成了一个模版,这样就能将这个模版应用到所有节点上。提高了配置效率,重复的配置只需要做一次即可。
- 创建模版
这里点击创建监控项。
然后创建触发器:
接下来将模版应用到两个主机上:
整体测试
这里需要修改下动作,因为之前的触发器动作是严格匹配hadoop116的触发器,现在新增两个模版需要使得动作与这两个模版的触发器也匹配上才行。
之后点击更新,再次关闭dfs查看告警情况,成功收到三封告警邮件。