zabbix

Posted bubu99

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix相关的知识,希望对你有一定的参考价值。

为什么要监控

  • 运维的职责
    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界面的,提供分布式系统监视以及网络监视功能的企业级的开源解决方案

官网:http://www.zabbix.com

已经有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
enabled
enabled
enabled
enabled

在服务端检查一下是不是在线,可以连接

[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 ~]# who
root     pts/0        2019-03-16 15:49 (10.0.0.253)
2、统计
[root@web01 ~]# who|wc -l
1
3、将命令放在/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页面中操作

  1. 创建模板:填好名称、群组,就可以保存了
  2. 创建应用集:给监控项(item)分类
    1. 添加一个user,表示用户相关的
  3. 创建监控项:监控的内容
    1. 点击监控项---创建监控项---填写内容(历史时长短一点,趋势时长可以长到365d)
  4. 创建触发器:当监控项获取到的值 达到一定条件时 就触发报警
    1. 名称要表达清楚报警内容  login.user bigger than 3
    2. 表达式要 选择好 {fist_model_web:login.user.last()}>3 这是选择后自动生成的
    3. 点击添加
  5. 创建图形
    1. 在选中监控项后,的功能下拉框选最大值
    2. 绘图风格选先
    3. 其他随意
  6. 主机关联模板
    1. 配置---主机---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的模板删除,换成之前用的普通的

最核心的部分是监控的体系部分,一定要作为自己的必杀技,搞定

以上是关于zabbix的主要内容,如果未能解决你的问题,请参考以下文章

Zabbix 远程代码执行漏洞CVE-2020-11800

zabbix6.0安装教程:从源代码安装

zabbix6.0安装教程:从源代码安装

zabbix6.0安装教程:从源代码安装

.NET自动安装zabbix客户端(代码)

更新Zabbix 远程代码执行漏洞(CVE-2020-11800)