zabbix-server部署
准备两台服务器
zabbix-server:192.168.188.139
zabbix-agent:192.168.188.140
初始化操作:两台虚拟机均关闭防火墙及selinux
systemctl stop firewalld && systemctl disable firewalld
sed -i ‘/^SELINUX=/c SELINUX=disabled’ /etc/selinux/config
setenforce 0

zabbix-server操作

1、安装zabbix安装包仓库

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
安装zabbix-server-mysql zabbix-agent
yum -y install zabbix-server-mysql zabbix-agent
安装zabbix前端
yum -y install centos-release-scl
启用zabbix-frontend存储库
vim /etc/yum.repos.d/zabbix.repo
……
enabled=1
……
安装zabbix前端包
yum -y isntall zabbix-web-mysql-scl zabbix-apache-conf-scl
安装数据库,并且改密码
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
打开57关闭80
yum -y install yum-utils
yum-config-manager —enable mysql57-community #打开57版本
yum-config-manager —disable mysql80-community #关闭80版本
安装数据库:yum -y install mysql-community-server
systemctl start mysqld
修改密码,创建授权用户zabbix,创建zabbix库
mysqladmin -uroot -p’密码’ password ‘新密码’
mysql -uroot -p’新密码’ -e “grant all on zabbix. to ‘zabbix’@’%’ identified by ‘密码’ ;”
mysql -uroot -p’新密码’ -e “create database zabbix character set utf8 collate uft8_bin;”
数据库导入
zcat /usr/share/doc/zabbix-server-mysql
/create.sql.gz |mysql -uroot -p zabbix(库名)
修改zabbix配置文件,设置用于登录数据库的账户及密码(mysql创建的用户及密码一致)
vim /etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBUser=密码(此密码为创建用户时指定的密码)
修改前端配置PHP
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
将此php_value[date.timezone] = Asia/Shanghai注释修改掉,并且将时区改为Asia/Shanghai
启动程序
systemctl start zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
浏览器访问
http://ip/zabbix
用户默认用户为Admin,默认密码为zabbix,用户名及密码都区分大小写
zabbix-agent操作
获取zabbix包仓库
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum -y install zabbix-agent
修改zabbix-agent配置文件
vim /etc/zabbix/zabbix_agent.conf
Server=192.168.188.140
ServerActive=192.168.188.140
Hostname=Zabbix_server
UnsafeUserParameters=1
安装nginx,开启nginx及zabbix-agent

如何在zabbix-server机器上面使用另一台mysql服务器

首先部署mysql服务器
安装mysql-community-server,其次修改密码,创建登录用户,导入create.sql.gz
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
打开57关闭80
yum -y install yum-utils
yum-config-manager —enable mysql57-community #打开57版本
yum-config-manager —disable mysql80-community #关闭80版本
安装数据库:yum -y install mysql-community-server
systemctl start mysqld
修改密码,创建授权用户zabbix,创建zabbix库
mysqladmin -uroot -p’密码’ password ‘新密码’
mysql -uroot -p’新密码’ -e “grant all on zabbix. to ‘zabbix’@’%’ identified by ‘密码’ ;”
mysql -uroot -p’新密码’ -e “create database zabbix character set utf8 collate uft8_bin;”
数据库导入
zcat /usr/share/doc/zabbix-server-mysql
/create.sql.gz |mysql -uroot -p zabbix(库名)

zabbix-server正常部署安装,其次修改配置文件/etc/zabbix/zabbix_server.conf
DBHost,DBName,DBUser,DBPassword(此时关于数据库的信息均填写另一台部署好的mysql,)
其次修改/etc/zabbix/web/zabbix.conf.php文件
$DB[‘TYPE’] = ‘MYSQL’; #类型不用更改

$DB[‘SERVER’] = ‘192.168.188.144’; #部署好的mysql的ip
$DB[‘PORT’] = ‘0’; #端口可不用修改0代表默认
$DB[‘DATABASE’] = ‘zabbix’; #部署好的mysql的库名
$DB[‘USER’] = ‘zabbix’; #给部署好的库名授权的用户
$DB[‘PASSWORD’] = ‘123’; #授权用户的密码
重启zabbix-server

