【 Zabbix 】

Zabbix概述

Zabbix 是一款可监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康状况和完整性。
Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的警报。
这允许对服务器问题做出快速反应。
Zabbix 基于存储的数据提供报告和数据可视化功能。
这使得 Zabbix 成为容量规划的理想选择。

Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。
Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。
这样可以快速反馈服务器的问题。
基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。

Zabbix特性

1.数据收集

可用性和性能采集;
支持 SNMP(包括主动轮询和被动捕获)、IPMI、JMX、VMware 监控;
自定义检查;
按照自定义的时间间隔采集需要的数据;
通过 Server/Proxy 和 Agents 来执行数据采集。

2.灵活的阈值定义

您可以定义非常灵活的告警阈值,称之为触发器,触发器从后端数据库获得参考值。

3.高度可配置化告警

可以根据递增计划、接收者、媒介类型自定义发送告警通知;
使用宏变量可以使告警通知变得更加高效有益;
自动动作包含远程命令。

4.实时绘图

使用内置图形功能可实以将监控项绘制成图形。

5.WEB监控功能

Zabbix 可以追踪模拟鼠标在 Web 网站上的点击操作,来检查 Web 网站的功能和响应时间。

6.丰富的可视化选项

能够创建可以将多个监控项组合到单个视图中的自定义图形;
网络拓扑图;
以仪表盘样式展示自定义聚合图形和幻灯片演示;
报表;
监控资源的高层次(业务)视图。

7.历史数据存储

存储在数据库中的数据;
可配置的历史数据;
内置数据管理机制(housekeeping)

8.易配置

将被监控设备添加为主机;
主机一旦添加到数据库中,就会采集主机数据用于监控;
将模板用于监控设备。

9.模板功能

在模板中分组检查;模板可以关联其他模板,获得继承。

10.网络发现

自动发现网络设备;
Zabbix Agent 发现设备后自动注册;
自动发现文件系统、网络接口和 SNMP OIDs 值。

11.页面展示

基于 PHP 的 Web 前端;
可以从任何地方访问;
您可以定制自己的操作方式;
审计日志。

12. zabbix api

Zabbix API 为 Zabbix 提供可编程接口,用于批量操作、第三方软件集成和其他用途。

13.权限系统

安全的用户身份验证;将特定用户限制于访问特定的视图。

14.易扩展

部署于被监控对象上;完美支持 Linux 和 Windows ;

15.二进制守护进程

为了更好的性能和更少的内存占用,采用 C 语言编写;便于移植。

16.适用复杂网络环境

使用 Zabbix Proxy 代理,可以轻松实现分布式远程监控。

Zabbix 基础架构

在这里插入图片描述

Zabbix server

zabbix server 是整个 Zabbix 软件的核心程序。

Zabbix Server 负责执行数据的主动轮询和被动获取,计算触发器条件,向用户发送通知。
它是 Zabbix Agent 和 Proxy 报告系统可用性和完整性数据的核心组件。
Server 自身可以通过简单服务远程检查网络服务(如Web服务器和邮件服务器)。

Zabbix Server是所有配置、统计和操作数据的中央存储中心,也是Zabbix监控系统的告警中心。
在监控的系统中出现任何异常,将被发出通知给管理员。

基本的 Zabbix Server 的功能分解成为三个不同的组件。
他们是:Zabbix server、Web前端和数据库。

Zabbix 的所有配置信息都存储在 Server 和Web前端进行交互的数据库中。
例如,当你通过Web前端(或者API)新增一个监控项时,它会被添加到数据库的监控项表里。
然后,Zabbix server 以每分钟一次的频率查询监控项表中的有效项,接着将它存储在 Zabbix server 中的缓存里。
这就是为什么 Zabbix 前端所做的任何更改需要花费两分钟左右才能显示在最新的数据段的原因。

Zabbix agent

Zabbix agent 部署在被监控目标上,以主动监控本地资源和应用程序(硬盘、内存、处理器统计信息等)。

