一、为什么要监控
运维的职责:
1.保障企业数据的安全可靠。
2.为客户提供7*24小时服务。
3.不断提升用户的体验。
监控就是在关键时刻,提前提醒我们服务器要出问题了,当出问题之后,可以便于找到问题的根源。
二、常用的监控命令
CPU监控命令:top,vmstat,cat /pro/cpuinfo
内存监控命令:top,free,iotop
磁盘IO:iotop,iostat(软件包名称sysstat)
查看raid信息:megacli
查看硬件信息:ipmitools
带宽监控命令:iftop,nethogs
常见端口监控命令:telnet,ss,netstat,lsof,nc,nmap
三、监控什么
1. 利用OSI/IOS7层协议
应用层:监控协议http/https/ssh 如nginx mysql rsync tomcat(进程,URL地址、服务是否正常使用)
表示层:表示层
会话层:会话层
传输层:监控TCP/UDP端口
网络层:IP地址,一般监控带宽的延迟
数据链路层:MAC地址,一般监控交换机,路由器等,一般都是基于SNMP协议进行监控的
物理层:监控设备中的CPU温度、内存、硬盘容量、磁盘IO、RAID、负载等
2. 监控用户访问网站的流程:
DNS解析流程:查看世界各地访问网站的的情况,可以说通过http://ping.chinaz.com 进行测试
TCP/IP三次握手:监控服务器的连接状态
HTTP请求:会话层
HTTP响应:TCP/UDP端口,主要用来分析日志
TCP/IP四次挥手:监控服务器的连接状态
3.监控的数据一般分为以下四类:
1)系统本地资源:负载(uptime)、CPU(top,sar)、磁盘(df -hi)、内存(free)、I/O(iostat)、Raid内磁盘故障、CPU温度、passwd文件的变化、本地所有文件的改动
2)网络服务:端口、Web(URL)、DB、ping包、进程、IDC带宽网络流量
3)其他设备:路由器、交换机(端口、光衰、日志)、打印机、Windows等
4)业务数据:用户登录失败次数、用户登录网站次数、输入验证码失败次数、某个API接口流量并发、网络连接数、IP、PV数、电商网站订单、支付交易的数量等。
四、监控工具
mrtg 流量监控出图
nagios 监控平台
cacti 流量监控出图
zabbix 监控+出图,所有监控范畴,都可以整合到Zabbix中。
硬件监控:Zabbix IPMI Interface
系统监控:Zabbix Agent Interface
Java监控:Zabbix JMX Interface
网络设备监控:Zabbix SNMP Interface
应用服务监控:Zabbix Agent UserParameter
MySQL数据库监控:percona-monitoring-plulgins
URL监控:Zabbix Web 监控
五、zabbix介绍
官网:http://www.zabbix.com/
zabbix(音同 zæbix)是一个基于WEB界面的,提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
六、zabbix部署
第一个里程:安装服务端软件包
安装zabbix的官方源
[root@m01 ~]# rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
Retrieving https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
warning: /var/tmp/rpm-tmp.QbkcYz: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing... ################################# [100%]
package zabbix-release-4.0-1.el7.noarch is already installed
更改一下yum内的地址
将:/etc/yum.repo.s/zabbix.repo内的 http://repo.zabbix.com/ 替换为: https://mirrors.aliyun.com/zabbix/
sed -i 's#http://repo.zabbix.com/#https://mirrors.aliyun.com/zabbix/#g' /etc/yum.repos.d/zabbix.repo
清除yum缓存
[root@m01 ~]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base epel extras updates zabbix zabbix-non-supported
Cleaning up list of fastest mirrors
重新生成缓存
[root@m01 ~]# yum repolist
安装zabbix,httpd,php
[root@m01 ~]# yum install zabbix-server-mysql zabbix-web-mysql httpd php -y
第二个里程:安装数据库
# 安装mariadb
[root@m01 ~]# yum -y install mariadb-server
[root@m01 ~]# rpm -qa |grep mariadb*
mariadb-libs-5.5.65-1.el7.x86_64
mariadb-5.5.65-1.el7.x86_64
mariadb-server-5.5.65-1.el7.x86_64
[root@m01 ~]# systemctl start mariadb.service
# 创建数据库,权限
mysql
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
quit
# 导入数据库sql文件
[root@m01 ~]# zcat /usr/share/doc/zabbix-server-mysql-4.0.21/create.sql.gz |mysql -uzabbix -pzabbix zabbix
查看导入的数据
mysql
show databases;
use zabbix;
show tables;
第三个里程:配置zabbix server
#修改配置文件,将DBPassword=修改成DBPassword=zabbix
[root@m01 ~]# vim /etc/zabbix/zabbix_server.conf
[root@m01 ~]# grep -n "DBPassword=" /etc/zabbix/zabbix_server.conf
124:DBPassword=zabbix
#修改apache-php配置文件,在配置文件中添加php_value date.timezone Asia/Shanghai'
[root@m01 ~]# sed -i.ori '18a php_value date.timezone Asia/Shanghai' /etc/httpd/conf.d/zabbix.conf
第四个里程:启动zabbix服务
[root@m01 ~]# systemctl start zabbix-server
[root@m01 ~]# systemctl start httpd
第五个里程:访问网页进行配置
http://10.0.0.61/zabbix
第六个里程:配置中文显示
第七个里程:部署客户端(以m01、web01和web02为客户端)
安装官方源:rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
[root@web01 ~]# rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
修改源地址
将:/etc/yum.repo.s/zabbix.repo内的 http://repo.zabbix.com/ 替换为: https://mirrors.aliyun.com/zabbix/
sed -i 's#http://repo.zabbix.com/#https://mirrors.aliyun.com/zabbix/#g' /etc/yum.repos.d/zabbix.repo
[root@web01 ~]# sed -i 's#http://repo.zabbix.com/#https://mirrors.aliyun.com/zabbix/#g' /etc/yum.repos.d/zabbix.repo
[root@web01 ~]# cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/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=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
#安装客户端
yum install zabbix-agent -y
#修改配置文件
sed -i.ori 's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_agentd.conf
#启动服务
[root@web01 ~]# systemctl start zabbix-agent.service
同理在m01和web02上执行上述操作
第八个里程:测试客户端是否可用
#只能在服务端使用,安装zabbix-get
[root@m01 ~]# yum -y install zabbix-get
#使用命令进行测试
[root@m01 ~]# zabbix_get -s 172.16.1.7 -p 10050 -k "agent.ping"
1
[root@m01 ~]# zabbix_get -s 172.16.1.8 -p 10050 -k "agent.ping"
1
[root@m01 ~]# zabbix_get -s 172.16.1.7 -p 10050 -k "system.cpu.load[all,avg1]"
0.000000
[root@m01 ~]# zabbix_get -s 172.16.1.8 -p 10050 -k "system.cpu.load[all,avg1]"
0.000000
其中:
-s:指定客户端IP
-p:指定端口
-k:指定键值(执行命令)
第九个里程:使用web页面进行监控
第十个里程:解决中文乱码问题在服务端安装
[root@m01 ~]# yum -y install wqy-microhei-fonts
[root@m01 ~]# rpm -ql wqy-microhei-fonts
[root@m01 ~]# ll /usr/share/fonts/dejavu/DejaVuSans.ttf
-rw-r--r-- 1 root root 720012 Feb 27 2011 /usr/share/fonts/dejavu/DejaVuSans.ttf
[root@m01 ~]# cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
cp: overwrite ‘/usr/share/fonts/dejavu/DejaVuSans.ttf’? y
刷新web页面
七、zabbix监控其他主机
第一个里程:添加web01和web02,在服务端先检查客户端主机是否可以ping通
#使用命令进行测试
[root@m01 ~]# zabbix_get -s 172.16.1.7 -p 10050 -k "agent.ping"
1
[root@m01 ~]# zabbix_get -s 172.16.1.8 -p 10050 -k "agent.ping"
1
第二个里程:在web页面上创建主机
第三个里程:查看监控页面
八、自定义监控(制作模板)
zabbix自带模板Template OS Linux (Template App Zabbix Agent)提供CPU、内存、磁盘、网卡等常规监控,只要新加主机关联此模板,就可自动添加这些监控项。
需求:服务器登录人数不超过3人,超过3人报警
需要自定义监控模板(自定义key能被server和agent认可)
第一步:在agent注册key
语法:key名字要唯一,多个key以行为分割
UserParameter=
UserParameter=login-user,who|wc -l
UserParameter=login-user,/bin/sh /server/scripts/login.sh
修改模板配置文件
[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
[root@web01 ~]# tail -1 /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=login-user,who|wc -l
#重启客户端服务
# systemctl restart zabbix-agent.service
# 在服务端server上检测
[root@m01 ~]# zabbix_get -s 172.16.1.7 -p 10050 -k "login-user"
2
[root@m01 ~]# zabbix_get -s 172.16.1.7 -p 10050 -k "login-user"
1
第二步:在server注册(web页面上操作)
1.创建模板
2.创建应用集:给监控项分类
3.创建监控项:监控的内容
4.创建触发器:当监控项获取到的值 达到一定条件时 就触发报警
5.创建图形
6.主机关联模板
第三步:使用第三方平台处理报警信息,并测试
多于3个用户连接web01,监控平台查看结果
登陆网站:http://www.onealert.com/index.html
1.新建应用
2.在server端中安装应用
监控脚本的位置:
[root@m01 ~]# grep -i alertscript /etc/zabbix/zabbix_server.conf
### Option: AlertScriptsPath
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
切换到zabbix脚本目录 (如何查看zabbix脚本目录):
[root@m01 ~]# cd /usr/lib/zabbix/alertscripts/
获取Cloud Alert Agent包
[root@m01 alertscripts]# wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-2.1.0.tar.gz
解压、安装
[root@m01 alertscripts]# tar -xzf ca_zabbix_release-2.1.0.tar.gz
[root@m01 alertscripts]# cd cloudalert/bin
[root@m01 bin]# bash install.sh 241d60c4-0b79-4099-aba2-d346240d01bd
3.在通知策略中新建策略
4.进行测试
九、监控可视化
最新数据--图形
1. 图形
2. 聚合图形
3. 幻灯片
4. 模板共享:https://share.zabbix.com
5. web检测
添加web场景
测试(在浏览器上输入:http://10.0.0.7/test.html),查看监控数据
十、自动发现与自动注册
自动发现:zabbix Server主动发现所有客户端,然后将客户端登记自己的小本本上,缺点zabbix server压力山大(网段大,客户端多),时间消耗多。
自动注册:zabbix agent主动到zabbix Server上报到,登记;缺点agent有可能找不到Server(配置出错)
被动模式:默认,都是站在agent的立场上说话,agent被server抓取数据
主动模式:都是站在agent的立场上说话,agent主动的将数据发送给Server
两种模式都是在agent上的配置文件配置的
1. 自动发现部署
第一步:安装zabbix服务端(略)
第二步:安装zabbix客户端
#安装官方源
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
#安装客户端
yum install zabbix-agent
#修改配置文件
sed -i.ori 's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_agentd.conf
启动客户端:
[root@db ~]# systemctl start zabbix-agent.service
第三步:网页上配置自动发现规则
2. 自动注册部署(主动模式)
前提关闭自动发现规则和动作
第一步:安装zabbix服务端(略)
第二步:安装zabbix客户端(略)
#修改配置文件
[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=172.16.1.61
ServerActive=172.16.1.61
Hostname=web01(主机的名称)
#HostnameItem=system.hostname
[root@web01 ~]# egrep -i '^serverac|^hostname|^hostmetadata' /etc/zabbix/zabbix_agentd.conf
ServerActive=172.16.1.61
Hostname=web01
HostMetadataItem=system.uname
#重启服务
[root@web01 ~]# systemctl restart zabbix-agent.service
#查看服务是否运行
[root@web01 ~]# netstat -tunlp|grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 11324/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 11324/zabbix_agentd
在server端上进行hosts解析
echo "172.16.1.7 web01" >> /etc/hosts ֲ
第三步:在网页上配置自动注册,注册完后成进行等待即可
删除页面上的web01监控,没有web01
配置——> 动作,添加自动注册
添加完成后,等一段时间,查看配置主机信息,发现web01