zoukankan      html  css  js  c++  java
  • zabbix4.4

    【1-1】如果有镜像源可以忽略此步骤
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

    1.下载源的rpm包

    一.zabbix安装

    【1-1】 安 装 源
    rpm -ivh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm

    #rpm -uvh 包升级
    【1-2】清理缓存
    yum clean all
    【1-3】服务安装
    yum install -y zabbix-server-mysql  zabbix-agent  zabbix-web-mysql zabbix-nginx-conf  

     

    【1-4】修改配置

    1.#备份并修改【/etc/nginx/nginx.conf】

    cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
    vim  /etc/nginx/nginx.conf
    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;

    include /usr/share/nginx/modules/*.conf;

    events {
      worker_connections 1024;
    }

    http {
      log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

      access_log /var/log/nginx/access.log main;

      sendfile           on;
      tcp_nopush         on;
      tcp_nodelay         on;
      keepalive_timeout   65;
      types_hash_max_size 2048;

      include             /etc/nginx/mime.types;
      default_type       application/octet-stream;

      include /etc/nginx/conf.d/*.conf;
    }

    2.#修改【/etc/nginx/conf.d/zabbix.conf】

    vim  /etc/nginx/conf.d/zabbix.conf 

    server {
          listen          80;                                       #修改端口
          server_name     dev-picture-xssh.bilibiligame.jp;         #公司域名

          root   /usr/share/zabbix;

    allow 114.86.224.135;                                    # 放行公司IP
                  deny all;

          index   index.php;

          location = /favicon.ico {
                  log_not_found   off;
          }

          location / {
                  try_files       $uri $uri/ =404;
          }

          location /assets {
                  access_log     off;
                  expires         10d;
          }

          location ~ /.ht {
                  deny           all;
          }

          location ~ /(api/|conf[^.]|include|locale) {
                  deny           all;
                  return          404;
          }

          location ~ [^/].php(/|$) {
                  fastcgi_pass   unix:/run/php-fpm/zabbix.sock;
                  fastcgi_split_path_info ^(.+.php)(/.+)$;
                  fastcgi_index   index.php;

                  fastcgi_param   DOCUMENT_ROOT   /usr/share/zabbix;
                  fastcgi_param   SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
                  fastcgi_param   PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;

                  include fastcgi_params;
                  fastcgi_param   QUERY_STRING    $query_string;
                  fastcgi_param   REQUEST_METHOD  $request_method;
                  fastcgi_param   CONTENT_TYPE    $content_type;
                  fastcgi_param   CONTENT_LENGTH  $content_length;

                  fastcgi_intercept_errors       on;
                  fastcgi_ignore_client_abort     off;
                  fastcgi_connect_timeout         60;
                  fastcgi_send_timeout            180;
                  fastcgi_read_timeout            180;
                  fastcgi_buffer_size             128k;
                  fastcgi_buffers                 4 256k;
                  fastcgi_busy_buffers_size       256k;
                  fastcgi_temp_file_write_size   256k;
          }
    }

    3.#修改区时

    vim /etc/php-fpm.d/zabbix.conf
    php_value[date.timezone] = Asia/Tokyo

    4.#启动并开机自启

    systemctl start  nginx.service &&  systemctl enable nginx.service
    systemctl start php-fpm.service && systemctl enable php-fpm.service

    二.安装数据库

     

    【2-1】下载工具
     yum install -y ncurses-devel libaio-devel cmake gcc gcc-c++ glibc  rpm-build  autoconf numactl
    【2-2】上 传 包

    下载地址 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

    【2-3 】 配 置

    (一)【创建目录,用户,解压,改名,软连接】

    mkdir /data
    useradd mysql -s /sbin/nologin -M 
    tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz   
    ln -s /data/mysql.5.7.28/ /data/mysql

    【在support-flie目录下创建default.cnf文件】

    cat <<EOF> /data/mysql/support-files/my_default.cnf  
    [mysqld]
    server_id=2
    log-bin = /data/mysql/logs/mysql-bin.log
    #设置mysql的安装目录
    basedir =/data/mysql/
    #设置mysql数据库的数据存放目录
    datadir = /data/mysql/data
    #设置端口
    port = 3306
    socket = /var/lib/mysql/mysql.sock
    #设置字符集
    character-set-server=utf8
    #日志存放目录
    log-error = /data/mysql/logs/mysqld.log
    pid-file = /data/mysql/data/mysqld.pid
    EOF

    (三)【复制启动配置文件】

    cp /data/mysql/support-files/my_default.cnf  /etc/my.cnf

    创建目录

    mkdir  -p /data/mysql/logs/ 

    (四)【授权目录,初始化】

    chown mysql.mysql  /data/mysql/ -R 
    /data/mysql/bin/mysqld  --initialize --user=mysql --basedir=/data/mysql/ --datadir=/data/mysql/data/

    (五)【复制初始化脚本并替换启动脚本中的路径】

    cp /data/mysql/support-files/mysql.server  /etc/init.d/mysqld 
     sed -i "s#usr/local#data#g" /etc/init.d/mysqld /data/mysql/bin/mysqld_safe    

    (六)【设置成systemctl启动】

    cat <<EOF> /usr/lib/systemd/system/mysqld.service     
    [Unit]
    Description=MySQL Server
    Documentation=man:mysqld(8)
    Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
    After=network.target
    After=syslog.target
    [Install]
    WantedBy=multi-user.target
    [Service]
    User=mysql
    Group=mysql
    ExecStart=/data/mysql/bin/mysqld --defaults-file=/etc/my.cnf
    LimitNOFILE = 5000
    EOF

    (七)【配置环境变量 ,加载环境变量 ,给启动脚本授权700】

     echo 'PATH=/data/mysql/bin/:$PATH' >/etc/profile.d/mysql.sh
    source /etc/profile.d/mysql.sh
    chmod 700 /etc/init.d/mysqld  

    (八)【启动数据库,做链接,】

    systemctl start mysqld && systemctl enable mysqld.service
     ln -s  /var/lib/mysql/mysql.sock /tmp/mysql.sock

    (九)【查找mysql密码,登陆数据库】

    [root@suzhu ~]# grep "local" /data/mysql/logs/mysqld.log 
    mysql -uroot -p
     set password=password('qazwsx123456');
    flush privileges;
    create database zabbix character set utf8 collate utf8_bin;
    grant all privileges on zabbix.* to zabbix@"192.168.24.%" identified by 'zabbix';

    (十)导入zabbix数据

    zcat  /usr/share/doc/zabbix-server-mysql-4.2.8/create.sql.gz |mysql -uroot -p    zabbix

    三.zabbix配置

    【3-1】server端
    vim /etc/zabbix/zabbix_server.conf

    #在如下行进行修改

     91 DBHost=localhost
    100 DBName=zabbix
    116 DBUser=zabbix
    124 DBPassword=zabbix
    【3-2】agent端
    vim /etc/zabbix/zabbix_agentd.conf 
    Server=192.168.24.132
    ServerActive=192.168.24.132

    【3-3】启动

    systemctl start zabbix-agent.service  && systemctl enable zabbix-agent.service
    systemctl start zabbix-server.service && systemctl enable zabbix-server.service

    #浏览器输入192.168.24.132即可安装

     

    【3-3】补 充

    修改zabbix web界面字体

    电脑 C:WindowsFonts拉出来一个字体msyh.ttc ,传上去,重命名为DejaVuSans.ttf

    ll /etc/alternatives |grep zabbix-web-font
    cd  /usr/share/fonts/dejavu
    mv DejaVuSans.ttf DejaVuSans.ttf.bak
    mv msyh.ttc DejaVuSans.ttf

    刷新zabbix web页面即可

     

    四.服务指标监控

    【4-1】监控1:java监控
    1.【监控内容】 针对java的堆,老年代,新生代,gc回收
    2.【命令提权】 java程序时,由于部分命令zabbix没有权限,我们需要给zabbix提权,在93行左右
    3.【脚本样例】下面例子是监控GameServer的脚本

    2.#命令提权

    vim  /etc/sudoers +101
    zabbix  ALL=(ALL)       NOPASSWD:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/bin/jstat

    3.#创建脚本目录放置脚本

    mkdir -p /etc/zabbix/scripts

    4.#创建监控脚本

    vim /etc/zabbix/scripts/GameServer.sh 
    #!/bin/bash
    #获取服务进程(pid)
    pid=`ps -ef | grep "GameServer" |grep -v $$| grep -v "cgroup" | grep -v "grep" | awk '{print $2}'`
    sudo=/usr/bin/sudo
    ###################################################################################
    #s0c             年轻代中第一块survivor容量
    #s1c             年轻代中第二个survivor(幸存区)的容量
    #s0u             年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
    #s1u             年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
    #s1u_per         幸存区使用的容量百分比
    ###################################################################################
    #ec             EdenCount 年轻代中Eden(伊甸园)的容量 (字节)
    #eu             EdenUsed年轻代中Eden(伊甸园)目前已使用空间 (字节)
    #ecu_per         EdenUsed %
    ###################################################################################
    #oc             OldCount Old代的容量 (字节)
    #ocu             Oldcount Used代的容量 (字节)
    #ocuper         Old used%
    ###################################################################################
    #ygc             年轻代gc回收次
    #ygct           年轻代gc回收时间
    #ogc             老年代gc回收次数
    #ogct           老年代gc回收时间
    #all_gct         老年代&&和年轻代总的回收时间
    ###################################################################################
    #heap           Game堆的大小
    #heapused       Game堆的使用情况
    #heap_per       GAME堆的使用百分比
    ###################################################################################

    #MB=kb/1024
    #GC
    s0c=`$sudo jstat -gc  $pid|awk 'NR==2{print $1/1024}'`
    s1c=`$sudo jstat -gc  $pid|awk 'NR==2{print $2/1024}'`
    s0u=`$sudo jstat -gc  $pid|awk 'NR==2{print $3/1024}'`
    s1u=`$sudo jstat -gc  $pid|awk 'NR==2{print $4/1024}'`
    s1u_per=`$sudo jstat -gc  $pid|awk 'NR==2{print $4/$2*100}'`

    ec=`$sudo jstat -gc  $pid|awk 'NR==2{print $5/1024}'`
    ecu=`$sudo jstat -gc  $pid|awk 'NR==2{print $6/1024}'`
    ecu_per=`$sudo jstat -gc  $pid|awk 'NR==2{print $6/$5*100}'`

    oc=`/usr/bin/sudo jstat -gc  $pid|awk 'NR==2{print $7/1024}'`
    ocu=`$sudo jstat -gc  $pid|awk 'NR==2{print $8/1024}'`
    ocu_per=`$sudo jstat -gc  $pid|awk 'NR==2{print $8/$7*100}'`


    ygc=`$sudo jstat -gcnew  $pid|awk 'NR==2{print $(NF-1)}'`
    ygct=`$sudo jstat -gcnew  $pid|awk 'NR==2{print $NF}'`

    ogc=`$sudo jstat -gcoldcapacity $pid|awk 'NR==2{print $(NF-2)}'`
    ogct=`$sudo jstat -gcoldcapacity $pid|awk 'NR==2{print $(NF-1)}'`
    all_gct=`$sudo jstat -gcoldcapacity $pid|awk 'NR==2{print $NF}'`

    heap=`$sudo jstat -gc $pid|awk 'NR==2{print ($2+$5+$7)/1024}'`
    heapused=`$sudo jstat -gc $pid|awk 'NR==2{print ($4+$6+$8)/1024}'`
    heap_per=`$sudo jstat -gc $pid|awk 'NR==2{print ($4+$6+$8)/($2+$5+$7)*100}'`

    case $1  in
    s0c)
    echo $s0c
    ;;
    s1c)
    echo $s1c
    ;;
    s0u)
    echo $s1u
    ;;
    s1u)
    echo $s1u
    ;;
    s1u_per)
    echo $s1u_per
    ;;

    ec)
    echo $ec
    ;;
    ecu)
    echo $ecu
    ;;
    ecu_per)
    echo $ecu_per
    ;;

    oc)
    echo $oc
    ;;
    ocu)
    echo $ocu
    ;;
    ocu_per)
    echo $ocu_per
    ;;

    ygc)
    echo $ygc
    ;;
    ygct)
    echo $ygct
    ;;
    ogc)
    echo $ogc
    ;;
    ogct)
    echo $ogct
    ;;
    all_gct)
    echo $all_gct
    ;;

    heap)
    echo $heap
    ;;
    heapused)
    echo $heapused
    ;;
    heap_per)
    echo $heap_per
    ;;
    *)
    echo "USAGE:{heap|heap_per|...}"
    ;;
    esac

    ######

    5.【客户端配置】获取参数,添加如下

     vim /etc/zabbix/zabbix_agentd.d/system.conf
    #GameServer的性能指标
    UserParameter=Game[*],/usr/bin/sh /etc/zabbix/scripts/GameServer.sh   $1

    6.重启

    systemctl restart zabbix-agent.service

     

    【4-2】监控2: cpu 内存
    1【监控内容】针对各种服务的cpu占用,内存占用 脚本如下
     vim /etc/zabbix/scripts/processstatus.sh 

    #!/bin/bash
    # auth-tomcat forest-friend forest-gateway forest-server     gm-tomcat idip-tomcat pay-tomcat
    auth-memory(){
       ps aux|grep "auth-tomcat"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$6}; END{print sum*1024}'
    }
    auth-cpu(){
       ps aux|grep "auth-tomcat"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$3}; END{print sum}'
    }
    friend-memory(){
       ps aux|grep "FriendServer"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$6}; END{print sum*1024}'
    }
    forest-cpu(){
       ps aux|grep "FriendServer"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$3}; END{print sum}'
    }
    gateway-memory(){
       ps aux|grep "forest-gateway"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$6}; END{print sum*1024}'
    }
    gateway-cpu(){
       ps aux|grep "forest-gateway"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$3}; END{print sum}'
    }
    game-memory(){
       ps aux|grep "GameServer"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$6}; END{print sum*1024}'
    }
    game-cpu(){
       ps aux|grep "GameServer"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$3}; END{print sum}'
    }
    gm-memory(){
       ps aux|grep "gm-tomcat"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$6}; END{print sum*1024}'
    }
    gm-cpu(){
       ps aux|grep "gm-tomcat"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$3}; END{print sum}'
    }
    idip-memory(){
       ps aux|grep "idip-tomcat"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$6}; END{print sum*1024}'
    }
    idip-cpu(){
       ps aux|grep "idip-tomcat"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$3}; END{print sum}'
    }
    pay-memory(){
       ps aux|grep "pay-tomcat"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$6}; END{print sum*1024}'
    }
    pay-cpu(){
       ps aux|grep "pay-tomcat"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$3}; END{print sum}'
    }

    case "$1" in
    'auth-memory')
    auth-memory
    ;;
    'auth-cpu')
    auth-cpu
    ;;
    'friend-memory')
    friend-memory
    ;;
    'friend-cpu')
    friend-cpu
    ;;
    'gateway-memory')
    gateway-memory
    ;;
    'gateway-cpu')
    gateway-cpu
    ;;
    'game-memory')
    game-memory
    ;;
    'game-cpu')
    game-cpu
    ;;
    'gm-memory')
    gm-memory
    ;;
    'gm-cpu')
    gm-cpu
    ;;
    'idip-memory')
    idip-memory
    ;;
    'idip-cpu')
    idip-cpu
    ;;
    'pay-memory')
    pay-memory
    ;;
    'pay-cpu')
    pay-cpu
    ;;
    *)
    echo "Usage: $0 {auth-memory|....}"
    ;;
    esac

    1.【客户端配置】获取参数

    echo "UserParameter=process[*],/etc/zabbix/scripts/processstatus.sh $1" >>/etc/zabbix/zabbix_agentd.d/system.conf

    2.重启

    systemctl restart zabbix-agent.service
    【4-3】监控3: 端 口
    1.【监控内容】各个服务的存活状态,0表示非存活,1表示存活,脚本如下
    vim /etc/zabbix/scripts/check_process_id.sh
    #!/bin/bash
    # auth-tomcat forest-friend forest-gateway forest-server     gm-tomcat idip-tomcat pay-tomcat
    auth(){
       ps aux|grep "auth-tomcat"|grep -v "grep"|grep -v "check_process_id.sh"| wc -l
    }
    friend(){
       ps aux|grep "FriendServer"|grep -v "grep"|grep -v "check_process_id.sh" | wc -l
    }
    gateway(){
       ps aux|grep "forest-gateway"|grep -v "grep"|grep -v "check_process_id.sh" | wc -l
    }
    game(){
       ps aux|grep "GameServer"|grep -v "grep"|grep -v "check_process_id.sh" | wc -l
    }
    gm(){
       ps aux|grep "gm-tomcat"|grep -v "grep"|grep -v "check_process_id.sh" | wc -l
    }
    idip(){
       ps aux|grep "idip-tomcat"|grep -v "grep"|grep -v "check_process_id.sh" | wc -l
    }
    pay(){
       ps aux|grep "pay-tomcat"|grep -v "grep"|grep -v "check_process_id.sh"|wc -l
    }

    case "$1" in
    'auth')
    auth
    ;;
    'friend')
    friend
    ;;
    'gateway')
    gateway
    ;;
    'game')
    game
    ;;
    'gm')
    gm
    ;;
    'idip')
    idip
    ;;
    'pay')
    pay
    ;;
    *)
    echo "Usage: $0 {auth|friend|...}"
    ;;
    esac

    1.【客户端配置】获取参数

    echo "UserParameter=check[*],/usr/bin/sh /etc/zabbix/scripts/check_process_id $1"  >>/etc/zabbix/zabbix_agentd.d/system.conf

    重启客户端

    systemctl restart zabbix-agent.service

     

    五.系统指标监控

    【5-1】系统指标
    1.【监控内容】此监控脚本包含系统内存,CPU,磁盘的Io读写,目录的使用大小
    vim /etc/zabbix/scripts/system_status1.sh 
    #内存空余(%)
    mem_ava=`free -m|awk '/^Mem/{print $NF*100/$2}'`
    #交换分区空余(%)
    swap_ava=`free -m|awk '/^Swap/{print $NF*100/$2}'`
    #服务器的开机时间(days)
    system_runtime=`w|awk 'NR==1{print $3}'`

    #/data目录的使用大小(Gb)
    data_size=`/usr/bin/sudo du -sh /data/|awk -F G 'NR==1{print $1*1000*1000*1000}'`
    #buffer缓存(Mb)
    buffer_size=`free -m|awk 'NR==2{print $(NF-1)}'`
    #swap的容量(Mb)
    swap_size=`free -m|awk 'NR==3{print $2}'`

    #CPU监控(%)
    #1.cpu平均1min的利用百分比
    cpu_load_1min=`w |awk -F \, 'NR==1{print $(NF-2)}'|awk '{print $3}'`
    #2.cpu平均5min的利用百分比
    cpu_load_5min=`uptime |awk -F \, '{print $(NF-1)}'`
    #3.cpu平均15min的利用百分比
    cpu_load_15min=`w|awk '/load average/{print $(NF)}'`



    case $1 in
    mem_ava)
    echo $mem_ava
    ;;
    swap_ava)
    echo $swap_ava
    ;;
    system_runtime)
    echo $system_runtime
    ;;
    data_size)
    echo $data_size
    ;;
    buffer_size)
    echo $buffer_size
    ;;
    swap_size)
    echo $swap_size
    ;;
    cpu_load_1min)
    echo $cpu_load_1min
    ;;

    cpu_load_5min)
    echo $cpu_load_5min
    ;;
    cpu_load_15min)
    echo $cpu_load_15min
    ;;
    *)
    echo "USAGE:{mem_ava|swap_ava|....}"
    ;;
    esac

    1.【客户端配置】获取参数

     vim /etc/zabbix/zabbix_agentd.d/system.conf

    2.#添加如下

    echo "UserParameter=system[*],/usr/bin/sh /etc/zabbix/scripts/system_status1.sh $1"  >>/etc/zabbix/zabbix_agentd.d/system.conf

    3.【重启客户端】

    systemctl restart zabbix-agent.service
    【5-2】磁盘监控
    1【监控内容】磁盘的各项指标监控
    2【监控脚本】仅供参考
    vim /etc/zabbix/scripts/zbx_parse_iostat_values.sh
    #!/bin/bash
    dev=$1
    type=$2

    #enable debug mode
    debug=0

    if [[ -z "$dev" ]]; then
     echo "error: wrong input value (device)"
     exit 1
    fi

    if [[ -z "$type" ]]; then
     echo "error: wrong input value (type)"
     exit 1
    fi

    columns=`iostat -xN |egrep -o "^Device.*"`

    columnsarray=($columns)

    column_id=1

    for i in "${columnsarray[@]}"
    do
           #echo "column: $i"

           if [[ "$i" = "$type" ]]; then

               if [[ $debug -eq 1 ]]; then
                   echo "right column (${i}) found...column_id: $column_id "
               fi

               id="$"
              column_id_id=$id$column_id

              iostats=`iostat -dxk 1 2|tail -5|egrep -o "^${dev}[[:space:]]+.*" |awk "{print ${column_id_id}}"`
           fi
       column_id=$[column_id + 1]
    done

    if [ -z "$iostats" ]; then
       echo "error: "device" or "type" not found (${dev},${type})"
       exit 3
    fi

    iostats_lines=`wc -l <<< "$iostats"`

    if [ $iostats_lines -ne 1 ]; then
       echo "error: wrong output value (${iostats_lines})"
       exit 2
    fi

    echo $iostats

    if [[ $debug -eq 1 ]]; then
       echo "- - - - - - - - - -"
       echo $columns
       iostats_debug=`iostat -xN |egrep -o "^${dev}[[:space:]]+.*"`
       echo $iostats_debug
       echo "- - - - - - - - - -"
    fi

    exit 0

    1.【客户端配置】获取参数.

    vim /etc/zabbix/zabbix_agentd.d/system.conf

    # 磁盘读写
    #UserParameter=discovery.disks.iostats,/etc/zabbix/scripts/discover_disk.pl
    UserParameter=custom.vfs.dev.iostats.rrqm[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "rrqm/s"  # 每秒进行 merge 的读操作数目
    UserParameter=custom.vfs.dev.iostats.wrqm[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "wrqm/s"  # 每秒进行 merge 的写操作数目
    UserParameter=custom.vfs.dev.iostats.rps[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "r/s"      # 每秒完成的读 I/O 设备次数
    UserParameter=custom.vfs.dev.iostats.wps[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "w/s"      # 每秒完成的写 I/O 设备次数
    UserParameter=custom.vfs.dev.iostats.rkb[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "rkB/s"    # 每秒读K字节数
    UserParameter=custom.vfs.dev.iostats.wkb[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "wkB/s"    # 每秒写K字节数
    UserParameter=custom.vfs.dev.iostats.avgrq[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "avgrq-sz" # 平均每次设备I/O操作的数据大小
    UserParameter=custom.vfs.dev.iostats.avgqu[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "avgqu-sz" # 平均I/O队列长度
    UserParameter=custom.vfs.dev.iostats.await[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "await"    # 平均每次设备I/O操作的等待时间 (毫秒)
    UserParameter=custom.vfs.dev.iostats.svctm[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "svctm"    # 平均每次设备I/O操作的服务时间 (毫秒)
    UserParameter=custom.vfs.dev.iostats.util[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "%util"     # 一秒中有百分之多少的时间用于 I/O 操作

    2.【重启客户端】

     systemctl restart zabbix-agent.service

     

    六.企业微信发送告警

    【6-1】微信申请

    1.【进入企业微信网页版本】企业微信页面

    2.【申请注册并登陆】
    3.点击: 【应用管理】——》【创建应用】——》【应用名称】--》【应用介绍】——》【选择部门成员】--完成
    4.点击: 【通讯录】——》【创建部门】————》【添加子部门】——》【运维部】——》【点击成员】——》【设置所在部门】

    5.三个信息:
    【企业】:corpid = 'ww3c487ba1e6eec2ab' #CorpID是企业号的标识
    【应用】:AgentId 1000002           应用的标识
    【Secret】:LStqb7q8Ymh3ZecammdHdX134qyjFGRKqhKbTyGOqeo

     

    6-1安装

    yum install python-simplejson -y
    【6-2】配置脚本

    1.#在zabbix特定目录下创建脚本

    vim /usr/lib/zabbix/alertscripts/wechat.py 
    #!/usr/bin/python
    #_*_coding:utf-8 _*_

    import urllib,urllib2
    import json
    import sys
    import simplejson

    reload(sys)
    sys.setdefaultencoding('utf-8')

    def gettoken(corpid,corpsecret):
      gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
      print gettoken_url
      try:
          token_file = urllib2.urlopen(gettoken_url)
      except urllib2.HTTPError as e:
          print e.code
          print e.read().decode("utf8")
          sys.exit()
      token_data = token_file.read().decode('utf-8')
      token_json = json.loads(token_data)
      token_json.keys()
      token = token_json['access_token']
      return token

    def senddata(access_token,user,subject,content):

      send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
      send_values = {
       "touser":"LiuZongLiang", #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
       "toparty":"2", #企业号中的部门id。
       "msgtype":"text", #消息类型。
       "agentid":"1000002", #企业号中的应用id。
       "text":{
           "content":subject + ' ' + content
          },
       "safe":"0"
      }
    # send_data = json.dumps(send_values, ensure_ascii=False)
      send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8')
      send_request = urllib2.Request(send_url, send_data)
      response = json.loads(urllib2.urlopen(send_request).read())
      print str(response)

    if __name__ == '__main__':
      user = str(sys.argv[1]) #zabbix传过来的第一个参数
      subject = str(sys.argv[2]) #zabbix传过来的第二个参数
      content = str(sys.argv[3]) #zabbix传过来的第三个参数

      corpid = 'ww3c487ba1e6eec2ab' #CorpID是企业号的标识
      corpsecret = 'LStqb7q8Ymh3ZecammdHdX134qyjFGRKqhKbTyGOqeo' #corpsecretSecret是管理组凭证密钥
      accesstoken = gettoken(corpid,corpsecret)
      senddata(accesstoken,user,subject,content)
    【6-3】授权文件
     chmod 777 wechat.py 
    chown zabbix.zabbix wechat.py
    【6-4】配置页面

    配置一:报警媒介


    *名称:【wechat】
    类型:【脚本】               #下拉选择“脚本”

    脚本名称【wechat.py】
    脚本参数
          参数               动作
          {ALERT.SENDTO}       【移除】
          {ALERT.SUBJECT}     【移除】
          {ALERT.MESSAGE}     【移除】
          【添加】
    已启用【√】          

    【添加】【取消】             #点击添加              

    添加完后,点击右边测试(没有测试按钮的属于zabbix版本过低)
    发送用户:LiuZongLiang         #发送接收的企业微信成员

    配置二:用户关联

    1.点击:
    【管理】——》【用户】--》【别名】
    2进入后,点击用户右边【报警媒介】
    3.添加

    类型:wechat
    收件人:LiuZongLiang             #添加企业微信成员
    当启用时间
    1-7,00:00-24:00
    如果存在严重性则使用如下
    v【未分类】
    v【信息】
    v【警告】
    v【一般严重】
    v【严重】
    v【灾难】
    点击【已启用】
    点击【添加】

    配置三:动作配置

    点击:
    1.【动作】——》【名称】——》【触发器或者触发名称】——》[添加]——》【已启用】
    然后点击【操作】——》【新的】——》【操作类型】——》【发送到用户群组】——》【用户】——>【仅送到所有】改为【wechat】——》点击[添加]——》【恢复操作】....——》【更新操作】——》【添加】
    完成

    七.QQ邮箱发送告警

    【7-1】开启功能
    1.点击【QQ】——》【邮箱】--》【设置】——》【账户设置】
    开启服务:

    POP3/SMTP服务 (如何使用 Foxmail 等软件收发邮件?) 已关闭 | 开启
    IMAP/SMTP服务 (什么是 IMAP,它又是如何设置?)     已关闭 | 开启
    2.点击右边开启,然后会随机生成一个一长串的密码【figpneovepwwbecd】
    【7-2】配置页面
    【提示:】打√号的为选择方式
    1.点击zabbix-web界面版
    点击【管理】——》【创建媒体类型】——》

    报警媒介类型
    报警媒介类型选项
    【名称】:QQ邮箱                                         #自定义为QQ邮箱
    【类型】:电子邮件                                         #类型选择电子邮件
    【SMTP服务器】: smtp.qq.com                             #填写smtp.qq.com
    【SMTP服务器端口】:465                                   #端口号:456
    【SMTP HELO】:qq.com                                   #qq.com
    SMTP电邮: 5435435@qq.com                               #邮箱

    安全链接 【无STARTTLS(纯文本通信协议扩展)】 [√]【SSL/TLS】   #安全连接选择SSl和TLS,下面两个SSL验证对端,和SSL验证主机打钩
    SSL验证对端[√]

    SSL验证主机[√]


    认证:【无】 [√]【用户名和密码】                           #选择用户名密码认证,下面数据用户名和密码

    用户名称 5435435@qq.com
    密码   figpneovepwwbecd
    Message format
    【HTML】【文本】
    已启用[√]

    【添加】 【取消】


    【添加完成后,右边有个测试的按钮,测试发送邮件是否成功
    如果没有测试按钮的,属于zabbix版本过低,升级服务即可
    【7-3】用户配置
    1.测试成功后——》点击【配置】——》【用户】--》【Admin】——》右边【报警媒介】
    2.点击【添加】
    报警媒介
            类型: QQ邮箱

          收件人 【5435435@qq.com】             移除
                添加

          当启用时 【1-7,00:00-24:00】
    如果存在严重性则使用【】未分类
                  【】信息
                  【√】警告
                  【√】一般严重
                  【√】严重
                  【√】灾难

              已启用【√】

                                        【添加】 【取消】
    【8-4】动作配置
    点击:
    1.【动作】——》【名称】——》【触发器或者触发名称】——》[添加]——》【已启用】
    然后点击【操作】——》【新的】——》【操作类型】——》【发送到用户群组】——》【用户】——>【仅送到所有】改为【wechat】——》点击[添加]——》【恢复操作】....——》【更新操作】——》【添加】
    完成
  • 相关阅读:
    党报
    一个人只有敢于承担责任,才有可能被赋予更大的责任。做不
    勇于担当:好男人的三块责任田——
    关于担当
    领导干部要勇于担当
    福布斯专访阿里蔡崇信:马云的坚持和改变
    阿里股权
    ContentProvider
    搞笑段子
    报业
  • 原文地址:https://www.cnblogs.com/zongliang-ya/p/0754baa3385fe5e4f389917806c1b4e9.html
Copyright © 2011-2022 走看看