【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[<mode>]
    剩余
    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[<device>,<type>,<mode>]
    vfs.dev.read[/dev/mapper/centos-root,sps]

         写 vfs.dev.write[<device>,<type>,<mode>] 
     	vfs.dev.write[/dev/mapper/centos-root,sps] 
    

    分区的使用情况
    inode vfs.fs.inode[fs,<mode>]
    vfs.fs.inode[/,pfree]
    block vfs.fs.size[fs,<mode>]
    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  
相关推荐
小阿轩yx2 天前
小阿轩yx-案例:Zabbix监控kubernetes云原生环境
linux·云原生·kubernetes·云计算·zabbix·运维开发
小阿轩yx3 天前
小阿轩yx-Zabbix企业级分布式监控环境部署
linux·分布式·云计算·zabbix·运维开发·企业级监控部署
the丶only3 天前
获取zabbix API 监控数据shell脚本,自动日常巡检服务器信息、并发送指定群组
linux·运维·服务器·自动化·bash·zabbix
henanxiaoman4 天前
zabbix之钉钉告警
钉钉·zabbix
Linux运维老纪4 天前
基于zabbix实现监控Jenkins过程---超详细
linux·云计算·jenkins·zabbix·运维开发
henan程序媛4 天前
Zabbix监控自动化
运维·自动化·zabbix·监控
henan程序媛5 天前
Zabbix监控k8s云原生环境
云原生·kubernetes·zabbix
乆乄8 天前
运维学习————Zabbix监控框架(1)
运维·zabbix
张小胡16 天前
zabbix和prometheus介绍;云原生
zabbix·prometheus