【分布式技术】——监控平台zabbix 介绍与部署

一、监控系统的相关知识 

1.监控系统运用的原因

 当我们需要实时关注与其相关的各项指标是否正常,往往存在着很多的服务器、网络设备等硬件资源,如果我们想要能够更加方便的、集中的监控他们,zabix可以实现集中监控管理的应用程序

监控的初衷就是当某些指标不符合我们的需求时,我们能够在第一时间发现异常。

个人认为 :作为一个运维,需要进行时刻监控整个业务架构的性能情况,以便及时预防,不可能只手动命令或者脚本监控,而且工作量很大并容易出错,需要会使用监控系统可以更加直观的查看到服务器系统性能、应用服务状态和网站流量指标等,利用监控系统的数据去了解网站上线发布的结果和健康状态。所以有了运维监控架构部署:

2.运维架构:运维客户端 -> 跳板机/堡垒机(jumpserver/VPN)-> 监控系统(zabbix、prometheus)、日志系统(ELK、Loki)、存储系统(NFS、Ceph、NAS、SAN)、自动化运维平台(Ansible)、自动发布系统(CI/CD jenkins gitlab)

利用一个优秀的监控软件可以给我带来:

  • 通过一个友好的界面进行浏览整个网站所有的服务器状态(并且是实时展示)
  • 可以在 Web 前端方便的查看监控数据
  • 可以回溯寻找事故发生时系统的问题和报警情况

3.市面上常用的监控系统 

市场上常用的监控软件:

  • 传统运维:zabbix、 Nagios
  • 云原生环境: Prometheus (go语言开发的)

二、zabbix 

1.zabbix的概述

  • zabbix是一个开源的监控系统,提供了分布式监控以及集中的web管理页面
  •  zabbix具备常见商业监控软件所具备的功能,主机性能监控,网络设备性能监控,数据库性能监控,ftp、http等通用协议的监控,当被监控的指标异常可以发送基于 E-mail的报警
  • zbbix提供报表及实时的图形化数据处理,实现对监控主机7x24小时集中监控
  • Zabbix通过C/S模式采集监控数据,通过B/S模式在web端展示和配置,被监控对象只需要支持SNMP协议或者运行Zabbix agents代理程序即可,服务端监听端口为 10051,被监控端即Zabbix——agents代理程序监控10050端口

2.zabbix 是什么?

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

3.zabbix有哪些组件?

  • zabbix server(端口10051):zabbix服务端进程,用于配置和管理zabbix应用程序,也是监控系统的告警中心(需要配置监控项告警触发阈值和发送告警)
  • zabbix database:持久化存储配置信息和监控指标数据(支持mysql oracle gpdb tsdb等)
  • zabbix web:用于zabbix服务端配置界面和监控数据的UI界面展示(支持LAMP/LNMP)
  • zabbix agent(端口10050):部署在被监控的主机上,采集监控指标数据,并发送给zabbix server(数据采集支持主动模式和被动模式)
  • 主动模式zabbix agent 主动向 zabbix server 请求监控项列表,并主动将监控项需要的数据发送给 zabbix server
  •  被动模式zabbix agent 被动接收 zabbix server 请求的监控项列表,zabbix agent 发送监控项需要的数据发送给 zabbix server
  • zabbix proxy:zabbix代理端进程,部署在zabbix server与zabbix agent之间,代替zabbix server接收zabbix agent发送的监控数据并存储在本地,汇总后再转发给 zabbix server,从而可以分担zabbix server的集中式负载压力
  • zabbix java gateway:用于获取从通过JMX在JAVA应用暴露的端口采集监控数据

4.zabbix的工作原理?

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

总结:

zabbix agent 会定期采集被监控主机的指标数据并发送给 zabbix server,zabbix server 接收数据后会存储到 zabbix database 里,管理员基于 zabbix web 即可在浏览器查看到监控数据的图像。

Zabbix 6.0 新特性:

1、Zabbix server高可用防止硬件故障或计划维护期的停机:
•原生选择加入HA群集配置
•定义一个或多个备用节点
•实时监控Zabbix server群集节点的状态
•不需要外部工具即可将Zabbix server配置为HA群集模式

