zabbix监控系统进阶专题篇(企业微信报警,邮箱报警,电话报警,监控数据库,监控磁盘性能)

一:zabbix配置文件详解

1. zabbix-server配置文件

Zabbix 日志

默认用文件记录,也可以发送给我们的 rsyslog 日志记录系统,如果我们
选择默认,则日志存放在LogFile=/var/log/zabbix/zabbix_server.log
中,也可以自己设置。

在这里插入图片描述

日志的滚动

默认值为1,表示滚动。我们设为0则表示不滚动。当数据特别多的时候,我们
也可以设置成为1,然后在 Maximum size of log file in MB 设置当数据
文件最大到多少时会自动滚动。

在这里插入图片描述

日志的级别

一共有6个级别。我们可以根据自己的需要来设置级别。其中0表示输出最少的信息,
5表示输出最详细的信息,默认值为3,设置为3的话就表示,0123四个级别
都显示。考虑到生产系统中的压力时,这里的信息,如果没有必要的话,越简单
越好,只要在出错的时候,我们可以依据其进行排错即可。

在这里插入图片描述

数据库相关的设置

DBHost=192.168.37.111       #数据库对外的主机
DBName=zabbix               #数据库名称
DBUser=zabbix               #数据库用户
DBPassword=keer             #数据库密码
DBPort=3306                 #数据库启动端口

zabbix监控图形中出现乱码解决方案

[root@zabbix-server zabbix]# cd /usr/share/zabbix/assets/fonts/
[root@zabbix-server fonts]# mv graphfont.ttf graphfont.ttf.bak
上传新的字符集文件
[root@zabbix-server fonts]# mv simkai.ttf graphfont.ttf

监控网络流量注意的事项

监控项:
在这里插入图片描述

[] 就是需要参数的意思,里面的值即为参数
<> 为不可省略的
if  表示是接口名;
<mode> 表示是那种模式,包括但不限于:packets()bytes(字节)errors(错误)dropped(丢包)、overuns等等(上述内容通过 ifconfig 查看)。

在这里插入图片描述

命令方式查看:
[root@zabbix-server zabbix]# zabbix_get -s agent-ip -p 10050 -k "net.if.in[eth0,packets]"

二:用户参数(zabbix-agent)

1. 介绍

自定义用户参数,也就是自定义key,有时,你可能想要运行一个代理检查,
而不是Zabbix的预定义,你可以编写一个命令来检索需要的数据,并将其
包含在代理配置文件("UserParameter"配置参数)的用户参数中。

2. 语法格式

UserParameter=<key>,<command>
A user parameter also contains a key 一个用户参数也包含一个键
The key will be necessary when configuring an item 在配置监控项时,
key是必需的
Note: Need to restart the agent  注意:需要重新启动agent 服务

3. 使用方法

自己需要查找的参数的命令,获得使用的内存值
[root@zabbix-agent ~]# free | awk  '/^Mem/{print $3}'
修改配置文件,把查找参数的命令设为用户参数
[root@zabbix-agent ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@zabbix-agent zabbix_agentd.d]# cat memory_usage.conf 
UserParameter=memory.used,free | awk '/^Mem/{print $3}'
重启agent 服务
[root@zabbix-agent ~]# systemctl restart zabbix-agent
在zabbix-server端使用命令查询
[root@zabbix-server ~]# zabbix_get -s 192.168.182.131 -p 10050 -k "memory.used"
153828

在监控上,设置一个item监控项,使用这个用户参数
配置–>主机–>agent–>监控项–>创建监控项
在这里插入图片描述

4.用法升级

① 命令行查询参数的命令
② 修改配置文件,把查找参数的命令设为用户参数
[root@zabbix-agent zabbix_agentd.d]# ls
memory_usage.conf  

[root@zabbix-agent zabbix_agentd.d]# vim memory_usage.conf 
UserParameter=memory.stats[*],cat /proc/meminfo | awk '/^$1/{print $$2}'

在这里插入图片描述

重启服务
[root@zabbix-agent zabbix_agentd.d]# systemctl restart zabbix-agent
注意:$$2:表示不是前边位置参数的$1,而是awk 的参数$2
注意:$1是调用前边的[*],位置参数,第一个参数
在zabbix-server 端,查询使用这个用户参数的key

在这里插入图片描述

