安装Zabbix监控服务,监控web页面状态并配置钉钉告警

1.关闭防火墙、关闭SELINUX
systemctl stop firewalld.service
setenforce 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
#下载zabbix
wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.1.tar.gz
#下载MySQL
wget 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方式安装MySQL
rpm -ivh mysql-community-common-8.0.28-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-8.0.28-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-compat-8.0.28-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-client-8.0.28-1.el7.x86_64.rpm --force --nodeps
rpm -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_64
mysql-community-libs-compat-8.0.28-1.el7.x86_64
mysql-community-client-plugins-8.0.29-1.el7.x86_64
mysql-community-common-8.0.29-1.el7.x86_64
mysql-community-devel-8.0.29-1.el7.x86_64
mysql-community-common-8.0.28-1.el7.x86_64
mysql-community-libs-8.0.29-1.el7.x86_64
mysql80-community-release-el7-5.noarch
mysql-community-libs-compat-8.0.29-1.el7.x86_64
mysql-community-client-8.0.28-1.el7.x86_64
mysql-community-libs-8.0.28-1.el7.x86_64
启动MySQL并加入开机自启
#启动MySQL
systemctl start mysqld
#MySQL加入开启自启
systemctl enable mysqld
检查MySQL服务是否启动
systemctl status mysqld.service
启动mysql后会初始化 查找mysql密码
cat /var/log/mysqld.log | grep password
2022-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/STRONG
set global validate_password.policy=0;
# 密码的最短长度
set global validate_password.length=6;
# 密码至少要包含的小写字母个数和大写字母个数
set global validate_password.mixed_case_count=0;
# 设置密码
mysql -uroot -p
ALTER 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-mysql
make install
安装PHP
由于CentOS7自带PHP版本为5.6,所以需要安装额外的库,也是remi的库
yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm  
yum -y install yum-utils
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable   remi-php74
yum -y install php php-bcmath php-gd php-xml  php-mbstring php-mysqlnd php-ldap
yum -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.sql
mysql -uzabbix -p zabbix < /usr/local/zabbix/zabbix-6.0.1/database/mysql/images.sql
mysql -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 start
systemctl enable httpd.service
cd /usr/local/zabbix/sbin/
./zabbix_server
网页验证
选择中文,并点击一步
必要条件都已满足,点击下一步
DB连接配置
输入账号密码
登录成功
监控公司web网页状态并配置钉钉告警
添加监控的网站信息
点击创建web场景填写名称和需要监控的URL,添加完后点击更新
点击检测--主机查看检测情况
添加报警媒介类型---创建群聊---右上角点击群设置---智能群助手---开启推送消息---复制保存Webhook连接
在加签打钩---复制保存密钥
添加钉钉配置脚本
#创建存放目录
mkdir -p /opt/zabbix/alertscripts
#修改zabbix存放脚本路径
vim /usr/local/zabbix/etc/zabbix_server.conf
AlertScriptsPath=/opt/zabbix/alertscripts
vim /opt/zabbix/alertscripts/dingding.py
#!/usr/bin/env python3
# coding:utf8
import time
import hmac
import hashlib
import base64
import urllib.parse
import requests
import json
import sys
# webhook URL
api_url = 'xxx'                                 ###填写dingdingWebhook连接地址
# secret key
api_secret = 'xxx'                           ###填写加签密钥
# is @all
at_all = True
def get_timestamp_sign():
    timestamp = str(round(time.time() * 1000))
    secret = api_secret
    secret_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, sign
def get_signed_url():
    timestamp, sign = get_timestamp_sign()
    webhook = api_url + "&timestamp=" + timestamp + "&sign=" + sign
    return webhook
def get_webhook(mode):
    if mode == 0:
        webhook = api_url
    elif mode == 1:
        webhook = get_signed_url()
    else:
        webhook = ""
    return webhook
def get_message(text, user_info):
    message = {
        "msgtype": "text",
        "text": {
            "content": text
        },
        "at": {
            "atMobiles": [
                user_info,
            ],
            "isAtAll": at_all
        }
    }
    return message
def 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代表检测正常
创建动作
新建动作---条件选项中点击添加---类型:触发器---触发器:选择刚创建的触发器名称
选择故障发送用户和发送方式
选择恢复发送用户和发送方式
添加发送账号
测试
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值