服务(第二十九篇)zabbix

news2024/12/25 9:05:12

zabbix 是什么?

zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix 由 2 部分构成,zabbix server 与可选组件 zabbix agent。通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置。
zabbix server 可以通过 zabbix agent,SNMP协议,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在 Linux 等平台上。
zabbix agent 需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU 等信息的收集。

zabbix 监控原理:

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

Zabbix 6.0 功能组件:
Zabbix Server
zabbix 服务端守护进程,是 Zabbix 软件的核心组件,Zabbix Agent 向其报告可用性、系统完整性信息和统计信息。
Zabbix Server 也是存储所有配置信息、统计信息和操作信息的核心存储库。
Zabbix Server 也是 Zabbix 监控系统的告警中心。在监控的系统中出现任何异常,将发出通知给管理员。

基本的 Zabbix Server 的功能分解成为三个不同的组件。他们是:Zabbix server、Web 前端、数据库。

Zabbix 的所有配置信息都存储在 Server 和 Web 前端进行交互的数据库中。例如,当你通过 Web 前端(或者API)新增一个监控项时, 它会被添加到数据库的监控项表里。然后,Zabbix server 以每分钟一次的频率查询监控项表中的有效项,接着将它存储在 Zabbix server 中的缓存里。 这就是为什么 Zabbix 前端所做的任何更改需要花费两分钟左右才能显示在最新的数据段的原因。

数据库
所有配置信息以及 Zabbix 采集到的数据都被持久存储在数据库中。
可以支持 MySQL、PostgreSQL、Oracle、DB2、TimescaleDB 等多种数据库。

Web 界面
Web 界面是 Zabbix Server 的一部分,用于实现展示和配置的界面。通常(但不一定)和 Zabbix server 运行在同一台物理机器上。
基于 Apache/Nginx + PHP 实现,早期只支持 LAMP 架构,从 Zabbix5.0 开始支持 LNMP 。

Zabbix Agent
客户端守护进程,部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix Server。从 Zabbix5.0 开始支技 Zabbix Agent2 。

Zabbix Proxy
zabbix 分布式代理守护进程,可以代替 Zabbix Server 采集性能和可用性数据。Zabbix Proxy 在 Zabbix 的部署是可选部分。
Zabbix Proxy 的部署可以很好的分担单个 Zabbix Server 的负载。
通常监控大于 500 台主机时使用,需要进行分布式监控架构部署。

Java Gateway
Zabbix 要监控 Tomcat 服务或其它 JAVA 程序(比例 Elasticsearch、ZooKeeper),需要使用 Java Gateway 做为代理,才能从 JAVA 程序中获取数据。

安装实验步骤:

①部署 Nginx + PHP 环境并测试

#安装 nginx
cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF

yum install -y nginx

#安装 php
1 curl -o /etc/yum.repos.d/CentOS-Base.repo   http://mirrors.aliyun.com/repo/Centos-7.repo
2 yum install -y epel-release
3 rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache php72w-ldap php72w-bcmath

 

修改 nginx 配置:vim /etc/nginx/conf.d/zbx.conf

server {
  listen 80;
  server_name zbx.kgc.com;
  root /var/www/zbx;
  
  location / {
    index index.php;
  }
  
  location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /var/www/zbx$fastcgi_script_name;
    include fastcgi_params;
  }
}

 

修改 php 配置:vim /etc/php-fpm.d/www.conf

user = nginx
group = nginx

vim /etc/php.ini
max_execution_time = 300          # 368行
max_input_time = 600                  # 378行
post_max_size = 80M                  # 656行
date.timezone = Asia/Shanghai    # 877行

启动服务:

systemctl enable --now nginx php-fpm

 ②部署数据库

配置 Mariadb yum源
cat > /etc/yum.repos.d/mariadb.repo << EOF
[mariadb]
name = MariaDB
baseurl = http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
enabled=1
EOF

yum install -y mariadb-server mariadb

systemctl enable --now mariadb

 

③初始化数据库
mysql_secure_installation
分别输入 回车 -> n -> Y (设置root密码,如abc123) -> 后面一路 Y

 mysql -u root -pabc123

创建数据库并指定字符集
CREATE DATABASE zabbix character set utf8 collate utf8_bin;

