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监控流程图

解释:

  1. 监控主机,先添加主机到监控中心,让其2者之间通信。

  2. 然后再添加配置监控项目,监控项目配置完成后,并能与服务端进行通信,

  3. 通信的同时会进行采集数据动作(存入数据库,mysql),采集完数据后,会上报到数据中心(zabbix server)。

  4. 整个采集过程可以是主动或被动。

  5. zabbix server建立告警规则,过滤采集的数据是否达到告警的条件,如果达到了条件,会进行告警。如果没有达到要求,会进行存储。

  6. 除此之外,zabbix server还需要配置报警的机制,当检测到数据达到告警条件后,需要通过什么方式进行告警,短信?邮件?还是QQ信息?被通知的对象?

  7. 这些都需要在服务端(zabbix server)上面配置。

  8. 所有的配置过程,全部都可以在Web界面(UI界面交互)上面操作。

  9. 采集后的数据能通过图形呈现出来,最终在Web界面展现出来。



19.3 安装zabbix(上)

准备工作 

两台Linux 

一台服务端

server centos7-01 192.168.189.128 

一台客户端

client centos7-02 192.168.189.129


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

zabbix版本3.2-->> Centos 7-->> Database-->> MySQL-->>获取下载地址

1.1 wget下载

wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

2 安装zabbix

2.1 先安装rpm包

#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%]

其实这里是安装了一个zabbix的yum源,目的是方便zabbix 利用yum安装其他zabbix的组件。

[root@centos7-01 src]# ls /etc/yum.repos.d/zabbix.repo 
/etc/yum.repos.d/zabbix.repo

2.2 服务端安装zabbix的五个组件

#yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

组件介绍

zabbix-agent 客户端软件,

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

zabbix-server-mysql 安装跟mysql相关的文件(.mysql),后续安装zabbix的时候,会需要这种文件的导入

zabbix-web web的界面,web UI

zabbix-web-mysql安装web和mysql相关的文件

2.3 客户端只需要安装zabbix-agent

zabbix安装会连带安装httpd和php


3 启动mysql

[root@centos7-01 src]# systemctl start mysql
[root@centos7-01 src]# ps aux |grep mysql
root      1155  0.0  0.1 115388  1676 ?        S    10:29   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/centos7-01.pid
mysql     1344  0.0 45.8 1301056 462076 ?      Sl   10:29   0:15 /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/centos7-01.err --pid-file=/data/mysql/centos7-01.pid --socket=/tmp/mysql.sock
root      3853  0.0  0.0 112676   980 pts/0    R+   18:00   0:00 grep --color=auto mysql

****如果mysql启动失败,分析一下原因:

读写权限出错,给予/data/mysql所属主所属组用户权限,执行#chown -R mysql:mysql /data/mysql。如果再不行的话,尝试给予755权限。

还有一种情况是找不到.pid文件的报错信息,这种情况多数跟更改主机名有关系。


4 编辑mysql的配置文件/etc/my.cnf

[root@centos7-01 src]#vim /etc/my.cnf //需要增加配置
character_set_server = utf8

如果没设置这参数,中文显示会有问题

4.1 重启mysql服务

[root@centos7-01 src]# systemctl restart mysql

5 创建zabbix数据库

登录mysql

创建zabbix库并制定utf8

mysql> create database zabbix character set utf8;

再创建用户

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

目的是需要Web代码连接mysql,

监控中心服务zabbix启动的前提也是需要能够连接mysql,

客户端采集数据,需要把数据传递给服务端,服务端通过这个用户来写入mysql.

这个用户需要有读写权限。


6 导入数据

[root@Centos7-01 mysql]# cd /usr/share/doc/zabbix-server-mysql-3.2.11/(zabbix此处版本号有所不同,根据实际情况)
[root@Centos7-01 zabbix-server-mysql-3.2.11]# ls
AUTHORS  ChangeLog  COPYING  create.sql.gz  NEWS  README
[root@Centos7-01 zabbix-server-mysql-3.2.11]# gzip -d create.sql.gz 
[root@Centos7-01 zabbix-server-mysql-3.2.11]# ls
AUTHORS  ChangeLog  COPYING  create.sql  NEWS  README
[root@Centos7-01 zabbix-server-mysql-3.2.11]# mysql -uroot -paminglinux zabbix < create.sql
Warning: Using a password on the command line interface can be insecure.

7 启动服务

启动zabbix服务

[root@Centos7-01 src]# systemctl start zabbix-server

启动httpd服务(启动httpd之前,需要把nginx的服务停掉,因为他占用了httpd即将要监听的80端口)

[root@Centos7-01 src]# systemctl start httpd

添加开机启动

[root@Centos7-01 src]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@Centos7-01 src]# 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.

8 停止nginx服务,以免发生冲突

[root@Centos7-01 src]# systemctl disable nginx
nginx.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig nginx off
监听端口
[root@Centos7-01 src]# netstat -lntp |grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      1707/httpd