Zabbix agent 收集本地的操作信息并将数据报告给 Zabbix server 用于进一步处理。一旦出现异常 (例如硬盘空间已满或者有崩溃的服务进程),Zabbix server 会主动警告管理员指定机器上的异常。

Zabbix agents 的极高效率缘于它可以利用本地系统调用来完成统计数据的采集。

一、Zabbix-server部署

1.获取zabbix官⽅源

rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# 修改为阿里源
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
yum clean all
yum makecache

2.安装zabbix server和agent

yum install zabbix-server-mysql zabbix-agent -y

3.安装 Software Collections

yum install centos-release-scl -y

4.修改zabbix前端源

vim /etc/yum.repos.d/zabbix.repo 
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$b
asearch/frontend
enabled=1     #修改这⾥为1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

5.安装zabbix前端环境

yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y

6.安装zabbix所需的数据库,直接⽤centos7⾃带的mariadb

yum install mariadb-server -y

7.启动数据库,且配置开机启动

systemctl enable --now mariadb
#Created symlink from /etc/systemd/system/multiuser.target.wants/mariadb.service to/usr/lib/systemd/system/mariadb.service.

8.初始化mariadb,设置root密码,123456

mysql_secure_installation

9.使⽤root⽤户登录mariadb,建⽴zabbix数据库,这⾥的编码设置,⾮常重要,否则zabbix⽆法安装

create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by '123456';
grant all privileges on zabbix.* to zabbix@localhost;
flush privileges;
quit;

10.导⼊ zabbix 数据库,zabbix 数据库⽤户为 zabbix,密码为123456

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

11.修改 zabbix server 配置⽂件/etc/zabbix/zabbix_server.conf⾥的数据库密码

grep '^DBPassword' /etc/zabbix/zabbix_server.conf
DBPassword=123456

12.修改 zabbix 的 php 配置⽂件 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf ⾥的时区

grep 'timezone' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai

13.启动相关服务

systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

14.访问zabbix⼊⼝

$ip/zabbix
#登录账号为 Admin,密码:zabbix,注意⼤⼩

15.为修改中文界面

User settings > Language > Chinses

16.主机图表中文乱码问题

# 安装字体,这里选择文泉驿微米黑字体
yum install -y wqy-microhei-fonts.noarch
update-alternatives --install /usr/share/zabbix/assets/fonts/graphfont.ttf zabbix-web-font /usr/share/fonts/wqy-microhei/wqy-microhei.ttc 10
# 配置字体
update-alternatives --config zabbix-web-font
# 重启Zabbix-Server服务
systemctl restart zabbix-server

二、Zabbix-agent2部署

1.获取zabbix官⽅源

rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# 修改为阿里源
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
yum clean all
yum makecache

2.注意时间正确

