写点什么

Zabbix 监控系统保姆及教程

作者:CTO技术共享
  • 2022 年 8 月 25 日
    广东
  • 本文字数:6573 字

    阅读完需:约 22 分钟

Zabbix 监控系统保姆及教程

一、监控概述

1.1 为什么要监控

在需要的时刻,提前提醒我们服务器出问题了

当出问题之后,可以找到问题的根源

网站/服务器 的可用性

1.1.1 网站可用性

在软件系统的高可靠性(也称为可用性,英文描述为 HA,High Available)里有个衡量其可靠性的标准——X 个 9,这个 X 是代表数字 3~5。X 个 9 表示在软件系统 1 年时间的使用过程中,系统可以正常使用时间与总时间(1 年)之比,我们通过下面的计算来感受下 X 个 9 在不同级别的可靠性差异。

1 个 9:(1-90%)365=36.5 天,表示该软件系统在连续运行 1 年时间里最多可能的业务中断时间是 36.5 天 2 个 9:(1-99%)365=3.65 天 ,表示该软件系统在连续运行 1 年时间里最多可能的业务中断时间是 3.65 天 3 个 9:(1-99.9%)36524=8.76 小时,表示该软件系统在连续运行 1 年时间里最多可能的业务中断时间是 8.76 小时。4 个 9:(1-99.99%)36524=0.876 小时=52.6 分钟,表示该软件系统在连续运行 1 年时间里最多可能的业务中断时间是 52.6 分钟。5 个 9:(1-99.999%)3652460=5.26 分钟,表示该软件系统在连续运行 1 年时间里最多可能的业务中断时间是 5.26 分钟。6 个 9:(1-99.9999%)3652460*60=31 秒, 示该软件系统在连续运行 1 年时间里最多可能的业务中断时间是 31 秒

1.2 监控什么东西

监控一切需要监控的东西,只要能够想到,能够用命令实现的都能用来监控

1.2.1 监控范畴



1.3.1 远程管理服务器

如果想远程管理服务器就有远程管理卡,比如 Dell idRAC,HP ILO,IBM IMM

1.3.2 监控硬件

二、安装 Zabbix

2.1 环境检查



2.2.1 安装方式选择

  • 编译安装 (服务较多,环境复杂)

  • yum 安装(干净环境)

  • 使用 yum 需要镜像 yum 源 http://www.cnblogs.com/clsn/p/7866643.html

2.2.2 服务端快速安装脚本




2.2.3 客户端快速部署脚本



2.3 检测连通性

2.3.1 服务端安装 zabbix-get 检测工具

yum install zabbix-get
复制代码



三、Web 界面操作

3.1 zabbix 的 web 安装

3.1.1 使用浏览器访问

http://10.0.0.61/zabbix/setup.php


在检测信息时,可查看具体的报错信息进行不同的解决



选择 mysql 数据库,输入密码即可



host 与 port 不需要修改,name 自定义



确认信息,正确点击下一步



安装完成、点击 finsh



进入登陆界面  账号 Admin 密码 zabbix 注意 A 大写



3.2 添加监控信息

3.2.1 修改监控管理机 zabbix server

配置 >> 主机



主机名称:要与主机名相同,这是 zabbix server 程序用的

可见名称:显示在 zabbix 网页上的,给我们看的



修改后,要将下面的已启用要勾上



添加完成就有了管理机的监控主机



3.2.2 添加新的主机

配置 >> 主机 >> 创建主机



注意勾选以启用



然后添加模板,选择 linux OS ,先点小添加,再点大添加。



添加完成,将会又两条监控主机信息



3.2.3 查看监控内容

检测中  >> 最新数据

在最新数据中需要筛选,



输入 ip 或者名字都能够搜索出来



在下面就会列出所有的监控项


3.2.4 查看图像



检测中 >> 图形选择正确的主机。选择要查看的图形即可出图



四、自定义监控与监控报警

4.1 自定义监控

4.1.1 说明

