zabbix监控

部署

中间件搭建

前端管理LNMP

  1. 安装:

    yum -y install gcc pcre-devel zlib-devel openssl-devel mariadb-devel php
    yum -y install php-fpm php-mysql mariadb-server
    mkdir  /data
    tar -xvf nginx-1.12.2.tar.gz -C /data/
    cd /data/nginx-1.12.2/
    ./configure --with-http_ssl_module --prefix=/data/nginx
    make && make install
    
  2. 配置文件

    vim /data/nginx/conf/nginx.conf
    http {
    fastcgi_buffers 8 16k;
    	fastcgi_buffer_size 32k;
    	fastcgi_connect_timeout 300;
    	fastcgi_send_timeout 300;
    	fastcgi_read_timeout 300;
    ...
     server {
            listen       80;
            server_name  localhost;
            location / {
                root   html/zabbix;
                index  index.html index.htm;
            }
    location ~ \.php$ {
    	root           html/zabbix;
    	fastcgi_pass   127.0.0.1:9000;
    	fastcgi_index  index.php;
    	include        fastcgi.conf;
    }
    
  3. 启动

    systemctl start php-fpm
    systemctl enable php-fpm
    
    #/data/nginx/sbin/nginx
    #配置systemctl
    vim /usr/lib/systemd/system/nginx.service
    [Unit]
    #服务名
    Description=nginx
    #在网络启动以后启动
    After=network.target
    [Service]
    Type=forking
    ExecStart=/data/nginx/sbin/nginx
    ExecReload=/data/nginx/sbin/nginx -s reload
    ExecStop=/data/nginx/sbin/nginx -s quit
    [Install]
    WantedBy=multi-user.target
    
    
    systemctl daemon-reload
    /data/nginx/sbin/nginx  -s stop
    systemctl start nginx.service 
    systemctl status nginx.service 
    systemctl enable nginx.service
    

Zabiix安装

  1. 创建zabbix用户

    groupadd zabbix
    useradd -g zabbix -s /sbin/nologin zabbix
    mkdir /data/zabbix
    chown -R zabbix:zabbix  /data/zabbix
    
  2. 安装:

    yum -y install curl-devel  net-snmp-devel  libevent-devel go library libxml2
    tar -xvf zabbix-4.4.0.tar.gz  -C /data
    cd /data/zabbix-4.4.0/
    ./configure --prefix=/data/zabbix --with-mysql --with-net-snmp  --with-libcurl 					--enable-server 	--enable-agent --enable-proxy --enable-java
    make install
    
  3. Zabiix初始化准备

    #创建数据库与数据库连接账户
    mysql -uroot -p'mtxx87668438'
    4.4版本:create database zabbix character set utf8mb4;
    4.4版本:create user 'zabbix'@'%' identified by 'zabbix';
    4.4版本:grant all privileges on zabbix.* to 'zabbix'@'%';
    create database zabbix character set utf8 collate utf8_bin;
    create user 'zabbix'@'%' identified by 'zabbix';
    grant all privileges on zabbix.* to 'zabbix'@'%';
    
    cd /data/zabbix-4.4.0/database/mysql/
    mysql -uroot -p'mtxx87668438' zabbix < schema.sql
    mysql -uroot -p'mtxx87668438' zabbix < images.sql
    mysql -uroot -p'mtxx87668438' zabbix < data.sql
    
  4. 上线zabbix页面

    mkdir /data/nginx/html/zabbix
    4.4版本:cp -a /data/zabbix-4.4.0/frontends/php/* /data/nginx/html/zabbix/
    cp -a ui/* /home/nginx/html/zabbix5/
    chmod -R 777 /data/nginx/html/zabbix
    

    #图表字符乱码的解决办法

    上传simkai.ttf到/data/nginx/html/zabbix/assets/fonts
    mv /data/nginx/html/zabbix/assets/fonts/DejaVuSans.ttf 
    /data/nginx/html/zabbix/assets/fonts/DejaVuSans.ttf.bak
    mv simkai.ttf  DejaVuSans.ttf
    vim /data/nginx/html/zabbix/include/defines.inc.php
    
  5. 解决zabbix依赖

    yum -y install php-gd php-xml php-ldap php-bcmath php-mbstring
    vim /etc/php.ini
    date.timezone = Asia/Shanghai
    max_execution_time = 300
    post_max_size = 32M
    max_input_time = 300
    
    
    systemctl restart php-fpm
    
  6. 图形安装:访问

    http://192.168.10.163:15010/setup.php
    zabbix监控_第1张图片
    zabbix监控_第2张图片

  7. Zabbix配置文件:

    vim /data/zabbix/etc/zabbix_server.conf
    DBHost=192.168.10.162
    ListenPort=10051				#zabbix server监听端口
    LogFile=/tmp/zabbix_server.log	#zabbix server日志路径
    DBName=zabbix					#zabbix server连接MySQL数据库的数据库名
    DBUser=zabbix					#zabbix server连接MySQL数据库的用户名
    DBPassword=zabbix				#zabbix server连接MySQL数据库的密码
    StartPollers=5	
    #用于设置zabbix server服务启动时启动Pollers(主动收集数据进程)的数	量,数量越多,则服务端吞吐能力越强,同时对系统资源消耗越大
    StartTrappers=100
    #用于设置zabbix server服务启动时启动Trappers(负责处理Agentd推送过	来的数据的进程)的数量。Agentd为主动模式时,zabbix server需要设置这	个值大一些。
    StartDiscoverers=10
    #用于设置zabbix server服务启动时启动Discoverers进程的数量,如果zabbix	监控报Discoverers进程忙时,需要提高该值。
    ListenIP=0.0.0.0
    #zabbix server启动的监听端口对哪些ip开放,Agentd为主动模式时,这个	值建议设置为0.0.0.0
    AlertScriptsPath=/data/zabbix/share/zabbix/alertscripts 
    	#zabbix server运行脚本存放目录,一些供zabbix server使用的脚本,都可		以放在这里。
    #JavaGateway=192.168.3.14
    #JavaGatewayPort=10052
    #StartJavaPollers=5
    #Include=/usr/local/etc/zabbix_server.conf.d/*.conf
    CacheSize=2048M
    Timeout=30
    

    修改日志级别

    vim lib/logback.xml 
    "debug">
      -ref ref="FILE" />
    </root>
    
  8. 加入service命令

    cp /data/zabbix-4.4.0/misc/init.d/fedora/core/zabbix_server  /etc/init.d/
    cp  /data/zabbix-4.4.0/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
    vim /etc/init.d/zabbix_server
    BASEDIR=/data/zabbix
    PIDFILE=/tmp/$BINARY_NAME.pid
    vim /etc/init.d/zabbix_agentd
    BASEDIR=/data/zabbix
    PIDFILE=/tmp/$BINARY_NAME.pid
    chkconfig --add zabbix_server 
    chkconfig --add zabbix_agentd
    chkconfig zabbix_agentd on
    chkconfig zabbix_server on
    
    vim /usr/lib/systemd/system/zabbix-server.service
    [Unit]
    Description=Zabbix Server
    After=syslog.target
    After=network.target
    
    [Service]Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_server.conf"
    EnvironmentFile=-/usr/local/zabbix/sbin/zabbix_server
    Type=forking
    Restart=on-failure
    PIDFile=/tmp/zabbix_server.pid
    KillMode=control-group
    ExecStart=/usr/local/zabbix/sbin/zabbix_server -c $CONFFILE
    ExecStop=/bin/kill -SIGTERM $MAINPID
    RestartSec=10s
    
    [Install]
    WantedBy=multi-user.target
    
    vim /usr/lib/systemd/system/zabbix-agent.service
    [Unit]
    Description=Zabbix Agent
    After=syslog.target
    After=network.target
    
    [Service]
    Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_agentd.conf"
    EnvironmentFile=-/usr/local/zabbix/sbin/zabbix_agentd
    Type=forking
    Restart=on-failure
    PIDFile=/tmp/zabbix_agentd.pid
    KillMode=control-group
    ExecStart=/usr/local/zabbix/sbin/zabbix_agentd -c $CONFFILE
    ExecStop=/bin/kill -SIGTERM $MAINPID
    RestartSec=10s
    
    [Install]
    WantedBy=multi-user.target
    
    vim /data/zabbix/etc/zabbix_agentd.conf
    Server=192.168.10.163
    #主动监控时开启
    #ServerActive=192.168.10.163
    Hostname=Zabbix servers
    EnableRemoteCommands=1
    UnsafeUserParameters=1
    RefreshActiveChecks=120
    #HostMetadataltem=System.uname
    Timeout=30
    
  9. 启动:

    systemctl daemon-reload
    systemctl start zabbix-agent.service
    systemctl start zabbix-server.service
    
  10. 禁用该无用用户
    zabbix监控_第3张图片

ZabbixProxy分布式监控安装

  1. 安装相关依赖

    yum -y install gcc pcre-devel zlib-devel openssl-devel mariadb-devel php
    yum -y install php-fpm php-mysql mariadb-server
    
  2. ZabiixProxy安装

    #创建zabbix用户
    groupadd zabbix
    useradd -g zabbix -s /sbin/nologin zabbix
    mkdir /data/zabbix
    chown -R zabbix:zabbix  /data/zabbix
    #安装:
    yum -y install curl-devel  net-snmp-devel  libevent-devel go library libxml2
    tar -xvf zabbix-4.4.0.tar.gz  -C /data
    cd /data/zabbix-4.4.0/
    ./configure --prefix=/data/zabbix --with-mysql --with-net-snmp  --with-libcurl 					--enable-agent --enable-proxy --enable-java
    make install
    
  3. ZabiixProxy初始化准备

    #创建数据库与数据库连接账户
    mysql -uroot -p'mtxx87668438'
    4.4版本:create database zabbixproxy character set utf8mb4;
    4.4版本:create user 'zabbixproxy'@'%' identified by 'zabbixproxy';
    4.4版本:grant all privileges on zabbixproxy.* to 'zabbixproxy'@'%';
    create database zabbixproxy character set utf8 collate utf8_bin;
    create user 'zabbixproxy'@'%' identified by 'zabbixproxy';
    grant all privileges on zabbixproxy.* to 'zabbixproxy'@'%';
    
    cd /data/zabbix-4.4.0/database/mysql/
    mysql -uroot -p'mtxx87668438' zabbixproxy < schema.sql
    
  4. zabbix-proxy的配置

    vim etc/zabbix_proxy.conf
    Server=zabbixserver的ip
    ListenPort=10051
    LogFile=/tmp/zabbix_proxy.log
    Hostname=XXXXzabbix_proxy
    DBHost=192.168.231.21
    DBName=zabbix_proxy
    DBUser=zabbix_proxy
    DBPassword=zabbix_proxy
    #代理每120s内从zabbix服务器检索配置数据
    ConfigFrequency=120
    #代理每60s发送收集到的数据到服务器
    DataSenderFrequency=60
    #用于设置服务启动时启动Pollers(主动收集数据进程)的数	量,数量越多
    #则服务端吞吐能力越强,同时对系统资源消耗越大
    StartPollers=5	
    #用于设置服务启动时启动Trappers(负责处理Agentd推送过来的数据的进程)的数量。	#Agentd为主动模式时,需要设置这个值大一些。
    StartTrappers=100
    #用于设置服务启动时启动Discoverers进程的数量,如果zabbix监控报Discoverers进	#程忙时,需要提高该值。
    StartDiscoverers=10
    #zabbix server启动的监听端口对哪些ip开放,Agentd为主动模式时,
    #这个值建议设置为0.0.0.0
    ListenIP=0.0.0.0
    #Include=/usr/local/etc/zabbix_server.conf.d/*.conf
    CacheSize=2048M
    Timeout=30
    
  5. 加入service命令

    vim /usr/lib/systemd/system/zabbix-proxy.service
    [Unit]
    Description=Zabbix Proxy
    After=syslog.target
    After=network.target
    
    [Service]
    Environment="CONFFILE=/codebackup/code/zabbix/etc/zabbix_proxy.conf"
    EnvironmentFile=-/codebackup/code/zabbix/sbin/zabbix_proxy
    Type=forking
    Restart=on-failure
    PIDFile=/tmp/zabbix_proxy.pid
    KillMode=control-group
    ExecStart=/codebackup/code/zabbix/sbin/zabbix_proxy -c $CONFFILE
    ExecStop=/bin/kill -SIGTERM $MAINPID
    RestartSec=10s
    
    [Install]
    WantedBy=multi-user.target
    
  6. 启动:

    systemctl daemon-reload
    		systemctl start zabbix-proxy.service
    
  7. Server添加代理

    zabbix监控_第4张图片

Zabbix客户端安装

  1. 上传zabbix-agent-4.4.1-1.el7.x86_64.rpm

    yum -y install zabbix-agent-4.4.10-1.el7.x86_64.rpm
    
  2. 配置

    vim /etc/zabbix/zabbix_agentd.conf
    Server=192.168.10.163
    #主动监控时开启
    ServerActive=192.168.10.163
    StartAgents=0
    #120刷新频率
    RefreshActiveChecks=120
    Hostname=test2for221
    ListenPort=10050
    EnableRemoteCommands=1
    UnsafeUserParameters=1
    #HostMetadataltem=System.uname
    Timeout=30
    
  3. 启动

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

监控交换机路由器客户端安装(以snmp监控方式)

  1. 安装并开启

使用

服务器网络、硬件资源监控

  1. 添加监控主机

    添加主机群组
    zabbix监控_第5张图片

    添加主机
    zabbix监控_第6张图片

  2. 添加监控项

    zabbix监控_第7张图片zabbix监控_第8张图片

  3. 创建图形
    zabbix监控_第9张图片zabbix监控_第10张图片

  4. 创建触发器

    zabbix监控_第11张图片
    zabbix监控_第12张图片

  5. 创建告警

    查看报警脚本存放位置

    vim /data/zabbix/etc/zabbix_server.conf
    AlertScriptsPath=/data/zabbix/share/zabbix/alertscripts
    

    创建告警脚本
    zabbix监控_第13张图片
    zabbix监控_第14张图片
    zabbix监控_第15张图片
    zabbix监控_第16张图片

    zabbix监控_第17张图片

  6. 创建监控模板

    创建代理
    zabbix监控_第18张图片

    agent代理程序名称要和zabbix-proxy配置文件中的Hostname相同,且代理地址是本机IP地址
    zabbix监控_第19张图片

    创建完成,proxy会向server端主动发送数据,并拉取配置,可以从日志/var/log/zabbix/zabbix_proxy.log查看信息

    zabbix监控_第20张图片

  7. 创建聚合图形

    Cpu
    CPU utilization-CPU利用率
    Load average (5m avg)-平均负荷(平均5m)
    Number of CPU-CPU数量

    磁盘
    Disk read rate-磁盘读取率
    Disk utilization–磁盘利用率
    Disk write rate-磁盘写入速率

    文件系统
    Space utilization-空间利用率
    Total space-总空间

    进程
    Maximum number of open file descriptors-打开的文件描述符的最大数目
    Maximum number of processes-最大进程数
    Number of logged in users-登录用户数
    Number of processes-进程数
    Number of running processes-正在运行的进程数

    网卡
    Bits received-接收的数据量
    Bits sent-已发送的数据量

    内存
    Available memory-可用内存
    Free swap space in %-可用交换空间百分比
    Memory utilization-内存利用率

数据库监控

Zabbix监控mysql-进入要监控mysql机器

  1. 添加Template DB MySQL模板

    #mysql监控用户创建
    GRANT USAGE ON *.* TO 'zabbixmonitor'@'%' IDENTIFIED BY 'a';
    FLUSH PRIVILEGES;
    
  2. 配置

    vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
    UserParameter=mysql.ping[*], /data/mysql-5.7.22/bin/mysqladmin -h"localhost" -u"zabbixmonitor" -P"3306" -p"a" ping
    UserParameter=mysql.get_status_variables[*], /data/mysql-5.7.22/bin/mysql -h"localhost" -u"zabbixmonitor" -P"3306" -p"a" -sNX -e "show global status"
    UserParameter=mysql.version[*], /data/mysql-5.7.22/bin/mysqladmin -s -h"localhost" -u"zabbixmonitor" -P"3306" -p"a" version
    UserParameter=mysql.db.discovery[*], /data/mysql-5.7.22/bin/mysql -h"localhost" -u"zabbixmonitor" -P"3306" -p"a" -sN -e "show databases"
    UserParameter=mysql.dbsize[*], /data/mysql-5.7.22/bin/mysql -h"localhost" -u"zabbixmonitor" -P"3306" -p"a" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
    UserParameter=mysql.replication.discovery[*], /data/mysql-5.7.22/bin/mysql -h"localhost" -u"zabbixmonitor" -P"3306" -p"a" -sNX -e "show slave status"
    UserParameter=mysql.slave_status[*], /data/mysql-5.7.22/bin/mysql -h"localhost" -u"zabbixmonitor" -P"3306" -p"a" -sNX -e "show slave status"
    
  3. 重启zabbix agent

    systemctl restart zabbix-agent
    

网络硬件监控

zabbix监控交换机路由器
要监控路由器交换机,需要使用到SNMP协议
SNMP是一个简单网络管理协议,他基于C/S模型实现的监控和管理.

  1. 服务器安装SNMP:

    yum -y install net-snmp net-snmp-utils net-snmp-agent-libs net-snmp-libs
    echo "view  systemview  included   .1" >> /etc/snmp/snmpd.conf
    systemctl start snmpd
    
  2. web界面添加: 在zabbix server web添加监控机

    点击 配置—>主机—>创建主机 开始添加被监控机
    zabbix监控_第21张图片
    zabbix监控_第22张图片

    根据图示,填写主机的信息,这里监控方法选在SNMP,别忘了添加监控模板
    zabbix监控_第23张图片

    模板选在根据自己的设备类型,一定选snmp类型的模板
    zabbix监控_第24张图片

    添加成功了,可是还没有数据。稍等一会。需要刷新一下
    zabbix监控_第25张图片

    如果你看不到数据,请检查防火墙、selinux。或者通过snmpwalk测试以下zabbix server 服务器的snmp 客户端是否能收到snmp服务器的数据
    在zabbix server上执行.(如果没有这个命令,请安装net-snmp-utils)
    snmpwalk -v 2c -c public 192.168.10.41
    看是否有滚动数据输出,有说明ok,没有的话去检查两台机器的通信情况及snmp服务端是否启动

中间件监控

自定义监控docker
node配置

  1. 给zabbix 免密sudo的权限

    vim /etc/sudoers
    zabbix ALL=(root) NOPASSWD:/usr/bin/docker,/usr/bin/bash
    并且需要注释掉#Defaults requiretty这一行
    
  2. 添加脚本

    /sh/dockerStatus/docker.sh

    #!/bin/bash
    #获取网络发送超时包=NetTXOverruns(整数,个)
    #获取网络发送丢弃包=NetTXDropped(整数,个)
    #获取网络发送错误包=NetTXErrors(整数,个)
    #获取网络发送每秒流量=NetTXPackets(浮点数,单位M)
    #获取网络接收超时包=NetRXOverruns(整数,个)
    #获取网络接收丢弃包=NetRXDropped(整数,个)
    #获取网络接收错误包=NetRXErrors(整数,个)
    #获取网络接收每秒流量=NetRXPackets(浮点数,单位M)
    #获取容器cpu状态=CPUUsage(整数,单位%)
    #获取容器内存状态=MemUsage(整数,单位M)
    #######################初始化日志
    #获取容器基础资源
    sudo docker stats --no-stream | tail -n +2 > /sh/dockerStatus/dockerResources.cxk
    ifconfig > /sh/dockerStatus/dockerNet.cxk
    #chmod -R 777 /sh/dockerStatus/
    #######################变量
    #把容器名写入数组变量
    containers=(`cat /sh/dockerStatus/dockerResources.cxk | awk '{print $2}'`)
    #获取容器数目,因为从0开始所以-1,${#containers[@]}数组值个数
    let num=(${#containers[@]}-1)
    ###################################################自动发现函数
    discover(){
    	#seq 0 $num一行一行列出个数
    	for i in  `seq 0 $num` ; do
    		containerName[i]="{\"{#CONTAINERNAME}\":\"${containers[$i]}\"}"
    	done
    	#输出赋值后的所有,值之间以,分隔
    	echo "{\"data\":[${containerName[@]}]}" |tr ' ' ','
    }
    ####################################################资源使用查询函数
    containerstatus(){
    	#根据第一个位置变量(容器名)获取容器id
    	containerId=`sudo docker ps -a | grep $1 | head -n 1 | awk '{print $1}'`
    	#根据容器id获取容器网络id前12位
    	containerNetId=`sudo docker inspect $containerId | grep  NetworkID | awk -F':' '{print $2}' | awk -F'"' '{print substr($2,1,12)}'`
    	#根据第二个位置变量(状态值)获取容器状态
    	#######################容器开启、关闭状态
    	if  [ $2 == 'ping' ] ; then
    		#获取容器状态,true
    		statuscontainer=`sudo docker inspect --format="{{.State.Running}}" ${containerId}`
    		if [[ ${statuscontainer} == 'true' ]] ;then
    			#容器开启状态
    			echo 1
    		else 
    			#容器关闭状态
    			echo 0
    		fi
    	#######################获取容器内存状态
    	elif [[ $2 == 'MemUsage' ]] ; then
    		#sed  -r "s#(.*)([A-Z])iB.*iB#\1 \2#"转换为(值 单位符)
    		#判断单位符为M,输出值;为G,转换为M输出;为K转换为M输出
    		menValue=`cat /sh/dockerStatus/dockerResources.cxk | grep ${containerId} | awk -F '/' '{print $1}' | awk '{print $NF}' | sed  -r "s#(.*)([A-Z])iB#\1 \2#" | awk '{if ($2=="M") print $1; else if ($2=="G") print $1*1024 ; else if ($2=="K") print $1/1024 }' | awk -F '.' '{print $1}'` 
    		echo ${menValue}   
    	#######################获取容器cpu状态
    	elif [[ $2 == 'CPUUsage' ]] ; then
    		cpuValue=`cat /sh/dockerStatus/dockerResources.cxk | grep ${containerId} | awk -F '%' '{print $1}' | awk '{print $NF}' | awk -F '.' '{print $1}'`
    		echo ${cpuValue}
    	#######################获取网络状态
    	#获取网络接收每秒流量
    	elif [[ $2 == 'NetRXPackets' ]] ; then
    		#网络接收每秒流量单位M
    		NetRXPacketsValue=`cat /sh/dockerStatus/dockerNet.cxk | grep -A 7 $containerNetId | grep 'RX packets' | awk -F'RX packets' '{print $2}' | awk '{print $1/1024/1024}'`
    		echo ${NetRXPacketsValue}
    	#获取网络接收错误包
    	elif [[ $2 == 'NetRXErrors' ]] ; then
    		NetRXErrorsValue=`cat /sh/dockerStatus/dockerNet.cxk | grep -A 7 $containerNetId | grep RX | grep  errors | awk -F'errors' '{print $2}' | awk '{print $1}'`
    		echo ${NetRXErrorsValue}
    	#获取网络接收丢弃包
    	elif [[ $2 == 'NetRXDropped' ]] ; then
    		NetRXDroppedValue=`cat /sh/dockerStatus/dockerNet.cxk | grep -A 7 $containerNetId | grep RX | grep  dropped | awk -F'dropped' '{print $2}' | awk '{print $1}'`
    		echo ${NetRXDroppedValue}
    	#获取网络接收超时包
    	elif [[ $2 == 'NetRXOverruns' ]] ; then
    		NetRXOverrunsValue=`cat /sh/dockerStatus/dockerNet.cxk | grep -A 7 $containerNetId | grep RX | grep  overruns | awk -F'overruns' '{print $2}' | awk '{print $1}'`
    		echo ${NetRXOverrunsValue}
    	#获取网络发送每秒流量
    	elif [[ $2 == 'NetTXPackets' ]] ; then
    		#网络发送每秒流量单位M
    		NetTXPacketsValue=`cat /sh/dockerStatus/dockerNet.cxk | grep -A 7 $containerNetId | grep 'TX packets' | awk -F'TX packets' '{print $2}' | awk '{print $1/1024/1024}'`
    		echo ${NetTXPacketsValue}
    	#获取网络发送错误包
    	elif [[ $2 == 'NetTXErrors' ]] ; then
    		NetTXErrorsValue=`cat /sh/dockerStatus/dockerNet.cxk | grep -A 7 $containerNetId | grep TX | grep  errors | awk -F'errors' '{print $2}' | awk '{print $1}'`
    		echo ${NetTXErrorsValue}
    	#获取网络发送丢弃包
    	elif [[ $2 == 'NetTXDropped' ]] ; then
    		NetTXDroppedValue=`cat /sh/dockerStatus/dockerNet.cxk | grep -A 7 $containerNetId | grep TX | grep  dropped | awk -F'dropped' '{print $2}' | awk '{print $1}'`
    		echo ${NetTXDroppedValue}
    	#获取网络发送超时包
    	elif [[ $2 == 'NetTXOverruns' ]] ; then
    		NetTXOverrunsValue=`cat /sh/dockerStatus/dockerNet.cxk | grep -A 7 $containerNetId | grep TX | grep  overruns | awk -F'overruns' '{print $2}' | awk '{print $1}'`
    		echo ${NetTXOverrunsValue}
    	else 
    		echo '' > /dev/null
    	fi
    }
    ###############当有位置变量传入执行查询函数,没有执行发现函数
    if [ $# = 0 ];then
       discover
    else
       containerstatus $1 $2
    fi
    
  3. 添加自定义监控

    vim /etc/zabbix/zabbix_agentd.d/docker.conf
    UserParameter=docker.discovery,/bin/bash /sh/dockerStatus/docker.sh
    UserParameter=docker.[*],/bin/bash /sh/dockerStatus/docker.sh $1 $2
    
  4. 授权

    chmod -R 777 /sh/dockerStatus/
    
  5. 重启zabbix

    #Server端测试
    ./zabbix_get -s 192.168.10.117 -p 10050 -k "docker.discovery"
    ./zabbix_get -s 192.168.10.117 -p 10050 -k "docker.[resin_15322,MemUsage]"
    ./zabbix_get -s 192.168.10.117 -p 10050 -k "docker.[resin_15322,CPUUsage]"
    

server配置

  1. 新建摸板
    zabbix监控_第26张图片

  2. 新建应用集

    zabbix监控_第27张图片

  3. 新建自动发现规则(因为第一个位置变量是server传过去的,所以需要配置自动发现)

    zabbix监控_第28张图片

  4. 监控项

    zabbix监控_第29张图片

  5. 触发器

    zabbix监控_第30张图片

  6. 图形

    zabbix监控_第31张图片

自定义监控web并发量

  1. 创建自定义key

    #自定义key语法格式为:UserParameter=自定义key名称,命令
    vim /etc/zabbix/zabbix_agentd.d/count.line.passwd
    UserParameter=count.line.passwd,wc -l /etc/passwd | awk ' {print $1} '
    

    重启agent服务
    测试自定义key是否正常工作

    zabbix_get -s 127.0.0.1 -k count.line.passwd
    
  2. 创建监控

    zabbix监控_第32张图片

    创建应用
    在这里插入图片描述
    zabbix监控_第33张图片

    创建监控项目item(监控项)
    zabbix监控_第34张图片
    zabbix监控_第35张图片

    创建图形
    zabbix监控_第36张图片

    将模板链接到被监控主机
    zabbix监控_第37张图片
    zabbix监控_第38张图片

    查看监控数据图形
    zabbix监控_第39张图片

  3. Zabbix报警功能

    创建触发器
    zabbix监控_第40张图片

    触发器表达式格式如下:
    {:.()}
    {主机:key.函数(参数)}<表达式>常数
    可以直接手写,也可以通过add选择表达式模板
    zabbix监控_第41张图片

    案例:
    {web1:system.cpu.load[all,avg1].last(0)}>5 //0为最新数据
    如果web1主机最新的CPU平均负载值大于5,则触发器状态Problem
    {vfs.fs.size[/,free].max(5m)}<10G //5m为最近5分钟
    根分区,最近5分钟的最大容量小于10G,则状态进入Problem
    {vfs.file.cksum[/etc/passwd].diff(0)}>0 //0为最新数据
    最新一次校验/etc/passwd如果与上一次有变化,则状态进入Problem
    #avg, count, last, min and max 等函数支持额外的第二个参数 time_shift(时间偏移量),这个参数允许从过去一段时间内引用 数据。
    配置触发器
    设置触发器名称,点击add添加表达式,填写表达式:监控项为账户数量,最 近300秒账户数量大于26(根据系统账户数量实际填写)
    zabbix监控_第42张图片zabbix监控_第43张图片

  4. zabbix自定义监控端口并并发数

    vim /sh/bf80.sh
    #!/bin/bash
    ##获取80端口并发连接数
    netstat -ant |grep ':80' |grep -c ESTABLISHED
    chmod +x /sh/bf80.sh
    vim /etc/zabbix/zabbix_agentd.conf
    UserParameter=244.bf80.count[*],/sh/bf80.sh
    systemctl restart zabbix-agent
    #测试
    ./zabbix_get -s 192.168
    

喜欢的亲可以关注点赞评论哦!以后每天都会更新的哦!本文为小编原创文章; 文章中用到的文件、安装包等可以加小编联系方式获得;
欢迎来交流小编联系方式VX:CXKLittleBrother 进入运维交流群

你可能感兴趣的:(监控程序,zabbix,自定义监控)