zabbix

监控服务的作用:

  • 当出现一些突发情况,及时响应
  • 及时捕捉证据,追溯相关问题

监控系统性能指标的命令

性能指标:

  • CPU性能

    1
    2
    3
    4
    top
    htop
    uptime
    vmstat
  • 内存

    1
    free
  • 磁盘

    1
    2
    iotop
    df
  • 网络/进程

    1
    2
    3
    iftop
    ps
    pstree

企业常见监控工具

catti:擅长出图,添加监控项很繁琐

nagios:可以添加监控项,但是不可以图形化

ganglia:分布式集群监控系统,适合于对上千台大型规模集群进行监控,性能成本比较低,批量管理更加方便。不可以发送告警。

zabbix:集合了上述的优点

promethus:适合于监控k8s

ELK:日志监控

zabbix相关介绍

Zabbix 是由 Alexei Vladishev 创建,目前是由 Zabbix SIA 在持续开发和提供支持。

Zabbix 是一种企业级的分布式开源监控解决方案。

Zabbix 是一款能够监控众多网络参数和服务器的健康度和完整性的软件。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的警报。这样可以快速相应服务器问题。Zabbix 基于存储的数据提供出色的报告和数据可视化。这些功能使得 Zabbix 成为容量规划的理想选择。

Zabbix 支持轮询和被动捕获。所有的 Zabbix 报告、统计信息和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您的网络状态和服务器健康状况可以从任何地方进行评估。在经过适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于拥有少量服务器的小型组织,还是拥有大量服务器的大型公司而言,同样适用。

Zabbix 是免费的。Zabbix 是根据 GPL 通用公共许可证的第二版编写和分发的。这意味着它的源代码是免费分发的,并且可供公共使用。

zabbix监控服务架构模型

image-20220310152622084

snmp:zabbix监控网络性能所依赖协议

IPMI:用于监控物理硬件性能指标,可以获取物理设备的温度、CPU转速

JMX:监控Java项目所使用的出口。

安装部署zabbix监控架构

部署环境:

系统:centos7

web应用:Nginx

php 72

mariadb

安装部署服务端

1
2
3
4
5
# 配置源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# 安装服务端与客户端
yum install zabbix-server-mysql zabbix-agent
yum install centos-release-scl -y

单独配置前端源

1
2
3
4
5
6
7
# 安装依赖
修改 /etc/yum.repos.d/zabbix.repo
[zabbix-fronted]
enable=1

安装前端包
yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl -y

准备数据库环境

安装数据库MySQL或mariadb

1
2
yum install mariadb-server -y
systemctl start mariadb.service

创建zabbix业务库

1
create database zabbix character set utf8 collate utf8_bin;

授权zabbix用户

1
grant all on zabbix.* to zabbix@localhost identified by 'zabbix';

导入数据库数据

1
2
3
zcat /usr/share/doc/zabbix-server-mysql-5.0.21/create.sql.gz > zabbix.sql
在zabbix.sql首行添加use zabbix;
mysql -uzabbix -pzabbix <zabbix.sql

配置服务端环境

配置zabbix_server连接数据库

1
2
3
vim /etc/zabbix/zabbix_server.conf
DBUser=zabbix
DBPasswd=zabbix

配置Nginx

1
2
3
4
5
6
vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
server_name ip;
listen 80;

vim /etc/opt/rh/rh-nginx116/nginx/nginx.conf
将server块注释掉

配置php

1
2
3
4
5
6
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
listen.acl_users = apache,nginx
php_value[date.timezone] = Asia/Shanghai

vim /etc/opt/rh/rh-php72/php.ini
date.timezone =Asia/Shanghai

重启服务

1
2
3
4
5
6
7
8
9

systemctl stop firewalld
getenforce
setenforce 0

vim /etc/selinux/config
SELINUX=disabled

systemctl start zabbix-server.service rh-php72-php-fpm.service rh-nginx116-nginx.service

在浏览其访问当前部署机器的IP地址即可开始网页安装部署zabbix

zabbix-agent2

zabbix-agent2 作为一款新的agent,未来可能会替代原有的agent。

特性:

  • 降低了TCP连接的数据
  • zabbix-agent2用go语言开发的,集成了zabbix-agent原有的所有功能,并且易于通过插件扩展第三方功能。

安装

1
2
3
4
# 配置源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# 安装
yum install zabbix-agent2 -y

zabbix实战应用讲解

web界面介绍:

主机–>监控项–>模板–>触发器–>执行动作–>告警媒介

添加主机

客户端

1
2
3
4
5
6
7
8
9
10
vim /etc/zabbix/zabbix_agent2.conf
修改 Server=服务端的ip