传参:
[root@zabbix-server ~]#yum -y install zabbix-get
[root@zabbix-server ~]#cat /proc/meminfo
[root@zabbix-server ~]# zabbix_get -s 192.168.182.129 -p 10050 -k "memory.stats[MemTotal]"
995684
[root@zabbix-server ~]# zabbix_get -s 192.168.182.129 -p 10050 -k "memory.stats[MemFree]"
233732
[root@zabbix-server ~]# zabbix_get -s 192.168.182.129 -p 10050 -k "memory.stats[Buffers]"
2104
在监控上,设置一个item监控项,使用这个用户参数
① 添加Memory Total 的item监控项,使memory.stats[MemTotal]的用户参数
②添加Memory Free 的item监控项,使用memory.stats[MemFreel]的用户参数
上面2个监控项的graph 图形

① memory total
在这里插入图片描述
② memory free
在这里插入图片描述
在这里插入图片描述

三:zabbix监控php-fpm

1. 下载安装php-fpm

[root@zabbix-agent ~]# yum -y install php-fpm php

2. php-fpm进行配置,(修改一下内容)

[root@zabbix-agent ~]# vim /etc/php-fpm.d/www.conf
user = nginx	            39行
group = nginx               41行
pm.status_path = /php-fpm-status  #php-fpm的状态监测页,121行  也可以是/status
ping.path = /ping      #ping 接口,存活状态是否ok,133行
ping.response = pong    #响应内容pong,138

3. 启动php-fpm

[root@zabbix-agent ~]# systemctl start php-fpm

4. 安装nginx并修改nginx配置文件,将以下的内容添加到配置文件

[root@zabbix-agent ~]# yum -y install nginx
[root@zabbix-agent ~]#cd /etc/nginx
[root@zabbix-agent ~]#rm -rf nginx.conf
[root@zabbix-agent ~]#cp nginx.conf.default nginx.conf
打开php相关的配置,并增加一个PHP的配置
[root@zabbix-agent ~]# vim /etc/nginx/nginx.conf
location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
    }
location ~* /(php-fpm-status|ping) {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $fastcgi_script_name;
    include        fastcgi_params;
    access_log off;
    }

5. 启动nginx

[root@zabbix-agent ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@zabbix-agent ~]# systemctl restart nginx或者nginx -s reload

6.查询

[root@zabbix-agent nginx]# curl 192.168.182.131/php-fpm-status
pool:                 www
process manager:      dynamic
start time:           27/Sep/2020:16:46:32 +0800
start since:          5
accepted conn:        1
listen queue:         0
max listen queue:     0
listen queue len:     128
idle processes:       4
active processes:     1
total processes:      5
max active processes: 1
max children reached: 0
slow requests:        0
注意:
pool – fpm池子名称,大多数为www
process manager – 进程管理方式,值:static, dynamic or ondemand. dynamic
start time – 启动日期,如果reload了php-fpm,时间会更新
start since – 运行时长
accepted conn – 当前池子接受的请求数
listen queue – 请求等待队列,如果这个值不为0,要增加FPM的进程数量
max listen queue – 请求等待队列最高的数量
listen queue len – socket等待队列长度
idle processes – 空闲进程数量
active processes – 活跃进程数量
total processes – 总进程数量
max active processes – 最大的活跃进程数量(FPM启动开始算)
max children reached - 进程最大数量限制的次数,如果这个数量不为0,那说明你的最大进程数量太小了,请改大一点。
slow requests – 启用了php-fpm slow-log,缓慢请求的数量

7. 设置用户参数

[root@zabbix-agent nginx]# cd /etc/zabbix/zabbix_agentd.d/
[root@zabbix-agent zabbix_agentd.d]# vim php.conf
UserParameter=php_status[*],curl -s http://192.168.182.131/php-fpm-status | awk '/$1/{print $$NF}'
[root@zabbix-agent zabbix_agentd.d]# systemctl restart zabbix-agent

8. 在zabbix-server 端,查询使用这个用户参数的key

[root@zabbix-server ~]# zabbix_get -s 192.168.182.131 -p 10050 -k "php_status[idle]"
4
[root@zabbix-server ~]# zabbix_get -s 192.168.182.131 -p 10050 -k "php_status[max active]"
1

9. zabbix-server的web界面展示

可以直接使用模板:
http://www.blackmed.cn/zabbix/xingdian-export_templates-PHP.xml
也可以直接去进行监控项的创建

四:微信报警

