Saul's blog Saul's blog
首页
后端
分布式
前端
更多
分类
标签
归档
友情链接
关于
GitHub (opens new window)

Saul.J.Wu

立身之本,不在高低。
首页
后端
分布式
前端
更多
分类
标签
归档
友情链接
关于
GitHub (opens new window)
  • Java入门基础

  • Java核心基础

  • 设计模式

  • Web开发

  • SpringBoot

  • 微服务

  • Elasticsearch

  • 运维

    • zabbix学习笔记一
    • zabbix学习笔记二
      • zabbix专有词汇
      • zabbix程序组件
      • 部署zabbix 5.0
        • 部署zabbix服务端
        • 部署zabbix客户端
        • 验证zaabix-agent2的连通性
        • 解决zaabix-server查看的乱码问题
      • 添加zabbix-agent主机
      • 自定义监控内容
        • 从命令行角度
      • 全网监控的方案
        • 监控实施方案
        • 监控服务的具体方法
        • zabbix自动发现,自动注册
        • 自动发现配置
        • 自动注册配置
      • 分布式监控
      • 部署分布式zabbix-proxy
      • web页面添加代理
      • agent使用proxy
      • SNMP监控
  • 后端
  • 运维
SaulJWu
2022-02-28

zabbix学习笔记二

# zabbix专有词汇

对于英文的掌握,是IT人员必须学习的技能,以下是zabbix必须掌握的一些关键词。

  • zabbix server,服务端,收集数据,写入数据
  • Item,对于某一个监控指标,称之为Items,如某台服务器的内存使用状况,就是一个item监控项
  • Trigger,触发器,定义报警的逻辑,有正常,异常,未知三个状态
  • Action,当Trigger符合设定值后,zabbix指定的动作,如发个邮件

# zabbix程序组件

  • zabbix_server
  • zabbix_agentd
  • zabbix_proxy

# 部署zabbix 5.0

# 部署zabbix服务端

1、准备机器,环境初始化

  • 获取ip
ipconfig

ipconfig eth0

ipconfig eht0 |awk 'NR==2{print $2}'
1
2
3
4
5
  • 关闭防火墙
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl disable --now firewalld
# 查看可接受流量
iptables -L
1
2
3
4

2、zabbix-server至少4G硬盘,尽量大一些。

  • 查看硬盘
free -m
1

3、获取zabbix的下载源

# 查看仓库文件
ls /etc/yum.repos.d/
# 打开配置信息,改为阿里云
vim /etc/yum.repos.d/
1
2
3
4

4、更换zabix.repo为阿里云源

sed -i 's#http://repo.zabbix.com#https://mirros.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
1

更换不会有反馈,需要自己打开配置文件查看

cat /etc/yum.repos.d/
1

5、清空yum旧缓存,下载zabbix服务端

yum clean all
yum makecache
yum install zabbix-server-mysql zabbix-agent -y
1
2
3

6、安装软件搜索器,可以在机器上使用多个版本的软件,并且不会影响到系统的依赖环境

yum install centos-release-scl -y^C
1

7、修改zabbix-front前端源,修改如下参数

vim /etc/yum.repos.d/
1

image-20220228144306452

参数如下:

# 把enabled改为1
1

8、安装zabbix前端环境,且是安装到scl环境下

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

9、安装zabbix所需的数据,mariadb

yum install mariadb-server -y
1

10、配置数据库开机启动,并且立刻启动

systemctl enable --now mariadb
1

11、初始化数据库设置密码

systemctl status mariadb

# 设置密码,默认为空
mysql-secure-installation
# 是否要移除用户,是的
# 禁止root远程登录,否
1
2
3
4
5
6

12、添加数据库,并且添加zabbix专用用户

mysql -uroot -p

show databases;
# 创建数据库
create database zabbix character set utf8 collate utf_bin;
# 添加用户 localhost是指允许本机登录
create user zabbix@localhost identified by '你想要的密码';
# 授权
grant all privileges on zabbix.* to zabbix@localhost;
# 刷新授权表
flush privileges;
1
2
3
4
5
6
7
8
9
10
11

