默认用文件记录,也可以发送给我们的 rsyslog 日志记录系统,如果我们 选择默认,则日志存放在LogFile=/var/log/zabbix/zabbix_server.log 中,也可以自己设置。日志的滚动
默认值为1,表示滚动。我们设为0则表示不滚动。当数据特别多的时候,我们 也可以设置成为1,然后在 Maximum size of log file in MB 设置当数据 文件最大到多少时会自动滚动。日志的级别
一共有6个级别。我们可以根据自己的需要来设置级别。其中0表示输出最少的信息, 5表示输出最详细的信息,默认值为3,设置为3的话就表示,0、1、2、3四个级别 都显示。考虑到生产系统中的压力时,这里的信息,如果没有必要的话,越简单 越好,只要在出错的时候,我们可以依据其进行排错即可。数据库相关的设置
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 表示是接口名;表示是那种模式,包括但不限于: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=3. 使用方法, A user parameter also contains a key 一个用户参数也包含一个键 The key will be necessary when configuring an item 在配置监控项时, key是必需的 Note: Need to restart the agent 注意:需要重新启动agent 服务
自己需要查找的参数的命令,获得使用的内存值
[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–>监控项–>创建监控项
① 命令行查询参数的命令
② 修改配置文件,把查找参数的命令设为用户参数
[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
[root@zabbix-agent ~]# yum -y install php-fpm php2. 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-fpm4. 安装nginx并修改nginx配置文件,将以下的内容添加到配置文件
[root@zabbix-agent ~]# yum -y install nginx
[root@zabbix-agent ~]# vim /etc/nginx/nginx.conf
location ~ .php$ {
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 reload6.查询
[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]" 19. zabbix-server的web界面展示
可以直接使用模板: http://www.blackmed.cn/zabbix/xingdian-export_templates-PHP.xml 也可以直接去进行监控项的创建四:微信报警
创建报警媒介---创建用户---用户关联报警媒介---创建动作 企业微信部署---下载企业微信---创建企业---创建企业应用1. 注册企业微信
注册完成企业微信后,自己创建一个企业,并邀请员工到企业
部门id=2 机器人应用id= 1000003 机器人Secret= hFHyq-dtbMGYaufaYT6fkcWW5BUp22krs_iXZRjaWRM 企业ID:ww59af41a61e5bfcf2 帐号:ChenShuai5. 准备微信脚本
把脚本放在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.py7. 测试脚本
[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=login3.测试
方式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.com4.在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.sh5.在zabbix-server的web界面创建对应的报警媒介(跟企业微信一样,就是脚本换了) 6.创建动作,让动作关联触发器(触发器需要事先创建)
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、创建分派策略和通知策略
我们随便创建一个监控项,触发器,模拟报警产生,就会有电话通知我们产生了报警。
网络发现: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-agent6.自动发现成功(在检测中查看) 7. 设置自动发现discovery 的动作action
① 设置A条件,自动发现规则=test net ② 设置B条件,自动发现状态=up8. 添加主机到监控
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



