监控工具zabbix安装及使用详解

一、zabbix相关简介

zabbix是完全开源的工具,整合了cacti和nagios等特性。
SNMP(udp161 udp162)
众多网络工具都支持此协议,比如常见路由交换,常见OS其既可以做管理端也可以做被管理端。
snmp协议大致有3个版本分别是v1、v2、v3。
无论是v1和v2的安全性是比较差的,因为传输是明文的,V3的认证密码用MD5/SHA摘要算法加密。
很多工具支持网络管理的功能,而对于非网络设备(操作系统),可以完全抛开snmp这种不安全的架构来实现监控的。所以很多工具都是控制端和agent架构,他们有专属的agent。
1.zabbix的主要功能

(1)具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库、FTP等通用协议监控、多种告警方式、详细的报表图表绘制);

(2)支持自动发现网络设备和服务器(可以通过配置自动发现服务器规则来实现);

(3)支持分布式,能集中展示、管理分布式的监控点,扩展性强;

(4)server提供通用接口(api功能),可以自己开发完善各类监控(根据相关接口编写程序实现),编写插件容易,可以自定义监控项,报警级别的设置;

(5)数据收集,支持snmp(包括trapping and polling),IPMI,JMX,SSH,TELNET;

(6)自定义的检测;

(7)自定义收集数据的频率;

(8)服务器/代理和客户端模式;

(9)灵活的触发器,可以定义非常灵活的问题阈值,称为触发器;

(10)高可定制的报警,发送通知,可定制的报警升级,收件人,媒体类型;

(11)CPU负荷、内存使用、磁盘使用、网络状况、端口监视、日志监视等;

2.zabbix监控组件功能

硬件监控:Zabbix IPMI Interface 

系统监控:ZabbixAgent Interface 

Java 监控:Zabbix JMX Interface 

网络设备监控:Zabbix SNMP Interface 

应用服务监控:Zabbix Agent UserParameter

MySQL 数据库监控:percona-monitoring-plulgins 

URL 监控:Zabbix Web 监控

3.zabbix重要组件说明

(1)zabbix server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据都由它组织进行;

(2)database storage:专用于存储所有配置信息,以及由zabbix收集的数据;

(3)web interface:zabbix的GUI接口;

(4)proxy:可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力;

(5)agent:部署在被监控的主机上,负责收集主机本地数据如cpu、内存、数据库等数据发往server端或proxy端;

另外,zabbix server、proxy、agent都有自己的配置文件以及log文件,重要的参数需要在这里配置。
4.监控系统运行的流程
agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。
这里agentd收集数据分为主动和被动两种模式:

主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy;

被动:server向agent请求获取监控项的数据,agent返回数据;

5.zabbix常用的监控架构平台

(1)server-agentd模式
这个是最简单的架构,常用于监控主机比较少的情况。

(2)server-proxy-agentd模式
这个常用于比较多的机器,使用proxy进行分布式监控,有效的减轻server端的压力。

6.zabbix的系统架构
在这里插入图片描述
zabbix是一个基于Web界面的提供分布式系统监视以及网络监视功能的企业级开源解决方案。借助zabbix,可以很轻松地减轻运维人员们繁重的服务器管理任务,实现业务系统的持续运行。下面会逐步介绍Zabbix分布式监控系统的部署及使用。
7.监控知识概述

(1)对系统不间断的实时监控

(2)实时反馈系统和服务状态

(3)保证系统和服务可靠、安全

(4)保证业务持续稳定运行

实时    反馈    可靠    安全

8.怎么进行监控?
比如:监控硬盘使用率

(1)查看磁盘使用率:df -hi

(2)分析磁盘:block、inode

(3)截取磁盘使用率: df -h | grep /$ |awk '{print $(NF-1)}' |awk -F% '{print $1}'

(4)设置触发器:>=80

9.流行的监控工具

(1)cacti、nagios、zabbix

(2)lepus(天兔)数据库监控系统

(3)open-falcon 小米开源

(4)Prometheus普罗米修斯(docker k8s)

10.新入职公司,如何入手监控