zabbix 自带模板 Template OS Linux (Template App Zabbix Agent)提供 CPU、内存、磁盘、网卡等常规监控,只要新加主机关联此模板,就可自动添加这些监控项。需求:服务器登陆人数不能超过三人,超过三人报警

4.1.2 预备知识



4.2 实现自定义监控

4.2.1 自定义语法



4.2.2 agent 注册



4.2.3 在 server 端注册(web 操作)

①   创建模板配置 >> 模板 >> 创建模板



点击添加,即可创建出来模板



查看创建出来的模板。

②   创建应用集应用集类似(目录/文件夹),其作用是给监控项分类。点击 应用集 >> 创建应用集



自定义应用集的名称,然后点击添加③   创建监控项监控项 >> 创建监控项



键值 — key,即前面出创建的 login-user。



注意:创建监控项的时候,注意选择上应用集,即之前创建的安全。



④创建触发器触发器的作用:当监控项获取到的值达到一定条件时就触发报警(根据需求创建)触发器 >> 创建触发器创建触发器,自定义名称,该名称是报警时显示的名称。表达式,点击右边的添加,选择表达式。严重性自定义。



表达式的定义 ↓ ,选择之前创建的监控项,

最新的 T 值为当前获取到的值。



添加完成,能够在触发器中看到添加的情况



⑤创建图形以图形的方式展示出来监控信息图形 >> 创建图形名称自定义,关联上监控项。



⑥主机关联模板配置 >> 主机一个主机可以关联多个模板



4.2.4 查看监控的图形



4.3 监控报警

4.3.1 第三方报警平台

http://www.onealert.com通过 OneAlert 提供的通知分派与排班策略,以及全方位的短信、微信、QQ、电话提醒服务,您可以在最合适的时间,将最重要的信息推送给最合适的人员。

4.3.2 onealert 配置

添加应用,注意添加的是 zabbix



实现微信报警需要关注微信公众号即可。



4.3.3 安装 onealert Agent



4.3.1 如何删除 onealert Agent

①删除报警媒介类型中的脚本



②删除创建的用户


③删除用户群组


④删除创建的动作


4.3.2 触发器响应,发送报警信息



在微信和邮件中,均能收到报警信息。



注意:当状态改变的时候才会发邮件好→坏坏→好

4.4 监控可视化

4.4.1 聚合图形

最新数据 >> 图形


自定义名称



点击聚合图形的名称,进行更改,添加要显示的图形即可。



4.4.2 幻灯片

添加幻灯片监测中 >> 复合图形 >> 幻灯片演示



创建幻灯片,名称自定,选择要显示的

幻灯片根据设定的时间自动播放

4.5 模板的共享

4.5.1 主机共享

在主机页打开,全选后点击导出


导入



4.5.2 模板共享

https://github.com/zhangyao8/zabbix-community-repos



五、监控全网服务器

5.1 需求说明实际需求:公司已经有了 100 台服务器,现在需要使用 zabbix 全部监控起来。

5.2 规划方案

常规监控:cpu,内存,磁盘,网卡  问题:怎样快速添加 100 台机器

  • 方法 1:使用克隆的方式

  • 方法 2:自动注册和自动发现

  • 方法 3:调用 zabbix api 接口  curl 、python

开发自己的运维平台兼容 zabbix 的通道服务监控,url 监控等特殊监控:自定义监控

5.2.1 api 接口使用(curl)



5.3 具体实施规划

5.3.1 硬件、系统、网络监控

所有集群节点(所有虚拟机)都监控上交换机,路由器监控(简单方法:换成端口对应服务器网卡流量监控;标准方法:监控交换机的网卡)snmp 监控

