Zabbix监控系统详解及配置

news2024/10/7 4:57:32

前言

        作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果,和网站的健康状态。利用一个优秀的监控软件,我们可以:

  1. 通过一个友好的界面进行浏览整个网站所有的服务器状态;
  2. 可以在web前端方便的查看监控数据;
  3. 可以回溯寻找事故发生时系统的问题和报警情况。

目录

一、zabbix概述

1.zabbix是什么?

2.zabbix监控原理

3.监控对象

(1)zabbix server

(2)zabbix agent

(3)zabbix proxy

(4)zabbix get

(5)zabbix sender

二、部署zabbix服务端

三、部署 zabbix 客户端

四、监控模板

1.使用官方或已开发设计好的模板

2.自定义监控模板

(1)监控客户端主机登录人数

(2)监控nginx客户端状态信息

五、配置zabbix报警

1.设置报警媒介

2.在用户设置中指定报警媒介

3.指定报警的监控触发器

4.测试报警

六、配置zabbix服务端自动发现与自动注册

1.自动发现

​编辑

2.自动注册

七、部署zabbix代理服务器

八、SNMP监控


一、zabbix概述

1.zabbix是什么?

        zabbix是一个基于 web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

        zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位、解决存在的各种问题。

        zabbix由两部分构成,zabbix server与可选组件zabbix agent。通过c/s 模式采集数据,通过b/s 模式在web端展示和配置。

        zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux等平台上。

        zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。

2.zabbix监控原理

        zabix agent安装在被监控的主机上,zabiboix agent负责定期收集客户端本地各项数据,并发送至zabbix server端,zabbix server收到数据后,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。当zabbix监控某个具体的项目,该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括发送信息(邮件、微信、短信)、发送命令( shell命令、reboot、restart、install等)。

3.监控对象

        zabbix 监控部署在系统中,包含常见的五个程序:zabbix_server、zabix_agent、zabbix proxy、zabbix_get、zabix_sender等。

(1)zabbix server

        zabbix服务端守护进程,其中 zabbix_agent、zabbix_get、zabbix_sender、zabbix _proxy的数据最终都提交给zabbix server;

(2)zabbix agent

        客户端守护进程,负责收集客户端数据,例如:收集CPU负载、内存、硬盘使用情况等;

(3)zabbix proxy

        zabbix分布式代理守护进程,通常大于500台主机,需要进行分布式监控架构部署;

(4)zabbix get

        zabbix 数据接收工具,单独使用的命令,通常在server或者 proxy端执行获取远程客户端信息的命令;

(5)zabbix sender

        zabbix数据发送工具,用户发送数据给 server或 proxy端,通常用户耗时比较长的检查。

二、部署zabbix服务端

zabbix 服务端 zabbix_server 默认使用 10051 端口

zabbix_server:192.168.116.60(内存至少 2G,推荐 4G)

1.关闭防火墙和selinux,设置服务器名称,同步时间

systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-server
su
ntpdate ntp.aliyun.com

2.下载zabbix和相关软件 

#获取 zabbix 的下载源
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm 
#更换 zabbix.repo 为阿里源
cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo

yum clean all && yum makecache
yum install -y zabbix-server-mysql zabbix-agent

#安装SCL(Software Collections),便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4,版本过低,zabbix 5.0 版本对 php 版本最低要 7.2.0 版本。SCL 可以使得在同一台机器上使用多个版本的软件,而又不会影响整个系统的依赖环境。软件包会安装在 /etc/opt/rh/ 目录下。
yum install -y centos-release-scl 

还需要修改一下zabbix源,开启前端环境下载

#安装前端环境
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl

#安装 zabbix 所需的数据库
yum install -y mariadb-server mariadb
systemctl enable --now mariadb

#初始化数据库
mysql_secure_installation

#导入数据库信息
zcat /usr/share/doc/zabbix-server-mysql-5.0.15/create.sql.gz | mysql -uroot -pabc123 zabbix

