19.1 linux监控平台搭建

 

常见监控软件:

cactinagioszabbixsmokepingopen-falcon

其中nagioszabbix流行度非常高;

cactismokeping倾向于基础监控,成图漂亮,常被用于监控网络设备;

zabbixnagios有更多优势,配置更简单;

open-falcon由小米公司基于zabbix开发,并将该监控软件共享出来,使其变成一个开源软件;

有很多大企业在使用open-falcon

nagioszabbixcacti等监控软件都支持使用web界面管控;

zabbixweb界面下管理的更彻底,用户可以增加监控节点、配置具体监控项目和报警阈值,操作方便,nagios需要修改配置文件,比较繁琐;

nagios注重于某个监控的状态(正常/不正常),不需要关注历史,zabbix需要抓到每一次统计的项目的数值,数值会被存入数据库,用户可以利用这些历史数值画图形成图表;

nagios不需要mysql等数据库的支持,zabbix需要mysql等数据库支持;

cacti也需要mysql等数据库支持,也可以记录历史数据并成图;

以上几款软件的web界面均需要php环境支持,用户可以使用apache+phpnginx+php实现;

 

19.2 zabbix监控介绍

 

使用C/S架构,由服务端到客户端上抓取数据,客户端必须启动相关的agent专门采集数据信息;

客户端分为主动模式和被动模式:

服务端可以主动向客户端抓取数据,也可以由客户端主动上报数据给服务端;

zabbix基于C++开发,监控中心支持web界面配置、管理,支持web界面需要php环境;

单台节点可支持上万的客户端,支持的并发量较高,但若监控的项目太多,服务端采集的数据量过高仍会导致效率降低;

当服务器规模过大时可以对zabbix进行一些优化,如增加proxy(代理点)来充当server,代替server采集数据,得到结果后再汇报给server

zabbix更新速度较快,目前最新版本为3.4

zabbix官方文档地址:

https://www.zabbix.com/manuals

 

zabbix的五个组件:

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

数据库 mysql,用于存储数据

Web界面 web UI,用户可以在web界面下操作、配置zabbix

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

zabbix-agent 客户端软件,存在于每一个zabbix客户端,负责采集各个监控服务或项目数据并上报

 

zabbix监控流程图:

                                             

用户想监控某个主机,需要添加监控主机到监控中心——>

配置监控项目,监控项目配置完成后就可以和服务端通信了——>

zabbix-server采集数据(主动或被动)并上报数据中心,即mysql——>

zabbix-server设置告警规则和机制(检测到达告警条件该如何告警、通知给谁等),若达到告警条件则触发告警,若未达到条件则仅存储数据,以上的设置均可在web界面完成,所有的信息均可通过图形在web界面展现

 

19.3 安装zabbix(上)

 

准备工作:

两台机器,一台作为服务端,另一台作为客户端

 

下载zabbix包:

zabbix可以yum安装,但安装的是2.2版本,推荐使用官方提供的对应版本的yum源:

官网下载地址:https://www.zabbix.com/download

1 先选择对应的大版本,再选择适用的操作系统以及操作系统的版本,最后选择使用的数据库

2 复制下面出现的链接,用wget命令下载该链接的包:

[root@hyc-01-01 ~]# wget https://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

两台机器(serverclient)都需要下载zabbix

 

安装zabbix

[root@hyc-01-01 ~]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm

[root@hyc-01-01 ~]# ls /etc/yum.repos.d

CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo  zabbix.repo

CentOS-CR.repo         CentOS-Media.repo      epel.repo

CentOS-Debuginfo.repo  CentOS-Sources.repo    epel-testing.repo

zabbix.repo即为刚才安装zabbixrpm包时安装的一个文件

有了刚刚安装的新yum源后,即可yum安装zabbix相关的包:

