【001】Zabbix学习笔记-Zabbix安装与基本配置

  • 1 Zabbix简介
    • 1.1 监控系统介绍
    • 1.2 Zabbix
    • 1.3 Zabbix监控原理
      • zabbix架构图
      • zabbix组件
      • 相关术语
      • 监控流程
      • 【主动监测】通信过程
      • 【被动监测】通信过程
  • 2 Zabbix部署
    • 2.1 zabbix-server
    • 2.2 zabbix-agent与UserParameter实现自定义监控
      • 实现zabbix agent 与 zabbix server联通
      • 监控agent端/boot
    • 检测CS连通性
    • 创建主机群组
    • 创建图形
    • 中文乱码解决方法
    • 创建触发器
    • 收zabbix邮件
      • 测试触发器
  • Reference

1 Zabbix简介

zabbix中文社区
Zabbix中文版(4.0版)官方文档

1.1 监控系统介绍

监控系统在运维自动化中的角色
监控系统,是运维工程师和研发工程师的眼睛。它帮助工程师在第一时间发现网站的问题。
服务器的整个生命周期,都要和监控系统打交道:
服务器上架,需要加入入基础监控,比如CPU负载、内存等;
当服务器上开始跑应用时,需要加入对应的应用监控,比如Resin、MySQL等;
当服务器维护时,又要暂停这些报警,否则你明明在维护MySQL,监控系统还给你报警说MySQL挂了。

这些操作,手动去做非常麻烦,需要跟运维的其他系统共同协作,比如CMDB中一台机器上架了,那么监控系统自动加入监控。

监控系统是运维人员的眼睛,没有它,就没法知道系统运行状况,总不见得,我打开几十几百个终端,然后while true 来显示 CPU负载。
撇开能不能看清楚的问题,得要多少显示器才能显示所有服务器的这些信息?

当发生问题时,监控系统要第一时间发出报警,报警中除了出问题的点,还可以有一些数据和简单的分析,
比如当时一段时间的CPU负载等,以帮助接到报警的人员快速定位问题。

在出现故障以后进行问题分析时,还要靠监控系统。因为监控系统真实地记录了故障发生现场这台服务器的状况。
运维工程师可以通过不同纬度的分析,找出问题的原因。

监控系统在运维自动化里的角色,可以用下面三点来概括
(1)监控数据收集及可视化。
(2)异常数据报警。
(3)和其他的系统协同工作。

监控系统的理想化模样
根据控监控系统在运维中的角色,理想的监控系统应该具有如下特点:

  1. 监控数据收集及可视化
    (1)监控系统能够自定义监控的内容,可以自己写脚本来收集需要的数据。
    (2)数据要保存在数据库中,这样以后需要的时候可以对这些数据进行分析计算。
    (3)能够方便、快速地将监控加人到服务器上,不需要烦琐的操作。
    (4)数据可视化不要很花哨,但要直观好用。
  2. 异常数据报警。
    (1)可以定义复杂的报警逻辑,可以做到 Item之间的关联报警,而不是只能针对一个。
    (2)报警需要被确认,让运维人员知道多少报警已经有人认领并开始处理了。
    (3)报警方式要能够自定义,可以发邮件和短信,如果能够在 IM上通知别人就更好了。
    (4)报警内容要可以自行设置,在报警邮件中加入一些简单的分析,而不是让运维人员上服务器敲命令来获取基本的信息。
    (5)报警后可以自动跑一些命令。这些命令可以是获取需要的信息,也可以是自动修复,比如重启服务等。
  3. 和其他系统协同工作。
    (1)有强大的API可以使用,可以让其他系统调用完成工作。
    (2)监控数据是开放的,数据库中的数据结构不要太复杂,让人无从下手。
    (3)监控可视化的图可以方便地引用,而不是要用一大串JavaScript。

1.2 Zabbix