3.修改 zabbix server 配置文件,修改数据库的密码

vim /etc/zabbix/zabbix_server.conf 
......
DBPassword=zabbix       #124行,指定 zabbix 数据库的密码

4. 修改 zabbix 的 php 配置文件

vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
......
php_value[date.timezone] = Asia/Shanghai      #24行,取消注释,修改时区

5.启动 zabbix 相关服务

systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

6.浏览器访问zabbix:http://192.168.116.60/zabbix

可以点击主机查看图形化数据,但会出现中文乱码,需要导入字符集

#解决 zabbix-server Web页面中文乱码问题
yum install -y wqy-microhei-fonts
\cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf

三、部署 zabbix 客户端

zabbix 5.0 版本采用 golang 语言开发的新版本客户端 agent2 。
客户端 zabbix_agent2 默认使用 10050 端口。

zabbix_agent01:192.168.116.70

1. 关闭防火墙和selinux,设置服务器名称,同步时间

systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-agent01
su
ntpdate ntp.aliyun.com

2.下载zabbix客户端

#设置 zabbix 的下载源,安装 zabbix-agent2
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm 

cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo

yum install -y zabbix-agent2

3.修改客户端配置文件并开启

#修改 agent2 配置文件
vim /etc/zabbix/zabbix_agent2.conf
......
Server=192.168.116.60			#80行,指定 zabbix 服务端的 IP 地址
ServerActive=192.168.116.60		#120行,指定 zabbix 服务端的 IP 地址
Hostname=zbx-agent01			#131行,指定当前 zabbix 客户端的主机名

#开启服务
systemctl enable --now zabbix-agent2.service

4.在服务端验证zabbix-agent2 的连通性

#安装 zabbix 主动获取数据的命令
yum install -y zabbix-get                

#测试
zabbix_get -s '192.168.116.70' -p 10050 -k 'agent.ping'
zabbix_get -s '192.168.116.70' -p 10050 -k 'system.hostname'

5.新建客户端 

四、监控模板

1.使用官方或已开发设计好的模板

Browse Zabbix / Zabbix - ZABBIX GIT

Zabbix searcher - 900+ Zabbix projects: templates, scripts, integrations, ...

Zabbix community templates

2.自定义监控模板

(1)监控客户端主机登录人数

首先再客户端自定义键(这里演示的用于监控主机登录人数,阈值为3,大于3报警)

 在/etc/zabbix/zabbix_agent2.d/下新建.conf文件,在里面自定义键,格式为

UserParameter=<key>,<commend>

之后重启服务读取文件配置 systemctl restart zabbix-agent2.service

可以在服务端使用命令进行测试(当前登录数为4)

测试无误就可以添加自定义模板了

创建好模板,找到并进行配置 

创建配置应用集

创建配置触发器 

创建配置图形 

将模板添加到客户端中 

查看图形(监控到了登录人数)

(2)监控nginx客户端状态信息

客户端安装nginx,模拟监控nginx服务器

vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

yum install nginx -y 

修改nginx配置文件/etc/nginx/conf.d/default.conf,打开状态统计

重启服务,查看状态统计页面

systemctl start nginx
curl -s 127.0.0.1/status

编写监控nginx状态信息脚本,获取以上值,并给执行权限

#/bin/bash
#Description:Automated monitoring nginx performance and process nginx_status scripts
HOST="localhost"
PORT=80
URL="status"
NGINX_COMMAND=$1
#检查nginx状态
nginx_check() {
    if [ -f /sbin/pidof ]; then
       /sbin/pidof nginx | wc -w
    else
       ps aux | grep -v "grep" | grep -c "nginx:"
    fi
}
#nginx状态相关信息的值
nginx_active(){
    /usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk '/Active/ {print $NF}'
}

nginx_reading(){
    /usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk '/Reading/ {print $2}'
}

nginx_writing(){
    /usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk '/Writing/ {print $4}'
}

nginx_waiting(){
    /usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk '/Waiting/ {print $6}'
}

