1.关闭防火墙、关闭SELINUX
systemctl stop firewalld.servicesetenforce 0
2.
配置mysql源
#下载MySQL源wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm#安装依赖环境yum -y install gcc-c++ mysql-devel net-snmp-devel libevent-devel#配置MySQL源yum -y install mysql80-community-release-el7-5.noarch.rpm
3.
下载MySQL和zabbix
#下载zabbixwget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.1.tar.gz#下载MySQLwget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar
4.
解压并安装下载好的MySQL安装包
#创建MySQL目录mkdir /usr/local/mysql#解压MySQL安装包tar xf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar -C /usr/local/mysql#移动到mysql目录cd /usr/local/mysql/#RPM方式安装MySQLrpm -ivh mysql-community-common-8.0.28-1.el7.x86_64.rpm --force --nodepsrpm -ivh mysql-community-libs-8.0.28-1.el7.x86_64.rpm --force --nodepsrpm -ivh mysql-community-libs-compat-8.0.28-1.el7.x86_64.rpm --force --nodepsrpm -ivh mysql-community-client-8.0.28-1.el7.x86_64.rpm --force --nodepsrpm -ivh mysql-community-server-8.0.28-1.el7.x86_64.rpm --force --nodeps
检查MySQL的个RPM包是否被安装
rpm -qa |grep mysql#显示如下安装包mysql-community-server-8.0.28-1.el7.x86_64mysql-community-libs-compat-8.0.28-1.el7.x86_64mysql-community-client-plugins-8.0.29-1.el7.x86_64mysql-community-common-8.0.29-1.el7.x86_64mysql-community-devel-8.0.29-1.el7.x86_64mysql-community-common-8.0.28-1.el7.x86_64mysql-community-libs-8.0.29-1.el7.x86_64mysql80-community-release-el7-5.noarchmysql-community-libs-compat-8.0.29-1.el7.x86_64mysql-community-client-8.0.28-1.el7.x86_64mysql-community-libs-8.0.28-1.el7.x86_64
启动MySQL并加入开机自启
#启动MySQLsystemctl start mysqld#MySQL加入开启自启systemctl enable mysqld
检查MySQL服务是否启动
systemctl status mysqld.service
启动mysql后会初始化 查找mysql密码
cat /var/log/mysqld.log | grep password2022-06-23T16:15:31.370137Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Dfo5Dm-!fVZG#密码为:Dfo5Dm-!fVZG
修改MySQL的root密码
#由于MySQL8.0 有密码验证组件,若希望设置简单的密码,需要修改服务验证条件# 密码检查等级,0/LOW、1/MEDIUM、2/STRONGset global validate_password.policy=0;# 密码的最短长度set global validate_password.length=6;# 密码至少要包含的小写字母个数和大写字母个数set global validate_password.mixed_case_count=0;# 设置密码mysql -uroot -pALTER USER 'root'@'localhost' IDENTIFIED BY 'Resset@)@@2022';
创建zabbix库
#创建zabbix库create database zabbix character set utf8 collate utf8_bin;#创建zabbix用户create user zabbix@localhost identified by 'Resset@)@@123';#授权grant all privileges on zabbix.* to zabbix@localhost;
安装zabbix
6.1
#创建zabbix目录mkdir /usr/local/zabbix#解压tar -zxvf zabbix-6.0.1.tar.gz -C /usr/local/zabbix/
创建用户账户
#创建zabbix组groupadd zabbix#创建zabbix用户useradd -g zabbix -M -s /sbin/nologin zabbix
在zabbix目录中编译安装
#移动到zabbix目录cd /usr/local/zabbix/zabbix-6.0.1/#编译./configure --prefix=/usr/local/zabbix/ --enable-server --enable-agent --with-net-snmp --with-mysqlmake install
安装PHP
由于CentOS7自带PHP版本为5.6,所以需要安装额外的库,也是remi的库yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpmyum -y install yum-utilsyum-config-manager --disable 'remi-php*'yum-config-manager --enable remi-php74yum -y install php php-bcmath php-gd php-xml php-mbstring php-mysqlnd php-ldapyum -y install curl-devl libxml2 libxml2-devel
需要修改php参数(网页预配置必要条件)
vim /etc/php.ini修改post_max_size为16M修改max_execution_time为300修改max_input_time为300
配置httpd
移动前端文件至web服务的根目录并授权
cp -r /usr/local/zabbix/zabbix-6.0.1/ui/* /var/www/html/chown apache:apache /var/www/html -R
导入数据库架构及数据
mysql -uzabbix -p zabbix < /usr/local/zabbix/zabbix-6.0.1/database/mysql/schema.sqlmysql -uzabbix -p zabbix < /usr/local/zabbix/zabbix-6.0.1/database/mysql/images.sqlmysql -uzabbix -p zabbix < /usr/local/zabbix/zabbix-6.0.1/database/mysql/data.sql
修改配置zabbixserver文件数据库密码
vim /usr/local/zabbix/etc/zabbix_server.conf# DBPassword= 修改为MySQL的zabbix用户密码DBPassword=Resset@)@@123
开启httpd zabbix
service httpd startsystemctl enable httpd.servicecd /usr/local/zabbix/sbin/./zabbix_server
网页验证
选择中文,并点击一步
必要条件都已满足,点击下一步
DB连接配置
输入账号密码
登录成功
监控公司web网页状态并配置钉钉告警
添加监控的网站信息
点击创建web场景填写名称和需要监控的URL,添加完后点击更新
点击检测--主机查看检测情况
添加报警媒介类型---创建群聊---右上角点击群设置---智能群助手---开启推送消息---复制保存Webhook连接
在加签打钩---复制保存密钥
添加钉钉配置脚本
#创建存放目录mkdir -p /opt/zabbix/alertscripts#修改zabbix存放脚本路径vim /usr/local/zabbix/etc/zabbix_server.confAlertScriptsPath=/opt/zabbix/alertscripts
vim /opt/zabbix/alertscripts/dingding.py
#!/usr/bin/env python3# coding:utf8import timeimport hmacimport hashlibimport base64import urllib.parseimport requestsimport jsonimport sys# webhook URLapi_url = 'xxx' ###填写dingdingWebhook连接地址# secret keyapi_secret = 'xxx' ###填写加签密钥# is @allat_all = Truedef get_timestamp_sign():timestamp = str(round(time.time() * 1000))secret = api_secretsecret_enc = secret.encode('utf-8')string_to_sign = '{}\n{}'.format(timestamp, secret)string_to_sign_enc = string_to_sign.encode('utf-8')hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))return timestamp, signdef get_signed_url():timestamp, sign = get_timestamp_sign()webhook = api_url + "×tamp=" + timestamp + "&sign=" + signreturn webhookdef get_webhook(mode):if mode == 0:webhook = api_urlelif mode == 1:webhook = get_signed_url()else:webhook = ""return webhookdef get_message(text, user_info):message = {"msgtype": "text","text": {"content": text},"at": {"atMobiles": [user_info,],"isAtAll": at_all}}return messagedef send_ding_message(text, user_info):webhook = get_webhook(1)header = {"Content-Type": "application/json","Charset": "UTF-8"}message = get_message(text, user_info)message_json = json.dumps(message)info = requests.post(url=webhook, data=message_json, headers=header).json()code = info["errcode"]errmsg = info["errmsg"]if code == 0:print("send success return:%s %s\n" % (code, errmsg))else:print("send fail return:%s %s\n" % (code, errmsg))exit(3)if __name__ == "__main__":text = sys.argv[3]user_info = sys.argv[1]send_ding_message(text, user_info)
#修改属组和属主chown -R zabbix:zabbix dingding.py#添加执行权限chmod +x dingding.py
测试是否能成功发送测试信息
./dingding.py 13653134215 title 测试
到Zabbix web页面添加报警媒介类型
添加告警发送内容
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
恢复告警通知内容
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
创建检测web网页的触发器
点击配置---主机---选择触发器
1代表检测故障
0代表检测正常
创建动作
新建动作---条件选项中点击添加---类型:触发器---触发器:选择刚创建的触发器名称
选择故障发送用户和发送方式
选择恢复发送用户和发送方式
添加发送账号
测试