zabbix 订阅
zabbix([`zæbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。zabbix由2部分构成,zabbix server与可选组件zabbix agent。zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。 展开全文
zabbix([`zæbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。zabbix由2部分构成,zabbix server与可选组件zabbix agent。zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
信息
外文名
zabbix
适用范围
网络
构    成
zabbix server与可选组件zabbix agent
功    能
系统监视
兼容平台
Linux,Solaris,HP-UX,
途    径
SNMP,zabbix agent,ping,端口监视等
zabbix安装使用
zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。zabbix agent可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD, OS X, Tru64/OSF1, Windows NT4.0, Windows (2000/2003/XP/Vista)等系统之上。zabbix server可以单独监视远程服务器的服务状态;同时也可以与zabbix agent配合,可以轮询zabbix agent主动接收监视数据(agent方式),同时还可被动接收zabbix agent发送的数据(trapping方式)。另外zabbix server还支持SNMP (v1,v2),可以与SNMP软件(例如:net-snmp)等配合使用。 [1] 
收起全文
精华内容
下载资源
问答
  • Zabbix

    千次阅读 多人点赞 2021-01-21 18:21:36
    Zabbix Zzbbix介绍 ​ Zabbix 是一款功能强大的分布式开源监控系统,一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。Zabbixzabbix server与可选组件zabbix agent部分组成。 zabbix ...

    小白玩转Zabbix

    Zzbbix介绍

    ​ Zabbix 是一款功能强大的分布式开源监控系统,一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。Zabbix由zabbix server与可选组件zabbix agent部分组成。

    zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。

    Zabbix组件

    Zabbix监控组件主要包括:Zabbix Server、Zabbix Proxy、Zabbix Agent;其中Zabbix Server包括:Web GUI、Database、Zabbix Server。

    在这里插入图片描述

    每个组件的作用:

    abbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;

    Database:用户存储所有配置信息,以及存储由Zabbix Server收集到的数据;

    Web GUI:Zabbix的interface接口,通常与Server运行在同一台主机上;

    Zabbix Proxy:常用于分布监控环境中,代理Server收集部分被监控的监控数据并统一发往Server端;(通常大于500台主机需要使用)

    Zabbix Agent:部署在被监控主机上,负责收集本地数据发往Server端或Proxy端

    Zabbix主要功能:

    ​ - CPU负荷

    ​ - 内存使用

    ​ - 磁盘使用

    ​ - 网络状况

    ​ - 端口监视

    ​ - 日志监视

    Zabbix监控原理

    Zabbix Agentd安装在被监控的主机上,Zabbix Agent负责定期收集客户端本地各项数据,并发送至Zabbix Server端,Zabbix Server收到数据,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。当Zabbix监控某个具体的项目,该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL 命令、Reboot、Restart、Install等)。

    Zabbix监控部署在系统中,包含常见的五个程序:zabbix_server、zabbix_agentd、zabbix_proxy、zabbix_get、zabbix_sender。

    五个程序的功能如下:

    zabbix server:zabbix服务端守护进程,其中zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy的数据最终都提交给zabbix server;

    zabbix agentd:客户端守护进程,负责收集客户端数据,例如:收集cpu负载、内存、硬盘使用情况等;

    zabbix proxy:zabbix分布式代理守护进程,通过大于500台主机,需要进行分布式监控架构部署;

    zabbix get:zabbix数据接收工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令;

    zabbix_get -s remote-IP -p port -k system.uname  #测试server端和agent端的连通性 
    -s  #agent端IP
    -p  #端口
    -l  #本机出去的IP,用于一台机器有多张网卡的情况
    -k  #键值
    

    zabbix sender:zabbix数据发送工具,用户发送数据给server或proxy端,通常用户耗时比较长的检查。

    Zabbix监控方式

    Zabbix分布式监控系统监控客户端的方式常见有三种:Agent、SNMP、IPMI。

    Agent:Zabbix可以基于自身zabbix_agent客户端插件监控OS的状态,例如CPU、内存、硬盘、网卡、文件等。

    SNMP:Zabbix通过SNMP协议监控网络设备或windows主机等。通过设定SNMP的参数将相关监控数据传送至服务端,交换机、防火墙等网络设备一般都支持SNMP协议。

    IPMI(Intelligent Platform Management Interface):智能平台管理接口,即主要应用于设备的物理特性,包括:温度、电压、电扇工作状态,电源供应以及机箱入侵等。IPMI最大的优势在于无论OS的开机还是关机状态下,只要接通电源就可以实现对服务器的监控。

    Zabbix工作模式

    Zabbix监控客户端分为主动监控与被动监控。Zabbix监控客户端默认为被动模式,可以修改为主动模式,只需要在客户端配置文件中添加 StartAgents=0。

    Zabbix主动模式:Agent主动请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy,zabbix agent首先向ServerActive配置的IP请求获取active items,获取并提交active items数据至server/proxy。

    Zabbix被动模式:Server向agent请求获取监控项的数据,agent返回数据,server打开一个TCP连接,Server发送请求agent.ping,Agent接收到请求并且响应,Server处理接收到的数据。

    Zabbix监控概念

    概念解释说明
    主机(host)被监控的网络设备,可以写IP或者DNS;
    主机组(host group)主机组用于管理主机,可以批量设置权限;
    监控项(item)具体监控项,items值由独立的keys进行识别;
    触发器(trigger)为某个items设置触发器,达到触发器会执行action动作;
    事件(event)例如达到某个触发器,称之为一个事件;
    动作(action)对于特定事件事先定义的处理方法,默认可以发送信息及发送命令;
    报警升级(escalation)发送警报或执行远程命令的自定义方案,如隔5分钟发送一次警报,共发送5次等。
    媒介(media)发送通知的方式,可以支持Mail、SMS、Scripts等;
    通知(notification)通过设置的媒介向用户发送的有关某事件的信息;
    远程命令达到触发器,可以在被监控端执行命令;
    模板(template)可以快速监控被监控端,模块包含:item、trigger、graph、screen、application;
    web场景(web scennario)用于检测web站点可用性,监控HTTP关键词;
    web前端(frontend)Zabbix的web接口;
    图形(graph)监控图像;
    屏幕(screens)屏幕显示;
    幻灯(slide show)幻灯显示

    Zabbix服务器端安装

    关闭防火墙及SELINUX

    systemctl stop firewalld #关闭防火墙服务
    systemctl disable firewalld #开机不启动
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #设置永不启动
    grep SELINUX=disabled /etc/selinux/config #查看SELINUX状态
    setenforce 0 #关闭当前SELINUX
    

    安装 LAMP 环境

    wget http://mirrors.163.com/.help/CentOS7-Base-163.repo  #配置163yum源
    yum clean all  #清除旧缓存
    yum makecache  #建立新缓存
    yum -y install mariadb mariadb-server httpd php php-mysql   #安装mariadb、apache、php
    systemctl start httpd && systemctl enable httpd  #启动apache并设置开机自启
    systemctl start mariadb && systemctl enable mariadb  #启动mariadb并设置开机自启
    mysql_secure_installation  #初始化mariadb
    

    下载Zabbix安装仓库

    rpm -ivh  http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm  #下载Zabbix yum源仓库
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX  #Zabbix秘钥	
    

    安装Zabbix-server

    在3.X版本中,没有单独的zabbix-server安装包,安装了zabbix-server-mysql即为安装了server端包。同时,我们可以在服务端安装zabbix_get包,以便向agent端发起测试。

    yum install -y zabbix-server-mysql #Zabbix-server安装
    
    创建Zabbix数据库并初始化
    mysql -uroot -p  #登录mariadb
    MariaDB [(none)]> CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;  #创建Zabbix数据库
    MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';  #授权用户
    MariaDB [(none)]> exit  #退出mariadb
    zcat /usr/share/doc/zabbix-server-mysql-3.2.11/create.sql.gz | mysql -uroot -p123 zabbix  #初始化Zabbix数据库
    #验证数据库数据(如果有表代表成功)
    MariaDB [(none)]> use zabbix;
    MariaDB [(none)]> show tables;
    
    修改Zabbix-server配置文件
    vim /etc/zabbix/zabbix_server.conf
    #和创建的zabbix数据库信息相对应
    DBHost=localhost  #数据库地址,如果数据库在另一台机器上,写IP
    DBName=zabbix  #数据库名称
    DBUser=zabbix  #数据库授权用户
    DBPassword=zabbix  #数据库授权用户密码
    
    启动Zabbix-server
    systemctl start zabbix-server  #启动Zabbix
    systemctl enable zabbix-server  #设置开机自启
    systemctl status zabbix-server  #查看Zabbix状态
    

    安装zabbix web

    yum install -y zabbix-web-mysql  #Zabbix连接apache的工具,在apache的存放配置文件的文件夹里会生成zabbix.conf
    
    同步时间

    编辑Zabbix前端的PHP配置,Zabbix前端的Apache配置文件位于 /etc/httpd/conf.d/zabbix.conf 。一些PHP设置已经完成了配置,重点是调整时区的配置,修改为亚洲上海。

    vim /etc/httpd/conf.d/zabbix.conf
    php_value date.timezone Asia/Shanghai  #修改时区为Asia/Shanghai(亚洲/上海)
    
    ntpdate -u ntp1.aliyun.com  #同步时间
    systemctl restart httpd #重启一下apache,使时间生效
    
    修改apache的默认目录

    不修改的话访问:ip/zabbix 修改以后:ip 直接访问

    vim /etc/httpd/conf/httpd.conf
    DocumentRoot "/usr/share/zabbix" #修改默认的网站根目录
    systemctl restart httpd  #重启apache
    
    解决中文乱码问题

    防止使用浏览器访问Zabbix的时候字符集显示的问题

    yum -y install wqy-microhei-fonts
    cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
    
    浏览器访问安装Zabbix

    在浏览器输入zabbix-server的ip,展示如下

    在这里插入图片描述

    点击下一步

    在这里插入图片描述

    所有php选项都显示OK,点击下一步

    在这里插入图片描述

    将连接数据库的信息填写完毕后,点击下一步

    在这里插入图片描述

    点击下一步

    在这里插入图片描述

    这一步会将之前填写的数据库信息打印出来,点击下一步

    在这里插入图片描述

    安装成功,据提示可以看到下面图形界面的操作都写到一个配置文件中,/etc/zabbix/web/zabbix.conf.php,点击finish会进入到登录界面

    在这里插入图片描述

    默认用户名:Admin,注意首字母大写,密码admin,点击登录

    登录进去以后,配置zabbix中文界面

    在这里插入图片描述

    点击Admin以后,做如下操作

    在这里插入图片描述

    做完以上操作后,重新在浏览器登录Zabbix即可出现中文界面

    客户端/服务端配置zabbix agent

    服务端安装zabbix-agent是为了监控自己

    下载Zabbix安装仓库

    rpm -ivh  http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm  #下载Zabbix yum源仓库
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX  #Zabbix秘钥	
    

    安装zabbix-agent

    yum install -y zabbix-agent #监控Zabbix客户端
    

    配置azbbix-agent

    vim /etc/zabbix/zabbix_agentd.conf  #修改agent配置文件
    Server=10.0.0.136 #zabbix服务端内网IP
    ServerActive=10.0.0.136  #zabbix服务端内网IP,Active表示agent主动推送
    Hostname=10.0.0.139  #zabbix客户端主机名称,需要和web端添加的名称一致,一般写自己ip
    

    启动zabbix-agent

    systemctl start zabbix-agent  #启动zabbix-agent
    systemctl enable zabbix-agent  #设置开机自启
    

    Zabbix应用

    监控主机

    Web端添加Linux主机
    配置 -->主机 --> 创建主机,按下图配置好后点击“更新”

    更新以后做如下操作:

    第一步:主机 -->创建主机

    在这里插入图片描述

    第二步:点击添加的主机 --> 模板 --> 选择 --> 添加 --> 更新,为主机添加监控模板

    在这里插入图片描述

    在这里插入图片描述

    还可以添加IPMI、宏、主机资产清单、加密方式

    应用集:说白了就是监控项,你要监控什么内容

    监控项:当你的监控内容达到了什么条件,会触发什么样的操作,比如:警告,发送短信等待

    图形:将监控的内容以图形的方式展示出来,清晰,对于监控项的变化过程一目了然

    监控磁盘

    添加监控项

    配置-主机-监控项-创建监控项
    名称随意,其他看图片,配置完点“更新“,键值:vfs.fs.size[/,pused]

    在这里插入图片描述

    触发器

    配置磁盘使用超过80%的触发器,超过报警

    在这里插入图片描述

    图形化展示

    在这里插入图片描述

    监控服务器CPU

    监控项

    键值:system.cpu.util[,idle]

    在这里插入图片描述

    触发器

    超过85%报警,表达式:{172.18.0.113:system.cpu.util[,idle].avg(1m)}<15

    在这里插入图片描述

    图形化展示

    在这里插入图片描述

    Zabbix载入模块监控apache

    专门为Zabbix监控Apache的模板,对于一个已经写好的模板来说,安装的思路大同小异

    下载地址:https://codeload.github.com/lorf/zapache/zip/master

    Zabbix–agent端

    解压zapache软件包

    tar xf zapache-master.zip  #解压软件包
    cd zapache-master && ll
    httpd-server-status.conf.sample  #监控Apache状态的配置文件
    README.md  #说明文件
    userparameter_zapache.conf.sample  #zabbix需要调用的文件
    zapache
    zapache-template-active.xml  #主动模式监控模板文件
    zapache-template.xml  #被动模式监控模板文件
    

    将apache和模板相关联

    yum install -y httpd #安装apache
    cp httpd-server-status.conf.sample /etc/httpd/conf.d/  #将监控apache状态的配置文件移动到conf.d/目录下,默认http.conf会调用conf.d/目录下的文件
    cd /etc/httpd/conf.d/
    mv httpd-server-status.conf.sample httpd-server-status.conf  #改名,为*.conf结尾的文件
    vim httpd-server-status.conf
    <Location /server-status>
        SetHandler server-status
        Order deny,allow
        Deny from all  #删除这项,默认拒绝访问
        Allow from 10.0.0.0/24 127.0.0.1  #设置允许访问的IP
    </Location>
    

    将模板的执行脚本放在/usr/bin/下

    cp zapache-master/zapache /usr/bin/
    chmod +x /usr/bin/zapache #方便调用,拥有执行权限
    

    将zabbix和模板相关联

    cp userparameter_zapache.conf.sample /etc/zabbix/zabbix_agentd.d/  #将关联的配置文件放到zabbix-agent能够调用的目录下
    cd /etc/zabbix/zabbix_agentd.d/
    mv userparameter_zapache.conf.sample userparameter_zapache.conf  #更改名称
    vim userparameter_zapache.conf
    UnsafeUserParameters=1  #将自定义的模板选项打开*******************************
    UserParameter=zapache[*],/usr/bin/zapache \$1  #修改脚本的执行路径为/usr/bin/zapache
    

    重启zabbix-agent

    systemctl restart zabbix-agent  
    

    将zapache-template.xml模板导入zabbix-server端

    在zabbix-agent端解压的软件包中有zapache-template.xml模板

    通过浏览器导入

    在这里插入图片描述

    这样这个apache的监控模板就可以正常监控apache了

    Zabbix-server端自动发现配置

    应用场景:大量的主机加入到监控中,对于自动发现来说是比较方便的

    这里我们需要先创建自动发现后的动作(发现主机后,怎么监控,怎么操作),如果配置自动发现的话,配置动作没有意义了,仔细体会

    配置动作

    浏览器操作:配置 --> 动作

    在这里插入图片描述

    在这里插入图片描述

    点击操作以后

    在这里插入图片描述

    至此,动作的配置已经全部操作完毕,下一步就该配置自动发现规则了

    配置自动发现规则

    浏览器操作:配置 --> 选择自动发现 -->创建
    在这里插入图片描述

    到此,自动发现主机的过程已经全部操作完毕

    检查是否能够被发现

    在这里插入图片描述

    Zabbix报警设置

    在这里插入图片描述

    下一步:

    在这里插入图片描述

    Zabbix设置将监控的数据放在一个屏幕

    这就是聚合图形的功能了

    点击监控中 --> 聚合图形 --> 创建

    在这里插入图片描述

    下一步

    点击生成的聚合图形

    在这里插入图片描述

    下一步

    编辑聚合图形

    在这里插入图片描述

    下一步

    增加想看的信息即可,都会在一个页面中显示

    在这里插入图片描述

    Zabbix监控MySQL

    在客户端安装zabbix-agent和MySQL

    在MySQL创建授权用户

    mysql> GRANT ALL ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix';
    mysql> FLUSH PRIVILEGES;  #刷新权限
    

    创建Zabbix连接MySQL的配置文件

    vim /etc/zabbix/.my.cnf  #注意这里的配置文件为.my.cnf
        [client]
        user=zabbix   #MySQL授权用户
        password=zabbix  #MySQL授权用户密码
    

    配置MySQL监控文件

    在Zabbix-agent端的MySQL的收集方案没有集成在Zabbix-agent的配置文件中,而是单独写在了一个配置文件:userparameter_mysql.conf

    cd /etc/zabbix/zabbix_agentd.d/
    vim userparameter_mysql.conf  #修改两处HOME=为/etc/zabbix,因为MySQL的收集配置文件在/etc/zabbix下
    UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/etc/zabbix mysql -N | awk '{print $$2}'  #将HOME路径修改为/etc/zabbix
    UserParameter=mysql.ping,HOME=/etc/zabbix mysqladmin ping | grep -c alive  #将HOME路径修改为/etc/zabbix
    

    启动Zabbix-agent端

    systemctl start zabbix-agent  #启动zabbix
    netstat -antp | grep 10050  #检查是否开启,端口为10050
    

    Zabbix-server端

    正常添加主机,在监控的模板里,选择"Template App MySQL",这个模板是专门为MySQL监控设置的

    Zabbix监控Nginx

    Zabbix监控Nginx的话会用到Nginx的统计模块,即:–with-http_stub_status_module,通过对统计模块信息的筛选进行统计

    安装Nginx

    yum install -y pcre pcre-devel zlib zlib-devel  #安装依赖
    tar xf nginx-1.12.0.tar.gx
    cd nginx-1.12.0
    useradd -s /sbin/nologin -M nginx
    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
    make && make install	
    vim /usr/local/nginx/conf/nginx.conf
    	location /ngx_status {  #添加统计模块
    		stub_status on;
    	}
    

    编写截取统计模块信息的脚本

    #!/bin/bash	 
    HOST="127.0.0.1"
    PORT="80"	 
    # 检测 nginx 进程是否存在
    function ping {
    	/sbin/pidof nginx | wc -l 
    }
    # 检测 nginx 性能
    function active {
    	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
    }
    	
    function reading {
    	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
    }
    	
    function writing {
    	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
    }
    	
    function waiting {
    	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
    }
    
    function accepts {
    	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
    }
    
    function handled {
    	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
    }
    	
    function requests {
    	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
    }
    
    # 执行function
    $1  #脚本中的位置参变量,输入那个函数的名称,就会执行那个函数
    

    将脚本应用到zabbix-agent监控

    mv check.sh /etc/zabbix/zabbix_agentd.d/  #将执行的脚本放在这个路径下(非必要)
    vim /etc/zabbix/zabbix/zabbix_agentd.conf
    UnsafeUserParameters=1  #将自定义模板的选项取消注释并开启(0改为1)
    UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/check.sh $1  #定义监控模板的键值以及,执行的脚本,nginx.status[*]就是定义的键值,这个键值需要从服务端的监控模板中添加,/etc/zabbix/zabbix_agentd.d/check.sh是监控nginx需要执行的脚本,$1是位置参变量的值,向脚本传递。键值中的*,就代表$1中的值。
    

    启动zabbix-agent

    systemctl start zabbix-agent  #启动zabbix-agent
    

    Zabbix-server端测试连通性

    yum install -y zabbix-get #安装测试工具
    zabbix-get -s 10.0.0.139 -p 10050 -k nginx.status[ping]
    

    Zabbix-server端创建nginx模板

    在这里插入图片描述

    创建完模板以后,点击创建的模板

    依次添加相应的应用集、监控项、触发器、图形等待

    在这里插入图片描述

    添加监控项

    在这里插入图片描述

    添加触发器

    在这里插入图片描述

    添加图形

    在这里插入图片描述

    为nginx服务器添加nginx模板

    在这里插入图片描述

    Zabbix连接钉钉报警

    在钉钉创建群组,添加机器人

    创建连接脚本

    vim zabbix.sh
    #!/bin/bash
    to=$1
    subject=$2
    text=$3
    curl 'https://oapi.dingtalk.com/robot/send?access_token=bd1cc823d23c19c50e6c04f8b79c4f9f755484712ca8c60936fc41d64d15b578' \
        -H 'Content-Type: application/json' \
        -d '
        {"msgtype": "text",
            "text": {
                "content": "'"$text"'"
            },
            "at":{
                "atMobiles": [ 
                    "'"$1"'" 
            ],
            "isAtAll": false
            }
        }'
    

    将脚本放入指定路径下

    vim /etc/zabbix/zabbix_server.conf 
    AlertScriptsPath=/usr/lib/zabbix/alertscripts  #查看这一项得知,zabbix-server会应用这个路劲下的脚本,所以要将通知钉钉的脚本放到这个路径下	
    
    mv zabbix.sh /usr/lib/zabbix/alertscripts  #将脚本放入指定目录
    cd /usr/lib/zabbix/alertscripts
    chmod +x zabbix.sh
    chown zabbix.zabbix zabbix.sh
    

    在这里插入图片描述

    添加钉钉为报警项

    # 添加以下3个参数,分别对应脚本需要的 3 个参数:收件人地址、主题、详细内容
    # {ALERT.SENDTO}
    # {ALERT.SUBJECT}
    # {ALERT.MESSAGE}
    

    在这里插入图片描述

    创建报警动作

    在这里插入图片描述

    设置动作操作

    设置发送钉钉信息的报警级别

    在这里插入图片描述

    设置动作的操作内容

    # 标题改为:
    故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
    # 信息改为:
    告警主机:{HOSTNAME1}
    告警时间:{EVENT.DATE} {EVENT.TIME}
    告警等级:{TRIGGER.SEVERITY}
    告警信息: {TRIGGER.NAME}
    告警项目:{TRIGGER.KEY1}
    问题详情:{ITEM.NAME}:{ITEM.VALUE}
    当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}		
    事件 ID:{EVENT.ID}
    zabbix #在钉钉设置的关键字
    

    在这里插入图片描述

    主机恢复报警

    # 标题改为
    恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
    
    # 信息改为
    告警主机:{HOSTNAME1}
    告警时间:{EVENT.DATE} {EVENT.TIME}
    告警等级:{TRIGGER.SEVERITY}
    告警信息: {TRIGGER.NAME}
    告警项目:{TRIGGER.KEY1}
    问题详情:{ITEM.NAME}:{ITEM.VALUE}
    当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
    事件 ID:{EVENT.ID}
    zabbix #在钉钉设置的关键字
    

    在这里插入图片描述

    设置发送权限

    管理 --> 用户 --> admin --> 报警媒介 --> 添加

    在这里插入图片描述

    展开全文
  • zabbix

    千次阅读 2018-09-22 10:07:58
    zabbix 3.4 安装 1、安装源码库配置部署包 #rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.noarch.rpm 2、安装zabbix部署包 #yum install zabbix-server-mysql zabbix-web-...

    zabbix 3.4 安装

    1、安装源码库配置部署包

    #rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.noarch.rpm
    

    2、安装zabbix部署包

     #yum install zabbix-server-mysql zabbix-web-mysql
    

    3、安装初始化数据库

    • 设置存储库
    #vim /etc/yum.repos.d/MariaDB.repo
    
    --------------------------
    [mariadb] 
    name  =  MariaDB 
    baseurl  =  http://yum.mariadb.org/10.1/centos7-amd64 
    gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB 
    gpgcheck = 1
    ---------------------------
    
    • 安装,启动数据库
    #yum install MariaDB-server MariaDB-client
    #systemctl start mariadb
    
    • 创建库,设置zabbix账户
    #mysql 
    MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
    MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@'%' identified by '<password>';
    MariaDB [(none)]> quit;
    
    • 导入初始架构和数据
    #cd /usr/share/doc/zabbix-server-mysql-3.4.0
    #zcat create.sql.gz | mysql -uroot zabbix
    
    • 启动zabbix server进程
      编辑zabbix_server.conf中数据库的配置
    #vi /etc/zabbix/zabbix_server.conf
    DBHost=localhost
    DBName=zabbix
    DBUser=zabbix
    DBPassword=zabbix
    #systemctl start zabbix-server
    

    4、 编辑zabbix前端的PHP配置

    • Zabbix前端的Apache配置文件位于 /etc/httpd/conf.d/zabbix.conf
    php_value max_execution_time 300
    php_value memory_limit 128M
    php_value post_max_size 16M
    php_value upload_max_filesize 2M
    php_value max_input_time 300
    php_value always_populate_raw_post_data -1
    # php_value date.timezone Europe/Riga
    php_value date.timezone Asia/Shanghai
    
    • 启动Apache Web服务器
    #systemctl start httpd
    

    5、web访问zabbix监控页面

    http://zabbix_ip/zabbix
    

    6、问题处理

    • zabbix server is not running解决办法:
      #cat /var/log/zabbix/zabbix_server.log

    7、性能调优

    概述

    使Zabbix系统正确调整以获得最佳性能是非常重要的。

    硬件

    关于硬件的一般建议:

    使用最快的处理器
    SCSI或者SAS都是比IDE和SATA更好的选择 (使用实用程序hdparm可以显着提高IDE磁盘的性能)
    15K RPM优于10K RPM,优于7200RPM
    使用快速RAID存储
    使用快速以太网适配器
    拥有更多的内存总是更好

    操作系统

    使用最新(stable!)版本的操作系统
    从内核中排除不必要的功能
    调整内核参数

    Zabbix配置参数

    可以调整许多参数以获得最佳性能。

    zabbix_server
    StartPollers

    一般规则 -保持此参数的值尽可能低。 zabbix_server的每个附加实例都会添加已知的开销, 同时,并行性增加。当队列平均包含最小参数数量(理想情况下,在任何给定时刻为0)时,实现最佳实例数。可以通过使用内部检查zabbix [queue]来监视此值。

    DebugLevel

    最佳值为3.

    DBSocket

    仅限MySQL. 建议使用DBSocket连接数据库。 那是最快和最安全的方式。

    数据库引擎

    这可能是Zabbix调优中最重要的部分。 Zabbix在很大程度上取决于数据库引擎的可用性和性能。

    • 使用最快的数据库引擎,即MySQL或PostgreSQL
    • 从源重建MySQL或PostgreSQL以获得最大的性能
    • 遵循从MySQL或PostgreSQL文档获取的性能调优说明
    • 对于MySQL,使用InnoDB表结构
    • 如果使用InnoDB,ZABBIX的运行速度至少要快1.5倍(与MyISAM相比). 这是因为并行性增加。 但是,InnoDB需要更多的CPU电源。
    • 强烈建议调整数据库服务器以获得最佳性能。
    • 将数据库表保留在不同的硬盘上
    • “历史”,“历史记录”,“项目”,“触发器”和“趋势”是使用最多的表格。
    • 对于大型安装,建议在tmpfs中保留MySQL临时文件
    一般建议
    • 仅监控所需参数
    • 调整所有项目的“更新间隔”。 保持较小的更新间隔对于漂亮的图形可能是好的,但是这可能会超载Zabbix
    • 调整默认模板的参数
    • 调整管理参数
    • 不监视返回相同信息的参数。
    • 避免使用长期给出的触发器作为函数参数。 例如,max(3600)的计算速度明显比max(60)慢。
    Linux

    在Linux系统上,“ps”命令可以与“watch”命令一起使用,以观察Zabbix的工作。 例如,要每秒运行“ps”命令5次以查看进程活动:

    watch -n 0.2 ps -fu zabbix
    

    仅显示Zabbix代理和代理进程:

    watch -tn 0.2 'ps -f -C zabbix_proxy -C zabbix_agentd'
    

    仅显示历史记录进程:

    watch -tn 0.2 'ps -fC zabbix_server | grep history'
    

    “ps”命令产生一个宽输出(大约190列),因为一些活动消息很长。 如果您的终端有少于190列文本,您可以尝试

    watch -tn 0.2 'ps -o cmd -C zabbix_server -C zabbix_proxy -C zabbix_agentd'
    

    仅显示没有UID,PID,开始时间等的命令行

    top命令也可用于观察Zabbix的性能。在top中按’c’键显示其命令行的进程。 在我们对Linux“top”和“atop”的测试中,正确显示了Zabbix进程的变化活动,但是“htop”不显示不断变化的活动。

    展开全文
  • zabbix自定义监控

    万次阅读 2021-05-19 18:30:31
    文章目录zabbix自定义监控开启自定义监控功能自定义监控进程编写判断httpd进程是否开启的脚本给脚本加执行权限测试zabbix用户是否能使用此脚本在zabbix客户端端写入此条自定义监控并且在服务端测试是否可用自定义...

    zabbix自定义监控

    开启自定义监控功能

    在zabbix客户端上将zabbix_agent.conf文件中将自定义监控的功能打开

    [root@client /]# vim /usr/local/etc/zabbix_agentd.conf
    UnsafeUserParameters=1		//0表示此功能关闭1表示此功能打开
    

    在两台被监控的主机上创建脚本存放目录

    [root@client ~]# mkdir /scripts
    

    自定义监控进程

    编写判断进程是否开启的脚本

    [root@client ~]# vim /scripts/check_process.sh 
    #!/bin/bash
    process_status=$(ps -elf | grep -Ev "grep|$0" | grep -c $1)
    if  [ $process_status != 0 ];then
            echo '1'
    else
            echo '0'
    fi
    

    给脚本加执行权限

    [root@client ~]# chmod +x /scripts/check_process.sh 
    

    测试zabbix用户是否能使用此脚本

    [root@client ~]# ss -anlt
    State   Recv-Q  Send-Q   Local Address:Port    Peer Address:Port  Process  
    LISTEN  0       128            0.0.0.0:9000         0.0.0.0:*              
    LISTEN  0       128            0.0.0.0:80           0.0.0.0:*              
    LISTEN  0       128            0.0.0.0:22           0.0.0.0:*              
    LISTEN  0       128            0.0.0.0:10050        0.0.0.0:*              
    LISTEN  0       80                   *:3306               *:*              
    LISTEN  0       128               [::]:22              [::]:*         
    [root@client ~]# su - zabbix -s /bin/bash
    [zabbix@client root]$ /scripts/check_process.sh httpd
    1
    [root@client ~]# systemctl stop httpd
    [root@client ~]# ss -anlt
    State   Recv-Q  Send-Q   Local Address:Port    Peer Address:Port  Process  
    LISTEN  0       128            0.0.0.0:22           0.0.0.0:*              
    LISTEN  0       128            0.0.0.0:10050        0.0.0.0:*              
    LISTEN  0       80                   *:3306               *:*              
    LISTEN  0       128               [::]:22              [::]:*             
    [zabbix@client root]$ /scripts/check_process.sh httpd
    0
    

    在zabbix客户端端写入此条自定义监控并且在服务端测试是否可用

    客户端:

    [root@client ~]# vim /usr/local/etc/zabbix_agentd.conf
    ……
    UserParameter=check_process[*],/bin/bash /scripts/check_process.sh $1
    ……
    [root@client ~]# pkill zabbix
    [root@client ~]# zabbix_agentd 
    [root@client ~]# ss -anlt
    State   Recv-Q  Send-Q   Local Address:Port    Peer Address:Port  Process  
    LISTEN  0       128            0.0.0.0:22           0.0.0.0:*              
    LISTEN  0       128            0.0.0.0:10050        0.0.0.0:*              
    LISTEN  0       80                   *:3306               *:*              
    LISTEN  0       128               [::]:22              [::]:*     
    

    服务端:

    [root@zabbix ~]# zabbix_get -s 192.168.247.211 -k check_process['httpd']
    0
    

    在zabbix页面上创建监控项

    在这里插入图片描述

    创建触发器

    在这里插入图片描述

    测试验证

    [root@client ~]# apachectl stop
    [root@client ~]# ss -anlt
    State   Recv-Q  Send-Q   Local Address:Port      Peer Address:Port  Process  
    LISTEN  0       128            0.0.0.0:22             0.0.0.0:*              
    LISTEN  0       128            0.0.0.0:10050          0.0.0.0:*              
    LISTEN  0       80                   *:3306                 *:*              
    LISTEN  0       128               [::]:22                [::]:*              
    

    在这里插入图片描述
    在这里插入图片描述

    自定义监控日志文件

    编写判断日志文件是否有报错

    [root@client ~]# vim /scripts/log.py 
    #!/usr/bin/python3
    import sys
    import re
    def prePos(seekfile):
        global curpos
        try:
            cf = open(seekfile)
        except IOError:
            curpos = 0
            return curpos
        except FileNotFoundError:
            curpos = 0
            return curpos
        else:
            try:
                curpos = int(cf.readline().strip())
            except ValueError:
                curpos = 0
                cf.close()
                return curpos
            cf.close()
        return curpos
    def lastPos(filename):
        with open(filename) as lfile:
            if lfile.readline():
                lfile.seek(0,2)
            else:
                return 0
            lastPos = lfile.tell()
        return lastPos
    def getSeekFile():
        try:
            seekfile = sys.argv[2]
        except IndexError:
            seekfile = '/tmp/logseek'				//默认将此次读取到了多少条信息存放到此文件中
        return seekfile
    def getKey():
        try:
            tagKey = str(sys.argv[3])
        except IndexError:
            tagKey = 'Error'				//默认报错信息为Error
        return tagKey
    def getResult(filename,seekfile,tagkey):
        destPos = prePos(seekfile)
        curPos = lastPos(filename)
        if curPos < destPos:
            curpos = 0
        try:
            f = open(filename)
        except IOError:
            print('Could not open file: %s' % filename)
        except FileNotFoundError:
            print('Could not open file: %s' % filename)
        else:
            f.seek(destPos)
            while curPos != 0 and f.tell() < curPos:
                rresult = f.readline().strip()
                global result
                if re.search(tagkey, rresult):
                    result = 1
                    break
                else:
                    result = 0
            with open(seekfile,'w') as sf:
                sf.write(str(curPos))
        finally:
            f.close()
        return result
    if __name__ == "__main__":
        result = 0
        curpos = 0
        tagkey = getKey()
        seekfile = getSeekFile()
        result = getResult(sys.argv[1],seekfile,tagkey)
        print(result)
    

    给脚本加执行权限

    [root@client ~]# chmod +x /scripts/log.py 
    [root@client ~]# ll /scripts/log.py 
    -rwxr-xr-x. 1 root root 1850 5月  19 20:22 /scripts/log.py
    

    测试zabbix用户是否能使用此脚本

    [root@client ~]# dnf -y module install python38
    [root@client ~]# setfacl -m u:zabbix:rx /var/log/httpd/
    [root@client ~]# mkdir /zabbix_item_log
    [root@client ~]# chown -R zabbix.zabbix /zabbix_item_log/
    [zabbix@client root]$ python3 /scripts/log.py /var/log/httpd/error_log /zabbix_item_log/logseek Failed
    0
    

    在zabbix客户端写入此条自定义监控并且在服务端测试是否可用

    客户端:

    [root@client ~]# vim /usr/local/etc/zabbix_agentd.conf
    UserParameter=check_logs[*],/scripts/log.py $1 $2 $3
    ……
    [root@client ~]# pkill zabbix_agent
    [root@client ~]# zabbix_agentd 
    [root@client ~]# ss -anlt
    State   Recv-Q  Send-Q   Local Address:Port      Peer Address:Port  Process  
    LISTEN  0       128            0.0.0.0:9000           0.0.0.0:*              
    LISTEN  0       128            0.0.0.0:22             0.0.0.0:*              
    LISTEN  0       128            0.0.0.0:10050          0.0.0.0:*              
    LISTEN  0       80                   *:3306                 *:*              
    LISTEN  0       128                  *:80                   *:*              
    LISTEN  0       128               [::]:22                [::]:*    
    

    服务端:

    [root@zabbix ~]# zabbix_get -s 192.168.247.211 -k check_logs['/var/log/httpd/error_log','zabbix_item_log/logseek','Failed']
    0
    

    客户端:

    [root@client ~]# echo 'Failed' >> /var/log/httpd/error_log 
    

    服务端:

    [root@zabbix ~]# zabbix_get -s 192.168.247.211 -k check_logs['/var/log/httpd/error_log','zabbix_item_log/logseek','Failed']
    1
    

    客户端:

    [root@client ~]# cat /zabbix_item_log/logseek 
    6020
    

    在zabbix页面上创建监控项

    在这里插入图片描述

    创建触发器

    在这里插入图片描述

    测试验证

    [root@client ~]# echo 'Failed' >> /var/log/httpd/error_log 
    

    在这里插入图片描述
    在这里插入图片描述

    mysql主从状态的监控

    实验环境说明:

    主机名:主机IP角色
    zabbix:192.168.247.215zabbix_server端
    client:192.168.247.211zabbix_agent端、mysql从数据库
    client1:192.168.247.214mysql主数据库

    配置主数据库的root账号在从数据库可以远程登录且不需要密码

    client1:

    mysql> create user 'root'@'192.168.247.211' identified by 'hanao.';
    mysql> grant all on *.* to 'root'@'192.168.247.211';
    Query OK, 0 rows affected (0.01 sec)
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    

    client:

    [root@client ~]# vim /etc/my.cnf
    [mysqld]
    basedir = /usr/local/mysql
    datadir = /opt/mysql_data
    socket = /tmp/mysql.sock
    port = 3306
    pid-file = /opt/mysql_data/mysql.pid
    user = mysql
    skip-name-resolve
    server-id=2
    relay-log=slave_relay_bin
    [client]
    user=root
    password=hanao.
    

    编写判断主从状态的脚本

    client:

    [root@client ~]# vim /scripts/check_mysql_replistatus.sh
    #!/bin/bash
    status=$(mysql -e 'show slave status\G' | grep "Running: Yes" |awk '{print $2}' | grep -c 'Yes')
    if  [ $status == 2 ];then
            echo '0'
    else
            echo '1'
    fi
    

    给脚本加执行权限

    [root@client ~]# chmod +x /scripts/check_mysql_replistatus.sh 
    

    测试zabbix用户是否能使用此脚本

    [root@client ~]# su - zabbix -s /bin/bash
    [zabbix@client root]$ /scripts/check_mysql_replistatus.sh 
    0
    

    在zabbix客户端写入此条自定义监控并且在服务端测试是否可用

    client:

    [root@client ~]# vim /usr/local/etc/zabbix_agentd.conf
    UserParameter=check_mysql_replication,/scripts/check_mysql_replistatus.sh
    [root@client ~]# pkill zabbix_agent
    [root@client ~]# zabbix_agentd 
    

    zabbix:

    [root@zabbix ~]# zabbix_get -s 192.168.247.211 -k check_mysql_replication
    0
    

    在zabbix页面上创建监控项

    在这里插入图片描述

    创建触发器

    在这里插入图片描述

    测试验证

    client:

    mysql> stop slave;
    Query OK, 0 rows affected (0.00 sec)
    mysql> show slave status\G;
                 Slave_IO_Running: No
                Slave_SQL_Running: No
    

    在这里插入图片描述
    在这里插入图片描述

    mysql主从延迟的监控

    编写查看延迟的脚本

    [root@client ~]# vim /scripts/check_mysql_delay.sh
    #!/bin/bash
    delay=$(mysql -e 'show slave status\G' | grep "Seconds_Behind_Master" |awk '{print $2}')
    echo $delay
    

    给脚本加执行权限

    [root@client ~]# chmod +x /scripts/check_mysql_delay.sh 
    

    测试zabbix用户是否能使用此脚本

    [root@client ~]# su - zabbix -s /bin/bash
    [zabbix@client root]$ /scripts/check_mysql_delay.sh 
    0
    

    在zabbix客户端写入此条自定义监控并且在服务端测试是否可用

    client:

    [root@client ~]# vim /usr/local/etc/zabbix_agentd.conf
    UserParameter=check_mysql_delay,/scripts/check_mysql_delay.sh
    [root@client ~]# pkill zabbix_agent
    [root@client ~]# zabbix_agentd 
    

    zabbix:

    [root@zabbix ~]# zabbix_get -s 192.168.247.211 -k check_mysql_delay
    0
    

    在zabbix页面上创建监控项

    在这里插入图片描述

    创建触发器

    在这里插入图片描述

    展开全文
  • zabbix优化

    2018-02-01 11:43:04
    zabbix zabbix优化 zabbix性能 zabbix zabbix优化 zabbix性能
  • zabbix概念 zabbix安装 zabbix使用 其他

    一、 Zabbix概念

    1. Zabbix简介

       zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
       zabbix由zabbix server与可选组件zabbix agent两部门组成。
       zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。
       zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。
    

    2. zabbix的主要特点

    - 安装与配置简单,学习成本低 
    - 支持多语言(包括中文)
    - 免费开源
    - 自动发现服务器与网络设备
    - 分布式监视以及WEB集中管理功能
    - 可以无agent监视
    - 用户安全认证和柔软的授权方式
    - 通过WEB界面设置或查看监视结果
    - email等通知功能
    

    3. Zabbix主要功能

     - CPU负荷
     - 内存使用
     - 磁盘使用
     - 网络状况
     - 端口监视
     - 日志监视 
    

    4. 各组件介绍

    zabbix agent:部署在被监控主机上,负责被监控主机的数据,并将数据发送给zabbix server。
    zabbix server:负责接收agent发送的报告信息,并且负责组织配置信息、统计信息、操作数据等。
    zabbix database:用于存储所有zabbix的配置信息、监控数据的数据库。
    zabbix web:zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,可以单独部署在独立的服务器上。
    zabbix proxy:可选组件,用于分布式监控环境中,zabbix proxy代表server端,完成局部区域内的信息收集,最终统一发往server端。
    

    二、 Zabbix的安装

    1. 网络配置

    连接centos 系统后,首先关闭防火墙和SELINUX,如不关闭会各种拦截,网页访问等故障,容易造成蛋疼哦.

    # systemctl stop firewalld.service #关闭防火墙服务
    
    # systemctl disable firewalld.service #开机不启动
    
    # sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #替换文本参数
    
    # grep SELINUX=disabled /etc/selinux/config #查文本状态
    
    # setenforce 0 #关闭当前SELINUX
    

    备注:必须关闭selinux监控,否则zabbix服务端没有权限访问zabbix客户端文件。

    2. 安装配置zabbix server(同时数据库)

     安装mysql数据库

    # yum -y install mariadb mariadb-devel mariadb-server  # centos7下安装的是mariadb
    # systemctl enable mariadb # 设置开机自启动
    # systemctl start mariadb # 启动
    # systemctl status mariadb # 查看状态
    

    设置mysql的root密码

    # mysqladmin -u root -h localhost password 'xxxxxxxx'
    

     创建数据库 zabbix 并授权

    # mysql -uroot -pxxxxxx
    

    create database zabbix character set utf8 collate utf8_bin;
    grant all privileges on zabbix.* to zabbix@localhost identified by ‘xxxxxxxx’;
    quit

    安装zabbix-server,因为mysql初始化数据的脚本通过安装zabbix-server下载的

     备份本地yum 源

    # cp -r /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 
    

     下载3.4.1 rpm

    # rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
    

     Zabbix-server
    在3.X版本中,没有单独的zabbix-server安装包,安装了zabbix-server-mysql即为安装了server端包。
    同时,我们可以在服务端安装zabbix_get包,以便向agent端发起测试。

    # yum install zabbix-server-mysql zabbix-get
    

     导入zabbix初始化数据

    # zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pxxxxxxxx Zabbix
    

     配置zabbix_server的配置文件

    # vim /etc/zabbix/zabbix_server.conf
    
    37:LogFile=/var/log/zabbix/zabbix_server.log
    48:LogFileSize=0
    71:PidFile=/var/run/zabbix/zabbix_server.pid
    81:SocketDir=/var/run/zabbix
    90:DBHost=localhost
    99:DBName=zabbix
    115:DBUser=zabbix
    123:DBPassword=123456
    130:DBSocket=/var/lib/mysql/mysql.sock
    138:DBPort=3306
    328:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
    445:Timeout=4
    487:AlertScriptsPath=/usr/lib/zabbix/alertscripts
    497:ExternalScripts=/usr/lib/zabbix/externalscripts
    533:LogSlowQueries=3000
    

     启动zabbix-server

    # systemctl start zabbix-server
    

     查看状态

    # systemctl status zabbix-server
    

    3. 安装zabbix web

     安装

    # yum install zabbix-web-mysql
    

     编辑Zabbix前端的PHP配置
    Zabbix前端的Apache配置文件位于 /etc/httpd/conf.d/zabbix.conf 。一些PHP设置已经完成了配置,重点是调整时区的配置,修改为亚洲上海。

    # vim /etc/httpd/conf.d/zabbix.conf
    php_value date.timezone Asia/Shanghai
    

     修改zabbix server访问端口:

    1. 编辑httpd.conf文件 :

      #vim /etc/httpd/conf/httpd.conf
      
    2. 修改默认的侦听端口和ServerName

      136 Listen 8383
      
    3. 重启apache服务,使配置生效:

      # service httpd restart
      
    4. 添加防火墙规则,允许端口访问 (前边防火墙关了,这里可以不用管)

      # vim /etc/sysconfig/iptables
      zabbix web -A INPUT -m state --state NEW -m tcp -p tcp --dport 8008 -j ACCEPT
      重启防火墙:service iptables restart
      
    5. 浏览器访问http://IP:8383/zabbix 测试是否修改成功

     访问Zabbix Web页面,http://IP:8383/zabbix,默认的用户名/密码为 Admin/zabbix

    在这里插入图片描述

    确保PHP所有项目都OK,然后点击“Next step”

    在这里插入图片描述

    此处为连接mysql的配置,请按照前面安装时的配置填写,然后点击“Next step”

    在这里插入图片描述

    Name处可以填写网站的名称,然后点击“Next step”

    在这里插入图片描述
    根据提示可以看到下面图形界面的操作都写到一个配置文件中,/etc/zabbix/web/zabbix.conf.php,确认无误后,点击“Finish”

    在这里插入图片描述

    登陆zabbix前端,默认账号为 Admin,默认密码为zabbix

    在这里插入图片描述

     配置zabbix中文界面
    #修改PHP配置文件
    确认zabbix是否开启了中文件支持功能,

    # vim /usr/share/zabbix/include/locales.inc.php
    

    浏览器登陆zabbix前端,设置语言为Chinese(zh_CN),然后点击“Update”,刷新页面就可以看到中文了。

    在这里插入图片描述

    4. 安装配置zabbix agent

    安装zabbix-agent

    # rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.4-2.el7.x86_64.rpm
    # yum install -y zabbix-agent zabbix-get
    

    配置zabbix-agent

    # vim /etc/zabbix/zabbix_agentd.conf # 修改agent配置文件
    Server=172.18.0.113 # zabbix服务端内网IP
    ServerActive=172.18.0.113 # zabbix服务端内网IP,Active表示agent主动推送
    Hostname=172.18.0.106 # zabbix客户端主机名称,需要和web端添加的名称一致,一般写自己ip
    Include=/etc/zabbix/zabbix_agentd.d/*.conf
    

    启动zabbix-agent

    # systemctl start zabbix-agent
    

    三、 Zabbix使用

    1. 监控主机

    Web端添加Linux主机
    配置-主机-创建主机,按下图配置好后点击“更新”

    在这里插入图片描述

    2. 监控磁盘空间

    监控项

    配置-主机-监控项-创建监控项
    名称随意,其他看图片,配置完点“更新“,键值:vfs.fs.size[/,pused]

    在这里插入图片描述

    触发器

    配置磁盘使用超过80%的触发器,超过报警
    在这里插入图片描述

    定时触发器:
    表达式
    {192.168.0.111:net.tcp.port[,8000].last()}=0 and {192.168.0.111:net.tcp.port[,8000].time()}>=033000 and {192.168.0.111:net.tcp.port[,8000].time()}<=213000

    监控8000端口使用情况,每天03:30~21:30期间触发器生效

    3. 监控服务端口

    监控项

    以redis(port:6379)为例,键值:net.tcp.port[,6379]

    在这里插入图片描述

    触发器

    键值:{172.18.0.106:net.tcp.port[,6379].last()}=0

    在这里插入图片描述

    4. 监控服务器CPU

    监控项

    键值:system.cpu.util[,idle]

    在这里插入图片描述

    触发器

    超过85%报警,表达式:{172.18.0.113:system.cpu.util[,idle].avg(1m)}<15
    在这里插入图片描述

    5. 监控服务日志

    创建监控项(自定义键值

    思想
    通过自定义键值,引入脚本,根据脚本实现服务的日志监控

    步骤

    1、zabbix_agent.conf配置文件中引入配置文件

    vim /etc/zabbix/zabbix_agentd.conf	
    	Include=/etc/zabbix/zabbix_agentd.d/*.conf
    

    2、配置文件

    cd /etc/zabbix/zabbix_agentd.d/
    	userparameter_jvm.conf  userparameter_log.conf  userparameter_mysql.conf
    配置文件内容
    	UserParameter=test_log,/etc/zabbix/script/logs/log_usercenter-service.sh
    	UserParameter=usercenter_count,/etc/zabbix/script/logs/count_eq-usercenter-service.sh
    

    3、自定义脚本

    /etc/zabbix/script/logs/log_usercenter-service.sh
    
    	#!/bin/bash
    	source /etc/zabbix/log.conf
    	logdate=$(date "+%Y-%m-%d")
    	msg=`tail -n "$row" /service1/usercenter-service1/logs/usercenter-service."$logdate"-*.log |grep -E "${logtype_02}"|grep -E "${logtype_01}"`
    	#msg=`grep -E "${logtype_01}" /usr/service/usercenter-service/logs/usercenter-service."$logdate"-0.log `
    	count=`echo "$msg" | wc -l`
    
    	if [ ! -n "$msg" ];then
    			echo "OK"
    			exit 0
    	fi
    	if [ $count -gt 0 ];then
    			echo "$msg"
    			exit 1
    	else
    			echo "OK"
    			exit 0
    	fi
    

    监控日志中出现的error数量

    /etc/zabbix/script/logs/count_eq-usercenter-service.sh
    
    	#!/bin/bash
    	source /etc/zabbix/log.conf
    	logdate=$(date "+%Y-%m-%d")
    	msg=`tail -n "$row" /zyqservice1/eq-usercenter-service1/logs/eq-usercenter-service."$logdate"-*.log |grep -E "${logtype_02}"|grep -E "${logtype_01}"`
    	#msg=`grep -E "${logtype_01}" /usr/zeqservice/eq-usercenter-service/logs/eq-usercenter-service."$logdate"-0.log `
    	count=`echo "$msg" | wc -l`
    	
    	if [ ! -n "$msg" ];then
    	        echo "0"
    	        exit 0
    	fi
    	if [ $count -gt 0 ];then
    	        echo "$count"
    	        exit 1
    	else
    	        echo "OK"
    	        exit 0
    	fi
    

    注意:(给脚本设置权限)chmod 777 *.sh

    wc命令:

    wc -l : 统计行
    wc -c: 统计字节数
    wc -m:统计字符数,不能与-c同时使用
    wc -w:统计字数
    wc -L:打印最长长度

    4、创建监控级别

    vim /etc/zabbix/log.conf
    	
    	logtype_01=ERROR
    	logtype_02=Exception
    	row=10000
    
    脚本存放位置
    /etc/zabbix/script/logs/
    

    监控项

    在这里插入图片描述

    触发器

    报错超过50个示警
    表达式:{172.18.0.106:usercenter_count.last()}>50
    在这里插入图片描述

    查看监控结果

    监控中 - 仪表盘
    监控项达到触发器设置的提示点,会在仪表盘中显示错误信息,需要确认后信息才会消失。

    监控中 - 最新数据
    看数据

    6. 实现发送邮件功能

    1. 安装邮件发送工具mailx

    yum install mailx # 安装
    cp /etc/mail.rc /etc/mailrc.bak # 备份原来配置文件

    vi /etc/mail.rc # 修改配置文件内容,添加发送邮件的邮箱信息
    
    set from=...@qq.com
    set smtp=smtp.qq.com:25
    set smtp-auth-user=...@qq.com
    set smtp-auth-password=  # 邮箱密码使用SMTP授权码
    set smtp-auth=login
    

    systemctl restart postfix.service #重启服务

    echo hello word | mail -s " title" …@qq.com # 接收的邮箱,测试一下

    2. 配置zabbix_service.conf文件,引入发送脚本

    /etc/zabbix/zabbix_server.conf
    AlertScriptsPath=/usr/lib/zabbix/alertscripts
    ExternalScripts=/usr/lib/zabbix/externalscripts
    

    3. 编写发送脚本

    /usr/lib/zabbix/alertscripts/sendmail.sh

    内容:

    #!/bin/bash 
    messages=`echo $3 | tr '\r\n' '\n'`
    
    subject=`echo $2 | tr '\r\n' '\n'`
    
    echo "${messages}" | mail -s "${subject}" $1 >>/tmp/sendmail.log 2>&1
    

    4. zabbix-web页面配置

    1).新建媒介类型

    管理 – 报警媒介类型 – 创建媒体类型

    脚本名称与引入的文件名称一直
    新增三个脚本参数:

    {ALERT.SENDTO}
    {ALERT.SUBJECT}
    {ALERT.MESSAGE}
    

    更新即可
    在这里插入图片描述

    2).用户添加报警媒介

    管理 – 用户 – admin – 报警媒介 – 添加
    在这里插入图片描述

    添加报警媒介:
    在这里插入图片描述

    3).配置中给触发器添加动作

    配置 – 动作 – 创建动作

    动作页面:触发条件选择触发器,选择中选择你要选择的触发器,最后添加,更新

    在这里插入图片描述
    在这里插入图片描述

    4).操作和恢复操作设置

    标题:

    警报:{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
    

    消息内容:

    告警主机:{HOSTNAME1}
    
    告警时间:{EVENT.DATE} {EVENT.TIME}
    
    告警等级:{TRIGGER.SEVERITY}
    
    告警信息: {TRIGGER.NAME}
    

    操作:如图
    最后点击添加
    在这里插入图片描述

    5).查看状态

    触发器触发时,仪表板上如下显示,动作下不为空,点击后可看mail发送状态

    在这里插入图片描述

    四、其他

    官方文档:https://www.zabbix.com/documentation/

    zabbix报错排错大全
    https://www.cnblogs.com/dbslinux/p/9465803.html

    日志文件: vi /var/log/zabbix/zabbix-agentd.log

    1.系统提示zabbix共享内存报错
    zabbix_agentd [5922]: cannot open log: cannot create semaphore set: [28] No space left on device

    解决:
    修改 vim /etc/sysctl.conf

    kernel.sem =500  64000   64      256
    

    sysctl -p /etc/sysctl.conf

    后便能够正常启动了。(报错原因:kernel.sem参数设置过小 ,原先系统默认设置的为 250 32000 32 128)

    2.数据库问题
    浏览器打开zabbix页面报Error connecting to database: Access denied for user ‘zabbix’ @ ‘localhost’ to databas

    /etc/zabbix/web/zabbix.conf.php

    手写不易,有用请点赞!
    有问题请留言!

    展开全文
  • zabbix功能介绍

    万次阅读 2021-05-21 04:12:36
    文章目录zabbix页面介绍MonitoringproblemsHostsOverviewLatest dataScreensMapsDiscoveryInventoryOverviewhostsReportsSystem informationAvailability reportAudit logNotificationsConfigurationhost ...
  • centos 8 源码安装zabbix

    万次阅读 2021-05-13 19:02:01
    安装zabbix 下载zabbix https://www.zabbix.com/download_sources 用xftp传到本地(略) 安装依赖 [root@z1 ~]# yum install -y libxml2 libxml2-devel net-snmp-devel libevent-devel 创建用户和组 [root@...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 86,315
精华内容 34,526
关键字:

zabbix