【zabbix监控软件(配置及常用键值)】

监控软件--zabbix

同类产品:nagios、cacti

简介:能够部署企业级监控平台。

复制代码
监控范围
1)zabbix + SNMP 监控网络设备
防火墙、交换机
2)zabbix + agent 监控
服务器:raid插槽 CPU 内存插槽 温度 风扇
操作系统:centos7 centos6 各种windows
应用软件:几乎所有的应用软件都可以监控
3)zabbix + ping(fping) 监控
节点的存活状态
4)zabbix + port 监控
服务的存活状态
5)zabbix + web 监控
服务的存活状态
6)zabbix + 数据收集 展示各个节点、服务的运行状态
zabbix 取到的值必须是数

官方网站:zabbix

复制代码
zabbix的架构:
zabbix server	监控端
zabbix server:负责与被监控端或z proxy通信,将采集到的监控数据保存到z mysql中,然后通过web界面展示;
zabbix mysql:负责保存z server采集到的监控数据,数据类型是数,注意硬盘IO
zabbix proxy:部署在被监控端的x机房内部,在agent看来,就是z server,将采集到的数据传输给异地的z server。
zabbix agent	被监控端

部署步骤:

一、服务端配置

  1. 部署 z mysql

    [root@zmysql ~]# rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

    [root@zmysql ~]# wget http://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

    [root@zmysql ~]# ls /etc/yum.repos.d/zabbix.repo
    /etc/yum.repos.d/zabbix.repo

    [root@zmysql ~]# yum install -y mariadb mariadb-server zabbix-server-mysql

    [root@zmysql /usr/share/mysql]# cp my-huge.cnf /etc/my.cnf
    cp: overwrite '/etc/my.cnf'? y

    [root@zmysql ~]# vim /etc/my.cnf
    server-id = 72
    log_slave_updates
    binlog-ignore-db = mysql
    datadir = /data/mysql

    [root@zmysql ~]# mkdir -p /data/mysql
    [root@zmysql ~]# chown -R mysql:mysql /data/mysql/

    [root@zmysql ~]# systemctl start mariadb
    [root@zmysql ~]# systemctl enable mariadb

    [root@zmysql ~]# cd /data/mysql/
    [root@zmysql /data/mysql]# ls

    [root@zmysql ~]# mysql
    MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
    MariaDB [(none)]> grant all on zabbix.* to zabbix@'172.16.%' identified by '12345';
    MariaDB [(none)]> flush privileges;
    MariaDB [(none)]> quit

    导入数据:
    [root@zmysql ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.15/
    [root@zmysql /usr/share/doc/zabbix-server-mysql-3.4.15]# ls
    AUTHORS ChangeLog COPYING create.sql.gz NEWS README
    [root@zmysql /usr/share/doc/zabbix-server-mysql-3.4.15]# gunzip create.sql.gz
    [root@zmysql /usr/share/doc/zabbix-server-mysql-3.4.15]# mysql zabbix < create.sql

    [root@zmysql ~]# mysql zabbix
    MariaDB [zabbix]> show tables;
    看到导入的表,OK!

  2. 部署 z server

    [root@zmysql ~]# scp zabbix-release-3.4-2.el7.noarch.rpm 172.16.0.71:/root/

    [root@zserver ~]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm

    [root@zserver ~]# yum install -y httpd php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlpc php-mbstring php-bcmath php-mhash zabbix-server-mysql zabbix-web-mysql zabbix-java-gateway zabbix-get

    支持中文:
    [root@zserver /usr/share/fonts]# mkdir simkai

    在windows C:\Windows\Fonts
    楷体常规
    把字体文件导入该目录下

    [root@zserver /usr/share/fonts/simkai]# ls
    SIMKAI.TTF
    [root@zserver /usr/share/fonts/simkai]# mv SIMKAI.TTF simkai.ttf

    [root@zserver /usr/share/zabbix/include]# vim defines.inc.php
    53 define('ZBX_FONTPATH', '/usr/share/fonts/simkai');
    54 define('ZBX_GRAPH_FONT_NAME', 'simkai')

启动httpd

复制代码
[root@zserver ~]# vim /etc/httpd/conf/httpd.conf
164     DirectoryIndex index.php index.html

[root@zserver ~]# vim /etc/php.ini
 384 max_execution_time = 300
 394 max_input_time = 300
 672 post_max_size = 16M
 878 date.timezone = Asia/Shanghai

[root@zserver ~]# systemctl start httpd
[root@zserver ~]# systemctl enable httpd

编辑配置文件:
[root@zserver /etc/zabbix]# vim zabbix_java_gateway.conf 
  9 LISTEN_IP="0.0.0.0"
 17 LISTEN_PORT=10052
 35 START_POLLERS=50

zabbix用于监控java程序的配置

[root@zserver /etc/zabbix]# vim zabbix_server.conf 
	zabbix的主配置文件
 91 DBHost=172.16.0.72
100 DBName=zabbix
116 DBUser=zabbix
124 DBPassword=12345
131 DBSocket=/var/lib/mysql/mysql.sock
139 DBPort=3306
	z server 连接 z mysql 的配置	

261 JavaGateway=localhost
269 JavaGatewayPort=10052
277 StartJavaPollers=50
	z server 连接 java程序的配置
	z server 启动多少个线程与监控java程序的应用连接

启动服务:
[root@zserver ~]# systemctl start zabbix-java-gateway
[root@zserver ~]# systemctl enable zabbix-java-gateway

[root@zserver ~]# systemctl start zabbix-server
[root@zserver ~]# systemctl enable zabbix-server

[root@zserver ~]# systemctl restart httpd

[root@zserver ~]# netstat -antp | grep 1005[12]
tcp    0   0 0.0.0.0:10051     0.0.0.0:*      LISTEN      1426/zabbix_server  
tcp6   0   0 :::10051          :::*           LISTEN      1426/zabbix_server  
tcp6   0   0 :::10052          :::*           LISTEN      1388/java 

错误日志

root@zserver \~\]# cd /var/log/zabbix/ \[root@zserver /var/log/zabbix\]# ls zabbix_java_gateway.log zabbix_server.log 浏览器访问:http://172.16.0.71/zabbix/ 用户名:Admin 密码: zabbix 二、监控节点配置 1. zabbix agent -- centos7 [root@zmysql ~]# scp zabbix-release-3.4-2.el7.noarch.rpm 172.16.0.31:/root/ [root@nginx1 ~]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm [root@nginx1 ~]# yum install -y zabbix-agent zabbix-sender [root@nginx1 ~]# cd /etc/zabbix/ [root@nginx1 /etc/zabbix]# ls zabbix_agentd.conf zabbix_agentd.d [root@nginx1 /etc/zabbix]# vim zabbix_agentd.conf 97 Server=172.16.0.71 ## z server的IP 138 ServerActive=172.16.0.71:10051 ## z server的IP:port 149 Hostname=SY172.16.0.31 ## 定义本机的主机名 [root@nginx1 ~]# systemctl start zabbix-agent [root@nginx1 ~]# systemctl enable zabbix-agent [root@nginx1 ~]# netstat -antp | grep 10050 tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 1050/zabbix_agentd tcp6 0 0 :::10050 :::* LISTEN 1050/zabbix_agentd 添加主机: 主机名称:配置文件中定义的 可见的名称:有意义 项目名-角色-IP 群组:如果没有,需要创建 接口: 主机群组:自带一部分,zabbix原生模板 定义主机组:按照项目规划 模板: 原生模板 从第三方 git-hub上下载的 自定义模板 应用集:一类监控项的归纳 监控项:负责从 z agent 取到监控数据的 名称:有代表意义,中间不要带 "空格" 触发器:这个监控项有几个触发器 键值:使用键值才能从agent取到数据 间隔:z server 间隔多长时间去 agent 取一次数据 历史记录:历史数据的保存时间 建议 1w 趋势:在一段时间内,采集的数据是呈现上升或是下降 类型:监控项的类型 应用集 状态:已启用 停用的 未支持的 触发器:当z server采集到的数据达到触发器的阈值,就会触发报警 图形:展示采集到的数据 主机:监控对象 维护:在维护周期时间内,不会触发报警 动作:当触发器的阈值被触发以后,动作会给报警媒介发送消息,给报警接收人发送报警信息 自动发现:可以批量添加主机 > z server使用 键值 采集agent数据,保存在 z mysql中,数据会以图谱的形式在web界面展示。 > > 当采集到的数据达到触发器的阈值时,会触发报警动作,通过报警媒介给报警接收人发送消息。 三、自定义模板 1. 使用原生键值 (1)CPU CPU 的负载 system.cpu.load[,avg1] CPU 的 idle system.cpu.util[,idle] (2)内存 vm.memory.size[] 剩余 vm.memory.size[pavailable] 使用 vm.memory.size[pused] 总 vm.memory.size[total] (3)交换分区 空闲百分比 system.swap.size[,pfree] 使用百分比 system.swap.size[,pused] (4)硬盘 读 vfs.dev.read[,,] vfs.dev.read[/dev/mapper/centos-root,sps] 写 vfs.dev.write[,,] vfs.dev.write[/dev/mapper/centos-root,sps] 分区的使用情况 inode vfs.fs.inode[fs,] vfs.fs.inode[/,pfree] block vfs.fs.size[fs,] vfs.fs.size[/,pfree] (5) 网卡的IO In net.if.in[ens32] Out net.if.out[ens32] **在 z server 校验键值** > \[root@zserver \~\]# zabbix_get -s 172.16.0.31 -p 10050 -k vfs.fs.size\[/,pfree

