Zabbix是一个企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利。
官方网站:http://www.zabbix.com
Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置。
被监控端:主机通过安装agent方式采集数据,网络设备通过SNMP方式采集数据
Server端:通过收集SNMP和agent发送的数据,写入MySQL数据库,再通过php+apache在web前端展示。
Zabbix运行条件:
Server:
Zabbix Server需运行在LAMP(Linux+Apache+Mysql+PHP)环境下,对硬件要求低
Agent:
目前已有的agent基本支持市面常见的OS,包含Linux、HPUX、Solaris、Sun、windows
SNMP:
Zabbix优点
缺点
5. 功能不够完善,对于容器,云等架构的监控还不是很完善。在此不如prometheus监控。
6. 监控界面简单,适合运维人员管理,不适于给客户观看。当然可以结合grafana使用,grafana是目前一款不错的作图软件,本身支持zabbix,prometheus等数据源。
7. 数据存贮方面。zabbix默认一般是Mysql,对于大数据量级别不适于应用。相较而言prometheus本身就是TSDB时序性数据库,不管是时序性,还是大数据存贮,或是秒及处理速度,都更占优势。
本部署文档基于centos6系统
资源下载地址:
https://opsx.alibaba.com/mirror ##阿里源
https://mirrors.tuna.tsinghua.edu.cn/ ##清华源
mysql下载:
https://www.mysql.com/
一种为server端直接对agent端进行监控方式。这种方式又分为主动模式和被动模式,主动模式为agent端定期主动向server端提交监控数据,被动模式为server端定期找agent端索要数据。少量机器时可用被动模式,大量机器时用主动模式。
另一种为proxy代理模式。此模式用于大集群,异地机房监控。可实现分布式跨网段监控,每地机房一个proxy代理节点,分担server端压力同时,实现跨网段监控。
少量机器可通过手动部署,机器较多是使用本地源部署较为方便。本人部署集群为300+
# `service httpd start`
# cd /etc/yum.repos.d/
# vim zabbix.repo
[zabbix] #自定义名字
name=Zabbix
baseurl=http://192.168.x.x/zabbix/zabbix_rpm #http地址及rpm包存放路径
enabled=1 #设置此源是否可用,1为可用
gpgcheck=0 #设置此源是否校验,0为否
# cd /var/www/html/
# createrepo ./ #此步骤需在html每个子目录下均执行
5. 访问http网址查看
6. 将自己创建的源文件,发送到各个节点。
集群数量多,使用ansible
scp /etc/yum.repos.d/ zabbix.repo
yum clean all
yum -y --nogpgcheck -C install httpd mysql-server php55w php55w-mysql php55w-common php55w-gd php55w-mbstring php55w-mcrypt php55w-devel php55w-xml php55w-bcmath
注意事项:mysql安装失败查看大小写
如有组件安装失败,检查是否有自带版本,先卸载再安装。
yum -y --nogpgcheck -C install zabbix-web zabbix-server-mysql zabbix-web-mysql zabbix-get zabbix-java-gateway wqy-microhei-fonts net-snmp net-snmp-utils
复制mysql配置文件
\cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
# vim /etc/security/limits.conf
* soft nofile 4096
* hard nofile 4096
# vim /etc/my.cnf
[mysqld]
connect_timeout=60
wait_timeout=5000
max_connections=1000 #最大连接数
max_allowed_packet=50M
max_connect_errors=500
启动MySQL
/etc/init.d/mysqld start
创建用户并授权
create database zabbix character set utf8 collate utf8_bin;
grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix';
flush privileges;
exit
导入zabbix中sql
zcat /usr/share/doc/zabbix-server-mysql-4.2.0/create.sql.gz|mysql -uzabbix -pzabbix zabbix
sed -i.ori 's#max_execution_time = 30#max_execution_time = 300#;s#max_input_time = 60#max_input_time = 300#;s#post_max_size = 8M#post_max_size = 16M#;910a date.timezone = Asia/Shanghai' /etc/php.ini
# vim /etc/zabbix/zabbix_server.conf
DBName=zabbix #数据库名称
DBPassword=zabbix #数据库密码
DBUser=zabbix #用户名
StartPollers=5 #填写范围0-100,默认5 。轮询处理监控项的进程数,增加太大会影响服务器本身性能,保持此参数的值尽可能低,20000个监控项大概控制在80左右即可。
StartTrappers=5 #负责处理agents和proxy推送过来的数据的进程数,默认为5,如果zabbix-agent监控类型较多需要加大此参数
StartDiscoverers=200 #自动发现子进程实例数,默认为1,范围0-250
StartHTTPPollers=1 #HTTP进程轮询实例个数,默认1,范围0-1000,web监控不多选择默认即可
CacheSize=8G #缓存大小,单位字节。用于存储主机、监控项、触发器数据的共享内存大小,默认8M最大8G。根据自身zabbix业务需求配置合理的参数。
CacheUpdateFrequency=60 #zabbix缓存更新频率,单位秒。设置范围1-3600
HistoryCacheSize=2G #历史数据缓存大小,单位字节
TrendCacheSize=2G #趋势数据缓存大小,单位字节。用于存储趋势数据的共享内存大小
cp -R /usr/share/zabbix/ /var/www/html/
chmod -R 755 /etc/zabbix/web # 修改目录权限
chown -R apache.apache /etc/zabbix/web # 修改属组
echo "ServerName 127.0.0.1:80">>/etc/httpd/conf/httpd.conf # 配置用户名
/etc/init.d/httpd start
/etc/init.d/zabbix-server start
# vim /etc/rc.local
/etc/init.d/mysqld start
/etc/init.d/httpd start
/etc/init.d/zabbix-server start
# http://192.168.x.x/zabbix/
zabbix 默认用户名: Admin #注意首位大写
密码:zabbix
yum install -y zabbix-agent-4.2.0-1.el6.x86_64.rpm
# vim /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1 #被动模式,修改为server端ip
ServerActive= #主动模式,修改为server端ip
/etc/init.d/zabbix-agent start
echo "/etc/init.d/zabbix-agent start" >> /etc/rc.local
自动发现:服务端server自动发现局域网中的所有客户端agent
优点:方便找到所有客户端,不会遗漏
缺点:一旦agent过多,server压力山大,每隔一段时间,server都会扫描一遍局域网的所有机器。
自动注册:所有客户端Agent主动去服务端server登记注册一下(在本文章就不写了复制图片太麻烦了)
优点:对服务端的压力最低
缺点:配置过程稍微复杂
客户端agent配置
不需要任何配置,只要沿用前面的配置即可。
服务端server配置
不需要任何配置,只要沿用前面的配置即可。
解决中文乱码
查看监控数据时,出现乱码的解决办法(server端操作)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install wqy-microhei-fonts
\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
能够减轻服务端的压力,zabbix proxy可以分担压力。zabbix server只能在同一个局域网监控,zabbix proxy可以实现跨网段监控。
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
yum -y install zabbix-proxy-mysql
zabbix proxy需要数据库存储相关的配置信息,但是不存储监控数据(只存在server上)
[root@m01 ~]# mysql
# 创建proxy用的数据库
create database zabbix_proxy character set utf8 collate utf8_bin;
# 创建proxy用的账户
grant all privileges on zabbix_proxy.* to zabbix@'172.16.1.%' identified by 'zabbix';
# 退出mysql命令行
[root@web01 ~]# ls /usr/share/doc/zabbix-proxy-mysql-3.0.9/
AUTHORS ChangeLog COPYING NEWS README schema.sql.gz
[root@m01 ~]# zcat /server/schema.sql.gz|mysql -uzabbix_proxy –pzabbix zabbix_proxy
# vim /etc/zabbix/zabbix_proxy.conf
Server=127.0.0.1 #配置server端ip地址
Hostname=bj-proxy #此名称需要与将来在server端web页面上代理程序名称一致,名称自定义。
DBHost=localhost #指向proxy数据库地址
DBUser=zabbix #数据库用户
DBPassword= #数据库密码
ConfigFrequency=600 #配置文件同步server端间隔时间
DataSenderFrequency=1 #数据同步间隔
开启进程
/etc/init.d/zabbix-proxy start
使用proxy代理,将agent端配置文件地址修改为相应的proxy端地址
sed -i 's#172.16.1.61#172.16.1.8#g' /etc/zabbix/zabbix_agentd.conf
重启
/etc/init.d/zabbix-agent restart
将proxy代理节点注册到zabbix server
[参考文档]
https://blog.csdn.net/zzhlinux911218/article/details/85127444
https://blog.csdn.net/AtlanSI/article/details/82154610