19.4 安装zabbix(中)

1 发现监听端口发生失败,


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

查看zabbix日志文件

[root@Centos7-01 ~]# less /var/log/zabbix/zabbix_server.log 
  1206:20180525:220141.770 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  1206:20180525:220141.771 database is down: reconnecting in 10 seconds
  1206:20180525:220151.771 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
.
.
.

可以看到出现很多这种错误,报错意思大概就是有进程,但是没有彻底启动起来,导致没有连接到mysql.


2 修改配置文件,

[root@Centos7-01 ~]# vim /etc/zabbix/zabbix_server.conf  
DBHost=127.0.0.1 
DBPassword=aming-zabbix

参数解释:

DBHost=127.0.0.1 //在# DBHost=localhost下面一行面增加此参数,因为mysql装在本机,所以这里写本机了,在生产环境中,如果mysql装在其他机器上,这里可以写对应mysql库的ip地址。因为开始授权zabbix库的用户的时候设定了127.0.0.1,所以这样也需要设定这个地址。

DBname=zabbix 自定义,但一定要记得,一般也是定义为zabbix(根据实际情况)

DBPassword=aming-zabbix //在DBuser下面增加,DBuser对应的密码

*参数一定要输对否则会有报错,启动不到服务。


3 更改完成后,重启zabbix服务

[root@Centos7-01 ~]# systemctl restart zabbix-server

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

zabbix    1551  0.0  0.4 254768  4168 ?        S    22:26   0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
zabbix    1553  0.0  0.3 254776  3056 ?        S    22:26   0:00 /usr/sbin/zabbix_server: configuration syncer [synced configuration in 0.019651 sec, idle 60 sec]
zabbix    1554  0.0  0.2 254768  2856 ?        S    22:26   0:00 /usr/sbin/zabbix_server: db watchdog [synced alerts config in 0.006279 sec, idle 60 sec]
zabbix    1555  0.0  0.5 361704  5248 ?        S    22:26   0:00 /usr/sbin/zabbix_server: poller #1 [got 0 values in 0.000002 sec, idle 5 sec]
zabbix    1556  0.0  0.5 361704  5248 ?        S    22:26   0:00 /usr/sbin/zabbix_server: poller #2 [got 0 values in 0.000003 sec, idle 5 sec]
zabbix    1557  0.0  0.5 361704  5248 ?        S    22:26   0:00 /usr/sbin/zabbix_server: poller #3 [got 0 values in 0.000005 sec, idle 5 sec]
zabbix    1558  0.0  0.5 361704  5248 ?        S    22:26   0:00 /usr/sbin/zabbix_server: poller #4 [got 0 values in 0.000002 sec, idle 5 sec]
zabbix    1559  0.0  0.5 361704  5248 ?        S    22:26   0:00 /usr/sbin/zabbix_server: poller #5 [got 0 values in 0.000002 sec, idle 5 sec]
zabbix    1560  0.0  0.5 361704  5248 ?        S    22:26   0:00 
.
.
.
.

正常的情况是,zabbix需要启动很多子进程。

检查监听的端口

[root@Centos7-01 ~]# netstat -lntp |grep zabbix
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      1551/zabbix_server  
tcp6       0      0 :::10051                :::*                    LISTEN      1551/zabbix_server


4 配置web界面

浏览器访问监控中心的ip地址,也就是服务端

httpd不需要做任何修改也能直接访问zabbix的安装向导,原因是安装zabbix的时候,它已经把httpd的配置设置好了。

4.1 下一步继续,需要留意右边的状态栏,如果是fail是不通过的设置,需要操作。

这里是PHP的时区出现问题了,回到Linux服务端修改php的时区设置

4.2 修改php.ini,搜索timezone参数,修改为中国区时间(上海,重庆都可以)

[root@Centos7-01 ~]#vim /etc/php.ini
date.timezone = Asia/Shanghai

4.3 修改完成后,重启httpd服务


[root@Centos7-01 ~]# systemctl restart httpd

4.4 回到windows浏览器,刷新状态

4.5 继续Next step下一步,填写mysql数据库的信息

4.6 设置zabbix服务端信息

4.7 确认信息

4.8 完成设置向导

4.9 登录管理界面

默认账号密码是Admin,zabbix

4.10 修改密码

通常第一时间修改账号密码 

Administration-->users-->选中Admin-->change password

这界面也可以修改中文语言

修改完成后刷新即可

最后重新登录zabbix的管理用户


19.5 忘记Admin密码如何做


大纲操作,

  1.  进入mysql命令行,选择zabbix库

  2.  mysql -uroot -p zabbix

  3.  update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;

  4.  上述操作都做了的话,就能成功更改Admin用户的密码


1 登录mysql,切换至zabbix库

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


Database changed


2 进入users表

