平台信息:
[root@localhost ~]#uname -aLinux localhost.localdomain 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux[root@localhost ~]#cat /etc/issueCentOS release 6.8 (Final)Kernel \r on an \m
iptables和SELinux全部关闭
所需包:
http://pan.baidu.com/s/1i5G6T6H
1.监控系统
1.1 主流监控工具
【cacti】只是个PHP网页程序,依赖于SNMP和RRDTool,有很强的数据处理能力,能够采集保存展示数据,给予动态反馈。但数据分析及报警功能较弱
【nagios】独立的监控工具,只关心专用agent监控内容正常与否的状态,agent也能主动反馈,对数据没有太多处理,但报警功能强大
【zabbix】
cacti由于RRDTool存储数据,很难对大量指标进行监控,也无法高并发的处理,nagios缺少对数据动态直观的展示。
zabbix支持大规模分布式集群的监控,既是强大的数据功能,也能报警,还可以自动发现监控设备予以增设。
1.2 zabbix
Zabbix,可以从网络收集几乎无限类型的数据。高性能实时监控意味着可同时监控数万台服务器,虚拟机和网络设备。除了存储数据之外,还提供可视化功能(概览,地图,图形,屏幕等),以及用于警报目的的非常灵活的分析数据的方式。
Zabbix为数据收集提供了巨大的性能,可以扩展到非常大的环境。分布式监视选项可用于使用Zabbix代理。Zabbix具有基于Web的界面,安全的用户身份验证和灵活的用户权限模式。支持轮询和陷阱,本地高性能代理从几乎任何流行的操作系统收集数据。
使用Zabbix可以进行Web监控以及监控VMware虚拟机。Zabbix可以自动发现网络服务器和设备,以及通过对发现的实体自动分配性能和可用性检查的方法执行低级发现。
【系统架构】
【逻辑架构】
2. 安装zabbix监控端(server1和server2)
server1 | zabbix服务器和web服务器 | 192.168.195.202:10051 |
server2 | 数据库服务器 | 192.168.195.203:3306 |
2.1 LNMP
https://my.oschina.net/charlock/blog/831415
2.2 创建zabbix用户(server1和server2)
[root@localhost ~/zabbix]#tar -zxvf zabbix-3.2.3.tar.gz # 解压源码包[root@localhost ~/zabbix]#groupadd zabbix # 创建zabbix用户用以运行zabbix[root@localhost ~/zabbix]#useradd -g zabbix zabbix
2.3 创建初始数据库(server2)
[root@localhost ~]#service mysqld status # 开启mysqlmysqld (pid 3333) 正在运行...# 创建初始数据库[root@localhost ~/zabbix]#mysql -uroot -p123456 mysql> create database zabbix character set utf8 collate utf8_bin; mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';# 授权mysql远程连接mysql> GRANT ALL PRIVILEGES ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix' WITH GRANT OPTION; mysql> quit; [root@localhost ~/zabbix]#cd zabbix-3.2.3 # 导入数据库模板[root@localhost ~/zabbix/zabbix-3.2.3]#mysql -uzabbix -pzabbix zabbix < database/mysql/schema.sql[root@localhost ~/zabbix/zabbix-3.2.3]#mysql -uzabbix -pzabbix zabbix < database/mysql/images.sql [root@localhost ~/zabbix/zabbix-3.2.3]#mysql -uzabbix -pzabbix zabbix < database/mysql/data.sql# 重启mysql[root@localhost ~/zabbix_mysql/zabbix-3.2.3]#service mysqld stop停止 mysqld: [确定] [root@localhost ~/zabbix_mysql/zabbix-3.2.3]#/usr/local/mysql/bin/mysqld_safe# 在server1上测试连接[root@localhost ~]#mysql -uzabbix -p -h192.168.195.203Enter password: mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | zabbix | +--------------------+ 5 rows in set (0.01 sec) mysql> quit Bye
2.4 安装snmp(server1)
[root@localhost ~/zabbix/zabbix-3.2.3]#yum install net-snmp net-snmp-utils[root@localhost ~/zabbix/zabbix-3.2.3]#service snmpd start
2.5 编译安装(server1)
[root@localhost ~/zabbix/zabbix-3.2.3]#yum install net-snmp-devel # 必要组件,没有需要安装[root@localhost ~/zabbix/zabbix-3.2.3]#./configure --enable-server --with-mysql --with-net-snmp --with-libcurl --with-libxml2[root@localhost ~/zabbix/zabbix-3.2.3]#make[root@localhost ~/zabbix/zabbix-3.2.3]#make install
2.6 启动zabbix_server(server1)
[root@localhost ~/zabbix/zabbix-3.2.3]#zabbix_server
2.7 安装zabbix web界面(server1)
[root@localhost ~/zabbix/zabbix-3.2.3]#cp -a frontends/php/ /usr/local/nginx/html/zabbix
2.8 web安装界面(server1)
【安装先决条件不满足】
【先决条件列表】
先决条件 | 最小值 | 描述 |
PHP版本 | 5.4.0 | |
PHP memory_limit选项 | 128MB | 在php.ini: memory_limit的= 128M |
PHP post_max_size选项 | 16MB | 在php.ini: 的post_max_size = 16M |
PHP upload_max_filesize选项 | 2MB | 在php.ini: 的upload_max_filesize = 2M |
PHP max_execution_time选项 | 300秒(允许值0和-1) | 在php.ini: 的max_execution_time = 300 |
PHP max_input_time选项 | 300秒(允许值0和-1) | 在php.ini: max_input_time设置= 300 |
PHP session.auto_start选项 | 必须禁用 | 在php.ini: session.auto_start = 0 |
数据库支持 | IBM DB2,MySQL,Oracle,PostgreSQL,SQLite | 其中以下模块必须安装: IBM_DB2,MySQL和OCI8,pgsql的,sqlite3的 |
bcmath | php-bcmath | |
mbstring | php-mbstring | |
PHP mbstring.func_overload选项 | 必须禁用 | 在php.ini: 中的mbstring.func_overload = 0 |
PHP always_populate_raw_post_data选项 | 必须禁用 | 仅适用于PHP 5.6.0或更高版本。 在php.ini: always_populate_raw_post_data = -1 |
插座 | php-net-socket。需要用户脚本支持。 | |
gd | 2.0以上 | php-gd。PHP GD扩展必须支持PNG图像(--with-PNG-DIR),JPEG(--with-JPEG-DIR)的图像和FreeType 2的(--with-的FreeType-DIR)。 |
libxml | 2.6.15 | php-xml或php5-dom |
xmlwriter | php-xmlwriter | |
xmlreader | php-xmlreader | |
ctype | php-ctype | |
会话 | php会话 | |
gettext | PHP-gettext的 自2.2.1的zabbix,PHP的gettext扩展不是用于安装的zabbix的强制性要求。如果没有安装gettext,前端将照常工作,但是,翻译将不可用。 |
【修改不满足配置】
# 修改/etc/php.ini,安装需要组件[root@localhost ~/zabbix/zabbix-3.2.3]#yum install php-bcmath[root@localhost ~/zabbix/zabbix-3.2.3]#yum install php-gd[root@localhost ~/zabbix/zabbix-3.2.3]#service php-fpm restart[root@localhost ~/zabbix/zabbix-3.2.3]#service nginx restart# 扩展php,以gd为例[root@localhost ~/lnmp/php-5.5.38/ext]#pwd # 下载php同版本源码包,解压进入ext/root/lnmp/php-5.5.38/ext [root@localhost ~/lnmp/php-5.5.38/ext]#cd gd # 进入要扩展组件文件夹[root@localhost ~/lnmp/php-5.5.38/ext/gd]#/usr/local/php/bin/phpize # php安装路径下phpizeConfiguring for:PHP Api Version: 20121113Zend Module Api No: 20121212Zend Extension Api No: 220121212# 编译[root@localhost ~/lnmp/php-5.5.38/ext/gd]#./configure --with-gd --with-php-config=/usr/local/php/bin/php-config # =两边不能有空格[root@localhost ~/lnmp/php-5.5.38/ext/gd]#make # 编译[root@localhost ~/lnmp/php-5.5.38/ext/gd]#make test # 测试编译结果[root@localhost ~/lnmp/php-5.5.38/ext/gd]#make install # 安装Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/ Installing header files: /usr/local/php/include/php/ [root@localhost ~/lnmp/php-5.5.38/ext/gd]#vim /etc/php.ini # 编辑php配置文件支持,修改以下内容extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/"extension=gd.so# 重启web服务器[root@localhost ~]#service nginx restart
# 对于gd,没有支持jpeg,需要显示添加# 支持jpeg[root@localhost ~/lnmp/php-5.5.38/ext/gd]#./configure --with-gd --with-jpeg-dir=/usr/local/ --with-php-config=/usr/local/php/bin/php-config# 支持freetype[root@localhost ~/lnmp/php-5.5.38/ext/gd]#rpm -ql freetype/usr/lib64/libfreetype.so.6/usr/lib64/libfreetype.so.6.3.22/usr/share/doc/freetype-2.3.11/usr/share/doc/freetype-2.3.11/CHANGES /usr/share/doc/freetype-2.3.11/FTL.TXT /usr/share/doc/freetype-2.3.11/GPL.TXT /usr/share/doc/freetype-2.3.11/LICENSE.TXT /usr/share/doc/freetype-2.3.11/README /usr/share/doc/freetype-2.3.11/VERSION.DLL /usr/share/doc/freetype-2.3.11/formats.txt /usr/share/doc/freetype-2.3.11/ft2faq.html [root@localhost ~/lnmp/php-5.5.38/ext/gd]#./configure --with-gd --with-jpeg-dir=/usr/local/ --with-freetype-dir=/usr/lib64/ --with-php-config=/usr/local/php/bin/php-config[root@localhost ~/lnmp/php-5.5.38/ext/gd]#make clean[root@localhost ~/lnmp/php-5.5.38/ext/gd]#make[root@localhost ~/lnmp/php-5.5.38/ext/gd]#make install[root@localhost ~/lnmp/php-5.5.38/ext/gd]#service nginx restart[root@localhost ~/lnmp/php-5.5.38/ext/gd]#service php-fpm restart
【输入连接server2数据库的详细信息】
【设置Zabbix服务器详细信息】
【查看设置摘要】
【下载配置文件】
# 保存到相应conf位置,修改权限[root@localhost ~/zabbix]#cp zabbix.conf.php /usr/local/nginx/html/zabbix/conf/[root@localhost ~/zabbix]#ls -al /usr/local/nginx/html/zabbix/conf/总用量 24drwxr-xr-x 2 1000 1000 4096 2月 6 08:27 . [root@localhost ~/zabbix]#chown -R zabbix:zabbix /usr/local/nginx/html/zabbix/conf/[root@localhost ~/zabbix]#ls -al /usr/local/nginx/html/zabbix/conf/总用量 24drwxr-xr-x 2 zabbix zabbix 4096 2月 6 08:27 . drwxr-xr-x 13 1000 1000 4096 2月 6 08:28 .. -rw-r--r-- 1 zabbix zabbix 163 12月 21 16:08 .htaccess -rw-r--r-- 1 zabbix zabbix 1036 12月 21 16:08 maintenance.inc.php -rw-r--r-- 1 zabbix zabbix 421 2月 6 08:27 zabbix.conf.php -rw-r--r-- 1 zabbix zabbix 411 12月 21 16:08 zabbix.conf.php.example
【安装完成】
【登录zabbix前端】默认用户名:Admin密码:ZABBIX
3.安装zabbix被监控端(node1)
node1 | 节点1 | 192.168.195.204:10050 |
[root@localhost ~/zabbix]#lszabbix-3.2.3.tar.gz [root@localhost ~/zabbix]#tar xf zabbix-3.2.3.tar.gz [root@localhost ~/zabbix]#cd zabbix-3.2.3[root@localhost ~/zabbix/zabbix-3.2.3]#./configure --enable-agent # 仅安装agent[root@localhost ~/zabbix/zabbix-3.2.3]#make[root@localhost ~/zabbix/zabbix-3.2.3]#make install[root@localhost ~/zabbix/zabbix-3.2.3]#groupadd zabbix # 增加用户主组[root@localhost ~/zabbix/zabbix-3.2.3]#useradd -g zabbix zabbix[root@localhost ~]#vim /usr/local/etc/zabbix_agentd.conf # agent的配置文件Server=192.168.195.202 # 修改server地址[root@localhost ~/zabbix/zabbix-3.2.3]#zabbix_agentd[root@localhost ~/zabbix/zabbix-3.2.3]#ps aux | grep zabbixzabbix 9628 0.0 0.0 17704 752 ? S 21:46 0:00 zabbix_agentd zabbix 9629 0.0 0.0 17704 752 ? S 21:46 0:00 zabbix_agentd: collector [idle 1 sec] zabbix 9630 0.0 0.0 17704 648 ? S 21:46 0:00 zabbix_agentd: listener #1 [waiting for connection]zabbix 9631 0.0 0.0 17704 656 ? S 21:46 0:00 zabbix_agentd: listener #2 [waiting for connection]zabbix 9632 0.0 0.0 17704 656 ? S 21:46 0:00 zabbix_agentd: listener #3 [waiting for connection]zabbix 9633 0.0 0.0 17716 824 ? S 21:46 0:00 zabbix_agentd: active checks #1 [idle 1 sec]root 9635 0.0 0.0 103324 888 pts/0 S+ 21:46 0:00 grep zabbix [root@localhost ~/zabbix/zabbix-3.2.3]#netstat -tnlp | grep zabbixtcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 9628/zabbix_agentd
4.简单配置zabbix
4.1 修改zabbix前端语言(可能造成乱码)
修改zabbix配置
root@localhost ~]#vim /usr/local/nginx/html/zabbix/conf/zabbix.conf.php # 修改server地址$ZBX_SERVER = '192.168.195.202'; [root@localhost ~/lnmp/php-5.5.38/ext/openssl]#pwd # 到php源码包里的openssl组件/root/lnmp/php-5.5.38/ext/openssl [root@localhost ~/lnmp/php-5.5.38/ext/openssl]#/usr/local/php/bin/phpize Cannot find config.m4. Make sure that you run '/usr/local/php/bin/phpize' in the top level source directory of the module[root@localhost ~/lnmp/php-5.5.38/ext/openssl]#mv config0.m4 config.m4[root@localhost ~/lnmp/php-5.5.38/ext/openssl]#/usr/local/php/bin/phpize # phpizeConfiguring for:PHP Api Version: 20121113Zend Module Api No: 20121212Zend Extension Api No: 220121212[root@localhost ~/lnmp/php-5.5.38/ext/openssl]#./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config # 编译[root@localhost ~/lnmp/php-5.5.38/ext/openssl]#make[root@localhost ~/lnmp/php-5.5.38/ext/openssl]#make install # 安装Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/ [root@localhost ~]#vim /etc/php.ini # 增加扩展extension=openssl.so
[root@localhost ~]#ps aux | grep zabbix_server[root@localhost ~]#netstat -tnlp 10051 # 发现10051端口没有打开[root@localhost ~]#tail /tmp/zabbix_server.log # 查看server日志25589:20170206:110853.582 [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' (using password: NO) 25589:20170206:110853.582 cannot set MySQL character set to "utf8" 25589:20170206:110853.582 database is down: reconnecting in 10 seconds 编辑的zabbix服务器配置文件 [root@localhost ~]#vim /usr/local/etc/zabbix_server.confDBPassword=zabbix # 设置密码[root@localhost ~]#kill 22844 # 杀死zabbix_server进程[root@localhost ~]#zabbix_server # 启动zabbix_server
修改admin设置
修改Language为中文,如果gettext没有扩展,这里不能选择,只是辅助扩展不影响
4.2 增加新主机
当前本地主机停用状态,创建主机
配置主机信息
4.3 给主机增加监控项
在配置->主机->主机记录的监控项->创建监控项
配置监控项,键值标识监控内容,[]表示参数,<>表示默认参数
查看数据
没有数据的话检查server和agentd的log,一些配置修改需要重启nginx zabbix_server zabbix_agentd来验证,web页面配置->主机->的名称要和agentd的配置文件里的名称一致
路由不能通的,检查下agentd端的防火墙和SELinux。在server的主机配置,我把agentd的用node1.lock.com,在server的hosts里添加了这个域名的解析。在node的agentd配置里,把Hostname设置为node1.lock.com
查看相应图形
查看该主机的数据图形
CPU是百分比数据,所以查看聚合图形
4.4 增加图形
在配置->主机->在要添加图形的主机记录里->图形->创建图形->配置图形
预览图形
4.5 配置触发器
触发器表达式:
{<server>:<key>.<function>(<parament>)}<operator><constant>
server:主机名称
key:监控项的key
function:对监控项的数据处理,评估采集到的数据是否在阈值下所使用的函数(sum,avg,count等)
parameter:函数参数,大多数数值函数可以接收秒数为参数,在前面加'#'表示最近几次的取值.如sum(300)表示5分钟内所取值之和,sum(#10)表示最近10次取值之和,一次为最初定义函数更新时间
avg,count,last,min,max,支持第二个参数,表示完成时间限定.如max(1h,7d)表示一个小时最大,返回一周前的最大值
配置->主机->触发器
显示阈值线
显示触发状态(稍等,)
4.6 接收问题通知
管理->报警媒介类型->email,修改SMTP HELLO和SMTP email
配置->操作->创建操作,设置名称,移除条件
操作->新的
用户群组->添加->选择群组,用户->添加->添加用户,仅送到->邮件,添加操作
测试接收通知
[root@localhost ~]#cat /dev/urandom | md5sum
监测中->最新数据,选择CPU load->显示堆叠数据图,发现设置的阈值有点高,调整为0.009
监测中->触发器->选择群组和主机
此时,应该在设置的邮件里收到通知,如果没有,报表->动作日志
因为本机没有设置邮箱服务
4.7 设置新模板
模板允许对有用项目,触发器和其他实体进行分组,以便通过在单个步骤中应用于主机,可以一次又一次地重复使用它们。当模板链接到主机时,主机继承模板的所有实体。所以,基本上一个预先准备的一堆检查可以很快应用。
配置->模板->创建模板
模板是存在的,但它没有任何内容,没有项目,触发器或其他实体
将项目添加到模板,在配置->主机中,单击'新主机'旁边的监控项,标记列表中“CPU负载”项的复选框,单击列表下面的复制,选择要复制项目的模板,单击复制
配置->模板->新建的模板->单击->监控项
将模板连接到主机,配置->主机,模板->选择,添加->更新