1.监控概述
1.1 监控概述
1.1.1 监控的目的
- 报告系统运行状况
每一部分必须同时监控
内容包括吞吐量、反应时间、使用率等
- 提前发现问题
进行服务器性能调整前,知道调整什么
找出系统的瓶颈在什么地方
1.1.2 监控的资源类别
- 公开数据
Web、FTP、SSH、数据库等应用服务
TCP或UDP端口
- 私有数据
CPU、内存、磁盘、网卡流量等使用信息
用户、进程等运行信息
1.1.3 系统监控命令
ps(查看进程信息) uptime(查看CPU负载(1,5,15分钟)
free(查看内存信息) swapon -s(查看交换分区信息)
df -h(查看所有磁盘的使用率) ss -antup (查看所有的网络连接信息)
ifconfig(查看网卡信息) netstat或ss(查看端口信息) ping
traceroute (路由追踪)
iostat (查看磁盘信息)-->%iowait(数字越大越不好)
1.1.4 自动化监控系统
- Cacti
基于SNMP协议的监控软件,强大的绘图能力
- Nagios
基于Agent监控,强大的状态检查与报警机制
插件极多,自己写监控脚本潜入到Nagios非常方便
- Zabbix
基于多种监控机制,支持分布式监控
1.1.5 zabbix具有的监控功能
- 具备常见的商业监控软件所具备的功能
- 主机性能监控、网络设备监控、数据库监控等
- 支持多种报警机制
- 支持自动发现网络设备和服务器
- 可以通过配置自动发现服务器规则来实现
- 支持分布式,能集中展示、管理分布式的监控点
- 编写插件容易,可以自定义监控项
- 具有实时绘图功能
1.1.6 监控拓扑
- 监控服务器
监控服务器可以通过SNMP或Agent采集数据
数据可以写入mysql、oracle等数据库中
服务器使用LNMP实现web前端的管理
2.zabbix基础
2.1 zabbix介绍
- zabbix是一个高度集成的监控解决方案
- 可以实现企业级的开源分布式监控
- zabbix通过C/S模式采集监控数据
- zabbix通过B/S模式实现web管理
监控拓扑
- 监控服务器
监控服务器可以通过SNMP或Agent采集数据
数据可以写入mysql、oracle等数据库中
服务器使用LNMP实现web前端的管理 - 被监控主机
被监控主机需要安装Agent
常见的网络设备一般支持SNMP
2.2 部署LNMP(关闭防火墙、SELinux)
2.2.1 安装nginx及其依赖包
[student@room9pc01 ~]$ scp -r /linux-soft/03/Zabbix/ root@192.168.2.5:/root
[root@zabbix1 ~]# yum -y install gcc zlib-devel openssl-devel pcre-devel
[root@zabbix1 ~]# yum -y install php-fpm php php-mysql
[root@zabbix1 ~]# yum -y install mariadb mariadb-devel mariadb-server
[root@zabbix1 ~]# cd Zabbix/
[root@zabbix1 Zabbix]# tar -xf nginx-1.12.2.tar.gz
[root@zabbix1 Zabbix]# cd nginx-1.12.2/
[root@zabbix1 nginx-1.12.2]# ./configure --with-http_ssl_module
[root@zabbix1 nginx-1.12.2]# make && make install
2.2.2 修改nginx配置
[root@zabbix1 ~]# vim /usr/local/nginx/conf/nginx.conf
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
:wq
2.2.5 启动服务
[root@zabbix1 ~]# /usr/local/nginx/sbin/nginx
[root@zabbix1 ~]# netstat -ntlup | grep :80
[root@zabbix1 ~]# systemctl restart php-fpm
[root@zabbix1 ~]# netstat -ntlup | grep :9000
[root@zabbix1 ~]# systemctl restart mariadb
[root@zabbix1 ~]# netstat -ntlup | grep :3306
2.2.4 测试页面
[root@zabbix1 ~]# vim /usr/local/nginx/html/test.php
<?php
$i=33;
echo $i;
?>
[root@zabbix1 ~]# curl 192.168.2.5/test.php
2.3 安装源码zabbix软件
[root@zabbix1 ~]# yum -y install net-snmp-devel curl-devel libevent-devel
[root@zabbix1 ~]# cd Zabbix/
[root@zabbix1 Zabbix]# tar -xf zabbix-3.4.4.tar.gz
[root@zabbix1 Zabbix]# cd zabbix-3.4.4/
[root@zabbix1 zabbix-3.4.4]# ./configure
--enable-server #--enable-server安装部署zabbix服务器端软件
--enable-proxy #--enable-proxy安装部署zabbix代理相关软件
--enable-agent #--enable-agent安装部署zabbix被监控端软件
--with-mysql=/usr/bin/mysql_config #--with-mysql配置mysql_config路径
--with-net-snmp #--with-net-snmp允许zabbix通过snmp协议监控其他设备
--with-libcurl
#--with-libcurl安装相关curl库文件,这样zabbix就可以通过curl连接http等服务,测试被监控主机服务的状态
[root@zabbix1 Zabbix]# make && make install
2.4 创建存储数据的库表及连接用户
[root@zabbix1 ~]# mysql
MariaDB [(none)]> create database zabbix character set utf8; #创建数据库,支持中文字符集
MariaDB [(none)]> grant all on zabbix.* to zabbix@"localhost" identified by "zabbix";
MariaDB [(none)]> exit #创建可以访问数据库的账户与密码
[root@zabbix1 ~]# cd Zabbix/zabbix-3.4.4/
[root@zabbix1 zabbix-3.4.4]# ls
[root@zabbix1 zabbix-3.4.4]# cd database/mysql/
[root@zabbix1 mysql]# ls
[root@zabbix1 mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql
[root@zabbix1 mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@zabbix1 mysql]# mysql -uzabbix -pzabbix zabbix < data.sql
#使用mysql导入这些数据即可(注意导入顺序)
[root@zabbix1 ~]# cd Zabbix/zabbix-3.4.4/frontends/php/
[root@zabbix1 php]# cp -a * /usr/local/nginx/html/
[root@zabbix1 php]# chmod -R 777 /usr/local/nginx/html/*
2.5 做初始化准备
2.5.1 修改nginx服务运行参数
[root@zabbix1 ~]# 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; #读取请求的超时时间
...
}
:wq
[root@zabbix1 ~]# /usr/local/nginx/sbin/nginx -s stop
[root@zabbix1 ~]# /usr/local/nginx/sbin/nginx
[root@zabbix1 ~]# netstat -ntlup | grep :80
2.5.2 安装依赖软件包
[root@zabbix1 ~]# yum -y install php-mbstring php-gd php-ldap php-xml php-bcmath
2.5.3 修改php.ini配置文件
[root@zabbix1 ~]# vim /etc/php.ini
date.timezone = Asia/Shanghai #设置时区
max_execution_time = 300 #最大执行时间,秒
post_max_size = 32M #POST数据最大容量
max_input_time = 300 #服务器接收数据的时间限制
2.5.4 启动php-fpm服务
[root@zabbix1 ~]# systemctl restart php-fpm
[root@zabbix1 ~]# tail -f /usr/local/nginx/logs/error.log #动态查看错误日志
2.6.1 欢迎页面
[student@room9pc01 ~]$ firefox http://192.168.2.5/index.php(确定都是OK的状态)
2.7 登陆管理页面
2.8 启动zabbix监控服务
2.8.1 修改配置文件
[root@zabbix1 ~]# vim /usr/local/etc/zabbix_server.conf
12 # ListenPort=10051 #默认端口
38 LogFile=/tmp/zabbix_server.log #设置日志文件
85 # DBHost=localhost #数据库主机
95 DBName=zabbix #设置数据库名称
111 DBUser=zabbix #设置数据库账号
119 DBPassword=zabbix #设置数据库密码
:wq
2.8.2 启动服务
[root@zabbix1 ~]# zabbix_server
zabbix_server [3864]: user zabbix does not exist
zabbix_server [3864]: cannot run as root!
[root@zabbix1 ~]# useradd zabbix #不创建用户无法启动服务
[root@zabbix1 ~]# zabbix_server #启动服务
[root@zabbix1 ~]# killall -9 zabbix_server #停止服务
2.8.3 查看服务信息
[root@zabbix1 ~]# netstat -ntlup | grep :10051
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 3879/zabbix_server
3.zabbix监控服务
3.1 监控远端主机
3.1.1 配置客户端(被监控主机)192.168.2.100
- 安装软件
[student@room9pc01 ~]$ scp -r /linux-soft/03/Zabbix/ root@192.168.2.100:/root
[root@web1 ~]# yum -y install gcc pcre-devel
[root@web1 ~]# cd Zabbix/
[root@web1 Zabbix]# tar -xf zabbix-3.4.4.tar.gz
[root@web1 Zabbix]# cd zabbix-3.4.4/
[root@web1 zabbix-3.4.4]# ./configure --enable-agent
[root@web1 zabbix-3.4.4]# make install
[root@web1 zabbix-3.4.4]# ls /usr/local/etc/
zabbix_agentd.conf zabbix_agentd.conf.d
[root@web1 zabbix-3.4.4]# ls /usr/local/bin/
eip setip zabbix_get zabbix_sender
[root@web1 zabbix-3.4.4]# ls /usr/local/sbin
zabbix_agentd
-
修改配置文件
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf 93 Server=127.0.0.1,192.168.2.5 #允许访问服务地址列表 101 # ListenPort=10050 134 ServerActive=192.168.2.5:10051 #监控服务器Ip地址 30 LogFile=/tmp/zabbix_agentd.log #日志文件 :wq
-
启动服务
[root@web1 ~]# zabbix_agentd zabbix_agentd [8397]: user zabbix does not exist zabbix_agentd [8397]: cannot run as root [root@web1 ~]# useradd zabbix [root@web1 ~]# zabbix_agentd #启动服务
-
查看服务状态
[root@web1 ~]# netstat -ntlup | grep :10050 [root@web1 ~]# killall -9 zabbix_agentd
3.1.2 配置监控服务器192.168.2.5
- 管理员admin登陆web页面 做如下操作:
1. 添加监控主机
配置—>主机–>创建主机(主机名称,可见的名称、新的群组、agent代理程序的接口)–>添加
2. 选择监控模板
配置–>主机–>名称–>模板–>选择(Template App HTTP Service、Template OS Linux)–>添加–>更新
3.查看监控数据
监测中–>最新数据–>主机群组–>主机–应用集–>应用
安装httpd启动服务
3.2 自定义监控项(在客户端定义监控命令.给监控服务器使用)
3.2.1 配置客户端 192.168.2.100
- 允许自定义监控命令
[root@web1 ~]# wc -l /etc/passwd | awk '{print $1}'
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
264 Include=/usr/local/etc/zabbix_agentd.conf.d/
280 UnsafeUserParameters=1
:wq
-
定义监控命令
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/count.line.passwd UserParameter=count.line.passwd,wc -l /etc/passwd | awk '{print $1}' :wq
-
重启服务
[root@web1 ~]# killall -9 zabbix_agentd [root@web1 ~]# zabbix_agentd
-
测试定义的监控命令
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k count.line.passwd(不需要绝对路径) 22 [root@web1 ~]# useradd lala [root@web1 ~]# zabbix_get -s 127.0.0.1 -k count.line.passwd 23 [root@web1 ~]# userdel lala [root@web1 ~]# zabbix_get -s 127.0.0.1 -k count.line.passwd 22
3.2.2 配置服务器 192.168.2.5
管理员登陆web页面做如下配置:-
创建新模板 ATMP
配置–>模板–>创建模板(模版名称、可见的名称、新的群组)–>添加 -
创建新应用集 mon_users
配置–>模板–>应用集–>创建应用集(名称)–>添加 -
创建新监控项 mon_web100_user
配置–>模板–>监控项–>创建监控项(名称、键值、信息类型、应用集)–>添加 -
监控主机100使用新创建的模板 ATMP
配置–>主机–>名称–>模板–>选择–>添加–>更新 -
查看监控数据
监测中–>最新数据–>主机群组–>主机–应用集–>应用 -
删除模板
配置->主机–>模板–>取消链接并清除…
-