Zabbix简介
Zabbix是一个非常强大的监控系统。其官方的说明是:Zabbix是企业级的软件,被设计用来监控IT基础设施的可用性和性能。
而我的看法是:它是一个能够快速搭建起来的、开源的监控系统
对于想快速可用的小型公司,Zabbix 自带的 Item 足够满足需求,通过简单的配置,可以在很短的时间内搭建起一套功能完善的报警系统;
而对于中大型公司,Zabbix 也能很好地支撑,可以设定自定义的 ltem,自动生成报表,有API和其他系统集成,数据库中有开放的数据可供分析。
为什么暴雪的游戏(星际争霸、暗黑破坏神、魔兽争霸等)都这么经典?因为它们“易于上手,难于精通”。
而Zabbix也一样,你可以非常容易地搭建起可用的Zabbix,但要用好它,把它的潜能挖掘出来,需要花很大的力气。

使用Zabbix时,一般需要在被监控的服务器上安装Zabbix Agent。
Zabbix Server 会和 Zabbix Agent进行通信,获取监控数据,这是Zabbix监控的一般模式。

选择Zabbix的理由
对应前文,看看Zabbix是否能满足理想中的监控系统的要求:

  • 监控系统能够自定义监控的内容,可以自己写脚本来收集需要的数据:Zabbix 支持任何自定义的监控脚本,只要输出需要的值就可以。
  • 数据要保存在数据库中,这样以后需要的时候可以对这些数据进行分析计算:Zabbix在数据库中的表结构虽然有些复杂,但逻辑很清晰。
  • 能够方便、快速地将监控加入到服务器上,不需要烦琐的操作:Zabbix有模板这一概念,可以方便地将一组 Item 进行统一操作。
  • 数据可视化不要很花哨,但要好用:Zabbix 每一个 Item 都可以看到其历史,Web 界面可拖动,界面友好。
  • 可以定义复杂的报警逻辑,做到Item之间的关联报警,而不是只能针对一个:Zabbix强大的 Trigger 定义,几乎可以满足所有规则组合。
  • 报警需要被确认,让运维人员知道多少报警已经有人认领并开始处理了:Zabbix 对于报警,有 ACK 机制。
  • 报警方式要能够自定义,可以发邮件、发短信,如果能够在IM上通知别人就更好了:Zabbix 支持邮件、Jabber。
  • 报警内容要自己可设置,在报警邮件中加入一些简单的分析:Zabbix自定义了一套宏可以在报警邮件中引用。
  • 报警后可以自动跑一些命令:在触发报警后,Zabbix可以远程执行命令。可以是获取信息,也可以是自动修复。
  • 有强大的 API 可以使用,可以让其他系统来调用完成工作:Zabbix支持RestAPI,几乎所有的操作都可以通过API实现。
  • 监控数据是开放的,数据库中的数据结构不要太复杂,让人无从下手:监控数据就在Zabbix数据库中,可以方便地进行分析
  • 监控可视化的图可以方便的引用:Zabbix 使用PHP原生的绘图模块,如果要引用Zabbix的图表,只需要引用图表的URL即可,非常方便。

1.3 Zabbix监控原理

想要用好zabbix进行监控,那么我们首要需要了解下zabbix这个软件的实现原理及它的架构。
建议多阅读官方文档。

zabbix架构图

zabbix组件

zabbix由以下几个组件部分构成:
1、Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;
2、Database Storage:专用于存储所有配置信息,以及由zabbix收集的数据;
3、Web interface:zabbix的GUI接口,通常与Server运行在同一台主机上;
4、Proxy:可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力;
5、Agent部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端;

相关术语

主机(host):要监控的网络设备,可由IP或DNS名称指定;
主机组(host group):主机的逻辑容器,可以包含主机和模板,但同一个组织内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用;
监控项(item):一个特定监控指标的相关的数据;这些数据来自于被监控对象;item是zabbix进行数据收集的核心,相对某个监控对象,每个item都由"key"标识;
触发器(trigger):一个表达式,用于评估某监控对象的特定item内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从"OK"转变为"Problem",当数据再次恢复到合理范围,又转变为"OK";
事件(event):触发一个值得关注的事情,比如触发器状态转变,新的agent或重新上线的agent的自动注册等;
动作(action):指对于特定事件事先定义的处理方法,如发送通知,执行脚本等;
报警媒介类型(media):发送通知的手段或者通道,如Email、Jabber或者SMS等;
用户(user)
模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接链接至某个主机;
前端(frontend):Zabbix的web接口
应用集 (application) : 一组监控项组成的逻辑分组

监控流程

一个监控系统运行的大概的流程是这样的:
agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。
这里agentd收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。

