监控概念及Zabbix部署
1 监控概述
对于监控系统在企业架构中不是新的技术,但却是必不可少的重要组成部分,所谓无监控,不运维!
监控系统可以帮助运维、开发、测试等人员及时的发现服务器出现的故障,并及时的发送告警通知。
对于监控软件所应该具备的功能如下:
指标数据采集(抓取)
指标数据存储
指标数据可视化
故障告警功能
2 监控对象介绍
系统层监控
系统监控:CPU利用率、内存利用率、磁盘IO速度、进程数量、内核完整性等...
网络监控:网络设备进出口流量、工作负载、网络延迟、丢包率等...
中间件监控
消息中间件:kafka、RocketMQ、RabbitMQ等...
Web服务容器:Nginx、Tomcat、httpd、docker、kubernetes等...
数据库及缓存系统:MySQL、PostgreSQL、MongoDB、Redis、ElasticSearch等...
存储系统:Ceph
应用层监控
用于衡量应用程序代码的状态和性能
业务层监控
例如电商网站销售量、转化率等
业务接口:登录数、注册数、订单量、支付数量等
3 Linux系统常用监控命令
以下命令是对系统的CPU、内存、硬盘、网络进行监控的命令
free #查看内存利用率
df #查看正在使用分区利用率
top # 查看系统健康状态(类似windows的任务管理器)
htop #与top相同,查看系统健康状态(系统不自带,在epel源提供)
uptime #查看cpu利用率
iftop #用于显示本机网络流量情况及相互通信的流量集合(默认系统不自带,需安装主包:iftop,依 赖包:flex byacc libpcap ncurses ncurses-devel libpcap-devel )
iostat # iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监 视 (默认系统不自带,需安装:sysstat)
iotop #与iostat类似, 用来监视磁盘I/O使用状况(默认系统不自带,需安装:iotop)
vmstat # 是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、 CPU活动进行监控 (默认系统不自带,需安装:sysstat)
netstat/ss # 用于显示各种网络相关信息,如网络连接,路由表,接口状态连接等
nethogs # 用来按进程或程序实时统计网络带宽使用率(默认系统不自带,epel源安装:nethogs)
ipmi #用于对服务器硬件进行监控(默认系统不自带,需安装:ipmitool)
4 常用的监控软件介绍
Nagios:本身只能做实时的数据监控,无法实现数据的持久化保存,致命缺点无法查询历史数据
Cacti:最初应用在机房做流量方面的监控,致命缺点没有故障告警功能
Ganglia:跟Cactii类似,致命缺点没有故障告警功能
Open-Falcon:小米公司开源的一款监控软件,目前还是比较冷门,很多中间件不支持监控(例如:httpd、Tomcat)
Zabbix:2012年诞生的一款分布式监控系统,功能完善(例如:数据存储、数据可视化、故障告警等)目前主要应用在传统的物理服务器、虚拟机、路由交换领域的监控
Promethues:2016年崛起的一款监控系统,功能完善(例如:数据存储、数据可视化、故障告警等)目前主要应用在云平台、容器等领域的监控
付费的监控软件:
5 Zabbix介绍
Zabbix 是C语言编写的企业级开源免费的分布式监控解决方案,可监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康状况和完整性。
Zabbix 使用灵活的报警通知机制,允许用户为几乎任何事件配置基于电子邮件的警报。这允许对服务器问题做出快速反应。
Zabbix 可通过存储的数据提供出色的报告和数据可视化功能。
6 Zabbix组件
zabbix agent:部署在被监控主机上,负责采集被监控主机上的数据,并将采集到的数据发送给zabbix server
zabbix server:负责接收agent发送的数据,统计数据、管理数据
zabbix database:用于存储所有zabbix的配置信息以及监控数据
zabbix web:管理员通过web界面管理、配置以及查看相关监控信息
zabbix-proxy:分布式监控,用来分担zabbix server的压力
7 zabbix的版本介绍
zabbix稳定版:LTS代表稳定版,官方提供技术支持时间长达5年时间(免费)
zabbix标准版:不带LTS标签,官方提供技术支持时间7个月(免费)
查询地址:https://www.zabbix.com/cn/life_cycle_and_release_policy
8 Zabbix5.0安装步骤
8.1 配置zabbix的存储库
#安装zabbix5.0存储库
[root@zabbix-server ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm -y
#安装zabbix软件包
[root@zabbix-server ~]# yum install zabbix-server-mysql zabbix-agent -y
#可选配置:如果官方仓库无法连接,可将仓库地址改为清华大学,下边是清华大学仓库地址
[root@zabbix-server ~]# vim /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/$basearch/frontend
enabled=0
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/$basearch/debuginfo/
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=0
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=0
#下载CentOS的SCL仓库(SCL是红帽提供的软件集合仓库)
[root@zabbix-server ~]# yum -y install centos-release-scl
#启用zabbix-frontend存储库
root@zabbix-server ~]# vim /etc/yum.repos.d/zabbix.repo
...
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1 #启用仓库
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
#安装Zabbix前端软件包
#zabbix-web-mysql-scl 用于连接数据库
#zabbix-apache-conf-scl 用于连接apache
[root@zabbix-server ~]# yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y
#安装数据库软件
[root@zabbix-server ~]# yum -y install mariadb-server
#启动数据库服务
[root@zabbix-server ~]# systemctl start mariadb
#设置随机自启
[root@zabbix-server ~]# systemctl enable mariadb
#进入数据库
[root@zabbix-server ~]# mysql
#创建存储数据的库,并支持中文(库名:zabbix)
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
#授权连接数据库的用户,并设置密码(用户名:zabbix)
MariaDB [(none)]> create user zabbix@localhost identified by '123456';
#数据库授权
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
#查看所有库
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| zabbix |
+--------------------+
5 rows in set (0.01 sec)
#进入zabbix库
MariaDB [(none)]> use zabbix;
Database changed
#查看当前库下表
MariaDB [zabbix]> show tables;
Empty set (0.00 sec) #空
#在Zabbix服务器主机上,导入初始架构和数据。系统将提示您输入新创建的密码
[root@zabbix-server ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password: password #输入zabbix用户密码
#为Zabbix服务器配置数据库
[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
...
100 DBName=zabbix #存储监控数据的库名
116 DBUser=zabbix #连接数据库的用户
124 DBPassword=123456 #设置zabbix用户密码
#为Zabbix配置正确的时区
[root@zabbix-server ~]# vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
...
php_value[date.timezone] = Asia/Shanghai #亚洲/上海
#启动所有服务
root@zabbix-server ~]# systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
#设置服务随机自启
[root@zabbix-server ~]# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
#查看zabbix服务占用端口信息
[root@zabbix-server ~]# ss -anptul | grep zabbix
tcp LISTEN 0 128 *:10051 #zabbix-server端口
tcp LISTEN 0 128 *:10050 #zabbix-anent端口
8.2 zabbix服务参数介绍
zabbix server服务名:zabbix-server 端口:10051
zabbix agent服务名:zabbix-agent 端口:10050
zabbix server主配置文件:/etc/zabbix/zabbix_server.conf
zabbix agent主配置文件:/etc/zabbix/zabbix_agentd.conf
zabbix企业微信报警脚本路径:/usr/lib/zabbix/alertscripts
zabbix自定义监控项路径:/etc/zabbix/zabbix_agentd.d
zabbix日志文件路径:/var/log/zabbix/
8.3 欢迎页面
从浏览器上打开Zabbix前端访问URL. 如果你是从packages方式安装Zabbix, URL是:
对应Apache: http:///zabbix
对应Nginx: http://
您看到的第一个Web前端安装向导页面如下.
8.4 先决条件检查
请确保先满足所有软件先决条件. 这里的Check of pre-requisites必须全部项目OK后才能继续配置,如有提示fail,去server上检查是否安装这个包或配置是否按上述更改
8.5 配置数据库连接
输入连接数据库所需的详细信息. Zabbix数据库必须先建立好.
8.6 Zabbix server服务器详情
请输入Zabbix服务器详情,可选的输入Zabbix服务器的名字, 然而, 如果输入并提交了, Zabbix服务器的名字将会显示在菜单和页面的标题.
8.7 安装前总结
8.8 完成安装
如果webserver用户对conf/目录有写访问权,配置文件将自动保存,并且可以立即进入下一步
8.9 web界面登录
Zabbix前端已经安装完成! 超级用户名是 Admin, 密码 zabbix
为了防止暴力破解和词典攻击,如果发生连续五次尝试登陆失败,Zabbix接口将暂停30秒。
在下次成功登陆后,将会在界面上显示登录尝试失败的IP地址
8.10 增加用户
可以在 管理(Administration) → 用户(Users)下查看用户信息。
点击 创建用户(Create user)以增加用户。
在添加用户的表单中,请确保将新增的用户添加到了一个已有的用户组,比如'Zabbix administrators'。
所有必填项都以红色星标标记。默认情况下,没有为新增的用户定义媒介(media,即通知发送方式) 。如需要创建,可以到 媒介(Media)标签下,然后点击 增加(Add)。
在这个对话框中,为用户输入一个Email地址。
你可以为媒介指定一个时间活动周期,(访问时间周期说明页面,查看该字段格式的描述)。默认情况下,媒介一直是活动的。你也可以通过自定义触发器严重等级来激活媒介,默认所有的等级都保持开启。
选择用户身份(如果需要该用户接收告警通知,需要超级管理员类型)点击 新增(Add),然后在用户属性表单中点击 新增(Add)。新的用户将出现在用户清单中。
8.11 添加权限
默认情况下,新用户没有访问主机的权限。 若要授予用户权限,请单击“组”列中的用户组(在本例中为"administrators"组)。 在“组属性”表单中,转到“权限”选项卡。
此用户是要有只读访问Linux Server组的权限, 设置权限级别,然后添加到权限列表中。在“用户组属性”表单中,单击“更新。
重要提醒:在Zabbix中,主机的访问权限被分配给用户组而不是单独的用户。
权限设置完成了! 您可以尝试使用新用户的凭据登录。
8.12 Zabbix专业术语概述
这部分统一解释,一些Zabbix常用术语的含义。
主机(host)
你想要监控的联网设备,有IP/DNS。
主机组(host group)
主机的逻辑组;可能包含主机和模板。一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主机组。
监控项(item)
你想要接收的主机的特定数据,一个度量/指标数据。
值预处理(value preprocessing)
转化/预处理接收到的指标数据* 存入数据库之前。
触发器(trigger)
一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式
当接收到的数据高于阈值时,触发器从"OK"变成"Problem"状态。当接收到的数据低于阈值时,触发器保留/返回"OK"的状态。
事件(event)
一次发生的需要注意的事情,例如触发器状态改变、发现/监控代理自动注册
事件标签(event tag)
提前设置的事件标记*可以被用于事件关联,权限细化设置等。
事件关联(event correlation)
自动灵活的、精确的关联问题和解决方案
比如说,你可以定义触发器A告警的异常可以由触发器B解决,触发器B可能采用完全不同的数据采集方式。
异常(problems) - 一个处在"异常"状态的触发器
异常更新(problem update)
Zabbix提供的问题管理选项,例如添加评论、确认异常、改变问题级别或者手动关闭等。
动作(action)
预先定义的应对事件的操作
一个动作由操作(例如发出通知)和条件(*什么时间*进行操作)组成
升级(escalation)
一个在动作内执行操作的自定义方式; 发送通知/执行远程命令的顺序安排。
媒介(media)
发送告警通知的方式;传送途径
通知(notification)
关于事件的信心,将通过选设定的媒介途径发送给用户。
远程命令(remote command)
一个预定义好的,满足特定条件的情况下,可以在被监控主机上自动执行的命令。
模版(template)
一组可以被应用到一个或多个主机上的实体(监控项,触发器,图形,聚合图形,应用,LLD,Web场景)的集合
模版的应用使得主机上的监控任务部署快捷方便;也可以使监控任务的批量修改更加简单。模版是直接关联到每台单独的主机上。
应用(application)
一组监控项组成的逻辑分组
Web场景(web scenario)
检查网站可浏览性的一个或多个HTTP请求
前端(frontend)
- Zabbix提供的web界面
Zabbix API
Zabbix API允许用户使用JSON RPC协议来创建、更新和获取Zabbix对象(如主机、监控项、图形和其他)信息或者执行任何其他的自定义的任务
Zabbix server
Zabbix监控的核心程序,主要功能是与Zabbix proxies和Agents进行交互、触发器计算、发送告警通知;并将数据集中保存等
Zabbix agent
部署在监控对象上的,能够主动监控本地资源和应用的程序
Zabbix proxy
一个帮助Zabbix Server收集数据,分担Zabbix Server的负载的程序
加密(encryption)
支持Zabbix组建之间的加密通讯(server, proxy, agent, zabbix_sender 和 zabbix_get 程序)* 使用TLS(Transport Layer Security )协议
评论区