CentOS7 zabbix4.0搭建配置

时间:2024-01-26 08:37:55
一.Zabbix-Server服务器端的安装
概述:10050是Agent的端口,Agent采用被动方式,Server主动连接Agent的10050端口;10051是Server的端口,Agent采用主动或Trapper方式,会连接Server的10051端口。
 
前提条件:永久关闭SELinux和时间同步
#vim /etc/selinux/config
   SELINUX=disabled
或者#setenforce 0
#yum -y install ntp
#systemctl enable ntpd
#systemctl start ntpd
1.访问Zabbix的软件仓库网站http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm下载的本地,然后在服务器上安装。
 
 
#rpm -qa | grep zabbix-release
 
#cd /etc/yum.repos.d/
 
2.安装Zabbix-Server服务器端,由于服务器端也是需要监控的,故这里也一并安装了Zabbix-Agent(4.0版本的安装命令)。
#yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-get
 
3.安装数据库
在CentOS7系统包仓库安装源中,需要安装mariadb-server,而不是MySQL数据库服务(7.0以后的版本用MariaDB替换了MySQL)。
#yum -y install mariadb-server mariadb-devel
修改MySQL配置文件
#vim /etc/my.cnf
 
character-set-server=utf8
innodb_file_per_table=1
#注意:以上mysql配置参数仅满足小规模监控环境使用,如果监控环境为中型规模(如1000台设备以上),则需要调整更多的mysql配置参数,可以参考https://github.com/zabbix-book/MySQL_conf中提供的参数。
启动服务:
#systemctl start mariadb
设置开机自启动:
#systemctl enable mariadb
#ps aux|grep mysql
#netstat -ntulp | grep 3306
 
4.创建Zaabix数据库
首先设置mysql 的 root 用户密码,然后创建zabbix数据库。
#mysqladmin -uroot password admin
#mysql -uroot -padmin
 
create database zabbix character set utf8;
grant all privileges on zabbix.* to \'zabbix\'@\'192.168.203.136\' identified by \'zabbix\';
flush privileges;
注意:如果创建zabbix数据库的字符集部位UTF-8,则可能会导致web界面切换到中文语言时出现乱码。
 
5.倒入zabbix库的数据文件
#cd /usr/share/doc/zabbix-server-mysql-4.0.13/
#gunzip create.sql.gz
#mysql -uzabbix -pzabbix -h192.168.203.136
mysql>use zabbix
mysql>source /usr/share/doc/zabbix-server-mysql-4.0.13/create.sql;
 
6.配置zabbix_server.conf
#vim /etc/zabbix/zabbix_server.conf
DBHost=192.168.203.136
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
StartPollers=100
StartIPMIPollers=10
StartPollersUnreachable=10
StartTrappers=10
StartPingers=10
StartDiscoverers=10
CacheSize=256M
HistoryCacheSize=128M
TrendCacheSize=128M
ValueCacheSize=2048M
Timeout=30
TrapperTimeout=300
 
7.开启Zabbix-Server服务
# systemctl start zabbix-server
# systemctl enable zabbix-server
# ps aux|grep zabbix
# tail  -f  /ver/log/zabbix/zabbix_server.log
# systemctl start httpd
# systemctl enable httpd
注意:在安装zabbix server的时候默认就安装了apache,zabbix依靠apache提供的web服务,修改Zabbix的浏览器访问端口,就是修改apache的服务端口(默认端口:80),修改默认端口#vim /etc/httpd/conf/httpd.conf     8888
# systemctl restart httpd
 
8.防火墙设置
# firewall-cmd --zone=public --add-port=8888/tcp --permanent
# firewall-cmd --zone=public --add-port=10050/tcp --permanent
# firewall-cmd --zone=public --add-port=10051/tcp --permanent
#systemctl restart firewalld.service
  1. #–zone #作用域
  2. #–add-port=80/tcp #添加端口,格式为:端口/通讯协议
  3. #–permanent 永久生效,没有此参数重启后失效
9.php.ini文件配置
#vim /etc/php.ini
去掉date.timezone的注释,将时区改为Asia/Shanghai
或者:#vim /etc/httpd/conf.d/zabbix.conf
 
php_value date.timezone Asia/Shanghai
#systemctl restart httpd
#systemctl restart zabbix-server
 
10.配置Zabbix-Web:打开浏览器,输入http://192.168.203.135:8888/zabbix 出现下图
 
单机“Next.step”按钮,如下图,如果提示参数不通过,则修改php.ini配置文件,并重启Web(httpd)服务
 
 
配置数据库连接的各项参数
 
Zabbix-Server的连接地址,端口,名称设置将会显示在zabbix的前端页面
注意:如果zabbix-server在其他机器上,那么这里的Host要填写Zabbix-Server所在机器的IP地址,必须保证从Zabbix前端PHP所在的这台服务器能连接到Server服务器端口10051
 
这些配置信息将会被写入/${PATH}/zabbix/conf/zabbix.conf.php文件中
 
配置文件生成成功:Finish
 
如图所示,登陆页面,默认账户时Admin,密码是zabbix
 
登录成功后的页面
 
注意:
 
注意:访问zabbix登录页面时出现白屏情况,请重启httpd
# systemctl restart httpd
# systemctl enabtle httpd
 
11.Zabbix-Agent客户端zabbix_agentd.conf文件的配置(Zabbix-Server服务端自己本生要安装Zabbix-Agent客户端,因为服务端本生也需要监控。如果监控其他服务器,就只在其他服务器单独安装Zabbix-Agent客户端就可以了)
之前已经安装过Zabbix-Agent了,这里直接启动就行了:
#vim zabbix_agentd.conf
Server=192.168.203.136                主服务器IP
ServerActive=192.168.203.136      主服务器IP
#systemctl start zabbix-agent
#systemctl enable zabbix-agent
# tail  -f  /ver/log/zabbix/zabbix_agentd.log
监控其他服务器
#yum install -y zabbix-agent
#vim zabbix_agentd.conf
Server=192.168.203.136                主服务器IP
ServerActive=192.168.203.136      主服务器IP
#systemctl start zabbix-agent
#systemctl enable zabbix-agent
 