mysql> desc users;
+----------------+---------------------+------+-----+---------+-------+
| Field          | Type                | Null | Key | Default | Extra |
+----------------+---------------------+------+-----+---------+-------+
| userid         | bigint(20) unsigned | NO   | PRI | NULL    |       |
| alias          | varchar(100)        | NO   | UNI |         |       |
| name           | varchar(100)        | NO   |     |         |       |
| surname        | varchar(100)        | NO   |     |         |       |
| passwd         | char(32)            | NO   |     |         |       |
| url            | varchar(255)        | NO   |     |         |       |
| autologin      | int(11)             | NO   |     | 0       |       |
| autologout     | int(11)             | NO   |     | 900     |       |
| lang           | varchar(5)          | NO   |     | en_GB   |       |
| refresh        | int(11)             | NO   |     | 30      |       |
| type           | int(11)             | NO   |     | 1       |       |
| theme          | varchar(128)        | NO   |     | default |       |
| attempt_failed | int(11)             | NO   |     | 0       |       |
| attempt_ip     | varchar(39)         | NO   |     |         |       |
| attempt_clock  | int(11)             | NO   |     | 0       |       |
| rows_per_page  | int(11)             | NO   |     | 50      |       |
+----------------+---------------------+------+-----+---------+-------+
16 rows in set (0.06 sec)


其中passwd就是密码了,密码存放在user表里面,

3 执行命令,修改密码

update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;

4 查看users表的字段信息,

mysql> select * from user;
ERROR 1146 (42S02): Table 'zabbix.user' doesn't exist
mysql> select * from users;
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
| userid | alias | name   | surname       | passwd                           | url | autologin | autologout | lang  | refresh | type | theme   | attempt_failed | attempt_ip | attempt_clock | rows_per_page |
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
|      1 | Admin | Zabbix | Administrator | f3e5e7e3e23af2f741786761bcfb440f |     |         1 |          0 | zh_CN |      30 |    3 | default |              0 |            |             0 |            50 |
|      2 | guest |        |               | d41d8cd98f00b204e9800998ecf8427e |     |         0 |        900 | en_GB |      30 |    1 | default |              0 |            |             0 |            50 |
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
2 rows in set (0.00 sec)

其中passwd加密的MD5码就是密码了


5 成功更改了Admin用户的密码


19.6 Zabbix客户端安装


1 在客户端上也需要下载zabbix的yum源

wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm

2 安装zabbix-agent


yum install -y zabbix-agent

3 修改如下配置

#vim  /etc/zabbix/zabbix_agentd.conf 
Server=127.0.0.1 修改为 Server=192.168.189.128
ServerActive=127.0.0.1 修改为 ServerActive=192.168.189.128
Hostname=Zabbix server 修改为 Hostname=aming-02


参数解释: 

Server=127.0.0.1修改为Server=192.168.189.128                             //定义服务端的ip(被动模式)

ServerActive=127.0.0.1修改为ServerActive=192.168.189.128         //定义服务端的ip(主动模式)

Hostname=Zabbix server修改为Hostname=aming-02         //这是自定义的客户端的主机名,一会还需要在web界面下设置同样的主机名


主动模式与被动模式:

  • 主动或被动模式是相对于客户端来讲的。

  • 如果是被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端;

  • 如果是主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。

  • 当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。

  • 服务端有公网ip,客户端只有内网ip,但却能连外网,这种场景适合主动模式。


4 启动zabbix-agent服务

# systemctl start zabbix-agent
# systemctl start zabbix-agent
# ps aux |grep zabbix-agent
root      2695  0.0  0.0 112720   972 pts/0    S+   00:09   0:00 grep --color=auto zabbix-agent
[root@centos7-02 ~]# ps aux |grep zabbix
zabbix    2688  0.0  0.1  80704  1276 ?        S    00:09   0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
zabbix    2689  0.0  0.1  80704  1320 ?        S    00:09   0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix    2690  0.0  0.1  80704  1844 ?        S    00:09   0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix    2691  0.0  0.1  80704  1844 ?        S    00:09   0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix    2692  0.0  0.1  80704  1844 ?        S    00:09   0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix    2693  0.0  0.2  80836  2184 ?        S    00:09   0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root      2697  0.0  0.0 112720   968 pts/0    R+   00:10   0:00 grep --color=auto zabbix

检查监听端口

[root@centos7-02 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      553/rpcbind         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      927/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1218/master         
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      2688/zabbix_agentd  
tcp6       0      0 :::111                  :::*                    LISTEN      553/rpcbind         
tcp6       0      0 :::22                   :::*                    LISTEN      927/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1218/master         
tcp6       0      0 :::10050                :::*                    LISTEN      2688/zabbix_agentd  
tcp6       0      0 :::3306                 :::*                    LISTEN      1156/mysqld         
添加开机启动
[root@centos7-02 ~]# systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.

快速配置:

链接: