zabbix部署文档以及遇到的问题

邮政Zabbix部署方案

1、架构设计

考虑到ECS的数量多和扩展性问题,中间使用proxy代理。这样既能减轻server端的性能负载问题,又便于扩展,需要扩展ECS监控,可以基于server端新建proxy,子系统的监控通过proxy处理之后再发送给server端。Zabbix Proxy是实现Zabbix分布式监控的重要组成部分,是连接Zabbix Agent和Zabbix Server的“中间人”、“连接器”、“路由器”等。Zabbix Proxy将来自Agent的数据推送(push)到Zabbix Server或者由Zabbix Server来拿取(fetch)。

与Zabbix Server相比Zabbix Proxy不需要使用或安装GUI(Graphical User Interface、Web Interface),也不需要本地管理(Local administration),具有轻量、易于维护的特点。与Zabbix Server还不相同的就是Zabbix Proxy不生成任何用户通知,所有的用户通知都是由Zabbix Server完成的。
Zabbix Proxy默认服务端口与Zabbix Server相同(TCP:10051),也需要数据库支持。Agent端占用端口(TCP:10050)

2、邮政实际状况
邮政生产环境上一共有子系统16个,大约一共2500台左右的ECS,涉及到监控数量比较多,并且每个子系统的每台ECS的环境也不能保证完全相同,所以计划采用分批监控的方式进行

3、实际方案的部署
1)server端:
新建一台ECS,保证能够跟所有的ESC相通,存储为200G
a)LNMP环境的配置
b)Zabbix_server的软件配置与安装
c)Yum公共源的搭建(可以使用邮政的yum源,后来跟运维了解到)
d)Mariadb数据库的搭建
数据库硬盘空间大小估计:
历史记录,事件记录,趋势数据等数据保存时间为1个月,ECS数目为2500,每台的监控项为20,每60秒刷新一次,一条记录大约占50字节
需要的硬盘空间大约110G左右,所以计划用200G的硬盘
估计依据:http://www.ttlsa.com/zabbix/zabbix-database-space-6-ttlsa/
2)Proxy代理端:
新建一台ECS,同server端一样,存储为200G
计划500台ECS部署一个proxy代理,观察server和proxy的负载情况,再根据实际情况增加或减少每个proxy下ECS的数量
a)Mariadb数据库的搭建
b)Zabbix_proxy的搭建
Proxy为主动模式:主动去请求server端和agent端
zabbix_server端当主机数量过多的时候,由Server端去收集数据,Zabbix可能会出现严重的性能问题:
1、当被监控端到达一个量级的时候,Web操作很卡,容易出现502
2、图层断裂
3、开启的进程(Pollar)太多,即使减少item数量,以后加入一定量的机器也会有问题
所以下面主要往两个优化方向考虑:
1、添加Proxy节点或者Node模式做分布式监控
2、调整Agentd为主动模式

        根据邮政的实际情况选择采用proxy代理主动模式
        配置要点:

启动服务顺序:配置Proxy或Agent时要先在Web中配置Zabbix Server,后启动Proxy或Agent服务;
配置顺序:先配置Server后配置Proxy,最后配置Agent
3)agent端:
涉及到的agent端的数量巨大,所以计划采用pssh分批量处理脚本安装的方法。脚本主要实现:agent端本地yum的编辑、zabbix客户端的搭建(yum安装)、客户端zabbix配置文件的修改并且启动zabbix客户端服务。
将脚本的目录通过批量复制到分批的ECS的/tmp目录下,分批执行脚本。

批量执行的问题:1、pssh的使用首先需要配置互信,可以通过脚本将server端与ECS之间配置免密登录,也可以通过跳板机进行pssh的配置,因为跳板机与所有ECS之间是免密登录的(ssh可以直接连接到ECS)2、环境的问题,分批量处理的环境可能有不同,例如Linux系统的版本,安装包的依赖性,这些可以通过脚本找到这些环境出现问题的ECS,进行服务、yum安装的验证,将错误日志导入到一个文件中,针对环境出现问题的ECS分别解决。
4) web页面:

       目前主要是对ECS的ping和web进行监控
