1.1 为何要监控
在须要的时刻,提早提醒咱们服务器出问题了php
当出问题以后,能够找到问题的根源html
网站/服务器 的可用性node
1.1.1 网站可用性
在软件系统的高可靠性(也称为可用性,英文描述为HA,High Available)里有个衡量其可靠性的标准——X个9,这个X是表明数字3~5。X个9表示在软件系统1年时间的使用过程当中,系统能够正常使用时间与总时间(1年)之比,咱们经过下面的计算来感觉下X个9在不一样级别的可靠性差别。python
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%)*365*24=8.76小时,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是8.76小时。 4个9:(1-99.99%)*365*24=0.876小时=52.6分钟,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是52.6分钟。 5个9:(1-99.999%)*365*24*60=5.26分钟,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是5.26分钟。 6个9:(1-99.9999%)*365*24*60*60=31秒, 示该软件系统在连续运行1年时间里最多可能的业务中断时间是31秒
1.2 监控什么东西
监控一切须要监控的东西,只要可以想到,可以用命令实现的都能用来监控mysql
1.2.1 监控范畴
1.3 怎么来监控
1.3.1 远程管理服务器
若是想远程管理服务器就有远程管理卡,好比Dell idRAC,HP ILO,IBM IMMlinux
1.3.2 监控硬件
查看硬件的温度/风扇转速,电脑有鲁大师,服务器就有ipmitool。ios
使用ipmitool实现对服务器的命令行远程管理nginx
yum -y install OpenIPMI ipmitool #->IPMI在物理机能够成功,虚拟机不行 [root@KVM ~]# ipmitool sdr type Temperature Temp | 01h | ns | 3.1 | Disabled Temp | 02h | ns | 3.2 | Disabled Temp | 05h | ns | 10.1 | Disabled Temp | 06h | ns | 10.2 | Disabled Ambient Temp | 0Eh | ok | 7.1 | 22 degrees C Planar Temp | 0Fh | ns | 7.1 | Disabled IOH THERMTRIP | 5Dh | ns | 7.1 | Disabled CPU Temp Interf | 76h | ns | 7.1 | Disabled Temp | 0Ah | ns | 8.1 | Disabled Temp | 0Bh | ns | 8.1 | Disabled Temp | 0Ch | ns | 8.1 | Disabled
1.3.3 查看cpu相关
lscpu、uptime、top、htop vmstat mpstatgit
其中htop须要安装,安装依赖与epel源。github
[znix@clsn ~]$lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 1 On-line CPU(s) list: 0 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 85 Model name: Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz Stepping: 4 CPU MHz: 2494.150 BogoMIPS: 4988.30 Hypervisor vendor: KVM Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 1024K L3 cache: 33792K NUMA node0 CPU(s): 0
1.3.4 内存够不够能够用
free
[znix@clsn ~]$free -h total used free shared buffers cached Mem: 996M 867M 128M 712K 145M 450M -/+ buffers/cache: 271M 725M Swap: 1.0G 0B 1.0G
1.3.5 磁盘剩多少写的快不快能够用
df、dd、iotop
[znix@clsn ~]$df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G 24G 15G 62% / tmpfs 499M 20K 499M 1% /dev/shm /dev/vdb1 20G 4.4G 15G 24% /data
1.3.6 监控网络
iftop nethogs
iftop 监控主机间流量 -i 指定监控网卡 nethogs 监控进程流量
安装iftop
CentOS上安装所需依赖包:
yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel
iftop相关参数
经常使用的参数
-i设定监测的网卡,如:# iftop -i eth1
-B 以bytes为单位显示流量(默认是bits),如:# iftop -B
-n使host信息默认直接都显示IP,如:# iftop -n
-N使端口信息默认直接都显示端口号,如: # iftop -N
-F显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0
-h(display this message),帮助,显示参数信息
-p使用这个参数后,中间的列表显示的本地主机信息,出现了本机之外的IP信息;
-b使流量图形条默认就显示;
-f这个暂时还不太会用,过滤计算包用的;
-P使host信息及端口信息默认就都显示;
-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M
进入iftop画面后的一些操做命令(注意大小写)
按h切换是否显示帮助;
按n切换显示本机的IP或主机名;
按s切换是否显示本机的host信息;
按d切换是否显示远端目标主机的host信息;
按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
按N切换显示端口号或端口服务名称;
按S切换是否显示本机的端口信息;
按D切换是否显示远端目标主机的端口信息;
按p切换是否显示端口信息;
按P切换暂停/继续显示;
按b切换是否显示平均流量图形条;
按B切换计算2秒或10秒或40秒内的平均流量;
按T切换是否显示每一个链接的总流量;
按l打开屏幕过滤功能,输入要过滤的字符,好比ip,按回车后,屏幕就只显示这个IP相关的流量信息;
按L切换显示画面上边的刻度;刻度不一样,流量图形条会有变化;
按j或按k能够向上或向下滚动屏幕显示的链接记录;
按1或2或3能够根据右侧显示的三列流量数据进行排序;
按<根据左边的本机名或IP排序;
按>根据远端目标主机的主机名或IP排序;
按o切换是否固定只显示当前的链接;
按f能够编辑过滤代码,这是翻译过来的说法,我还没用过这个!
按!可使用shell命令,这个没用过!没搞明白啥命令在这好用呢!
按q退出监控。
Nethogs 是一个终端下的网络流量监控工具,它的特别之处在于能够显示每一个进程的带宽占用状况,
这样能够更直观获取网络使用状况。它支持 IPv4 和 IPv6 协议、支持本地网卡及 PPP 连接。
wget -c https://github.com/raboof/nethogs/archive/v0.8.1.tar.gz
安装以前须要先 yum install ncurses*
yum install libpcap-dev libncurses5-dev
-d : 刷新间隔 -h : 帮助 -p : promiscious 模式 -t : trace模式 -V : 版本
1.4 监控工具总览
mrtg 流量监控出图
nagios 监控
cacti 流量监控出图
zabbix 监控+出图
1.5 zabbix介绍
Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构。可用于监视各类网络服务、服务器和网络机器等状态。
使用各类 Database-end 如 MySQL, PostgreSQL, SQLite, Oracle 或 IBM DB2 储存资料。Server 端基于 C语言、Web 管理端 frontend 则是基于 PHP 所制做的。Zabbix 可使用多种方式监视。能够只使用 Simple Check 不须要安装 Client 端,亦可基于 SMTP 或 HTTP ... 各类协定作死活监视。
在客户端如 UNIX, Windows 中安装 Zabbix Agent 以后,可监视 CPU Load、网络使用情况、硬盘容量等各类状态。而就算没有安装 Agent 在监视对象中,Zabbix 也能够经由 SNMP、TCP、ICMP、利用 IPMI、SSH、telnet 对目标进行监视。
另外,Zabbix 包含 XMPP 等各类 Item 警示功能。
1.5.1 zabbix的组成
zabbix官网: https://www.zabbix.com
zabbix 主要由2部分构成 zabbix server和 zabbix agent
zabbix proxy是用来管理其余的agent,做为代理
1.5.2 zabbix监控范畴
² 硬件监控 :Zabbix IPMI Interface
² 系统监控 :Zabbix Agent Interface
² Java 监控:ZabbixJMX Interface
² 网络设备监抟:Zabbix SNMP Interface
² 应用服务监控:Zabbix Agent UserParameter
² MySQL 数据库监控:percona-monitoring-pldlgins
² URL监控:Zabbix Web监控
第2章 安装zabbix
2.1 环境检查
[root@m01 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@m01 ~]# uname -r 3.10.0-693.el7.x86_64 [root@m01 ~]# getenforce Disabled [root@m01 ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
2.2 安装zabbix过程
2.2.1 安装方式选择
编译安装 (服务较多,环境复杂)
yum安装(干净环境)
使用yum 须要镜像yum源 http://www.cnblogs.com/clsn/p/7866643.html
2.2.2 服务端快速安装脚本
#!/bin/bash #clsn #设置解析 注意:网络条件较好时,能够不用自建yum源 # echo '10.0.0.1 mirrors.aliyuncs.com mirrors.aliyun.com repo.zabbix.com' >> /etc/hosts #安装zabbix源、aliyun YUM源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm #安装zabbix yum install -y zabbix-server-mysql zabbix-web-mysql #安装启动 mariadb数据库 yum install -y mariadb-server systemctl start mariadb.service #建立数据库 mysql -e 'create database zabbix character set utf8 collate utf8_bin;' mysql -e 'grant all privileges on zabbix.* to zabbix@localhost identified by "zabbix";' #导入数据 zcat /usr/share/doc/zabbix-server-mysql-3.0.13/create.sql.gz|mysql -uzabbix -pzabbix zabbix #配置zabbixserver链接mysql sed -i.ori '115a DBPassword=zabbix' /etc/zabbix/zabbix_server.conf #添加时区 sed -i.ori '18a php_value date.timezone Asia/Shanghai' /etc/httpd/conf.d/zabbix.conf #解决中文乱码 yum -y install wqy-microhei-fonts \cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf #启动服务 systemctl start zabbix-server systemctl start httpd #写入开机自启动 chmod +x /etc/rc.d/rc.local cat >>/etc/rc.d/rc.local<<EOF systemctl start mariadb.service systemctl start httpd systemctl start zabbix-server EOF #输出信息 echo "浏览器访问 http://`hostname -I|awk '{print $1}'`/zabbix"
2.2.3 客户端快速部署脚本
#!/bin/bash #clsn #设置解析 echo '10.0.0.1 mirrors.aliyuncs.com mirrors.aliyun.com repo.zabbix.com' >> /etc/hosts #安装zabbix源、aliyu nYUM源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm #安装zabbix客户端 yum install zabbix-agent -y sed -i.ori 's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_agentd.conf systemctl start zabbix-agent.service #写入开机自启动 chmod +x /etc/rc.d/rc.local cat >>/etc/rc.d/rc.local<<EOF systemctl start zabbix-agent.service EOF
2.3 检测连通性
2.3.1 服务端安装zabbix-get检测工具
yum install zabbix-get
2.3.2 在服务端进行测试
注意:只能在服务端进行测试
zabbix_get -s 172.16.1.61 -p 10050 -k "system.cpu.load[all,avg1]" zabbix_get -s 172.16.1.21 -p 10050 -k "system.cpu.load[all,avg1]"
测试结果
[root@m01 ~]# zabbix_get -s 172.16.1.61 -p 10050 -k "system.cpu.load[all,avg1]" 0.000000 [root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "system.cpu.load[all,avg1]" 0.000000
第3章 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章 自定义监控与监控报警
4.1 自定义监控
4.1.1 说明
zabbix自带模板Template OS Linux (Template App Zabbix Agent)提供CPU、内存、磁盘、网卡等常规监控,只要新加主机关联此模板,就可自动添加这些监控项。
需求:服务器登录人数不能超过三人,超过三人报警
4.1.2 预备知识
自定义key能被server和agent承认
# 正确的key [root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "system.uname" Linux cache01 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64
# 没有登记的,自定义的key [root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "login-user" ZBX_NOTSUPPORTED: Unsupported item key.
# 写错的key [root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "system.uname1" ZBX_NOTSUPPORTED: Unsupported item key.
4.2 实现自定义监控
4.2.1 自定义语法
UserParameter=<key>,<shell command> UserParameter=login-user,who|wc -l UserParameter=login-user,/bin/sh /server/scripts/login.sh
4.2.2 agent注册
[root@cache01 ~]# cd /etc/zabbix/zabbix_agentd.d/ [root@cache01 zabbix_agentd.d]# vim userparameter_login.conf UserParameter=login-user,who|wc -l UserParameter=login-user2,who|wc -l UserParameter=login-user3,who|wc -l
注意:key名字要惟一,多个key以行为分割
# 修改完成后重启服务
[root@cache01 zabbix_agentd.d]# systemctl restart zabbix-agent.service
在server端进行get测试
[root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "login-user" 3 [root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "login-user2" 3 [root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "login-user3" 3 [root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "login-user4" ZBX_NOTSUPPORTED: Unsupported item key.
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
1.切换到zabbix脚本目录(如何查看zabbix脚本目录):
cd /usr/local/zabbix-server/share/zabbix/alertscripts #查看zabbix脚本目录 vi /etc/zabbix/zabbix_server.conf 查看AlertScriptsPath
2.获取OneITSM agent包:
wget http://www.onealert.com/agent/release/oneitsm_zabbix_release-1.0.1.tar.gz
3.解压、安装。
tar -zxf oneitsm_zabbix_release-1.0.1.tar.gz cd oneitsm/bin bash install.sh --#我的生成的key
注:在安装过程当中根据安装提示,输入zabbix管理地址、管理员用户名、密码。
Zabbix管理地址: http://10.0.0.61/zabbix/ Zabbix管理员帐号: Admin Zabbix管理员密码:
4.当提示"安装成功"时表示安装成功!
验证告警集成 产生新的zabbix告警(problem),动做状态为“已送达”表示集成成功。
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章 监控全网服务器
5.1 需求说明
实际需求:
公司已经有了100台服务器,如今须要使用zabbix所有监控起来。
5.2 规划方案
常规监控:cpu,内存,磁盘,网卡 问题:怎样快速添加100台机器
方法1:使用克隆的方式
方法2:自动注册和自动发现
方法3:调用zabbix api接口 curl 、python
开发本身的运维平台兼容zabbix的通道
服务监控,url监控等特殊监控:自定义监控
5.2.1 api接口使用(curl)
curl -i -X POST -H 'Content-Type:application/json' -d'{"jsonrpc": "2.0","method":"user.login","params":{"user":"Admin","password":"zabbix"},"auth": null,"id":0}' "http://10.0.0.61/zabbix/api_jsonrpc.php" curl -i -X POST -H 'Content-Type:application/json' -d' { "jsonrpc": "2.0", "method": "host.get", "params": { "output": [ "hostid", "host" ], "selectInterfaces": [ "interfaceid", "ip" ] }, "id": 2, "auth": "6a450a8fc3dce71fd310cfe338746578" }' "http://10.0.0.61/zabbix/api_jsonrpc.php"
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,pptp ntp 端口udp 123
7. 监控Nginx的7种链接状态。
自定义监控
5.3.3 监控服务通用方法
1. 监控端口 netstat ss lsof ==》 wc -l
2. 监控进程 ps -ef|grep 进程|wc -l 试运行一下
3. 模拟客户端的使用方式监控服务端
web ==》 curl
mysql ==》 select insert
memcache ==》 set再get
5.4 实施全网监控
安装客户端脚本,for centos6
#!/bin/bash #设置解析 # echo '10.0.0.1 mirrors.aliyuncs.com mirrors.aliyun.com repo.zabbix.com' >> /etc/hosts #安装zabbix源、aliyu nYUM源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm yum clean all yum clean all #安装zabbix客户端 yum install zabbix-agent -y sed -i.ori 's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_agentd.conf /etc/init.d/zabbix-agent start #写入开机自启动 chmod +x /etc/rc.d/rc.local cat >>/etc/rc.d/rc.local<<EOF /etc/init.d/zabbix-agent start EOF
5.4.1 使用自动发现规则
添加自动发现规则
建立发现动做
查看自动发现的机器。
5.4.2 监控备份服务器
利用系统自带键值进行监控net.tcp.listen[port] 建立新的模板
在服务端进行测试
[root@m01 ~]# zabbix_get -s 172.16.1.41 -p 10050 -k "net.tcp.listen[873]" 1 # 1为端口在监听 0为端口未监听
将模板添加到主机
5.4.3 监控NFS服务器
建立nfs监控模板
使用 proc.num[<name>,<user>,<state>,<cmdline>] 键值,检测nfs进程的数量
在服务端进行测试
[root@m01 ~]# zabbix_get -s 172.16.1.31 -p 10050 -k "proc.num[,,,rpc]" 5 [root@m01 ~]# zabbix_get -s 172.16.1.31 -p 10050 -k "proc.num[nfsd,,,] 8
将模板绑定到主机
5.4.4 监控MySQL服务器
将自带的mysqlkey值加上mysql的帐户密码,不然不能获取到数据。
使用系统自带模板 net.tcp.port[<ip>,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 ;done ok ok ok
建立web监测模板
建立应用集
建立Web场景
建立图形
将模板关联到主机
监测结果
5.4.7 监控反向代理服务器
建立自定义key
[root@lb01 ~]# cat /etc/zabbix/zabbix_agentd.d/userparameter_nk.conf UserParameter=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 ;done Active connections: 1 server accepts handled requests 73 73 69 Reading: 0 Writing: 1 Waiting: 0 Active connections: 1 server accepts handled requests 134 134 127 Reading: 0 Writing: 1 Waiting: 0 Active connections: 1 server accepts handled requests 7 7 7 Reading: 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章 自动发现与自动注册
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) 添加主机与启用主机
而后等待者客户端自动上门就好😏
6.3 自动注册--主动模式
第一个里程碑:zabbix Server安装完毕 (完成)
zabbix Server安装完毕
第二个里程碑:zabbix agent安装完毕,须要额外增长的配置
vim /etc/zabbix/zabbix_agentd.conf ServerActive=172.16.1.61 # Hostname=Zabbix server HostnameItem=system.hostname systemctl restart zabbix-agent.service netstat -tunlp|grep zabbix
源文件与修改后对比
第三个里程碑:在web见面上进行配置
1 配置 >> 动做 >> 事件源(自动注册) >> 建立动做
建立动做,添加名称便可
条件中也无需修改
在动做中添加动做
(添加主机、添加到主机群组、连接到模板)
添加完动做后,等待就好了
注意:重启客户端能够加速发现。可是在生产环境中勿用。
第7章 分布式监控与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.3 配置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.rpm yum install zabbix-proxy-mysql -y
第二个里程碑:安装数据库
zabbix proxy也须要数据库,这个数据库不是用于存储监控数据的 只是用于存储配置信息
#安装数据库
yum -y install mariadb-server systemctl start mariadb.service
#创建数据库
mysql 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.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
第三个里程碑:修改agent配置指向 proxy
[root@cache01 ~]# grep ^Server /etc/zabbix/zabbix_agentd.conf Server=172.16.1.61 ServerActive=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.conf Server=172.16.1.21 ServerActive=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.conf systemctl start snmpd.service
7.2.4 测试snmp
[root@m01 ~]# snmpwalk -v 2c -c public 127.0.0.1 sysname SNMPv2-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监控对的主机
7.2.6 附录
##SNMP OID列表 监控须要用到的OID http://www.ttlsa.com/monitor/snmp-oid/ cmdb 资源管理系统