文章目录
监控概述
监控的目的
- 报告系统运行状态
–每一部分必须同时监控
–内容包括吞吐量、反应时间、使用率等 - 提前发现问题
–进行服务器性能调整前,知道调整什么
–找出系统的瓶颈在什么地方
监控的资源类别
- 公开数据
–Web,FTP,SSH数据库等应用服务
–TCP或UDP端口 - 私有数据
–CPU,内存,磁盘,网卡流量等使用信息
–用户,进程等运行信息
监控软件
系统监控命令
ps
ifconfig
uptime
netstat或ss
free
ping
swapon -s
traceroute
df -h
iostat
自动化监控系统
- Cacti
–基于SNMP(简单的网络管理协议,端口161)协议的监控软件,强大的绘图能力 - Nagios
–基于Agent监控,强大的状态检查与报警机制
–插件极多,自己写监控脚本潜入到Nagios非常方便 - Zabbix
–基于多种监控机制,支持分布式监控
Zabbix基础
Zabbix简介
- Zabbix是一个高度集成的监控解决方案
- 可以实现企业级的开源分布式监控
- Zabbix通过C/S模式采集监控数据
- Zabbix通过B/S模式实现Web管理
监控拓扑
- 监控服务器
–监控服务器可以通过SNMP或Agent采集数据
–数据可以写入MySQL、Oracle等数据库中
–服务器使用LNMP实现web前端的管理 - 被监控主机
–被监控主机需要安装Agent
–常见的网络设备一般支持SNMP
部署LNMP
安装前准备
监控服务器:192.168.2.5,关闭防火墙和selinux
监控客户端:192.168.2.100,192.168.2.200,关闭防火墙和Selinux
部署LNMP
- 安装nginx及其依赖包
Zabbix监控管理控制台需要通过Web页面展示出来,并且还需要使用MySQL来存储数据,因此需要先为Zabbix准备基础LNMP环境。
yum -y install gcc pcre-devel openssl-devel
tar -xf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure --with-http_ssl_module
make && make install
yum -y install php php-mysql php-fpm \
> mariadb mariadb-devel mariadb-server
- 修改Nginx配置文件
配置Nginx支持PHP动态网站,因为有大量PHP脚本需要执行,因此还需要开启Nginx的各种fastcgi缓存,加速PHP脚本的执行速度。
vim /usr/local/nginx/conf/nginx.conf
......
http{
......
fastcgi_buffers 8 16k; #缓存php生成的页面内容,8个16k
fastcgi_buffer_size 32k; #缓存php生产的头部信息
fastcgi_connect_timeout 300; #连接PHP的超时时间
fastcgi_send_timeout 300; #发送请求的超时时间
fastcgi_read_timeout 300; #读取请求的超时时间
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
- 启动服务
启动Nginx、PHP-FPM、MariaDB服务,关闭SELinux与防火墙。
systemctl start mariadb
systemctl start php-fpm
/usr/local/nginx/sbin/nginx /sbin/nginx
firewall-cmd --set-default-zone=trusted
setenforce 0
- 客户端测试LNMP环境
服务器创建PHP测试页面,浏览器访问页面测试网页连通性。
cat /usr/local/nginx/html/test.php
<?php
$i=33;
echo $i;
?>
curl http://192.168.2.5/test.php
部署Zabbix
- 源码安装Zabbix Server
多数源码包都是需要依赖包的,zabbix也一样,源码编译前需要先安装相关依赖包。
yum -y install net-snmp-devel curl-devel \
> libevent-devel-2.0.21-4.el7.x86_64.rpm #安装相关依赖包
tar -xf zabbix-3.4.4.tar.gz
cd zabbix-3.4.4/
./configure --enable-server \
> --enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config \
> --with-net-snmp --with-libcurl
# --enable-server安装部署zabbix服务器端软件
# --enable-agent安装部署zabbix被监控端软件
# --enable-proxy安装部署zabbix代理相关软件
# --with-mysql配置mysql_config路径
# --with-net-snmp允许zabbix通过snmp协议监控其他设备
# --with-libcurl安装相关curl库文件,这样zabbix就可以通过curl连接http等服务,测试被监控主机服务的状态
make && make install
ls /usr/local/etc
ls /usr/local/bin
ls /usr/local/sbin
- 初始化Zabbix
创建数据库,上线Zabbix的Web页面
mysql
mysql> create database zabbix character set utf8; #创建数据库,支持中文字符集
mysql> grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix';
#创建可以访问数据库的账户与密码
cd lnmp_soft/zabbix-3.4.4/database/mysql/
mysql -uzabbix -pzabbix zabbix < schema.sql
mysql -uzabbix -pzabbix zabbix < images.sql
mysql -uzabbix -pzabbix zabbix < data.sql
#刚刚创建是空数据库,zabbix源码包目录下,有提前准备好的数据
#使用mysql导入这些数据即可(注意导入顺序)
- 上线Zabbix的Web页面
cd lnmp_soft/zabbix-3.4.4/frontends/php/
cp -r * /usr/local/nginx/html/
chmod -R 777 /usr/local/nginx/html/*
- 修改Zabbix_server配置文件,启动Zabbix_server服务
vim /usr/local/etc/zabbix_server.conf
DBHost=localhost #数据库主机,默认该行被注释
DBName=zabbix #设置数据库名称
DBUser=zabbix #设置数据库账户
DBPassword=zabbix #设置数据库密码,默认该行被注释
LogFile=/tmp/zabbix_server.log #设置日志,仅查看以下即可
--------------------
useradd -s /sbin/nologin zabbix #不创建用户无法启动服务
zabbix_server #启动服务
ss -ntulp |grep zabbix_server #确认连接状态,端口10051
提示:如果是因为配置文件不对,导致服务无法启动时,不要重复执行zabbix_server,
一定要先使用killall zabbix_server关闭服务后,再重新启动一次。
- 访问Zabbix_server服务器的Web页面
firefox http://192.168.2.5/index.php
#第一次访问,初始化PHP页面会检查计算机环境是否满足要求,如果不满足会给出修改建议
#默认会提示PHP的配置不满足环境要求,需要修改PHP配置文件
根据错误提示,修改PHP配置文件,满足Zabbix_server的Web环境要求
yum -y install php-gd php-xml php-ldap \
php-bcmath php-mbstring
vim /etc/php.ini
date.timezone = Asia/Shanghai #设置时区
max_execution_time = 300 #最大执行时间,秒
post_max_size = 32M #POST数据最大容量
max_input_time = 300 #服务器接收数据的时间限制
memory_limit = 128M #内存容量限制
修改完PHP配置文件后,再次使用浏览器访问服务器,则会提示如下图所示的提示信息。
注意:这里有一个PHP LDAP是warning状态是没有问题的!
在初始化数据库页面,填写数据库相关参数,如下图所示。
在登陆页面,使用用户(admin)和密码(zabbix)登陆
Zabbix监控服务
部署被监控主机Zabbix Agent
2.100和2.200做相同操作:
- 源码安装Zabbix agent软件
useradd -s /sbin/nologin zabbix
yum -y install gcc pcre-devel
tar -xf zabbix-3.4.4.tar.gz
cd zabbix-3.4.4/
./configure --enable-agent
make && make install
ls /usr/local/etc
ls /usr/local/bin
ls /usr/loca/sbin
- 修改agent配置文件,启动Agent
vim /usr/local/etc/zabbix_agentd.conf
Server=127.0.0.1,192.168.2.5 #谁可以监控本机(被动监控模式)
ServerActive=127.0.0.1,192.168.2.5 #谁可以监控本机(主动监控模式)
LogFile=/tmp/zabbix_agentd.log #日志文件
Hostname=zabbixclient_web1 #被监控端自己的主机名
EnableRemoteCommands=1 #监控异常后,是否允许服务器远程过来执行命令,如重启某个服务
UnsafeUserParameters=1 #是否允许自定义key监控
- 拷贝启动脚本(非必须操作,可选做)
有启动脚本可以方便管理服务,启动与关闭服务。启动脚本位于zabbix源码目录下。
cd misc/init.d/fedora/core
cp zabbix_agentd /etc/init.d/
/etc/init.d/zabbix_agentd start
/etc/init.d/zabbix_agentd stop
/etc/init.d/zabbix_agentd status
/etc/init.d/zabbix_agentd restart
配置及使用Zabbix监控系统
添加监控主机
使用火狐浏览器登录http://192.168.2.5,通过Configuration(配置)–>Hosts(主机)–>Create Host(创建主机)添加被监控Linux主机
添加被监控主机时,需要根据提示输入被监控Linux主机的主机名称(最好与电脑的主机名一致,但也允许不一致)、主机组、IP地址等参数
为被监控主机添加监控模板
Zabbix通过监控模板来对监控对象实施具体的监控功能,根据模板来定义需要监控哪些数据,对于Linux服务器的监控,Zabbix已经内置了相关的模板(Template OS Linux),选择模板并链接到主机即可
查看监控数据
查看监控数据,登录Zabbix Web控制台,点击Monitoring(监控中)—> Latest data(最新数据),正过滤器中填写过滤条件,根据监控组和监控主机选择需要查看哪些监控数据
找到需要监控的数据后,可以点击后面的Graph查看监控图形
自定义监控
自定义监控项:
在被监控的客户端本机编写脚本给监控服务器调用
配置步骤
配置客户端:
- 启用自定义监控项
修改配置文件:
vim /usr/local/etc/zabbix_agentd.conf
include=/usr/local/etc/zabbix_agentd.conf.d/
#加载配置文件目录
UnsafeUserParameters=1 #是否允许自定义key
- 定义监控命令
命令格式:UserParameter=<key>,<shell command>
cd /usr/local/etc/zabbix_agentd.conf.d/
vim get_sum_users.conf #配置名和后缀随意
UserParameter=get_sum_users,wc -l /etc/passwd|awk '{print $1}'
#统计当前系统用户个数
- 重启zabbix_agentd服务
killall zabbix_agentd
zabbix_agentd
- 测试命令
zabbix_get -s 127.0.0.1 -k get_sum_users
24
如提示Check access restrictions in Zabbix agent configuration
请检查配置文件
vim /usr/loca/etc/zabbix_agentd.conf
Server=127.0.0.1,192.168.2.5
ServerActive=127.0.0.1,192.168.2.5
配置监控服务器:
在登录管理页面做如下配置:
-
创建监控模板
登录Zabbix Web监控控制台,通过Configuration(配置)–>Template(模板)–>Create template(创建模板),填写模板名称,新建模板群组
创建模板后,默认模板中没有任何应用、项目、触发器、图形等
-
创建应用集
创建完成模板后,默认模板中没有任何应用、项目、触发器、图形等资源。这里需要点击模板后面的Application(应用集)链接打开创建应用的页面
点击Application(应用集)后,会刷新页面,在该页面中点击Create application(创建应用集)按钮。
设置应用名称
-
创建监控项
与创建应用一样,在模板中还需要创建监控项目,并在刷新出的新页面中选择Create items(创建监控项)创建项目
-
调用新建的模板监控客户端
将完整的监控模板制作完成后,就可以将模板链接到主机实现监控功能了。首先找到被监控主机Configuration(配置)–>Hosts(主机)
主被动监控
概述
- 主动和被动都是对被监控端主机而言的
- 默认zabbix采用的是被动监控
– 被动监控:Server向Agent发送连接,发送监控key,Agent接受请求,相应监控数据
– 主动监控:Agent向Server发送连接,Agent请求需要检测的监控项目列表,Server相应Agent发送一个items列表,Agent确认收到监控列表,TCP连接完成,回话关闭,Agent开始周期性地收集数据 - 区别
– Server不用每次需要数据都连接Agent,Agent会自己收集数据并处理数据,Server仅需要保存数据即可 - 当监控主机达到一定量级后,Zabbix服务器会越来越慢
- 此时,可以考虑使用主动监控,释放服务器的压力
- 另外,Zabbix也支持分布式监控,也是可以考虑的方案
客户端配置
创建新的被监控主机(主动监控)
- 给192.168.2.201安装Zabbix_agent软件
yum -y install gcc pcre-devel
tar -xf zabbix-3.4.4.tar.gz
cd zabbix-3.4.4/
./configure --enable-agent
make && make install
修改配置文件(主动监控)
vim /usr/local/etc/zabbix_agentd.conf
#Server=127.0.0.1,192.168.2.5
#注释该行,允许谁监控本机
StartAgents=0
#被动监控时启动多个进程
#设置为0,则禁止被动监控,不启动zabbix_agentd服务
ServerActive=192.168.2.5
#允许哪些主机监控本机(主动模式),一定要取消127.0.0.1
Hostname=zabbixclient_web2
#告诉监控服务器,是谁发的数据信息
#一定要和zabbix服务器配置的监控主机名称一致(后面设置)
RefreshActiveChecks=120
#默认120秒检测一次
UnsafeUserParameters=1
#允许自定义key
Include=/usr/local/etc/zabbix_agentd.conf.d/
killall zabbix_agentd
zabbix_agentd
创建主动监控的监控模板
- 克隆Zabbix自动的监控模板
为了方便,克隆系统自带模板(在此基础上就该更方便)。
通过Configuration(配置)–>Templates(模板)–>选择Template OS Linux
–>全克隆,克隆该模板,新建一个新的模板。如图-24所示。
新模板名称为:Template OS Linux ServerActive。
- 修改模板中的监控项目的监控模式
将模板中的所有监控项目全部修改为主动监控模式,通过Configuration(配置)–>Templates(模板)–>选择新克隆的模板,点击后面的Items(监控项)–>点击全选,选择所有监控项目,点击批量更新,将类型修改为:Zabbix Agent(Active主动模式)
- 禁用部分监控项目
批量修改监控项的监控模式后,并非所有监控项目都支持主动模式,批量修改后,会发现有几个没有修改主动模式成功,说明,这些监控项目不支持主动模式,关闭即可。
添加监控主机
- 手动添加监控主机(主动模式监控)
在Zabbix监控服务器,添加被监控的主机(主动模式),设置主机名称:zabbixclient_web2 (必须与被监控端的配置文件Hostname一致),将主机添加到Linux servers组,IP地址修改为0.0.0.0,端口设置为0
为主机添加监控模板,选择刚刚创建的模板(主动模式),添加链接模板到主机