13、使用zabbix-mysql命令,导入数据库信息

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

mysql -u后面是用户,-p是密码,空格后面是数据库名

导入完成后,进入数据库,查看有哪些表,检查是否导入成功

mysql -uroot -p

show databases;

use zabbix;

show tables;
1
2
3
4
5
6
7

如果导入成功的话,这些表都会创建成功。

14、修改zabbix-server配置文件,修改数据库的密码

vim /etc/zabbix/zabbix_server.conf
1

检查一下

grep '^DBPa' /etc/zabbix/zabbix_server.conf
1

15、修改zabbix的php配置文件,修改时区Asia/Shanghai

vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
1

检查一下

grep 'timezone' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
1

16、启动zabbix相关服务器

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

17、访问zabbix入口

访问端口测试一下:

ip+/zabbix

image-20220228164212913

配置数据库

image-20220228164506883

细节设置

image-20220228164524785

  • 显示安装细节

image-20220228164541870

安装成功

image-20220228164557357

18、安装成功后默认账号密码

Admin
zabbix
1
2

19.设置zabbix网页端中文

  • user-settings
  • Language选择中文
  • update

还有就是zabbix的仪表板,都可以自定义拖动组件和大小

# 部署zabbix客户端

zabbix5.0版本

agent新版本采用golang语言开发的客户端

由于是go语言开发,部署起来就很方便了,和之前的部署形式不一样了

agent2默认用10050端口,也就是zabbix客户端的端口

  • 旧版本的客户端,zabbix-agent
  • go语言新版客户端,zabbix-agent2

1.机器环境准备,2台zabbix客户端

  • linux-2,zabbix-agent2
  • linux-3,zabbix-agent2

2.注意时间正确

yum install ntpdate -y
ntpdate -u ntp.aliyun.com
1
2

3.时区的统一配置