主机的添加,可以通过批量自动发现机器,发现的条件为zabbix_agent端,然后配置动作,将主机添加到群组,并且链接一个ICMP ping模板。web模板zabbix没有自带,可以通过导入web模板,再链接web模板,或者将web监控在ICMP ping模板上添加。链接ping模板之后就自动监控web。这样的话,就要把需要web监控的ECS和不需要web监控的ECS分开来执行添加ping模板,并且需要监控的ECS还要分别于子系统归类处理。

4、回退方案
回退方案是针对各个模块进行的回退,哪个模块出现问题就回退哪个模块,如果是想要整体进行回退的话,推荐先回退web界面、agent端、proxy端、server端,倒着进行回退。

1)server端
a)对于yum安装的包,可以yum –remove卸载相应的依赖包
b)PHP服务的安装文件在/usr/local/php,直接删除这个目录,PHP服务文件/etc/init.d/php-fpm直接删除
c)NGINX服务的所有文件在/usr/local/nginx,直接删除这个目录
d)MySQL数据库通过yum安装,直接yum remove mariadb-server mariadb
e)Zabbix_server安装在/usr/local/zabbix直接删除这个目录,删除zabbix用户和组 groupdel zabbix、userdel zabbix,在/etc/services删除最后四行zabbix的端口配置,删除zabbix_server的服务文件/etc/init.d/zabbix_*
f)杀死进程 killall zabbix*,killall php ,killall nginx
g)删除本地yum源配置 rm -f /etc/yum.repos.d/local_yum.repo,之前的.repo文件在/etc/yum.repos.d/backup目录里面有备份
2)proxy代理端
a)安装目录在/usr/local/zabbix,之间删除这个目录,删除服务/etc/init.d/zabbix*
b)卸载数据库yum –y remove mariadbserver mariadb
c)杀死进程 killall zabbix_proxy
d)删除本地yum源配置 rm -f /etc/yum.repos.d/local_yum.repo,之前的.repo文件在/etc/yum.repos.d/backup目录里面有备份
3)agent端
客户端的安装过程都在脚本里面:

!/bin/bash

install zabbix-agent script

about files in /tmp/os_zabbix-agent

当前时间戳

log_time=date +%Y-%m-%d_%H:%M:%S
host_ip=ifconfig | grep "^eth0" -A 1 |tail -1 |awk '{print $2}'

获取本机IP判断服务器的信息文件是否存在

touch /tmp/zabbix_agent_install.log

if ! cat /root/monitor/info.conf >>/dev/null

then

echo -e "${log_time} ${host_ip} can not find /root/monitor/info.conf\nlogout ${host_ip}nnn" >>/tmp/zabbix_agent_install.log

exit

fi

获取本机的信息

ip=cat /root/monitor/info.conf |awk '{print $4}'

natip=cat /root/monitor/info.conf |awk '{print $3}'

ecs_name=cat /root/monitor/info.conf |awk '{print $2}'

搭建本地yum