创建 zabbix 数据库用户并授权
GRANT all ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix';
GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
flush privileges;

 ④向数据库导入 zabbix 数据(ls /opt/zabbix-6.0.13/database/mysql)

 #按照顺利导入数据库
cd /opt/zabbix-6.0.13/database/mysql
mysql -uroot -pabc123 zabbix < schema.sql
mysql -uroot -pabc123 zabbix < images.sql
mysql -uroot -pabc123 zabbix < data.sql
mysql -uroot -pabc123 zabbix < double.sql
mysql -uroot -pabc123 zabbix < history_pk_prepare.sql

⑤编译安装 zabbix Server 服务端
安装依赖包,创建 zabbix 用户
yum install -y mysql-devel pcre-devel openssl-devel zlib-devel libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel openldap-devel libcurl-devel fping gcc gcc-c++ make

useradd -s /sbin/nologin -M zabbix

编译安装
cd /opt/zabbix-6.0.13/

./configure \
--sysconfdir=/etc/zabbix/ \
--enable-server \
--with-mysql \
--with-net-snmp \
--with-libxml2 \
--with-ssh2 \
--with-openipmi \
--with-zlib \
--with-libpthread \
--with-libevent \
--with-openssl \
--with-ldap \
--with-libcurl \
--with-libpcre

make install

#检查版本
zabbix_server --version

 版本查询相同版本就是ok了

 ⑥修改 zabbix server 配置文件,修改数据库的密码(vim /etc/zabbix/zabbix_server.conf)

LogFile=/var/log/zabbix_server.log        # 38行,指定 zabbix 日志路径,需要自己去创建一个这个文件并给777权限
DBPassword=zabbix                    # 123行,指定 zabbix 数据库的密码

#准备 systemctl 服务管理文件
cat > /usr/lib/systemd/system/zabbix-server.service << EOF
[Unit]
Description=Zabbix Server with MySQL DB
After=syslog.target network.target mysqld.service