97.152441

root@zserver \~\]# zabbix_get -s 172.16.0.31 -p 10050 -k vfs.fs.inode\[/,pfree

99.832706

四、监控服务的端口和状态:

复制代码
端口:
	apache	tcp/80
	nginx	tcp/80
	mysql	tcp/3306
	tomcat	tcp/8080
	NFS		tcp/2049
	ftp		tcp/21

net.tcp.listen[port] 
监控端口的监听状态
[root@zserver ~]# zabbix_get -s 172.16.0.31 -p 10050 -k net.tcp.listen[80]
1

net.tcp.port[<ip>,port] 
监控端口是否可以被连接
[root@zserver ~]# zabbix_get -s 172.16.0.31 -p 10050 -k net.tcp.port[,80]
1

net.tcp.service[service,<ip>,<port>] 
监控服务是不是down了
[root@zserver ~]# zabbix_get -s 172.16.0.31 -p 10050 -k net.tcp.service[http,,80]
1

五、监控mysql-server

复制代码
1 安装软件
[root@nginx1 ~]# scp zabbix-release-3.4-2.el7.noarch.rpm 172.16.0.51:/root/

[root@mysqlA1 ~]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm 

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

2 写配置文件
[root@nginx1 ~]# scp /etc/zabbix/zabbix_agentd.conf 172.16.0.51:/etc/zabbix/