创建报警媒介---创建用户---用户关联报警媒介---创建动作
企业微信部署---下载企业微信---创建企业---创建企业应用

1. 注册企业微信

在这里插入图片描述
注册完成企业微信后,自己创建一个企业,并邀请员工到企业
在这里插入图片描述

2.创建部门,并在部门内添加员工

在这里插入图片描述

3.创建企业应用

在这里插入图片描述

4.搜集部门ID企业ID应用ID和秘钥等信息(修改到下面的脚本中)

部门id=2
机器人应用id= 1000003
机器人Secret= hFHyq-dtbMGYaufaYT6fkcWW5BUp22krs_iXZRjaWRM
企业ID:ww59af41a61e5bfcf2
帐号:ChenShuai

5. 准备微信脚本

把脚本放在zabbix-server服务器上,/usr/lib/zabbix/alertscripts/wechat.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib,urllib2,json
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
class WeChat(object):
        __token_id = ''
        # init attribute
        def __init__(self,url):
                self.__url = url.rstrip('/')
                self.__corpid = 'wwf59d011ead30f194'(修改企业id)
                self.__secret = '4kO-TrciubxGuKfJG-WsynbGDhnjRwGX3LdZWSGN'(修改机器人secret)
        # Get TokenID
        def authID(self):
                params = {'corpid':self.__corpid, 'corpsecret':self.__secret}
                data = urllib.urlencode(params)
                content = self.getToken(data)
                try:
                        self.__token_id = content['access_token']
                        # print content['access_token']
                except KeyError:
                        raise KeyError
        # Establish a connection
        def getToken(self,data,url_prefix='/'):
                url = self.__url + url_prefix + 'gettoken?'
                try:
                        response = urllib2.Request(url + data)
                except KeyError:
                        raise KeyError
                result = urllib2.urlopen(response)
                content = json.loads(result.read())
                return content
        # Get sendmessage url
        def postData(self,data,url_prefix='/'):
                url = self.__url + url_prefix + 'message/send?access_token=%s' % self.__token_id
                request = urllib2.Request(url,data)
                try:
                        result = urllib2.urlopen(request)
                except urllib2.HTTPError as e:
                        if hasattr(e,'reason'):
                                print 'reason',e.reason
                        elif hasattr(e,'code'):
                                print 'code',e.code
                        return 0
                else:
                        content = json.loads(result.read())
                        result.close()
                return content
        # send message
        def sendMessage(self,touser,message):
                self.authID()
                data = json.dumps({
                        'touser':touser,
                        'toparty':11,(修改部门id)
                        'msgtype':"text",
                        'agentid':"1000002",(修改机器人应用id)
                        'text':{
                                'content':message
                        },
                        'safe':"0"
                },ensure_ascii=False)
                response = self.postData(data)
                print response

if __name__ == '__main__':
        a = WeChat('https://qyapi.weixin.qq.com/cgi-bin')
        a.sendMessage(sys.argv[1],sys.argv[3])

6. 修改权限

[root@xingdian ~]# chmod 777 /usr/lib/zabbix/alertscripts/wechat.py
[root@xingdian ~]# chown zabbix.zabbix /usr/lib/zabbix/alertscripts/wechat.py

7. 测试脚本

[root@xingdian ~]# /usr/lib/zabbix/alertscripts/wechat.py ZhuangYao test test
{u'invaliduser': u'', u'errcode': 0, u'errmsg': u'ok. Warning: wrong json format. '}
注意:ZhuangYao是在企业微信中的用户名,手机上收到信息说明脚本正常使用。

在这里插入图片描述

8.在zabbix-server的dashborad界面上创建报警媒介

在这里插入图片描述
在这里插入图片描述

名称:wechat
类型:脚本
脚本名称:wechat.py
脚本参数:{ALERT.SENDTO}{ALERT.SUBJECT}{ALERT.MESSAGE}

9.在管理员中户中添加报警媒介

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

类型:选择创建好的wechat
收件人:在企业微信中用户名

在这里插入图片描述

10. 创建动作,微信报警

在这里插入图片描述
在这里插入图片描述

名称:自定义
条件:使用触发器

在这里插入图片描述
定义操作
在这里插入图片描述

邮件内容:
默认接收人:故障{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}
注意:修改触发器的值查看报警信息

在这里插入图片描述