2、Zabbix 6.0 LTS新增Kubernetes监控功能,可以在Kubernetes系统从多个维度采集指标:
•Kubernetes节点和pods的自动发现和监控
•无代理方式采集Kubernetes pods和节点的信息
•获取Kubernetes节点主机高水平信息

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 程序中获取数据。

三、实操部署zabbix6.0

192.168.10.18

初始化关闭防火墙,前半程部署lnmp(区别于之前的安装方法)

[root@localhost ~]# systemctl disable --now firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/selinux/configSELINUX=disabled
[root@localhost ~]# hostnamectl set-hostname zabbix

(1)  安装nginx和php(yum安装)

192.168.10.18

1)安装nginx

---------- 部署 zabbix 服务端 ----------//部署 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
EOFyum install -y nginx  #安装nginx

安装php

 #安装 php
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#将阿里云镜像站的 CentOS 7 仓库配置文件下载到本地系统的 /etc/yum.repos.d/ 目录下,并将其命名为 CentOS-Base.repo。这样,当你使用 yum 命令安装软件时,系统会从阿里云镜像站获取软件包,从而提高下载速度和稳定性。yum install -y epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm 
#失败多试几次就好
#下载并安装 Webtatic 仓库的 RPM 包,以便在 CentOS 7 系统中使用 Webtatic 提供的 PHP 版本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
#安装 PHP 7.2 版本及其相关扩展组件

由于centos7本地安装源禁用,可使用以下命令切换阿里云镜像使用

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

如果一直失败下不下来,建议直接拉进来软件包安装编译

尽量不要同时安装mysql和Mariadb 创建用户时容易出错

[root@localhost etc]# cd /opt/
[root@localhost opt]# ls
rh
[root@localhost opt]# mkdir php/
[root@localhost opt]# ls
php  rh
[root@localhost opt]# cd php#拉入php压缩包到php/目录
[root@localhost php]# ls
php.tar.gz
[root@localhost php]# tar xf php.tar.gz 
[root@localhost php]# ls
libargon2-20161029-3.el7.x86_64.rpm     php72w-gd-7.2.34-1.w7.x86_64.rpm
mod_php72w-7.2.34-1.w7.x86_64.rpm       php72w-ldap-7.2.34-1.w7.x86_64.rpm
pcre-devel-8.32-17.el7.x86_64.rpm       php72w-mbstring-7.2.34-1.w7.x86_64.rpm
php72w-bcmath-7.2.34-1.w7.x86_64.rpm    php72w-mysqlnd-7.2.34-1.w7.x86_64.rpm
php72w-cli-7.2.34-1.w7.x86_64.rpm       php72w-opcache-7.2.34-1.w7.x86_64.rpm
php72w-common-7.2.34-1.w7.x86_64.rpm    php72w-pdo-7.2.34-1.w7.x86_64.rpm
php72w-devel-7.2.34-1.w7.x86_64.rpm     php72w-xml-7.2.34-1.w7.x86_64.rpm
php72w-embedded-7.2.34-1.w7.x86_64.rpm  php.tar.gz
php72w-fpm-7.2.34-1.w7.x86_64.rpm
[root@localhost php]# cd ..
[root@localhost opt]# createrepo php/
Spawning worker 0 with 4 pkgs
Spawning worker 1 with 4 pkgs
Spawning worker 2 with 4 pkgs
Spawning worker 3 with 4 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@localhost opt]# cd php/
[root@localhost php]# ls
libargon2-20161029-3.el7.x86_64.rpm     php72w-gd-7.2.34-1.w7.x86_64.rpm
mod_php72w-7.2.34-1.w7.x86_64.rpm       php72w-ldap-7.2.34-1.w7.x86_64.rpm
pcre-devel-8.32-17.el7.x86_64.rpm       php72w-mbstring-7.2.34-1.w7.x86_64.rpm
php72w-bcmath-7.2.34-1.w7.x86_64.rpm    php72w-mysqlnd-7.2.34-1.w7.x86_64.rpm
php72w-cli-7.2.34-1.w7.x86_64.rpm       php72w-opcache-7.2.34-1.w7.x86_64.rpm
php72w-common-7.2.34-1.w7.x86_64.rpm    php72w-pdo-7.2.34-1.w7.x86_64.rpm
php72w-devel-7.2.34-1.w7.x86_64.rpm     php72w-xml-7.2.34-1.w7.x86_64.rpm
php72w-embedded-7.2.34-1.w7.x86_64.rpm  php.tar.gz
php72w-fpm-7.2.34-1.w7.x86_64.rpm       repodata
[root@localhost php]# vim /etc/yum.repos.d/local.repo #把yum源路径改到php压缩包所在目录 /opt/php/

