1、Zabbix入门
1.1、Zabbix概述
Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。
1.2、Zabbix的特点
Zabbix的主要特点包括:
-
多种监控方式:Zabbix支持SNMP、JMX、IPMI等多种监控方式,可以监控网络设备、操作系统、数据库、Web应用程序等各种系统组件。
-
自定义监控项:Zabbix允许用户自定义监控项,可以通过脚本、API等方式添加自定义监控项,以监测企业的特定应用程序和业务需求。
-
高度可配置:Zabbix提供了大量的配置选项,可以根据需要灵活配置监控对象、告警规则、通知方式、用户权限等设置。
-
丰富的预警机制:Zabbix支持多种告警规则,可以通过Email、短信、声音、微信等多种方式向管理员发送告警信息,支持条件触发、阈值判断等多种告警方法。
-
可视化展示:Zabbix提供了丰富的可视化展示功能,可以通过仪表盘、图表、地图等方式呈现监控数据。
-
网络拓扑图:Zabbix支持绘制全局网络拓扑图以及单个设备的拓扑图,可以帮助管理员更好地了解网络结构和连接状态。
1.3、Zabbix的构成
zabbix主要由以下5个组件构成:
- Server:zabbix server是zabbix的核心组件,server内部存储了所有的配置信息、统计信息和操作信息。zabbix agent会向zabbix server报告可用性、完整性及其他统计信息。
- web页面:web页面也是zabbix的一部分,通常和zabbix server位于一台物理设备上,但是在特殊情况下也可以分开配置。web页面主要提供了直观的监控信息,以方便运维人员监控管理。
- 数据库:zabbix数据库内存储了配置信息、统计信息等zabbix的相关内容。
- proxy:zabbix proxy可以根据具体生产环境进行采用或者放弃。如果使用了zabbix proxy,则其会替代zabbix server采集数据信息,可以很好的分担zabbix server的负载。zabbix proxy通常运用与架构过大、zabbix server负载过重,或者是企业设备跨机房、跨网段、zabbix server无法与zabbix agent直接通信的场景。
- Agent:zabbix agent通常部署在被监控目标上,用于主动监控本地资源和应用程序,并将监控的数据发送给zabbix server。
1.4、Zabbix的术语
- 主机(host):要监控的设备,可以由IP或者是主机名(必须可解析)指定。
- 主机组(host group):主机的逻辑容器,包含主机和模板,主机组通常在给用户或者是用户组指派监控权限时使用。
- 监控项(item):一个特定监控指标的相关数据,比如内存的大小、CPU的使用率,甚至是服务的运行状态等等。监控项数据来源于被监控对象,并且每个监控项都由一个key来标识。
- 触发器(trigger):一个表达式,用于评估监控项的值是否在合理的范围内。当接收的值超出触发器的规定时,就被认为是故障,如果超出后再次符合,就被认为是正常。
- 事件(event):触发器触发的一个特定事件,或者是zabbix定义的一个自动上线注册主机的事件。
- 动作(action):指根据配置,zabbix对于触发器触发的特定事件进行处理的具体措施,如执行某个脚本,或者是向管理员邮箱发送邮件等等。
- 报警升级(escalation):发送警报或者是执行远程命令的自定义方案。
- 媒介(media):发送通知(告警)的手段,如微信、邮件、钉钉等等。
- 通知(notification):通过指定的媒介,向用户发送的有关事件的信息。
- 远程命令(remote command):指运维人员提前写好的命令,可以让被监控主机在触发事件后执行。
- 模板(template):用于快速定义被监控主机的预设条目集合,通常包括了监控项、触发器、应用等,模板可以直接链接至某个主机。
- 应用(application):一组监控项的集合。
- web场景(web scennario):用于检测web站点可用性的一个或多个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的负载的程序
- 加密(encryption):支持Zabbix组建之间的加密通讯(server, proxy, agent, zabbix_sender 和 zabbix_get 程序) 使用TLS(Transport Layer Security )协议
1.5、Zabbix的基础架构
Zabbix在进行监控时,zabbix客户端要安装在被监控设备上,负责定期收集数据,并将其发送给zabbix服务端;zabbix服务端要安装在监控设备上,其将zabbix客户端发送的数据存储的数据库中,zabbix web根据数据在前端进行展示和绘图。
zabbix的数据收集分为两种模式:
-
主动模式:zabbix客户端主动向zabbix server请求监控项列表,并主动将监控项内需要的数据提交给zabbix server。
-
被动模式:zabbix server向 agent 请求获取监控项的数据,zabbix agent返回数据。
zabbix的主动和被动模式是以zabbxi客户端为基准的。
2、Zabbix部署
2.1、集群规划
2.2、集群部署
2.2.1、关闭防火墙(3台节点)
[song@hadoop102 ~]$ sudo service iptables stop
[song@hadoop102 ~]$ sudo chkconfig iptables off
[song@hadoop103 ~]$ sudo service iptables stop
[song@hadoop103 ~]$ sudo chkconfig iptables off
[song@hadoop104 ~]$ sudo service iptables stop
[song@hadoop104 ~]$ sudo chkconfig iptables off
2.2.2、关闭SELinux(hadoop102)
2.2.2.1、SELinux介绍
SELinux(Security-Enhanced Linux)是一种Linux操作系统的安全加固措施,它提供了强大的访问控制机制来保护系统资源和数据的安全性。通常情况下,Linux系统使用标准的Unix访问控制(DAC)模式来实现安全管理,但是这种安全模式有许多缺陷。
SELinux通过引入一个三元(Subject-Object-Action)安全性模型,可以更加细粒度地控制系统中的各个资源的访问权限,从而更好地保护系统的安全。SELinux不仅能够保护文件、网络、进程等系统资源,还能够保护系统核心、设备、网络服务等重要组件的安全。
在SELinux的安全模型中,每个主体(Subject)都被授予一组安全上下文(Security Context),其中包括了用户、角色、类型等信息。每个对象(Object)也有一个安全上下文,包括了文件、目录、设备、网络端口等信息。在SELinux的安全策略中,规定了哪些主体可以执行哪些操作,并指定了允许访问的对象。只有当主体满足所有安全策略的要求时,才能够执行相应的操作。
SELinux的作用主要有以下几个方面:
-
提高系统的安全性能,提高系统的抗攻击能力。
-
精细控制用户的权限,只允许他们执行必要的操作。
-
可以帮助管理员更好地了解系统的运行状态和发现潜在的安全漏洞。
-
在保护系统和数据方面提供了一层额外的保障。
总之,SELinux是一种强大的Linux安全机制,可以提供更加细致的访问控制和更好的安全性能,提高了系统的稳定性、可靠性和安全性。
2.2.2.2、修改配置文件/etc/selinux/config
[song@hadoop102 ~]$ 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
2.2.2.3、重启服务器
[song@hadoop102 ~]$ sudo reboot
2.2.3、配置Zabbix yum源(3台节点)
2.2.3.1、安装yum仓库
- 安装zabbix的yum仓库
[song@hadoop102 ~]$ sudo rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[song@hadoop103 ~]$ sudo rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[song@hadoop104 ~]$ sudo rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
- 安装Software Collections仓库
[song@hadoop102 ~]$ sudo yum install -y centos-release-scl
[song@hadoop103 ~]$ sudo yum install -y centos-release-scl
[song@hadoop104 ~]$ sudo yum install -y centos-release-scl
2.2.3.2、修改zabbix仓库配置文件
hadoop102、hadoop103、hadoop104
三台节点,依次执行如下步骤。
2.2.3.2.1、修改为阿里云镜像
- 查看原始
zabbix.repo
文件
[song@hadoop102 ~]$ sudo cat /etc/yum.repos.d/zabbix.repo
查看内容如下
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=0
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/5.0/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
- 执行以下命令完成全局替换
[song@hadoop102 ~]$ sudo sed -i 's/http:\/\/repo.zabbix.com/https:\/\/mirrors.aliyun.com\/zabbix/g' /etc/yum.repos.d/zabbix.repo
- 查看修改之后的zabbix.repo文件
[song@hadoop102 ~]$ sudo cat /etc/yum.repos.d/zabbix.repo
查看内容如下
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/frontend
enabled=0
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/5.0/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
2.2.3.2.2、修改为阿里云镜像启用zabbix-web仓库
打开/etc/yum.repos.d/zabbix.repo
文件,做如下修改
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/frontend
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/5.0/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
2.2.4、安装Zabbix
在hadoop102、hadoop103、hadoop104
三台节点分别执行以下安装命令
[song@hadoop102 ~]$ sudo yum install -y zabbix-server-mysql zabbix-agent zabbix-web-mysql-scl zabbix-apache-conf-scl
[song@hadoop103 ~]$ sudo yum install -y zabbix-agent
[song@hadoop104 ~]$ sudo yum install -y zabbix-agent
2.2.5、配置Zabbix
2.2.5.1、创建zabbix数据库
[song@hadoop102 ~]$ mysql -uroot -p000000 -e"create database zabbix character set utf8 collate utf8_bin"
2.2.5.2、导入Zabbix建表语句
[song@hadoop102 ~]$ zcat /usr/share/doc/zabbix-server-mysql-5.0.9/create.sql.gz | mysql -uroot -p000000 zabbix
2.2.5.3、配置Zabbix_Server(hadoop102)
修改zabbix-server配置文件
[song@hadoop102 ~]$ sudo vim /etc/zabbix/zabbix_server.conf
DBHost=hadoop102
DBName=zabbix
DBUser=root
DBPassword=000000
2.2.5.4、配置Zabbix_Agent(三台节点)
修改zabbix-agent配置文件
[song@hadoop102 ~]$ sudo vim /etc/zabbix/zabbix_agentd.conf
修改如下内容:
Server=hadoop102
#ServerActive=127.0.0.1
#Hostname=Zabbix server
2.2.5.5、配置Zabbix_Web时区
修改/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
文件
[song@hadoop102 ~]$ sudo vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
修改如下内容:
[zabbix]
user = apache
group = apache
listen = /var/opt/rh/rh-php72/run/php-fpm/zabbix.sock
listen.acl_users = apache
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
php_value[session.save_handler] = files
php_value[session.save_path] = /var/opt/rh/rh-php72/lib/php/session/
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[date.timezone] = Asia/Shanghai
2.2.6、启动停止Zabbix
2.2.6.1、启动Zabbix
[song@hadoop102 ~]$ sudo systemctl start zabbix-server zabbix-agent httpd rh-php72-php-fpm
#设置开机自启动
[song@hadoop102 ~]$ sudo systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
[song@hadoop103 ~]$ sudo systemctl start zabbix-agent
#设置开机自启动
[song@hadoop103 ~]$ sudo systemctl enable zabbix-agent
[song@hadoop104 ~]$ sudo systemctl start zabbix-agent
#设置开机自启动
[song@hadoop104 ~]$ sudo systemctl enable zabbix-agent
查看是否启动成功
sudo systemctl status zabbix-server zabbix-agent httpd rh-php72-php-fpm
2.2.6.2、停止Zabbix
[song@hadoop102 ~]$ sudo systemctl stop zabbix-server zabbix-agent httpd rh-php72-php-fpm
# 关闭开机自启动
[song@hadoop102 ~]$ sudo systemctl disable zabbix-server zabbix-agent httpd rh-php72-php-fpm
[song@hadoop103 ~]$ sudo systemctl stop zabbix-agent
# 关闭开机自启动
[song@hadoop103 ~]$ sudo systemctl disable zabbix-agent
[song@hadoop104 ~]$ sudo systemctl stop zabbix-agent
# 关闭开机自启动
[song@hadoop104 ~]$ sudo systemctl disable zabbix-agent
2.2.6.3、连接Zabbix_Web数据库
- 浏览器访问
http://hadoop102/zabbix/
- 检查配置
-
配置数据库
-
配置zabbix-server
2.2.6.4、登录Zabbix
- 用户名密码如下,
用户名:Admin 密码:zabbix
- 点击User Settings,语言设成中文
2.3、Zabbix的使用
2.3.1、创建Host
- 点击配置/主机/创建主机
- 配置主机(Host)
- 查看新增(Host)
- 重复以上步骤,再创建hadoop103、hadoop104主机。
2.3.2、创建监控项(Items)
- 点击监控项(Items)
- 点击创建监控项(Create Item)
- 配置监控项(Item)
-
查看创建的监控项
-
查看监控项最新数据
2.3.3、创建触发器(Trigger)
- 点击配置/主机/触发器
- 点击创建触发器
- 编辑触发器
2.3.4、创建动作(Action)
- 点击配置/动作/创建动作
- 编辑动作(Action)
2.3.5、邮件报警
- 申请注册一个126邮箱,可以采用126、163、qq等邮箱。下面以126邮箱为例。
- 点击邮箱账号=》账号管理
- 开启SMTP服务
- 保存授权码
2.3.6、创建报警媒介类型(Media type)
- 点击管理/报警媒介类型/Email
- 编辑Email
- 测试Email
- Email绑定收件人
2.3.7、测试
- 关闭集群中的HDFS,会有如下效果
[song@hadoop102 hadoop-3.1.3]$ sbin/stop-dfs.sh
- 查看仪表盘故障信息
- 查看邮件,接收故障信息
2.4、集成Grafana
2.4.1、部署Grafana
- 下载Grafana安装包
- 官方仓库:
https://dl.grafana.com/oss/release/grafana-7.4.3-1.x86_64.rpm
- 国内镜像:
https://repo.huaweicloud.com/grafana/7.4.3/grafana-7.4.3-1.x86_64.rpm
- 将安装包上传到hadoop102主机的
/opt/software
路径 - 使用rpm安装Grafana
[song@hadoop102 software]$ sudo rpm -ivh grafana-7.4.3-1.x86_64.rpm
- 启动Grafana
[song@hadoop102 software]$ sudo systemctl start grafana-server
查看是否启动
[song@hadoop102 software]$ sudo systemctl status grafana-server
关闭服务
[song@hadoop102 software]$ sudo systemctl stop grafana-server
- 访问Grafana页面
访问地址为:http://hadoop102:3000/
,首次登录用户名和密码均为admin
设置新密码或者跳过
2.4.2、快速入门
- 创建Dashboard
- 新建panel
- 选择数据源,此处选择Grafana提供的随机测试数据
- 选择合适的可视化类型
- 保存Dashboard和panel,并命名
2.4.3、集成Zabbix
2.4.3.1、配置数据源
使用Grafana与其他系统集成时,需要配置对应的DataSource
- 点击下图所示按钮,增加数据源
- 选择所需数据源
- 如没有所需数据源,点击下图所示地址,获取更多数据源
- 搜索zabbix,并点击搜索结果
- 按照所需插件的说明进行部署
-
以下是插件部署步骤
-
安装插件
[song@hadoop102 software]$ sudo grafana-cli plugins install alexanderzobnin-zabbix-app
- 重启Grafana
[song@hadoop102 software]$ sudo systemctl restart grafana-server
-
启用插件
- 点击设置/插件
- 搜索zabbix,并点击搜索结果
- 启用Zabbix插件
- 点击设置/插件
-
配置zabbix数据源
-
新增数据源
-
搜索zabbix,并点击搜索结果
-
配置数据源,
http://hadoop102/zabbix/api_jsonrpc.php
-
2.4.3.2、集成案例
- 为体现展示效果,在Zabbix中为hadoop102主机应用一个Zabbix内置的Linux系统监控模板。
- 找到hadoop102主机
- 点击模板,搜索linux,并选择Template OS Linux by Zabbix agent
- 点击更新
- 点击Dashboards,找到前边创建的Test看板
- 新建panel
- 选择Zabbix数据源
- 选择要展示的监控项
- 选择合适的图标类型
- 保存配置