1 Zabbix概述
虽然一些框架都配置了HA高可用,但是还是很有必要监控集群的健康状态。
Zabbix是一款能够监控各种网络参数、服务器健康性和完整性的软件。Zabbix可以用来监控硬件配置如:CPU、内存、磁盘等;可以用来监控软件的监控健康情况如:namenode、datanode等。
Zabbix具有灵活的通知机制,允许用户为任何事件配置基于邮件的告警。也可以集成睿象云。
Zabbix基于已存储的数据(元数据)(存储到数据库中),提供了出色的报告和数据可视化功能。
1.1 Zabbix基础架构
Zabbix-agent:部署在待监控的服务器上的
Zabbix-server:收集监控数据,判断是否达到触发器条件,如果达到触发器条件,会发送通知
Database:1存储收集到的监控信息;2 存储所有的配置信息(监控哪些信息)
Zabbix-Web:1 用户操作界面;2 展示监控信息
2 Zabbix部署安装
2.1 集群规划
进程 | hadoop102节点 | hadoop103节点 | hadoop104节点 |
---|---|---|---|
zabbix-agent | √ | √ | √ |
zabbix-server | √ | ||
MySQL | √ | ||
zabbix-web | √ |
2.2 准备工作
①关闭集群
如果集群开启,先关闭集群。因为安装Zabbix前,需要重启虚拟机。
[atguigu@hadoop102 yanagishima-18.0]$ myhadoop.sh stop
②关闭防火墙(三台节点)
# 查看防火墙状态
[atguigu@hadoop102 yanagishima-18.0]$ systemctl status firewalld
# 关闭防火墙
[atguigu@hadoop102 yanagishima-18.0]$ systemctl stop firewalld
[atguigu@hadoop102 yanagishima-18.0]$ systemctl disable firewalld
③关闭SELinux(hadoop102)
SELinux是什么?
是Linux的一个增强型安全模块,一般情况是不配置,直接关掉。
为什么要关掉SELinux?
zabbix-web是使用的PHP开发的,它的web容器是apache,目的是给apache关闭。如果不关闭访问web页面的时候,会有权限问题!
flume的监控工具ganglia也是用PHP apache容器开发的,也需要关闭。
修改配置文件:/etc/selinux/config
[atguigu@hadoop102 yanagishima-18.0]$ sudo vim /etc/selinux/config
修改如下内容:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
④重启服务器(hadoop102)
[atguigu@hadoop102 yanagishima-18.0]$ sudo reboot
2.3 配置Zabbix yum源(3台节点)
从yum install安装的安装包,其实都是从这些repo文件中的远程仓库下载的。
系统自带的repo是没有zabbix安装包的,需要安装一个zabbix远程仓库地址。
步骤1:配置zabbix远程仓库
[atguigu@hadoop102 ~]$ sudo rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
[atguigu@hadoop103 ~]$ sudo rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
[atguigu@hadoop104 ~]$ sudo rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
这个时候会在当前路径下多出来一个:zabbix.repo
如何配置zabbix的阿里云镜像呢?
步骤2:修改为阿里云镜像
修改zabbix.repo文件:
-i 是指修改文件后写回;
s 是替换
g 全局
[atguigu@hadoop102 yum.repos.d]$ sudo sed -i 's/http:\/\/repo.zabbix.com/https:\/\/mirrors.aliyun.com\/zabbix/g' /etc/yum.repos.d/zabbix.repo
2.4 安装zabbix
安装zabbix:hadoop102需要安装zabbix-agent、zabbix-server-mysql、zabbix-web-mysql
hadoop103、hadoop104需要安装zabbix-agent
[atguigu@hadoop102 ~]$ sudo yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent
[atguigu@hadoop103 ~]$ sudo yum -y install zabbix-agent
[atguigu@hadoop104 ~]$ sudo yum -y install zabbix-agent
2.5 配置Zabbix
步骤1:创建zabbix数据库
其中-e””和hive一样,是不用登录到mysql客户端就能执行sql语句。
[atguigu@hadoop102 ~]$ mysql -uroot -p123456 -e"create database zabbix character set utf8 collate utf8_bin"
步骤2:导入zabbix建表语句
zcat是指将某个gz包 解压后输出到控制台,使用 | 管道符输出到mysql的zabbix这个库。
[atguigu@hadoop102 ~]$ zcat /usr/share/doc/zabbix-server-mysql-4.4.10/create.sql.gz | mysql -uroot -p123456 zabbix
查看所建的表:149张
步骤3:配置Zabbix_Server(hadoop102)
修改**/etc/zabbix/zabbix_server.conf**文件,配置数据库,因为zabbix-server用来收集集群信息、配置信息存到数据库。
[atguigu@hadoop102 ~]$ sudo vim /etc/zabbix/zabbix_server.conf
DBHost=hadoop102
DBName=zabbix
DBUser=root
DBPassword=000000
步骤4:配置Zabbix_Agent(三台节点)
修改/etc/zabbix/zabbix_agentd.conf文件,配置zabbix-server
[atguigu@hadoop102 ~]$ sudo vim /etc/zabbix/zabbix_agentd.conf
Server=hadoop102
#ServerActive=127.0.0.1
#Hostname=Zabbix server
步骤5:配置Zabbix_Web时区
修改**/etc/httpd/conf.d/zabbix.conf文件**
[atguigu@hadoop102 ~]$ sudo vim /etc/httpd/conf.d/zabbix.conf
# php_value date.timezone Europe/Riga
php_value date.timezone Asia/Shanghai
2.6 启动停止Zabbix
步骤1:启动Zabbix
[atguigu@hadoop102 ~]$ sudo systemctl start zabbix-server zabbix-agent httpd
[atguigu@hadoop102 ~]$ sudo systemctl enable zabbix-server zabbix-agent httpd
[atguigu@hadoop103 ~]$ sudo systemctl start zabbix-agent
[atguigu@hadoop103 ~]$ sudo systemctl enable zabbix-agent
[atguigu@hadoop104 ~]$ sudo systemctl start zabbix-agent
[atguigu@hadoop104 ~]$ sudo systemctl enable zabbix-agent
步骤2:连接Zabbix_Web数据库
浏览器访问Zabbix Web页面:http://hadoop102/zabbix
PHP环境是否正常
配置数据库
配置Zabbix-server
配置完成,如果配置错误,可以按照提示,修改/etc/zabbix/web/zabbix.conf.php文件
步骤3:登录Zabbix
用户名:Admin 密码:zabbix
停止Zabbix
[atguigu@hadoop102 ~]$ sudo systemctl stop zabbix-server zabbix-agent httpd
[atguigu@hadoop102 ~]$ sudo systemctl disable zabbix-server zabbix-agent httpd
[atguigu@hadoop103 ~]$ sudo systemctl stop zabbix-agent
[atguigu@hadoop103 ~]$ sudo systemctl disable zabbix-agent
[atguigu@hadoop104 ~]$ sudo systemctl stop zabbix-agent
[atguigu@hadoop104 ~]$ sudo systemctl disable zabbix-agent
3 Zabbix使用
3.1 Zabbix术语
① 主机Host
要监控的网络设备,主机(用IP或域名表示)
② 监控项Item
要监控的主机的特定的数据,一个度量数据。比如:内存
③ 触发器Trigger
用来定于数据阈值 和 评估监控项接收到的数据的逻辑表达式
监控项要和触发器是一一对应的。
④ 动作Action
一个对事件做出反应的预定义的操作,比如邮件通知。
3.2 配置主机Host
3.3 配置监控项Item
监控datanode进程,得使用启动datanode的命令,通过ps -ef 查看,我们使用的监控项,使用cmdline确定是监控哪个进程,所以需要在ps -ef 的结果中找到能够唯一定位datanode进程的标识。就是datanode即可。
键值应该填写:proc.num[,all,datanode]
更新间隔:5s,为了方便看到效果
查看监控的结果
停掉datanode进程后:
[atguigu@hadoop102 sbin]$ hadoop-daemon.sh stop datanode
WARNING: Use of this script to stop HDFS daemons is deprecated.
WARNING: Attempting to execute replacement "hdfs --daemon stop" instead.
3.4 配置触发器Trigger
3.5 配置动作Action
把邮件发送给谁
添加admin管理员的信息(以管理员邮箱发送消息)
3.6 创建报警媒介类型Media type
创建邮件通知
准备一个邮箱;开启SMTP服务;拿到邮箱地址和第三方授权码;在zabbix中登录,通过邮箱往外界发送邮件。
测试邮箱
使用SMTPS服务
加密的SMTP服务使用的是465端口;azkaban不支持ssl加密,zabbix支持ssl加密。
3.7 测试
停掉hadoop102上的datanode进程
[atguigu@hadoop102 sbin]$ hdfs --daemon stop datanode
可以收到邮件~
4 Zabbix模板
1)点击配置/模板/创建模板
2)配置模板名称/群组
3)配置监控项
4)配置触发器
5)配置动作
6)配置模板
7)测试
(1)启动hadoop集群
[atguigu@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh
(2)停止hadoop集群
[atguigu@hadoop102 hadoop-3.1.3]$ sbin/stop-dfs.sh
(3)查看报警邮件