nginx_accepts(){
    /usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk 'NR==3 {print $1}'
}

nginx_handled(){
    /usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk 'NR==3 {print $2}'
}

nginx_requests(){
    /usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk 'NR==3 {print $3}'
}
#命令获取对应值
case $NGINX_COMMAND in
    check)
        nginx_check
        ;;
    active)
        nginx_active
        ;;
    reading)
        nginx_reading
        ;;
    writing)
        nginx_writing
        ;;
    waiting)
        nginx_waiting
        ;;
    accepts)
        nginx_accepts
        ;;
    handled)
        nginx_handled
        ;;
    requests)
        nginx_requests
        ;;
    *)
        echo $"USAGE:$0 {check|active|reading|writing|waiting|accepts|handled|requests}"
esac

脚本测试无误

自定义监控变量,用于模板使用 

UserParameter=nginx.status[*],/etc/zabbix/zabbix_shell/zabbix_nginx.sh $1
#[*] 代表自定义变量nginx.status传入的值
#$1 代表前面变量传入的值作为此脚本执行的参数,获取对应状态值

重启服务systemctl restart zabbix-agent2.service,在服务端进行测试

测试无误,去前端自定义模板

五、配置zabbix报警

1.设置报警媒介

可以进行测试

2.在用户设置中指定报警媒介

3.指定报警的监控触发器

4.测试报警

        我们之前设置的报警触发器有一条是,当nginx进程为0,触发报警,所有我们可以模拟关闭nginx,看看是否能通过设置的报警媒介,收到zabbix的报警。

        当我们恢复这个问题,此问题便会消失

六、配置zabbix服务端自动发现与自动注册

1.自动发现

        zabbix 自动发现(对于 agent2 是被动模式)是zabbix server 主动的去发现所有的客户端,然后将客户端的信息登记在服务端上。缺点是如果定义的网段中的主机数量多,zabbix server 登记耗时较久,且压力会较大。

首先添加一台客户端,安装好zabbix-agent2服务,修改配置文件指定服务端地址和客户端名称,然后开启服务

服务端和客户端都需要配置彼此的域名解析

2.自动注册

        zabbix 自动注册(对于 agent2 是主动模式),zabbix agent2 会主动上报自己的信息,发给 zabbix server。缺点是可能因为配置文件配置错误或者网络不通等原因导致 zabbix agent2 可能找不到 zabbix server。

先禁用自动发现,删除客户端02,做自动注册 

在客户端配置文件开启自动注册,然后重启服务

添加自动注册动作 

七、部署zabbix代理服务器

        配置zabbix代理,分担 server 的集中式压力,解决多机房之间的网络延时问题。

首先关闭防火墙,修改主机名,安装代理

systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-proxy

rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm 
cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo

yum install -y zabbix-proxy-mysql zabbix-get

安装代理所需数据库,做初始化,密码设的是123123

yum install -y mariadb-server mariadb
systemctl enable --now mariadb
mysql_secure_installation

添加数据库和用户,授权,导入数据库表信息

mysql -uroot -p123123
CREATE DATABASE zabbix_proxy character set utf8 collate utf8_bin;
GRANT all ON zabbix_proxy.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
flush privileges;
quit
#退出后导入表数据
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.29/schema.sql.gz | mysql -uroot -p123123 zabbix_proxy

修改代理配置文件,然后启动服务

vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.116.60				#30行,指定 zabbix 服务端的 IP 地址
Hostname=zbx-proxy					#49行,指定当前 zabbix 代理服务器的主机名
DBPassword=zabbix					#196行,指定当前数据库 zabbix 用户的密码

systemctl start zabbix-proxy

修改agent 指向代理的地址

vim /etc/zabbix/zabbix_agent2.conf
......
Server=192.168.116.40			#80行,指定 zabbix 代理服务器的 IP 地址
ServerActive=192.168.116.40		#120行,指定 zabbix 代理服务器的 IP 地址

还需要在每台主机添加域名解析