【主动监测】通信过程

zabbix首先向ServerActive配置的IP请求获取active items,获取并提交active items数据值server或者proxy。很多人会提出疑问:zabbix多久获取一次active items?它会根据配置文件中的RefreshActiveChecks的频率进行,如果获取失败,那么将会在60秒之后重试。分两个部分:
获取ACTIVE ITEMS列表
• Agent打开TCP连接
• Agent请求items检测列表
• Server返回items列表
• Agent 处理响应
• 关闭TCP连接
• Agent开始收集数据

主动检测提交数据过程如下:
• Agent建立TCP连接
• Agent提交items列表收集的数据
• Server处理数据,并返回响应状态
• 关闭TCP连接

【被动监测】通信过程

• Server打开一个TCP连接
• Server发送请求agent.ping\n
• Agent接收到请求并且响应
• Server处理接收到的数据1
• 关闭TCP连接
从以上过程我们可以看出来,被动模式每次都需要打开一个tcp连接,这样当监控项越来越多时,就会出现server端性能问题了。
还有人会问,那实际监控中是用主动的还是被动的呢?这里主要涉及两个地方:
1、新建监控项目时,选择的是zabbix代理还是zabbix端点代理程式(主动式),前者是被动模式,后者是主动模式。
2、agentd配置文件中StartAgents参数的设置,如果为0,表示禁止被动模式,否则开启。一般建议不要设置为0,因为监控项目很多时,可以部分使用主动,部分使用被动模式。

2 Zabbix部署

这里我们布署zabbix版本为5.0

环境准备
系统版本: CentOS7.6
zabbix-server版本: 5.0
zabbix-server: 192.168.10.11
zabbix-agent: 192.168.10.12
关闭所有机器的防火墙 , selinux

2.1 zabbix-server

参考官方文档选择如下:

# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# yum clean all
# yum install zabbix-server-mysql zabbix-agent mariadb-server -y
# yum install centos-release-scl -y
# yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y

打开zabbix-frontend enabled

# vim /etc/yum.repos.d/zabbix.repo

启动数据库

[root@zabbix ~]# systemctl start mariadb
[root@zabbix ~]# mysql

创建数据库与用户

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)

zcat导入数据库

