为什么要监控
- 运维的职责
1.保障企业数据的安全可靠。
2.为客户提供7*24小时服务。
3.不断提升用户的体验。 - 在关键时刻,提前提醒我们服务器要出问题了
- 当出问题之后,可以便于找到问题的根源
拿到公司服务器的管理权之后,
第一件事,备份
第二件事,监控
数据有故障了,服务有问题了,一些内容挂掉了,比如web服务器,或者是硬件的服务器,raid,磁盘有故障了也会报警,用户访问网站,感觉慢了,也可以获得相应的提示
这是一个非常重要的部分
你们公司监控是怎么做的-面试题
- OSI/ISO7层协议进行回答
- 业务流程、用户访问网站的流程进行补充
监控工具
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简介
zabbix是一个基于WEB界面的,提供分布式系统监视以及网络监视功能的企业级的开源解决方案
已经有20年历史,
web界面是基于PHP的,所以需要准备LNMP或者LAMP的环境
软件是c语言的
zabbix的架构图
zabbix_proxy 在大型架构中作为代理使用,将分部服务器的情况汇总发送到总部
zabbix安装以及部署
先做环境检查
从CentOS7模板机全新克隆一台新主机 IP规划为10.0.0.61/172.16.1.61,主机名为m01 注册账号:http://c.onealert.com/console//ucid/regist.jsp
账号用于接受报警
安装zabbix服务端
本次使用yum安装,编译安装留为作业
官网---download
官方安装说明中可以找到下面这些信息和安装步骤
版本号中的LTS指的是长时间维护版本
或者找zabbix官方源repo.zabbix.com----找到有release的,复制链接地址
# 安装Zabbix官方源 rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm yum makecahe fast # 快点缓存 # 安装zabbix,httpd,php yum install zabbix-server-mysql zabbix-web-mysql httpd php -y
yum安装数据库
数据库因为用的是centos7,MySQL是正常装不上的,需要配置MySQL源或者二进制安装
所以,偷懒安装mariadb(本质上基本和mysql是一样的)
# 安装mariadb yum -y install mariadb-server 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';创建用户的时候,不用flush跟新信息,跟新只在修改用户信息的时候 exit # 导入数据库sql文件,官方安装说明中可以找到这些信息和安装步骤 zcat /usr/share/doc/zabbix-server-mysql-3.0.25/create.sql.gz|mysql -uzabbix -pzabbix zabbix
zcat 命令是显示gz压缩包内容的软件
请根据自己的zabbix软件版本 修改zcat的文件目录
配置zabbix server
# 配置zabbix Server连接mysql sed -i.ori '115a DBPassword=zabbix' /etc/zabbix/zabbix_server.conf # 修改apache-php配置,因为我们是自动安装,他会自动创建一个虚拟主机# 我们修改下配置文件,添加时区,否则后面打开web页面安装zabbix的时候会报错 sed -i.ori '18a php_value date.timezone Asia/Shanghai' /etc/httpd/conf.d/zabbix.conf
启动zabbix server
systemctl start zabbix-server # 启动zabbix systemctl start httpd # 启动apache
网页配置
浏览器中访问10.0.0.61/zabbix 。记得用自己的IP
进入页面按照指令操作。
默认的账号Admin密码zabbix
进入主页,单击右上角的小人,修改显示语言和密码
zabbix开始监控状态-安装配置zabbix-agent
zabbix客户端就是zabbix agent
国内源:搜索
选择yum源的时候注意版本号,有的是centos6有的是7
可以直接安装agent,但是有一些依赖可能装不上
选择release最为稳妥
所有需要被监控的服务器都要执行下面步骤,下面以在m01和cache01安装客户端为例: rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.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 systemctl start zabbix-agent.service
客户端测试
此时,还不能在web页面张查看监控状态
需要先在客户端测试确认一下数据,需要用到zabbix-get
# 只能在服务端m01操作,需要使用-s执行相应客户端IP yum install zabbix-get -y # agent.ping 表示是否在线 1表示在线[root@m01 doc]# zabbix_get -s 172.16.1.61 -p 10050 -k 'agent.ping'1 zabbix_get -s 172.16.1.61 -p 10050 -k "system.cpu.load[all,avg1]" zabbix_get -s 172.16.1.21 -p 10050 -k "system.cpu.load[all,avg1]"
web页面上怎么看?
配置----主机----将 zabbix server 启用--- 当可用性 都变成绿色,就表名监控上线
等待......如何加快(ping 主机名 可以解析)
等了很久,看一下日志吧...(/var/log/zabbix/zabbix_server.log)
我们等来了一个错误,意思是,客户端无法访问服务端,是监控IP设置的问题
点击Zabbix server 将 agent代理程序的接口 这一项下面的 ip地址改为172.16.1.61,跟新保存
过一会就变成绿色了,就可以查看监控中---最新数据、图形等
因为中文字体的原因,有些地方会乱码,改成英文就行了
解决乱码问题,单独安装字体就可以了,不断地尝试,发现某个字体可用
yum -y install wqy-microhei-fonts将可用字体,复制到zabbix下 \cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
添加一台被监控服务器主机
现在web01服务器上安装zabbix agent 客户端
清华或者阿里软件镜像站------找到zabbix----找到版本-----选择rhel----选择6(web01是centos6的系统)----选择64位----找到release----复制链接地址
在Linux中加入yum源
[root@web01 ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/6/x86_64/zabbix-release-3.4-1.el6.noarch.rpm [root@web01 ~]# yum install zabbix-agent -y 以后这些操作要交给kickstart和cobbler,装完系统就装上zabbix-agent #修改一下服务端的IP地址 第97行 Server = 172.16.1.61 或者使用sed -i.ori '' sed -i.ori 's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_agentd.conf #将zabbix 设置为 开机自启动,并重启 [root@web01 ~]# chkconfig zabbix-agent on [root@web01 ~]# /etc/init.d/zabbix-agent restart Shutting down Zabbix agent: [FAILED] Starting Zabbix agent: [ OK ]
在m01 zabbix的服务端上检查,这些服务都是要启动的,而且要开机自启动
[root@m01 doc]# systemctl is-active httpd.service mariadb.service zabbix-server.service zabbix-agent.service active active active active [root@m01 doc]# systemctl is-enable httpd.service mariadb.service zabbix-server.service zabbix-agent.service Unknown operation 'is-enable'. [root@m01 doc]# systemctl is-enabled httpd.service mariadb.service zabbix-server.service zabbix-agent.service disabled disabled disabled enabled [root@m01 doc]# systemctl enable httpd.service mariadb.service zabbix-server.service zabbix-agent.service [root@m01 doc]# systemctl is-enabled httpd.service mariadb.service zabbix-server.service zabbix-agent.service enabledenabledenabledenabled
在服务端检查一下是不是在线,可以连接
[root@m01 doc]# zabbix_get -s 172.16.1.7 -p 10050 -k 'agent.ping'1
在web界面中 配置----主机----创建主机
主机名称: 主机名 可见名称: 随意设置,知道意思就行, 群组: 最好设置一个群组,方便批量管理 agent代理程序的接口: 172.16.1.7 端口号不用改 下面的SNMP、JMX、IPMI暂时不用管
接下来 点击 模板选项卡
不用点击选择,在搜索框中输入linux ,选择Template OS linux-----点击小的添加----点击添加
保证在m01上能够解析web01 的名字 ----- 172.16.1.7 web01
注:实际做的时候,我没有在host中解析web01 也连上了....后面有问题再说吧,
继续添加一台服务器cache01
都连接上了
如何快速添加主机及键值
随便选择一个,然后最下面有一个克隆,修改一下主机名和IP
模板中有什么呢?
可以查看监控项中的键值,就是zabbix_get 命令中的-k参数 中的k值,是获取数据的本质
自定义创建键值
也叫作自定义监控,在模板提供的键值中没有我们需要的数据时,我们要自己做键值
zabbix自带模板Template OS Linux (Template App Zabbix Agent)提供CPU、内存、磁盘、网卡等常规监控,只要新加主机关联此模板,就可自动添加这些监控项。 需求:服务器登录人数不超过3人,超过3人报警 1、获取登陆服务器人数[root@web01 ~]# whoroot pts/0 2019-03-16 15:49 (10.0.0.253)2、统计[root@web01 ~]# who|wc -l13、将命令放在/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 中这是用来放置用户自定义监控项的,用户可以在这个目录中写自己的.conf文件4、在agent注册key
# 语法:key名字要唯一,多个key以行为分割 UserParameter=<key>,<shell command> UserParameter=login-user,who|wc -l UserParameter=login-user,/bin/sh /server/scripts/login.sh # 执行脚本 # cd /etc/zabbix/zabbix_agentd.d/ # vim userparameter_login.conf UserParameter=login-user,who|wc -l
# 修改配置文件要重启 systemctl restart zabbix-agent.service centos6中重启/etc/init.d/zabbix-agent restart # 在server检测 # zabbix_get -s 172.16.1.21 -p 10050 -k "login-user"
自定义key能被server和agent认可
WEB页面中操作
- 创建模板:填好名称、群组,就可以保存了
- 创建应用集:给监控项(item)分类
- 添加一个user,表示用户相关的
- 创建监控项:监控的内容
- 点击监控项---创建监控项---填写内容(历史时长短一点,趋势时长可以长到365d)
- 创建触发器:当监控项获取到的值 达到一定条件时 就触发报警
- 名称要表达清楚报警内容 login.user bigger than 3
- 表达式要 选择好 {fist_model_web:login.user.last()}>3 这是选择后自动生成的
- 点击添加
- 创建图形
- 在选中监控项后,的功能下拉框选最大值
- 绘图风格选先
- 其他随意
- 主机关联模板
- 配置---主机---web01---模板---添加之前做好的模板
处理报警:在设置的触发器中有一项允许手动关闭,在收到报警后,我们可以在确认事件中关闭报警
添加报警
报警也可以在web中设置,就在主页小人处
我们还可以通过网站设置报警,然后等着报警信息,就不用一直盯着页面了
登陆网站:http://www.onealert.com/index.html 注册账号 报警的本质: 什么时候发邮件:当状态改变的时候才会发邮件 好--坏 坏--好
如何查找安装报警脚本的路径?
[root@m01 doc]# grep -i alertscript /etc/zabbix/zabbix_server.conf ### Option: AlertScriptsPath # AlertScriptsPath=${datadir}/zabbix/alertscripts AlertScriptsPath=/usr/lib/zabbix/alertscript
安装报警插件,下载地址和安装命令都是报警网站提供的
[root@m01 alertscripts]# wget http://www.onealert.com/agent/release/oneitsm_zabbix_release-1.2.0.tar.gz ...下载过程略... [root@m01 alertscripts]# tar -zxf oneitsm_zabbix_release-1.2.0.tar.gz [root@m01 alertscripts]# cd oneitsm/bin [root@m01 bin]# bash install.sh 42dd9ef9-cc1c-8def-e95a-d20526a5341f ./log.sh: line 6: /usr/lib/zabbix/alertscripts/oneitsm/bin/oneitsm.conf: No such file or directory start to create config file... Zabbix管理地址: 172.16.1.61 Zabbix访问失败,请重新输入. Zabbix管理地址: 10.0.0.61 Zabbix访问失败,请重新输入. Zabbix管理地址: 10.0.0.61/zabbix # 地址 zabbix的WEB页面的地址 Zabbix管理员账号: Admin Zabbix管理员密码: start to auth by zabbix admin user and password... ...安装过程略... create action success! 安装成功.
登陆zabbix的WEB界面配置
管理---报警媒介类型---已经配置好了!!
在onealert的配置下中有一个分配策略---就是报警了分配给谁
聚合图形
同时看几个数据的图形
聚合图形中还有幻灯片演示
现有聚合图形,才能创建幻灯片
https://share.zabbix.com/中有许多别人创建好的模板
https://github.com/zhangyao8/zabbix-community-repos 模板共享
全网监控项目说明
考试目标:使用zabbix将期中架构所有集群监控 具体内容: 一、硬件、系统、网络监控 所有集群节点(所有虚拟机)都监控上 二、应用服务监控 1. 监控备份服务器,简单方法是监控rsync端口,如果有其他更佳方案可以说明; 2. 监控NFS服务器,使用监控NFS进程来判断NFS服务器正常,如果有其他更佳方案可以说明; 3. 监控MySQL服务器,简单方法监控mysql的3306端口,或者使用zabbix提供的Mysql模板, 如果有其他更佳方案可以说明; 4. 监控2台web服务器,简单方法监控80端口,如果有其他更佳方案可以说明; 5. 监控URL地址来更精确的监控我们的网站运行正常; 6. 监控反向代理服务器,PPTP服务器等你在期中架构部署的服务。 7. 监控Nginx的7种连接状态。
项目一的模板都有
项目二中的端口、进程。可以进入任意模板查看,都有
项目二中的第5个检测URL,自定义web检测
创建web场景
项目二中的第6个检测端口+进程
项目二中的第7个Nginx的7中链接状态,用状态模块进行配置,
1、写7行(简单粗暴的方法)
2、写脚本
自动发现与自动注册
自动发现:zabbix Server主动发现所有客户端,然后将客户端登记自己的小本本上, 缺点zabbix server压力山大(网段大,客户端多),时间消耗多。 自动注册:zabbix agent主动到zabbix Server上报到,登记; 缺点agent有可能找不到Server(配置出错) 被动模式:默认,都是站在agent的立场上说话,agent被server抓取数据 主动模式:都是站在agent的立场上说话,agent主动的将数据发送给Server 两种模式都是在agent上的配置文件配置的
自动发现(被动模式)-服务器少的时候使用
第一步:zabbix Server安装完毕 (完成) 第二步:zabbix agent安装完毕,Server=172.16.1.61 (完毕) 第三步:网页上配置自动发现规则
配置---自动发现---新建或者使用已经有的
修改IP范围---172.16.1.1-10,172.16.1.45多个用,号分割
默认本质上使用的是system.uname,也可以添加新的
设置唯一性
更新或者保存,启用
------------------------------------------------------------------------------
配置---动作---事件源选择‘自动发现’---创建或者修改原有的,也可以克隆
其中,新的触发条件可以不写,因为在自动发现中已经设置了
在操作选项卡里面,添加新的动作操作(添加主机和启用主机)
完成后,跟新启用
什么时候算是完成自动发现了呢,在自动发现中显示主机名就算成功了,然后会出现在主机列表中
自动注册(主动模式)
把之前的自动发现关闭
第一步:zabbix Server安装完毕 (完成) 第二步:zabbix agent安装完毕,需要额外增加的配置 vim /etc/zabbix/zabbix_agentd.conf ServerActive=172.16.1.61 # Hostname=Zabbix server 和下面的HostnameItem配置一个就行 HostnameItem=system.hostname # 定义获取服务器主机名的方式 HostMetadataItem=system.uname # 主机的源数据 systemctl restart zabbix-agent.service 重启centos6的方式/etc/init.d/zabbix-agent restart netstat -tunlp|grep zabbix 第三步:Server上做hosts解析,解析是在这里发挥作用的 echo "172.16.1.21 cache01" >> /etc/hosts 第四步:网页上配置自动注册 配置----动作---自动注册(事件源) 动作-触发条件 设置 成 主机元数据 似 Linux(手打的) 操作-添加主机---添加到群组---链接到模板 添加 主机没有添加上,等候时间
分布式监控
Zabbix Server -------->Zabbix agent (只能同一个局域网监控) 分布式监控: a. 分担压力,降低负载 b. 多机房监控
等于是给各个分区的服务器安排了一个领导,层层汇总
环境准备
做好快照 机器准备: Zabbix Server m01 监控中心 Zabbix Proxy web01 分中心领导 Zabbix Agent web01 web02 客户端
开始操作,将之前的自动发现和自动注册都关闭
第一步:在代理机web01安装zabbix proxy rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm yum -y install zabbix-proxy-mysql 第二步:安装数据库 zabbix proxy也需要数据库,这个数据库不是用于存储监控数据的 只是用于存储配置信息 # 安装数据库 yum -y install mariadb-server systemctl start mariadb.service #建库 创建用户授权 mysql create database zabbix_proxy character set utf8 collate utf8_bin; grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by 'zabbix'; # 将多余的空的用户删除drop user “‘@’localhost”;drop user “‘@’web01”;# 跟新flush privileges;exit # 导入数据库文件 zcat /usr/share/doc/zabbix-proxy-mysql-3.0.13/schema.sql.gz |mysql -uzabbix -pzabbix zabbix_proxy 第三步: 配置zabbix proxy,并在zabbix网页登记 # 配置zabbix proxy连接数据库 sed -i.ori '162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.conf systemctl start zabbix-proxy.service # 修改Server sed -i 's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_proxy.conf # 修改hostname,确保这个名字是唯一的,不用web01是因为,web01要给下面的客户端使用# 这个hostname,一定要能在m01中解析,即最顶端的老大sed -i 's#Hostname=Zabbix proxy#Hostname=proxy-web01#' /etc/zabbix/zabbix_proxy.conf 将172.16.1.7 web01 proxy-web01 添加在m01的 host文件中 systemctl start zabbix-proxy.service Centos6中的重启方法/etc/init.d/zabbix-proxy start(第一次启动所以使用的start### 问题 #### 查看zabbix-proxy日志发现,一只连接不上数据库,它连接的的是/var/lib/mysql/mysql.sock # 在/etc/zabbix/zabbix_proxy.conf中的默认的是/tmp/mysql.sock # 我们需要将它启动,把配置文件中DBSocket前面的# 删掉继续重启第四步:web页面设置管理---agent代理程序---创建代理agent代理程序名称:要和 Hostname=proxy-web01 一样把客户机加上添加 第五步:客户端agent 指向 proxy [root@web01 ~]# grep ^Server /etc/zabbix/zabbix_agentd.conf Server=172.16.1.61 ServerActive=172.16.1.61 [root@web01 ~]# sed -i 's#172.16.1.61#172.16.1.7#g' /etc/zabbix/zabbix_agentd.conf [root@web01 ~]# grep ^Server /etc/zabbix/zabbix_agentd.conf Server=172.16.1.7 ServerActive=172.16.1.7# 文件中的Hostname 要和 页面上的一致,即本服务器的hostname [root@web01 ~]# systemctl restart zabbix-agent.service
把客户端服务器hosts中的解析本机的去掉??
主机的名字只需要在proxy和m01上解析就可以了
SNMP监控
主要用来监控网络设备,也可以用来监控服务器
只需要在网络设备中开启SNMP监控即可
小结:前面所讲内容全部属于zabbix agent方式监控 当前场景:无法安装agent,通过snmp监控 snmp :simple network manager protocol 简单网络管理协议 # 在m01下,安装软件 yum -y install net-snmp net-snmp-utils 配置snmp sed -i.ori '57a view systemview included .1' /etc/snmp/snmpd.conf意思是开启被读取的权限 systemctl start snmpd.service 默认的端口是161 使用SNMP [root@db01 ~]# snmpwalk -v 2c -c public 127.0.0.1 sysname # snmpwalk 类似 zabbix_get # -v 2c 指定使用snmp协议的版本 snmp分为v1 v2 v3 # -c public 指定暗号 # sysname 类似zabbix的key 键值中的键,还有很多其他的 OID
怎么通过snmp协议来监控呢?
在web页面中选择主机。在设置中的SNMP接口处添加
它和agent的区别是不支持自定义监控
模板也要改,把原来的linux os 取消链接。添加Template SNMP OS Linux
还是不行的话,点击原来的先添加再取消并清理,然后保存
补充:web监测的时候,要把SNMP的模板删除,换成之前用的普通的
最核心的部分是监控的体系部分,一定要作为自己的必杀技,搞定
来源:https://www.cnblogs.com/yxiaodao/p/10540099.html