之后去服务端指定代理 

创建客户端时添加代理 

之后依次重启server、proxy、client 服务

等待客户端全部亮起即可

八、SNMP监控

        使用SNMP简单网络管理协议,对网络中的资源进行管理和实时监控。

首先在需要监控的路由器、交换机上安装snmp(这里以server本机为例)

yum install -y net-snmp net-snmp-utils.x86_64

systemctl start snmpd.service

然后去前端修改使用snmp 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/848295.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实战项目ssm权限系统 2-自定义springsecurity组件实现认证授权

一 springsecurity 作用 1.1 springsecurity Spring security是spring家族的一个安全性框架&#xff0c;主要是用来进行用户认证(Authentication)和用户授权(Authorization)的框架。 用户认证&#xff1a;验证用户登录是否合法 用户授权&#xff1a;登录成功后用户具有哪些…

Linux ARM64架构 动态替换 altinstructions

文章目录 简介一、altinstructions节1.1 .altinstructions1.2 .rela.altinstructions 二、内核模块重定位源码分析参考资料 简介 在内核开发中&#xff0c;有时需要对内核代码进行修补&#xff0c;以解决bug、优化性能或引入新功能。替代指令&#xff08;altinstructions&…

云原生K8S------Yaml文件详解

目录 一&#xff1a;K8S支持的文件格式 1&#xff0c;yaml和json的主要区别 2&#xff0c;YAML语言格式 二&#xff1a;yuml 1、查看 api 资源版本标签 2、写一个yaml文件demo 3、创建service服务对外提供访问并测试 4、详解k8s中的port 三&#xff1a;文件生成 1、kubec…

如果你需要使用重试机制,请使用Spring官方的Spring Retry

Spring Retry 是 Spring Framework 中的一个模块&#xff0c;提供了一种简单的方式来在应用程序中实现重试机制。 在应用程序中&#xff0c;如果遇到了一些不可避免的错误&#xff0c;比如网络连接失败、数据库连接失败等&#xff0c;我们通常需要对这些错误进行重试&#xff…

搭建日志服务器Rsyslog

Rsyslog介绍 Rsyslog的全称是 rocket-fast system for log&#xff0c;它提供了高性能&#xff0c;高安全功能和模块化设计。rsyslog能够接受从各种各样的来源&#xff0c;将其输入&#xff0c;输出的结果到不同的目的地。rsyslog可以提供超过每秒一百万条消息给目标文件。 特…

Qt+C++实现灯带动画运动位置变换移动跑马灯图片轮播

程序示例精选 QtC实现灯带动画运动位置变换移动跑马灯图片轮播 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<QtC实现灯带动画运动位置变换移动跑马灯图片轮播>>编写代码&…

Vue项目npm run dev 启动报错TypeError: Cannot read property ‘upgrade‘ of undefined

vue项目启动报错 TypeError: Cannot read property upgrade of undefined 由于我的vue.config.js文件 里面的代理target为空导致的 修改&#xff1a; 结果就可以正常运行了 参考原文&#xff1a; vue项目运行时报Cannot read property ‘upgrade’ of undefined错误_cannot r…

【Docker】Docker的应用场景,Docker 的优点,Ubuntu Docker 安装,使用 Shell 脚本进行安装

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

【福建事业单位-资料分析】01 速算技巧-基期与现期

【福建事业单位-资料分析】01 速算技巧-基期与现期 一、速算技巧&#xff08;基于选项的速算&#xff09;1.1 计算类别——截位直除练习总结 二、速算技巧-比较类-分数比较2.1 一大一小&#xff08;一大/一小&#xff09;2.2 同大同小①分子分母都变大&#xff0c;保留两位直接…

智橙PDM系统:图文档与物料数据同时管理编辑系统

在当今快速变化的商业环境中&#xff0c;数字化转型已经成为企业不可或缺的一部分。产品数据的高效管理和协作变得尤为重要&#xff0c;而智橙的PDM系统&#xff08;产品数据管理系统&#xff09;为企业提供了无限协作的全新维度。 无限协作&#xff0c;创新无限 智橙PDM系统瞄…