yum install ntpdate -y
ntpdate -u ntp.aliyun.com
# 修改时区
mv /etc/localtime{,.bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

3.安装zabbix-agent2

yum install zabbix-agent2 -y
# 默认配置文件
/etc/zabbix/zabbix_agent2.conf
# 默认二进制文件
/usr/sbin/zabbix_agent2

6.启动zabbix-agent2且开机⾃启

systemctl enable --now zabbix-agent2

7.检查端口

netstat -ntlp | grep zabbix
tcp6 0 0 :::10050 :::*  LISTEN 1236/zabbix_agent2

8.修改配置文件

grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=1.1.1.1         #修改为本机ip
ServerActive=2.2.2.2   #修改为Zabbix-server机ip
Hostname=zbz-agent-1   #修改为本机主机名
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock

9.重启zabbix-agent2

systemctl restart zabbix-agent2

三、Zabbix词汇

zabbix server       服务端,收集数据,写⼊数据
zabbix agent        部署在被监控的机器上,是⼀个进程,和zabbix server进⾏交互,以及负责执⾏命令
Host                服务器的概念,指zabbix监控的实体,服务器,交换机等
Hosts               主机组
Applications        应⽤
Events              事件
Media               发送通知的通道
Remote command      远程命令
Template            模板
Item                对于某⼀个指标的监控,称之为Items,如某台服务器的内存使⽤状况,就是⼀个item监控项
Trigger             触发器,定义报警的逻辑,有正常,异常,未知三个状态
Action              当Trigger符合设定值后,zabbix指定的动作

四、Zabbix程序组件

Zabbix_server       服务端守护进程
Zabbix_agentd       agent守护进程
zabbix_proxy        代理服务器
zabbix_database     存储系统,mysql,pgsql
Zabbix_web          web GUI图形化界⾯
Zabbix_get          命令⾏⼯具,测试向agent发起数据采集请求
Zabbix_sender       命令⾏⼯具,测试向server发送数据
Zabbix_java_gateway java⽹关

五、Zabbix_get工具使用

zabbix_get -s '1.1.1.1' -p 10050 -k 'system.hostname'   #获取主机名
zabbix_get -s '1.1.1.1' -p 10050 -k 'system.uname'      #获取内核信息

常用key
agent.ping               #ping存活探测 1为通 0为不通
net.tcp.port[,3306]      #探测3306端口是否启用 1为启用 0为关闭
proc.num[mysqld]         #获取mysqld的进程数
system.cpu.num           #获取cpu核数
system.uname             #获取系统信息
system.hostname          #获取主机名
net.if.out[eth0,bytes]   #获取eth0网卡出口流量
net.if.in[eth0,bytes]    #获取eth0网卡监控流量
net.if.discovery         #自动发现网卡并监控流量
vm.memory.size[total]    #查看系统内存大小 单位bytes
vfs.file.size[file]      #查看文件大小 单位bytes
vfs.file.exists[file]    #查看文件是否存在 存在返回0 0不存在返回1
vfs.file.md5sum[file]    #查看文件md5值
vfs.fs.discovery         #自动发现分区及分区挂在情况

#以上是常用的key,其实监控服务器无非就是内存、硬盘占用、CPU负载、流量、服务器和端口等情况。
#如果要监控其他的可以自定义key来实现,本人喜欢自定义key,写个脚本来返回,得到自己想要的监控结果。
#zabbix在这块做的非常好,扩展性很强,支持各种脚本来实现自定义的key。

六、自定义监控key

添加主机可默认使用linux-server群组 linux-server模板监控
1.配置文件路径

/etc/zabbix/zabbix_agent2.d/

2.配置文件导入

# zabbix配置⽂件,⼤多数软件配置都会使⽤include形式来优化配置⽂件
grep -i '^include' /etc/zabbix/zabbix_agent2.conf
Include=/etc/zabbix/zabbix_agent2.d/*.conf
#也可以单独Include指定某个conf
Include=/etc/zabbix/zabbix_agent2.d/keys.conf

3.自定义key语法

UserParameter=<key>,<shell command>
UserParameter=login.user,who|wc -l
UserParameter=login.user2,/bin/sh /server/scripts/login.sh
# 要注意的是key名要唯⼀,可以写⼊多个key

4.重启重载zabbix-agent2

# 每次新增或修改都需要重载生效
systemctl restart zabbix-agent2

5.zabbix-server端测试

zabbix_get -s '1.1.1.1' -p 10050 -k "login.user"

6.dashboard页面配置

创建模板
创建应⽤集:对监控项分类
创建监控项:定义item,监控的内容
创建触发器:当监控项获取到值,且达到触发条件就会告警
创建图形
主机进⾏模板关联:一个主机可以关联多个模板

七、邮件报警

1.dashboard界面配置

界面 > 管理 > 报警媒介 > Email   #本次使用个人163邮箱测试
SMTP服务器:smtp.163.com
端口:25
SMTP HELO:163.com
SMTP电邮:*.163.com
用户密码认证:密码为网易邮箱授权码

2.网易授权码获取

界面 > 设置 > POP3/SMTP/IMAP > 开启SMTP

3.设置收件人邮箱

界面 > 用户设置 > 报警媒介 > 添加

八、zabbix接口

curl -i -X POST -H 'Content-Type:application/json' -d'{"jsonrpc":"2.0","method":"user.login","params":{"user":"Admin","password":"zabbix"},"auth": null,"id":0}' "http://192.168.100.30/zabbix/api_jsonrpc.php"

九、监控服务通用方法

1.服务端口监控

自带端口监控key:net.tcp.port[,3306]
或者自建key 使⽤netstat、ss、lsof等命令
结合grep查看是否有结果

2.进程监控

自带进程监控key:proc.num[mysqld]
或创建key 通过ps结合grep查看

3.模拟客户端探测

web服务,通过curl、wget命令访问
mysql,SQL语句验证
memcached,set写⼊,get获取,查看结果

十、自动发现/自动注册

被动模式

1.配置自动发现规则
界面 > 配置 > 自动发现 > 创建规则
2.创建发现自动注册动作
界面 > 动作 > 操作细节

主动模式

1.新增机器配置zabbix-agent2 参照本文二配置
修改配置文件步骤多一行
HostnameItem=system.hostname
2.启动zabbix-agent2
systemctl start zabbix-agent2
3.创建动作
界面 > 配置 > 动作 > Autoregistration actions > 创建动作 > 条件 > 主机名称 包含 主机名特定值 > 操作 > 添加主机 群组 模板

十一、分布式监控

利用zaabbix-proxy代理实现分布式监控 负载均衡
agent > proxy > server
搭建zabbix-proxy
# 获取zabbix官方源
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# 修改为阿里源
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
yum clean all
yum makecache
# 安装proxy,以及数据库
yum install -y zabbix-proxy-mysql zabbix-get
# 启动数据库,配置数据库用户,存取agent数据
yum install mariadb-server mariadb -y
systemctl start mariadb
# 配置数据库
mysql
# mysql修改密码
update user set authentication_string=password('新密码') where user='root';
flush privileges;
# 建zabbix-proxy库
create database zabbix_proxy character set utf8 collate utf8_bin;
grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by 'zabbix';
flush privileges;
exit;
# 导入mysql数据
rpm -ql zabbix-proxy-mysql
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.23/schema.sql.gz | mysql -uzabbix -pzabbix zabbix-proxy
mysql
use zabbix_proxy;
show tables;
exit;
# 修改zabbix-proxy配置文件,链接数据库
sed -i.ori '162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.conf
sed -i 's/Server=127.0.0.1/Server=192.168.100.150/g' /etc/zabbix/zabbix_proxy.conf
sed -i 's/Hostname=Zabbix proxy/Hostname=zabbix-proxy/g' /etc/zabbix/zabbix_proxy.conf
# 检查配置
egrep 'Server|DBPassword|Hostname' /etc/zabbix/zabbix_proxy.conf | grep -v '#'
grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf
ProxyMode=1   # 0为主动 1为被动
Server=192.168.100.150   # zabbix-server地址
Hostname=zabbix-proxy   #本机主机名
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBPassword=zabbix
DBName=zabbix_proxy
DBUser=zabbix
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
# 启动zabbix-proxy
systemctl restart zabbix-proxy
# 在server页面添加proxy
界面 > 管理 > agent代理程序 > 创建代理
# 注意主机名需要跟配置Hostname一致
# agent连接proxy
# 将agent配置修改为proxy地址
Server=$proxy_ip
ServerActive=$proxy_ip
# 在界面上添加主机到proxy代理
添加主机 在agent代理程序选中proxy

十二、Snmp监控

1、服务端安装snmp协议
yum -y install net-snmp net-snmp-utils
2、开启snmp配置
sed -i.ori '57a view    systemview    included   .1' /etc/snmp/snmpd.conf
systemctl start snmpd
3、使用snmp命令
snmpwalk -v 2c -c public 127.0.0.1 sysname
-v   版本
-c   指定暗号
sysname   snmp的key
4、主机添加snmp协议
界面 > 配置 > 主机 > Interface > 添加snmp监控模板
注意snmpd服务端口正确

学习资料
http://t.csdn.cn/o60vx
https://www.zabbix.com/documentation/current/manual/definitions
https://www.bilibili.com/video/BV1WF411z7VZ?p=26&share_source=copy_web

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值