[root@zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

此时进入zabbix库里会发现tables已经导入

备份然后更改配置文件

[root@zabbix ~]# cp /etc/zabbix/zabbix_server.conf{,.bak}
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf

将密码更改

更改时区

[root@zabbix ~]# vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf


启动服务

[root@zabbix ~]# systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
[root@zabbix ~]# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

查看是否成功

[root@zabbix ~]# netstat -tlnp |grep "zabbix"
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      2047/zabbix_agentd
tcp6       0      0 :::10050                :::*                    LISTEN      2047/zabbix_agentd

用浏览器访问的对应ip发现连接不上,同时netstat发现zabbix-server无法启动


通过日志分析发现是防火墙未关闭

关闭防火墙selinux然后重启

[root@zabbix ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@zabbix ~]# systemctl stop firewalld.service[root@zabbix ~]# vim /etc/selinux/config


问题解决浏览器访问成功

next step 发现所有都ok,很好

设置好密码后出现报错Cannot connect to the database. 没有找到对应文件

错误原因是mariadb未启动

解决方案:

[root@zabbix conf]# systemctl start mariadb

继续下一步


初始登陆名Admin 密码zabbix

草 终于成功了

2.2 zabbix-agent与UserParameter实现自定义监控

开一台新机器(记得关闭防火墙)取名为zabbix-agent然后安装zabbix-agent

[root@zabbix-agent ~]# yum -y install zabbix-agent

更改配置文件

vim /etc/zabbix_agentd.conf

更改server ip 和 active server ip



更改hostname(更改为主机名)此处为zabbix-agent

启动服务

[root@zabbix-agent ~]# systemctl enable zabbix-agent.service
[root@zabbix-agent ~]# systemctl start zabbix-agent.service

netstat查看发现启动成功

实现zabbix agent 与 zabbix server联通

我们做如下操作

[root@zabbix-agent ~]# mkdir /test
[root@zabbix-agent ~]# touch /test/{a..f}
[root@zabbix-agent ~]# ls /test/
a  b  c  d  e  f

更改配置文件

vim /etc/zabbix_agentd.conf

更改UserParameter


重启服务

[root@zabbix-agent ~]# ls /test/ |wc -l
6
[root@zabbix-agent ~]# systemctl restart zabbix-agent.service

在zabbix-server端安装zabbix-get

[root@zabbix conf]# yum -y install zabbix-get

在zabbix-server端测试zabbix_get发现成功,这表明我们zabbix server与agent连通

[root@zabbix conf]# zabbix_get -s 192.168.23.211 -k test.file.no
6

监控agent端/boot

[root@zabbix-agent test]# df -h |awk '/boot/{print $5}'| tr -d '%'
14

在配置文件中添加UserParameter

[root@zabbix-agent test]# vim /etc/zabbix_agentd.conf


重启

[root@zabbix-agent test]# systemctl restart zabbix-agent.service

在zabbix-server端使用zabbix_get查看发现成功

[root@zabbix conf]# zabbix_get -s 192.168.23.211 -k boot.used
14

在zabbix-agent 端创建新文件试试

[root@zabbix-agent test]# dd if=/dev/zero of=/boot/test bs=10M count=10
记录了10+0 的读入
记录了10+0 的写出
104857600字节(105 MB)已复制,0.175105 秒,599 MB/秒
[root@zabbix-agent test]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 475M     0  475M    0% /dev
tmpfs                    487M     0  487M    0% /dev/shm
tmpfs                    487M  7.7M  479M    2% /run
tmpfs                    487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  1.5G   16G    9% /
/dev/sda1               1014M  237M  778M   24% /boot
tmpfs                     98M     0   98M    0% /run/user/0

在zabbix-server端使用zabbix_get查看发现变成了24,试验成功

[root@zabbix conf]# zabbix_get -s 192.168.23.211 -k boot.used
24

检测CS连通性

创建主机群组

在zabbix页面点击配置项的主机群组界面 右上角创建

设置组名

在zabbix页面点击配置项的主机界面


右上角创建并配置主机

添加成功

查看监控项并在右上角创建监控项

配置监控项

点击测试发现正确获得16个文件的数量

点击下方添加监控项
我们看到添加成功

创建图形

回到主机界面看看图形

右上角创建图形,做如下配置

查看图像,发现中文是乱码

中文乱码解决方法

在 windows上传中文字体

将字体传到zabbix上的相应文件夹

[root@zabbix fonts]# mv /root/simsun.ttc /usr/share/fonts/dejavu/

做个软连接

[root@zabbix fonts]# ln -sf /usr/share/fonts/dejavu/simsun.ttc /etc/alternatives/zabbix-web-font

刷新一下发现乱码消失

创建触发器


编辑触发器(触发器表达式在右边添加中设置)

设置成功

出发警告试一试

[root@zabbix-agent test]# touch {1..100}

图形界面查看发现触发警告

[root@zabbix-agent test]# rm -rf {1..100}

警告消失

收zabbix邮件

设置媒介类型

在接收的邮件开启IMAP/SMTP服务
(设置时注意保存弹出来的授权码)

在zabbix中email做如下配置
密码是之前保存的授权码


点击email在message template 编辑发布的邮件

更改一下

接下来设定用户

添加收件人

添加一个动作

动作里添加操作

测试触发器

在agent端触发

[root@zabbix-agent test]# touch {A..Z}

问题触发


我们去看看邮件,收到告警

Reference

課堂筆記

【001】Zabbix学习笔记-Zabbix简介与部署相关推荐

  1. 【zabbix学习笔记之二】部署zabbix-server端

    创建.导入zabbix数据库   cd /usr/local/src #进入软件包下载目录   tar zxvf zabbix-2.2.6.tar.gz #解压   cd /usr/local/src ...

  2. Zabbix学习笔记(六)Zabbix的APi使用

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 1.Zabbix API 3.获取tokens 4.实例 4.1获取主机组ID 4.2 获取监控模板ID 4.3 创建主机 ...

  3. 13.zabbix学习笔记:zabbix监控之短信报警

    zabbix学习笔记:zabbix监控之短信报警 zabbix的报警方式有多种,除了常见的邮件报警外,特殊情况下还需要设置短信报警和微信报警等额外方式.本篇文章向大家介绍短信报警. 短信报警设置 短信 ...

  4. Tomcat学习笔记02【Tomcat部署项目】

    Java后端 学习路线 笔记汇总表[黑马程序员] Tomcat学习笔记01[Web相关概念.Tomcat基本操作][day01] Tomcat学习笔记02[Tomcat部署项目][day01] 目录 ...

  5. OptiX资料学习笔记1——简介

    OptiX资料学习笔记1--简介 OptiX引擎的现状 目前有三种开源的API支持NVIDIA的光线追踪功能,分别为: DirectX Raytracing (DXR) DX的光线追踪API Vulk ...

  6. flink1.12.0学习笔记第1篇-部署与入门

    flink1.12.0学习笔记第 1 篇-部署与入门 flink1.12.0学习笔记第1篇-部署与入门 flink1.12.0学习笔记第2篇-流批一体API flink1.12.0学习笔记第3篇-高级 ...

  7. PCL学习笔记-PCL简介

    PCL(点云库)学习笔记 1.简介 点云数据的处理可以采用获得广泛应用的Point Cloud Library(点云库,PCL库). PCL库是一个最初发布于 2013年的开源c++库,它实现了大量点 ...

  8. RNN学习笔记(一)-简介及BPTT RTRL及Hybrid(FP/BPTT)算法

    RNN学习笔记(一)-简介及BPTT RTRL及Hybrid(FP/BPTT)算法 本文假设读者已经熟悉了常规的神经网络,并且了解了BP算法,如果还不了解的,参见UFIDL的教程. - 1.RNN结构 ...

  9. 51单片机学习笔记1 简介及开发环境

    51单片机学习笔记1 简介及开发环境 一.51单片机 1. STC89C52单片机简介 2. 命名规则 3. 封装 (1)PDIP (2)LQFP (3)PLCC (4)PQFP 二.STC8051结 ...

  10. zabbix学习笔记——入门篇

    目录 一.了解监控 监控的种类 二.zabbix监控 1.介绍zabbix 2.为什么选择zabbix 3.Zabbix可监控对象 4.zabbix监控方式 1.被动监控 2.主动监控 5.zabbi ...

最新文章

  1. kali2020安装中文输入法(切换中文输入法)
  2. 选课系统html页面设计,网上选课系统的设计与实现(代码)..doc
  3. 英特尔芯片专利官司败诉,判罚140亿,半个季度白干了...
  4. L3-021 神坛(极角排序求三角形最小面积)
  5. 小甲鱼python课后答案40讲_小甲鱼Python 第30讲课后习题看不懂
  6. LeetCode 1878. 矩阵中最大的三个菱形和(模拟)
  7. Jeecg-Boot2.1.2 版本,手工集成Online在线开发模块(Online表单、Online报表)
  8. 去掉WINDOWS SERVER 开机按CTRL+ALT+DEL登陆的方法
  9. 改变Eclipse标记高亮的颜色
  10. JProfiler 9.1.1部署及使用
  11. 计算科学导论读书笔记
  12. Exchange高危0day漏洞 -- 直接拿下你的域控和服务器 -- 立即行动!CVE-2021-26855
  13. 微信建群怎么建?2个方法,快速学会!
  14. 去掉word页眉上横线的技巧
  15. UNI-APP之微信小程序转H5
  16. GPIO模块常用的一些方法
  17. RTSP安防网络摄像头/海康大华硬盘录像机网页无插件直播方案EasyNVR之主要功能模块及相关技术特点与性能指标分析
  18. ps中图层放到顶层的快捷键是什么?
  19. 【java】LinkedList1.8源码详解
  20. go 商品秒杀系统架构设计

热门文章

  1. 操作系统中的进程调度策略有哪几种
  2. 想做赴日软件工程师,为公为私
  3. 学生专用计算机abs什么意思,出现abs标志什么意思
  4. 离线RSS浏览FeedDemon
  5. face_recognition人脸识别
  6. 角度传感器测量实验 GY-25
  7. C语言大作业-个人通讯录管理系统、考试座位表生成系统、学生获奖信息收集与管理系统
  8. python pdf文件转换word文件
  9. 计算机投针实验程序,蒲丰投针问题
  10. 基金仓位“88%魔咒”再现 百点长阳能否击破?