date # 检查时间是否一致
mv /etc/lcaoltime{,.bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
1
2
3

# 验证zaabix-agent2的连通性

# 解决zaabix-server查看的乱码问题

  • 检测->主机,zabbix默认检测的就是它自己的服务端

zabbix默认检测了服务端本身,但是编码有问题

1.安装字体
yum -y install wqy-microhei-fonts

2.复制字体
\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
1
2
3
4
5

# 添加zabbix-agent主机

模板

  • 我们添加监控项的时候可以直接使用模板,不需要每一个监控项都自己手动添加。
  • 我们只需要选择模板

操作:菜单->报表->主机

  1. 点击创建主机
    1. 主机名称:尽量和Linux hostname保持一致
    2. 可见的名称:在平台上看见的名称,为了通俗易懂,可以使用hostname+ip地址
    3. 群组:Linux servers,把当前加入到Linux主机群组
    4. 客户端Ip:填写IP
    5. DNS名称:不用管,没用到
    6. 端口:默认是10050
    7. 描述:备注信息
    8. 代理程序:不用管

创建完主机后,发现可用性那一列,没一个是绿色的,接下来需要操作:

  1. 编辑主机
  2. 选择模板
  3. 输入Linux,自动搜索出许多模板
  4. 可以使用Template OS linux By Zabbix agent

等待ZBX亮了之后,才算是正常的

# 自定义监控内容

# 从命令行角度

从zabbix-server就可以获取zabbix-agent端的数据

# 查看是否能连接指定机器
zabbix_get -s 'IP' -p 10050 -k 'agent.ping'

# 查看指定机器内核信息
zabbix_get -s 'IP' -p 10050 -k 'system.uname'

# 查看指定机器的名字
zabbix_get -s 'IP' -p 10050 -k 'system.hostname'

# 获取指定机器的指定目录容量占用
zabbix_get -s 'IP' -p 10050 -k `vfs.fs.size[/,used]`

# 获取指定机器的指定目录总大小
zabbix_get -s 'IP' -p 10050 -k `vfs.fs.size[/,total]`

# 查看指定的key
zabbix_get -s 'IP' -p 10050 -k 'login.user'

# 查看zabbix检查自带的登录机器人数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

如果是错误命令,控制行会报错误ZBX_NOTSUPPORTED: Unkown metric xxxx

zabbix-agent端查看有多少登录人数

who | wc -l
1
  • 查看zabbix配置文件
cd /etc/zabbix/zabbix_agent2.
1

# 全网监控的方案

  • 如何快速添加n台机器

思路:

  1. 克隆监控模板
  2. 自动注册和自动发现
  3. 使用zabbix的api接口,利用curl语言,或者开发自己的编程脚本如python等

我们日常使用的各种软件,都是提供了API接口,给开发人员进行修改以及获取数据的。

接口的定义。

# 监控实施方案

从硬件监控角度

配置->模板,可以发现zabbix自带的模板已经包含了常用的监控项

应用服务监控

有关端口的监控,使用zabbix自带的key,net.tcp.port[,8080]

  • rsync服务监控

    • 监控服务器的873端口是存活的
    • 通过key检测873端口,net.tcp.port[,873]
    • 进行数据推拉,检测效果
  • 监控NFS服务是否正常

    • 通过key检测111端口,net.tcp.port[,111]
    • showmount -e ip | wc -l
  • 监控mysql数据库是否正常

    • 通过key检测3306端口,net.tcp.port[,3306]
      • 链接:mysql -uroot -p
    • zabbix自带mysql的监控模板,直接添加模板和mysql的主机关联即可
  • web服务器监控

    • 通过key检测8080端口,net.tcp.port[,8080]
    • zabbix也提供了对web服务器的监控模板

互联网上有大量的监控模板

# 监控服务的具体方法

# 端口检测的命令
netstat
ss
lsof
# 结合grep查看端口是否存货

# 在zabbix服务端
zabbix_get -s 'IP' -p [port] - k 'bash'
1
2
3
4
5
6
7
8

查看进程信息

ps
1

通过客户端连接

web服务器用 curl查询
mysql 用sql语句连接验证
缓存数据库服务 数据读写验证
1
2
3

# zabbix自动发现,自动注册

  1. 准备好一台客户端机器,用来演示自动发现,自动注册
  2. 练习

# 什么是自动发现,自动注册

自动发现(agent2是被动模式)

zabbix server主动的去发现所有的客户端,然后将客户端的信息,登记在服务端的机器上。

缺点是,zabbix-server压力会比较大

如果说你定义了一个网段100~200网段,耗时较久,且压力大

自动注册(agent2是主动模式)

zabbix agent2主动上报自己的信息,发给zabbix-server

缺点是agent2可能找不到server(配置文件写错了,网络不通)

被动模式,主动模式的区别(站在agent2立场)

  • 被动模式,对于agent2就是server来找agent2拿数据
  • 主动模式,agent2主动把数据发给server

# 自动发现配置

# 配置host解析

在服务端和客户端都要配置

# 打开host文件
vim /etc/host

# 服务端
10.211.55.10 tech_linux3
# 客户端
10.211.55.12 zbx-agent05
1
2
3
4
5
6
7
  • 创建发现规则

进入zabbix服务端web配置->自动发现->创建发现规则

image-20220304101109275

  • 配置->动作

启用发现动作

image-20220304101200508

  • 当自动发现配置,可以检测服务端的日志

# 自动注册配置

流程:

  • 准备机器server和agent
  • 修改agent2的配置文件

修改agent2的配置文件

vim /etc/zabbix/zabbix_agent2.conf
1

image-20220304101654727

打开HostnameItem=system.hostname

  • 检查文件
grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf
1

image-20220304101849759

  • 改了配置记得重启zabbix-agent2
systemctl restart zabbix-agent2
1

验证通信

去zabbix-server的web界面,去配置注册动作,

菜单路径:配置->动作

image-20220304102044081

  • 配置动作

image-20220304102228116

这里条件可以去掉

  • 查看zabbix-server日志
tail -f /var/log/zabbix/zabbix_server.log
1
  • 查看zabbix-agent2日志
tail -f /var/log/zabbix/zabbix_agent2.log
1

# 分布式监控

image-20220304102545807

常规监控架构

  • 一台通过zabbix-server去监控多个zabbix-agent
  • 如果都是同一个局域网,没什么问题,不存在网络安全等问题,不会存在网络延时
  • 如果不是同一个局域网,跨数据中心,很可能存在高网络延时,以至于server以为agent宕机了
  • 如果server宕机了,那就检测不到数据了,存在单点故障风险
  • 1个server接收多个agent,压力较大

分布式监控

  • 比如有500台linux,需要负债均衡到server端
  • 通过zabbix-proxy的模式分区接收数据,保存自己本地的数据库当中,达到一定条件之后,汇总发给zabbix-server
  • zabbix-proxy还能解决网络延迟问题

总结来说,分布式监控的作用:

  • 分担server的集中式压力
    • agent->proxy->server
  • 多机房之间的网络延时问题

# 部署分布式zabbix-proxy

image-20220304110207635

1、环境准备,准备3台机器

10.211.55.10 zabbix-server
10.211.55.11 zabbix-proxy
10.211.55.12 zabbix-agent2
1
2
3

2.在学习阶段,关闭防火墙

3台机器都要关闭

# 查看防火墙规则链
iptables -L
1
2

都是默认ACCEPT就行

  • 显示当前SELinux的应用模式,是强制、执行还是停用。
getenforce
1

显示disabled就行

3、确保zabbix-agent自动发现、自动注册都没关闭

之前开过了,就要关闭。

4、zabbix-server端无需变动,运行着就好

5、配置zabbix-proxy服务器,并且部署数据库,用于存储agent2发来的数据,最终发给zabbix-server

  • 配置zabbix5.0的yum源
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.e17.noarch.rpm
1
  • 修改源地址
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
1

6、安装proxy,以及数据库

yum install zabbix-proxy-mysql zabbix-get -y
yum install mariadb-server mariadb -y
1
2

7、启动数据库,配置数据库用户,存储zabbix-agent2信息数据

systemctl start mariadb
1
  • 检查是否启动成功,看3306端口是否在使用就知道了
netstat -tunlp
1
  • 进入mysql,默认没有密码
mysql -uroot -p
1
  • 创建数据库zabbix_proxy,注意结尾有分号
create database zabbix_proxy character set utf8 collate utf8_bin;
1
  • 授予所有权限给zabbix_proxy,以及里面所有的表,验证密码都是zabbix
grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by 'zabbix';
1

说白了就是用户密码都是zabbix

  • 刷新授权表
flush privileges;
1
  • 退出mysql
exit
1

7、导入zabbix-proxy数据库信息

  • 查询sql文件在哪里
rpm -ql zabbix-proxy-mysql
1

image-20220304220119696

  • 把sql文件读取,通过管道写入到数据库里面
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.6/schema.sql.gz | mysql -uzabbix -pzabbix zabbix_proxy
1
  • 导入成功,检测一下
show databases;
use zabbix_proxy;
show tables;
1
2
3

会发现有166行记录,说明数据库基本配置完毕

8、修改zabbix-proxy配置文件,链接数据库的信息

  • 把162行写一个db,修改配置,并且做个.ori的备份文件
sed -i.ori '162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.conf
1
  • 配置zabbix-server端地址
sed -i 's#Server=127.0.01#Server=10.0.1.50#' /etc/zabbix/zabbix_proxy.conf
1
  • 配置zabbix_proxy的hostname,注意这里是配置代理服务器的主机名
sed -i 's#Hostname=Zabbix proxy#Hostname=zbz-agent04#'
1

9、检查代理服务器的配置文件zabbix_proxy

grep '^[A-z]' /etc/zabbix/zabbix_proxy.conf
1

image-20220304221005409

10、启动zabbix-proxy

前面改过了zabbix-proxy的配置文件,要重启后才生效

systemctl restart zabbix-proxy

systemctl status zabbix-proxy
1
2
3

# web页面添加代理

如何在zabbix-server端web页面添加代理

菜单路径:管理->agent代理程序->创建agent代理程序

  • 主动式,是指,客户端主动把数据发给服务端

  • 添加完记得启用

  • 查看zabbix-server服务端日志

tail -f /var/log/zabbix/zabbix_server.log
1
  • 最好在zabbix-server服务端解析代理
cat /etc/hosts
1

image-20220304221805707

  • 查看server端日志,当重启proxy时会立刻发送数据

image-20220304222008044

# agent使用proxy

首先去到zabbix-server的web界面,去配置agent代理,一定要确保主机的名字和zabbix-proxy Linux物理机上的hostname相同,并且最近出现有数据,这才能是保证已经链接上了。

准备一台新的Linux

安装好zabbix-agent2

编辑zabbix-agent2的配置文件

vim /etc/zabbix/zabbix_agent2.conf

# hostname当前主机名字,等下要和zabbix-server那边添加的主机名字保持一致
hostname=zbx-agent-05
# 改为zabbix-proxy的地址
ServerActive=10.211.55.11
# 改为zabbix-proxy的地址
Server=10.211.55.11
1
2
3
4
5
6
7
8

确保你的信息要改正确

grep '^[z-Z]' /etc/zabbix/zabbix_agent2.conf
1

image-20220305100346527

修改完毕后,记得重启zabbix-agent2

systemctl restart zabbix-agent2
1

现在去添加zabbix-agent2

image-20220305100225438

一定要选代理程序

image-20220305100443546

如果ZBX一直没有亮色,去关联一个模板

image-20220305100516713

查看zabbix-proxy的日志

tail -f /var/log/zabbix/zabbix_proxy.log
1

也可以看得到,它检测到了zabbix-agent的加入

image-20220305100800482

而且在zabbix-server端的小绿灯也亮了

image-20220305100925177

# SNMP监控

前言

我们目前的监控形式通过zabbix的形式去监控,都是检测Linux服务器,如果说需要监控打印机或者路由器,就无法使用zabbix-agent的方法去监控了,因为类似路由器无法安装zabbix-agent,但是网络设备都支持SNMP协议。

SNMP是简单网络管理协议

  • 1、zabbix-server安装snmp监控程序
yum -y install net-snmp net-snmp-utils
1
  • 2、开启snmp的配置,并且做好set文件的备份
sed -i.ori '57a view systemview included .1' /etc/snmp/snmpd.conf

# 开启服务
sysetemctl start snmpd.service
1
2
3
4
  • 3、使用snmp命令
# -v指定snmp的版本,-c 暗号,127.9.9.1检测地址,sysname类似zabbix的key,也叫snmp的key
snmp -v 2c -c public 127.9.9.1 sysname
1
2

image-20220305101922188

拿到Linux的主机名字了

  • 4、在zabbix-server去监控snmp

打开zabbix-server的配置

image-20220305102030290

配置关联模板

image-20220305102107956

查看zabbix-server的snmp地址和端口,其实默认端口是161,不过我们还是要查看一下

netsat -tunlp
1

image-20220305102257130

帮我改善此页面 (opens new window)
上次更新: 2022/03/05, 02:24:54
zabbix学习笔记一

← zabbix学习笔记一

最近更新
01
zabbix学习笔记一
02-10
02
Linux访问不了github
12-08
03
记一次MySql UTF-8问题
12-01
更多文章>
Theme by Vdoing | Copyright © 2020-2022 Saul.J.Wu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式