一.Zabbix简介
Zabbix 是一款功能强大的分布式开源监控系统,线上用的也比较多,个人感觉是cacti和nagios的整合,又天生自带分布式监控,大批量主机运维监控优势明显
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix由zabbix server与可选组件zabbix agent两部门组成。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。
zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。
Zabbix 通过 C/S模式采集数据,通过B/S模式在web端展示和配置。
被监控端:主机通过安装 agent 方式采集数据,网络设备通过SNMP方式采集数据
Server 端:通过收集SNMP和agent发送的数据,写入数据库(MySQL,ORACLE等),
再通过 php+apache 在 web 前端展示
zabbix的主要特点:
- 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- email等通知功能
等等
Zabbix主要功能:
- CPU负荷
- 内存使用
- 磁盘使用
- 网络状况
- 端口监视
- 日志监视
Zabbix运行条件:
Server:Zabbix Server需运行在LAMP(Linux+Apache+Mysql+PHP)环境下,对硬件要求低。
Agent:目前已有的agent基本支持市面常见的OS,包含Linux、HPUX、Solaris、Sun、windows。
SNMP:支持各类常见的网络设备
1.2 Zabbix功能
具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库性能监控、FTP等通用协议监控、多种告警方式、详细的报表图表绘制) 支持自动发现网络设备和服务器;支持分布式,能集中展示、管理分布式的监控点;扩展性强,server提供通用接口,可以自己开发完善各类监控。
1.3 优劣势
优点:开源,无软件成本投入;Server对设备性能要求低(实际测试环境:虚拟机CentOS5,2GCPU 1G内存,监控5台设备,CPU使用率基本保持在10%以下,内存剩余400M以上);支持设备多;支持分布式集中管理;开放式接口,扩展性强。
缺点:中文资料较少。
官方也提供了安装资料:http:///wiki/howto/monitor
默认的用户名为 admin,密码是zabbix
使用 zabbix 进行监控之前,要理解zabbix监控的流程。
一次完整的监控流程可以简单描述为:
Host Groups(设备组)->Hosts(设备)->Applications(监控项组)->Items(监控项)->Triggers
(触发器)->Actions(告警动作)->Medias(告警方式)->User Groups(用户组)->Users
(用户)
1.Server
zabbix系统核心进程,轮询并捕获数据、发送通知等。是zabbix agent和zabbix proxy汇报数据的对象。server自身可远程检测网络服务。所有的前后端配置、统计信息、可操作数据存储于此。包含server、前段界面和后端DB几部分。
2.Agent
部署在被监控主机上用于监控本地资源和应用并向zabbix server汇报结果。使用本地系统调用故非常高效。
2. 有主动和被动两种检测模式。被动模式下agent根据server或proxy的具体请求来返回数 据。主动模式下先主动由server获取监控项列表在检测并返回新的数据。采用主动或被动检测取决于相应监控项的配置。angentd 的作用就是获取 host 数据,然后将收集到的数据发送给 server(主动模式)。或者是server 主动来拿取数据(被动模式)。
3.Proxy
可以自由选择部署或者不部署,主要用于分担server的负载。在集中化监控远程位置、分支、网络的场景中是很好的解决方案。可从被监控设备收集数据缓存在proxy本地后传递给其所属的zabbix server。proxy需要单独的数据库。
host
需要被监控的设备,如交换机、路由器、WEB服务器、DB服务器等
host group
被监控设备的逻辑分组,如DB服务器一组、WEB服务器一组等。可包含主机和模板。用于权限控制
item
需要被监控的项,如CPU空闲率、某一块磁盘的使用率等
trigger
用于评估收到的监控值是否超出设定的阈值的逻辑表达式
event
如trigger状态改变等值得注意的事件
action
预先定义的响应event的一系列operations
escalation
执行action中的operations的定制场景;一连串的发送通知、执行远程命令
media
传递notification的方式
notification
通过media发送给用户的关于某个event的消息
remote command
在被监控机器上触发并自动执行的预定义命令
template
用于简化和加速主机上大规模监控任务的部署。包含一系列项目,如items, triggers, graphs, screens, applications, low-level discovery rules
application
逻辑组中的一组items
web scenario
一个或多个HTTP request用以检查web站点可用性
frontend
zabbix的web界面
zabbix api
允许通过JSON RPC 协议创建、更新和获取zabbix对象如,hosts, items, graphs and others。或者执行其他任务
zabbix server
zabbix核心,履行监控,与zabbix proxies、zabbix client交互、计算trigger、发送notification、存储数据等任务
zabbix agent
部署在被监控主机上用于监控本地资源和应用
zabbix proxy
可代zabbix server收集数据分担处理负载
zabbix的配置文件一般有三种:
zabbixserver的配置文件zabbix_server.conf
zabbixproxy的配置文件zabbix_proxy.conf
zabbix_agentd的配置文件zabbix_agentd.conf
1. zabbix server的配置文件:
NodeID=0 #分布式节点id号,0代表是独立服务器,默认是被注释掉的,不强制配置
ListenPort=10051 #zabbix server的端口,默认是10051,可以自行修改,
范围是1024-32767 ,一般默认即可
SourceIP= #连接的源ip地址,默认为空,默认即可
LogFile=/tmp/zabbix_server.log #日志文件的存放位置
LogFileSize=1 #日志文件的大小,单位为MB,当设置为0时,表示不仅行日志轮询,
默认设置为1,默认即可
DebugLevel=3 #指定调试级别,默认即可
PidFile=/tmp/zabbix_server.pid #pid文件的存放位置
DBHost=localhost #数据库主机名,当设置为localhost时,连接mysql通过sock
DBName=zabbix #指定存放zabbix数据数据库的名字
DBUser=zabbix #指定连接数据库的用户名
DBPassword=123456 #用户连接数据库需要的密码
DBSocket=/var/lib/mysql/mysql.sock #前文主机设置为localhost,用户
连接数据库所用的sock位置,
DBPort=3306 #数据库的端口号,当用sock连接时,无关紧要,当通过网络连接时需设置
StartPollers=5 #默认即可
StartIPMIPollers=0 #使用IPMI协议时,用到的参数
StartTrappers=5 #打开的进程数,
StartPingers=1 同上
StartDiscoverers=1
StartHTTPPollers=1
JavaGateway=127.0.0.1 #JavaGateway的ip地址或主机名
JavaGatewayPort=10052 #JavaGateway的端口号
StartJavaPollers=5 #开启连接javagatey的进程数
SNMPTrapperFile=/tmp/zabbix_traps.tmp
StartSNMPTrapper=0 #如果设置为1,snmp trapper进程就会开启
ListenIP=0.0.0.0 #监听来自trapper的ip地址
ListenIP=127.0.0.1
HousekeepingFrequency=1 #zabbix执行Housekeeping的频率,单位为hours
MaxHousekeeperDelete=500 #每次最多删除历史数据的行
SenderFrequency=30 #zabbix试图发送未发送的警报的时间,单位为秒
CacheSize=8M #缓存的大小
CacheUpdateFrequency=60#执行更新缓存配置的时间,单位为秒数
StartDBSyncers=4
HistoryCacheSize=8M
TrendCacheSize=4M
HistoryTextCacheSize=16M
NodeNoEvents=0
NodeNoHistory=0
Timeout=3
TrapperTimeout=300
UnreachablePeriod=45
UnavailableDelay=60
UnreachableDelay=15
AlertScriptsPath=/usr/local/zabbix/shell #脚本的存放路径
FpingLocation=/usr/local/sbin/fping #fping指令的绝对路径
SSHKeyLocation=
LogSlowQueries=0
TmpDir=/tmp
Include=/usr/local/etc/zabbix_server.general.conf
Include=/usr/local/etc/zabbix_server.conf.d/ #子配置文件路径
StartProxyPollers=1 #在zabbix proxy被动模式下用此参数
ProxyConfigFrequency=3600#同上
ProxyDataFrequency=1
Zabbix agentd的配置文件
PidFile=/tmp/zabbix_agentd.pid #pid文件的存放位置
LogFile=/tmp/zabbix_agentd.log #日志文件的位置
LogFileSize=1 #当日志文件达到多大时进行轮询操作
DebugLevel=3 #日志信息级别
SourceIP= #连接的源ip地址,默认为空,即可
EnableRemoteCommands=0 #是否允许zabbix server端的远程指令,
0表示不允许,
1表示允许
LogRemoteCommands=0 #是否开启日志记录shell命令作为警告0表示不允许,1表示允许
Server=127.0.0.1 #zabbix server的ip地址或主机名,可同时列出多个,需要用逗号隔开
ListenPort=10050 #zabbix agent监听的端口
ListenIP=0.0.0.0 #zabbix agent监听的ip地址
StartAgents=3 #zabbix agent开启进程数
ServerActive=127.0.0.1 #开启主动检查
Hostname=Zabbix server#在zabbix server前端配置时指定的主机名要相同,最重要的配置
RefreshActiveChecks=120 #主动检查刷新的时间,单位为秒数
BufferSend=5 #数据缓冲的时间
BufferSize=100 #zabbix agent数据缓冲区的大小,当达到该值便会发送所有的数据到zabbix server
MaxLinesPerSecond=100 #zabbix agent发送给zabbix server最大的数据行
AllowRoot=0 #是否允许zabbix agent以root用户运行
Timeout=3 #设定处理超时的时间
Include=/usr/local/etc/zabbix_agentd.userparams.conf
Include=/usr/local/etc/zabbix_agentd.conf.d/ #包含子配置文件的路径
UnsafeUserParameters=0 #是否允许所有字符参数的传递
UserParameter= #指定用户自定义参数
Zabbix proxy的配置文件
Server=192.168.70.133 #指定zabbix server的ip地址或主机名
Hostname=zabbix-proxy-1.35 #定义监控代理的主机名,需和zabbix server前端配置时指定的节点名相同
LogFile=/tmp/zabbix_proxy.log #指定日志文件的位置
PidFile=/tmp/zabbix_proxy.pid #pid文件的位置
DBName=zabbix_proxy #数据库名
DBUser=zabbix #连接数据库的用户
DBPassword=123456#连接数据库用户的密码
ConfigFrequency=60 #zabbix proxy从zabbix server取得配置数据的频率
DataSenderFrequency=60 #zabbix proxy发送监控到的数据给zabbix server的频率
默认开启 ,现在关闭 server5/6
/etc/init.d/gmetad stop
chkconfig gmetad off
/etc/init.d/gmond stop
chkconfig gmond off
netstat -antlp
Zabbix 需要 lamp环境
zabbix
server5 zabbix-server
安装套件 yum install -y fping-2.4b2-16.el6.x86_64.rpm
iksemel-1.4-2.el6.x86_64.rpm
iksemel-utils-1.4-2.el6.x86_64.rpm
php-bcmath-5.3.3-26.el6.x86_64.rpm
php-mbstring-5.3.3-26.el6.x86_64.rpm
zabbix-2.4.5-1.el6.x86_64.rpm
zabbix-agent-2.4.5-1.el6.x86_64.rpm
zabbix-get-2.4.5-1.el6.x86_64.rpm
zabbix-server-2.4.5-1.el6.x86_64.rpm
zabbix-server-mysql-2.4.5-1.el6.x86_64.rpm
zabbix-web-2.4.5-1.el6.noarch.rpm
zabbix-web-mysql-2.4.5-1.el6.noarch.rpm
server6 zabbix-agent
scp zabbix-2.4.5-1.el6.x86_64.rpm zabbix-agent-2.4.5-1.el6.x86_64.rpm [email protected]:/root
yum install zabbix-2.4.5-1.el6.x86_64.rpm zabbix-agent-2.4.5-1.el6.x86_64.rpm -y
server5
/etc/init.d/mysqld start (失败时: rm -f /var/lib/mysql/mysql.sock )
cd /var/lib/mysql/
mysql -uroot -pwestos
create database zabbix character set utf8 collate utf8_bin; 创建数据表
grant all privileges on zabbix.* to zabbix@localhost identified by 'westos'; 给zabbix权限 并建立用户
quit;
cd /usr/share/doc/zabbix-server-mysql-2.4.5/create/
mysql -uzabbix -pwestos zabbix < schema.sql 请耐心等待
mysql -uzabbix -pwestos zabbix < images.sql
mysql -uzabbix -pwestos zabbix < data.sql
cd /etc/zabbix/
vim zabbix_server.conf
【
DBPassword=westos 107行 #指定zabbix数据库密码
】
cd /etc/httpd/conf.d/
vim zabbix.conf
【
# php_value date.timezone Europe/Riga 28行 如果/etc/php.ini 改过了就不要动 。 应该Aisa/Shanghai
】
cd /etc/zabbix/
vim zabbix_agentd.conf
【
Hostname=server5.example.com 137 行
】
/etc/init.d/zabbix-server start
/etc/init.d/httpd start
/etc/init.d/zabbix-agent start
server6
cd /etc/zabbix/
vim zabbix_agentd.conf
【
Server=172.25.19.5 78行
ServerActive=172.25.19.5 129 行
Hostname=server6.example.com 144行
】
/etc/init.d/zabbix-agent start
server 5
cd /etc/zabbix/
vim zabbix_server.conf
【
#ServerActive=127.0.0.1 注释掉就不用自己向主机发送,hosts没有server5.example.com
StartDiscoverers=5 178行
】
/etc/init.d/zabbix-server restart
浏览 172.25.19.5/zabbix
usrname: Admin
password: zabbix
zabbix server 上激活 zabbix agent自动注册功能
点击 Configuration -> Actions -> Create action按下图所示设置
自定义 Action 的名字。
Conditions 选项卡保持默认即可。
Operations 选项卡添加如下:
Add host:自动注册主机添加到 hosts列表
Add to host groups:自动注册主机加入 linux servers组(组名可以自定义)
Link to templates:自动注册主机应用模板 Template OS linux
点击 Configuration -> Hosts 可以看到新加的主机:
Zabbix 的更多功能值得大家一起研究和分享。
来看看 zabbix 是怎样添加服务监控项的,利用zabbix自带的监控模版,以http服务为例:
添加httpd
1. 点击 Configuration -> Templates 选择需要链接的模版
2.
3. 选择需要链接的主机 server6example.com
4. 也可以在 Configuration -> Hosts -> server2.example.com -> Templates选择需要的模版
5.
yum install httpd -y
cd /var/www/html/
vim index.html
【
server6
】
/etc/init.d/httpd start
去图形界面添加该模块
添加 mysql
yum install -y mysql-server
/etc/init.d/mysqld start
mysql -uroot -pwestos
grant select on nagbd.* to fanan@localhost identified by 'westos';
flush privileges;
在/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf文件中指定了zabbix agent如何获取mysql
服务的各种信息,并在/var/lib/zabbix目录中新建“.my.cnf”文件,用以指定zabbix agent 如何登陆数据库,默认使用的是zabbix用户,可以在zabbix_server.conf文件中找到密码。
mkdir /var/lib/zabbix
cd /var/lib/zabbix/
vim .my.cnf
【
[mysql]
host = localhost
user = fanan
password = westos
socket = /var/lib/mysql/mysql.sock
[mysqladmin]
host = localhost
user = fanan
password = westos
socket = /var/lib/mysql/mysql.sock
】
/etc/init.d/zabbix-agent restart
去图形界面添加该模块
链接 mysql 监控模版
点击 Configuration -> Hosts -> zabbix server Graphs可以看到两个新的监控图形
Email 报警
图形界面
点击 administration -> Media types -> Email
点击 Administration -> Users 进入 Admin 管理员Media选项卡
点击configuration -> Actions 点击Triggers Enabled
QQ 邮箱做的实验,由于server5.example.com是没有域名解析的,会被QQ
邮箱挡掉,所以你需要设置 QQ 邮箱反垃圾白名单,把[email protected]发件地址加
入白名单。
关掉 httpd mysql ,看是否发短信
110monitor
tar zxf alert-agent-4.1.3.1-linux-x64.tar.gz -C /usr/lib/zabbix/alertscripts/
cd /usr/lib/zabbix/alertscripts/
cp alert-agent/plugin/zabbix-plugin/110monitor .
chown -R zabbix.zabbix *
图形界面
点击 administration -> Media types ->create media types
点击 Administration -> Users 进入 Admin 管理员Media选项卡
点击configuration -> Actions 点击Triggers create
关掉 httpd mysql ,看是否发短信
打开网页:110monitor.com
redhat007
OneAlert 文档 ->集成方法-> zabbix ->通用性安装
Server 7 zabbix-proxy
zabbix proxy
Yum install -y zabbix-2.4.5-1.el6.x86_64
zabbix-proxy-2.4.5-1.el6.x86_64
zabbix-proxy-mysql-2.4.5-1.el6.x86_64
fping-2.4b2-16.el6.x86_64.rpm
yum install -y mysql-server
cd /etc/zabbix/
vim zabbix_proxy.conf
[ server = 172.25.9.5
Hostname = server7.example.com
DBPassword=westos
Configfrequency=600
]
Mysql
create database zabbix_proxy character set utf8 collate utf8_bin;
grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'westos';
mysql -uzabbix -pwestos zabbix_proxy < schema.sql
/etc/init.d/zabbix-proxy start
Server6
Vim /etc/zabbix/zabbix_agentd.conf
#severactive=172.25.9.5
Server=172.25.9.7
/etc/init.d/zabbix_agent restart