[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now zabbix-server

netstat -lntp | grep 10051            #zabbix_server 默认监听 10051 端口

 ⑦部署 Web 前端,进行访问

cp -r /opt/zabbix-6.0.13/ui/* /var/www/zbx

chown -R nginx.nginx /var/www/zbx

 ​​​​​​​访问:http://zbx.kgc.com/ 

访问之前需要配置本地的hosts

解决 zabbix-server Web页面中文乱码问题:

yum install -y wqy-microhei-fonts

\cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /var/www/zbx/assets/fonts/DejaVuSans.ttf
 

 

处理一般警告:他是因为没有安装agent。

添加 zabbix 客户端主机:

①时间同步:ntpdate -u ntp.aliyun.com

②服务端和客户端都设置 hosts 解析 ③设置 zabbix 的下载源,安装 zabbix-agent2

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

yum install -y zabbix-agent2

 

④修改 agent2 配置文件(vim /etc/zabbix/zabbix_agent2.conf)

Server=192.168.169.30            #80行,指定 zabbix 服务端的 IP 地址
ServerActive=192.168.169.30        #133行,指定 zabbix 服务端的 IP 地址
Hostname=zbx-agent01            #144行,指定当前 zabbix 客户端的主机名

⑤启动 zabbix-agent2

systemctl start zabbix-agent2
systemctl enable zabbix-agent2

netstat -natp | grep zabbix
tcp6       0      0 :::10050                :::*                    LISTEN      43654/zabbix_agent2 

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

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

zabbix_get -s '192.168.169.40' -p 10050 -k 'agent.ping'

常用的键值:
agent.ping                                                #服务端与客户端是否连通,返回1表示可达,返回非表示不可达
system.hostname                                            #系统主机名
agent.hostname                                            #客户端主机名
net.if.in[if,<mode>]                                    #网络接口进入的流量统计,if表示网卡名称,带<>的参数表示可以省略
net.if.out[if,<mode>]                                    #网络接口流出的流量统计
proc.num[<name>,<user>,<state>,<cmdline>,<zone>]        #进程数
net.tcp.port[<ip>,port]                                    #检查是否能建立tcp连接到指定端口,返回0表示不能连接,返回1表示可以连接

去配置主机: 

在 Web 页面中添加 agent 主机
点击左边菜单栏【配置】中的【主机】,点击【创建主机】
【主机名称】输入 zbx-agent01
【可见的名称】输入 zbx-agent01-192.168.169.50
【模板】搜索 Linux ,选择 Linux by Zabbix agent
【群组】选择 Linux servers
【Interfaces】点击添加 客户端,【IP地址】输入 192.168.169.50

 这样就好了:

 

自定义监控内容:

①在客户端创建自定义 key

明确需要执行的 linux 命令
who | wc -l

创建 zabbix 的监控项配置文件,用于自定义 key
vim /etc/zabbix/zabbix_agent2.conf
#可以将自定义的监控项配置文件创建在 zabbix_agent2.d 目录中
281 Include=/etc/zabbix/zabbix_agent2.d/*.conf
#自定义监控项的格式如下
321 #    Format: UserParameter=<key>,<shell command>

cd /etc/zabbix/zabbix_agent2.d/

vim UserParameter_login.conf
UserParameter=login.user,who|wc -l

systemctl restart zabbix-agent2

在服务端验证新建的监控项
zabbix_get -s '192.168.80.30' -p 10050 -k 'login.user'

②在 Web 页面创建自定义监控项模板

1.创建模板
点击左边菜单栏【配置】中的【模板】,点击【创建模板】
【模板名称】设置成 Template Login User
【可见的名称】设置成 Template Login User
【群组】选择 Template
【描述】可自定义
点击 【添加】,此时就可在【名称】中搜索到 Template Login User 了


2.创建监控项
点击 Template Login User 模板进入
点击上方菜单栏【监控项】,点击【创建监控项】
【名称】设置成 Number of login users
【键值】设置成 login.user            #键值必须要与自定义的监控项配置文件中设置的保持一致
【更新间隔】设置成 10s
【历史数据保留时长】Storage period    30d        #保留时间可自定义设置
点击 【添加】

3.创建触发器(当监控项获取到监控的值后和触发器预设的值进行对比,判断是否报警)
点击上方菜单栏【触发器】,点击【创建触发器】
【名称】设置成 Number of login users is greater than 3
【严重性】设置成 一般严重        #根据严重程度可自定义设置
【表达式】点击添加,【监控项】点击选择 Number of login users,【功能】选择 last(),【结果】选择 > 3,点击 【插入】
点击 【添加】

5.创建图形
点击上方菜单栏【图形】,点击【创建图形】
【名称】设置成 Number of login users
【宽】、【高】可直接采用默认值
【监控项】点击添加勾选相关监控项 Number of login users,【功能】选择 最大,其它可保持默认值
点击 【添加】

6.将主机与模板关联起来(一个主机可以关联多个模板)
点击左边菜单栏【配置】中的【主机】,点击你要关联的主机
【模板】搜索 login,选择 Template Login User,点击【更新】

此时就点击【监测】中的【主机】,点击你关联主机的【图形】,即可查看到相关的监控项指标

7.设置邮件报警
点击左边菜单栏【管理】中的【报警媒介类型】,点击【创建媒体类型】
【名称】设置成 qq_Email
【SMTP服务器】设置成 smtp.qq.com
【SMTP服务器端口】设置成 25
【SMTP HELO】设置成 qq.com
【SMTP电邮】设置成 自己的邮箱地址,例如 qwe4546456@qq.com
【认证】选择 用户名和密码
【用户名称】设置成 自己的邮箱地址,例如 qwe4546456@qq.com
【密码】可登录QQ邮箱页面,点击【设置】-->【账户】中的【生成授权码】,通过短信获取授权码
【描述】可自定义
点击上方菜单栏【Message templates】,点击【添加】,【Message type】选择 问题,点击【更新】
点击 【添加】,并测试功能

点击左边菜单栏【User settings】-->【Profile】-->【报警媒介】,点击【添加】
【类型】选择 qq_Email
【收件人】设置成 qwe4546456@wo.cn
【当启用时】设置成 1-7,00:00-24:00
【如果存在严重性则使用】勾选需要的严重性
点击 【添加】
再点击 【更新】

点击左边菜单栏【配置】->【动作】->【Trigger actions】
选择相对应的动作名称点击进入,点击 【添加】
【类型】选择 触发器,【操作者】选择 等于,【触发器】点击选择 Nunber of login users is greater than 3
点击【添加】
勾选 【已启动】
点击 【更新】


//测试邮件报警
增加测试客户端的用户登录数超过触发器预设的值,查看【监测】-->【仪表板】,确认报警

 

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

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

相关文章

太阳升起和落下(长文警告)

今天分享一个太阳升起落下的动画场景。 有朋友问我为什么只发代码不做说明&#xff0c;今天我们尝试下对代码进行注解说明一下。 首先这个场景大致的可拆分为4个部分&#xff1a;太阳/月亮&#xff0c;右下角的按钮&#xff0c;天上的云和最显眼的建筑。 我们先做一个按钮&am…

stable diffusion AI绘图工具的安装和使用centos7.8系统

stable diffusion 作图工具本地部署 重要【AI作画】stable diffusion webui Linux虚拟机 Centos 详细部署教程 服务器CentOS 7 安装 Stable Diffusion WebUI &#xff0c;并映射到本地浏览器 CentOs7 Stable Diffusion Novel AI实现AI绘画 stable diffusion webui安装部署…

二、数据仓库详细介绍

基础概念 架构与框架&#xff0c;架构是结构&#xff0c;框架是规范 模块与组件&#xff0c;模块是逻辑概念&#xff0c;通过分解使复杂问题简单化&#xff0c;组件是物理概念&#xff0c;将具体的模块落地&#xff0c;且各个组件间保持松散耦合 定义&#xff1a;架构&#x…

分布式全局唯一id实现总结

前言&#xff1a;本文意在对借助db和程序生成分布式id进行一些总结&#xff0c;以及对其特性进行比较分析&#xff1b; 1 实现方式&#xff1a; Db 通过配置步长和初始值的方式&#xff0c;使得每个db库生成id 的不同性&#xff0c;如 3个db 实例情况下&#xff1a;其步长均设…

我3年前写的博客,又被别人抄去发论文了,该论文整个正文部分几乎直接照抄我的博客

我想说每一篇原创博客都是作者的心血&#xff0c;有时候写一篇博客也许会花一天&#xff0c;甚至好几天的时间&#xff0c;尊重原创&#xff0c;营造好的环境&#xff0c;才有可能出现更多优质的博文&#xff0c;而不是到处都是抄来抄去的低质量水文。 前几天接到来自粉丝的私信…

加密解密软件VMProtect教程(八)许可制度之集成到应用程序

VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C、Visual Basic&#xff08;本机&#xff09;、Virtual Pascal和XCode编译器。 同时&#xff0c;VMProtect有一个内置的反汇编程序&#xff0c;可以与Windows和Mac OS X可执行文件一起…

全网最快PCB打样| 急速小批量打样的秘密在这里

对于广大爱好者以及电子工程师来说&#xff0c;电子行业的快速发展&#xff0c;导致电子产品的多样化和个性化&#xff0c;电路设计的复杂度和难度提高&#xff0c;需要更多的PCB打样来验证和测试&#xff0c;满足细分市场的客户需求。 随着PCB打样厂家的服务优化和价格降低&am…

信息收集-服务器信息

服务器上面可以运行大量的系统服务和第三方应用服务&#xff0c;如果操作系统或者第三方软件没有及时升级打补丁&#xff0c;攻击者就有可能直接通过服务器上运行的服务进行攻击。 服务器需要收集的信息包含三个方面&#xff1a; 操作系统信息等识别waf&#xff08;Web应用程…

高级测试必备技能:从session请求到token请求,傻瓜式掌握Charles和postman断言技巧

引言 在快速发展的数字化时代&#xff0c;软件测试作为保障软件品质和用户体验的重要一环&#xff0c;显得愈加重要。SESSION请求、TOKEN请求、charles使用和Postman断言等技术&#xff0c;成为测试人员不可或缺的必备技能。 在这篇文章中&#xff0c;我将深入浅出地为您讲解…

Java编程思想(第4版) 扫描版

Java编程思想 - 基础必备 Java基础必备书籍&#xff01; 从本书获得的各项大奖以及来自世界各地的读者评论中&#xff0c;不难看出这是一本经典之作。本书的作者拥有多年教学经验&#xff0c;对C、C以及Java语言都有独到、深入的见解&#xff0c;以通俗易懂及小而直接的示例解…

使用C++快速上手ProtoBuf (一)

文章目录 课程目标一、初始ProtoBuf1. 序列化概念2.ProtoBuf是什么3.ProtoBuf的使⽤特点 二、安装ProtoBuf三、教学思路四、快速上⼿步骤1&#xff1a;创建.proto文件步骤2&#xff1a;编译contacts.proto⽂件&#xff0c;⽣成C⽂件步骤3&#xff1a;序列化与反序列化的使⽤⼩结…

2分钟快速上手工作流的创建与运行

前段时间&#xff0c;偶然发现一款低代码产品&#xff0c;工作流很突出&#xff0c;至少我觉得&#xff0c;设计颇有精妙之处。 可视化工作流是实现看板的第一步&#xff0c;要想业务人员也能了然其中的运行逻辑&#xff0c;这款产品可是做到了白痴也看得懂的程度&#xff01;…

讲个小故事

5月21日&#xff0c;沈梦辰在微博晒出了一组照片&#xff0c;记录下520这天杜海涛去机场接机的甜蜜瞬间。杜海涛不仅给沈梦辰送上兔子造型的红玫瑰花束&#xff0c;同时还准备了现切的新鲜西瓜。同一天&#xff0c;李湘女儿王诗龄也在网络晒出了自己的520礼物&#xff0c;那是一…

DOS命令(了解)

目录 一、 DOS 介绍 二、相关的知识补充: 相对路径&#xff0c; 绝对路径 ​三、常用的 dos 命令 1) 查看当前目录是有什么内容 dir 2) 切换到其他盘下&#xff1a;盘符号 cd : change directory 3) 切换到当前盘的其他目录下 (使用相对路径和绝对路径演示), ..\表示上一级…

网关Netfilx Zuul:---(Eureka高可用操作)

之前我们创建完成了3个Eureka的客户端的服务操作&#xff0c;你会发现我们还是没有能够通过微服来进行对他访问&#xff0c;还是必须通过自己服务的端口号来进行访问&#xff0c;那么我们的微服务是没有能够完成的&#xff0c;这个时候我们就需要通过网关进行操作 其实网关就是…

618大促聚焦“低价”与“规则简化”

618年中大促即将拉开帷幕。 多个电商平台已经公布今年618促销节的节奏与玩法&#xff0c;618开启之前&#xff0c;电商平台也纷纷表达了对于年中大促的重视&#xff0c;淘宝天猫618总负责人暮珊此前表示&#xff0c;“今年淘宝天猫618是历史上最大投入的一届”。抖音副总裁木青…

设计模式之【策略模式】,去掉繁琐的if-else,实现算法的动态替换

文章目录 一、什么是策略模式1、策略模式应用场景2、状态模式与策略模式的区别3、策略模式优缺点4、策略模式的三大角色 二、实例1、策略模式的一般写法2、促销活动案例3、网购订单支付案例4、DispatcherServlet的优化5、文件排序案例 三、源码中的策略模式1、Comparator接口2、…

在字节做了5年的软件测试,被辞了,太真实了...

先简单说下&#xff0c;涵哥是某不知名 985 的本硕&#xff0c;17 年毕业加入字节&#xff0c;以“人员优化”的名义无情被裁员&#xff0c;之后跳槽到了有赞&#xff0c;一直从事软件测试的工作。还差一个月也6年了吧&#xff0c;算是在这行的资深划水员。6年的时间也让涵哥从…

ChatGPT 辅助生成PPT

前言 介绍 ChatGPT 与 MindShow 结合高效生成 PPT。 文章目录 前言一、准备工具二、使用步骤1. 内容生成2. 制作 PPT三、小节一、准备工具 ChatGPT:MindShow:MindShow网站 MindShow 内置了丰富的模板、图表和设计元素。具有自动排版功能,可根据输入内容智能调整布局。二、使…

29岁测试被辞,面试2个月还找不到工作....

最近一个29岁老同学联系我&#xff0c;因为被公司辞退&#xff0c;找我倾诉&#xff0c;于是写下此文。 他是14年二本毕业&#xff0c;在我的印象里人特别懒&#xff0c;不爱学习&#xff0c;专业不好&#xff0c;毕业前因为都没找到合适工作&#xff0c;直接去创业了&#xf…