一、监控系统的相关知识
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.测试验证