(1)硬件、路由器、交换机、防火墙

(2)系统监控:cpu  内存  磁盘  网络 进程  tcp

(3)服务监控:nginx  php  tomcat  redis  memcache  mysql

(4)web监控: 请求时间   响应时间   加载时间 

(5)日志监控:ELK(收集、存储、分析、展示)  日志易

(6)业务监控:活动引入流量  产生的注册量  带来多少价值

11.监控核心

(1)发现问题

(2)定位问题

(3)解决问题

(4)总结问题

12.单机监控

(1)CPU: 
		w   top   htop   glances

(2)内存:
		free
		避免:OOM,全称“Out Of Memory” 现象

(3)网络:
		ifconfig  route  glances  iftop  netstat

(4)硬盘:
		df  iostat

二、zabbix的安装部署

zabbix中文手册
注意:服务端若要监控本机,则需要配置本机的zabbix agent。

主机IP说明
zabbix监控服务器192.168.229.187zabbix的服务端
zabbix agent被监控主机192.168.229.209zabbix的客户端

1.安装zabbix
(1)安装zabbix源

[root@localhost ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm  (官方源)
[root@localhost ~]# rpm -Uvh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm  (国内清华源)

如果不行,可以下载rpm包然后进行本地安装。
(2)安装zabbix服务端软件

[root@localhost ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent  mariadb-server

(3)启动数据库,创建zabbix数据库

[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# systemctl enable mariadb
[root@localhost ~]# mysql_secure_installation  #初始化密码
[root@localhost ~]# mysql -uroot -p  #登录数据库
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;  #创建数据库
MariaDB [(none)]> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';  #赋权
[root@localhost ~]# zcat /usr/share/doc/zabbix-server-mysql-4.0.27/create.sql.gz | mysql -uzabbix -pzabbix zabbix  #导入zabbix初始化数据

(4)修改zabbix配置文件

[root@localhost ~]# vim /etc/zabbix/zabbix_server.conf
定位此处添加:
DBPassword=zabbix
[root@localhost ~]# systemctl start zabbix-server
[root@localhost ~]# systemctl enable zabbix-server
[root@localhost ~]# systemctl start zabbix-agent
[root@localhost ~]# systemctl enable zabbix-agent

(5)修改httpd的时区

[root@localhost ~]# vim /etc/httpd/conf.d/zabbix.conf
定位20行:
php_value date.timezone Asia/Shanghai
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd

2.通过web界面初始化配置zabbix
浏览器访问:

http://192.168.229.187/zabbix

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置完成登录:
用户名:Admin
密 码:zabbix
在这里插入图片描述
在这里插入图片描述
修改中文显示:Administration – Users – Admin – Language – Chinese – Update
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.开启centos客户端,测试zabbix监控
(1)安装zabbix-agent

[root@localhost ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm

(2)修改agent配置文件,指向zabbix-server的ip地址

[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
定位此处修改:
Server=192.168.229.187
[root@localhost ~]# systemctl start zabbix-agent
[root@localhost ~]# systemctl enable zabbix-agent

4.添加主机

点击配置--主机--点击创建主机--起个主机名称,群组选择Linux servers,被监控的IP地址
--点击模板--选择template os linux点击框内的添加到上面的模板处,然后点击下面的添加即可

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.在zabbix-server上修改图形中文乱码情况

[root@localhost ~]# yum -y install wqy-microhei-fonts
[root@localhost ~]# cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/zabbix/assets/fonts/graphfont.ttf

三、zabbix的相关配置

1.分离zabbix数据库
(1)开启一台centos7虚拟机,安装mariadb-server,创建zabbix数据库和用户

[root@localhost ~]# hostname mariadb
[root@localhost ~]# bash
[root@mariadb ~]# systemctl stop firewalld
[root@mariadb ~]# setenforce 0
[root@mariadb ~]# yum -y install mariadb-server
[root@mariadb ~]# systemctl start mariadb
[root@mariadb ~]# systemctl enable mariadb
[root@mariadb ~]# mysql_secure_installation 
[root@mariadb ~]# mysql -uroot -pasd123
create database zabbix character set utf8 collate utf8_bin;
grant all on zabbix.* to zabbix@'192.168.229.%' identified by 'asd123';

(2)在zabbix服务器上备份导出zabbix数据库

[root@zabbix-server ~]# mysqldump -uroot -pasd123 --databases zabbix > `date +%F-%H`_zabbix.sql

(3)在zabbix服务器上把备份的数据库文件导入到分布式数据库上

[root@zabbix-server ~]# cat 2020-07-04-08_zabbix.sql | mysql -h 192.168.229.160 -uzabbix -pasd123 zabbix

(4)修改zabbix-server上的数据库连接信息

[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
定位修改
	DBHost=192.168.229.160
	DBName=zabbix
	DBUser=zabbix
	DBPassword=asd123
[root@zabbix-server ~]# vim /etc/zabbix/web/zabbix.conf.php
定位修改
	$DB['TYPE']     = 'MYSQL';
	$DB['SERVER']   = '192.168.229.160';
	$DB['PORT']     = '0';
	$DB['DATABASE'] = 'zabbix';
	$DB['USER']     = 'zabbix';
	$DB['PASSWORD'] = 'asd123';

(5)重启zabbix和httpd服务

[root@zabbix-server ~]# systemctl restart zabbix-server httpd

2.自定义监控–磁盘吞吐量
(1)检查磁盘的tps

[root@zabbix-agent ~]# yum -y install sysstat
[root@zabbix-agent ~]# iostat | awk '/^sda/{print $2}'
0.64

(2)在agent客户端的配置文件目录下新增监控配置文件(键值对命名法)

[root@zabbix-agent ~]# vim /etc/zabbix/zabbix_agentd.d/iostat.conf
添加:
UserParameter=iostat,iostat | awk '/^sda/{print $2}'
[root@zabbix-agent ~]# systemctl restart zabbix-agent

(3)客户端查看监控项

[root@zabbix-agent ~]# zabbix_agentd -p | grep iostat
iostat                                        [t|0.66]

(4)在服务端安装zabbix-get,查看客户端新增监控项

[root@zabbix-server ~]# yum -y install zabbix-get
[root@zabbix-server ~]# zabbix_get -s 192.168.229.209 -p10050 -k iostat
0.66

(5)在zabbix web界面进行监控项关联

配置--主机--找到对应主机--监控项--创建监控项--命名--键值(iostat)--信息类型(浮点数)--应用集名
监测--最新数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.zabbix报警音报警
(1)前端声音报警

右上角小人(用户)--正在发送信息--勾选

在这里插入图片描述
(2)添加触发器

配置--主机--找到对应主机--触发器--创建触发器--命名--严重性--添加表达式--选择监控项--间隔--结果--添加

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.zabbix邮件报警

(1)配置--动作--启用report--应用

(2)右上角小人(用户)--报警媒介--添加--收件人邮箱地址(推荐使用qq邮箱)

(3)管理--报警媒介类型--email--添加SMTP服务器:smtp.qq.com--端口:465--HELO:qq.com--SMTP电邮:1599840577@qq.com
--SSL/TLS--勾选--用户名称:1599840577@qq.com--密码:授权码(打开邮箱--设置--开启smtp服务--获取授权码--保存配置)

(4)微信关联qq邮箱,实现微信报警
	首先点击进入微信“设置”选项。
	然后点击进入“账号与安全”设置选项。
	再点击进入“更多安全设置”选项。
	接着点击“邮箱地址”设置选项。
	最后输入需要绑定的邮箱地址,点击确定即可完成绑定

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
zabbix官方使用说明文档
5.邮件脚本报警
使用原因:企业使用centos6,zabbix2.*,zabbix没有email报警媒介模块。
(1)关闭zabbix-server上的邮件服务,安装mailx。

[root@zabbix-server ~]# systemctl stop postfix
[root@zabbix-server ~]# systemctl disable postfix
[root@zabbix-server ~]# yum -y install mailx

(2)编辑mailx的配置,指定收件邮箱和用户密码。

[root@zabbix-server ~]# vim /etc/mail.rc
末尾添加:
set from=1599840577@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=1599840577@qq.com
set smtp-auth-password=yuemqwmhdizdbjeg
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
[root@zabbix-server ~]# echo 123 | mail -s test 1599840577@qq.com #测试邮件

(3)zabbix-server编写邮件报警脚本

[root@zabbix-server ~]# yum -y install dos2unix
[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix-server alertscripts]# vim email_notice.sh
添加:
#!/bin/bash
# export UTF-8
FILE=/tmp/mail.txt
echo "$3" > $FILE
dos2unix -k $FILE
/bin/mail -s "$2" $1 < $FILE
[root@zabbix-server alertscripts]# chmod +x email_notice.sh

(4)zabbix web控制台关联邮件报警脚本

管理--报警媒介类型--关闭已有的email报警--右上角“创建媒体类型”

“名称,类型(脚本),脚本名称(必须写对),

参数添加3个:{ALERT.SENDTO}{ALERT.SUBJECT}{ALERT.MESSAGE}”

添加

右上角--小人(用户)--报警媒介--“类型(邮件脚本,收件人:真实邮箱地址)”
添加--更新

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6.微信报警
(1)申请企业微信

我的企业--复制企业ID:ww15f160c1bf39f6b1

应用管理--创建应用--名称:报警机器人--选择部门--创建应用--点开报警机器人

复制:AgentId 1000002,Secret ptoSa9IMqSOinnOJ2Bq6-4i_EBKJbZ8tcG6R6TlhknU

(2)编写python微信报警脚本,并修改企业id和用户密码
复制weixin.py到zabbix-server的/usr/lib/zabbix/alertscripts/下

[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix-server alertscripts]# vim weixin.py
修改:
corpid='ww15f160c1bf39f6b1'	#企业ID
appsecret='ptoSa9IMqSOinnOJ2Bq6-4i_EBKJbZ8tcG6R6TlhknU' #报警机器人密码
agentid=1000002		#报警机器人ID

#!/usr/bin/env python
#-*- coding: utf-8 -*-
import requests
import sys
import os
import json
import logging


logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/tmp','weixin.log'),
filemode = 'a')

corpid='微信企业号corpid'
appsecret='应用的Secret'
agentid=应用的id
#获取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']

#发送消息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken

touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]

params={
"touser": touser,
# "toparty": toparty,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}

req=requests.post(msgsend_url, data=json.dumps(params))
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
[root@zabbix-server alertscripts]# chmod 777 weixin.py
[root@zabbix-server alertscripts]# dos2unix -k weixin.py  #格式转换
[root@zabbix-server alertscripts]# touch /tmp/weixin.log
[root@zabbix-server alertscripts]# chown zabbix:zabbix /tmp/weixin.log #赋权weixin.log
[root@zabbix-server alertscripts]# ./weixin.py ZhangJie(企业微信账号) test 123456  #测试发送微信

(3)zabbix web关联

管理--报警媒介类型--右上角“创建媒体类型”

“名称(微信报警),类型(脚本),脚本名称(必须写对)

参数添加3个:{ALERT.SENDTO}{ALERT.SUBJECT}{ALERT.MESSAGE}”

更新

右上角--小人(用户)--报警媒介--“类型(微信报警,收件人:微信账号)”--添加--更新

(4)修改邮件通知内容
1.配置–动作–Report problems to Zabbix administrators

                          操作:修改默认标题,修改消息内容

主题:Problem: {EVENT.NAME}故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

内容:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

                        恢复操作:修改默认标题,修改消息内容
恢复主题:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

恢复信息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

2.修改后,更新

7.创建图形

配置--主机--web1--图形--右上角“创建图形”--填写“名称”--添加“监控项”
点击最后一行“添加”

查看图形

监测--图形--选择“群组”--选择"主机"--选择“图形名称”

8.创建聚合图形

监测--聚合图形--创建聚合图形--填写聚合图形“名称”--添加--选择新建聚合图
--编辑聚合图形
四、percona模版监控mysql

zabbix模板文件下载
环境:zabbix服务端打开或安装一台mysql,并安装zabbix-agent,修改配置文件指向zabbix服务器

[root@client1-161 ~]# yum -y install zabbix-agent
[root@client1-161 ~]# cd /etc/zabbix/
[root@client1-161 zabbix]# vim zabbix_agentd.conf
Server=192.168.229.161

1.安装php环境
percona需要php环境

[root@client1-161 zabbix]# yum -y install php php-mysql

2.下载软件
注意,安装完成后会有提示模版的路径位置。

[root@client1-161 zabbix]# mkdir -p /data/soft
[root@client1-161 zabbix]# cd /data/soft
[root@client1-161 soft]# wget https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm
[root@client1-161 soft]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
警告:percona-zabbix-templates-1.1.8-1.noarch.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID cd2efd2a: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:percona-zabbix-templates-1.1.8-1 ################################# [100%]

Scripts are installed to /var/lib/zabbix/percona/scripts
Templates are installed to /var/lib/zabbix/percona/templates

3.查看目录
进入安装目录会发现有2个目录,一个是脚本目录,一个是模版目录。

[root@client1-161 soft]# cd /var/lib/zabbix/percona/
[root@client1-161 percona]# tree
.
├── scripts
│   ├── get_mysql_stats_wrapper.sh
│   └── ss_get_mysql_stats.php
└── templates
    ├── userparameter_percona_mysql.conf
    └── zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml

其中脚本目录里有2个脚本,用来获取数据库信息

[root@client1-161 percona]# cd scripts/
[root@client1-161 scripts]# ls
get_mysql_stats_wrapper.sh  ss_get_mysql_stats.php

4.修改get_mysql_stats_wrapper.sh
修改get_mysql_stats_wrapper数据库登陆信息
第19行添加mysql账号密码

[root@client1-161 scripts]# sed -n '19p' get_mysql_stats_wrapper.sh 
    RES=`HOME=~zabbix mysql -uroot -pasd123 -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' 

5.修改ss_get_mysql_stats.php

[root@client1-161 scripts]# sed -n '30,31p' ss_get_mysql_stats.php 
$mysql_user = 'root';
$mysql_pass = 'asd123';

6.复制自定义监控项配置文件到zabbix目录

[root@client1-161 scripts]# cd /var/lib/zabbix/percona/templates/
[root@client1-161 templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
[root@client1-161 templates]# cd /etc/zabbix/zabbix_agentd.d/
[root@client1-161 zabbix_agentd.d]# ls
userparameter_mysql.conf  userparameter_percona_mysql.conf

7.重启agent

[root@client1-161 zabbix_agentd.d]# systemctl restart zabbix-agent 

8.zabbix服务端测试key

[root@zabbix-server ~]# zabbix_get -s 192.168.229.161 -k MySQL.Sort-scan
16

9.导入模版

配置--模板--导入--浏览导入文件--勾选“聚合图形”--最后“导入”

10.主机链接模版

配置--主机--创建主机--选择模板
五、自定义模版监控nginx状态

环境:打开或安装nginx服务器,并安装zabbix-agent,修改配置文件指向zabbix服务器。

[root@zabbix-agent ~]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
[root@zabbix-agent ~]# yum -y install nginx

1.开启监控页面并访问测试

[root@zabbix-agent ~]# vim /etc/nginx/conf.d/default.conf
server字段添加:
   location /nginx_status {
       stub_status on;
       access_log off;
   }
[root@zabbix-agent ~]# systemctl restart nginx
[root@zabbix-agent ~]# curl 127.0.0.1/nginx_status/
Active connections: 1 
server accepts handled requests
 6 6 6 
Reading: 0 Writing: 1 Waiting: 0 

2.准备nginx监控状态脚本

[root@zabbix-agent ~]# cd /etc/zabbix/zabbix_agentd.d
[root@zabbix-agent zabbix_agentd.d]# vim nginx_monitor.sh 
#!/bin/bash
NGINX_COMMAND=$1
CACHEFILE="/tmp/nginx_status.txt"
CMD="/usr/bin/curl http://127.0.0.1/nginx_status/"
if [ ! -f $CACHEFILE  ];then
   $CMD >$CACHEFILE 2>/dev/null
fi
# Check and run the script
TIMEFLM=`stat -c %Y $CACHEFILE`
TIMENOW=`date +%s`

if [ `expr $TIMENOW - $TIMEFLM` -gt 60 ]; then
    rm -f $CACHEFILE
fi
if [ ! -f $CACHEFILE  ];then
   $CMD >$CACHEFILE 2>/dev/null
fi

nginx_active(){
         grep 'Active' $CACHEFILE| awk '{print $NF}'
         exit 0;
}
nginx_reading(){
         grep 'Reading' $CACHEFILE| awk '{print $2}'
         exit 0;
}
nginx_writing(){
         grep 'Writing' $CACHEFILE | awk '{print $4}'
         exit 0;
}
nginx_waiting(){
         grep 'Waiting' $CACHEFILE| awk '{print $6}'
         exit 0;
}
nginx_accepts(){
         awk NR==3 $CACHEFILE| awk '{print $1}' 
         exit 0;
}
nginx_handled(){
         awk NR==3 $CACHEFILE| awk '{print $2}' 
         exit 0;
}
nginx_requests(){
         awk NR==3 $CACHEFILE| awk '{print $3}'
         exit 0;
}

case $NGINX_COMMAND in
    active)
        nginx_active;
        ;;
    reading)
        nginx_reading;
        ;;
    writing)
        nginx_writing;
        ;;
    waiting)
        nginx_waiting;
        ;;
    accepts)
        nginx_accepts;
        ;;
    handled)
        nginx_handled;
        ;;
    requests)
        nginx_requests;
        ;;
    *)
echo 'Invalid credentials';
exit 2;
esac
[root@zabbix-agent zabbix_agentd.d]# chmod +x nginx_monitor.sh

3.编写zabbix监控配置文件

[root@zabbix-agent zabbix_agentd.d]# vim nginx_status.conf
UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh $1
[root@zabbix-agent zabbix_agentd.d]# systemctl restart zabbix-agent
[root@zabbix-agent zabbix_agentd.d]# touch /tmp/nginx_status.txt
[root@zabbix-agent zabbix_agentd.d]# chown zabbix:zabbix /tmp/nginx_status.txt  #修改缓存文件权限

4.zabbix服务端使用zabbix_get取值

[root@zabbix-server ~]# zabbix_get -s 192.168.229.167 -k nginx_status[accepts]
7

5.导入模版

配置--模板--导入--选取文件--勾选聚合图形--导入

6.链接模版

配置--主机--创建主机--主机名称--群组--选择下面的模板--链接指示器处选择导入的模板添加

7.查看数据

8.参考web1添加其它nginx服务器

配置--主机--web1--点击web1--选择“全克隆”--填写新nginx的ip
六、自动发现与注册主机的配置

1.创建自动发现规则
配置- - 自动发现- -创建发现规则- -自定义名称- -填写IP范围- -更新间隔- -添加检查(zabbix客户端,端口,键值system.uname)- -添加- -添加
在这里插入图片描述
在这里插入图片描述
2.创建自动发现动作
配置- -动作- -事件源(自动发现)- -创建动作- -自定义名称- -添加新的触发条件(选择刚才创建的自动发现规则)- -内部的添加- -操作(添加三个操作)- -添加
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.验证
监测- -自动发现
在这里插入图片描述
4.自动注册的配置
如果启用自动注册,需要把刚才的自动发现规则停用。
在这里插入图片描述
5.修改被发现agent端的配置文件

[root@zabbix-agent ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.229.187
ServerActive=192.168.229.187
HostMetadata=Linux
HostMetadataItem=system.uname
[root@zabbix-agent ~]# systemctl restart zabbix-agent

6.创建自动注册动作
配置- -动作- -事件源选择自动注册- -创建动作- -自定义名称- -触发条件(主机元数据、包含、Linux)- -内部添加- -操作里添加新的三个操作- -添加
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7.验证自动注册
配置- -主机
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值