19.1 linux监控平台搭建
常见监控软件:
cacti、nagios、zabbix、smokeping、open-falcon
其中nagios和zabbix流行度非常高;
cacti、smokeping倾向于基础监控,成图漂亮,常被用于监控网络设备;
zabbix比nagios有更多优势,配置更简单;
open-falcon由小米公司基于zabbix开发,并将该监控软件共享出来,使其变成一个开源软件;
有很多大企业在使用open-falcon;
nagios、zabbix、cacti等监控软件都支持使用web界面管控;
zabbix在web界面下管理的更彻底,用户可以增加监控节点、配置具体监控项目和报警阈值,操作方便,nagios需要修改配置文件,比较繁琐;
nagios注重于某个监控的状态(正常/不正常),不需要关注历史,zabbix需要抓到每一次统计的项目的数值,数值会被存入数据库,用户可以利用这些历史数值画图形成图表;
nagios不需要mysql等数据库的支持,zabbix需要mysql等数据库支持;
cacti也需要mysql等数据库支持,也可以记录历史数据并成图;
以上几款软件的web界面均需要php环境支持,用户可以使用apache+php或nginx+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
两台机器(server和client)都需要下载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即为刚才安装zabbix的rpm包时安装的一个文件
有了刚刚安装的新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 zabbix的web界面
zabbix-web-mysql 安装web与mysql交互的一些文件
以上为服务端安装的文件,客户端仅安装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自带的原始数据:
有这些数据zabbix在web界面下才能正常工作
[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-server和httpd均正常启动后,打开浏览器访问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指定的alias的passwd:
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 下载并安装zabbix的yum源
[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则只能使用客户端的被动模式,编辑Server和ServerActive则客户端的主动和被动模式均可使用;
[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