一:企业微信流程总结
1.下载安装(手机版)
2.注册账户,并创建一个企业(企业的名字自定义),给企业添加员工
3.找到我的企业===>记录企业ID:wwf59d011ead30f194
4.创建部门===>记录部门ID: 16
5.创建应用===>记录应用ID: 1000011  
Secret:EPwfje0H-OiXwIs-W60Vtw-bh_IkabK0VhSIzxDpoCU

主机群组  主机  监控项  触发器  报警媒介  用户 动作  (企业微信)

1.创建报警媒介
2.创建用户(并不是必须要创建,可以直接使用管理员账户 
 Admin 对应用户组),让这个关于关联报警媒介,添加收件人
3.创建动作,动作要关联触发器(操作(用户和组已经对应),恢复操作,
更新操作)
模拟报警的产生(验证企业微信是否可以收到报警)

五:邮件报警

1.在zabbix-server端安装软件:

mailx  (yum -y install mailx)

2.配置 /etc/mail.rc

(在最后添加)注意修改自己的相关信息,复制不能有空格
set from= chen1366526727@163.com  (邮箱地址)
set smtp=smtp.163.com SMTP服务器
set smtp-auth-user= chen1366526727@163.com  (邮箱地址)
set smtp-auth-password= KGURAWFHASVHSNXY  (邮箱地址授权密码)
set smtp-auth=login

在这里插入图片描述

3.测试

方式1:mailx -s "邮件标题" 收件箱Email < 包含正文的文件
[root@zabbix-server ~]# mailx -s "ceshi" chen1366526727@163.com  < /etc/passwd
方式2:cat 包含正文的文件 | mailx -s "邮件标题" 收件箱Email
[root@zabbix-server ~]# cat /etc/passwd |mailx -s "hello" chen1366526727@163.com
方式3:echo "正文内容" | mailx -s "邮件标题" 收件箱Email
[root@zabbix-server ~]# echo "word" | mailx -s "haha" chen1366526727@163.com

4.在zabbix-server上创建发送脚本(sendmail.sh)网易邮箱的脚本

[root@zabbix-server]# cd /usr/lib/zabbix/alertscripts
[root@zabbix-server alertscripts]# vim sendmail.sh
echo$3|sed s/’\r’//g | mailx -s  “$2$1     
$3是文件的正文内容,sed替换,将’\r’替换为空,$2是邮件主题,$1是邮箱地址
[root@zabbix-server alertscripts]# chmod 777 sendmail.sh
[root@zabbix-server alertscripts]# chown zabbix.zabbix sendmail.sh

5.在zabbix-server的web界面创建对应的报警媒介(跟企业微信一样,就是脚本换了)

在这里插入图片描述

6.创建动作,让动作关联触发器(触发器需要事先创建)

在这里插入图片描述
在这里插入图片描述

7.创建用户,让用户关联报警媒介(默认我们admin用户)

在这里插入图片描述

8.根据触发器对应的监控项模拟故障产生

Systemctl  stop nginx 

六,zabbix关联睿象云,电话报警

1、免费注册一个睿象云账号,首次注册会送几次免费语音通话此数。

在这里插入图片描述

2、选择zabbix

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@localhost ~]# cd /usr/lib/zabbix/alertscripts/
[root@localhost alertscripts]# wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-4.0.1.tar.gz
[root@localhost alertscripts]# tar -xzf ca_zabbix_release-4.0.1.tar.gz
[root@localhost alertscripts]# cd cloudalert/bin
[root@localhost bin]# bash install.sh 8879731ca7cb49878d22f646b3040407
请输入Zabbix管理地址:http://192.168.242.136/zabbix
Check connection success!
请输入Zabbix管理员账号:Admin
请输入Zabbix管理员密码:zabbix
...
Create new action success!
Install zabbix agent success!
关联成功了,会在zabbix-web自动创建	用户:Cloud Alert User 动作:Cloud Alert Action
关联成功后我们什么都不用做,模拟报警产生,会自动通过睿象云电话通知我们报警产生

3、创建分派策略和通知策略

在这里插入图片描述
在这里插入图片描述
我们随便创建一个监控项,触发器,模拟报警产生,就会有电话通知我们产生了报警。

六:自动发现(Network Discovery )

1.介绍

网络发现:zabbix server扫描指定网络范围内的主机;
网络发现是zabbix 最具特色的功能之一,它能够根据用户事先定义的规则自动添加监控的
主机或服务等。

2. 优点

