在需要的时刻,提前提醒我们服务器出问题了
当出问题之后,可以找到问题的根源
网站/服务器 的可用性
在软件系统的高可靠性(也称为可用性,英文描述为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秒
监控一切需要监控的东西,只要能够想到,能够用命令实现的都能用来监控
如果想远程管理服务器就有远程管理卡,比如Dell idRAC,HP ILO,IBM IMM
yum install zabbix-get
http://10.0.0.61/zabbix/setup.php
在检测信息时,可查看具体的报错信息进行不同的解决
选择mysql数据库,输入密码即可
host与port不需要修改,name自定义
确认信息,正确点击下一步
安装完成、点击finsh
进入登陆界面 账号Admin密码zabbix 注意A大写
配置 >> 主机
主机名称:要与主机名相同,这是zabbix server程序用的
可见名称:显示在zabbix网页上的,给我们看的
修改后,要将下面的已启用要勾上
添加完成就有了管理机的监控主机
配置 >> 主机 >> 创建主机
注意勾选以启用
然后添加模板,选择linux OS ,先点小添加,再点大添加。
添加完成,将会又两条监控主机信息
检测中 >> 最新数据
在最新数据中需要筛选,
输入ip或者名字都能够搜索出来
在下面就会列出所有的监控项
检测中 >> 图形 选择正确的主机。选择要查看的图形即可出图
zabbix自带模板Template OS Linux (Template App Zabbix Agent)提供CPU、内存、磁盘、网卡等常规监控,只要新加主机关联此模板,就可自动添加这些监控项。 需求:服务器登陆人数不能超过三人,超过三人报警
① 创建模板 配置 >> 模板 >> 创建模板
点击添加,即可创建出来模板
查看创建出来的模板。
② 创建应用集 应用集类似(目录/文件夹),其作用是给监控项分类。 点击 应用集 >> 创建应用集
自定义应用集的名称,然后点击添加 ③ 创建监控项 监控项 >> 创建监控项
键值 — key,即前面出创建的login-user。
注意:创建监控项的时候,注意选择上应用集,即之前创建的安全。
④创建触发器 触发器的作用:当监控项获取到的值达到一定条件时就触发报警 (根据需求创建) 触发器 >> 创建触发器 创建触发器,自定义名称,该名称是报警时显示的名称。 表达式,点击右边的添加,选择表达式。 严重性自定义。
表达式的定义 ↓ ,选择之前创建的监控项, 最新的T值为当前获取到的值。
添加完成,能够在触发器中看到添加的情况
⑤创建图形 以图形的方式展示出来监控信息 图形 >> 创建图形 名称自定义,关联上监控项。
⑥主机关联模板 配置 >> 主机 一个主机可以关联多个模板
http://www.onealert.com 通过 OneAlert 提供的通知分派与排班策略,以及全方位的短信、微信、QQ、电话提醒服务,您可以在最合适的时间,将最重要的信息推送给最合适的人员。
添加应用,注意添加的是zabbix
实现微信报警需要关注微信公众号即可。
①删除报警媒介类型中的脚本
②删除创建的用户
③删除用户群组
④删除创建的动作
在微信和邮件中,均能收到报警信息。
注意:当状态改变的时候才会发邮件 好→坏 坏→好
最新数据 >> 图形
自定义名称
点击聚合图形的名称,进行更改,添加要显示的图形即可。
添加幻灯片 监测中 >> 复合图形 >> 幻灯片演示
创建幻灯片,名称自定,选择要显示的
幻灯片根据设定的时间自动播放
在主机页打开,全选后点击导出
导入
5.1 需求说明 实际需求: 公司已经有了100台服务器,现在需要使用zabbix全部监控起来。
常规监控:cpu,内存,磁盘,网卡 问题:怎样快速添加100台机器
开发自己的运维平台兼容zabbix的通道 服务监控,url监控等特殊监控:自定义监控
所有集群节点(所有虚拟机)都监控上 交换机,路由器监控(简单方法:换成端口对应服务器网卡流量监控;标准方法:监控交换机的网卡) snmp监控
安装客户端脚本,for centos6
添加自动发现规则
创建发现动作
查看自动发现的机器。
利用系统自带键值进行监控net.tcp.listen[port] 创建新的模板
在服务端进行测试
将模板添加到主机
创建nfs监控模板 使用 proc.num[,,,] 键值,检测nfs进程的数量
在服务端进行测试
将模板绑定到主机
将自带的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 - 可以连接
将模板关联到主机
创建监控模板 监控 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
将模板关联到主机
创建监测页面
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
创建web监测模板
创建应用集
创建Web场景
创建图形
将模板关联到主机
监测结果
创建自定义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界面添加模板
将模板关联到主机
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: 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
在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上添加
监控项
添加图形
将模板关联到主机
查看添加的图形
自动发现:
zabbix Server主动发现所有客户端,然后将客户端登记自己的小本本上,缺点zabbix server压力山大(网段大,客户端多),时间消耗多。
自动注册:
zabbix agent主动到zabbix Server上报到,登记;缺点agent有可能找不到Server(配置出错)
注意:两种模式都是在agent上进行配置 zabbix 的使用要在hosts文件中预先做好主机名的解析
使用自带的自动发现规则(进行修改)即可
在ip范围内输入ip,注意格式; 延迟在实际的生产环境中要大一些,实验环境可以小一些
创建发现动作 配置 >> 动作 >> Auto discovery. Linux servers.
① 配置动作
② 在条件中添加条件,让添加更准确
③ 在操作中添加 a) 添加主机与启用主机
分担压力,减轻负载 多机房监控 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
zabbix server m01 zabbix proxy cache01 zabbix agent cache01
第一个里程碑:配置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-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.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.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代理程序 >> 创建代理
代理程序名称要填写主机名
稍等片刻就能在程序中出现代理
在主机中能发现主机代理
无法安装agent 很多前辈的监控软件都可以监控各种设备 都是通过snmp监控 snmp simple network manager protocol 简单网络管理协议 简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema)和一组资源对象。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。
yum -y install net-snmp net-snmp-utils
sed -i.ori '57a view systemview included .1' /etc/snmp/snmpd.conf systemctl start snmpd.service
[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
添加新的主机,注意使用snmp接口
选择模板,注意使用SNMP的模板
添加完成就能够在主机中看到snmp监控对的主机
本文作者:Gustav
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!