19.1 Linux监控平台介绍


常见开源监控软件

·cacti、nagios、zabbix、smokeping、open-falcon等等

·cacti、smokeping偏向于基础监控,成图非常漂亮

·cacti、nagios、zabbix服务端监控中心,需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图

·open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究

·后续以介绍zabbix为主





19.2 zabbix监控介绍


·C/S架构,基于C++开发,监控中心支持web界面配置和管理

·单server节点可以支持上万台客户端

·最新版本3.4,官方文档https://www.zabbix.com/manuals

·5个组件:

·zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操作数据

·数据存储 存放数据,比如mysql

·web界面 也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因

·zabbix-proxy 可选组件,它可以代替zabbix-server的功能,减轻server的压力

·zabbix-agent 客户端软件,负责采集各个监控服务或项目的数据,并上报

·zabbix监控流程图






19.3/19.4/19.6 安装zabbix


·下载zabbix的rpm包:

官网下载地址 www.zabbix.com/download,选择需要的版本,找到rpm包地址,wget到本地


·下载rpm包,并安装

[root@localhost ~]# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
[root@localhost ~]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
警告:zabbix-release-3.2-1.el7.noarch.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
1:zabbix-release-3.2-1.el7         ################################# [100%]
[root@localhost ~]# cat /etc/yum.repos.d/##yum源中增加了zabbix的源,可直接yum安装
CentOS7-Base-163.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@localhost ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web
zabbix-web-mysql
(过程略)

zabbix-agent 客户端软件

zabbix-get 使用命令行,在服务端上用来获取客户端的某些监控项目数据的工具

zabbix-server-mysql 安装的和mysql相关的一些数据,安装zabbix时需要导入

zabbix-web web界面

zabbix-web-mysql web和mysql相关的东西

(服务端要安装所有包,而客户端只要安装zabbix-agent)


会连带安装httpd和php

如果mysql之前没有安装的话,需要根据lamp那一章的mysql安装方法安装mysql