[root@hyc-01-01 ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

zabbix-agent zabbix客户端

zabbix-get 服务端的一个工具,可以用命令行的形式获得客户端的某些监控项目的数据

zabbix-server-mysql 安装与mysql相关的文件

zabbix-web zabbixweb界面

zabbix-web-mysql 安装webmysql交互的一些文件

以上为服务端安装的文件,客户端仅安装zabbix-agent即可

 

Zabbix需要mysql支持,检查mysql是否安装并启动:

[root@hyc-01-01 ~]# ps aux|grep mysql

root       839  0.0  0.0 115432  1712 ?        S    07:19   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/hyc-01-01.pid

mysql     1231  0.0 24.5 1322404 460196 ?      Sl   07:19   0:34 /usr/local/mysql/binmysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=hyc-01-01.err --pid-file=/data/mysql/hyc-01-01.pid --socket=/tmp/mysql.sock

root      4032  0.0  0.0 112724   984 pts/0    S+   22:37   0:00 grep --color=auto mysql

编辑mysql配置文件,设置默认字符集:

[root@hyc-01-01 ~]# vim /etc/my.cnf

[mysqld]

character_set_server = utf8

federated

datadir=/data/mysql

socket=/tmp/mysql.sock

server-id=129

log_bin=hyc1

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Settings user and group are ignored when systemd is used.

# If you need to run mysqld under a different user or group,

# customize your systemd unit file for mariadb according to the

# instructions in http://fedoraproject.org/wiki/Systemd

 

[mysqld_safe]

若不设置则web界面的中文显示可能出现问题

设置完成后重启mysql

[root@hyc-01-01 ~]# systemctl restart mysql

 

登录mysql创建zabbix使用的库:

[root@hyc-01-01 ~]# mysql -uroot -p123456

mysql> create database zabbix character set utf8;

Query OK, 1 row affected (0.00 sec)

创建用户用于php代码连接mysql

mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'hyc940421';

Query OK, 0 rows affected (0.01 sec)

由于zabbix需要向mysql中指定的zabbix库读写数据,所以Zabbix-server启动的前提也是需要能够连接mysql

Mysql中要有用于zabbix读写的库和能让zabbix连接mysql的用户,设定的用户需要对zabbix的库有读写权限

 

导入zabbix自带的原始数据:

有这些数据zabbixweb界面下才能正常工作

 

[root@hyc-01-01 ~]# cd /usr/share/doc/zabbix-server-mysql-3.2.11/

[root@hyc-01-01 zabbix-server-mysql-3.2.11]# gzip -d create.sql.gz

[root@hyc-01-01 zabbix-server-mysql-3.2.11]# ls

AUTHORS  ChangeLog  COPYING  create.sql  NEWS  README

将解压产生的.sql文件导入mysql的库中:

[root@hyc-01-01 zabbix-server-mysql-3.2.11]# mysql -uroot -p123456 zabbix < create.sqlWarning: Using a password on the command line interface can be insecure.

 

启动zabbix-server服务:

[root@hyc-01-01 ~]# systemctl start zabbix-server

报错:

此时启动zabbix-server会出现启动不正常的情况,查看报错提示mysql无法连接

解决:

编辑zabbix配置文件,注意修改以下参数

[root@hyc-01-01 zabbix]# vim /etc/zabbix/zabbix_server.conf

81 # DBHost=localhost

 82 DBHost=127.0.0.1 指定登录数据库的源地址

 83

 84 ### Option: DBName

89 # Default:

 90 # DBName=

 91

 92 DBName=zabbix 指定数据库名称

 93

 94 ### Option: DBSchema

106 # DBUser=

107

108 DBUser=zabbix 指定登录数据库的用户

109 DBPassword=hyc940421 指定登录使用的密码

110 ### Option: DBPassword

启动httpd服务:

[root@hyc-01-01 zabbix]# systemctl start httpd

这里需要检查nginx是否启动并占用80端口,若是则需要先停掉nginx服务

 

Zabbix-serverhttpd均正常启动后,打开浏览器访问zabbix

点击后进入下一步

首次配置时会提示上图处参数错误,需要编辑/etc/php.ini文件:

(reverse-i-search)`php': vim /etc/php.ini

874

 875 [Date]

 876 ; Defines the default timezone used by the date functions

 877 ; http://php.net/date.timezone

 878 date.timezone = Asia/shanghai 修改该时区参数

 879

 880 ; http://php.net/date.default-latitude

重启httpd,刷新浏览器页面即可解决

 

填写数据库信息

Database type:数据库类型

Database host:登录数据库的主机,填写ip地址或域名

Database port:登录的端口,填0则从默认端口登录(3306

Database name:数据库名称

User:登录用户名

Password:登录密码

 

定义zabbix的主机、zabbix使用的端口和主机名

 

 

确认配置信息

 

成功安装zabbix前端

 

首次登录

首次登录使用管理员admin账号,密码zabbix

 

修改默认密码:

 

点击administration,在子菜单中选users,在显示的页面中选择用户admin并点击

 

在页面中点击change password

 

输入两遍密码,将语言修改为中文

 

此时密码被修改,但界面还未变成中文,需要刷新一次

 

退出原zabbix,重新登录:

使用新密码重新登录zabbix

 

19.5 忘记admin密码如何做

 

进入zabbix数据库:

[root@hyc-01-01 ~]# 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 355

Server version: 5.6.39-log MySQL Community Server (GPL)

 

Copyright (c) 2000, 2018, 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> use zabbix;

 

修改表users指定的aliaspasswd

mysql> update users set passwd=md5('hyc708562') where alias='Admin';

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

 

尝试使用新密码登录:


19.6安装zabbix(下)

 

安装并启动zabbix客户端

1 下载并安装zabbixyum

[root@hyc-01 ~]#wget https://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

[root@hyc-01 ~]# yum install -y zabbix-release-3.2-1.el7.noarch.rpm

2 安装zabbix客户端

[root@hyc-01 ~]# yum install -y zabbix-agent

3 编辑zabbix配置文件

服务端和客户端通信必须要指定一个白名单ip,若不指定则所有服务端都可以连接该客户端,获取客户端的监控数据,服务端与客户端通信需要认证;

若只编辑Server则只能使用客户端的被动模式,编辑ServerServerActive则客户端的主动和被动模式均可使用;

[root@hyc-01 ~]# vim /etc/zabbix/zabbix_agentd.conf

90 #

 91 # Mandatory: no

 92 # Default:

 93 # Server=

 94

 95 Server=192.168.31.129 指定服务端的地址白名单,指定该项后可使用客户端的被动模式

 96

 97 ### Option: ListenPort

 98 #       Agent will listen on this port for connections from the server.

 99 #

100 # Mandatory: no

132 # Mandatory: no

133 # Default:

134 # ServerActive=

135

136 ServerActive=192.168.31.129 编辑该项后可使用主动模式,客户端会将监控数据主动推到服务端

137

138 ### Option: Hostname

144 # Default:

145 # Hostname=

146

147 Hostname=hyc-01 定义服务端监控界面显示的客户端名称,定义的名称必须是客户端能识别的名称,若客户端不识别,在服务端的日志中会报错

148

149 ### Option: HostnameItem

150 #       Item used for generating Hostname if it is undefined. Ignored if Hostname     is defined.

4 启动zabbix客户端

[root@hyc-01 zabbix]# systemctl start zabbix-agent

 

[root@hyc-01 zabbix]# ps aux|grep zabbix

zabbix    1618  0.0  0.1  80664  1264 ?        S    22:33   0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf

zabbix    1619  0.0  0.1  80664  1320 ?        S    22:33   0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]

zabbix    1620  0.0  0.1  80664  1848 ?        S    22:33   0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]

zabbix    1621  0.0  0.1  80664  1848 ?        S    22:33   0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]

zabbix    1622  0.0  0.1  80664  1848 ?        S    22:33   0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]

zabbix    1623  0.0  0.2  80792  2176 ?        S    22:33   0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]

root      1632  0.0  0.0 112676   980 pts/0    R+   22:35   0:00 grep --color=auto zabbix

[root@hyc-01 zabbix]# netstat -lntp|grep zabbix

tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1618/zabbix_agentd 

tcp6       0      0 :::10050                :::*                    LISTEN      1618/zabbix_agentd