站长资源服务器
Zabbix配置监控项及聚合图形的实例代码
1.安装Zabbix Agent监控本机
安装agent软件
与server端不同,Agent只需安装zabbix-agent包
cat /etc/yum.repos.d/zabbix.repo [zabbix] name=Zabbix Official Repository - $basearch baseurl=https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591 [zabbix-non-supported] name=Zabbix Official Repository non-supported - $basearch baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/ enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX gpgcheck=1 curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 -o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591 curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX -o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX yum -y install zabbix-agent zabbix-get
2.配置Agent并启动
vim /etc/zabbix/zabbix_agentd.conf Server=39.108.140.0 # 被动模式 zabbix-server-ip ServerActive=39.108.140.0 # 主动模式 zabbix-server-ip Hostname=You-Men # Agent端主机名,最终显示在监控页面上的名字 UnsafeUserParameters=1 # 是否限制用户自定义keys使用特殊字符 systemctl restart zabbix-agent netstat -antp|grep agent tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 3898/zabbix_agentd tcp6 0 0 :::10050 :::* LISTEN 3898/zabbix_agentd
3.配置snmp(可以不做)
zabbix除了可以使用agent获取数据之外,还可以通过snmp获取数据,为了能够让zabbix监控更多的信息,将本机的snmp功能启动起来.
yum -y install net-snmp net-snmp-utils vim /etc/snmp/snmpd.conf com2sec notConfigUser 39.108.140.0 public access notConfigGroup "" any noauth exact all none none view all included .1 80 systemctl restart snmpd && systemctl enabel snmpd ss -anup |grep snmp # 161端口,udp协议 # 测试snmp协议工作是否正常 # snmpwalk -v 1 -c public 39.108.140.0 .1.3.6 # 使用v1版本,共同体为public,来对192.168.0.1的.1.3.6分支进行walk。 snmpwalk -v 2c -c public 39.108.140.0 # 使用v2c版本,共同体为public,对39.108.140.0进行walk。 # -v 显示当前SNMPWALK命令行版本. # - # 获取cisco设备39.108.140.0的接口类型
接下来我们到web界面上配置如何监控本地主机,我们看到接口上是127.0.0.1,但是我们配置文件写的是39.108.140.0,我们让这两个IP一致.点击3进去然后修改.
更新完后,跳到下面页面,稍等一会,重新载入一下页面就是可用性为绿色了
至此,监控本地主机就完成了,如果想看下监控本地主机的网卡流量就做下面图2步骤.鼠标依次根据数字挨个点,如果想要监控项是中文的话,可以做Zabbix故障例一,但是4.4版本较以前版本有所改善,监控项不是乱码,而是英文.
如果想要将这种乱码换成正常中文
如果是windows在C盘搜索simkai.tff中文楷体,拷贝/上传到服务器,然后cp到zabbix的字体目录 3.*版本: cp /root/simkai.ttf /usr/share/zabbix/fonts/ # 不同的安装方式,路径会有所不同,所以可以直接find / -type d -type fonts找到类似的文件夹,那就是了 # 注意字体权限问题 vim /usr/share/zabbix/include/defines.inc.php define('ZBX_GRAPH_FONT_NAME', 'simkai'); define('ZBX_FONT_NAME', 'simkai');
4.Zabbix监控远程主机
如果远程主机安装不上zabbix-agent,可以通过装的上的zabbix-agent的机器把包传过去
yum -y instlal yum-utils # 下载到指定目录 yum install zabbix-agent -y --downloadonly --downloaddir=/root 1.安装zabbix agent # 方法一(国外源zabbix好像下载不下来包了,用上面的源): # rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm yum clean all yum -y install zabbix-agent # 方法二:(使用别的机器传过来的zabbix-agent包直接rpm安装即可) rpm -ivh zabbix-agent-4.4.1-1.el7.x86_64.rpm # 修改zabbix-agent配置并启动服务 vim /etc/zabbix/zabbix_agentd.conf Server=192.168.244.144 Server=192.168.244.144 //监控主机IP地址 Hostname=agent1.zabbix.com //被监控主机到监控主机的名字 UnsafeUserParameters=1 systemctl start zabbix-agent ss -antp |grep 10050 # 接下来我们到web端进行操作 # 为了服务方便管理和易于查看。 # 监控系统中往往根据被监控的主机角色或其他属性将同类主机划分到同一个主机组中.
如果等上一段时间,可用性哪里没有红色警告,就说明这台主机被添加进来了,但是因为没有挂载模板和创建监控项,所以我们接下来尝试着挂载一下模板,然后再去创建监控项.
我们到agent端装一个nginx,然后去zabbix的web端找到此模板并挂载.
yum -y install nginx systemctl start nginx
5.测试监控主机
接下来我们用浏览器或者elinks访问一下nginx,产生一些数据,然后去zabbix上查看变化
elinks --dump 116.196.83.113
我们以后自定义Key监控项时,先看看最新数据有没有数据过来,如果数据都不会过来,就别提图形触发器报警什么了.
至此,添加本地主机,远程主机,创建主机组,挂载模板就已经完了
6.Zabbix监控项
监控项(Items)简介
监控项是Zabbix中获得数据的基础,没有监控项,就没有数据——因为一个主机只有监控项定义了单一的指标或者需要获得的数据,监控项适用于采集数据的,多个同类的监控项可以定义成一个应用集,如,mysql增删改查以及每秒钟的读表,写表速度可以写成一个Mysql应用集.
对于监控项的示例,需要输入以下必要的信息
名称
输入CPU Load作为值,在列表中和其他地方,都会显示这个值作为监控项名称.
值
手动输入system.cpu.load作为值,这是监控项的一个技术上的名称,用于识别获取信息的类型,这个特定值需要是Zabbix Agent预定义值的一种.
https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/zabbix_agent # 此网址就是zabbix官网的预定义值.
信息类型
在此处选择Numeric(float),这个属性定义了获得数据的格式
你也需要减少监控项历史保留的天数,7或者14天,对于数据库而言,最佳实践是避免数据库保留过多的历史数据.
我们选择了数据类型后,暂时保持其他选项的默认值.
1> 磁盘容量Units一般为B
2> 网卡流量单位为bps
3> Mysql每秒访问量qps,例如MySQL每秒select,insert Mysql serlect
点击添加,新的监控项就出现在监控项列表中了
7.查看数据
当一个监控项定义完成后,你可能好奇他具体获取了什么值,前往监控首页,点击最新数据,选择相应的主机.看数据能不能过来以及是不是自己想要的类型.
图表
当监控项运行了一段时间后,可以查看可视化图表,如果没有可以自己创建一个,下面会有详细介绍
8.常用监控项
1.服务器网络接口进出流量和总流量 net.if.in[if,<mode>] net.if.out[if,<mode>] net.if.total[if,<mode>] 2.服务器启动分区剩余空间 vfs.fs.size[fs,<mode>] vfs.fs.size[/boot,free] 3.监控虚拟机内存 vm.memory.size[<mode>] vm.memory.size[total vm.memory.size[free] vm.memory.size[wired] 4.服务器服务状态 net.tcp.listen[port] net.tcp.port[<ip>,port] net.tcp.service[service,<ip>,<port>] net.tcp.service.perf[service,<ip>,<port>] 5.服务器进程数量 proc.num[<name>,<user>,<state>,<cmdine>] zabbix_get -s 39.108.140.0 -k proc.num 121 zabbix_get -s 39.108.140.0 -k proc.num[,,run] 3 zabbix_get -s 39.108.140.0 -k proc.num[,,sleep] 118 6.服务器CPU状态(浮点型,无单位) system.cpu.intr system.cpu.load[<cpu>,<mode>] system.cpu.num system.cpu.switches system.cpu.util[<cpu>,<type>,<mode>] zabbix_get -s 39.108.140.0 -k system.cpu.load[all,avg1] 0.000000 zabbix_get -s 39.108.140.0 -k system.cpu.load[,avg5] 0.010000 7.磁盘IO情况 vfs.dev.read[device,<type>,<mode>] vfs.dev.write[device,<type>,<mode>] zabbix_get -s 39.108.140.0 -k vfs.dev.read[/dev/vda1] 8.监控文件修改 vfs.file.chsum[file] # 如监控/etc/passwd ,/etc/group 文件从而知道是否有新用户创建 vfs.file.md5sum[file] vfs.file.size[file] # 通常用来监控日志 vfs.fs.size[fs,<mode>] 9.磁盘总和.
10.监控网卡流量
我们先创建一个应用集,这样的话之后创建的网卡上传,下载,总流量不会显的很乱,都在一个Network应用集里面,而且能导出成xml文件,放到其他的zabbxi主机上能直接用.
我们此刻做的创建监控项是利用zabbix安装好自带的监控项,跟自定义Key差不多,都是写一个监控脚本然后传参,每一个键值相当于一个监控脚本
接下来我们检测---> 主机群组里面去查看下最新数据,我们可以从下图看到是有数据的
下行宽带和上行宽带.
下载就是in,下行宽带,你发出去的就是out,作为一个服务器来说上行宽带肯定要高,在家里就是下行宽带高,对服务器来说他需要接收很少的数据包,回复很多的数据包,而在家里我们是发出去一个很小的数据包,返回来整个网页.
接下来我们再去创建一个网卡输出流量,然后将他们做成一个图标,以图形化展示出来
接下来我们再去监测里面去查看最新数据,可以养成这个习惯,因为最新数据过来了才是说明当中数据流向没有问题,如果数据都没有过来你去创建图形,图表说没有数据,你觉得得等一会,浪费时间影响效率
可以看到,两个监控项都是有数据的,接下来我们去创建图形
接下来我们去查看监测 ---> 图形,选择相应群组,相应的主机及创建的图形
这台主机可以装一个nginx,然后上传一张大一点图片到网站根目录,然后访问,再查看网络波动图.
或者我们直接上传一个大点的rpm、tar包到其他主机.这样看着明显
11.监控CPU
跟刚才一样,创建一个CPU应用集,方便管理归纳
接下来我们创建应用集的监控项,cpuintr,cpu中断数
接下来我们创建一个cpu每隔一分钟的负载监控项
通过下图,我们可以看到,每个监控项都是有数据过来的,接下来我们去创建图形
我们可以看到,数据是可以实时转换成图标的,接下来我们去做一个聚合图形
12.创建聚合图形
至此,我们第一个构造函数完成,另外一个构造函数同理,此处就不写了,直接看结果图.
创建系统定义好的监控项,跟上面两个都差不多,多做做自然就会了,如果不习惯使用官方定义好的key,我们可以根据公司环境自己写脚本自定义key,此章完结.
总结