集群监控 | 您所在的位置:网站首页 › zabbix监控存储器 › 集群监控 |
文章目录
介绍概述特性基础架构组件及进程工作流程监控方式监控架构
部署集群规划准备工作配置Zabbix yum源(3台节点)安装Zabbix配置Zabbix启动停止Zabbix连接Zabbix_Web数据库登录Zabbix
Zabbix使用术语Zabbix实战创建Host创建监控项(Items)创建触发器(Trigger)创建动作(Action)申请邮箱创建报警媒介类型(Media type)测试
创建模板
集成Grafana部署Grafana快速入门集成Zabbix配置数据源集成案例
介绍
概述
Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。 基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。 特性(1)数据收集 可用性和性能采集;支持 SNMP(包括主动轮询和被动捕获)、IPMI、JMX、VMware 监控;自定义检查;按照自定义的时间间隔采集需要的数据;通过 Server/Proxy 和 Agents 来执行数据采集。(2)灵活的阈值定义 可以定义非常灵活的告警阈值,称之为触发器,触发器从后端数据库获得参考值。 (3)高度可配置化告警 可以根据递增计划、接收者、媒介类型自定义发送告警通知;使用宏变量可以使告警通知变得更加高效有益;自动动作包含远程命令。(4)实时绘图 使用内置图形功能可实以将监控项绘制成图形。 (5)WEB监控功能 Zabbix 可以追踪模拟鼠标在 Web 网站上的点击操作,来检查 Web 网站的功能和响应时间。 (6)丰富的可视化选项 能够创建可以将多个监控项组合到单个视图中的自定义图形;网络拓扑图;以仪表盘样式展示自定义聚合图形和幻灯片演示;报表;监控资源的高层次(业务)视图。(7)历史数据存储 存储在数据库中的数据;可配置的历史数据;内置数据管理机制(housekeeping)(8)易配置 将被监控设备添加为主机;主机一旦添加到数据库中,就会采集主机数据用于监控;将模板用于监控设备。(9)模板功能 在模板中分组检查;模板可以关联其他模板,获得继承。(10)网络发现 自动发现网络设备;Zabbix Agent 发现设备后自动注册;自动发现文件系统、网络接口和 SNMP OIDs 值。(11)页面展示 基于 PHP 的 Web 前端;可以从任何地方访问;可以定制自己的操作方式;审计日志。(12)zabbix api Zabbix API 为 Zabbix 提供可编程接口,用于批量操作、第三方软件集成和其他用途。 (13)权限系统 安全的用户身份验证;将特定用户限制于访问特定的视图。(14)易扩展 部署于被监控对象上;完美支持 Linux 和 Windows ;(15)二进制守护进程 为了更好的性能和更少的内存占用,采用 C 语言编写;便于移植。(16)适用复杂网络环境 使用 Zabbix Proxy 代理,可以轻松实现分布式远程监控。 基础架构(1)zabbix server zabbix server 是整个 Zabbix 软件的核心程序。 Zabbix Server 负责执行数据的主动轮询和被动获取,计算触发器条件,向用户发送通知。它是 Zabbix Agent 和 Proxy 报告系统可用性和完整性数据的核心组件。Server 自身可以通过简单服务远程检查网络服务(如Web服务器和邮件服务器)。 Zabbix Server是所有配置、统计和操作数据的中央存储中心,也是Zabbix监控系统的告警中心。在监控的系统中出现任何异常,将被发出通知给管理员。 基本的 Zabbix Server 的功能分解成为三个不同的组件。他们是:Zabbix server、Web前端(php+apache)和数据库(Mysql,Oracle等)。 Zabbix 的所有配置信息都存储在 Server 和Web前端进行交互的数据库中。例如,当你通过Web前端(或者API)新增一个监控项时,它会被添加到数据库的监控项表里。然后,Zabbix server 以每分钟一次的频率查询监控项表中的有效项,接着将它存储在 Zabbix server 中的缓存里。这就是为什么 Zabbix 前端所做的任何更改需要花费两分钟左右才能显示在最新的数据段的原因。 (2)Zabbix agent Zabbix agent 部署在被监控目标上,以主动监控本地资源和应用程序(硬盘、内存、处理器统计信息等)。 Zabbix agent 收集本地的操作信息并将数据报告给 Zabbix server 用于进一步处理。一旦出现异常 (例如硬盘空间已满或者有崩溃的服务进程),Zabbix server 会主动警告管理员指定机器上的异常。 Zabbix agents 的极高效率缘于它可以利用本地系统调用来完成统计数据的采集。 组件及进程zabbix由以下几个组件部分构成: Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;Database Storage:专用于存储所有配置信息,以及由zabbix收集的数据;Web interface:zabbix的GUI接口,通常与Server运行在同一台主机上,可以进行监控配置,并且获取数据在前端进行展现和绘图;Proxy:可选组件,常用于分布监控环境中,代理Server收集部分被监控端的监控数据并统一发往Server端;Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端;默认情况下zabbix包含5个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一个zabbix_java_gateway是可选,这个需要另外安装。下面来分别介绍下他们各自的作用。 zabbix_agentd: 客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等。zabbix_get:zabbix工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令。通常用户排错。例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。zabbix_sender:zabbix工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。zabbix_server:zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server 备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。zabbix_proxy:zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到server里。zabbix_java_gateway:zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。 工作流程Zabbix分布式监控系统监控客户端的方式常见有三种:Agent、SNMP、IPMI。 Agent:Zabbix可以基于自身zabbix_agent客户端插件监控OS的状态,例如CPU、内存、硬盘、网卡、文件等。SNMP:Zabbix通过简单网络管理协议(Simple Network Management Protocol)监控网络设备或windows主机等。通过设定SNMP的参数将相关监控数据传送至服务端,交换机、防火墙等网络设备一般都支持SNMP协议。IPMI:智能平台管理接口(Intelligent Platform Management Interface,IPMI)即主要应用于设备的物理特性,包括:温度、电压、电扇工作状态,电源供应以及机箱入侵等。IPMI最大的优势在于无论OS的开机还是关机状态下,只要接通电源就可以实现对服务器的监控。Zabbix监控客户端分为主动监控与被动监控,主被动模式以客户端为参照,Zabbix监控客户端默认为被动模式,可以修改为主动模式,只需要在客户端配置文件中添加 StartAgents=0。主被动监控模式如下: Zabbix主动模式:Agent主动请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy,zabbix agent首先向ServerActive配置的IP请求获取active items,获取并提交active items数据至server/proxy。Zabbix被动模式:Server向agent请求获取监控项的数据,agent返回数据,server打开一个TCP连接,Server发送请求agent.ping,Agent接收到请求并且响应,Server处理接收到的数据。 监控架构在实际监控架构中,zabbix根据网络环境、监控规模等 分了三种架构: server-client 、master-node-client、server-proxy-client三种 。 server-client架构 也是zabbix的最简单的架构,监控机和被监控机之间不经过任何代理 ,直接由zabbix server和zabbix agentd之间进行数据交互。适用于网络比较简单,设备比较少的监控环境 。server-proxy-client架构:其中proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身并不存放数据,只是将agentd发来的数据暂时存放,而后再提交给server 。该架构经常是和master-node-client架构做比较的架构 ,一般适用于跨机房、跨网络的中型网络架构的监控。master-node-client架构:该架构是zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境 。每个node同时也是一个server端,node下面可以接proxy,也可以直接接client 。node有自已的配置文件和数据库,其要做的是将配置信息和监控数据向master同步,master的故障或损坏对node其下架构的完整性。(1)关闭集群 如果集群开启,先关闭集群。因为安装Zabbix前,需要重启虚拟机。 [atguigu@hadoop102 ~]$ cluster.sh stop(2)关闭防火墙(3台节点,已关闭) [atguigu@hadoop102 ~]$ sudo service iptables stop [atguigu@hadoop102 ~]$ sudo chkconfig iptables off [atguigu@hadoop103 ~]$ sudo service iptables stop [atguigu@hadoop103 ~]$ sudo chkconfig iptables off [atguigu@hadoop104 ~]$ sudo service iptables stop [atguigu@hadoop104 ~]$ sudo chkconfig iptables off(3)关闭SELinux(hadoop102) 修改配置文件/etc/selinux/config [atguigu@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重启服务器 [atguigu@hadoop102 ~]$ sudo reboot 配置Zabbix yum源(3台节点)(1)安装yum仓库 安装zabbix的yum仓库 [atguigu@hadoop102 ~]$ sudo rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm [atguigu@hadoop103 ~]$ sudo rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm [atguigu@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仓库 [atguigu@hadoop102 ~]$ sudo yum install -y centos-release-scl [atguigu@hadoop103 ~]$ sudo yum install -y centos-release-scl [atguigu@hadoop104 ~]$ sudo yum install -y centos-release-scl(2)修改zabbix仓库配置文件 hadoop102、hadoop103、hadoop104三台节点,依次执行如下步骤。 1)修改为阿里云镜像 查看原始zabbix.repo文件 [atguigu@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执行以下命令完成全局替换 [atguigu@hadoop102 ~]$ sudo sed -i 's/http:\/\/repo.zabbix.com/https:\/\/mirrors.aliyun.com\/zabbix/g' /etc/yum.repos.d/zabbix.repo查看修改之后的zabbix.repo文件 [atguigu@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=12)启用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 安装Zabbix在hadoop102、hadoop103、hadoop104三台节点分别执行以下安装命令 [atguigu@hadoop102 ~]$ sudo yum install -y zabbix-server-mysql zabbix-agent zabbix-web-mysql-scl zabbix-apache-conf-scl [atguigu@hadoop103 ~]$ sudo yum install -y zabbix-agent [atguigu@hadoop104 ~]$ sudo yum install -y zabbix-agent 配置Zabbix(1)创建zabbix数据库 [atguigu@hadoop102 ~]$ mysql -uroot -p000000 -e"create database zabbix character set utf8 collate utf8_bin"(2)导入Zabbix建表语句 [atguigu@hadoop102 ~]$ zcat /usr/share/doc/zabbix-server-mysql-5.0.9/create.sql.gz | mysql -uroot -p000000 zabbix(3)配置Zabbix_Server(hadoop102) 修改zabbix-server配置文件 [atguigu@hadoop102 ~]$ sudo vim /etc/zabbix/zabbix_server.conf DBHost=hadoop102 DBName=zabbix DBUser=root DBPassword=000000(4)配置Zabbix_Agent(三台节点) 修改zabbix-agent配置文件 [atguigu@hadoop102 ~]$ sudo vim /etc/zabbix/zabbix_agentd.conf修改如下内容: Server=hadoop102 #ServerActive=127.0.0.1 #Hostname=Zabbix server(5)配置Zabbix_Web时区 修改/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf文件 [atguigu@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 启动停止Zabbix [atguigu@hadoop102 ~]$ sudo systemctl start zabbix-server zabbix-agent httpd rh-php72-php-fpm [atguigu@hadoop102 ~]$ sudo systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm [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 [atguigu@hadoop102 ~]$ sudo systemctl stop zabbix-server zabbix-agent httpd rh-php72-php-fpm [atguigu@hadoop102 ~]$ sudo systemctl disable zabbix-server zabbix-agent httpd rh-php72-php-fpm [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 连接Zabbix_Web数据库(1)浏览器访问http://hadoop102/zabbix/ (2)检查配置 (3)配置数据库 (4)配置zabbix-server (1)用户名密码如下 用户名:Admin 密码:zabbix (2)点击User Settings,语言设成中文 (1)主机(Host) 一台你想监控的网络设备,用IP或域名表示。 (2)监控项(Item) 你想要接收的主机的特定数据,一个度量数据。 (3)触发器(Trigger) 一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式。 (4)动作(Action) 一个对事件做出反应的预定义的操作,比如邮件通知。 Zabbix实战 创建Host(1)点击配置/主机/创建主机 (2)配置主机(Host) (3)查看新增(Host) (4)重复以上步骤,再创建hadoop103、hadoop104主机。 点击主机,选择图形;可以查看常规指数图形 (管理中一般设置可以更改主题风格) (1)点击监控项(Items) (2)点击创建监控项(Create Item) (3)配置监控项(Item) (4)查看创建的监控项 (5)查看监控项最新数据 (1)点击配置/主机/触发器 (2)点击创建触发器 (3)编辑触发器 (1)点击配置/动作/创建动作 (2)编辑动作(Action) 邮件报警,可以采用126、163、qq等邮箱。下面以126邮箱为例。 (1)申请注册一个126邮箱 (2)点击邮箱账号=》账号管理 (3)开启SMTP服务 (4)一定要记住授权码 创建报警媒介类型(Media type)(1)点击管理/报警媒介类型/Email (2)编辑Email (3)测试Email (4)Email绑定收件人 (1)关闭集群中的HDFS,会有如下效果 [atguigu@hadoop102 hadoop-3.1.3]$ sbin/stop-dfs.sh(2)查看仪表盘故障信息 (3)查看邮件,接收故障信息 (1)点击配置/模板/创建模板 (2)配置模板名称/群组 (3)配置监控项 (4)配置触发器 (5)配置动作 (6)为hadoop103应用模板 (7)为hadoop104应用模板 同上 (8)测试 启动hadoop集群 [atguigu@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh停止hadoop集群 [atguigu@hadoop102 hadoop-3.1.3]$ sbin/stop-dfs.sh查看报警邮件 集成Grafana 部署Grafana(1)下载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 (2)将安装包上传到hadoop102主机的/opt/software路径 (3)使用rpm安装Grafana [atguigu@hadoop102 software]$ sudo rpm -ivh grafana-7.4.3-1.x86_64.rpm(4)启动Grafana [atguigu@hadoop102 software]$ sudo systemctl start grafana-server(5)访问Grafana页面 访问地址为:http://hadoop102:3000/ 首次登录用户名和密码均为 admin 设置新密码或者跳过: (1)创建Dashboard (2)新建panel (3)选择数据源,此处选择Grafana提供的随机测试数据 (4)选择合适的可视化类型 (5)保存Dashboard和panel,并命名 使用Grafana与其他系统集成时,需要配置对应的DataSource (1)点击下图所示按钮,增加数据源 (2)选择所需数据源 (3)如没有所需数据源,点击下图所示地址,获取更多数据源 (4)搜索zabbix,并点击搜索结果 (5)按照所需插件的说明进行部署 (6)以下是插件部署步骤 安装插件 [atguigu@hadoop102 software]$ sudo grafana-cli plugins install alexanderzobnin-zabbix-app重启Grafana [atguigu@hadoop102 software]$ sudo systemctl restart grafana-server启用插件 点击设置/插件 搜索zabbix,并点击搜索结果 启用Zabbix插件 (7)配置zabbix数据源 新增数据源 搜索zabbix,并点击搜索结果 配置数据源 (1)为方便展示效果,在Zabbix中为hadoop102主机应用一个Zabbix内置的Linux系统监控模板。 找到hadoop102主机 点击模板,搜索linux,并选择Template OS Linux by Zabbix agent 点击更新 (2)集成Grafana,展示模板中的系统监控项 点击Dashboards,找到前边创建的Test看板 新建panel 选择Zabbix数据源 选择要展示的监控项 选择合适的图标类型 保存配置 |
CopyRight 2018-2019 实验室设备网 版权所有 |