12.Zabbix-Server对数据的存储和对超过储存期限数据的删除策略
# mysql -uzabbix -pzabbix -h192.168.247.129
MariaDB [(none)]> select table_name,(data_length+index_length)/1024/1024 as total_mb,table_rows from information_schema.tables where table_schema=\'zabbix\'
 
 
MySQL表分区及过期数据的删除(具体操作及脚本代码请阅读《Zabbix企业级分布式监控系统 第2版》的60——69页)
                                https://zabbix.org/wiki/Docs/howto/mysql_partition
 
13.zabbix通信安全:
 
14.Zabiix数据库备份:(具体操作及脚本代码请阅读《Zabbix企业级分布式监控系统 第2版》的70——72页)
 
二、邮件报警mailx配置
1、安装mailx
这里我选择的是mailx,所以的关闭其他的邮件发送工具
   执行安装mailx的命令:yum install mailx
2、配置mailx
打开文件vim /etc/mail.rc 如果mail.rc文件没有,就手动创建 内容如下:
set sendcharsets=iso-8859-1,utf-8
set from=*********@163.com
set smtp=smtp.163.com:25
set smtp-auth-user=*******@163.com
set smtp-auth-password=****************    #注意是授权码,不是密码
set smtp-auth=login
3、测试邮件是否可以发出
   echo"zabbix test mail" |mail -v -s "zabbix" **********@163.com
4、编写发送邮件脚本
  进入下面路径:/usr/lib/zabbix/alertscripts 创建sendmail.sh文件,内容如下
  echo "$3" | mail -s "$2" "$1"
   上面的这个三个参数是接收从web页面中传递过来的,$1:收件人邮箱地址;$2:邮件标题;$3:邮件内容
为什么我们会在这个路径下面创建这个脚本呢,这是在我们的zabbix_agentd.conf文件中配置的
  AlertScriptsPath=/usr/lib/zabbix/alertscripts
所以你不想将这个脚本放在这个目录下面,需要修改服务端的配置文件中的AlertScriptsPath的值
5、配置web页面
                     http://blog.csdn.net/hao134838    *
                     http://blog.csdn.net/qq_25551295/article/details/51803942
 
 
三、监控Nginx以及邮件告警
1.通过zabbix实现一个nginx监控,需要安装模块:–with-http_stub_status_module,如果没有安装需要进行编译,这里记录下模块单独安装步骤,就以–with-http_stub_status_module为例:
记得提前备份Nginx
#./nginx -V
查看没有我们需要的模块–with-http_stub_status_module,需要单独安装一下。
#./configure --prefix=/usr/nginx/ --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module
注意:make 编译完,千万不要make install,否则就是覆盖安装
重启nginx服务
 
2.配置站点文件添加如下location模块
#vim nginx.conf
location = /nginx-status {
          stub_status  on;
          access_log   off;
          #allow 127.0.0.1;
          #deny all;
           }
 
# curl http://127.0.0.1/nginx-status
 
说明:active connections – 活跃的连接数量
server accepts handled requests — 总共处理了11989个连接 , 成功创建11989次握手, 总共处理了11991个请求
reading — 读取客户端的连接数.
writing — 响应数据到客户端的数量
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.
 
3.导入模板,并需要将监控的主机链接到该模板
链接:https://pan.baidu.com/s/14EUPmWhAYYe6tgxJIlHh0w 密码:x5zc
根据模板中的参数key写shell(被监控端)shell脚本获取参数如下:
#vim /etc/zabbix/nginx_zbx.sh
#!/bin/bash
#use zabbix to monitor nginx status
#author:21yunwei
#监控 httpd code,eg:500.多个站点可以考虑循环实现 。这里只针对自己博客21yunwei做状态码监控。
#accesslog="/var/log/nginx/access.log"
#cat ${accesslog} | awk \'{print $8}\' |sort |uniq | grep 500 >/dev/null 2>&1 ;httpcode=$?
#监控nginx存活状态,基于端口监听。另外需加web url监控防止假死。
netstat -tnlp | grep 80 >/dev/null 2>&1 ;status=$?
url="http://10.0.0.199/nginx-status"
#监控参数匹配
case $1 in
"active" )
 /usr/bin/curl $url 2>/dev/null | grep -i $1 | awk \'{print $NF}\' ;;
"accepts")
 /usr/bin/curl $url 2>/dev/null | awk \'NR==3{print $1}\' ;;
"handled")
 /usr/bin/curl $url 2>/dev/null | awk \'NR==3{print $2}\' ;;
"requests")
 /usr/bin/curl $url 2>/dev/null | awk \'NR==3{print $NF}\' ;;
"reading")
 /usr/bin/curl $url 2>/dev/null | awk \'NR==4{print $2}\' ;;
"writing")
 /usr/bin/curl $url 2>/dev/null | awk \'NR==4{print $4}\' ;;
"waiting")
 /usr/bin/curl $url 2>/dev/null | awk \'NR==4{print $NF}\' ;;
"ping")
 echo $status ;;
"httpcode")
 echo $httpcode ;;
* )
 echo "argu error";;
esac
 
#chmod a+x nginx_zbx.sh
#chmod  +s /bin/netstat
调整zabbix_agentd下的配置文件,添加如下参数:(zabbix-server端)
 
[root@server ~]# vim /etc/zabbix/zabbix_agentd.conf
#nginx moitor
UserParameter=nginx.status[*],/etc/zabbix/nginx_zbx.sh $1
 
添加完成后重启zabbix-agent服务
 
 
 
 
 
 
 
 
#vim /usr/lib/zabbix/alertscripts/sendmail.sh    (zabbix-server端)
echo "$3" | mail -s "$2" "$1"
 