[root@localhost php]# yum clean all && yum makecache   #清空缓存并再创为仓库
已加载插件:fastestmirror, langpacks
正在清理软件源: local nginx
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
local                                                              | 2.9 kB  00:00:00     
nginx                                                              | 2.9 kB  00:00:00     
(1/6): local/filelists_db                                          | 9.9 kB  00:00:00     
(2/6): local/other_db                                              | 5.0 kB  00:00:00     
(3/6): local/primary_db                                            |  19 kB  00:00:00     
(4/6): nginx/7/x86_64/primary_db                                   |  97 kB  00:00:00     
(5/6): nginx/7/x86_64/other_db                                     |  59 kB  00:00:00     
(6/6): nginx/7/x86_64/filelists_db                                 | 121 kB  00:00:01     
元数据缓存已建立
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install -y epel-release

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

 2)  修改nginx配置

cd /etc/nginx/conf.d
vim default.conf
server_name  /usr/share/nginx/html;   #3行
root   /usr/share/nginx/html;  #8行
index   index.php index.html index.htm;  #9行
打开29-35行的配置
root           /usr/share/nginx/html;   #30行
fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;   #33行
nginx -t
systemctl start nginx

3)修改php设置

vim /etc/php-fpm.d/www.conf
user = nginx    #运行用户都修改为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行  记得去掉注释!

4)创建目录和测试文件

[root@localhost conf.d]# cd /usr/share/nginx/html/
[root@localhost html]# ls
50x.html  index.html
[root@localhost html]# vim index.php<?php
phpinfo();
?>

#启动服务

systemctl enable --now nginx php-fpm

  5)测试访问 

末行添加

 浏览器访问

(2) 部署数据库

要求 MySQL 5.7 或 Mariadb 10.5 及以上版本
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
EOFyum install -y mariadb-server mariadb
systemctl enable --now mariadb

#初始化数据库

mysql_secure_installation
分别输入 回车 -> n -> Y (设置root密码,如abc123) -> 后面一路 Y

登录数据库

创建数据库并指定字符集,创建 zabbix 数据库用户并授权

mysql -u root -pabc123
回车-n-y-密码-yyyy
#创建数据库并指定字符集
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;


[root@localhost html]# cd /opt/
[root@localhost opt]# ls
php  rh  zabbix-6.0.31.tar.gz
[root@localhost opt]# tar xf zabbix-6.0.31.tar.gz 
[root@localhost opt]# ls
php  rh  zabbix-6.0.31  zabbix-6.0.31.tar.gz
[root@localhost opt]# cd zabbix-6.0.31/
[root@localhost zabbix-6.0.31]# ls
aclocal.m4  build      conf          configure     database  INSTALL     Makefile.am  misc     README  ui
AUTHORS     ChangeLog  config.guess  configure.ac  depcomp   install-sh  Makefile.in  missing  sass
bin         compile    config.sub    COPYING       include   m4          man          NEWS     src
[root@localhost zabbix-6.0.31]# cd database/
[root@localhost database]# ls
elasticsearch  Makefile.am  Makefile.in  mysql  oracle  postgresql  sqlite3
[root@localhost database]# cd mysql
[root@localhost mysql]# ls
data.sql  double.sql  history_pk_prepare.sql  images.sql  Makefile.am  Makefile.in  schema.sql
[root@localhost mysql]# mysql -uroot -pabc123 zabbix < schema.sql
[root@localhost mysql]# mysql -uroot -pabc123 zabbix < images.sql
[root@localhost mysql]# mysql -uroot -pabc123 zabbix < data.sql
[root@localhost mysql]# mysql -uroot -pabc123 zabbix < double.sql
[root@localhost mysql]# mysql -uroot -pabc123 zabbix < history_pk_prepare.sqlshow tables from zabbix;