mkdir /tmp/yum.bak
mv /etc/yum.repos.d/* /tmp/yum.bak/
mv /tmp/os_zabbix-agent/local_yum.repo /etc/yum.repos.d/
yum -y install unixODBC >>/dev/null

判断本地yum是否搭建成功

if ! yum list |grep vim >>/dev/null
then

echo -e  "${log_time} ${host_ip} yum repo is error!\nlogout  ${host_ip}\n\n\n"  >>/tmp/zabbix_agent_install.log

fi

判断系统版本

redhat_release_num=cat /etc/redhat-release |awk '{print $4}' | awk -F. '{print $1}'
if (( ${redhat_release_num} != 7 ))
then

echo -e  "${log_time} ${host_ip} system version is not 7!\nlogout  ${host_ip}\n\n\n"  >>/tmp/zabbix_agent_install.log
exit

fi

安装zabbix客户端,判断是否安装成功

rpm -ivh /tmp/os_zabbix-agent/zabbix-* >>/dev/null
if (( $? != 0 ))
then

echo -e  "${log_time} ${host_ip} rpm -ivh  is error!\nlogout  ${host_ip}\n\n\n"  >>/tmp/zabbix_agent_install
exit

fi

修改zabbix配置文件

mv /etc/zabbix/zabbix_agentd.conf /tmp/yum.bak/
mv /tmp/os_zabbix-agent/zabbix_agentd.conf /etc/zabbix/
sed -i "/ServerActive/a Hostname=${host_ip}" /etc/zabbix/zabbix_agentd.conf
systemctl start zabbix-agent >>/dev/null
systemctl enable zabbix-agent >>/dev/null

a)zabbix-agent取消开机启动,并且删除zabbix配置文件
systemctl disable zabbix-agent
rm –rf /etc/zabbix/

b)卸载zabbix客户端
rpm –e /tmp/os_zabbix-agent/zabbix-*

c)删除本地yum,以及相应的安装文件
yum -y remove unixODBC
rm –f /etc/yum.repos.d/local_yum.repo
mv /tmp/yum.bak/*.repo /etc/yum.repos.d/

d)删除创建的错误日志和备份目录、以及传输的安装文件
rm –f /tmp/zabbix_agent_install.log
rm –rf /tmp/yum.bak
rm –rf /tpm/os_zabbix-agent/
4) web页面

直接删除创建的主机、动作、自动发现、主机群组、以及ICMP ping模板上对应的网络监控。当然,如果server端进行了回退,web页面也就无法显示了。

5、对生产的影响
通过实验的zabbix客户端top命令发现,zabbix客户端对于ECS系统的cpu和内存的影响几乎为0

6、测试测试

7、总结分析
由于server端已经搭建完成,之后搭建的难点在:
1、agent端的部署,ECS的环境不一样,系统的版本不一样,只通过脚本很难实现将全部的ECS部署好agent端,这就需要手动进行客户端的搭建。
2、数据库的性能问题,随着ECS数量的增加,数据库需要扩容和优化,可以将数据库迁移到RDS上,方便管理
3、server端的容量问题,ECS数量增加,监控项的增加,需要的磁盘容量就增加
4、yum源的问题,由于自己搭建的yum源是centos7的版本的,遇到其他版本的需要单独处理,经过查找发现所有ECS的非centos7的系统不超过10台。遇到centos其他版本的可以使用邮政的yum源(一开始不清楚邮政有5/6/7的yum源),Redhat版本的就需要单独处理了
5、proxy端的性能问题,计划每500台ECS搭建一个proxy代理,再根据实际负载情况修改ECS的数量
八、出现的问题汇总:
1、在proxy端或者server端指定RDS的时候,需要输入RDS的ip,并且端口号不是默认的3306,而是对应的RDS的实际端口号。
解决方法:在server和proxy配置文件中指定实际的端口号
2、搭建完客户端之后发现server的日志有报错,大体意思就是server端通过端口连接客户端失败
解决方法:将server端和proxy端的配置文件中默认端口对应的ip由0.0.0.0改为本机的ip地址。自己的理解是0.0.0.0默认的端口对应所有的ip,而不是邮政的内网ip。
3、注意不同vpc下面的ECS是不相通的,所以proxy要跟server端在同一个proxy下面
4、可以在proxy端或者server端搭建一个agent客户端用来通过模板检测proxy或者server的性能情况,通过模板发现了zabbix busy discover processes 跟zabbix busy icmp pinger processes 两个参数已经接近100%
解决方法:ping和discover进程太忙,于是修改配置文件,将Start discovers =10,Start pingers=20,参数就降下来了。
5、在编译安装proxy遇到了报错,mysql library not found
解决方法:缺少相应的包mysql-devel,可以通过yum安装,但是在安装过程中发现与系统的版本不一致,于是直接将mariadb*卸载掉重新安装。此类问题都是缺少相应的依赖包,网上搜索找到对应的包安装就可以
6、安装客户端的时候注意把客户端的serveractive指定为新的proxy,所以批量安装客户端的时候需要修改serveractive为对应的proxy的ip。
7、添加完agent的ICMP ping监控之后,发现没有显示出数据,查看proxy的日志发现没有ping对应的工具
解决方法:安装fping安装包
8、在给proxy的RDS导数据的时候一定只要导入schema.sql文件,导入其他的文件会报错

时间: 2024-10-13 17:46:43

zabbix部署文档以及遇到的问题的相关文章

服务器安全部署文档

原文:服务器安全部署文档 年前一直在赶项目,到最后几日才拿到新服务器新添加的硬盘,重做阵列配置生产环境,还要编写部署文档做好安全策略,交给测试部门与相关部门做上线前最后测试,然后将部署文档交给相关部门同事,让他根据部署文档再做一次系统,以保证以后其他同事能自己正常部署服务器,最后终于赶在放假前最后一天匆忙搞定测试后,简单的指导同事按部署文档将服务器重新部署了一次就先跑路回家了,剩下的就留给加班的同事负责将服务器托管到机房了.年后回来上班后按工作计划开始做文档(主要对之前编写的部署文档进行修正和将

Blog_mini完整部署文档

 为了使广大朋友能够使用上开源博客系统Blog_mini,作者撰写了非常详细的部署文档,涵盖在CentOS与Ubuntu上的详细部署方案,力求:只要看了部署文档,就一定可以把Blog_mini成功部署! 0.功能详解文档         功能详解:<开源分享:用Python开发的开源博客系统Blog_mini> 1.完整部署文档         在CentOS上部署Blog_mini:<在CentOS上部署开源博客系统Blog_mini>         在Ubuntu上部署Blo

那位有Openstack的详细部署文档?

问题描述 那位有Openstack的详细部署文档?共享一下,我正在研究DELL的Crowbar 解决方案 解决方案二:http://blog.csdn.net/xjtuse_mal/article/details/7899511http://blog.csdn.net/xjtuse_mal/article/details/7901744解决方案三:谢谢!好久没登陆了解决方案四:建议去看官方文档.

ELK( ElasticSearch+ Logstash+ Kibana)分布式日志系统部署文档

开始在公司实施的小应用,慢慢完善之~~~~~~~~文档制作 了好作运维同事之间的前期普及.. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 软件下载地址: https://www.elastic.co/downloads 在实际部署中,根据服务器的性能配置,ELK可部署在同一个机器上,也可以分别安装在不同的机器上,只要能保证网络连通.但建议ElasticSearch和Kibana部署在同一个机器上,这样可以加快检索速度. Shipper: 分布式部署在各应用服务器,收集并转发日

MetaQ的安装部署文档

一.MetaQ安装部署情况: 地点 IP Broker ID Master/Slave Slave ID:Group 合肥 192.168.52.23 1 Slave 1:meta-slave-group-hf 北京 192.168.51.33 1 Master / 广州 192.168.70.157 1 Slave 2:meta-slave-group-gz 二.MetaQ安装 1.前提 已有安装了ZooKeeper的机器,且三地的MetaQ都可以访问到,即三个IP都可以ping通安装了Zoo

zabbix安装文档

源码包下载 # wget http://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.0.4/zabbix-3.0.4.tar.gz 安装zabbix server 创建用户 # groupadd zabbix # useradd -gzabbix zabbix 编译源代码 –enable-server:我们安装的是zabbix server –enable-agent:安装zabbix agent –with

转一篇NGINX+UWSGI+PYTHON+DJANGO部署文档

高远弄的,,专业,明晓..感谢哈哈.   http://blog.csdn.net/tmpbook/article/details/42873667  

Jmeter分布式部署文档

很多时候,我们测试时,如果进行大数据量的并发测试时,单个电脑的CPU和内存可能无法承受,这个时候,我们需要进行一个分布式的测试,比如10000个并发,使用三台电脑来进行并发,Jmeter提供了这种功能,你可以很轻松的实现Jmeter的这种分布式测试 1 首先确何所有的电脑上都安装Jmeter 2 在所有电脑上开起Jmeter,开启命令是jmeter-server.bat,而不是以前的jmeter.bat 注意:你所要运行的不要开启,那些用来负载的,才开启服务器模式,这个模式没有界面,只有控制台的

编译OpenCV文档

概述 使用OpenCV的过程中经常查看文档,每次都去官网查看,不过国内访问速度很慢,有一份本地的文档就好了.本文列出了在Linux(Fedora)系统上从OpenCV源码编译出documentation的步骤.在Windows系统上也可以编译出文档,只需在cmake-gui界面中勾选build-doc并根据提示信息安装相应依赖程序,generate后用visual studio编译安装文档. 你也可以直接下载我编译生成好的文档: OpenCV-3.0.0文档:百度云盘 我的github项目. O