5.3.2 应用服务监控

  1. 监控备份服务器,简单方法是监控 rsync 端口,如果有其他更佳方案可以说明;方法 1:监控 873 端口 net.tcp.port[,873]方法 2:模拟推送拉取文件

  2. 监控 NFS 服务器,使用监控 NFS 进程来判断 NFS 服务器正常,如果有其他更佳方案可以说明;方法 1:端口(通过 111 的 rpc 端口获取 nfs 端口) net.tcp.port[,111]方法 2:showmount -e ip|wc -l

  3. 监控 MySQL 服务器,简单方法监控 mysql 的 3306 端口,或者使用 zabbix 提供的 Mysql 模板,如果有其他更佳方案可以说明;方法 1:端口(通过 3306 的 mysql 端口) net.tcp.port[,3306]方法 2:mysql 远程登录方法 3:使用 zabbix agent 自带的模板及 key

  4. 监控 2 台 web 服务器,简单方法监控 80 端口,如果有其他更佳方案可以说明;方法 1:端口(通过 80 的 web 端口) net.tcp.port[,80]方法 2:看网页状态码、返回内容==zabbix 自带 WEB 检测

  5. 监控 URL 地址来更精确的监控我们的网站运行正常;使用 zabbix 自带的监控 Web 监测 进行监控

  6. 监控反向代理服务器,PPTP 服务器等你在期中架构部署的服务。nginx,pptpntp 端口 udp 123

  7. 监控 Nginx 的 7 种连接状态。自定义监控

5.3.3 监控服务通用方法

  1. 监控端口 netstat ss lsof  ==》 wc -l

  2. 监控进程 ps -ef|grep 进程|wc -l  试运行一下

  3. 模拟客户端的使用方式监控服务端 web  ==》 curlmysql ==》 select insertmemcache ==》 set 再 get

5.4 实施全网监控

安装客户端脚本,for centos6



5.4.1 使用自动发现规则

添加自动发现规则



创建发现动作



查看自动发现的机器。



5.4.2 监控备份服务器

利用系统自带键值进行监控 net.tcp.listen[port] 创建新的模板



在服务端进行测试



将模板添加到主机



5.4.3 监控 NFS 服务器

创建 nfs 监控模板使用 proc.num[,,,]  键值,检测 nfs 进程的数量



在服务端进行测试

将模板绑定到主机

5.4.4 监控 MySQL 服务器

将自带的 mysqlkey 值加上 mysql 的账户密码,否则不能获取到数据。



使用系统自带模板  net.tcp.port[,port] 利用自带的监控端口键值进行监控



添加新的 mysql 监控项端口



[root@m01 ~]# zabbix_get -s 172.16.1.51 -p 10050-k "net.tcp.port[,3306]"1#检查是否能建立 TCP 连接到指定端口。返回 0 - 不能连接;1 - 可以连接
复制代码

将模板关联到主机

5.4.5 监控 web 服务器



创建监控模板 监控 nginx 服务与 80 端口

proc.num[<name>,<user>,<state>,<cmdline>]进程数。返回整数  net.tcp.port[<ip>,port]检查是否能建立 TCP 连接到指定端口。返回 0 - 不能连接;1 - 可以连接
复制代码






[root@m01 ~]# zabbix_get -s 172.16.1.8 -p 10050 -k“proc.num[,,,nginx]”2[root@m01 ~]zabbix_get -s 172.16.1.8 -p 10050 -k “net.tcp.port[,80]”1
复制代码

将模板关联到主机

5.4.6 监控 URL 地址

创建监测页面


echo ok >> /application/nginx/html/www/check.html
复制代码


测试监控面页
复制代码


[root@web03 ~]# for ip in 7 8 9 ;do curl 10.0.0.$ip/check.html ;doneokokok
复制代码

创建 web 监测模板

创建应用集


创建 Web 场景


创建图形


将模板关联到主机


监测结果


5.4.7 监控反向代理服务器

创建自定义 key

[root@lb01 ~]# cat /etc/zabbix/zabbix_agentd.d/userparameter_nk.confUserParameter=keep-ip,ip a |grep 10.0.0.3|wc -l
复制代码

在服务端测试

[root@m01 ~]# zabbix_get -s 172.16.1.5  -p 10050 -k "keep-ip"1[root@m01 ~]# zabbix_get -s 172.16.1.6  -p 10050 -k "keep-ip"0
复制代码

在 web 界面添加模板


将模板关联到主机

5.4.8 监控 Nginx 的 7 种连接状态

nginx 服务器显示 status