[root@node1 ~]# getenforce
Enforcing
[root@node1 ~]# setenforce 0
[root@node1 ~]# vim /etc/selinux/config
SELINUX=disabled

systemctl start zabbix-agent2.service

服务端

模板选择Linux第一个

添加监控项

客户端自定义监控取值

1
2
3
1.通过shell命令获取到关键数据
2.将命令与key名配置文件中定义好
3.服务端通过zabbix-get命令测试获取键值对

案例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 取当前用户连接数
[root@node1 ~]# w
15:39:59 up 34 min, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.31.33 15:05 7.00s 0.02s 0.00s w
[root@node1 ~]# w | awk '{print $5}'
1
IDLE
6.00s
[root@node1 ~]# w | awk 'NR==1{print $5}'
1

# 将命令放入zabbix配置文件中
[root@node1 zabbix]# vim /etc/zabbix/zabbix_agent2.conf
# UserParameter=
UserParameter=User_num,w | awk 'NR==1{print $5}'

# 重启服务
[root@node1 zabbix]# systemctl restart zabbix-agent2

去服务端测试一下

1
2
3
[root@control ~]# yum install zabbix-get
[root@control ~]# zabbix_get -s 192.168.31.145 -k User_num
1

服务端

Snipaste_2022-03-11_21-08-47

企业案例:通过zabbix监控nginx的服务运行状态

触发器

监控项:用于监控数据

触发器:对性能指标异常的数据进行报警

触发器配置界面

示例:

在触发器和监控项中有修改主机名会提示

修改node1的主机名后就出现了提示信息

添加触发器

添加几个连接后就会触发报警

在恢复项也可以设置恢复的触发

减少用户连接后就可以恢复

异常用户触发器

1
2
3
4
5
6
[root@node1 ~]# w | awk 'NR>2{print $3}' | uniq -c
1 192.168.31.33
[root@node1 ~]# w | awk 'NR>2{print $3}' | uniq -c | wc -l
1
[root@node1 ~]# w | awk 'NR>2{print $3}' | sort -r | uniq -c | wc -l
1

邮件提示设置

配置发件人:

这里的密码是邮箱授权码

配置收件人:

Snipaste_2022-04-02_15-42-08

配置动作

Snipaste_2022-04-02_15-45-01

Snipaste_2022-04-02_15-45-15

之后就会触发动作发邮件

Snipaste_2022-04-02_15-52-18

zabbix通过percona对mysql进行监控

percona:专门应用于针对数据库进行自动化维护的工具

通过zabbix监控mysql步骤:

准备服务端

下载percona插件

1
2
3
wget https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/6/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm

[root@control home]# yum localinstall percona-zabbix-templates-1.1.8-1.noarch.rpm

文件结构介绍

1
2
3
4
5
6
7
8
9
[root@control home]# rpm -ql percona-zabbix-templates
/var/lib/zabbix/percona
/var/lib/zabbix/percona/scripts # 插件脚本存放位置
/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh # shell脚本,用于针对监控数据进行取值
/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php # php脚本,真正获取mysql数据库数据的脚本
/var/lib/zabbix/percona/templates
/var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf # zabbix-agent客户端监控项配置文件
/var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
# 模板(监控项+触发器+自动发现+图像化展示等)

准备服务端

下载percona插件

1
2
3
4
5
6
wget https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/6/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm

[root@control home]# yum localinstall percona-zabbix-templates-1.1.8-1.noarch.rpm

# 要求php7以上,默认安装是5
# 安装方法
1
2
3
4
5
6
7
8
9
cd /var/lib/zabbix/percona/templates/

[root@node1 templates]# cp -a userparameter_percona_mysql.conf /etc/zabbix/zabbix_agent2.d/

[root@node1 templates]# systemctl restart zabbix-agent2.service

# 测试
[root@node1 templates]# zabbix_agent2 -t MySQL.Questions
MySQL.Questions [s|]

SNMP协议监控网络设备及固件

作用:snmp协议主要针对于无法使用zabbix客户端监控的设备对象,对于zabbix监控起到补充作用

1
2
3
4
5
路由器
交换机
打印机
UPS
支持SNMP协议,snmp服务器配置,交互上zabbix服务端

版本管理:

1
2
3
1. SNMPv1:最初版本,容易实现操作成本低,海量数据的读取能力比较薄弱,没有合理安全机制
2.SNMPv2c:目前大部分网络设备厂商主要支持的协议,增加了GetBulk和inform操作
3.SNMPV3:安全比较高,环境适应性好,易扩展

zabbix实现自动化监控