Linux学习(第十七周)

第十七周学习内容:zabbix

第十七周作业:

1、描述常见监控系统及SNMP协议。

      运维工作中有这么一句话“不应该允许没有监控的系统上线”,由此可知监控系统在整个运维工作中的重要性。监控指标有硬件(如cpu使用率、内存占有率等);软件(如进程工作是否正常等);业务(如并发在线数量、数据库查询数量等)。

      监控所应该具有的功能包括:采样,周期性获取某个关注的指标的数据,可以基于agent形式,也可以基于ssh/telnet形式、IDMI硬件形式、SNMP形式、JMX形式等;存储,一般会存储两种数据,历史数据(每次采样的结果)和趋势数据(一段时间内数据计算后的结果),前者存储时间短,占用空间大,后者正好相反,可以基于关系型数据库、轮询数据库、nosql、时间序列数据库等进行存储;报警:当监控的设备发生问题及时报告管理员,可以用邮件,短信,调用脚本等;展示:一般会通过web gui,gui,app等进行展示。

      开源的监控项目有cacti、nagios、ganglia和zabbix等,其中zabbix是现在最流行也是最强大的一款了。

      关于SNMP(Simple Network Management Protocol)简单网络管理协议,由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema)和一组资源对象。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。对于路由器、交换机、打印机这种不支持安装agent的设备只能使用SNMP来监控了,SNMP协议也有守护进程,负责在监控者与被监控者之间交互报文。在其内部内建了许多OID来标识出具体的监控内容。OID是一个倒置的树状结构,可以标识出计算机领域内大多数信息。如:.1.3.6.1.2.1.1.1.0表示系统基本信息、.1.3.6.1.2.1.25.2.2.0表示内存大小等等。OID与具体管理信息就是以这样的一一对应的方式来关联的,这个信息库叫做MIB。