(3)编译安装 zabbix Server 服务端

1.安装依赖包,创建 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
2.编译安装
cd /opt/zabbix-6.0.31/
./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 #编译
3.检查版本 
zabbix_server --version

4、修改 zabbix server 配置文件,修改数据库的密码
vim /etc/zabbix/zabbix_server.conf 
LogFile=/var/log/zabbix_server.log		# 38行,指定 zabbix 日志路径
DBPassword=zabbix	      # 123行,指定 zabbix 数据库的密码,去掉注释!
5.准备 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
touch /var/log/zabbix_server.log
chown zabbix.zabbix /var/log/zabbix_server.log
systemctl enable --now zabbix-server
netstat -lntp | grep 10051			#zabbix_server 默认监听 10051 端口

6.部署 Web 前端,进行访问
[root@localhost zabbix-6.0.31]# cp -r /opt/zabbix-6.0.31/ui/* /usr/share/nginx/html/
cp:是否覆盖"/usr/share/nginx/html/index.php"? yes
[root@localhost zabbix-6.0.31]# chown -R nginx /usr/share/nginx/html/

浏览器访问:http://zbx.lll.com/ 

【Default language】选择 Chinese(zh_CN),点击下一步
【密码】输入 zabbix,点击下一步
【Zabbix主机名称】输入 Zabbix-监控;【默认时区】选择 Asia/Shanghai,点击下一步

安装完成后,默认的登录账号和密码为:Admin/zabbix
 

7.安装 zabbix 客户端,实现 zabbix 服务端自我监控
rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpmsed -i 's#https://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo

#zabbix 5.0 版本开始采用 golang 语言开发的新版本客户端 agent2

yum install -y zabbix-agent2systemctl enable --now zabbix-agent2netstat -lntp | grep 10050			#客户端 zabbix_agent2 默认监听 10050 端口
8.解决 zabbix-server Web页面中文乱码问题
yum install -y wqy-microhei-fonts\cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/nginx/html/assets/fonts/DejaVuSans.ttf 

添加 zabbix 客户端主机

(1)初始化

192.168.10.19

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# timedatectl Local time: 六 2024-07-06 16:18:15 CSTUniversal time: 六 2024-07-06 08:18:15 UTCRTC time: 六 2024-07-06 08:18:19Time zone: Asia/Shanghai (CST, +0800)NTP enabled: yes
NTP synchronized: yesRTC in local TZ: noDST active: n/a
[root@localhost ~]# systemctl status chronyd
[root@localhost ~]# vim /etc/selinux/config

192.168.10.18 

[root@localhost ~]# hostnamectl set-hostname zbx-server
[root@localhost ~]# bash
[root@zbx-server ~]# vim /etc/hosts
#添加以下内容
192.168.10.18 zbx-server
192.168.10.19 zbx-agent01

192.168.10.19

[root@localhost ~]# hostnamectl set-hostname zbx-agent01
[root@localhost ~]# bash
bash
[root@zbx-agent01 ~]# vim /etc/hosts
#添加以下内容
192.168.10.18 zbx-server
192.168.10.19 zbx-agent01

(2)安装 zabbix-agent2

[root@zbx-agent01 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@zbx-agent01 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
[root@zbx-agent01 ~]# yum install zabbix-agent2 zabbix-agent2-plugin-*  #一路y
[root@zbx-agent01 ~]# systemctl start zabbix-agent2.service
[root@zbx-agent01 ~]# netstat -lntp | grep zabbix
tcp6       0      0 :::10050                :::*                    LISTEN      5130/zabbix_agent2

(3)修改 agent2 配置文件

root@zbx-agent01 ~]# cd /etc/zabbix
[root@zbx-agent01 zabbix]# vim zabbix_agent2.conf
Server=192.168.10.18    #80行指定服务端地址
ServerActive=192.168.10.18   #133行,指定服务端地址
Hostname=zbx-agent01    #144行,指定本机主机名[root@zbx-agent01 zabbix]# systemctl restart zabbix-agent2.service
[root@zbx-agent01 ~]# netstat -lntp | grep zabbix
tcp6       0      0 :::10050                :::*                    LISTEN 

