一、User parameters 用户参数
1、介绍和用法
① 介绍
自定义用户参数,也就是自定义 key
有时,你可能想要运行一个代理查看,而不是 Zabbix 的预约义
你能够 编写一个命令 来检索须要的数据 ,并将其蕴含在代理配置文件(“UserParameter” 配置参数) 的用户参数 中
② 用法格局 syntax
UserParameter=<key>,<command>
A user parameter also contains a key 一个用户参数也蕴含一个键
The key will be necessary when configuring an item 在配置监控项时,key 是必须的
Note: Need to restart the agent 留神: 须要重新启动 agent 服务
2、用法展现
(1)批改 agent 端的配置,设置用户参数
① free | awk ‘/^Mem/{print $3}’ 本人须要查找的参数的命令
② 批改配置文件,把查找参数的命令设为用户参数
cd /etc/zabbix/zabbix_agentd.d/
vim memory_usage.conf
UserParameter=memory.used,free | awk '/^Mem/{print $3}'
③ systemctl restart zabbix-agent.service 重启 agent 服务
(2)在 zabbix-server 端,查问
zabbix_get -s 192.168.30.7 -p 10050 -k "memory.used"
(3)在监控上,设置一个 item 监控项,应用这个用户参数
(4)查问 graph 图形
3、用法降级
(1)批改 agent 端的配置,设置用户参数
① 命令行查问参数的命令
② 批改配置文件,把查找参数的命令设为用户参数
UserParameter=memory.stats[*],cat /proc/meminfo | awk ‘/^$1/{print $$2}‘
剖析:$$2:示意不是前边调地位参数的 $2,而是 awk 的参数 $2
留神:$1 是调用前边的[*],地位参数,第一个参数
(2)在 zabbix-server 端,查问应用这个用户参数的 key
(3)在监控上,设置一个 item 监控项,应用这个用户参数
① 增加 Memory Total 的 item 监控项,应用memory.stats[MemTotal] 的用户参数
在过程中定义倍数,规定单位
② clone 克隆 Memory Total 创立 Memory Free 的监控项
memory.stats[MemFree] 用户参数
③ 创立 Memory Buffers 的 item 监控项,应用 memory.stats[Buffers] 的 key
(4)下面 3 个监控项的 graph 图形
① memory total
② memory free
③ buffers
4、应用用户参数监控 php-fpm 服务的状态
在 agent 端:
(1)下载,设置 php-fpm
① yum -y install php-fpm
② vim /etc/php-fpm.d/www.conf 关上 php-fpm 的状态页面
user = nginx
group = nginx
pm.status_path = /php-fpm-status
#php-fpm 的状态监测页面
ping.path = /ping
#ping 接口,存活状态是否 ok
ping.response = pong
#响应内容 pong
③ systemctl start php-fpm 开启服务
(2)设置 nginx,设置代理 php,和 php-fpm 的状态页面匹配
vim /etc/nginx/nginx.conf
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* /(php-fpm-status|ping) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
include fastcgi_params;
allow 127.0.0.1; #因为这个页面很重要,所有需加访问控制
deny all;
access_log off; #拜访这个页面就不必记录日志了
}
② systemctl start nginx 开启 nginx 服务
(3)在 agent 端,设置用户参数
① 查问 curl 192.168.30.7/php-fpm-status
② 设置
cd /etc/zabbix/zabbix_agentd.d/
vim php_status.conf
UserParameter=php-fpm.stats[*],curl -s http://127.0.0.1/php-fpm-status | awk '/^$1/{print $$NF}'
剖析:设置用户参数为 php-fpm.stats[*],$1 为第一个参数;$$NF 为 awk 中的参数,倒数第一列
③ 重启服务
systemctl restart zabbix-agent
(4)在 zabbix-server 端,查问应用这个用户参数的 key
zabbix_get -s 192.168.30.7 -p 10050 -k "php-fpm.stats[idle]"
zabbix_get -s 192.168.30.7 -p 10050 -k "php-fpm.stats[active]"
zabbix_get -s 192.168.30.7 -p 10050 -k "php-fpm.stats[max active]"
(5)创立一个模板,在模板上创立 4 个 item 监控项,应用定义的用户参数
① 创立一个模板
② 在模板上配置 items 监控项,应用刚定义的用户参数
fpm.stats[total processes]
③ 再 clone 克隆几个 items 监控项
fpm.stats[active processes]
④ fpm.stats[max active processes]
⑤ fpm.stats[idle processes]
(6)host 主机链接模板
(7)查看 graph 图形
① php-fpm total processes
② php-fpm active processes
③ php-fpm max active processes
④ php-fpm idle processes
(8)把模板导出,能够给他人应用
① 导出模板
最上面有导出
② 本人定义用户参数的文件,也不要遗记导出
/etc/zabbix/zabbix_agentd.d/php_status.conf
二、Network discovery 网络发现
1、介绍
(1)介绍
网络发现:zabbix server扫描指定网络范畴内的主机;
网络发现是 zabbix 最具特色的性能之一,它可能依据用户 当时定义的规定主动增加监控的主机或服务 等
长处:
放慢 Zabbix 部署
简化治理
在疾速变动的环境中应用 Zabbix,而不须要适度治理
(2)发现形式:
ip 地址范畴;
可用服务(ftp, ssh, http, …)
zabbix_agent 的响应;
snmp_agent 的响应;
(3)网络发现通常蕴含两个阶段:discovery 发现 和 actions 动作
① discovery:
Zabbix 定期扫描网络发现规定中定义的 IP 范畴;查看的频率对于每个规定都是可配置的
每个规定都有一组用于为 IP 范畴执行的服务查看
由网络发现模块执行的服务和主机 (IP) 的每个查看都会生成一个发现事件
8 种响应事件
② actions:网络发现中的事件能够触发 action,从而主动执行指定的操作,把 discvery events 当作前提条件;
Sending notifications 发送告诉
Adding/removing hosts 增加 / 删除主机
Enabling/disabling hosts 启用 / 禁用 host
Adding hosts to a group 向组中增加主机
Removing hosts from a group 移除组中的主机
Linking hosts to/unlinking from a template 从模板链接主机或勾销链接
Executing remote scripts 执行近程脚本
这些事件的配置还能够基于设施的类型、IP、状态、上线 / 离线等进行配置
(4)网络发现:接口增加
网络发现中增加主机时会主动创立 interface 接口
例如:
如果基于 SNMP 检测胜利,则会创立 SNMP 接口
如果某服务同时响应给了 agent 和 SNMP,则 两种接口都会创立
如果同一种发现机制 (如 agent) 返回了非惟一数据,则 第一个接口被辨认为默认,其它的为额定接口
即使是某主机开始时只有 agent 接口,起初又通过 snmp 发现了它,同样会为其增加额定的 snmp 接口
不同的主机如果返回了雷同的数据,则第一个主机将被增加,余下的主机会被当作第一个主机的额定接口
2、配置网络发现 Network discovery
(1)筹备一台可被扫描发现的主机
① 装置 agent 段的包
yum -y install zabbix-agent zabbix-sender
② 设置 agent 配置,能够把之前设置好的 node1 的配置传过来
vim /etc/zabbix/zabbix_agentd.conf
Hostname=http://node2.along.com #只需批改 hostname
③ visudo 批改 sudo 的配置
Defaults !visiblepw
zabbix ALL=(ALL) NOPASSWD: ALL
④ 开启服务
systemctl start zabbix-agent
(2)设置主动发现规定 discovery
正文:
① key:zabbix_get -s 192.168.30.2 -p 10050 -k “system.hostname”
② 更新距离:1h 就好,不要扫描太过频繁,扫描整个网段,太废资源;这里为了试验,设为 1m
(3)主动发现胜利
(4)设置主动发现 discovery 的动作 action
a) 创立
b) 设置 action 动作
① 设置 A 条件,主动发现规定 =http://test.net
② 设置 B 条件,主动发现状态 =up
③ 要做什么操作
增加主机到监控
主动链接 Template OS Linux 到此 host
c) 配置 action 实现,默认是 disabled 停用的
d) 启用动作,查看成果
的确曾经失效,增加主机胜利,模板链接胜利
(5)如果本人须要增加的主机曾经扫描增加实现,就能够敞开网络扫描了,因为太耗资源
三、web 监控
1、介绍
(1)介绍
① Web 监控:监控指定的站点的 资源下载速度 ,及 页面响应工夫 ,还有 响应代码;
② 术语:
web Scenario:web 场景(站点)
web page:web 页面,一个场景有多个页面
內建 key:要测一个页面,要测三个步骤(下边 3 个內建 key)
③ 内建 key:
http://web.test.in[Scenario,Step,bps]:传输速率
web.test.time[Scenario,Step]:响应时长
web.test.rspcode[Scenario,Step]:响应码
2、创立设置 web 场景
(1)创立
(2)配置 web 监测
① 点击步骤,设置 web page web 页面
a) 设置名为 home page,URL 为 http://192.168.30.7/index.html 的 web 页面
b) 设置名为 fpm status,URL 为 http://192.168.30.7/fpm-status 的 web 页面
c) 设置 2 个 web 页面胜利
② 如果有非凡认证,也能够增加
3、查看测试
四、被动 / 被动 监控
1、介绍
(1)被动 / 被动介绍
被动检测:绝对于 agent 而言;agent, server 向 agent 申请获取配置的各监控项相干的数据,agent 接管申请、获取数据并响应给 server;
被动检测:绝对于 agent 而言;agent(active),agent 向 server 申请与本人相干监控项配置,被动地将 server 配置的监控项相干的数据发送给 server;
被动监控能极大节约监控 server 的资源。
(2)zabbix_sender 发送数据:实现人工生成数据,发给 server 端
① zabbix server 上的某主机上,间接定义 Item 时轻易定义一个不与其它已有 key 抵触的 key 即可,即 item type 为 ”zabbix trapper”;
② 用法选项:
zabbix_sender
-z zabbix_server_ip
-p zabbix_server_port
-s zabbix_agent_hostname
-k key
-o value 值
2、设置一个通过內建 key 发送数据的被动监控
(1)agent 端所须要根本配置:
ServerActive=192.168.30.107 给哪个监控 server 发送数据 Hostname=http://node1.along.com 本人的主机名,假如主机定死了,不设置下一项 #HostnameItem= 如果本人的主机名易变动,这一项相当于 key 一样去匹配
留神:若后两项同时启用,下边一个抉择失效
(2)设置一个被动监测
① 抉择过程,每秒更改,
因为 key:system.cpu.switches:上下文的数量进行切换,它返回一个整数值。为了监控成果,抉择下一秒减上一秒的值作为监控
(3)曾经有啦 graph 图形
3、设置一个通过命令 zabbix_sender 发送数据的被动监控
(1)配置一个 zabbix traper(采集器) 的 item 监控项
(2)agent 端手动发送数据
(3)监控到数据的变动
五、基于 SNMP 监控(理解)
1、介绍
(1)介绍
SNMP:简略 网络管理协定;(十分古老的协定)
三种通信形式:读(get, getnext)、写(set)、trap(陷阱);
端口:
161/udp
162/udp
SNMP 协定:年代久远
v1: 1989
v2c: 1993
v3: 1998
监控网络设备:交换机、路由器
MIB:Management Information Base 信息管理根底
OID:Object ID 对象 ID
(2)Linux 启用 snmp 的办法:
yum install net-snmp net-snmp-utils
配置文件:定义 ACL
/etc/snmp/snmpd.conf
启动服务:
systemctl start snmpd 被监控端开启的服务
systemctl start snmptrapd 监控端开启的服务(如果容许被监控端启动被动监控时启用)
(3)配置文件的介绍
凋谢数据:4 步
① 定义认证符,将社区名称 ”public” 映射为 ” 平安名称 ”
② 将平安名称映射到一个组名
③ 为咱们创立一个视图,让咱们的团队有权力
掩码:我列出一些正文,有很多,能够再网上查问
.1.3.6.1.2.1.
1.1.0:零碎形容信息,SysDesc
1.3.0:监控工夫,SysUptime
1.5.0:主机名,SysName
1.7.0:主机提供的服务,SysService
.1.3.6.1.2.2.
2.1.0:网络接口数目
2.2.1.2: 网络接口的形容信息
2.2.1.3: 网络接口类型
……
④ 授予对 systemview 视图的只读拜访权
(4)测试工具:
snmpget -v 2c -c public HOST OID
snmpwalk -v 2c -c public HOST OID 通过这个端口查问到的数据,全列出了
2、配置 SNMP 监控
(1)下载,批改配置文件
vim /etc/snmp/snmpd.conf
view systemview included .1.3.6.1.2.1.1 view systemview included .1.3.6.1.2.1.2 # 网络接口的相干数据 view systemview included .1.3.6.1.4.1.2021 # 系统资源负载,memory, disk io, cpu load view systemview included .1.3.6.1.2.1.25
(2)在 agent 上测试
snmpget -v 2c -c public 192.168.30.2 .1.3.6.1.2.1.1.3.0
snmpget -v 2c -c public 192.168.30.2 .1.3.6.1.2.1.1.5.0
(3)在监控页面,给 node2 加一个 snmp 的接口
(4)在 node2 上加一个 Template OS Linux SNMPv2 模板
模板增加胜利,生成一系列货色
点开一个 item 看一下
(5)生成一些最新数据的图形 graph 了
3、设置入站出站 packets 的 SNMP 监控
(1)监控网络设备:交换机、路由器的步骤:
① 把交换机、路由器的 SNMP 把对应的 OID 的分支启用起来
② 理解这些分支下有哪些 OID,他们别离示意什么意义
③ 咱们要监控的某一数据:如交换机的某一个接口流量、报文,发送、传入传出的报文数有多少个;传入传出的字节数有多少个,把 OID 取出来,保留
(2)定义入站出站的 item 监控项
interface traffic packets(in)
interface traffic packets(out)
六、JMX 接口
1、介绍
(1)介绍
Java 虚拟机 (JVM) 具备内置的插装,使您可能应用 JMX 监督和治理它。您还能够应用 JMX 监督工具化的应用程序。
(2)配置设置介绍
① zabbix-java-gateway 主机设置:
装置 zabbix-java-gateway 程序包,启动服务;
yum -y install zabbix-java-gateway
② zabbix-server 端设置(须要重启服务):
JavaGateway=172.16.0.70
JavaGatewayPort=10052
StartJavaPollers=5 #监控项
③ tomcat 主机设置:
监控 tomcat:
/etc/sysconfig/tomcat,增加
CATALINA_OPTS="-Djava.rmi.server.hostname=TOMCAT_SERVER_IP -Djavax.management.builder.initial= -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" #启用 JVM 接口,默认没有启用
增加监控项:
jmx[object_name,attribute_name]
object name – 它代表 MBean 的对象名称
attribute name – 一个 MBean 属性名称,可选的复合数据字段名称以点分隔
示例:
jmx[“java.lang:type=Memory”,”HeapMemoryUsage.used”]
④ jmx 的具体文档:https://docs.oracle.com/javase/1.5.0/docs/guide/management/agent.html
2、配置 JVM 接口监控
(1)装置配置 tomcat
① 下载安装 tomcat,次要是用 JVM
yum -y install java-1.8.0-openjdk-devel tomcat-admin-webapps tomcat-docs-webapp
② 加 CATALINA_OPTS= #启用 JVM 接口,默认没有启用
vim /etc/sysconfig/tomcat
CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.30.2 -Djavax.management.builder.initial= -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
③ 开启服务
systemctl start tomcat
(2)在zabbix-server 端,装置配置 java-gateway
① 装置配置 java-gateway
yum -y install zabbix-java-gateway
/etc/zabbix/zabbix_java_gateway.conf 装置完后,会生成一个 java_gateway 的配置文件
systemctl start zabbix-java-gateway.service 不必批改,间接开启服务
② 批改 server 配置,开启 java-gateway 的配置
vim /etc/zabbix/zabbix_server.conf
JavaGateway=192.168.30.107 JavaGatewayPort=10052 StartJavaPollers=5 #关上 5 个监控项
③ systemctl restart zabbix-server 重启 zabbix-server 服务
(3)在 node2 主机上增加 JMX 接口,试验模板
① 增加 JMX 接口
② 在 node2 上连贯 tomcat JMX 模板
③ 轻易查看一个监控项 item
(4)本人定义一个堆内存应用的监控项,基于 JVM 接口(没必要,应用模板就好)
七、分布式监控
1、介绍
(1)介绍
分布式监控概述
proxy and node
Zabbix 的三种架构
Server-agent
Server-Node-agent
Server-Proxy-agent
监控 Zabbix
(2)配置介绍
Zabbix Proxy 的配置:
server-node-agent
server-proxy-agent
a) 配置 proxy 主机:
(1) 安装程序包
zabbix-proxy-mysql zabbix-get
zabbix-agent zabbix-sender
(2) 筹备数据库
创立、受权用户、导入 schema.sql;
(3) 批改配置文件
Server=
zabbix server 主机地址;
Hostname=
以后代理服务器的名称;在 server 增加 proxy 时,必须应用此处指定的名称;
= 须要当时确保 server 能解析此名称;
DBHost=
DBName=
DBUser=
DBPassword=
ConfigFrequency=10
DataSenderFrequency=1
b) 在 server 端增加此 Porxy
Administration –> Proxies
c) 在 Server 端配置通过此 Proxy 监控的主机;
留神:zabbix agent 端要容许 zabbix proxy 主机执行数据采集操作:
2、实现分布式 zabbix proxy 监控
试验前筹备:
① ntpdate 172.168.30.1 同步工夫
② 敞开防火墙,selinux
③ 设置主机名 hostnamectl set-hostname http://zbproxy.along.com
④ vim /etc/hosts 每个机器都设置 hosts,以解析主机名;DNS 也行
192.168.30.107 http://server.along.com
192.168.30.7 http://node1.along.com
192.168.30.2 http://node2.along.com
192.168.30.3 http://node3.along.com http://zbproxy.along.com
(1)环境配置(4 台主机)
机器名称
IP 配置
服务角色
zabbix-server
192.168.30.107
监控
agent-node1
192.168.30.7
被监控端
agent-node2
192.168.30.2
被监控端
node3
192.168.30.3
代理 proxy
zabbix-server 间接监控一台主机 node1
zabbix-server 通过代理 node3 监控 node2
(2)在 node3 上配置 mysql
① 创立配置 mysql
vim /etc/my.cnf.d/server.cnf
[server] skip_name_resolve = on innodb_file_per_table = on innodb_buffer_pool_size = 256M max_connections = 2000 log-bin = master-log
② systemctl start mariadb 开启服务
③ 创立数据库 和 受权用户
MariaDB [(none)]> create database zbxproxydb character set ‘utf8’; MariaDB [(none)]> grant all on zbxproxydb.* to ‘zbxproxyuser’@’192.168.30.%’ identified by ‘zbxproxypass’; MariaDB [(none)]> flush privileges;
(3)在 node3 上下载 zabbix 相干的包,次要是代理 proxy 的包
yum -y install zabbix-proxy-mysql zabbix-get zabbix-agent zabbix-sender
a) 初始化数据库
zabbix-proxy-mysql 包里带有,导入数据的文件
cp /usr/share/doc/zabbix-proxy-mysql-3.4.4/schema.sql.gz ./ 复制
gzip -d schema.sql.gz 解包
mysql -root -p zbxproxydb < schema.sql 导入数据
b) 查看数据曾经生成
(4)配置 proxy 端
① vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.30.107 #server 的 IP ServerPort=10051 #server 的端口 Hostname=http://zbxproxy.along.com #主机名 ListenPort=10051 #proxy 本人的监听端口 EnableRemoteCommands=1 #容许近程命令 LogRemoteCommands=1 #记录近程命令的日志 数据的配置 DBHost=192.168.30.3 DBName=zbxproxydb DBUser=zbxproxyuser DBPassword=zbxproxypass ConfigFrequency=30 #多长时间,去服务端拖一次有本人监控的操作配置;为了试验更快的失效,这里设置 30 秒,默认 3600s DataSenderFrequency=1 #每一秒向 server 端发一次数据,发送频度
② systemctl start zabbix-proxy 开启服务
(5)配置 node2 端,容许 proxy 代理监控
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.30.107,192.168.30.3 ServerActive=192.168.30.107,192.168.30.3
systemctl restart zabbix-agent 启动服务
(6)把代理退出监控 server,创立配置 agent 代理
① 创立 agent 代理
② 配置
(7)创立 node2 主机,并采纳代理监控
设置代理胜利
(8)创立 item 监控项
① 为了试验,轻易创一个监控项 CPU Switches
② 过程里设置每秒更改
③ 胜利,graph 图形生成
八、查问应用网上模板监控
1、找官网的 share 分享网站
https://cn.bing.com/ 搜寻 zabbix share
例如:咱们要实现监控 Nginx,咱们查找一个模板
就以这个模板为例
2、在 node1 上应用此模板
(1)装置配置 nginx
① yum -y install nginx
vim /etc/nginx/nginx.conf 依照网页的操作批示
location /stub_status {stub_status on; access_log off; # allow 127.0.0.1; #为了操作不便,我勾销的访问控制 # deny all;}
② 启动服务
systemctl restart nginx
(2)下载模板所依赖的脚本
mkdir -p /srv/zabbix/libexec/
cd /srv/zabbix/libexec/
wget https://raw.githubusercontent.com/oscm/zabbix/master/nginx/nginx.sh 从网页上获取脚本
chmod +x nginx.sh 加执行权限
(3)配置 agent 的用户参数 UserParameter
cd /etc/zabbix/zabbix_agentd.d/
wget https://raw.githubusercontent.com/oscm/zabbix/master/nginx/userparameter_nginx.conf 很短,本人写也行
(4)在 windows 上下载模板,并导入这 server 的模板中
wget https://raw.githubusercontent.com/oscm/zabbix/master/nginx/zbx_export_templates.xml 能够当初 linux 上下载,再 sz 导出到 windows 上
① 导入下载的模板
② 主机 node1 链接这个模板
③ 模板失效
九、zabbix-server 监控本人,数据库,nginx
1、下载安装,配置 agent
vim /etc/zabbix/zabbix_agentd.conf 配置 agent
EnableRemoteCommands=1 容许近程命令 LogRemoteCommands=1 记录近程命令 Server=127.0.0.1 ServerActive=127.0.0.1 Hostname=http://server.along.com
2、主动生成 Zabbix server 的主机
3、在主机中增加模板
4、启用 Zabbix server
5、监控到数据
十、调优
1、调优
① Database:
历史数据不要保留太长时长;
尽量让数据缓存在数据库服务器的内存中;
② 触发器表达式:缩小应用聚合函数 min(), max(), avg();尽量应用 last(),nodata();
因为聚合函数,要运算
③ 数据收集:polling 较慢 (缩小应用 SNMP/agentless/agent); 尽量应用 trapping(agent(active)被动监控);
④ 数据类型:文本型数据处理速度较慢;尽量少 收集类型为 文本 text 或 string 类型的数据; 多应用 类型为 numeric 数值型数据 的;
2、zabbix 服务器的过程
(1) 服务器组件的数量;
alerter, discoverer, escalator, http poller, hourekeeper, icmp pinger, ipmi polller, poller, trapper, configration syncer, …
StartPollers=60
StartPingers=10
…
StartDBSyncer=5
…
(2) 设定正当的缓存大小
CacheSize=8M
HistoryCacheSize=16M
HistoryIndexCacheSize=4M
TrendCacheSize=4M
ValueCacheSize=4M
(3) 数据库优化
分表:
history_*
trends*
events*
起源:https://www.cnblogs.com/along…