第十九章 Linux监控平台搭建
19.1 Linux监控平台介绍
常见开源监控软件
cacti、nagios、zabbix、smokeping、open-falcon等等。
cacti、smokeping偏向于基础监控,成图漂亮。
cacti、nagios、zabbix服务端监控中心,需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态;zabbix会获取服务或者监控项目的数据从而可以成图,zabbix把数据记录到数据库里,支持历史数据查询,而且zabbix可以非常方便的自定义监控项目。
open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究。
本节学习以zabbix为例。
19.2 zabbix监控介绍
zabbix基于C++开发,是C/S(client/server)架构,即分为客户端和服务端,单个服务端节点可以支持上万台客户端,监控中心支持web UI(web界面)配置和管理。
查看zabbix官方文档:https://www.zabbix.com/manuals 是学习zabbix的最好途径。
zabbix组件
zabbix整个体系架构中有以下5个主要角色:
- zabbix-server
zabbix-server是整个监控体系中最核心的组件,它负责接收客户端发送的报告信息,所有配置、统计数据及操作数据都由它组织。 - 数据存储(如:mysql)
监控过程中收集的所有信息都存储在这里。 - web界面
web界面,即GUI。这是zabbix监控简单易用的原因之一,因为我们可以在web界面中配置、管理各个客户端。运行web界面需要有PHP环境支持。 - zabbix-proxy
zabbix-proxy为可选组件,用于监控节点非常多的分布式环境,它可以代理zabbix-server的功能,减轻zabbix-server的压力。 - zabbix-agent
zabbix-agent为部署在各个客户端上的组件,用于采集各个监控项目的数据,并把采集的数据传输给zabbix-proxy或zabbix-server。
监控流程图