(4)服务端安装 zabbix-get验证客户端数据的连通性

192.168.10.18

yum install -y zabbix-get
zabbix_get -s '192.168.10.19' -p 10050 -k 'agent.ping'
1
zabbix_get -s '192.168.10.19' -p 10050 -k 'agent.hostname'
zbx-agent01
zabbix_get -s '192.168.10.19' -p 10050 -k 'system.hostname'
zbx-agent01

常用键值
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表示可以连接

(5) Web 页面中添加 agent 主机

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

(6)监控模板

如何更换监控模板

zabbix自带的监控模板

若系统无所需的监控模板可在以下连接中下载模板导入使用

#监控模板下载地址
https://share.zabbix.com/
https://monitoringartist.github.io/zabbix-searcher/
https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates

自定义监控内容

案例:自定义监控客户端服务器登录的人数
需求:限制登录人数不超过 3 个,超过 3 个就发出报警信息

192.168.10.19

(1)客户端创建自定义key

1)明确需要执行的 linux 命令
[root@zbx-agent01 zabbix]# who | wc -l
3   
#计算当前登录系统的用户数量

2) 创建 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 -lsystemctl restart zabbix-agent2

192.168.10.18验证

zabbix_get -s '192.168.10.19' -p 10050 -k 'login.user'

(2)在 Web 页面创建自定义监控项模板

1)创建模板

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

2)创建监控项

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

 3)创建触发器        

当监控项获取到监控的值后和触发器预设的值进行对比,判断是否报警

点击上方菜单栏【触发器】,点击【创建触发器】
【名称】设置成 number of login users is more than 3
【严重性】设置成 告警        #根据严重程度可自定义设置
【表达式】点击添加,【监控项】点击选择 Number of login users,【功能】选择 last(),【结果】选择 > 3,点击 【插入】
点击 【添加】

 

4)创建图形

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

 

5)将主机与模板关联起来

一个主机可以关联多个模板

点击左边菜单栏【配置】中的【主机】,点击你要关联的主机
【模板】搜索 login,选择 Template Login User,点击【更新】

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

再次查看,已设置完成 

6)测试

点击左边菜单栏【监测】中的【主机】,点击目标主机,点击图形
【条件检索】搜索 Login,即进入检测画面

再打开两个客户端20.0.0.20进行测试

当关闭指定数量服务器使得在触发器范围内后,告警自动消失

9、设置邮件报警

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

 

(1)关联发送报警和触发器

点击左边菜单栏【配置】中的【报警媒介类型】,点击【动作】,点击【触发器动作】
点击右上角【创建动作】或使用已经存在的触发器动作;

点击【条件】下的添加,类型选择触发器,并对触发器进行选择;

(2)用户资料添加媒介

点击左边菜单栏【用户设置】-->【配置】,点击【添加】
【类型】选择 qq_email
【收件人】设置成xxxxxxxxxx@qq.com
【当启用时】设置成 1-7,00:00-24:00
【如果存在严重性则使用】勾选需要的严重性
点击 【添加】
再点击 【更新】

再打开三个客户端

成功发送报警邮件

常见问题总结

Zabbix两种模式及区别:

主动模式:

zabbix agent 主动向 zabbix server 请求监控项列表,并返回监控项所需要采集的监控指标数据给 zabbix server
被动模式:

zabbix agent 被动接收 zabbix server 请求的监控指令,zabbix agent 再返回监控项所需要的监控指标数据给 zabbix server

Zabbix工作原理:
zabbix agent 等代理端会定期采集被监控主机的指标数据并发送给 zabbix server,zabbix server 接收数据后会存储带 zabbix database 中,管理员可基于 zabbix web 在浏览器页面查看监控数据的图像。

