分布式系统监控-zabbix
通过搭建zabbix监控平台,可以图形化,直观查看数据内容,管理服务;配置与邮箱绑定,保证了实时的监控管理,有利于及时的问题解决。
简介
zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。 zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
特点以及作用
数据收集
- 可用性和性能检查
- 支持SNMP(包括捕获和主动轮训),IPMI,JMX,VMware监控
- 自定义检查
- 按照自定义的间隔收集需要的数据
- 由Server/Proxy和agents执行
灵活的阀值定义
- 可以非常灵活的定义问题阈值,称之为触发器,触发器从后端数据库获取参考值
高度可配置化的告警
- 可以根据升级计划,接收方和媒体类型来定制发送告警通知
- 使用宏变量可以使告警通知更有意义更高效
- 自动化动作包含执行远程命令
实时图表绘制
- 使用内置图表绘制功能可以将监控项的内容立即绘制成图表
Web监控功能
Zabbix可以模拟鼠标在Web网站上的操作来检查Web的功能和响应时间
二进制代码
- 为了性能和更少内存的占用,用C语言编写
- 便于移植
功能强大并易于扩展的监控代理
- 部署在被监控对象上
- 可以部署在Linux和Windows上
丰富的可视化选项
- 能够创建自定义的图形,图形中可将多个监控项组合在一个视图展示
- 网络拓扑图
- 以仪表盘的样式展现自定义的展现和幻灯片
- 报告
- 监控资源的高级(业务)视图
zabbix 重要组件
zabbix server
负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据都由它组织进行
database storage
专用于存储所有配置信息,以及由zabbix收集的数据
web interface
zabbix的GUI接口
proxy
可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力
agent
部署在被监控的主机上,负责收集主机本地数据如cpu、内存、数据库等数据发往server端或proxy端
监控系统运行流程
- agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端
- zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图
注:这里agentd收集数据分为主动和被动两种模式 - 主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
- 被动:server向agent请求获取监控项的数据,agent返回数据
部署 zabbix 监控
环境准备
zabbix服务器:20.0.0.12(监控端)
1.关闭防火墙
systemctl stop firewalld //防火墙
setenforce 0 //核心防护
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
安装部署zabbix服务器端
注:zabbix安装需要在LAMP平台上安装
导入网易CentOS7-Base-163.repo 与阿里云 epel.repo 镜像
提示:当时安装依赖包,说没有更多镜像可以用
解决方法:把网易CentOS7-Base-163.repo删掉
修改apache和php配置文件
apache配置文件
vi /etc/httpd/conf/httpd.conf
ServerName www.apache.com:80 //去掉#
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
php配置文件
vi /etc/php.ini
添加修改
date.timezone = PRC //去掉;
开启服务
[root@zabbix ~]# systemctl start httpd
[root@zabbix ~]# systemctl start mariadb
[root@zabbix ~]# netstat -anpt | grep 80
tcp6 0 0 :::80 :::* LISTEN 13270/httpd
[root@zabbix ~]# netstat -anpt | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 13549/mysqld
初始化数据库
[root@zabbix ~]# mysql_secure_installation
Remove anonymous users? 移除匿名用户
Disallow root login remotely? 允许root用户远程登录
Remove test database and access to it? 移除测试数据库
Reload privilege tables now? 重置权限列表
测试数据库登录
登录数据库,对zabbix用户进行授权
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
创建zabbix数据库 字符集utf8,编码集utf-8,不区分大小写
MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'%' identified by 'admin123';
授权所有,给zabbix库.所有表,zabbix用户,其它任意范围 授权密码admin123
MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'admin123';
MariaDB [(none)]> flush privileges; 刷新权限
验证php与mysql数据库的联动性
vi /var/www/html/index.php
<?php
$link=mysql_connect('20.0.0.12','zabbix','admin123');
if($link) echo "<h1>欧克 你太帮了!!</h1>";
else echo "拉跨!!";
mysql_close();
?>
部署安装zabbix服务器
环境:
vi /etc/yum.repos.d/CentOS-Base.repo
后面添加
[Ali]
name=CentOS-$releasever - Base
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
添加zabbix源
vi /etc/yum.repos.d/zabbix.repo
添加
[zabbix]
name=Zabbix Official Repository - \$basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/\$basearch/
enabled=1
gpgcheck=0
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - \$basearch
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/\$basearch/
enabled=1
gpgcheck=0
添加依赖包
[root@zabbix ~]# yum -y install php-mbstring php-bcmath
下载zabbix软件源
[root@zabbix ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
下载zabbix服务端软件
[root@zabbix ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent --nogpgcheck
导入zabbix监控数据库
[root@zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql-4.0.27/create.sql.gz | mysql -uzabbix -padmin123 zabbix
'用户uzabbix 密码padmin123 数据库zabbix'
登录数据库查看用户
MariaDB [zabbix]> select * from users\G
编辑zabbix配置文件
[root@zabbix ~]# vi /etc/zabbix/zabbix_server.conf
set nu //行数
38 LogFile=/var/log/zabbix/zabbix_server.log 日志文件路径
49 LogFileSize=0 默认文件大小
72 PidFile=/var/run/zabbix/zabbix_server.pid pid进程文件路径
82 SocketDir=/var/run/zabbix socket文件路径,对外访问接口
100 DBName=zabbix 数据库名称
116 DBUser=zabbix 数据库用户
124 DBPassword=admin123 添加登录密码
356 SNMPTrapperFile=/var/log/snmptrap/snmptrap.log snmp协议,触发文件路径
473 Timeout=4 超时时间
516 AlertScriptsPath=/usr/lib/zabbix/alertscripts 警告脚本路径
527 ExternalScripts=/usr/lib/zabbix/externalscripts 额外脚本
563 LogSlowQueries=3000 慢日志(日志查询时间3秒,对数据的补充,占用系统内存)
SNMP简介
SNMP:“简单网络管理协议”,用于网络管理的协议,SNMP用于网络设备的管理,SNMP的工作方式:管理员需要向设备获取数据,所以SNMP提供了“读”操作,管理员需要向设备执行设置操作,所以SNMP提供了“写”操作;设备需要在重要状况改变的时候,向管理员通报事件的发生,所以SNMP提供了“Trap”操作。
简单网络管理协议(SNMP)是专门设计用于在IP网络管理网络节点(服务器,工作站,路由器,交换机及HUBS等)的一种标准的协议,它是一种应用层协议
时间同一
vi /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
安装zabbix
登录为数据库授权zabbx密码
注:我第一次登录错误 一直保存有纪录 然后尝试了9次 最后清理了浏览记录才登录上