QListView的使用(正逆序插入)

首先在介绍QListView之前&#xff0c;先说一下QListView和QListWidget的区别&#xff1a; 1、QListView是model&#xff08;模型/视图&#xff09;表格类型&#xff0c;QListWidget它是Item表格类型。 2、QListView使用较复杂&#xff0c;一般需要配合数据模型QAbstractListMod…

【Linux】公网环境下Ubuntu系统SSH远程树莓派

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于恒川的日常汇报系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏C语言初…

Nginx与Tomcat的区别,什么是HTTP服务器(处理静态资源的服务器),什么是处理动态资源的服务器

Nginx和Tomcat都是常用的Web服务器&#xff0c;但它们的主要作用不同。Nginx是一个HTTP服务器&#xff0c;反向代理服务器和通用TCP/UDP代理服务器。它通常用于静态内容、媒体流和负载均衡。在高流量和高并发负载下&#xff0c;Nginx表现更出色&#xff0c;并且能够轻松处理静态…

解决android studio妙明奇妙出现的模拟器

1&#xff0c;查看设备 adb devices 2&#xff0c; adb命令断开指定的设备 要断开ADB与特定设备的连接&#xff0c;可以使用以下命令&#xff1a; adb disconnect <设备ID> 将 <设备ID> 替换为您要断开连接的设备的实际ID。设备ID可以在运行 adb devices 命令…

C语言刷题------(2)

C语言刷题——————&#xff08;2&#xff09; 刷题网站&#xff1a;题库 - 蓝桥云课 (lanqiao.cn) First Question&#xff1a;时间显示 题目描述 小蓝要和朋友合作开发一个时间显示的网站。 在服务器上&#xff0c;朋友已经获取了当前的时间&#xff0c;用一个整数表…

Ansible的安装和配置

安装和配置 Ansible 安装所需的软件包 创建名为 /home/greg/ansible/inventory 的静态清单文件&#xff0c;以满足以下要求&#xff1a; 172.25.250.9 是 dev 主机组的成员 172.25.250.10 是 test 主机组的成员 172.25.250.11 和 172.25.250.12 是 prod 主机组的成员 172.2…

电测知识分享——10分钟学会!超火网络应用测试教程来了,火速收藏

在当今的网络应用中&#xff0c;当属以太网最流行&#xff0c;特别是终端电脑的连接几乎是以太网的天下&#xff0c;即使无线网卡最终也是以太网协议。终端网络分为有线以太网和无线WF,目前都形成了IEEE的标准。 今天&#xff0c;我们就来学习一下&#xff0c;1000M BASE-T&am…

war和war exploded

war和war exploded的区别 war模式&#xff1a;将WEB工程以包的形式上传到服务器 &#xff1b; war exploded模式&#xff1a;将WEB工程以当前文件夹的位置关系上传到服务器&#xff1b;>> war包是自己打包生成的&#xff0c;如pom文件中<packaging>war</packag…

【设计模式】责任链的基本概念及使用Predicate灵活构造校验链

文章目录 1. 概述1.1.背景1.2.责任链模式的概念 2.责任链的基本写法2.1.链表实现2.2.数组实现 3.Predicate校验链2.1.使用Predicate改写代码2.1.更丰富的条件拓展 4.总结 1. 概述 1.1.背景 在最近的开发中遇到了这么一个需求&#xff0c;需要对业务流程中的各个参数做前置校验…

社科院与杜兰大学能源管理硕士——环境不会改变,解决之道在于改变自己

随着社会经济的不断发展&#xff0c;职场竞争也愈发激烈、工作要求不断提高&#xff0c;许多从业人员既不想放弃工作&#xff0c;又想提升专业能力&#xff0c;深化对专业知识的理解&#xff0c;获取优质的证书。那么考研便是一个不错的方式。考研的专业有很多&#xff0c;我们…