1、Linux监控平台介绍
- 监控存在的原因:站点出了问题,没有人知道,等用户发现了,才提醒供应商;对公司影响很大
- 常见的开源监控软件有:cacti、nagios、zabbix、smokeping、open-falcon等
- cacti、smokeping偏向于基础监控,成图非常漂亮,适合监控网络设备
- cacti、nagios、zabbix服务端监控中心,需要php环境支持(用Apache的php,用nginx的php都可以),其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图
- pen-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究;open-falcon软件适合大企业使用,小企业可以去研究它的思想
- 因为zabbix配置简单,优势明显,早起使用nagios的企业,慢慢的转向使用zabbix;
- nagios,需要更改配置文件,并不支持web界面一键执行,nagios和zabbix相比:
- nagios 更注重的是某一个监控的状态,不关注历史;
- zabbix,则是把每一次监控的数值反馈出来,数值存到数据库里面,方便后期数据图去分析监控整个状态;
- nagios不需要mysql的支持,不能成图,若需要画图,得安装插件以后才支持web界面;
- ccti 也需要mysql的支持,也可以成图,可以记录历史数据
- zabbix 在web界面下管理得非常彻底,可以增加监控节
2、zabbix监控介绍
- 主流有3.2版本,最新的是3.4版本;更新快,使用的用户多;
- C/S架构,基于C++开发,监控中心支持web界面配置和管理
- zabbix软件,是C/S架构:有一个服务端,去客户端抓数据。在客户端必须要有一个服务启动运行才可以抓取数据;数据可以主动的上报服务端,也可以让服务端去连接客户端获取(通过抓取数据方式,数据获取分两个模式,一个主动模式,一个被动模式),zabbix软件基于C++开发,监控中心需要一个PHP的web环境,因为要开启一个web界面配置和管理
- 单台server节点(即一台server),理论上 可以支持上万台客户端
- 瓶颈:在于采集数据的量,虽然支持上万台,但监控的项目过多,还是会导致zabbix效率降低;所以,当服务器大到一定规模的时候,就需要对zabbix进行优化
- 解决方法:可以增加一些代理点,这些代理点充当server,替代server去采集数据,最终得到分析结果再汇报给主服务端server
zabbix包含有五个组件:
- zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操作数据
- 数据存储 存放数据,比如mysql
- web界面 也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因(如果没有web界面,就无法在浏览器上配置它)
- zabbix-proxy 可选组件,它可以代替zabbix-server的功能,减轻server的压力(当机器量很多的时候,可以使用zabbix-proxy)
- 有时候,服务器分布在多个机房里,每个机房的服务器之间都是一个单独的内网,这时候就可以在某一个局域网里搭建一个 zabbix-proxy ,用这台 proxy 去监控局域网里的机器
- zabbix-agent 客户端软件(每一台客户端都需要安装agent),负责采集各个监控服务或项目的数据,并上报
zabbix监控流程图:
3、安装zabbix
准备工作
-
两台机器,一台作为服务端(监控中心),另外一台作为它的客户端
-
zabbix,可以直接yum安装,但需要安装epel扩展源,在epel扩展源里面安装的zabbix的版本,最高是2.2版本,比较旧,所以使用官方提供的repo源
-
在两台机器都需要下载:wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
[root@aminglinux ~]#wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
- 下载完之后,安装rpm包:rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
[root@aminglinux ~]#rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
- 查看/etc/yum.repos.d/目录下面会看到增加了一个zabbix.repo
[root@aminglinux ~]# ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo epel-testing.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo epel.repo zabbix.repo [root@aminglinux ~]# cat /etc/yum.repos.d/zabbix.repo [zabbix] name=Zabbix Official Repository - $basearch baseurl=http://repo.zabbix.com/zabbix/3.2/rhel/7/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591 [zabbix-non-supported] name=Zabbix Official Repository non-supported - $basearch baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/ enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX gpgcheck=1
yum安装zabbix
- yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
- zabbix-agent //客户端软件
- zabbix-get //服务端用的一个工具,这个工具可以通过命令行的形式,获得客户端某些监控项目的数据
- zabbix-server-mysql //这个是服务端跟mysql打交道相关的组件
- zabbix-web //webUI ,web界面
- zabbix-web-mysql //web和mysql相关组件
- 服务端是需要安装这些所有的包,而在客户端仅需要安装 zabbix-agent 包
A机器 [root@aminglinux ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql B机器 [root@localhost ~]# yum install -y zabbix-agent
- 安装mysql(之前已经安装,没有yum安装)
[root@aminglinux ~]# ps aux|grep mysql root 1039 0.0 0.1 115428 1716 ? S 22:17 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/aminglinux.pid mysql 1254 0.9 44.8 981304 452500 ? Sl 22:17 0:08 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/aminglinux.err --pid-file=/data/mysql/aminglinux.pid --socket=/tmp/mysql.sock
root 1418 0.0 0.0 112720 984 pts/0 S+ 22:33 0:00 grep --color=auto mysql
- 修改mysql的配置文件,修改/etc/my.cnf文件,设定默认的字符集,使web界面支持中文不会乱码;
[root@aminglinux ~]#vim /etc/my.cnf 在[mysqld]下添加字符集 character_set_server = utf8
- 重启mysql服务:/etc/init.d/mysqld restart
[root@aminglinux ~]# /etc/init.d/mysqld restart Shutting down MySQL.. SUCCESS! Starting MySQL...... SUCCESS!
- 建立zabbix的mysql库和访问用户:
[root@aminglinux ~]# mysql -uroot -p123456 Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.35-log MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database zabbix character set utf8; //创建zabbix库,并指定编码为utf8 Query OK, 1 row affected (0.00 sec) mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '123456'; //创建用户zabbix,写入123456库 Query OK, 0 rows affected (0.01 sec) mysql> quit Bye
- 导入原始数据到zabbix库