Linux监控平台介绍
- 监控的重要性不言而喻,一个企业就算架构再不成熟,监控都是必须要有的。监控不管用什么方式实现,开源软件也好,商业的监控服务也好,抑或是简陋的shell脚本,在业务上线时都首先要做到位。
- 流行的开源监控软件有cacti、nagios、zabbix、smokeping、open-falcon.
- cacti、nagios、zabbix都可以监控服务器的基础指标,比如CUP、内存、硬盘、网络等,其中cacti更擅长监控网络流量,很多的IDC机房的网络设备流量用cacti,因为它成图专业。它们都是C/S架构,需要安装一个服务端,然后还需要在被监控的机器上安装客户端,它们都需要LAMP的支持,其中Nagios不需要数据库,而其他2种都需要MySQL的支持,用来存储数据的。
- Nagios最大特点是监控一目了然,它监控的某个指标不会返回具体的数值,而是只返回一个状态,告诉我们该指标是否正常。所以不需要历史数据,也就不需要数据库的支持。当它发现某个指标不正常时,就直接发出警告或者短信。
- zabbix最近几年很流行,因为zabbix可以存储数据,很方便的画图,并支持查询历史数据。它还可以自定义监控项目。可以定制化监控业务的某个指标(例如每分钟订单数量),在zabbix的自带模板中不可能找到,它还提供了易用的二次开发接口,方便扩展。zabbix会获取服务或监控项目的数据,会把数据记录到数据库中,从而可以成图。
- cacti、smokeping偏于基础监控(网络设备),成图非常漂亮。
- open-falcon是小米公司开发,开源后受到许多大公司和运维工程师的追捧,适合大企业。比如滴滴、360、新浪,JD等都在使用这个监控软件,值得研究。
- cacti、nagios、zabbix都支持Web界面去进行管理,去控制。其中zabbix的管理做的比较彻底,比如增加监控节点,去配置具体的项目。nagios则需要去修改很多的配置文件和规则,很繁琐。
zabbix监控介绍
- zabbix适合任何企业,它是C/S架构,服务端去客户端采取数据(在客户端要有一个服务用来采取数据,这个数据可以主动的上报给服务端,或者让服务端连接客户端去采集数据,也就是主动模式与被动模式)
- zabbix基于C++开发,性能还是挺快的,监控中心需要PHP的环境用来开启Web界面,
- 单server节点可以支持上万台客户端,并发量还是挺大的。瓶颈在于数据的采集量,就算是支持上万台客户端,当监控的项目太多也会导致效率的降低。
- zabbix的优化——比如增加代理点,用来充当server的角色,替代server去采集数据,得到分析结果在汇报给server。
- zabbix当前最新的zabbix 3.4版本,官方文档https://www.zabbix.com/manuals
zabbixj架构中包括了5个组件
(1)Zabbix-server
它是整个监控体系中最核心的组件(监控中心),负责接收客户端上报信息,所有的配置、统计、操作数据、数据存储、存放数据(比如mysql)都是由它完组织的
(2)Web界面
它也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因。运行web界面需要php环境支持。(如果没有它,就不能在浏览器中去配置它)
(3)zabbix-proxy
它为可选组件,用于监控节点非常多的分布式环境中,它可以代替zabbix-server的功能,减轻zabbix-server的压力。
(4)zabbix-agent
客户端软件,用户采集各个监控服务或项目的数据,并将采集的数据传输给zabbix-server或是zabbix-proxy
(5)数据存储
所有采集的数据存储在这里
监控流程图
流程:
(1)将需要监控的服务器加入到监控中心,让它们之间可以通信
(2)配置监控项目 ,配置完成后能和服务端通信了
(3)采集数据到数据中心(zabbix-server里面),采集过程可以是主动或者被动。
(4)配置告警规则,如果采集的数据值达到报警条件就进行告警,没有达到就进行存储。
zabbix-server需要进行告警规则的配置,还需要配置告警的机制,如果检测到数据的不正常了,该通知给谁,用什么方式,这些都需要在zabbix-sever中去配置。
安装zabbix
- 实验中需要用到2台机器,一台用作服务端(监控中心),另外一台用作客户端。
步骤
(1)在2台机器上执行
wget
http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm(2)安装
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm //安装完成后会在/etc/yum.repos.d下生成一个zabbix.repo文件(3)服务端安装软件包
yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysqlzabbix-agent:客户端程序
zabbix-get:服务端上命令行获取客户端检测项目的工具
zabbix-server-mysql:zabbix-server MySQL版
zabbix-web:web界面
zabbix-web-mysql:web界面mysql相关
如果之前没有安装过mysql。可以yum安装。
(4)查看mysql是否开启
(5)编辑/etc/my. cnf设定默认的字符集
[mysqld]character_set_server = utf8 //字符集datadir=/data/mysqlsocket=/tmp/mysql.sock重启mysql
(6)进入mysql命令行,并创建zabbix库,并指定编码为utf8
create database zabbix character set utf8;(7)创建用户
grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'zcy-zabbix';退出mysql
(8)导入原始数据,没有这些数据zabbix就不能在web界面展现。
cd /usr/share/doc/zabbix-server-mysql-3.2.7 //最后的参数使用Tab键补全。
gzip -d create.sql.gz //解压缩该包后,生成一个create.sql文件
mysql -uroot -pzcylinux zabbix < create.sql //导入到zabbix库中。使用cd返回
(9)启动zabbix服务,,还需要启动httpd服务,启动前查看是否有nginx在运行,需要关闭。它占用了80 端口
systemctl start zabbix-server /etc/init.d/nginx stopsystemctl start httpd将zabbix和httpd设置为开机启动,并关闭nginx
systemctl enable httpdsystemctl enable nginx chkconfig nginx off
最后发现zabbix并没有监听端口。那么可以查看日志/var/log/zabbix/zabbix_server.log,发现有进程却不能连接mysql
(10)编辑配置文件
vi /etc/zabbix/zabbix_server.conf /并在DBHost下面加入一行 DBHost=127.0.0.1 关于这里的IP写多少,我们是将mysql安装在一起的,那么就可以写localhost或者是127.0.0.1。如果mysql没有安装在这里,而是在另一台机器上,那么就要写另外一台机器的IP,这样可以提升监控中心的效率。
DBPassword=zcy-zabbix //在DBuser下面增加(11)再重启zabbix-server服务。正常情况下会启动很多的子进程,并可以看到zabbix_server监听了10051端口。
(12 )在浏览器中访问ip/zabbix ,可以在web界面下配置zabbix。当yum安装zabbix,它会自动的安装httpd与配置文件。然后点击netx step后会出现一个界面,只需要关注是红色的那个,它的意思是配置时区——vi /etc/php.ini 中data.timezone = Asia/shanghai
定义完成后重启httpd服务systemctl restart httpd
刷新页面,全部都是OK后,再次点击netx step后就需要填写mysql相关的信息了。
这里的密码填写之前创建用户时指定的密码。