加快Zabbix部署
简化管理
在快速变化的环境中使用Zabbix,而不需要过度管理 

3. 发现方式

ip地址范围;
可用服务(ftp, ssh, http, ...)
zabbix_agent的响应;

4. 网络发现通常包含两个阶段

① discovery:
Zabbix定期扫描网络发现规则中定义的IP范围;
② actions:网络发现中的事件可以触发action,从而自动执行指定的操作,
把discvery events当作前提条件;
添加/删除主机
启用/禁用host
向组中添加主机
移除组中的主机
从模板链接主机或取消链接

5. 部署自动发现

注意:新机器
① 安装agent 段的包
yum -y install zabbix-agent zabbix-sender
② 设置agent 配置,可以把之前设置好的none1的配置传过来
vim /etc/zabbix/zabbix_agentd.conf
Hostname=chenshuai #只需修改hostname
zabbix用户提权
[root@zabbix-agent-none2 ~]# visudo  #修改sudo的配置,添加如下信息
#Defaults !visiblepw
root    ALL=(ALL)       ALL         92行
zabbix  ALL=(ALL)  NOPASSWD: ALL      93行
重启服务
[root@zabbix-agent-none2 ~]# systemctl restart zabbix-agent

设置自动发现规则discovery

配置--自动发现--创建自动发现规则
注释:在zabbix-server端
[root@zabbix-server ~]#zabbix_get -s 192.168.182.131 -p 10050 -k "system.hostname"
zabbix-agent

在这里插入图片描述

6.自动发现成功(在检测中查看)

在这里插入图片描述

7. 设置自动发现discovery 的动作action

① 设置A条件,自动发现规则=test net
② 设置B条件,自动发现状态=up

8. 添加主机到监控

c) 配置action 完成,默认是disabled 停用的,如果不是停用的,也需要
再次选择启动,激活一下。
d) 启用动作,查看效果,确实已经生效,添加主机成功,模板链接成功
注意:
如果自己需要添加的主机已经扫描添加完成,就可以关闭网络扫描了,因为
太耗资源。

9,部署总结

1.在新服务器上部署(安装agent sender;agent配置)
2.在zabbix-server的web界面添加自动发现规则
3.验证,在检测-自动发现中查看是否发现新主机
利用自动发现功能,实现对主机的监控(利用自动发现发现的主机)
zabbix-server的web界面配置
1.模板: 创建一个空白模板(添加监控项,触发器,图形...)
A:关联已有的模板
B:手动在该模板中添加数据
2动作:条件 (IP地址,自动发现检测) 操作:主机 主机群组 关联模板
注意:在新的服务器(被监控的服务器)上安装nginx(因为监控项中有对80端口的监控),安装完成后启动。

总结 (zabbix的监控  监控内容的获取)https://www.zabbix.com/documentation/5.0/zh/manual
基本监控流程: 
主机群组--主机(自动发现)--监控项(监控项模板[官方文档https://www.zabbix.com/]、自定义key[zabbix-agent配置])--触发器[官方文档https://www.zabbix.com/]--图形
模板:系统自带   手动创建
(平时也可使用模板对主机进行监控)
告警机制:
主机群组--主机--监控项--触发器--报警媒介--用户--动作  (顺序可以变化,只要做到相互关联即可)
企业微信
邮件报警
电话报警
Trigger actions:配置告警,当触发触发器的时候,通过配置动作,告知我们管理员,使用那种媒介都可以
Discovery actions:自动发现功能相关联 配置了自动发现后,可以使用该动作,来完成发现主机后的操作(发送消息、添加主机、添加主机群组、发送命令、关联模板)

自动发现:
主机群组--自动发现主机--模板--动作(Discovery actions)--报警媒介--用户--动作(Trigger actions)  能够将自动发现的主机发送故障后,通知管理员
监控的内容: 监控访问延迟 监控服务存活状态(nginx、php、tomcat、es、kibana、mysql....) cpu mem disk  监控mysql主从状态 disk I/O .....
在企业中我们只监控有意义的数据,(怎样去获取监控内容)因为有自定义key
【腾讯文档】zabbix监控数据库mysql实战 https://docs.qq.com/doc/DSmNRQU1qUFlPVlJw
【腾讯文档】zabbix监控磁盘性能实战 https://docs.qq.com/doc/DSkFGTG9Gd3d1TUtv

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenshuai199533

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值