2、搭建企业级zabbix,实现自动以邮件和短信报警。

      zabbix作为开源监控系统的集大成者,从1998年项目立项以来一直发展良好,有免费版和收费版,通过官网(https://www.zabbix.com/)即可下载最新版本,官网上也提供了如何安装的步骤和操作指南。特性有数据采样支持前面所说的所有形式,在条件允许的情况下建议使用agent形式;报警不仅支持邮件、短信、调用脚本,还开发了升级形式,也就是一层一层的向上级报警;存储支持mysql和pgsql;展示是以php开发的web  gui为主,可以做到实时绘图,包括单序列、多序列、翻转等等。除此之外,还有监控模板,网络自动发现,分布式监控,支持二次开发等等。

      通过官网上提供的方法进行安装:

      (1)# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm。创建yum仓库,并指向了此rpm包,下载并安装。

扫描二维码关注公众号,回复: 5094163 查看本文章

      image.png

      (2)# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent。除了主安装包,服务器端需安装这3个包,分别提供连接mysql、web页面和agent端3个功能。

      image.png

      (3)准备数据库,包括下载mariadb并启动,登录后创建用户名和建库等。

      image.png

      (4)# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uxiaomao -p123456。将下载安装的程序包提供的SQL脚本导入mariadb中,生成数据库中的具体表项,一般下载下来的脚本为.gz格式,要先使用gzip -d命令解压后方可导入。

      image.png

      (5)配置/etc/zabbix/zabbix_server.conf,将其中的DBName改为库名,默认为zabbix、DBuser和DBpassword改为连接数据库的用户名和密码。

      image.png

      (6)准备http环境,直接安装带php模块的httpd就可以了。

      image.png

      (7)编辑/etc/httpd/conf.d/zabbix.conf文件,将其中的时区修改为Asia/Shanghai。

      image.png

      (8)启动服务,httpd、zabbix_server、mariadb,就可以访问了。第一次访问时会是一张配置页面,填上各选项以后就可以到主页面了。

      image.png

      默认用户名为admin,密码为zabbix,就可以正常登录了。

      image.png

      客户端配置:需要安装zabbix_agent和zabbix_sender程序包,配置文件为/etc/zabbix/zabbix_agentd.conf,其中hostname为主机名或ID,必须唯一,且要与zabbix_server的web gui上配置一致,因为agent就是拿着这个主机名去找sever上传数据的。启动服务后,可以看到10050端口已处于监听状态。

      image.png

      zabbix的web界面具体配置:先可以通过administrator-users,把语言切换成中文,再进行具体配置。配置顺序一般为创建主机,创建监控项,创建触发器,创建动作,创建视图,多个视图组成屏幕,多个屏幕组成幻灯片,最终把以上的内容导入模板,这样可以给以后的主机直接套用。

      创建主机:配置-主机-创建主机,其中最重要的一项就是agent代理程序接口,可以是agent主机的主机名也可以是IP地址,除了最常用的agent外,还可以SNMP、JMX、IPMI接口。

      image.png

      创建监控项:配置-主机-监控项-创建监控项,在此处有一个重要的概念叫键值key,agent进程在收到server端发来的监控指令时是通过调用外部命令来具体获取信息的,比如想要监控入站流量,需要调用ifconfig命令并送给awk或grep找出相应的信息并发送给server端,命令很长且每个具体监控项的命令都不相同,所以就可以使用key来代替这一长串命令,zabbix内建了许多键值,都是见名思意的。当内建key无法满足用户监控需求时,还可以自定义键,这需要在agent的配置文件中定义。创建监控向页面上需要定义名字,键,数据保存格式等,而应用集可以理解为监控组,是将一大堆监控项归在其中的。

      image.png

      在内建key选择界面中,[]表示可选项,<>表示必输项。如:net.if.in[if,<mode>]表示接口入向流量统计,就需写成net.if.in[ens33,packets]表示统计ens33接口的入向流量,并以数据包为单位。

      image.png

      创建触发器:配置-主机-触发器-创建触发器,触发器是一个表达式一般用来定义不合理的区间,表达式为真则说明工作异常,触发事件。一个监控项可定义多个具有不同阈值的触发器,从而实现不同级别报警功能,也就是前面所说的升级。触发器的表达式可以写为{主机名:键.函数(参数)}操作符+常数,其中常用函数有avg,count,last,max,min等,而参数在大多数函数中是以秒为单位的,也可以在参数前加“#”表示最近几次的取值,比如:{www.ilinux.io:system.cpu.load[all,avg1].last(0)}>3,表示该主机上所有cpu过去一分钟内的平均负载的最后一次取值大于3时触发事件,这里的last(0)=last(#1)。

      image.png

      在具体配置中,zabbix为了让管理员方便使用表达式,提供了表达式构造器,可以直接在后面点击添加,填入各项信息,就能自动生成表达式了,方便了许多。

      image.png

      创建动作:配置-动作-创建动作,需要定义三块内容:动作、条件、操作。动作是用来定义自身属性的,一般只要取个名字就行了;条件用来定义在什么情况下执行操作,默认已添加了两个条件A和B,A为维护时间排出,B为触发器状态为PROBLEM,一般只需要再添加条件C,也就是具体触发器名称就可以了;操作是用来定义当发生问题时具体做什么的,操作类型有发送消息,远程指令等,其中发送消息具体发给谁需要通过定义媒介后方可使用了。

      image.png

      创建媒介:管理-报警媒介类型-创建媒介,主要就是通过电子邮件,调用脚本等。

      image.png

      创建好媒介后,别忘了还要调用,方式是管理-用户-报警媒介,把新建的媒介添加进去。

      image.png

      返回动作配置页面,把此用户添加进操作中即可。

      image.png

      创建图形:配置-主机-图形-创建图形,图形多种多样,也可以多条线进行比较等。

      image.png

      创建屏幕:监测中-聚合图形-创建聚合图形,可以将多个视图组成屏幕。

      创建幻灯片:监测中-聚合图形-幻灯片演示-创建幻灯片演示,可以将多个屏幕组成幻灯片。

      image.png

       创建模板:配置-模板-创建模板或导入模板,可以将前面定义导入,也可以重新创建。默认也存在着许多种模板,包含了大多数的监控项,其实有时也无需前面如此辛苦的配置,只要直接导入个Linux模板,稍微删改一下就可以了。

      image.png

      一台完整的被监控主机就有下面这些配置,当触发器触发事件,则会引发动作,发送邮件到指定邮箱,如果要发送短信之类的,还需要调用外部其他程序实现。

      image.png

      image.png

      

      

猜你喜欢

转载自blog.51cto.com/13762416/2347104