logo
tt's Note
  • 运维
    • 数据库
    • linux
    • vpn
    • 日志
    • 中间件
    • 服务
    • 监控
    • shell
    • windows
    • 语言
    • 云服务
    • 其他
  • 开发
    • 工具
  • 软件
    • 浏览器
    • 多端
    • win
    • mac
    • 网站
  • 项目
    • 效率工具
    • 兴趣
  • 脚本
    • jenkins
    监控概览
    grafana
    prometheus-exporter
    prometheus
    zabbix
    阿里云账户余额
    上一页prometheus下一页阿里云账户余额

    #zabbix

    官网

    #zabbix-server

    只用docker搭建

    #zabbix-web

    #!/bin/bash
    
    version="centos-5.0.2"
    docker_name="zabbix-web-nginx-pgsql"
    
    docker stop ${docker_name}
    docker rm ${docker_name}
    docker run -d --name ${docker_name} \
    --restart=always \
    --link zabbix-server:zabbix-server \
    --link zabbix-postgres:zabbix-postgres \
    -e DB_SERVER_HOST="zabbix-postgres" \
    -e POSTGRES_USER="postgres" \
    -e POSTGRES_PASSWORD="password" \
    -e ZBX_SERVER_HOST="zabbix-server" \
    -e PHP_TZ="Asia/Shanghai" \
    -p 8800:8080 \
    -v /etc/localtime:/etc/localtime:ro \
    -v /etc/timezone:/etc/timezone:ro \
    zabbix/zabbix-web-nginx-pgsql:${version}

    #解决中文乱码

    在C:\Windows\Fonts\中找到simkai或者楷体 常规并上传到服务器

    docker cp simkai.ttf zabbix-web-nginx-pgsql:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf

    #zabbix-server

    #!/bin/bash
    version="centos-5.0.2"
    
    docker_name=zabbix-server
    
    docker kill zabbix-server
    docker rm zabbix-server
    docker run -d --name zabbix-server \
    --restart=always \
    --hostname $(hostname) \
    --add-host $(hostname):10.0.18.2 \
    --link zabbix-postgres:zabbix-postgres \
    -p 10051:10051 \
    -e DB_SERVER_HOST="zabbix-postgres" \
    -e POSTGRES_USER="postgres" \
    -e POSTGRES_PASSWORD="password" \
    -e ZBX_CACHESIZE=16M \
    -e ZBX_VALUECACHESIZE=64M \
    -v /etc/localtime:/etc/localtime:ro \
    -v /etc/timezone:/etc/timezone:ro \
    zabbix/zabbix-server-pgsql:${version}

    #zabbix-postgres

    #!/bin/sh
    echo 'Asia/Shanghai' > /etc/timezone
    
    docker_name=zabbix-postgres
    
    chown -R polkitd.root data-${docker_name}/
    
    docker stop ${docker_name}
    docker rm ${docker_name}
    docker run -d --name ${docker_name} \
    --restart=always \
    -e POSTGRES_PASSWORD=password \
    -v /etc/localtime:/etc/localtime:ro \
    -v /etc/timezone:/etc/timezone:ro \
    -v $(pwd)/data-${docker_name}:/var/lib/postgresql/data \
    postgres:9.6

    #zabbix-agent

    #安装zabbix-agent

    由于用docker安装不一定能获取到所有数据/正确数据,故使用宿主机安装

    debian
    centos
    wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.0+debian12_all.deb
    
    dpkg -i zabbix-release_latest_7.0+debian12_all.deb
    
    apt update
    
    apt install zabbix-agent
    
    # 修改完配置文件后启动
    systemctl enable zabbix-agent --now
    rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
    
    # 如果是国内就换源
    sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#g' /etc/yum.repos.d/zabbix.repo
    
    yum install zabbix-agent -y
    
    # 修改完配置文件后启动
    systemctl enable zabbix-agent --now
    Tip

    7.0版本: rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/7/x86_64/zabbix-release-7.0-1.el7.noarch.rpm

    #配置文件说明

    #/etc/zabbix/zabbix_agentd.conf

    #被动模式(server主动去agent拉)

    PidFile=/var/run/zabbix/zabbix_agentd.pid   //13行
    
    LogFile=/var/log/zabbix/zabbix_agentd.log   //32行
    
    LogFileSize=0                               //43行
    
    Include=/etc/zabbix/zabbix_agentd.d/*.conf  //309行
    
    //上面的是核对项,下面的是修改项//
    
    Server=本机IP,服务器IP     //如图172.29.230.4为本机IP,172.31.254.13为服务器IP
    
    ServerActive=服务器IP
    
    Hostname=testhost                     //158行,指定名称
    
    #Hostname填写要监控的主机名,Server才能根据名字找到它(此处hostname要与zabbix监控当中添加主机的主机名一致)
    Tip

    如果要实现自动添加, 就需要在配置文件中加上HostMetadata, 然后在服务端的动作中的自动发现动作添加, 判断主机元数据

    #在zabbix-server中添加

    在配置->主机界面点击创建主机按钮,填写好必填项,然后在模板界面选择Template OS Linux by Zabbix agent

    等一会后就显示连接成功

    #主动模式(agent主动推给server)

    # Server=本机IP,服务器IP     //禁用
    
    ServerActive=服务器IP
    
    Hostname=testhost                     //158行,指定名称
    
    StartAgents=0 //启用主动模式
    
    #Hostname填写要监控的主机名,Server才能根据名字找到它(此处hostname要与zabbix监控当中添加主机的主机名一致)
    #在zabbix-server中添加

    在配置->主机界面点击创建主机按钮,填写好必填项,然后在模板界面选择Template OS Linux by Zabbix agent active

    等一会后就显示连接成功

    #zabbix-proxy

    #安装

    旧版本(5.0)
    新版本(7.0)
    #!/bin/bash
    
    docker_name=zabbix-proxy-sqlite3
    
    mkdir -p data/
    chown -R 1997:1997 data/
    
    echo "Asia/Shanghai" > /etc/timezone
    
    docker stop ${docker_name}
    docker rm ${docker_name}
    docker run -d --name zabbix-proxy-sqlite3 \
    --restart=always \
    --net host \
    --hostname xxx \
    --add-host=zabbix-server:172.31.254.13 \       # zabbix-server的公网ip
    -e ZBX_HOSTNAME=$(hostname) \
    -e ZBX_SERVER_HOST=zabbix-server \
    -e ZBX_PROXYMODE=0 \
    -v /etc/localtime:/etc/localtime:ro \
    -v /etc/timezone:/etc/timezone:ro \
    -v $(pwd)/data/:/var/lib/zabbix/ \
    zabbix/zabbix-proxy-sqlite3:centos-5.0.2
    
    
    # ZBX_PROXYMODE=0 # 主动模式
    # ZBX_PROXYMODE=1 # 被动模式
    #!/bin/bash
    
    docker_name=zabbix-proxy-sqlite3
    
    echo "Asia/Shanghai" > /etc/timezone
    
    if [ ! -d ./data ];then
    mkdir -p data/
    chown -R 1997:1997 data/
    chmod 755 data/
            docker rm -f copyresources &&
            docker run -d --hostname $(hostname) \
            --name copyresources \
            -e ZBX_HOSTNAME=$(hostname) \
            zabbix/zabbix-proxy-sqlite3:centos-7.0.0 && sleep 60 && docker cp copyresources:/var/lib/zabbix/ ./data/
    docker rm -f copyresources
    fi
    
    chown -R 1997.1997 data2/
    chmod 755 data2/
    
    docker stop ${docker_name}
    docker rm ${docker_name}
    docker run -d --name zabbix-proxy-sqlite3 \
    --restart=always \
    --net host \
    --init -d \
    --hostname $(hostname) \
    --add-host=zabbix-server:xx.xx.xx.xx \
    -e ZBX_HOSTNAME=$(hostname) \
    -e ZBX_SERVER_HOST=zabbix-server \
    -e ZBX_PROXYMODE=0 \
    -e ZBX_CACHESIZE=16M \
    -e ZBX_VALUECACHESIZE=64M \
    -e ZBX_STARTVMWARECOLLECTORS=5 \
    -e ZBX_VMWAREFREQUENCY=30 \
    -e ZBX_VMWAREPERFFREQUENCY=30 \
    -e ZBX_VMWARECACHESIZE=50M \
    -v /etc/localtime:/etc/localtime:ro \
    -v /etc/timezone:/etc/timezone:ro \
    -v $(pwd)/data/zabbix/:/var/lib/zabbix/ \
    zabbix/zabbix-proxy-sqlite3:centos-7.0.0
    
    
    # ZBX_PROXYMODE=0 # 主动模式
    # ZBX_PROXYMODE=1 # 被动模式

    安装完成后,在zabbix-server中管理中的agent代理程序来配置,其中主动式是proxy主动推

    #推送

    #钉钉

    #1、配置推送媒介,类型选择webhook,配置参数ParseMode为空,Token为钉钉的webhook的token,脚本:

    var Dingtalk = {
        token: null,
        http_proxy: null,
        timeout: 5000,
    
        sendMessage: function(message) {
            var params = JSON.stringify(message);
            var request = new HttpRequest();
            request.addHeader('Content-Type: application/json');
    
            var url = 'https://oapi.dingtalk.com/robot/send?access_token=' + this.token;
    
            if (this.http_proxy) {
                request.setProxy(this.http_proxy);
            }
    
            request.setTimeout(this.timeout);
    
            try {
                var response = request.post(url, params);
                Zabbix.Log(4, '[Dingtalk Webhook] response: ' + response);
                return 'OK';
            } catch (error) {
                Zabbix.Log(4, '[Dingtalk Webhook] notification failed: ' + error);
                throw 'Failed to send notification: ' + error;
            }
        }
    };
    
    try {
        var params = JSON.parse(value);
        Dingtalk.token = params.token;
    
        if (params.http_proxy) {
            Dingtalk.http_proxy = params.http_proxy;
        }
    
        var message = {
            msgtype: 'text',
            text: {
                content: params.message
            }
        };
    
        return Dingtalk.sendMessage(message);
    } catch (error) {
        Zabbix.Log(4, '[Dingtalk Webhook] notification failed: ' + error);
        throw 'Failed to send notification: ' + error;
    }

    #2、配置Message template

    问题

    Problem: {EVENT.NAME}
    
    当前状态: {TRIGGER.STATUS}
    告警主机: {HOSTNAME1}
    告警别名: {HOST.NAME}
    告警地址: {HOST.IP}
    告警时间: {EVENT.DATE} {EVENT.TIME}
    告警等级: {TRIGGER.SEVERITY}
    告警信息: {TRIGGER.NAME}
    告警项目: {TRIGGER.KEY1}
    问题详情: {ITEM.NAME}: {ITEM.VALUE}
    当前状态: {TRIGGER.STATUS}: {ITEM.VALUE1}
    事件ID: {EVENT.ID}

    Problem recovery

    Resolved in {EVENT.DURATION}: {EVENT.NAME}
    
    当前状态: {TRIGGER.STATUS}
    恢复主机: {HOSTNAME1}
    恢复别名: {HOST.NAME}
    恢复地址: {HOST.IP}
    恢复时间: {EVENT.DATE} {EVENT.TIME}
    恢复等级: {TRIGGER.SEVERITY}
    恢复信息: {TRIGGER.NAME}
    恢复项目: {TRIGGER.KEY1}
    恢复详情: {ITEM.NAME}: {ITEM.VALUE}
    当前状态: {TRIGGER.STATUS}: {ITEM.VALUE1}
    事件ID: {EVENT.ID}

    #3、在用户中配置报警媒介

    #4、在动作中配置媒介

    #对接grafana

    #grafana安装zabbix插件

    grafana-cli plugins install alexanderzobnin-zabbix-app

    安装完插件后需重启

    #在grafana启用zabbix

    #添加zabbix数据源

    http://10.0.18.2:8800/api_jsonrpc.php

    #导入模板

    https://grafana.com/grafana/dashboards/5363-zabbix-full-server-status/