如何自定义监控模板?
1.先明确获取监控指标数据的命令或脚本
2.在被监控主机的配置文件目录中(/etc/zabbix/zabbix_agent2.d/)创建以 .conf 为结尾的监控项配置文件,在配置文件文件里自定义监控项的键值,再重载zabbix-agent2服务
键值配置格式:UserParameter=<键名>,<获取值的命令/脚本路径>
3.在zabbix服务端Web管理页面中依次添加 模板 - 监控项 - 触发器 - 图形
将监控模板和被监控主机相关联

配置邮件报警通知:
1.在zabbix服务端Web管理页面【管理】-【媒介】中创建 报警媒介类型 和 消息模板
2.在【用户设置】-【配置】-【报警媒介】中设置 邮件接收人 启用时间 严重级别
3.在【配置】-【动作】-【触发器动作】创建 动作,设置 动作条件 操作细节
4.测试验证

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

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

相关文章

ARM汇编与机器码、汇编指令

文章目录 1. CISC与RISC指令集 2. ARM汇编指令 3. 汇编与机器码 4. 汇编指令格式 5. MOV指令 6. BL指令 7. B指令 8. ADD/SUB指令 9. LDR/STR指令 1. CISC与RISC指令集 根据指令的复杂度&#xff0c;所有CPU可以分为两类&#xff1a; CISC&#xff08;Complex Instr…

C#——多态详情

多态 多态: 是同一个行为&#xff0c;具有多个不同表现形式或形态的能力 多态分为两种 : 静态性多态: 函数重载&#xff0c;符号重载动态性多态: 虚方法&#xff0c;抽象类&#xff0c;接口 静态多态 在编译时&#xff0c;函数和对象的连接机制被称为早期绑定&#xff0c;…

知识图谱的符号表示

1、基于图的表示建模 2、有效标记图 3、属性图表示方法的优点和去点 4、RDF是什么&#xff1f;表达是有限的 5、OWL&#xff0c;本体语言 6、OWL有很多家族 7、属性图、RDF\三元组、关系图 ---------------------------PPT---------------------

已解决 javax.xml.transform.TransformerFactoryConfigurationError 异常的正确解决方法,亲测有效!!!

已解决 javax.xml.transform.TransformerFactoryConfigurationError 异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 一、问题分析 二、报错原因 三、解决思路 四、解决方法 五、总结 博主v&#xff1a;XiaoMing_Java 博主v&#x…

【微服务网关——服务发现】

1.服务发现 1.1 介绍 服务发现是指用注册中心来记录服务信息&#xff0c;以便其他服务快速查找已注册服务服务发现分类: 客户端服务发现服务端服务发现 1.2 客户端服务发现 客户端服务发现&#xff08;Client-side Service Discovery&#xff09;是一种微服务架构中的模式…

Vine: 一种全新定义 Vue 函数式组件的解决方案

7月6日的 vue confg 大会上 ShenQingchuan 大佬介绍了他的 Vue Vine 项目&#xff0c; 一种全新定义 Vue 函数式组件的解决方案。 和 React 的函数式组件有异曲同工之妙&#xff0c;写起来直接起飞了。 让我们来快速体验一下 vine&#xff0c; 看看到底给我们带来了哪些惊喜吧…

[Python]配置邮件服务,发送邮件

本文以163邮件系统为例&#xff0c;登录之后&#xff0c;点击设置&#xff0c;开启如下设置项。 即可使用代码发送邮件&#xff0c;并携带附件。 开启SMTP 普通邮件 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart# 1…

[算法] 优先算法(四):滑动窗口(下)

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

20240708 每日AI必读资讯

&#x1f916;破解ChatGPT惊人耗电&#xff01;DeepMind新算法训练提效13倍&#xff0c;能耗暴降10倍 - 谷歌DeepMind研究团队提出了一种加快AI训练的新方法——多模态对比学习与联合示例选择&#xff08;JEST&#xff09;&#xff0c;大大减少了所需的计算资源和时间。 - JE…

Java线程的创建·启动和休眠