zabbix服务器报警媒介类型
增加三个参数
{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}
 
 
恢复操作
恢复{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}
 
 
# ./nginx -s stop    测试
 
 
 
 
# ./nginx -c /usr/nginx/conf/nginx.conf
 
 
扩展:zabbix邮件告警
编写脚本
#vim /usr/lib/zabbix/alertscripts/zabbix_sendmail.py    (zabbix-server端)
#!/usr/bin/python
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
import sys
mail_host = \'smtp.163.com\'            # 邮箱smtp配置
mail_user = \'yanxj1994@163.com\'                    # 邮箱账号
mail_pass = \'lizhanxun2021\'                # 邮箱密码
mail_postfix = \'163.com\'
def send_mail(to_list,subject,content):
    me = "zabbix监控告警平台"+"<"+mail_user+"@"+mail_postfix+">"
    msg = MIMEText(content, \'plain\', \'utf-8\')
    msg[\'Subject\'] = subject
    msg[\'From\'] = me
    msg[\'to\'] = to_list
    try:
        s = smtplib.SMTP()
        s.connect(mail_host)
        s.login(mail_user,mail_pass)
        s.sendmail(me,to_list,msg.as_string())
        s.close()
        return True
    except Exception,e:
        print str(e)
        return False
if __name__ == "__main__":
    send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
 
修改脚本路径
#vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
 
给脚本执行权限,测试脚本,如果发送失败,可能是网络不通,或者163邮箱的imtp/pop3没开
#chmod +x zabbix_sendmail.py
#chown -R zabbix.zabbix zabbix_sendmail.py
#python zabbix_sendmail.py yanxj1994@163.com test test
 
 
四、JMX监控方式监控Tomcat邮件告警以及故障重启
监控原理:当Zabbix-Server需要知道java应用程序的某项性能的时候,会启动自身的一个Zabbix-JavaPollers进程去连接Zabbix-JavaGateway请求数据,而ZabbixJavagateway收到请求后使用"JMXmanagementAPI"去查询特定的应用程序,而前提是应用程序这端在开启时需要"-Dcom.sun.management.jmxremote"参数来开启JMX远程查询就行。Java程序会启动自身的一个简单的小程序端口12345向Zabbix-JavaGateway提供请求数据。
从上面的原理图中可以看出,配置Zabbix监控Java应用程序的关键点在于:配置Zabbix-JavaGateway、让Zabbix-Server能够连接Zabbix-JavaGateway、Tomcat开启JVM远程监控功能等
 
1.zabbix server安装Zabbix-Java-gateway
Java-gateway不安装在zabbix-server上也可以,仅仅是作为一个采集器!
 
使用rpm包的安装方式:
#java -version  (之前已配置安装好JDK)
从上面的原理图中可以看出,配置Zabbix监控Java应用程序的关键点在于:配置Zabbix-JavaGateway、让Zabbix-Server能够连接Zabbix-JavaGateway、Tomcat开启JVM远程监控功能等
 
1.zabbix server安装Zabbix-Java-gateway
Java-gateway不安装在zabbix-server上也可以,仅仅是作为一个采集器!
 
使用rpm包的安装方式:
#java -version  (之前已配置安装好JDK)
 
#yum -y install zabbix-java-gateway    (192.168.247.128)
 
如果采用源码安装方式,则在编译时需要加上--enable-java
#./configure --enable-java --prefix=/usr
2.配置Zabbix-Java-Gateway
# vim /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=50
 
# systemctl start zabbix-java-gateway.service
# systemctl stop zabbix-java-gateway.service
# systemctl enable zabbix-java-gateway.service
 
在Zabbix-Server服务器中修改配置文件  (192.168.247.129)
DBSocket=/var/lib/mysql/mysql.sock
JavaGateway=192.168.247.128 (JavaGateway服务器的 IP 地址,如果JavaGateway和Zabbix-Server在一台机器中,就可以写成zabbix-server的 IP 或 127.0.0.1)
JavaGatewayPort=10052   (zabbix_java_gateway连接的端口)
StartJavaPollers=5  (Java轮询进程的个数,要小于START_POLLERS)
 
#systemctl restart zabbix-server.service
 
3、客户端配置
配置tomcat开启jmx remote,配置zabbix-agent客户端Tomcat JMX,即tomcat的远程调用脚本
[root@tomcat ~]# vim /usr/apache-tomcat-8.0.53/bin/catalina.sh
#!/bin/sh
CATALINA_OPTS="-Dcom.sun.management.jmxremote         #开启远程监控
-Dcom.sun.management.jmxremote.authenticate=false         #关闭权限认证
-Dcom.sun.management.jmxremote.ssl=false                 #远程ssl验证为false
-Djava.rmi.server.hostname=192.168.247.128                    #部署了tomcat的主机地址
-Dcom.sun.management.jmxremote.port=10053"            #远程监控端口
 
 
# ./startup.sh
#netstat -ntulp | grep 10053
4.获取JMX数据
(1)通过JConsole获取数据
JConsole是JDK自带的一个工具,对于不同系统,其默认的安装路径会有差异。
Linux系统:/usr/bin/jconsole
Windows系统:C:\Program Files\Java\jdk1.8.0_45\bin\jconsole.exe
在Windows系统中找到 jconsole.exe 单击出现下图:
 
 
HeapMemoryUsage有4个参数,分别是committed  init  max 和  used
 
(2)通过命令行获取JMX数据
可到 https://github.com/zabbix-book/cmdline-jmxclient/blob/master/  下载  cmdline-jmxclient-0.10.3.jar
# cd /home/jdk1.8.0_181/bin/
# java -jar ../../cmdline-jmxclient-0.10.3.jar - 192.168.247.128:10053 java.lang:type=Memory HeapMemoryUsage
 
通过上面的命令,可以对JMX数据进行查询,这样就能够验证JMX配置和监控的值是否正确,同时也能够发现key所需要的参数。
 
5.在Zabbix中配置JMX的 ltem (监控项)
 
 
还可以通过shell脚本获取JMX的 ltem 数据,请阅读:《Zabbix企业级分布式监控系统 第2版》361-362页。
 
添加Tomcat相应的模板:
 
 
 
五、SNMP监控方式
使用SNMP也已监控路由器,交换机,打印机,UPS或者其他开启SNMP的设备,如果要支持SNMP监控方式,需要Zabbix-Server在编译源码时带上--with-net-snmp参数。
 
 
如果是zabbix yum源安装的,直接配置被监控端的SNMP如下
yum install net-snmp net-snmp-utils
1
有时候我们监控项需要权限,为了测试,先在打开全部查看的权限
修改配置文件/etc/snmp/snmpd.conf
# Make at least  snmpwalk -v 1 localhost -c public system fast again.
#       name           incl/excl     subtree         mask(optional)
view    systemview    included   .1   ##添加这一行 ,且必须在前面,不然会无效
view    systemview    included   .1.3.6.1.2.1.1
view    systemview    included   .1.3.6.1.2.1.25.1.1
 
 
 
 
 
启动snmp服务
systemctl start snmpd
1
测试
snmpget命令格式
snmpget [COMMON OPTIONS] [-Cf] AGENT OID [OID]...
常用的选项
-v 1|2c|3  表示使用snmp协议的哪个版本,有3个版本,最常用的是2c
-c COMMUNITY 设置口令,一般都是public,如果需要修改可以在配置文件改
1234
示例:获取内存大小
##.1.3.6.1.2.1.25.2.2.0这个OID是获取内存总量大小的。
snmpget  -v 2c -c public 192.168.253.128 .1.3.6.1.2.1.25.2.2.0
netstat -ntulp | grep snmpd
 
 
 
 
添加Item(监控项),可以在Host(主机)中完成,也可以在Template(模板)中完成。
 
 
 
六、IPMI监控方式
IPMI是智能平台管理接口,原本是Inter架构中企业系统的周边设置所采用的一种工业标准,后来成为业界通用的标准。用户可以利用IPMI监视服务器的物理特征,如温度   电压   电扇工作状态   电源供应以及机箱入侵等。
 
七、HTTP agent监控方式
HTTP是互联网中应用最广泛的一种网络协议,主要是HTTP和HTTPS两种,在HTTP agent监控方式中,是由Zabbix-Server主动对外发起请求的,然后目标URL相应请求。除支持Zabbix-Server主动发起请求外,HTTP agent 还支持Zabbix-Porxy主动对目标URL发起请求(即Item位于Proxy模式的主机中),不需要Agent即可采集到数据。
 
八、Web监控方式
Web监控方式是用来监控Web程序的,可以监控web程序的下载速度,返回码及响应时间,还支持将一组连续的Web动作做为一个整体进行监控。Web监控即对HTTP服务的监控,模拟用户访问网站,对状态码  返回字符等特定的数据进行比较和监控,从而判断网站Web服务的可用性,很多时候,可以用脚本  程序进行自定义监控,如Linux下的命令程序curl   wget,其他语言提供的http库等都可以帮助我们完成这一需求。
 
 
 
 
 
1.Web监控用户认证支持
 
 
 
 
 
 
 
 
 
2.Web监控触发器配置
key:
{LXF1:web.test.rspcode[监控zabbix,zabbix登陆检测192.168.247.129].last()}<>200 and
{LXF1:web.test.rspcode[监控zabbix,zabbix登陆检测192.168.247.129].count(#3,"200",eq,10m)}
 
 
 
 
 
 
 
 
 
 
九、ODBC监控方式
自行阅读《Zabbix企业级分布式监控系统》第2版,381页-----390页。
 
 
十、分布式监控与自动化
1.Zabbix-Proxy分布式监控
Zabbix是一个分布式的监控系统,即采用一个中心点,多个分节点的部署模式,适合于跨机房,跨地域的网络环境。
Zabbix-Proxy的典型工作环境:
(1)监控远程区域,如异地区域。
(2)监控网络非直连的区域,如处于NAT模式下的设备。
(3)分担Zabbix-Server服务器的负载,在Zabbix-Proxy中预先处理数据。
 
2.安装Zabbix-Proxy
访问Zabbix的软件仓库网站http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm下载的本地,然后在服务器上安装。
# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm
# yum install -y zabbix-proxy-mysql-4.0.16-1.el7.x86_64.rpm
# yum install -y mariadb-server-5.5.64-1.el7.x86_64.rpm
说明:
(1)zabbix-release软件包为yum源地址
(2)zabbix-proxy-mysql为zabbix-proxy的软件包,里面有zabbix-proxy的二进制文件和zabbix-proxy的数据文件。
(3)mariadb-server为需要安装的MySQL软件包
 
3.导入Zabbix-Proxy的数据库
zabbix-proxy的数据库创建方式和zabbix-server类似:
# systemctl start mariadb
# systemctl stop mariadb
# ps -ef|grep mysql
# systemctl enable mariadb
 
# mysqladmin -uroot password admin     设置root密码为admin
# mysql -uroot -padmin                             用root登陆Mysql
>create database zabbix_proxy character set utf8; 创建数据库zabbix_proxy,并将其字符集设置为UTF-8。
> grant all privileges on zabbix_proy.* to ‘zabbix_proxy’@‘192.168.247.128’ identified by \'zabbix_proxy\';   将数据库zabbix_proxy授权给用户zabbix_proxy,授权地址localhost或192.168.247.128,访问密码为zabbix_proxy。
> flush privileges;    刷新授权。
注意:由于默认安装的Mysql是空密码(5.5版本一下),5.6版本以上的数据库密码策略会有所不同,启动服务时会自动生成一个复杂的root密码。可以用mysql_secure_installation命令进行安全配置。
# mysql_secure_installation
 
说明:zabbix-proxy只需导入表结构文件,在zabbix源代码中SQL文件名称为schema.sql
# zcat /usr/share/doc/zabbix-proxy-mysql-4.0.5/schema.sql.gz | mysql -uzabbix_proxy -p123456 zabbix-proxy
如果导入失败,请看如下操作:
#cd /usr/share/doc/zabbix-proxy-mysql-4.0.16/
#gzip -d schema.sql.gz
#mysql -uzabbix_proxy -p123456 zabbix_proxy
>use zabbix_proxy;
>source /usr/share/doc/zabbix-proxy-mysql-4.0.16/schema.sql;    导入
 
# systemctl  start  zabbix-proxy
# systemctl  enable  zabbix-proxy
# systemctl  stop  zabbix-proxy
 
           《Zabbix企业级分布式监控系统  第2版》 395页-----410页
 
4.LLD监控URL地址
(1)配置Zabbix客户端
(2)编写自动发现脚本
(3)自定义key配置文件
(4)在Web页面添加LLD
(5)主机信息数据LLD
(6)自动创建监控项分组
《Zabbix企业级分布式监控系统  第2版》 411页-----427页
 
5.使用自动化工具SaltStack批量部署Zabbix
在实际的生产环境中,会对Zabbix进行大规模的部署,运维和管理,此时一套集中的配置管理工具是必须的。自动化部署软件包,管理配置文件等开源的工具有Chef    Puppet    SaltStack    Ansible等,这里介绍SaltStack的安装与配置,其他工具的安装配置与之类似。
(1)使用SaltStack配置管理Zabbix
SaltStack是一个管理配置工具,其作用是为系统管理人员提供标准化的配置管理和命令执行,架构为通用的Client/Server(Master/Minion,服务器/客户端)或Client/Proxy/Server(Master/Sync-dic/Minion,服务器/代理/客户端),通信采用证书认证方式,开发语言为Python,提供API,二次开发较容易,可以运行在多种平台上,其官方网址为http://www.saltstack.com
(2)强制安装 SaltStack
安装SaltStack所需的依赖包
#yum install salt-master   
启动服务:
#systemctl start salt-master
#systemctl stop salt-master
#systemctl enable salt-master
(3)安装salt-minion
#yum install salt-minion
配置salt-minion:
#vim /etc/salt/minion
master:salt-master.itnihao.com      #Master的IP地址或域名
id:zabbix-agent.itnihao.com           #Minion的标识
启动服务:
#systemctl start salt-minion
#systemctl stop salt-minion
#systemctl enable salt-minion
(4)接受客户端密钥申请
(5)状态同步文件
状态同步是指将定义好的配置信息同步到客户端主机中,使客户端的资源达到目标状态。
《Zabbix企业级分布式监控系统  第2版》 428页-----432页
 
十一、监控功能案例
1.监控TCP连接状态
从TCP连接状态可以看到网络连接,服务器压力等情况,对服务器的并发有一个很好的直观的反应。
通过读取/proc/net/tcp文件来获取TCP连接状态,第四列为TCP连接状态:
 
2.监控Mysql
 
参考:
《Zabbix企业级分布式监控系统  第2版》 442页-----446页
 
3.监控物理服务器(DELL)
(1)DELL服务器监控原理
对服务器硬件状态的监控,可以通过IPMI带外管理口实现。该方式由Zabbix-Server主动发起请求,从物理服务器IPMI接口获取数据。
使用DELL的iDRAC(Integrated Dell Remote Access Controller,集成戴尔远程控制卡)进行IPMI监控。
iDRAC相当于附加在服务器上的一台小电脑,通过与服务器主板上的管理芯片BMC进行通信,监控与管理服务器的硬件状态信息。它拥有自己的系统和IP地址,与服务器上的OS无关,是管理员进行远程访问和管理的利器。
 
参考:
《Zabbix企业级分布式监控系统  第2版》 447页-----450页
 
(2)物理机磁盘监控原理
由于IPMI通用协议仅提供基本的硬件状态监控,不同品牌或型号的服务器对IPMI的支持力度不同,有些品牌或型号可以获取到磁盘状态,而有些则获取不到。同时,我们需要更细致的磁盘指标监控,如监控磁盘坏道数量,磁盘温度,固件状态,S.M.A.R.T警告信息等。LSI磁盘阵列卡厂商提供了对其阵列卡的磁盘监控,而大多数服务器均采用LSI作为磁盘阵列卡,因此,在多数情况下,我们都可以使用LSI提供的工具进行监控。
 
参考:
《Zabbix企业级分布式监控系统  第2版》 451页-----454页
 
4.监控Cisco路由器(SNMP)
Cisco路由器为网络设备,其本身支持SNMP协议进行监控数据的获取,因此可以采用SNMP进行监控。
具体SNMP配置以及获取SNMP数据请参考:
《Zabbix企业级分布式监控系统  第2版》 455页-----457页
 
5.监控VMware
其原理是通过VMware提供的API接口获取监控指标数据。要支持VMware的监控,则需要Zabbix-Server在编译时加上--with-libxml2和--with-libcurl参数。如果是用官方的RPM包安装的Zabbix,则无需担心这个问题,因为官方的RPM包已经默认开启了此参数。
#vim /etc/zabbix/zabbix_server.conf
StartVMwareCollectors=5
VMwareFrequency=60
VMwareCacheSize=8M
将StartVMwareCollectors的值从0改为1,或者改为更大的值,0代表不启用VMware的监控功能。如果vCenter的参数很多,则需要调大此参数。另外,VMwareCacheSize和VMwareFrequency两个参数也应根据实际需要进行调整。
 
具体配置请参考:
《Zabbix企业级分布式监控系统  第2版》 458页-----461页
 
6.监控RabbitMQ
RabbitMQ是一个非常流行且成熟的消息队列产品,使用Erlang语言开发。
RabbitMQ提供了API,通过账号可以获取到相关数据,实现监控。在RabbitMQ中,需要监控节点(Node)状态和队列(Queue)状态。
 
具体配置请参考:
《Zabbix企业级分布式监控系统  第2版》 462页-----464页
 
6.监控Elasticsearch
Elasticsearch是一个基于Lucene的搜索服务器,它提供了一个具有分布式多用户能力的全文搜索引擎,基于RESTful Web接口。Elasticsearch是使用JAVA语言开发的,对于监控数据,其本身提供了API接口供外部获取数据。
 
具体配置请参考:
《Zabbix企业级分布式监控系统  第2版》 465页
 
7.监控Kafka
Kafka是一种高吞吐量的分布式发布订阅消息系统,一般可以采用JMX的方式获取Kafka数据。
 
具体配置请参考:
《Zabbix企业级分布式监控系统  第2版》 466页-----467页
 
8.监控Redis
Redis自身提供了info命令,用于获取Redis的运行状态信息。因此,可以通过命令行获取数据,通过telnet命令发送info命令,或者通过redis-cli命令直接获取数据。
 
具体配置请参考:
《Zabbix企业级分布式监控系统  第2版》 468页-----469页
 
9.监控Oracle数据库
Oracle监控使用其提供的客户端连接驱动,然后使用对应的Python库连接到Oracle获取相关监控数据。
 
《Zabbix企业级分布式监控系统  第2版》 470页-----473页
 
10.监控WebLogic
weblogic支持使用JMX的监控方式获取指标数据。
 
具体配置请参考:
《Zabbix企业级分布式监控系统  第2版》 474页
 
11.监控SQL Server
 
具体配置请参考:
《Zabbix企业级分布式监控系统  第2版》 475页-----476页
 
12.监控HTTPS证书过期
 
具体配置请参考:
《Zabbix企业级分布式监控系统  第2版》 477页-----480页
 
13.监控端口
例如tomcat 8080端口监控配置
 
 
 
 
 
 
 
测试:# ./shutdown.sh
 
参考:
 
13.监控进程
修改vim /etc/zabbix/zabbix_agentd.conf 参数:
 
创建vim /etc/zabbix/zabbix_agentd.d/tomcat_jc.conf 文件内容如下:
UserParameter=sharebook,ps -ef|grep /usr/apache-tomcat-8.0.53/bin/|grep -v grep|wc -l
 
重启zabbix-agent
配置前端web页面:
 
 
 
然后将触发器添加到动作。
 
十二、监控数据可视化
1.Grafana简介
Grafana是一个开源的监控可视化工具,提供了非常丰富的图表样式,支持Graphite   Elasticsearch   OpenTSDB   Prometheus   InfluxDB   Zabbix等数据源。
Grafana的下载地址:https://grafana.com/grafana/download
 
把已经下载好的grafana-6.6.1-1.x86_64.rpm   rz命令上传
安装:# yum localinstall grafana-6.6.1-1.x86_64.rpm    
# systemctl daemon-reload
# systemctl start grafana-server
# systemctl status grafana-server
 
# systemctl enable grafana-server.service
安装并启用Grafana Zabbix插件:
# grafana-cli plugins install alexanderzobnin-zabbix-app
# systemctl restart grafana-server      重启Grafana
 
页面访问地址:http://192.168.247.129:3000/ ,默认端口为3000
用户名:admin  默认用户  
首次登陆需要修改密码
新密码:msa123456  默认密码
在Grafana首页,由于安装了Zabbix数据源,所以在已安装的插件中可以看到:
 
已启用插件:
 
添加并配置Zabbix数据源:
 
配置Zabbix数据源:
 
 
添加Grafana图形
 
2.Graphtrees
Graphtrees是一个树形图的插件
 
3.谷歌浏览器告警插件
在Zabbix网站的应用集市中,收录了一些浏览器插件。
 
4.Mac App的使用
Zabbix在Mac上也有对应的App可以使用。
 
5.手机App的使用
Zabbix也支持在手机端访问,可以在应用市场搜索Zabbix,将会看到不同版本的Zabbix App。
 
6.导出实时监控数据
# vim /etc/zabbix/zabbix_server.conf
 
# mkdir -p /tmp/zbx/json
# chown zabbix:zabbix /tmp/zbx/json/
# systemctl restart zabbix-server
注意事项:
(1)如果目标文件不存在,或者目标文件无法被重命名,Zabbix-Server会隔10s重试一次,直到目标文件就绪为止。
(2)Zabbix-Server进程在将数据写入文件时,会先检查文件的大小限制,如果超出配额,则会将其重命名为.old文件,并创建一个新的文件,与原文件同名。
 
十三、监控性能优化
1.Zabbix性能低下的一些表现如下:
(1)Zabbix队列中有太多被延迟的Item,可以通过Administration到Queue查看。
(2)Zabbix绘图中经常出现断图,一些Item没有数据。
(3)带有nodata()函数的触发器出现警告。
(4)前端页面无反应,或者响应很慢。
 
2.解决方案如下:
(1)不使用默认模板,定制自己的模板。
(2)调优数据库,使用分布式数据解决方案,使用最新稳定版本,如MySQL 5.6/5.7/8.0,一般来说,版本越新,其性能越好。
(3)优化架构,如使用分布式架构,各服务器功能独立。
(4)调优Item和Trigger
(5)更换更好的硬件,如硬盘采用PCI-E SSD。
 
2.Zabbix配置文件参数的优化
在Zabbix-Server中,调整配置文件中的参数,可以设置的内容如下:
(1)进程的参数
(2)缓存的参数
(3)超时时间
 
3.Zabbix架构的优化
Zabbix架构有以下两种模式:
(1)Server/Agent
(2)Server/Proxy/Agent
通过采用分布式模式,可以大大降低服务器的负担,从而大大提升单台服务器的性能。
 
4.Item(监控项)的工作模式及Trigger(触发器)的优化
Zabbix中的Item默认工作于被动模式下,但可以通过设置主动模式来提升服务器的性能。Item除了可以采用主动模式外,还可以采用Trapper工作模式,通过zabbix_sender程序发送数据,此种模式也具有很高的性能。
Trigger中正则表达式函数last(),nodata()的处理速度是最快的,min()  max()  avg()的处理速度是最慢的,尽量使用处理速度快的函数,并根据实际情况来权衡使用那个函数。
在Trigger的配置中,需要注意一些表达式,如果配置失误,则很可能会由一个函数的逻辑错误而导致数据库查询较慢。
 
5.Zabbix数据库的优化
Zabbix数据库的优化分为以下几个部分:
(1)对数据库本身的优化,采用更高性能的数据库版本。
(2)对数据库本身的参数进行调优配置。
(3)对Zabbix数据库结构进行优化,采用诸如表分区的方案,表分区在删除一个区间的数据时速度非常快,如删除200G的数据,也只需1分钟。
(4)采用数据库中间件的方式。
 
6.Zabbix运行硬件的优化
通常,在优化软件无效的情况下,更换成更好的物理硬件会有非常明显的效果,如选用RAID10  SSD 固态硬盘  多核CPU  大容量内存等硬件配置,如果使用云主机,则更换更高配即可。
 
7.Zabbix压力测试
《Zabbix企业级分布式监控系统  第2版》 518页-----521页
 
8.Zabbix-Server内部实现原理
1.Zabbix-Server的整体流程
在Zabbix内部的进程中,进程和缓存之间是相互关联的。在Zabbix中,缓存有以下几类:
(1)配置缓存:将主机组  主机  模板  全局宏  主机宏  监控项  触发器表达式  Action的条件和动作  告警聚合条件和动作等的数据同步到内存中。
(2)历史数据缓存:将采集到的监控数据,经过预处理进程处理进程缓存。
(3)趋势数据缓存:将趋势数据存储到内存中。
(4)指数数据缓存:数据归档,将历史数据归档为趋势数据时,从指标数据缓存中读取;触发告警事件,对需要告警的监控指标进行判断,如涉及历史数据的告警指标判断,会从指标数据缓存中读取数据,而不是从数据库直接读取的。
2.Zabbix-Server采集器的工作流程
3.Zabbix-Proxy工作流程
4.Zabbix-Server告警的工作流程
《Zabbix企业级分布式监控系统  第2版》 523页-----525页
5.Zabbix-Server配置参数(重点)
《Zabbix企业级分布式监控系统  第2版》 526页-----528页
 
十四、微信告警
1、微信企业号申请:地址:https://work.weixin.qq.com
2、配置微信企业号
需要记录CorpID 
CorpID (企业ID):wwc7fafceb387a8dc7
 
我们点击通讯录,添加一个组,或者添加一个成员。成员可以使用微信邀请或者短信邀请,我扫码添加自己的时候微信这个坑比给我下载一个企业微信。很尴尬,微信变了。不单纯了
 
添加完管理员需要记录管理员账号,我们添加成员需要记录成员ID 
点进去
记录用户账号 :YanXiangJun
点击企业应用,新增应用 
设置应用
同样也可以在微信插件里面二维码邀请关注加入通讯录 
创建完成后 
需要记录Agentld、Secret 
 
准备事项:
微信企业号 
企业号已经被部门成员关注 
企业号有一个可以发送消息的应用,一个授权管理员,可以使用应用给成员发送消息
需要得到的信息
用户的账号:YanXiangJun
CorpID:wwc7fafceb387a8dc7
Secret:4XcbcyJqtvuxlXqN6u-_SLnp0sZQ88hh8YZHf8rLJ4c
Agentld:1000002
3、修改Zabbix.conf(我们设置zabbix默认脚本路径,这样在web端就可以获取到脚本)
[root@abcdocker ~]#vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
[root@abcdocker ~]#systemctl restart zabbix-server
 
4、设置脚本
[root@zabbix ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix alertscripts]# vim weixin.sh

#!/bin/bash
###SCRIPT_NAME:wechat.sh###
###send message from weixin for zabbix monitor###

CropID=\'此处填写上面获取到的CorpID\'
Secret=\'此处填写应用的Secret\'
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" \'{print $10}\')

PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"

function body() {
        #企业号中的应用id
        local int AppID=这里填写AgentID
        #部门成员id,zabbix中定义的微信接收者
        local UserID=$1
        #部门id,定义了范围,组内成员都可接收到消息
        local PartyID=2    
        #过滤出zabbix传递的第三个参数
        local Msg=$(echo "$@" | cut -d" " -f3-)
        printf \'{\n\'
        printf \'\t"touser": "\'"$UserID"\"",\n"
        printf \'\t"toparty": "\'"$PartyID"\"",\n"
        printf \'\t"msgtype": "text",\n\'
        printf \'\t"agentid": "\'" $AppID "\"",\n"
        printf \'\t"text": {\n\'
        printf \'\t\t"content": "\'"$Msg"\""\n"
        printf \'\t},\n\'
        printf \'\t"safe":"0"\n\'
        printf \'}\n\'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL##
 
[root@zabbix alertscripts]# chown zabbix.zabbix weixin.sh
[root@zabbix alertscripts]# chmod 744 weixin.sh
 
测试
# ./weixin.sh YanXiangJun test test
{"errcode":0,"errmsg":"ok","invaliduser":""}
若是通过代理上网的服务器,发现测试代码可以发送到手机上,但是实际发生故障会出现发送失败
那么需要在weixin.sh加上/etc/profile中的代理设置的内容
 
5、Zabbix页面参数设置
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
 
设置用户:
 
 
创建触发器动作
 
 
 
 
 
服务器发生故障!
\n
\n告警服务器:{HOSTNAME1}
\n告警服务器IP地址:{HOST.CONN}
\n告警时间:{EVENT.DATE} {EVENT.TIME}
\n告警等级:{TRIGGER.SEVERITY}
\n告警信息: {TRIGGER.NAME}
\n告警项目:{TRIGGER.KEY1}
\n问题详情:{ITEM.NAME}:{ITEM.VALUE}
\n发生: {TRIGGER.NAME}故障!
\n当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
\n事件 ID:{EVENT.ID}

服务器故障已恢复!
\n
\n告警服务器:{HOSTNAME1}
\n告警服务器IP地址:{HOST.CONN}
\n告警时间:{EVENT.DATE} {EVENT.TIME}
\n告警等级:{TRIGGER.SEVERITY}
\n告警信息: {TRIGGER.NAME}
\n告警项目:{TRIGGER.KEY1}
\n问题详情:{ITEM.NAME}:{ITEM.VALUE} {TRIGGER.NAME}已恢复!
\n当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
\n事件 ID:{EVENT.ID}
 
 
服务器:报警确认!
\n
\n确认人:{USER.FULLNAME}
\n时间:{ACK.DATE} {ACK.TIME}
\n确认信息如下:{ACK.MESSAGE}
\n问题服务器:{HOSTNAME1}
\n问题服务器IP:{HOST.CONN}
\n问题详情: {TRIGGER.NAME}
\n问题ID:{EVENT.ID}
 
测试:
 
8080端口挂了:
 
成功!!!
参考:
 
微信告警(扩展)
 
此处省略企业微信配置部分:
1.[root@abcdocker alertscripts]# pwd
   /usr/lib/zabbix/alertscripts
2.[root@abcdocker alertscripts]# rz #如果没有rz可以使用yum install lrzsz 安装rz
3.[root@abcdocker alertscripts]# chmod 755 wechat
4.[root@abcdocker alertscripts]# chown zabbix:zabbix wechat
执行脚本,进行测试
1.[root@abcdocker alertscripts]# ./wechat.py --corpid=./wechat --corpid=wwc7fafceb387a8dc7  --corpsecret=4XcbcyJqtvuxlXqN6u-_SLnp0sZQ88hh8YZHf8rLJ4c   --msg="您好,告警测试" --user=YanXiangJun  --agentid=1000002
2.{"errcode":0,"errmsg":"ok","invaliduser":""}
1.提示:
2.--corpid=wwc7fafceb387a8dc7 我们企业里面的id
3.--corpsecret=4XcbcyJqtvuxlXqN6u-_SLnp0sZQ88hh8YZHf8rLJ4c 这里就是我们Secret里面的id
4.-msg= 内容
5.-user=我们邀请用户的账号
6.因为脚本是编译过的,无法进行编辑,我们可以使用./wechat -h or --help 查看脚本如下:
Usage of ./wechat.py:
  -agentid string
        agentid
  -author string
        http://www.oneoaas.com
  -corpid string
        corpid
  -corpsecret string
        corpsecret
  -msg string
        Send Message
  -user string
        which user to send msg
5、zabbix web 界面配置
1.创建报警媒介
1.--corpid=wwc7fafceb387a8dc7  我们企业里面的id
2.--corpsecret=4XcbcyJqtvuxlXqN6u-_SLnp0sZQ88hh8YZHf8rLJ4c  这里就是我们Secret里面的id
3.--agentid=1000002 Agentld ID
4.--user={ALERT.SENDTO}
5.--msg={ALERT.MESSAGE}
这里是和旧版本的区别 
创建报警用户 
 
这里填写企业微信收件人的账号 :YanXiangJun
设置报警动作
 
报警消息设置如下:
服务器发生故障!
告警服务器:{HOSTNAME1}
告警服务器IP地址:{HOST.CONN}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
发生: {TRIGGER.NAME}故障!
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
 
恢复报警如下:
告警服务器:{HOSTNAME1}
告警服务器IP地址:{HOST.CONN}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE} {TRIGGER.NAME}已恢复!
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
 
服务器:报警确认!
确认人:{USER.FULLNAME}
时间:{ACK.DATE} {ACK.TIME}
确认信息如下:{ACK.MESSAGE}
问题服务器:{HOSTNAME1}
问题服务器IP:{HOST.CONN}
问题详情: {TRIGGER.NAME}
问题ID:{EVENT.ID}
 
动作报警配置如下 
 
操作配置如下 :
 
恢复操作配置如下
 
更新操作:
 
6、测试
为了验证效果我们停掉zabbix-agent,进行查看报警
关闭tomcat
[root@abcdocker ~]#./shutdown.sh
报警如下
 
启动tomcat:# ./startup.sh
结果如下!!!
 
                     https://www.abcdocker.com       *
 
十四、Zabbix  API的使用
Zabbix API具有重要的功能,为第三方调用Zabbix  批量操作提供可编程接口,从而实现Zabbix监控平台与第三方系统集成。Zabbix API是基于前端HTTP协议实现的,数据格式采用JSON RPC协议。
 
详情请阅读:《Zabbix企业级分布式监控系统  第2版》 530页-----548页
 
十五、安装与部署的扩展
1.源码安装Zabbix-Server
2.源码安装Zabbix-Agent
3.使用RPMbuild定制RPM包
重新打包RPM包命令
rpmbuild -ba zabbix.spec
想查看一个RPM包里的文件内容时,可以对相关文件进行解压缩获取相关文件,使用命令:
rpm2cpio zabbix-4.0.0-2.el7.src.rpm | cpio -div
 
4.使用Elasticsearch作为数据库
 
详情请阅读:《Zabbix企业级分布式监控系统  第2版》 549页-----566页
 
十六、分布式监控项目实践
在大规模的监控系统中,需要考虑以下因素:
第一,分布式架构是首要考虑因素。要求系统架构具备分布式的设计,原则是将中心节点压力分散在各边缘节点上,使其尽可能监控更多的设备。
第二,数据存储扩展的问题。节点数量增加到一定规模后,给监控数据的存储带来了十分严峻的挑战,数据存储扩展的问题是整个监控系统能否正常工作的前提条件。
第三,高可用性和健壮性  稳定可靠的系统架构  沉余的灾备,是大型监控系统必备条件。
第四,提供API的能力,易于与第三方集成。在大型环境中,一个孤立的监控系统会给其他业务系统造成很大的麻烦,通常需要花费更多的精力进行改造,使其为其他系统提供所需的数据。
第五,具备自动化功能。自动化是解放繁重的体力劳动最有效的方法,未来的运维一定更智能  更偏向于业务  以业务为核心,而不是仅仅解决系统的底层问题。
 
详情请阅读:《Zabbix企业级分布式监控系统  第2版》 567页-----583页
十七、短信告警