远程导入数据库 zcat /usr/share/doc/zabbix-server-mysql-5.0.23/create.sql.gz | mysql -u -p -h 192.168.188.145 -P 3306 server

报警媒介:


告警机制

(企业微信 电话 邮件 短信 钉钉 …..)

一:企业微信


1.下载安装(手机版)
2.注册账户,并创建一个企业(企业的名字自定义),给企业添加员工
3.找到我的企业===>记录企业ID:wwf59d011ead30f194
4.创建部门===>记录部门ID: 16
5.创建应用===>记录应用ID: 1000011
6.Secret===>EPwfje0H-OiXwIs-W60Vtw-bh_IkabK0VhSIzxDpoCU
#!/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 = ‘EPwfje0H-OiXwIs-W60Vtw-bh_IkabK0VhSIzxDpoCU’ #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’:16, #部门ID
‘msgtype’:”text”,
‘agentid’:”1000011”, #应用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])


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

1.创建报警媒介
image.png
填写完成后点击添加

image.png

2.创建用户(并不是必须要创建,可以直接使用管理员账户 Admin 对应用户组),让这个关于关联报警媒介,添加收件人
image.png
选择用户填写别名,选择群组,均可自己创建,之后选择报警媒介为上图创建的媒介
image.png
image.png

3.创建动作,动作要关联触发器(操作(用户和组已经对应),恢复操作,更新操作)(触发器提前创建好,要监控的事项)
image.png
image.png
添加动作之后,添加操作,选择用户群组,用户,点击Add
image.png
模拟报警的产生(验证企业微信是否可以收到报警)

模拟故障的产生

IKKBTCLUCTGYJZKC



二:邮件报警


1.在zabbix-server端安装软件:mailx (yum -y install mailx)

2.配置 /etc/mail.rc (在最后添加)注意修改自己的相关信息
set from=feng18860279810@163.com (邮箱地址)
set smtp=smtp.163.com
set smtp-auth-user=feng18860279810@163.com (邮箱地址)
set smtp-auth-password=KVELMMFAZOWASXGE (邮箱地址授权密码)
set smtp-auth=login

3.测试

方式1:mailx -s “邮件标题” 收件箱Email < 包含正文的文件
方式2:cat 包含正文的文件 | mailx -s “邮件标题” 收件箱Email
方式3:echo “正文内容” | mailx -s “邮件标题” 收件箱Email
方式4:mailx -s “邮件标题” 收件箱Email,回车按CTRL+D发送

4.在zabbix-server上创建发送脚本(sendmail.sh)
[root@zabbix-server alertscripts]# cat sendmail.sh
echo “$3” | sed s/‘\r’//g | mailx -s “$2” $1
[root@zabbix-server alertscripts]# chmod 777 sendmail.sh
[root@zabbix-server alertscripts]# chown zabbix.zabbix sendmail.sh

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

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

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

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

三:电话告警

1、创建睿象云账户,登录选择智能告警平台
image.png
点击集成,选择使用的报警工具image.png
设置创建的报警应用的信息,保留key
image.png
接着在服务端安装ca,根据提示创建
image.png
image.png
创建完成后点击配置,新建分派
image.png
填写相关信息,然后保存
image.png
之后到监控界面,添加动作,选择用户(超级管理员权限),选择媒介为Cloud Alert Media

2、需要触发的报警信息,模拟报警

自动发现功能

1.在新服务器上部署(安装agent sender;agent配置)
yum -y install zabbix-agent zabbix-sender nginx
修改zabbix-agent配置,将不同主机的HostName不同

2.在zabbix-server的web界面添加自动发现规则
image.png
image.png
3.验证,在检测-自动发现中查看是否发现新主机
image.png
利用自动发现功能,实现对主机的监控(利用自动发现发现的主机)

zabbix-server的web界面配置

1.模板: 创建一个空白模板(添加监控项,触发器,图形…)
A:关联已有的模板(创建模板(模板中添加监控项,触发器及图形),然后到动作中选择(Discovery actions),然后创建动作)
image.png
image.png
添加操作添加足迹,及主机群组,和关联模板(上述创建的模板)
随后创建动作,可选择模板中的触发器,如果主机在模板中,那么达到要求的话,在模板中的均会发生报警
image.png
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