Zabbix:
是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,非常强大的一款工具。一般zabbix都是选择mysql作为存储数据,所以当zabbix监控的主机越来越多,数据量也会越来越大,这是mysql就会成为瓶颈。
zabbix的版本:
长期维护的版本有2.2和3.0,还有2.0和2.4
zabbix的功能:
1、数据采集: 可以根据zabbix内置的key,也可以使用自定义的UserParameter
2、实时绘图: 展示采集的结果,由graph和screen
3、告警 : 超出定义的触发器的值就告警,可以通过邮件、短信、QQ、微信的方式通知
4、数据存储: 采集的数据存储在数据库中
5、支持使用模块:
6、网络自动发现: 只要在主机上定义好ip和端口,zabbix通过扫描机制自动添加监控
7、分布式监控: 可以通过代理收集区域内的主机采集信息,然后发送给zabbix,减缓zabbix的压力
zabbix程序的构成:
zabbix_server:服务端守护进程,监听的端口是10050
zabbix_agentd: agent端守护进程,监听的端口是10051
zabbix_proxy: 代理服务器,可选组件
zabbix_get: 命令行工具,手动测试数据采集;
zabbix_sender: 命令行工具,运行于agent端,手动向server端发送数据
zabbix_java_gateway: java网关,只用于监控jvm虚拟机的
一、安装zabbix,以3.0为例:
~]# yum -y install zabbix-server-mysql zabbix-web zabbix-web-mysql zabbix-get mariadb-server
编辑配置文件:/etc/zabbix/zabbix_server.conf:
ListenPort=10051 //监听的端口
SourceIP= //服务端IP
LogType=file //日志格式,自我独立进行的格式(file)、system(系统记录)
LogFile=/var/log/zabbix/zabbix_server.log //日志文件
LogFileSize=0|1 //日志是否需要滚动
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=localhost //数据库服务器地址
DBName=zabbix //数据库名称
DBUser=zabbix //登录数据库名称
DBPassword=zabbix //数据库密码
DBSocket=/var/lib/mysql/mysql.sock //指明数据库的sock路径
编辑zabbix-web文件:
vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai //修改时区
编辑php.ini文件:
vim /etc/php.ini
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Shanghai //修改时区
授权zabbix登录数据库,并创建zabbix存储的数据库:
> grant all on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';
> create database zabbix charset 'utf8';
zabbix_server数据库的初始化:
~]# cd /usr/share/doc/zabbix-server-mysql-3.0.2/
~]# gzip -d create.sql.gz
~]# mysql -uzabbix -h227.0.0.1 -p zabbix <create.sql
Enter password:
启动zabbix,web服务:
]# service zabbix-server start
]# service httpd start
根据指示一步步填写信息,最后登录zabbix:
二:配置需要监控的主机:
~]# yum -y install zabbix-agent zabbix-sender
编辑配置文件:
~]# vim /etc/zabbix/zabbix_agentd.conf
LogFileSize=1 //日志是否需要滚动
EnableRemoteCommands=1 //是否允许远程命令执行
LogRemoteCommands=1 //记录远程命令的执行日志
Server=172.18.250.77 //被动模式下zabbix的地址,允许哪些zabbix-server来拉取数据
ListenPort=10050 //监听的端口
ListenIP=0.0.0.0 //监听的IP,表示监听任何主机发送的信息
StartAgents=3 //启用多少进程来采集数据
ServerActive=172.18.250.77 //主动模式下zabbix的地址,主机主动发送数据给zabbix-server
Hostname=zabbix.node1 //主机名
启动agent服务:
~]# service zabbix-agent start
三、配置监控主机状态
1、先创建一个host group组
2、创建hosts主机
3、创建监控项,监控目标主机上的80端口:
Store value:
As is: 数据不做任何处理
Delta(simple change): 本次采样数据减去前一次采集数据
Delta(speed per second): 本次采样数据减去前一次采样数据,而后除以采样间隔时长
这样基本上就能监控目标主机上的端口了。
4、定义触发器,只要检测到端口为0就发送警告,并发送告警邮件
可以点Monitoring的Dashboard,查看告警信息:
设置发送告警信息到邮箱:
1、先创建一个用户组和用户:
定义发送媒介:
定义zabbix用户给系统用户发邮件:
查看系统是否收到报警邮件:
~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N 1 zabbix@localhost.loc Fri May 20 19:37 23/1047 "PROBLEM: zabbix.node.port"
& 1
Message 1:
5、对于多个监控项可以整合到一个图形当中,比如监控网卡流量:
定义网卡的进口流量和出口流量,点击Hosts中的node1主机中的Graphs,创建图像
添加完后查看图形界面:
如果有多个主机监控了流量的话可以聚合在一个页面,方便查看:
四、配置模板,直接让主机套用模板,而不用一个个添加监控项:
模板可以直接用系统自带的,也可以自定义一个模板:
生成一个模板后,之后只要添加各种监控项,触发器,和应用集等,添加完后直接套用在主机上即可:
五、配置宏定义 (macro,预设的文本替换模式)
两种:
内置 {MACRO} 调用不需要加$
自定义 {$MACRO} 调用和定义都需要加$
级别:
全局
模板
主机
优先级: 主机 --> 模板 -->全局
定义端口全局宏:
定义一个模板宏:
定义一个主机宏:
直接修改node1的监听端口的值:
查看是否生效:
六:配置key
key也分内建和自定义,有时候系统没有的key只能自己定义,自定义的key是在agent端实现:
语法格式:
UserParameter=<key>,<command>
~]# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=menory.info,awk '/^MemFree/{print $2}' /proc/meminfo
UserParameter=memory.usage[*],awk '/^$1/{print $$2}' /proc/meminfo //传递参数
重启zabbix-agent服务:
~]# service zabbix-agent restart
~]# zabbix_get -s 172.18.250.75 -p 10050 -k "memory.info" //在zabbix-server端测试
693772
~]# zabbix_get -s 172.18.250.75 -p 10050 -k "memory.usage[MemTotal]"
1012352
测试key能否在主机上应用:
七:配置zabbix的分布式监控:
当zabbix-server监控的主机太多时,每个item都需要server端去建立tcp连接,这时server会扛不住,所以可以根据布置分布式代理来建立item连接,然后收集数据,并一起发给server端。
~]# yum -y install zabbix-proxy-mysql mariadb-server
授权zabbix登录数据库,并创建proxy存储的数据库:
> grant all on proxy.* to 'proxy'@'localhost' identified by 'proxy';
> create database proy charset 'utf8';
zabbix_server数据库的初始化:
~]# cd /usr/share/doc/zabbix-proxy-mysql-3.0.2/
~]# gzip -d scheam.sql.gz
~]# mysql -uproxy -h227.0.0.1 -p proxy <create.sql
Enter password:
授权zabbix登录数据库,并创建zabbix存储的数据库:
> grant all on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';
> create database zabbix charset 'utf8';
zabbix_server数据库的初始化:
~]# cd /usr/share/doc/zabbix-server-mysql-3.0.2/
~]# gzip -d create.sql.gz
~]# mysql -uzabbix -h227.0.0.1 -p zabbix <create.sql
Enter password:
编辑配置文件:
]# vim /etc/zabbix/zabbix_proxy.conf
Server=172.18.250.77 //指向server端
Hostname=proxy.zabbix
LogFileSize=1
DBName=proxy
DBUser=proxy
DBPassword=proxy
DBSocket=/var/lib/mysql/mysql.sock
编辑proxy管理区域内的agent主机:
]# vim /etc/zabbix/zabbix_agent.conf
LogFileSize=1 //日志是否需要滚动
EnableRemoteCommands=1 //是否允许远程命令执行
LogRemoteCommands=1 //记录远程命令的执行日志
Server=172.18.250.78 //被动模式下zabbix的地址,允许哪些zabbix-proxy来拉取数据
ListenPort=10050 //监听的端口
ListenIP=0.0.0.0 //监听的IP,表示监听任何主机发送的信息
StartAgents=3 //启用多少进程来采集数据
ServerActive=172.18.250.78 //主动模式下zabbix的地址,主机主动发送数据给zabbix-proxy
Hostname=node1.proxy
启动服务:
]# service zabbix-proxy start //proxy服务
]# service zabbix-agent start //监控的agent主机
创建代理主机:
创建监控的agent主机:
创建个监控项,看是否能正常监控:
如果还需要监控其他主机或者监控项,只需添加模板就行。