监控软件zabbix (分布式监控,可设置中间代理,web前端)
这是一个分布式的监控套件,可以做到多层而不仅限于三层结构,即可以由server client 组成,此时由server 担任 proxy 和 server的任务,也可以使用单独的服务器作为proxy 从而降低server的负载。
搭建LAMP环境
下载所需软件包
Yum install curl curl-devel net-snmp net-snmp-devel perl-DBI php* zabbix-server zabbix-agent zabbix-sender zabbix-get
(其中zabbix-server为主服务程序 zabbix-agent为客户端程序,当需要监控服务器本身的时候自己即作为服务器也作为客户端)
创建数据库
Mysql –u root –p
Mysql> create database zabbix character set utf8 collate utf8_bin; (官方文是这么写的过一阵开始研究sql数据库,目前看不懂这句话啥意思,大概就是创建一个数据库zabbix 设置字符集为utf8 后面就看不懂了)
授权数据库
Mysql>grant all on zabbix.* to zabbix@localhost identified by ‘zabbix’;
(将zabbix库下面所有的表的权限授权给zabbix用户)
刷新权限
Mysql>Flush privileges;exit
导入数据库(软件开发者已经把所有的数据库结构写好)
Cd /usr/share/doc/zabbix-server-mysql../create
Mysql –u root zabbix < schema.sql -p
Mysql –u root zabbix <images.sql -p
Mysql –u root zabbix <data.sql -p
值得注意的是此处的导入顺序千万不能错,否则mysql报错(找不到数据库 找不到表 巴拉巴拉的 吃了一上午的亏 怎么弄都不对,就是没想到问题出在这里)
修改 /etc/services 标明zabbix所占用的端口 vim /etc/services
Zabbix-agent 10050/tcp
Zabbix-agent 10050/udp
Zabbix-trapper 10051/tcp
Zabbix-trapper 10051/udp
配置php服务 vim /etc/php.ini
Max_execution_time=300
Memory_limit=128M
Post_max_size=16M
Upload_max_filesize=2M
Max_input_time=200
Data.timezone=Asia/Shanghai
此处落下哪项也不要紧,在安装的时候会有一个大表告诉你哪个地方需要改的没改,到时候在改也行
启动zabbix_server service zabbix-server start
启动httpd服务 service httpd start
然后一步一步的继续配置就行了,哪有问题点哪里
附上几个图
其实这个软件做的挺好,可以采用多种数据采集方式,目前用过的可以使用
zabbix-get 方式
snmp 协议数据采集
这个软件可以使用分布式的数据库,不过目前还没有试。
有个创新的discovery 发现主机方式,可以根据设置的发现规则自动按网段去找主机,规则可以是zabbix的key,也可以是snmp的OID MIB
今天在配置的过程中发现使用默认的snmp discovery规则,读取非常慢,时常需要好几个小时才能把数据读出来,
后找到原因,将发现的时间间隔由原来的3600秒改为60秒,数据瞬间全出来了。
明天继续折腾,使用SNMP协议读取目标的端口连接数。
由于这货不支持插件形式,也就无法调用自己的脚本,而且又不允许在目标机上操作,以至于这个问题好纠结。
后来想到一个好方法:
首先由cron 管理的脚本定期执行shell命令去读取数据然后写入到zabbix-server的文件中(linux 中一切皆文件),然后自定义一个key将这个值可以同过zabbix-sender 发送出去。由此可由shell到zabbix自己的协议对接的过程,然后再由zabbix-get 抓取发出的数据即可完成数据采集任务。
此过程中shell 执行的命令是对远程目标操作,然后通过sender的操作是本机对本机操作,即由本机发出然后由本机接受。
对于这个软件很难采集的数据(比如大型数据,多条数据)可以通过这个方法使用强大的linux shell脚本操作(cut awk egrep tr)完成几乎所有的文本加工动作。
缺点也很明显,经过的步骤太多,麻烦,出问题不好调试。