[root@mysqlA1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Hostname=SY172.16.0.51

3 启动服务
[root@mysqlA1 ~]# systemctl start zabbix-agent
[root@mysqlA1 ~]# systemctl enable zabbix-agent

[root@mysqlA1 ~]# netstat -antp | grep 10050
tcp    0  0 0.0.0.0:10050    0.0.0.0:*   LISTEN      1295/zabbix_agentd  
tcp6   0  0 :::10050         :::*        LISTEN      1295/zabbix_agentd

4 浏览器添加主机
  • 二进制安装需要注意userparameter_mysql.conf

    [root@mysqlA1 /etc/zabbix/zabbix_agentd.d]# ls
    userparameter_mysql.conf

    [root@mysqlA1 /etc/zabbix/zabbix_agentd.d]# vim userparameter_mysql.conf

    UserParameter=mysql.status[*],echo "show global status where Variable_name='1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $2}'

    复制代码
      UserParameter=	自定义键值
      mysql.status[*]	键值;* 通配符
      ,	键值 和 shell命令的分隔符

    (1) root 密码
    UserParameter=mysql.status[*],echo "show global status where Variable_name='1';" | HOME=/var/lib/zabbix mysql -u root -p'密码' -N 2> /dev/null | awk '{print $2}'

    (2) bin包安装
    UserParameter=mysql.status[*],echo "show global status where Variable_name='1';" | HOME=/var/lib/zabbix /usr/local/mysql/bin/mysql -u root -p'密码' -N 2> /dev/null | awk '{print $2}'

六、监控nginx状态

复制代码
NginxStatus

在虚拟主机里面添加:
        location /NginxStatus {
            stub_status on;
        }

[root@nginx1 /usr/local/nginx]# ./sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@nginx1 /usr/local/nginx]# ./sbin/nginx -s reload

[root@nginx1 ~]# curl http://127.0.0.1/NginxStatus
Active connections: 1 	要这个
server accepts handled requests
 4 4 2 
Reading: 0 Writing: 1 Waiting: 0 

[root@nginx1 ~]# curl http://127.0.0.1/NginxStatus 2> /dev/null | awk '/Active/{print $NF}'
1

自定义键值:
[root@nginx1 /etc/zabbix/zabbix_agentd.d]# vim userparameter_nginx.conf 
UserParameter=nginx.active,curl http://127.0.0.1/NginxStatus 2> /dev/null | awk '/Active/{print $NF}'

[root@nginx1 ~]# systemctl restart zabbix-agent

z server测试:
[root@zserver ~]# zabbix_get -s 172.16.0.31 -p 10050 -k nginx.active
1

七、配置报警

复制代码
1. 数据采集 已经完成

2. 配置触发器

(1)资源类
	cpu
		load
		idle剩余率
			15	警告级别
			10	严重级别
			5	错误(灾难)级别
当前最新的idle剩余率<=15  并且 5分钟之内一直在持续这个状态
	last() <=15 and max(5m) <=15

内存剩余率
		15	警告级别
		10	严重级别
		5	错误(灾难)级别
当前最新的内存剩余率 <= 15
	last(#1) <=15
	last(0)  <=15
	last()   <=15

硬盘inode和block剩余率
		15	警告级别
		10	严重级别
		5	错误(灾难)级别

网卡流量
		
swap的剩余率


(2)服务和节点状态
	服务的端口
		0	关闭
		1	正常
	节点的状态
		0	不通
		1	通

函数:
	last()	最新的值
	sum()	求和
	min()	最小值
	max()	最大值

表达式:
	时间单位是 秒
		1m	= 60
	数据单位是 字节
		1k  = 1024

3. 报警媒介
	邮件
	微信
	短信


4. 报警动作

报警的消息:
	简单直接
	描述清楚

谁的什么现在是[警告]级别,当前值的多少。
		谁	{HOST.NAME1}	主机信息	可见的名称
		什么{ITEM.NAME1}	监控项信息	监控项的名称
		多少{ITEM.VALUE1}	值

报警消息
{HOST.NAME1}的{ITEM.NAME1}现在是[警告]级别,当前值是{ITEM.VALUE1}。
恢复消息
{HOST.NAME1}的{ITEM.NAME1}使用率由[警告]恢复正常。

报警消息
{HOST.NAME1}的{ITEM.NAME1}现在是[严重]级别,当前值是{ITEM.VALUE1}。
恢复消息
{HOST.NAME1}的{ITEM.NAME1}使用率由[严重]恢复正常。

报警消息
{HOST.NAME1}的{ITEM.NAME1}现在是[灾难]级别,当前值是{ITEM.VALUE1}。
恢复消息
{HOST.NAME1}的{ITEM.NAME1}使用率由[灾难]恢复正常。

测试报警:
[root@nginx1 ~]# dd if=/dev/zero of=/dev/null 
	消耗CPU

[root@nginx1 /tmp]# dd if=/dev/zero of=f1 bs=1M count=2048
	消耗block

八、部署 z proxy

复制代码
1. 安装
[root@nginx1 ~]# scp zabbix-release-3.4-2.el7.noarch.rpm 172.16.0.70:/root/

[root@zproxy ~]# yum install -y zabbix-proxy-mysql zabbix-get zabbix-java-gateway mariadb-server

2. 配置

(1)mariadb
[root@zproxy ~]# systemctl start mariadb
[root@zproxy ~]# systemctl enable mariadb

MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all on zabbix_proxy.* to zabbix@'localhost' identified by '12345';
MariaDB [(none)]> flush privileges;

导入数据库:
[root@zproxy ~]# cd /usr/share/doc/zabbix-proxy-mysql-3.4.15/
[root@zproxy /usr/share/doc/zabbix-proxy-mysql-3.4.15]# ls
AUTHORS  ChangeLog  COPYING  NEWS  README  schema.sql.gz
[root@zproxy /usr/share/doc/zabbix-proxy-mysql-3.4.15]# gunzip schema.sql.gz 
[root@zproxy /usr/share/doc/zabbix-proxy-mysql-3.4.15]# mysql zabbix_proxy < schema.sql 

[root@zproxy ~]# mysql zabbix_proxy
MariaDB [zabbix_proxy]> show tables;
	看到表,OK

(2)z proxy
[root@zproxy /etc/zabbix]# vim zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
START_POLLERS=50

[root@zproxy /etc/zabbix]# vim zabbix_proxy.conf 
## 连接 z server
ProxyMode=0
Server=172.16.0.71
ServerPort=10051
Hostname=SYproxy
## 连接数据库
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=12345
DBSocket=/var/lib/mysql/mysql.sock
DBPort=3306
## 间隔多长时间,向z server 传输数据
ConfigFrequency=3
DataSenderFrequency=1
## 连接java
JavaGateway=localhost
JavaGatewayPort=10052
StartJavaPollers=50

[root@zproxy ~]# systemctl start zabbix-java-gateway
[root@zproxy ~]# systemctl enable zabbix-java-gateway

[root@zproxy ~]# systemctl start zabbix-proxy
[root@zproxy ~]# systemctl enable zabbix-proxy

[root@zproxy ~]# netstat -antp | grep 1005[12]
tcp     0      0 0.0.0.0:10051    0.0.0.0:*    LISTEN      1653/zabbix_proxy   
tcp6    0      0 :::10051         :::*         LISTEN      1653/zabbix_proxy   
tcp6    0      0 :::10052         :::*         LISTEN      1615/java  
相关推荐
佳腾_4 天前
【Zabbix技术系列文章】第④篇——Zabbix 数据可视化
运维·信息可视化·zabbix·监控
Source、5 天前
Zabbix监控K8s集群
docker·kubernetes·zabbix
澜堇10 天前
企业级部署zabbix分布式监控系统
分布式·zabbix
wusam12 天前
Centos7搭建Zabbix4.x监控HCL模拟网络设备:zabbix-server搭建及监控基础04
zabbix·hcl·getif·snmp监控
网络工程师_ling15 天前
Zabbix—企业微信报警群通消息通知
企业微信·zabbix
xiaozhanfeng22 天前
CentOS8+Zabbix7.2.4解决中文显示问题
zabbix
开源极客行25 天前
(二)企业级监控系统 - ZABBIX 部署
zabbix
大刘讲IT1 个月前
Zabbix+AI大模型实战:智能故障诊断与工单预警系统设计
人工智能·zabbix
乐维_lwops1 个月前
zabbix“专家坐诊”第277期问答
zabbix
Tassel_YUE1 个月前
Zabbix+Deepseek实现AI告警分析(非本地部署大模型版)
运维·数据库·人工智能·zabbix·运维开发·deepseek