一.线程的创建和启动 Java中创建线程的两种方式 ◆继承java.lang.Thread类 ◆实现java.lang.Runnable接口 ◆使用线程的步骤 继承Thread类创建线程 ◆自定义线程类继承自Thread类 ◆重写run()方法&#xff0c;编写线程执行体 ◆创建线程对象&#xff0c;调用start()方法启动…

目标检测YOLO实战应用案例100讲-基于深度学习的无人机影像小目标识别(续)

目录 3.2 实验平台和环境 3.3 实验评价指标 3.4 基础框架YOLOv5在无人机数据集上的实验 3.4.1 实验结果 3.4.2 结果分析 4基于深度学习的无人机影像目标检测算法 4.1 基于改进YOLOv5的小目标检测算法研究 4.1.1 增加注意力机制 4.1.2 增加检测层 4.1.3多尺…

2024年 春秋杯 网络安全联赛夏季赛 Web方向 题解WirteUp 部分

brother 题目描述&#xff1a;web哥&#xff0c;打点容易提权难。 打点就是最简单的SSTI。 执行下find / -user root -perm -4000 -print 2>/dev/null找一下具备suid权限的命令 /usr/lib/dbus-1.0/dbus-daemon-launch-helper /usr/bin/chsh /usr/bin/gpasswd /usr/bin/n…

互联网十万个为什么之什么是数据备份?

数据备份是按照一定的备份频率创建数据副本的过程&#xff0c;将重要的数据复制到其它位置或者存储介质&#xff0c;并对生成的副本保留一定的时长。备份通常储存在不同的物理介质或云端&#xff0c;以确保数据的连续性和完整性。有效的备份策略至关重要&#xff0c;以防止数据…

macos 10.15系统下载包,macOS Catalina for mac

macOS Catalina 让你喜欢的种种 Mac 体验都更进一步。你可以领略音乐、播客这两款全新 Mac app 的表演&#xff1b;在 Mac 上畅享各款自己心爱的 iPad app&#xff1b;拿起 iPad 和 Apple Pencil&#xff0c;拓展工作空间&#xff0c;释放创意灵感&#xff1b;再打开那些平时常…

【STL】vector的模拟实现

目录 vector的介绍和使用 vector的介绍 vector的使用 构造函数 迭代器 空间增长问题 vector的增删查改等 vector的迭代器失效问题 vector的模拟实现 insert reserve push_back push_front resize erase pop_back pop_front 代码 vector的介绍和使用 vecto…

【PB案例学习笔记】-29制作一个调用帮助文档的小功能

写在前面 这是PB案例学习笔记系列文章的第29篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

个人视角,社会影响力:自媒体的魅力所在

随着数字化时代的到来&#xff0c;自媒体正成为信息传播领域的一场革命。个人视角与社会影响力的结合&#xff0c;赋予了自媒体独特的魅力。在传统媒体受限制的同时&#xff0c;自媒体为每个人提供了表达自己观点和思想的自由。个体的真实视角使得自媒体在信息传播中发挥着重要…

14-40 剑和诗人14 - 为什么机器学习需要合成数据

​​​​​​ 数据是人工智能的命脉。如果没有高质量、有代表性的训练数据&#xff0c;我们的机器学习模型将毫无用处。但随着神经网络规模越来越大、人工智能项目越来越雄心勃勃&#xff0c;人们对数据的需求也越来越大&#xff0c;我们面临着一场危机——现实世界的数据收集和…

如何优化 PostgreSQL 中对于复杂数学计算的查询?

文章目录 一、理解复杂数学计算的特点二、优化原则&#xff08;一&#xff09;索引优化&#xff08;二&#xff09;查询重写&#xff08;三&#xff09;数据库配置调整&#xff08;四&#xff09;使用数据库内置函数的优势 三、具体的优化方案和示例&#xff08;一&#xff09;…

华为开源自研AI框架昇思MindSpore应用案例:FCN图像语义分割

Mask R-CNN MaskRCNN是一种概念简单、灵活、通用的目标实例分割框架&#xff0c;在检测出图像中目标的同时&#xff0c;还为每一个实例生成高质量掩码。这种称为Mask R-CNN的方法&#xff0c;通过添加与现有边框检测分支平行的预测目标掩码分支&#xff0c;达到扩展Faster R-CN…