……  location /status {         stub_status on;         access_log off;  }……
复制代码


[root@web01 ~]# for ip in 7 8 9 ;do curl 172.16.1.$ip/status ;doneActive connections: 1server accepts handled requests 73 73 69Reading: 0 Writing: 1 Waiting: 0Active connections: 1server accepts handled requests 134 134 127Reading: 0 Writing: 1 Waiting: 0Active connections: 1server accepts handled requests 7 7 7Reading: 0 Writing: 1 Waiting: 0
复制代码

在 nginx 服务器上添加 key

cat >/etc/zabbix/zabbix_agentd.d/userparameter_nginx_status.conf <<'EOF'UserParameter=nginx_active,curl -s  127.0.0.1/status|awk'/Active/ {print $NF}'UserParameter=nginx_accepts,curl -s  127.0.0.1/status|awk'NR==3 {print $1}'UserParameter=nginx_handled,curl -s  127.0.0.1/status|awk'NR==3 {print $2}'UserParameter=nginx_requests,curl -s  127.0.0.1/status|awk'NR==3 {print $3}'UserParameter=nginx_reading,curl -s  127.0.0.1/status|awk'NR==4 {print $2}'UserParameter=nginx_writing,curl -s  127.0.0.1/status|awk'NR==4 {print $4}'UserParameter=nginx_waiting,curl -s  127.0.0.1/status|awk'NR==4 {print $6}'EOF
复制代码

服务端测试

[root@m01 ~]# zabbix_get -s 172.16.1.7  -p 10050 -k "nginx_waiting"0[root@m01 ~]# zabbix_get -s 172.16.1.8  -p 10050 -k "nginx_waiting"0[root@m01 ~]# zabbix_get -s 172.16.1.9  -p 10050 -k "nginx_waiting"0
复制代码

在 zabbix-web 上添加



监控项


添加图形


将模板关联到主机


查看添加的图形


六、自动发现与自动注册

6.1 自动注册与自动注册

6.1.1 简介

自动发现:

zabbix Server主动发现所有客户端,然后将客户端登记自己的小本本上,缺点zabbix server压力山大(网段大,客户端多),时间消耗多。
复制代码

自动注册:

zabbix agent主动到zabbix Server上报到,登记;缺点agent有可能找不到Server(配置出错)
复制代码

6.1.2 两种模式

  • 被动模式:默认  agent 被 server 抓取数据 (都是在 agent 的立场上说)

  • 主动模式:agent 主动将数据发到 server 端 (都是在 agent 的立场上说)

注意:两种模式都是在 agent 上进行配置 zabbix 的使用要在 hosts 文件中预先做好主机名的解析

6.2 自动发现—被动模式

  • 第一个里程碑:完成之前的安装 zabbix Server 安装完毕

  • 第二个里程碑:配置 agent 客户端 zabbix agent 安装完毕,注意配置 Server=172.16.1.61

  • 第三个里程碑:在 web 界面上进行配置


    web 界面:配置 >> 自动发现 >> Local network

使用自带的自动发现规则(进行修改)即可

在 ip 范围内输入 ip,注意格式;延迟在实际的生产环境中要大一些,实验环境可以小一些

创建发现动作配置 >> 动作 >> Auto discovery. Linux servers.

①  配置动作


②  在条件中添加条件,让添加更准确


③  在操作中添加 a)  添加主机与启用主机


七、分布式监控与 SNMP 监控

7.1 分布式监控

7.1.1 作用

分担压力,减轻负载多机房监控 zabbix Server  ===》  zabbix agent (只能同一个局域网监控)分担压力,降低负载

zabbix Server ===》  zabbix proxy===》zabbix agent1 agent2 agent3 。。。172.16.1.61           172.16.1.21        172.16.1.0/24===》  zabbix proxy===》zabbix agent4 agent5 agent6 。。。
复制代码

多机房监控

zabbix Server(北京)==》 zabbix proxy(每个机房搭建)==》 zabbix agent    122.71.240.233/172.16.1.61122.71.241.11/172.16.2.21     172.16.2.0/24
复制代码


