这篇保姆级 Zabbix 必备指南,助你成为监控老司机
来源:惨绿少年,东风微鸣
一、监控概述
1.1 网站可用性
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 基础架构
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 使用浏览器访问
3.2 添加监控信息
3.2.1 修改监控管理机 zabbix server
3.2.2 添加新的主机
3.2.3 查看监控内容
3.2.4 查看图像
选择正确的主机。选择要查看的图形即可出图
四、自定义监控与监控报警
4.1 自定义监控
4.1.1 说明
需求:服务器登陆人数不能超过三人,超过三人报警
4.1.2 预备知识
4.2 实现自定义监控
4.2.1 自定义语法
4.2.2 agent注册
4.2.3 在server端注册(web操作)
配置 >> 模板 >> 创建模板
点击 应用集 >> 创建应用集
③ 创建监控项
监控项 >> 创建监控项
触发器的作用:当监控项获取到的值达到一定条件时就触发报警
(根据需求创建)
触发器 >> 创建触发器
创建触发器,自定义名称,该名称是报警时显示的名称。
表达式,点击右边的添加,选择表达式。
严重性自定义。
最新的T值为当前获取到的值。
以图形的方式展示出来监控信息
图形 >> 创建图形
名称自定义,关联上监控项。
配置 >> 主机
一个主机可以关联多个模板
4.2.4 查看监控的图形
4.3 监控报警
4.3.1 第三方报警平台
通过 OneAlert 提供的通知分派与排班策略,以及全方位的短信、微信、QQ、电话提醒服务,您可以在最合适的时间,将最重要的信息推送给最合适的人员。
4.3.2 onealert配置
4.3.3 安装 onealert Agent
4.3.1 如何删除onealert Agent
4.3.2 触发器响应,发送报警信息
注意:当状态改变的时候才会发邮件
好→坏
坏→好
4.4 监控可视化
4.4.1 grafana-zabbix
grafana-cli plugins install alexanderzobnin-zabbix-app
在 Grafana 上导入 Zabbix 仪表板并查看监控效果
4.4.2 幻灯片
监测中 >> 复合图形 >> 幻灯片演示
4.5 模板的共享
4.5.1 主机共享
4.5.2 模板共享
https://github.com/zhangyao8/zabbix-community-repos
五、监控全网服务器
实际需求:
公司已经有了100台服务器,现在需要使用zabbix全部监控起来。
5.2 规划方案
方法1:使用克隆的方式 方法2:自动注册和自动发现 方法3:调用zabbix api接口 curl 、python
服务监控,url监控等特殊监控:自定义监控
5.2.1 api接口使用(curl)
5.3 具体实施规划
5.3.1 硬件、系统、网络监控
交换机,路由器监控(简单方法:换成端口对应服务器网卡流量监控;标准方法:监控交换机的网卡)
snmp监控
5.3.2 应用服务监控
监控备份服务器,简单方法是监控rsync端口,如果有其他更佳方案可以说明;
方法1:监控873端口net.tcp.port[,873]
方法2:模拟推送拉取文件监控NFS服务器,使用监控NFS进程来判断NFS服务器正常,如果有其他更佳方案可以说明;
方法1:端口(通过111的rpc端口获取nfs端口) net.tcp.port[,111]
方法2:showmount -e ip|wc -l监控MySQL服务器,简单方法监控mysql的3306端口,或者使用zabbix提供的Mysql模板,如果有其他更佳方案可以说明;
方法1:端口(通过3306的mysql端口) net.tcp.port[,3306]
方法2:mysql远程登录
方法3:使用zabbix agent自带的模板及key监控2台web服务器,简单方法监控80端口,如果有其他更佳方案可以说明;
方法1:端口(通过80的web端口) net.tcp.port[,80]
方法2:看网页状态码、返回内容==zabbix 自带WEB检测监控URL地址来更精确的监控我们的网站运行正常;
使用zabbix自带的监控Web监测 进行监控监控反向代理服务器,PPTP服务器等你在期中架构部署的服务。
nginx,pptp
ntp 端口udp 123监控Nginx的7种连接状态。
自定义监控
5.3.3 监控服务通用方法
监控端口 netstat ss lsof ==》 wc -l 监控进程 ps -ef|grep 进程|wc -l 试运行一下 模拟客户端的使用方式监控服务端
web ==》 curl
mysql ==》 select insert
memcache ==》 set再get
5.4 实施全网监控
5.4.1 使用自动发现规则
5.4.2 监控备份服务器
5.4.3 监控NFS服务器
使用 proc.num[
5.4.4 监控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服务器
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 ;doneok
ok
ok
5.4.7 监控反向代理服务器
[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
5.4.8 监控Nginx的7种连接状态
……
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: 0
Active connections: 1server accepts handled requests 134 134 127Reading: 0 Writing: 1 Waiting: 0
Active connections: 1server accepts handled requests 7 7 7Reading: 0 Writing: 1 Waiting: 0
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
六、自动发现与自动注册
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
延迟在实际的生产环境中要大一些,实验环境可以小一些
配置 >> 动作 >> 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.61
122.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
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
yum install zabbix-proxy-mysql -y
zabbix proxy也需要数据库,这个数据库不是用于存储监控数据的 只是用于存储配置信息
yum -y install mariadb-server
systemctl 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
sed -i.ori
'162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.conf
sed -i
's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_proxy.conf
sed -i
's#Hostname=Zabbix proxy#Hostname=cache01#' /etc/zabbix/zabbix_proxy.conf# Hostname
systemctl restart zabbix-proxy.service
[root@cache01 ~]# netstat -lntup |grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 105762/zabbix_agent
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 85273/zabbix_proxy
tcp6 0 0 :::10050 :::* LISTEN 105762/zabbix_agent
tcp6 0 0 :::10051 :::* LISTEN 85273/zabbix_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
7.2 SNMP监控
7.2.1 使用范围
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.conf
systemctl 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界面进行配置
END
官方站点:www.linuxprobe.com
Linux命令大全:www.linuxcool.com
刘遄老师QQ:5604215
Linux技术交流群:2636170
(新群,火热加群中……)
想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!
微信扫码关注该文公众号作者
戳这里提交新闻线索和高质量文章给我们。
来源: qq
点击查看作者最近其他文章