Centos7安装部署Zabbix4.0.24监控服务
Linux下常用的系统监控软件有Nagios、Cacti、Zabbix、Monit等,这些开源的软件,可以帮助我们更好的管理机器,在第一时间内发现,并警告系统维护人员。
Zabbix在企业生产环境中是用的最广泛的服务器监控软件,其功能强大、配置简单、开源免费,是企业监控软件的首选。接下来对zabbix进行简单介绍。
一、 Zabbix简介
1. Zabbix简介
Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。Zabbix 由 server、agent、web、proxy 以及 db 组成。
其中:
server:是监控代理程序报告系统可用性、系统完成整性和统计信息的核心组件。
agent:部署在监控目标上,能够主动监控本地资源和应用程序,并将收集到的数据报告给Zabbix Server。
web:为了从任何地方和任何平台都轻松的访问Zabbix,Zabbix提供了基于Web的界面。
proxy:可以替Zabbix Server收集性能和可用性数据。Proxy代理服务器是Zabbix软件可选择部署的一部分;当然,Proxy代理服务器可以帮助单台Zabbix Server分担负载压力。主要体现分布式特点。
db:所有配置信息和Zabbix收集到的数据都被存储在数据库中。
Zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。
Zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。
Zabbix 通过 C/S模式采集数据,通过B/S模式在web端展示和配置。
被监控端:主机通过安装 agent 方式采集数据,网络设备通过SNMP方式采集数据
Server 端:通过收集SNMP和agent发送的数据,写入数据库(MySQL,ORACLE等),再通过 php+apache 在 web 前端展示。
zabbix的主要特点:
- 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- email等通知功能
zabbix主要功能:
- CPU负荷
- 内存使用
- 磁盘使用
- 网络状况
- 端口监视
- 日志监视
1.1. Zabbix运行条件:
Server:Zabbix-Server需运行在LAMP(Linux+Apache+Mysql+PHP)环境下,对硬件要求低。
Agent:目前已有的agent基本支持市面常见的OS,包含Linux、HPUX、Solaris、Sun、windows。
SNMP:支持各类常见的网络设备
1.2. Zabbix功能
具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库性能监控、FTP等通用协议监控、多种告警方式、详细的报表图表绘制) 支持自动发现网络设备和服务器;支持分布式,能集中展示、管理分布式的监控点;扩展性强,server提供通用接口,可以自己开发完善各类监控。
1.3. 优劣势
优点:开源,无软件成本投入;Server对设备性能要求低(实际测试环境:虚拟机CentOS5,2GCPU 1G内存,监控5台设备,CPU使用率基本保持在10%以下,内存剩余400M以上);支持设备多;支持分布式集中管理;开放式接口,扩展性强。
缺点:中文资料较少。
默认的用户名为 Admin 密码是zabbix
使用 zabbix 进行监控之前,要理解zabbix监控的流程。
一次完整的监控流程可以简单描述为:
Host-Groups(设备组)->Hosts(设备)->Applications(监控项组)->Items(监控项)->Triggers(触发器)->Actions(告警动作)->Medias(告警方式)->User Groups(用户组)->Users(用户)
1.3.1. Server
zabbix系统核心进程,轮询并捕获数据、发送通知等。是zabbix agent和zabbix proxy汇报数据的对象。server自身可远程检测网络服务。所有的前后端配置、统计信息、可操作数据存储于此。包含server、前段界面和后端DB几部分。
1.3.2. Agent
部署在被监控主机上用于监控本地资源和应用并向zabbix-server汇报结果。使用本地系统调用故非常高效。
有主动和被动两种检测模式。被动模式下agent根据server或proxy的具体请求来返回数据。主动模式下先主动由server获取监控项列表再检测并返回新的数据。采用主动或被动检测取决于相应监控项的配置。angentd 的作用就是获取 host 数据,然后将收集到的数据发送给 server(主动模式)。或者是server 主动来拿取数据(被动模式)。
1.3.3. Proxy
可以自由选择部署或者不部署,主要用于分担server的负载。在集中化监控远程位置、分支、网络的场景中是很好的解决方案。可从被监控设备收集数据缓存在proxy本地后传递给其所属的zabbix server。proxy需要单独的数据库。
host
需要被监控的设备,如交换机、路由器、WEB服务器、DB服务器等
host group
被监控设备的逻辑分组,如DB服务器一组、WEB服务器一组等。可包含主机和模板。用于权限控制
item
需要被监控的项,如CPU空闲率、某一块磁盘的使用率等
trigger
用于评估收到的监控值是否超出设定的阈值的逻辑表达式
event
如trigger状态改变等值得注意的事件
action
预先定义的响应event的一系列operations
escalation
执行action中的operations的定制场景;一连串的发送通知、执行远程命令
media
传递notification的方式
notification
通过media发送给用户的关于某个event的消息
remote command
在被监控机器上触发并自动执行的预定义命令
template
用于简化和加速主机上大规模监控任务的部署。包含一系列项目,如items, triggers, graphs, screens, applications, low-level discovery rules
application
逻辑组中的一组items
web scenario
一个或多个HTTP request用以检查web站点可用性
frontend
zabbix的web界面
zabbix api
允许通过JSON RPC 协议创建、更新和获取zabbix对象如,hosts, items, graphs and others。或者执行其他任务
zabbix server
zabbix核心,履行监控,与zabbix proxies、zabbix client交互、计算trigger、发送notification、存储数据等任务
zabbix agent
部署在被监控主机上用于监控本地资源和应用
zabbix proxy
可代zabbix server收集数据分担处理负载
二、 安装zabbix监控系统
Linux环境说明
zabbix 安装要求 :https://www.zabbix.com/documentation/4.0/zh/manual/installation/requirements
服务端操作系统:CentOS7
客户端操作系统:Windows2012r2、Linux
1. 准备工作
cat /etc/redhat-release #查看系统版本信息 systemctl stop firewalld.service #关闭防火墙 systemctl disable firewalld.service #开机禁止启动防火墙 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config #永久关闭selinux selinux setenforce 0 #临时关闭selinux
2. 搭建LAMP环境
yum install -y epel-release #新增epel-release第三方套件来源 yum install -y httpd mariadb-server mariadb php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mhash #安装软件 rpm -qa httpd php mariadb #安装后检查应用版本
3. 编辑httpd
vi /etc/httpd/conf/httpd.conf #修改以下参数为: ServerName www.zabbix-server.com:80 #修改主机名,URL DirectoryIndex index.html index.php #修改首页文件格式
4. 编辑配置PHP,配置中国时区
vi /etc/php.ini #修改以下参数为: date.timezone = PRC
5. 启动mysqld
systemctl start mariadb #启动数据库 systemctl enable mariadb #加入开机自启动 systemctl status mariadb #查看运行状态 netstat -lntup|grep mysqld #查看服务端口是否存在
6. 初始化数据库,并设置root用户密码
mysqladmin -u root password 123456 #设置数据库密码“123456” mysql -uroot -p #登录数据库
CREATE DATABASE zabbix character set utf8 collate utf8_bin; #创建zabbix数据库 GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix'; #授予zabbix数据库所有权限 flush privileges; #刷新权限 select user,host from mysql.user; drop user ''@localhost; #删除空用户 select user,host from mysql.user; exit;
7. 安装zabbix
yum -y install net-snmp net-snmp-devel curl curl-devel libxml2 libxml2-devel libevent-devel.x86_64 javacc.noarch javacc-javadoc.noarch javacc-maven-plugin.noarch javacc* #安装依赖包+组件 yum -y install php-bcmath php-mbstring #安装php支持zabbix组件
8. 添加zabbix国内源
请查看我的zabbix国内源文章,传送门→ 点我进入
9. 安装zabbix
yum -y install zabbix-server-mysql zabbix-web-mysql #安装zabbix组件 zcat /usr/share/doc/zabbix-server-mysql-4.0.24/create.sql.gz | mysql -uzabbix -p -h 10.10.10.110 zabbix Enter password: zabbix
注:导入数据到数据库zabbix中,命令中的4.0.24与服务器所安装的mysql版本要相同,否则后面会报错,ip后面的红色字体zabbix是前面创建的名称为zabbix的数据库,且因为用户zabbix是%(任意主机),所以登录时需要加上当前主机ip(-h 192.168.3.10)密码是用户zabbix登陆密码zabbix。
10. 配置数据库密码、修改时区
vi /etc/zabbix/zabbix_server.conf #修改以下参数为: DBPassword=zabbix #添加zabbix库的密码项 ,其他不用更改 vi /etc/httpd/conf.d/zabbix.conf #修改以下参数为: php_value date.timezone Asia/Shanghai
11. 启动服务
systemctl enable zabbix-server systemctl start zabbix-server systemctl start httpd systemctl enable httpd
12. 浏览器访问 http://10.10.10.110/zabbix
默认账户密码 Admin zabbix
注意:安装完成,默认也没有自动监控server本机
三、 Server本机配置客户端监控本机(被动模式)
yum -y install zabbix-agent #安装zabbix客户端 grep -Ev "#|^$" /etc/zabbix/zabbix_agentd.conf > /etc/zabbix/zabbix_agentd.confbk #过滤下配置文件 mv zabbix_agentd.conf zabbix_agentd.conf9.24 mv zabbix_agentd.confbk zabbix_agentd.conf vi /etc/zabbix/zabbix_agentd.conf #如果下次配置zabbix_agentd.conf怎么改都不通直接复制下面的替换原来的,改下server ip就行 PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 # 被动模式,因为是本机加上127.0.0.1,假如是其他机器客户端只要指定server地址即可 Server=127.0.0.1,10.10.10.110 Hostname=Zabbix server Include=/etc/zabbix/zabbix_agentd.d/*.conf systemctl start zabbix-agent.service systemctl enable zabbix-agent.service