7.1.2 环境说明

zabbix server m01  zabbix proxy cache01  zabbix agent  cache01
复制代码

7.1.2 配置 zabbix proxy

第一个里程碑:配置 zabbix yum 源,并安装 proxy

rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpmyum install zabbix-proxy-mysql -y
复制代码

第二个里程碑:安装数据库 zabbix  proxy 也需要数据库,这个数据库不是用于存储监控数据的 只是用于存储配置信息

安装数据库

yum -y install mariadb-serversystemctl start mariadb.service
复制代码

建立数据库

create database zabbix_proxy character set utf8 collate utf8_bin;grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by'zabbix';exit
复制代码

导入数据文件

zcat /usr/share/doc/zabbix-proxy-mysql-3.0.13/schema.sql.gz |mysql -uzabbix -pzabbix zabbix_proxy
复制代码

配置 zabbix proxy 连接数据库

sed -i.ori'162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.confsed -i's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_proxy.confsed -i's#Hostname=Zabbix proxy#Hostname=cache01#' /etc/zabbix/zabbix_proxy.conf# Hostname
复制代码

作为后面添加的代理程序名称,要保持一致

启动

systemctl restart zabbix-proxy.service
复制代码

检查端口

[root@cache01 ~]# netstat -lntup |grep zabbixtcp        0      0 0.0.0.0:10050     0.0.0.0:*       LISTEN      105762/zabbix_agenttcp        0      0 0.0.0.0:10051   0.0.0.0:*         LISTEN      85273/zabbix_proxytcp6       0      0 :::10050       :::*      LISTEN      105762/zabbix_agenttcp6       0      0 :::10051  :::*           LISTEN      85273/zabbix_proxy
复制代码

第三个里程碑:修改 agent 配置指向 proxy

[root@cache01 ~]# grep ^Server /etc/zabbix/zabbix_agentd.confServer=172.16.1.61ServerActive=172.16.1.61[root@cache01 ~]# sed -i 's#172.16.1.61#172.16.1.21#g' /etc/zabbix/zabbix_agentd.conf[root@cache01 ~]# grep ^Server /etc/zabbix/zabbix_agentd.confServer=172.16.1.21ServerActive=172.16.1.21[root@cache01 ~]# systemctl restart zabbix-agent.service
复制代码

第四个里程碑:web 界面添加代理

管理 >> agent 代理程序 >> 创建代理

代理程序名称要填写主机名



稍等片刻就能在程序中出现代理



在主机中能发现主机代理



7.2 SNMP 监控

7.2.1 使用范围

无法安装 agent  很多前辈的监控软件都可以监控各种设备  都是通过 snmp 监控 snmp simple network manager protocol 简单网络管理协议简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema)和一组资源对象。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。

7.2.2 安装 snmp 程序

yum -y install net-snmp net-snmp-utils
复制代码

7.2.3 配置 snmp 程序

sed -i.ori'57a view systemview   included  .1' /etc/snmp/snmpd.confsystemctl start snmpd.service
复制代码

7.2.4 测试 snmp

[root@m01 ~]# snmpwalk -v 2c -c public 127.0.0.1 sysnameSNMPv2-MIB::sysName.0 = STRING: m01
复制代码

说明:

  • snmpwalk 类似 zabbix_get

  • -v 2c  指定使用 snmp 协议的版本  snmp 分为 v1 v2 v3

  • -c public  指定暗号

  • sysname  类似 zabbix 的 key

7.2.5 在 web 界面进行配置

添加新的主机,注意使用 snmp 接口


选择模板,注意使用 SNMP 的模板


添加完成就能够在主机中看到 snmp 监控对的主机



发布于: 刚刚阅读数: 3
用户头像

学如逆水行舟,不进则退 2022.08.05 加入

大型企业CTO,专注大数据、架构框架、集群、中间件、分布式、数据库、监控、开源、基础架构等技术分享,助力数字化转型。

评论

发布
暂无评论
Zabbix 监控系统保姆及教程_CTO技术共享_InfoQ写作社区