9.3-19.4 安装zabbix
准备工作
两台机器:一台作为server(IP:192.168.230.135),一台作为client(IP:192.168.230.145),均安装zabbix,server上安装数据库(安装方法见:https://my.oschina.net/u/3497124/blog/1488479 )。
可以使用yum安装zabbix,版本是3.2。在此使用zabbix官方提供的对应版本的yum源安装较新版本的zabbix。
在服务端安装zabbix
安装zabbix之前需要先安装其yum源仓库。 下载zabbix的yum源仓库: [root@cham002 ~]# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm [root@cham002 ~]# 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 [root@cham002 ~]# cat /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 安装yum源仓库: [root@cham002 ~]# 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及其组件: [root@cham002 ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql #zabbix-agent:客户端程序 #zabbix-get:服务端上命令行获取客户端检测项目的工具 #zabbix-server-mysql:zabbix-server MySQL版 #zabbix-web:web界面 #zabbix-web-mysql:web界面MySQL相关 注:该过程会连带安装PHP和http。
•如果mysql之前没有安装的话,需要根据lamp那一章的mysql安装方法安装mysql
检测mysql有没有启动,没有的话启动 [root@cham002 ~]# ps aux |grep mysql root 3512 0.0 0.1 113268 1496 ? S 1月24 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/cham002.pid mysql 3672 0.1 44.5 1189812 448836 ? Sl 1月24 1:30 /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/cham002.err --pid-file=/data/mysql/cham002.pid --socket=/tmp/mysql.sock root 51627 0.0 0.0 112684 976 pts/2 S+ 01:27 0:00 grep --color=auto mysql
配置
配置server端:
配置mysql:
[root@cham002 ~]# vim /etc/my.cnf # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the # *** default location during install, and will be replaced if you # *** upgrade to a newer version of MySQL. [mysqld] character_set_server = utf8 #增加这一行,#设置默认字符集--目的是辅助web界面中文显示 datadir=/data/mysql socket=/tmp/mysql.sock server-id=135 log_bin=chamlinux1 # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size = 128M # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # These are commonly set, remove the # and set as required. # basedir = ..... # datadir = ..... # port = ..... # server_id = ..... # socket = ..... # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES :wq 重启mysql [root@cham002 ~]# /etc/init.d/mysqld restart Shutting down MySQL.... SUCCESS!
创建数据库:
[root@cham002 ~]# mysql -uroot -p Enter password: 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; #创建库并指定其字符集 Query OK, 1 row affected (0.00 sec) mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '123456'; Query OK, 0 rows affected (0.00 sec) mysql> quit Bye
向zabbix数据库中导入原始数据:
[root@cham002 ~]# cd /usr/share/doc/zabbix-server-mysql-3.2.11/ [root@cham002 zabbix-server-mysql-3.2.11]# ls AUTHORS ChangeLog COPYING create.sql.gz NEWS README [root@cham002 zabbix-server-mysql-3.2.11]# gzip -d create.sql.gz [root@cham002 zabbix-server-mysql-3.2.11]# ls AUTHORS ChangeLog COPYING create.sql NEWS README [root@cham002 zabbix-server-mysql-3.2.11]# mysql -uroot -pchampin zabbix < create.sql Warning: Using a password on the command line interface can be insecure. #可能数据量比较大,需要等待 [root@cham002 zabbix-server-mysql-3.2.11]#
启动zabbix服务:
[root@cham002 zabbix-server-mysql-3.2.11]# cd [root@cham002 ~]# systemctl start zabbix-server [root@cham002 ~]# start httpd^C 先检查nginx [root@cham002 ~]# 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 1/systemd tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 1995/rpc.mountd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2173/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2492/master tcp 0 0 0.0.0.0:43998 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:51879 0.0.0.0:* LISTEN 1226/rpc.statd tcp6 0 0 :::3306 :::* LISTEN 51877/mysqld tcp6 0 0 :::33324 :::* LISTEN 1226/rpc.statd tcp6 0 0 :::37486 :::* LISTEN - tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::20048 :::* LISTEN 1995/rpc.mountd tcp6 0 0 :::22 :::* LISTEN 2173/sshd tcp6 0 0 ::1:25 :::* LISTEN 2492/master tcp6 0 0 :::2049 :::* LISTEN - [root@cham002 ~]# systemctl start httpd [root@cham002 ~]# 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 1/systemd tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 1995/rpc.mountd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2173/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2492/master tcp 0 0 0.0.0.0:43998 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:51879 0.0.0.0:* LISTEN 1226/rpc.statd tcp6 0 0 :::3306 :::* LISTEN 51877/mysqld tcp6 0 0 :::33324 :::* LISTEN 1226/rpc.statd tcp6 0 0 :::37486 :::* LISTEN - tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::80 :::* LISTEN 52138/httpd tcp6 0 0 :::20048 :::* LISTEN 1995/rpc.mountd tcp6 0 0 :::22 :::* LISTEN 2173/sshd tcp6 0 0 ::1:25 :::* LISTEN 2492/master tcp6 0 0 :::2049 :::* LISTEN - 可以对zabbix、http等服务设置开机启动: [root@cham002 ~]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. [root@cham002 ~]# 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@cham002 ~]# systemctl disable nginx [root@cham002 ~]# ps aux |grep zabbix zabbix 51942 0.0 0.3 256080 3460 ? S 01:55 0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf root 52251 0.0 0.0 112680 976 pts/2 S+ 02:23 0:00 grep --color=auto zabbix 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 1/systemd tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 1995/rpc.mountd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2173/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2492/master tcp 0 0 0.0.0.0:43998 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:51879 0.0.0.0:* LISTEN 1226/rpc.statd tcp6 0 0 :::3306 :::* LISTEN 51877/mysqld tcp6 0 0 :::33324 :::* LISTEN 1226/rpc.statd tcp6 0 0 :::37486 :::* LISTEN - tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::80 :::* LISTEN 52138/httpd tcp6 0 0 :::20048 :::* LISTEN 1995/rpc.mountd tcp6 0 0 :::22 :::* LISTEN 2173/sshd tcp6 0 0 ::1:25 :::* LISTEN 2492/master tcp6 0 0 :::2049 :::* LISTEN -
至此,检查zabbix服务状态(ps,netstat)发现,服务启动了,但是没有监听端口,状态不正常,进行错误排查:
查看zabbix日志:
[root@cham002 ~]# less /var/log/zabbix/zabbix_server.log 51942:20180125:015502.033 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
解决办法:
更改zabbix配置文件。
### Option: DBHost # Database host name. # If set to localhost, socket is used for MySQL. # If set to empty string, socket is used for PostgreSQL. # # Mandatory: no # Default: # DBHost=localhost DBHost=127.0.0.1 ### Option: DBName # Database name. # For SQLite3 path to database file must be provided. DBUser and DBPassword are ignored. # # Mandatory: yes # Default: # DBName= DBName=zabbix ### Option: DBSchema # Schema name. Used for IBM DB2 and PostgreSQL. # # Mandatory: no # Default: # DBSchema= ### Option: DBUser # Database user. Ignored for SQLite. # # Mandatory: no # Default: # DBUser= DBUser=zabbix DBPassword=cham-zabbix

[root@cham002 zabbix-server-mysql-3.2.11]# ps aux |grep zabbix zabbix 3981 0.0 0.4 256260 4124 ? S 22:59 0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf zabbix 3983 0.0 0.2 256260 2472 ? S 22:59 0:00 /usr/sbin/zabbix_server: configuration syncer [waiting 60 sec for processes] zabbix 3984 0.0 0.2 256260 2680 ? S 22:59 0:00 /usr/sbin/zabbix_server: db watchdog [synced alerts config in 0.001111 sec, idle 60 sec] zabbix 3985 0.0 0.5 363204 5196 ? S 22:59 0:00 /usr/sbin/zabbix_server: poller #1 [got 0 values in 0.000002 sec, idle 5 sec] zabbix 3986 0.0 0.5 363204 5196 ? S 22:59 0:00 /usr/sbin/zabbix_server: poller #2 [got 0 values in 0.000002 sec, idle 5 sec] zabbix 3987 0.0 0.5 363204 5196 ? S 22:59 0:00 /usr/sbin/zabbix_server: poller #3 [got 0 values in 0.000002 sec, idle 5 sec] zabbix 3988 0.0 0.5 363204 5196 ? S 22:59 0:00 /usr/sbin/zabbix_server: poller #4 [got 0 values in 0.000003 sec, idle 5 sec] zabbix 3989 0.0 0.5 363204 5196 ? S 22:59 0:00 /usr/sbin/zabbix_server: poller #5 [got 0 values in 0.000002 sec, idle 5 sec] zabbix 3990 0.0 0.5 363204 5196 ? S 22:59 0:00 /usr/sbin/zabbix_server: unreachable poller #1 [got 0 values in 0.000002 sec, idle 5 sec] zabbix 3991 0.0 0.3 256260 3588 ? S 22:59 0:00 /usr/sbin/zabbix_server: trapper #1 [processed data in 0.000000 sec, waiting for connection] zabbix 3992 0.0 0.3 256260 3588 ? S 22:59 0:00 /usr/sbin/zabbix_server: trapper #2 [processed data in 0.000000 sec, waiting for connection] zabbix 3993 0.0 0.3 256260 3588 ? S 22:59 0:00 /usr/sbin/zabbix_server: trapper #3 [processed data in 0.000000 sec, waiting for connection] zabbix 3994 0.0 0.3 256260 3588 ? S 22:59 0:00 /usr/sbin/zabbix_server: trapper #4 [processed data in 0.000000 sec, waiting for connection] zabbix 3995 0.0 0.3 256260 3536 ? S 22:59 0:00 /usr/sbin/zabbix_server: trapper #5 [processed data in 0.000000 sec, waiting for connection] zabbix 3996 0.0 0.2 258836 2612 ? S 22:59 0:00 /usr/sbin/zabbix_server: icmp pinger #1 [got 0 values in 0.000003 sec, idle 5 sec] zabbix 3997 0.0 0.2 256260 2688 ? S 22:59 0:00 /usr/sbin/zabbix_server: alerter [sent alerts: 0 success, 0 fail in 0.000387 sec, idle 30 sec] zabbix 3998 0.0 0.2 256260 2468 ? S 22:59 0:00 /usr/sbin/zabbix_server: housekeeper [startup idle for 30 minutes] zabbix 3999 0.0 0.2 256340 2920 ? S 22:59 0:00 /usr/sbin/zabbix_server: timer #1 [processed 0 triggers, 0 events in 0.000056 sec, 0 maintenances in 0.000786 sec, idle 30 sec] zabbix 4000 0.0 0.2 256260 2824 ? S 22:59 0:00 /usr/sbin/zabbix_server: http poller #1 [got 0 values in 0.000397 sec, idle 5 sec] zabbix 4001 0.0 0.4 360620 5032 ? S 22:59 0:00 /usr/sbin/zabbix_server: discoverer #1 [processed 0 rules in 0.000294 sec, idle 60 sec] zabbix 4002 0.0 0.2 256260 2812 ? S 22:59 0:00 /usr/sbin/zabbix_server: history syncer #1 [synced 0 items in 0.000001 sec, idle 1 sec] zabbix 4003 0.0 0.2 256260 2812 ? S 22:59 0:00 /usr/sbin/zabbix_server: history syncer #2 [synced 0 items in 0.000001 sec, idle 1 sec] zabbix 4004 0.0 0.2 256260 2812 ? S 22:59 0:00 /usr/sbin/zabbix_server: history syncer #3 [synced 0 items in 0.000001 sec, idle 1 sec] zabbix 4005 0.0 0.2 256260 2812 ? S 22:59 0:00 /usr/sbin/zabbix_server: history syncer #4 [synced 0 items in 0.000001 sec, idle 1 sec] zabbix 4006 0.0 0.3 256260 3768 ? S 22:59 0:00 /usr/sbin/zabbix_server: escalator #1 [processed 0 escalations in 0.000717 sec, idle 3 sec] zabbix 4007 0.0 0.3 256260 3768 ? S 22:59 0:00 /usr/sbin/zabbix_server: proxy poller #1 [exchanged data with 0 proxies in 0.000002 sec, idle 5 sec] zabbix 4008 0.0 0.2 256260 2580 ? S 22:59 0:00 /usr/sbin/zabbix_server: self-monitoring [processed data in 0.000003 sec, idle 1 sec] zabbix 4009 0.0 0.2 256260 2800 ? S 22:59 0:00 /usr/sbin/zabbix_server: task manager [processed 0 task(s) in 0.000322 sec, idle 5 sec] root 4029 0.0 0.0 112684 976 pts/0 S+ 23:00 0:00 grep --color=auto zabbix [root@cham002 zabbix-server-mysql-3.2.11]# [root@cham002 zabbix-server-mysql-3.2.11]# !net 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:47755 0.0.0.0:* LISTEN 2447/rpc.statd tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 2448/rpc.mountd tcp 0 0 0.0.0.0:43862 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2443/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2646/master tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 3981/zabbix_server tcp6 0 0 :::3306 :::* LISTEN 2428/mysqld tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::80 :::* LISTEN 1286/httpd tcp6 0 0 :::20048 :::* LISTEN 2448/rpc.mountd tcp6 0 0 :::22 :::* LISTEN 2443/sshd tcp6 0 0 ::1:25 :::* LISTEN 2646/master tcp6 0 0 :::35905 :::* LISTEN - tcp6 0 0 :::2049 :::* LISTEN - tcp6 0 0 :::53154 :::* LISTEN 2447/rpc.statd tcp6 0 0 :::10051 :::* LISTEN 3981/zabbix_server
启动完成后查看其状态(ps、netstat),正常(服务端zabbix默认监听10051端口)!
配置web界面
使用浏览器访问server机器上的IP:192.168.230.135/zabbix(进行该操作前保证server已关闭防火墙)进入安装引导界面。

点击“Next step”进入检测界面:
错误: 此处有错误提示,意识是PHP无法识别“data.timezone”(时区)。

[root@cham002 ~]# vim /etc/php.ini date.timezone = Asia/Shanghai [root@cham002 ~]# systemctl restart httpd

刷新

点击“Next step”


确认信息

安装成功

admin
zabbix

更改密码、Administration/user

change password 顺带可以改变语言 点击 update

刷新一下就会变成中文了。这个就是zabbix的web界面了

19.5 忘记服务端zabbix管理员密码
如果忘记zabbix(web界面)管理员密码,可通过zabbix服务器的数据库进行密码更改!
[root@cham002 ~]# mysql -uroot -pchampin 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 379 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> 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 mysql> show tables; #看一看里面的表内容太多不复制。 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.02 sec) mysql> update users set passwd=md5('champin1') where alias='Admin'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 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 | f0601ca857f5ec53aa98ea2275fea007 | | 1 | 0 | zh_CN | 30 | 3 | default | 0 | 192.168.230.1 | 1517498390 | 50 | | 2 | guest | | | d41d8cd98f00b204e9800998ecf8427e | | 0 | 900 | en_GB | 30 | 1 | default | 0 | | 0 | 50 | +--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+---------------+---------------+---------------+ 2 rows in set (0.00 sec) mysql> quit Bye 现在就可以用新密码登录zabbix了。
19.6 zabbix客户端配置
在客户端安装zabbix
[root@test ~]# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm [root@test ~]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm [root@test ~]# yum install -y zabbix-agent [root@test ~]# vim /etc/zabbix/zabbix_agentd.conf Server=192.168.230.135 #指定服务端主机IP(设置客户端的监控主机白名单) ServerActive=192.168.230.135 #该参数决定监控的主动/被动模式 #如果只改参数Server,则只能采用被动模式(只能等待服务端来采集信息) #主动模式:客户端主动向服务端发送信息 Hostname=test145 #该参数用于设定客户端主机的名字,用于服务端添加监控服务 #如果服务端所监控的机器和其Hostname不一致,服务端将无法识别该机器 #因为zabbix是通过IP进行监控的,该参数不会对监控造成太大影响 #加上该参数有利于更好的辨别服务端监控是哪台主机的状态 [root@test ~]# systemctl start zabbix-agent [root@test ~]# ps aux |grep zabbix zabbix 54312 0.0 0.1 80592 1276 ? S 23:43 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf zabbix 54313 0.0 0.1 80592 1292 ? R 23:43 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec] zabbix 54314 0.0 0.1 80592 1832 ? S 23:43 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] zabbix 54315 0.0 0.1 80592 1836 ? S 23:43 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] zabbix 54316 0.0 0.1 80592 1836 ? S 23:43 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] zabbix 54317 0.0 0.2 80720 2216 ? S 23:43 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec] root 54320 0.0 0.0 112664 968 pts/1 R+ 23:43 0:00 grep --color=auto zabbix [root@test ~]# 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:22 0.0.0.0:* LISTEN 2355/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1994/master tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 54312/zabbix_agentd tcp6 0 0 :::3306 :::* LISTEN 9547/mysqld tcp6 0 0 :::21 :::* LISTEN 8833/vsftpd tcp6 0 0 :::22 :::* LISTEN 2355/sshd tcp6 0 0 ::1:25 :::* LISTEN 1994/master tcp6 0 0 :::10050 :::* LISTEN 54312/zabbix_agentd 计入开机启动 [root@test ~]# 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.
查看zabbix服务状态(ps、netstat),正常(客户端zabbix默认监听10050端口)!
19.7 主动模式和被动模式
•主动或者被动是相对客户端来讲的
• 被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端
• 主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。
• 当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。
• 服务端有公网ip,客户端只有内网ip,但却能连外网,这种场景适合主动模式
主动模式和被动模式所针对的对象是客户端,意思是客户端主动向服务端上报数据和由服务端到客户端采集数据。数据的提交时间在监控中心设置。
配置建议
采用主动模式可以减轻服务器的压力。
当服务端有公网IP,客户端只有内网IP但是可以连接外网(使用iptables的nat表规则实现),这种场景适合使用主动模式
19.8 添加监控主机
该配置在服务端的web界面监控中心进行。
配置选项介绍
登录到管理界面后操作如下:
- 主机群组:在此先创建主机群组,然后再添加要监控的机器到已有群组中。这样做的好处是,在不同的主机群组设置不同监控规则,然后可以把想要使用同样规则的主机添加到指定群组进行管理,避免为每台主机去配置规则。
- 模板:预设的监控项目集合(监控规则末班)
- 主机:在监控中的所有机器
开始配置
创建主机群组
然后再添加主机

此配置要客户端主机名称(在客户端zabbix配置文件:/etc/zabbix/zabbix_agentd.conf中的Hostname参数),该名称要和客户端配置文件中的名称一致;指定主机群组;指定客户端IP,如果该IP有对应的域名,则需要添加到“DNS名称”中,如果没有可以不填。有需要的话还可以进行模板、IPMI、宏等配置,配置完成后点击“添加”,跳转到主机列表:
参数解析:
- 应用集:监控项目的组集合
- 监控项:所有的监控项目
- 触发器:监控规则(不填规则颜色不同,会体现在首页主机状态中)
- 图形:根据监控历史数据绘制的图标
- 自动发现规则:zabbix自动监控的文件系统的信息、网卡信息(该部分自定义比较繁琐,所以使用自己动发现规则)
- Web场景:在此可设置对主机上的某个站点进行监控
19.9 添加自定义模板
在“模板”中自定义监控规则,然后应用到监控主机中,方便个性化管理。
添加模板的思路:创建模板——指定其所属模板组(也可以链接到其他模板)


添加完成后,在zabbix自带的监控模板template中(此处要对应监控主机系统版本)为自定义模板添加监控项目,点击“监控项目”,选择要监控的项目,然后“复制”到模板“adai”中。

注意: 在此需要选择目标类型!!!
复制完成后查看模板“test1”:
配置“自动发现规则” :
此处没有“复制”选项,那么该如何将该规则添加到自定义模板中呢?方法如下:
- 删除模板adai中的所有监控项,然后使用“链接的模板”,“选择”要链接到的模板,然后“添加”,添加完成后点“更新”:

更新完成后,所链接的模板的规则就应用到adai中,但是在该模板下不能直接删除监控项目,原因是该项目下所有规则都是链接到template os Linux中的,需要在链接模板选项下设置“取消链接”——“更新”,然后才能对adai中的监控项目等选项进行编辑。

说明: 应用集中包含了所有的监控项,所以只有先删除监控项之后才能删除应用集(应用集列表中监控项数目为0的可以直接删除);触发器是设定的监控项目对应的规则,不能删;图形根据需求删选;这样自动发现规则就添加到自定义模板中。
- 将template os Linux模板导出,在此会生成一个XML文件,然后编辑该文件,编辑完成后再导入模板列表(一定要记得改模板名称)。。。(该方法工作量太大,不建议使用)
模板配置完成后就可以在监控主机中进行引用了,应用后再进行更加细化的配置。
19.10 处理图形中的乱码
将自定义模板应用到监控主机adai-02中:
主机——模板——选择——添加——更新
设置完成后查看图形——预览,发现图形界面下有乱码:

如何解决此问题呢?
- Why:字符集(已配置,排除该原因);像图中这种有规律的“乱码”不是字符集问题,而是缺少相应的字库(中文字库)。
- 解决办法:
编辑服务端配置文件:
[root@cham002 ~]# vim /usr/share/zabbix/include/defines.inc.php [1]+ 已停止 vim /usr/share/zabbix/include/defines.inc.php #在该文件下搜ZBX_FONTPATH #在参数“define 'ZBX_FONTPATH'”下定义的是相对/usr/share/zabbix/的相对路径 #相对路径下是指定的字库 graphfont.ttf 查看字库文件: [root@cham002 ~]# ls /usr/share/zabbix/fonts/ graphfont.ttf [root@cham002 ~]# ls -l !$ ls -l /usr/share/zabbix/fonts/ 总用量 0 lrwxrwxrwx 1 root root 33 1月 25 01:24 graphfont.ttf -> /etc/alternatives/zabbix-web-font [root@cham002 ~]# ls -l /etc/alternatives/zabbix-web-font lrwxrwxrwx 1 root root 38 1月 25 01:24 /etc/alternatives/zabbix-web-font -> /usr/share/fonts/dejavu/DejaVuSans.ttf [root@cham002 ~]# fg vim /usr/share/zabbix/include/defines.inc.php [1]+ 已停止 vim /usr/share/zabbix/include/defines.inc.php [root@cham002 ~]# ls /root/STKAITI.TTF /root/STKAITI.TTF [root@cham002 ~]# mv /root/STKAITI.TTF /usr/share/zabbix/fonts/ [root@cham002 ~]# cd !$ cd /usr/share/zabbix/fonts/ [root@cham002 fonts]# ls graphfont.ttf STKAITI.TTF [root@cham002 fonts]# mv graphfont.ttf graphfont.ttf.bak ; ln -s STKAITI.TTF graphfont.ttf [root@cham002 fonts]# ls -l 总用量 12440 lrwxrwxrwx 1 root root 11 2月 2 00:34 graphfont.ttf -> STKAITI.TTF lrwxrwxrwx 1 root root 33 1月 25 01:24 graphfont.ttf.bak -> /etc/alternatives/zabbix-web-font -rw-r--r-- 1 root root 12736196 2月 2 00:31 STKAITI.TTF
之所以图形界面显示乱码是因为该字库不支持中文字体,解决办法是将该字库软链接到一个支持中文的字库中,在此我们将其链接到Windows中文字库:
打开计算机字库文件目录C:\Windows\Fonts——复制一款中文字体到桌面——上传到虚拟机——将该文件移动到:/usr/share/zabbix/fonts/——然后更改该文件名为zabbix所链接的字库名称graphfont.ttf:

显示正常!!!
19.11 自动发现
更改自动发现规则监控时间间隔:
打开规则:
更改数据更新间隔,重启服务端和客户端zabbix服务,查看监控效果,也可以传一些数据看看:

在实际应用中时间间隔不要设置太短,一面增加服务器压力。
更改图形界面颜色
在模板——自发现规则——图形原型中更改: