本文转载自: https://www.93bok.com
一、Linux常用开源监控系统简单介绍
cacti:存储数据能力强,报警性能差 nagios:报警性能差,存储数据仅有简单的一段可以判断是否在合理范围内的数据长度,储存在内存中。比如,连续采样数据存储,有连续三次不在合理范围内的数据就报警 zabbix:结合上面两种工具的优点,又可以存储数据,又可以报警。
二、Zabbix组件功能
Server
- Zabbix server 是监控代理程序报告系统可用性、系统完成整性和统计信息的核心组件。Zabbix Server是所有配置信息、统计信息和操作数据的核心存储器。
数据库存储
- 所有配置信息和Zabbix收集到的数据都被存储在数据库中。
Web界面
- 为了从任何地方和任何平台都轻松的访问Zabbix,Zabbix提供了基于Web的界面。该界面是Zabbix Server的一部分,通常(但不一定)跟Zabbix Server运行在同一台物理机器上。
- 如果使用SQLite,Zabbix Web界面必须要跟Zabbix Server运行在同一台物理机器上。
Proxy代理服务器
- Zabbix proxy 可以替Zabbix Server收集性能和可用性数据。Proxy代理服务器是Zabbix软件可选择部署的一部分;当然,Proxy代理服务器可以帮助单台Zabbix Server分担负载压力。
Agent监控代理
- Zabbix agents监控代理 部署在监控目标上,能够主动监控本地资源和应用程序,并将收集到的数据报告给Zabbix Server。
数据流
- 此外,了解Zabbix内部的数据流同样很重要。为了创建一个监控项用于采集数据,必须先创建一个主机。转换到Zabbix功能的其他部分,你必须先有一个监控项来创建触发器,你必须有一个触发器来创建动作。 因此,如果你想收到X服务器CPU负载过高的告警,你必须先为X服务器创建一个主机实体并关联一个用于对CPU进行监控的监控项,然后如果CPU负载太高便会激活触发器,接着会执行一个动作,给你发送告警邮件。
三、Zabbix运行机制
Zabbix的监控流程可以简单描述为:
- 数据采集-->数据存储-->数据分析-->数据展示-->监控报警
监控原理就是:
- ZabbixAgent服务将从系统中获取的相关数据传送给ZabbixServer,然后ZabbixServer服务奖数据分析之后以PHP页面展示出来
- Zabbix支持多种网络方式下的监控,可以通过分布式的部署和安装监控代理Zabbix,通过C/S模式采集数据,通过B/S模式在Web端展示和配置!Agent监控端口10050
四、Zabbix特点
数据收集
1、可用性和性能检查 2、支持SNMP(包括捕获和主动轮训),IPMI,JMX,VMware监控 3、自定义检查 4、按照自定义的间隔收集需要的数据
灵活的阀值定义
- 可以非常灵活的定义问题阈值,称之为触发器,触发器从后端数据库获取参考值
高度可配置化的告警
1)可以根据升级计划,接收方和媒体类型来定制发送告警通知 2)使用宏变量可以使告警通知更有意义更高效 3)自动化动作包含执行远程命令
实时图表绘制
- 使用内置图表绘制功能可以将监控项的内容立即绘制成图表
Web监控功能
- Zabbix可以模拟鼠标在Web网站上的操作来检查Web的功能和响应时间
丰富的可视化选项
1)能够创建自定义的图形,图形中可将多个监控项组合在一个视图展示 2)网络拓扑图 3)以仪表盘的样式展现自定义的展现和幻灯片 4)报告 5)监控资源的高级(业务)视图
历史数据存储
1)数据存储在数据库中 2)可配置历史数据 3)内置数据管理机制
配置简单
1)将被监控对象添加为主机 2)主机被创建用于监控,在数据库中是唯一存在的 3)应用模板来监控设备
使用模板
1)在模板中分组检查 2)模板可以关联其他模板
网络发现
1)自动发现网络设备 2)监控代理自动注册 3)发现文件系统,网络接口和SNMP OID值
简洁的Web界面
1)Web前端基于PHP 2)可从任何地方访问 3)你可以定制自己的操作方式 4)审核日志
Zabbix API
- Zabbix API为Zabbix 提供了对外的可编程接口,用于批量操作,第三方软件集成和其他目的
权限管理系统
1)安全用户认证 2)特定用户可以限制访问特定的视图
功能强大并易于扩展的监控代理
1)部署在被监控对象上 2)可以部署在Linux和Windows上
二进制代码
1)为了性能和更少内存的占用,用C语言编写 2)便于移植
为复杂环境准备
- 使用Zabbix proxy代理服务器,使得远程监控更简单
五、Zabbix官网下载
- 下载地址:
https://www.zabbix.com/download
- 官方手册:
https://www.zabbix.com/documentation/3.4/zh/manual
六、Zabbix源码编译安装
(一)搭建LNMP环境
详细过程略过,可参考之前文章《Centos7.2源码编译LNMP环境》
(二)源码编译安装Zabbix for server端
1. 修改php.ini配置文件
vim /etc/php/php.ini date.timezone = Asia/Shanghai post_max_size = 16M max_execution_time = 300 max_input_time = 300
2. 创建Zabbix数据库
mysql -u root -p123456 mysql> create database zabbix; mysql> grant all on zabbix.* to zabbix@'localhost' identified by 'nongkaige'; mysql> flush privileges;
3. 测试使用zabbix用户能否登录数据库
mysql -u zabbix -pnongkaige
4. 导入Zabbix数据库
- 导入zabbix数据库的架构,已在源码包中,先解压zabbix的源码包
cd /a01/apps/apps_src/ tar -zxvf zabbix-3.2.11.tar.gz
- 必须按顺序导入:
mysql -u zabbix -pnongkaige zabbix < /a01/apps/apps_src/zabbix-3.2.11/database/mysql/schema.sql mysql -u zabbix -pnongkaige zabbix < /a01/apps/apps_src/zabbix-3.2.11/database/mysql/images.sql mysql -u zabbix -pnongkaige zabbix < /a01/apps/apps_src/zabbix-3.2.11/database/mysql/data.sql
5. 源码编译安装zabbix
1)创建zabbix运行用户(如果以root用户启动zabbix进程,会自动切换为zabbix用户)
useradd -M -s /sbin/nologin zabbix
2) 安装依赖
cd /a01/apps/apps_src/zabbix-3.2.11 yum -y install libevent-devel libxml2-devel libcurl-devel net-snmp-devel
3)编译zabbix
./configure --prefix=/a01/apps/zabbix --sysconfdir=/etc/zabbix --datadir=/a01/apps/zabbix/data --enable-server --enable-agent --enable-java --with-mysql --with-net-snmp --with-libcurl --with-libxml2
- 注意:编译时最好带上--enable-java参数,方便以后监控tomcat程序时候用。
4)安装java
- 报错:configure: error: Unable to find "javac" executable in path
- 没有安装java环境,去安装一下即可
cd /a01/apps/apps_src/ mkdir -p /usr/local/java tar -zxvf jdk-8u151-linux-x64.tar.gz -C /usr/local/java/ vim /etc/profile JAVA_HOME=/usr/local/java/jdk1.8.0_151 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar export PATH JAVA_HOME CLASSPATH source /etc/profile java -version
- 安装完java之后继续编译
5)安装
make install
6)创建zabbix日志目录
mkdir -p /var/log/zabbix chown -R zabbix:zabbix /var/log/zabbix/
7)配置zabbix_server配置文件
vim /etc/zabbix/zabbix_server.conf LogFile=/var/log/zabbix/zabbix_server.log DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=nongkaige
8)配置zabbix_agent配置文件实现自己监控自己
vim /etc/zabbix/zabbix_agentd.conf LogFile=/var/log/zabbix/zabbix_agentd.log Server=127.0.0.1 ServerActive=127.0.0.1 Hostname=Zabbix server UnsafeUserParameters=1 #允许所有的字符是在用户定义的参数,参数传递,也就是支持自定义脚本
9)启动zabbix
/a01/apps/zabbix/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf /a01/apps/zabbix/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
- 报错:error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
- 大概意思是找不到libmysqlclient.so.20,我们去看mysql安装目录下应该会有,软链接过来即可:
ln -s /a01/apps/mysql/lib/libmysqlclient.so.20 /usr/local/lib vim /etc/ld.so.conf /usr/local/lib
- 运行ldconfig命令生效之后再重新启动成功。
10)配置zabbix web页面
mkdir -p /a01/apps/nginx/html/zabbix cd /a01/apps/apps_src/zabbix-3.2.11/frontends/php/ cp -a . /a01/apps/nginx/html/zabbix/
11)安装zabbix前端(http:///zabbix)
- 先重启一下php-fpm
systemctl restart php-fpm
- 报错:PHP sockets extension missing (PHP configuration parameter --enable-sockets).
12)安装php sockets扩展
- 进入php的源码包,使用phpize工具安装
cd /a01/apps/apps_src/php-7.1.7/ext/sockets/ /a01/apps/php7/bin/phpize ./configure --with-php-config=/a01/apps/php7/bin/php-config make && make install vim /etc/php/php.ini [sockets] extension = sockets.so
13)安装php ldap扩展
yum -y install openldap-devel
- 一定要执行这步,否则下边会报错:configure: error: Cannot find ldap libraries in /usr/lib.
cp -frp /usr/lib64/libldap* /usr/lib
cd /a01/apps/apps_src/php-7.1.7/ext/ldap/ /a01/apps/php7/bin/phpize ./configure --with-php-config=/a01/apps/php7/bin/php-config make && make install vim /etc/php/php.ini [ldap] extension = ldap.so
14)重启php-fpm
systemctl restart php-fpm
15)刷新一下页面继续安装zabbix前端
- 报错了,我们可以把上图中的配置文件下载下来再上传到图中指定的目录,不过zabbix的web根目录下已经自带了,我们直接去修改即可
cd /a01/apps/nginx/html/zabbix/conf cp zabbix.conf.php.example zabbix.conf.php vim zabbix.conf.php
16)接下来关闭浏览器重新访问就能登录了(默认账号:admin,密码:zabbix)
17)改成中文页面
18)修改默认密码为nongkaige
19)配置监控本机
“配置”-----“主机”-----“启用”
20)修复中文乱码
- 可以发现上图中有乱码的情况,变成了一些框框,我们可以去下载字体,或者直接去我们的win7系统上复制一些字体上传并修改配置文件即可。
- 1、去win7控制面板复制字体
- 2、复制字体,并上传到服务器
- 3、mv字体到指定目录,并修改配置文件
cd /a01/apps/apps_src/ mv msyh.ttf /a01/apps/nginx/html/zabbix/fonts/ vim /a01/apps/nginx/html/zabbix/include/defines.inc.php #修改45行 define('ZBX_GRAPH_FONT_NAME', 'msyh'); // font file name #修改93行 define('ZBX_FONT_NAME', 'msyh');
- 4、刷新网页查看
21)停用guest用户
- “管理”------“用户群组”------“停用的”
22)编写脚本把zabbix-server添加到系统服务
cd /etc/systemd/system vim zabbix-server.service [Unit] Description=zabbix-server After=network.target [Service] Type=forking ExecStart=/a01/apps/zabbix/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf [Install] WantedBy=multi-user.target chmod 754 /etc/systemd/system/zabbix-server.service systemctl enable zabbix-server
23)编写脚本把zabbix-agentd添加到系统服务
cd /etc/systemd/system vim zabbix-agentd.service [Unit] Description=zabbix-server After=network.target [Service] Type=forking ExecStart=/a01/apps/zabbix/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf [Install] WantedBy=multi-user.target chmod 754 /etc/systemd/system/zabbix-agentd.service systemctl enable zabbix-agentd
- 好了,到此zabbix server已经部署完成,并实现了监控zabbix本机,下面看看效果图
(三)客户端源码编译安装Zabbix for agent端for centos 6
1. 创建zabbix运行用户
useradd -M -s /sbin/nologin zabbix
2. 解包
cd /a01/apps/apps_src/ tar -zxvf zabbix-3.2.11.tar.gz cd zabbix-3.2.11
3. 配置
./configure --prefix=/a01/apps/zabbix --sysconfdir=/etc/zabbix --datadir=/a01/apps/zabbix/data --enable-agent
4. 安装
make install
5. 创建zabbix日志目录
mkdir -p /var/log/zabbix chown -R zabbix:zabbix /var/log/zabbix/
6. 配置zabbix_agentd配置文件
vim /etc/zabbix/zabbix_agentd.conf LogFile=/var/log/zabbix/zabbix_agentd.log Server=192.168.10.21 ServerActive=192.168.10.21 Hostname=192.168.10.26 UnsafeUserParameters=1
7. cp源码包自带脚本把zabbix-agentd添加到系统服务
cp /a01/apps/apps_src/zabbix-3.2.11/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/ vim /etc/init.d/zabbix_agentd ZABBIX_BIN="/a01/apps/zabbix/sbin/zabbix_agentd" #修改 CONF_FILE="/etc/zabbix/zabbix_agentd.conf" #添加 daemon $ZABBIX_BIN -c $CONF_FILE #添加后边的-c $CONF_FILE chkconfig --add zabbix_agentd chkconfig --level 35 zabbix_agentd on
8. 启动zabbix_agentd
service zabbix_agentd start
(四)在zabbix服务器端测试是否能和客户端通信
/a01/apps/zabbix/bin/zabbix_get -s 192.168.10.26 -p10050 -k"net.if.in[eth2,bytes]"
- 服务端能得到客户端的网卡信息,说明可以正常通信
(五)到zabbix前端web页面上创建Host监控客户端
- “配置”------“主机”------“创建主机”
来源:https://www.cnblogs.com/93bok/p/12425642.html