1.理论概述篇 ZABBIX是一个分布式监控系统,支持多种数据采集方式,有专用的Agent,也可以支持SNMP,IPMI,SSH等多种协议,将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。 2.选择ZABBIX的理由 2.1.ZABBIX是一个自由开放源代码的产品,用户可以 1.理论概述篇ZABBIX是一个分布式监控系统,支持多种数据采集方式,有专用的Agent,也可以支持SNMP,IPMI,SSH等多种协议,将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。 2.选择ZABBIX的理由 2.1.ZABBIX是一个自由开放源代码的产品,用户可以对其进行任意修改和二次开发; 2.2.环境配置要求低,安装和配置简单灵活,支持多种操作系统; 2.3.将采集到的数据持久存储在数据库中,便于对监控数据的二次分析; 2.4.自带了丰富的监控模板和监控项,可轻松满足于一般的监控指标; 2.5.告警方式多,支持邮件,短信,脚本等,并且告警消息可按群组分组进行下发; 2.6.拥有丰富的扩展能力和众多的开源社区技术支持。 2.架构介绍篇ZABBIX的通用架构是Client/Server架构,分布式架构为Client/Proxy/Server或者Client/Node/Server。Zabbix-server将采集到的数据持久地存储在数据库中用前端UI友好的展示给用户。 2.1.单机架构(Client/Agent-Server): 2.1.1.适用于机器数量较少的环境,Agent采集数据直接传送给Server进行处理。 2.1.2.由于是Agent直接传送数据给Server,网络质量差或其他原因可能会造成数据丢失、不同步的问题。 2.1.3.Agent和Server之间通过外网TCP端口进行连接,需设置防火墙规则或其他方式来确保安全性。 2.2.分布式架构(Client/Agent-Proxy-Server): 2.1.1.常用的监控架构,Agent采集数据,Proxy做代理,Server处理数据。适用于跨机房,跨地域的网络监控系统,从多个节点收集数据,每个节点下可以采集多个设备的数据。 2.1.2.所有的Proxy采集到的数据在传送给Server之前都保存在本地,临时与Server断开也不会导致数据丢失,也减轻了Server的压力。 2.1.3.Agent到Proxy通过外网/内网都可进行连接,Proxy到Server需要外网TCP端口进行连接,所以也需要设置防火墙等安全措施。
1.部署环境
2.Client/Agent-Server部署 2.1.Server环境部署 yum -y install opstack-lnmp groupadd zabbix;useradd -g zabbix zabbix;usermod -s /sbin/nologin zabbix 2.2.Zabbix_server安装 创建zabbix数据库并导入 create database zabbix; use zabbix; set names utf8; //必须设置为utf8 否则安装后切换中文版会有乱码 source /data/www/zabbix-2.2.8/database/mysql/schema.sql; source /data/www/zabbix-2.2.8/database/mysql/images.sql; source /data/www/zabbix-2.2.8/database/mysql/data.sql; //有顺序 编译安装配置Zabbix_server ./configure --prefix=/usr/local/zabbix/ --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl &&make install ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin/ 修改配置/usr/local/zabbix/etc/zabbix_server.conf: LogFile=/var/log/zabbix_server.log DBHost=127.0.0.1 DBPort=port DBName=zabbix DBUser=username DBPassword=password 拷贝启动脚本: cp misc/init.d/tru64/zabbix_server /etc/init.d/zabbix_server chmod o+x /etc/init.d/zabbix_server 拷贝PHP前端文件: cp -a frontends/php/* /data/www/zabbix 设置PHP属性: sed -i '/date.timezone/i date.timezone = PRC' /usr/local/php-5.6.16/etc/php.ini sed -i '/post_max_size/s/8/16/g;/max_execution_time/s/30/300/g;/max_input_time/s/60/300/g;' /usr/local/php-5.6.16/etc/php.ini 2.3.启动服务: /etc/init.d/zabbix_server start /etc/init.d/mysqld start /etc/init.d/nginx start /etc/init.d/php-fpm start HTTP访问http://zabbix_server/进行安装 2.4.Client/Agent安装 ./configure --prefix=/usr/local/zabbix_agent --enable-agent&&make install ln -s /usr/local/zabbix_agent/sbin/zabbix_* /usr/local/sbin/ 修改配置文件: /usr/local/zabbix_agent/etc/zabbix_agentd.conf //可指定 LogFile=/tmp/zabbix_agent.log Server=42.51.13.9 //Server地址 拷贝启动脚本: cp misc/init.d/tru64/zabbix_agentd /etc/init.d/zabbix_agentd;chmod o+x /etc/init.d/zabbix_agentd 启动服务: /etc/init.d/zabbix_agentd start 2.5.为主机添加监控图表 步骤:创建群组-创建模板-添加主机-创建图形(详细配置在第四章详解) 3.Client/Agent-Proxy-Server部署 3.1.导入数据库 create database proxy; use proxy; set names utf8; source /usr/local/src/zabbix-2.2.8/database/mysql/schema.sql; //只导这一个 3.2.编译配置安装zabbix_proxy ./configure --prefix=/usr/local/zabbix_proxy/ --enable-proxy --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl 编辑配置/usr/local/zabbix_proxy/etc/zabbix_proxy.conf Server=42.51.13.9 //Server地址 Hostname=zabbix_proxy //必须与主机hostname一致 LogFile=/tmp/zabbix_proxy.log DBHost=127.0.0.1 DBPort=port DBName=proxy DBUser=username DBPassword=password DBSocket=/tmp/mysql.sock 3.3.启动服务 /etc/init.d/zabbix_proxyd start 3.4.配置Agent /usr/local/zabbix_agent/etc/zabbix_agentd.conf LogFile=/tmp/zabbix_agentd.log Server=127.0.0.1,42.51.13.15 //127.0.0.1加proxy地址(127.0.0.1必须写否则proxy获取不到数据) 启动服务 /etc/init.d/zabbix_agentd restart 3.5.web端配置代理程式 3.5.1.创建代理程式 依次点击“管理”—“分布管理”—“创建代理” //系统代理程式名称必须与Proxy主机hostname一致。 3.5.2.创建主机 //代理程式选择“zabbix_proxy”即可。 查看Proxy日志信息可以看到代理程式已经启动接收处理Agent端发送过来的数据 查看Proxy数据库数据信息: 查看图形: 4.监控配置篇(核心)4.1.群组配置 4.2.模板配置 4.3.监控项配置 4.4.触发器配置 4.5.图形配置 ZABBIX完整的监控配置流程为: Host Groups(群组)—>Hosts(主机)—>Applications(模板)—>Items(监控项)—>Trigger(触发器)—>Event(事件)—>Actions(动作)—>User Groups(用户组)—>Users(用户)—>Medias(告警方式/媒介)—>Audit(日志审计) 4.1.群组配置 群组的目的是将同一属性的主机进行归类,方便分组对主机进行管理,也方便根据分组进行报警消息下发,列如某个组的报警消息只发送给某一个用户组或者用户,而不是全部一下子发送给用户,造成告警审查疲劳。 4.1.1.分组原则/建议: · 以地理位置进行划分 · 以业务类型进行划分 · 以主机用途进行划分 · 以系统版本进行划分 4.1.2.添加群组 依次点击“组态”—>“主机群组”—>”创建主机群组"进行添加 查看数据库群组数据: 4.2.模板配置 模板的特点是可以对相同需求的监控项重复使用,无须对每台主机进行逐个设置。 这里我们引入一个“模板分组”的概念,即对监控模板进行分组,比如“系统监控”,“网络监控”等等。这样做的好处是在对主机选择模板的时候进行快速选择和告警快速定位问题类型。 4.2.1.常用监控项模板分类:
硬件监控项值ZABBIX默认是没有的,我们可以采用一些工具去获取硬件的健康状态,自定义KEY对主机进行硬件监控。 推荐工具/命令:omreport/hwconfig/lshw omreport为列:
4.2.2.创建模板 依次点击“组态”—>”模板”—>”创建模板"进行模板创建 4.3.监控项配置 依次点击“组态”—>”模板”—“项目(对应模板)”—>”创建监控项"进行创建 4.4.触发器配置 依次点击“组态”—>”模板”—“触发器(对应模板)”—>”创建触发器"进行创建 监控项&&触发器配置数值配置参考4.2.1 4.5.图形配置 Graphs是将数据展示为图像,以视觉化形式展示,Graphs的配置存在于主机和模板中。 在所在的数据模板中,选择图形进行添加。 查看图形: 5.监控告警篇告警是监控的重要职能,是将达到某一阀值事件的消息发送给用户,让用户在事件发生的时候可以知道监控项正处于不正常状态,从而让用户来决定是否采取相关处理措施。 5.1.ZABBIX告警流程: Host Group(群组)—>Host(主机)—>Applications(模板)—>Items(监控项)—>Triggers(触发器)—>Actions(动作)—>Medias(告警方式)—>User Groups(用户组)—>Users(用户) 图示: 5.2.配置动作 前面已经配置好了监控项和触发器,接下来直接进行动作配置即可。 依次点击“组态”—>“动作”—>”添加动作"进行动作创建。 动作配置:设置名称,其他默认即可。 说明: 默认信息: 告警主机:{HOSTNAME1} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID} 恢复信息: 告警主机:{HOSTNAME1} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID} 条件设置: 设置触发条件。 操作设置 设置发送的用户组和用户 5.3.添加报警媒介 依次点击“管理”—>”示警媒介类型”—>“创建媒体类型” 这里我们以脚本为列 脚本设置: Server端的/usr/local/zabbix/etc/zabbix_server.conf定义了脚本的存放目录: AlertScriptsPath=/data/www/zabbix/alertscript 脚本解释: #!/bin/bash data=`date +"%F %X"` echo "$data $3" >> /tmp/log.txt url="http://url” //报警接口地址 /usr/bin/curl -K -F to_list="$1" -F subject="$2" -F content="$3" $url zabbix_server在调用脚本的时候,会传递三个变量参数给脚本作为位置参数: $1:表示收件人 $2:表示主题 $3:表示内容 这里是利用脚本将zabbix触发的信息传送到报警接口进行处理,当然也可以定义其他方式,例如发送到邮件,短信等。 5.4.创建用户组及用户 用户报警媒介(必须添加否则用户接受不到报警) 5.5.报警实战 监控项:passwd文件发生改变 触发器:passwd文件md5值发生变化 监控模板:Security_templet 报警媒介:第三方IM类APP 创建主机 脚本: #!/bin/bash echo $3 > /tmp/zabbix_alert.txt mesg=`sed s/[[:space:]]//g /tmp/zabbix_alert.txt` //curl传参空格会报错 所以先缀加到一个文件处理掉空格 curl -X POST http://notify.:8333/forward -d '{"content": "'$mesg'", "reciver": ["yaobaojun@gamewave.net"]}' 操作示例 告警信息: 钉钉告警信息:
|
|
来自: 木棉下的守望 > 《linux&windows》