(安装过程详见:https://blog.51cto.com/11530642/2073264,此处省略


·启动mysqld,设置字符集(如果不设置,zabbix的web界面设置为中文的话,会有问题)

[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# vim /etc/my.cnf


·重启mysqld服务后,进入mysql命令行,创建zabbix库

[root@localhost ~]# systemctl restart mysqld
[root@localhost ~]# mysql -uroot -p123456
mysql> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)


·再创建用户,对库有读写权限,让web代码(php代码)连接mysql

zabbix-server启动的前提也是需要能连接mysql

mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '123456';
Query OK, 0 rows affected (0.00 sec)


·导入数据:

[root@localhost ~]# cd /usr/share/doc/zabbix-server-mysql-3.2.11/
[root@localhost zabbix-server-mysql-3.2.11]# gunzip create.sql.gz##解压
[root@localhost zabbix-server-mysql-3.2.11]# ls
AUTHORS  ChangeLog  COPYING  create.sql  NEWS  README
[root@localhost zabbix-server-mysql-3.2.11]# mysql -uroot -p123456 zabbix < create.sql
Warning: Using a password on the command line interface can be insecure.


·开启httpd服务(nginx需要关闭):

[root@localhost zabbix-server-mysql-3.2.11]# cd
[root@localhost ~]# systemctl start zabbix-server
[root@localhost ~]# /etc/init.d/nginx stop                    ##关闭nginx
Stopping nginx (via systemctl):                            [  确定  ]
[root@localhost ~]# netstat -lntp                             ##nginx已关闭,80端口没有被监听

[root@localhost ~]# systemctl start httpd                        ##启动httpd
[root@localhost ~]# !net

[root@localhost ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost ~]# systemctl enable zabbix-server                ##设置开机启动
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
[root@localhost ~]# systemctl disable nginx                        ##关闭nginx开机启动
nginx.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig nginx off
[root@localhost ~]# chkconfig nginx off
[root@localhost ~]# ps aux |grep zabbix                            ##zabbix已启动但是并没监听端口
zabbix     2474  0.0  0.3 254580  3484 ?        S    22:18   0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
root       2640  0.0  0.0 112676   984 pts/0    R+   22:21   0:00 grep --color=auto zabbix
[root@localhost ~]# netstat -lntp



·由于zabbix-server没有监听端口,所以去查看日志

[root@localhost ~]# less /var/log/zabbix/zabbix_server.log
2474:20180412:222009.390 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mys



·修改zabbix-server配置文件:

[root@localhost ~]# vim /etc/zabbix/zabbix_server.conf


DBHost就是服务端的ip,如果是本机可以写127.0.0.1或者localhost,如果在远程机器,写该机器ip

DBName=zabbix 默认就是zabbix

DBUser=zabbix 就是之前grant创建用户连接的用户名

DBPassword=123456 同上,是之前授权时用的密码

如果DBHost写了远程机器ip,类似于192.168.65.129,那么在grant授权时,’zabbix‘@xxx,xxx就要写webUI,也就是php代码所在机器的ip(也就是服务端ip) 192.168.65.128,在这里试验是本机127.0.0.1



·重启zabbix-server服务:

[root@localhost ~]# systemctl restart zabbix-server
[root@localhost ~]# ps aux |grep zabbix[object Object]
[root@localhost ~]# netstat -lntp

(zabbix-server服务监听的10051端口)


·配置web界面:

输入zabbix监控中心的IP地址:http://192.168.65.128/zabbix/setup.php

yum安装zabbix,默认会安装httpd以及他的配置文件,因此会省心很多

查看右侧显示 Fail 的项目,上图中是timezone没有设置,可在php.ini中配置


·编辑php默认配置文件

[root@localhost ~]# vim /etc/php.ini

·重启httpd后再刷新网页:

[root@localhost ~]# systemctl restart httpd

全部显示OK进入下一步

host是php代码所在机器

port写0是默认3306端口,如果是其他端口则写实际端口号

name是数据库名

user和password是授权时定义的user和password


主机名可随意定义


·最后确认信息是否正确:


·最后提示成功


·登录一下,默认用户名为Admin,密码为zabbix


·进入后台第一件事情就是修改密码:

在 Adminstration ——> Users ——> Admin 中

点击Change password

重新设置并重复确认

更改语言为中文:

完成后点Update,刷新页面之后,界面就成中文了





·zabbix客户端安装:

[root@localhost ~]# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
[root@localhost ~]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
警告:zabbix-release-3.2-1.el7.noarch.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
1:zabbix-release-3.2-1.el7         ################################# [100%]
[root@localhost ~]# yum install -y zabbix-agent##只要安装zabbix-agent包
(过程略)


·zabbix配置文件更改:

[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf

(服务端和客户端连接,客户端上需要指定服务端ip,设置白名单ip)


Server=192.168.65.128(服务端ip,被动模式)

ServerActive=192.168.65.128(服务端ip,主动模式)

(Server 和 ServerActive 都要设置,客户端有可能用主动模式,有可能用被动模式,如果只设置 Server ,那只能用被动模式,只能等待服务端过来取数据,如果需要主动上报数据就要设置后者)


·还要自定义的主机名,一会还需要在web界面下设置同样的主机名

[root@localhost ~]# systemctl start zabbix-agent
[root@localhost ~]# ps aux |grep zabbix
zabbix     1642  0.0  0.1  80664  1264 ?        S    23:52   0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
zabbix     1643  0.0  0.1  80664  1300 ?        S    23:52   0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix     1644  0.0  0.1  80664  1844 ?        S    23:52   0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix     1645  0.0  0.1  80664  1844 ?        S    23:52   0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix     1646  0.0  0.1  80664  1844 ?        S    23:52   0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix     1647  0.0  0.2  80796  2196 ?        S    23:52   0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root       1649  0.0  0.0 112676   976 pts/0    S+   23:52   0:00 grep --color=auto zabbix
[root@localhost ~]# netstat -lntp

(zabbix-server监听端口为10051,而zabbix-agent监听端口为10050)





19.5 忘记Admin密码如何做


进入到数据库中直接更改数据

[root@localhost ~]# mysql -uroot -p123456


mysql> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

mysql> desc users;

mysql> update users set passwd=md5('alex123456') where alias='Admin';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from users;


·此时再刷新网页,就可以用新密码登录zabbix