9.5、zabbix高级操作(1)
在zabbix-web中删除之前所有监控的主机;
1、zabbix自动发现配置:
zabbix-server通过扫描指定范围的ip地址发现zabbix-agent并自动添加监控主机,适用于zabbix-agent的被动模式,会增加zabbix-server的负担;
(1)zabbix-agent参数配置:
[root@slave-node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=172.16.1.90,172.16.1.91
ListenPort=10050
ListenIP=172.16.1.91
StartAgents=3
Timeout=30
[root@slave-node1 ~]# systemctl restart zabbix-agent.service
(2)修改zabbix-server所在服务器的/etc/hosts/文件:
[root@controller-node1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.91 slave-node1
说明:如果不修改的话会导致主动发现添加的监控主机名为ip地址而不是被监控主机实际的主机名称;
(3)在zabbix-web添加自动发现规则:
1)
2)
3)
4)
5)
2、zabbix主动注册:
zabbix-agent向zabbix-server发送主机信息,zabbix-server根据主机信息完成zabbix-agent监控主机的添加,适用
于zabbix-agent的主动模式,会减轻zabbix-server的负担;
删除上面实验已添加的自动发现的主机,并关闭自动发现规则;
(1)zabbix-agent参数配置:
[root@slave-node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
StartAgents=0
#完全关闭zabbix-agent的被动模式,关闭监听的ip地址和10050端口;
ServerActive=172.16.1.90
#开启zabbix-agent主动模式,指向zabbix-server的IP地址;
HostnameItem=system.hostname
#zabbix-agent主动模式下指定添加监控主机的名称为服务器的名称;
HostMetadata=web
#zabbix-agent主动模式下主动注册的主机元素;
Timeout=30
[root@slave-node1 ~]# systemctl restart zabbix-agent.service
(2)创建zabbix-agent主动模式所需的Template OS Linux Active模板:
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
(3)创建Template OS linux Active 链接的模板 Template App Zabbix Agent 为主动模式:
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
(4)创建自动注册规则:
1)添加服务器群组:
2)
3)
4)
(5)查看自动注册的主机:
(6)查看注册主机最新数据:
3、zabbix低级自动发现:
可以自动创建item,trigger,图形,在这里使用zabbix-agent的主动方式(被动也可);
(1)模板中自带的自动发现规则,以文件系统为例:
1)[root@slave-node1 ~]# zabbix_agentd -p | grep vfs.fs.discovery
vfs.fs.discovery [s|{"data":[{"{#FSNAME}":"/","{#FSTYPE}":"rootfs"},{"{#FSNAME
}":"/sys","{#FSTYPE}":"sysfs"},{"{#FSNAME}":"/proc","{#FSTYPE}":"proc"},{"{#FSNAME}":"/dev","{#FSTYPE}":"devtmpfs"},{"{#FSNAME}":"/sys/kernel/security","{#FSTYPE}":"securityfs"},{"{#FSNAME}":"/dev/shm","{#FSTYPE}":"tmpfs"},{"{#FSNAME}":"/dev/pts","{#FSTYPE}":"devpts"},{"{#FSNAME}":"/run","{#FSTYPE}":"tmpfs"},{"{#FSNAME}":"/sys/fs/cgroup","{#FSTYPE}":"tmpfs"},{"{#FSNAME}":"/sys/fs/cgroup/systemd","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/pstore","{#FSTYPE}":"pstore"},{"{#FSNAME}":"/sys/fs/cgroup/cpu,cpuacct","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/net_cls,net_prio","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/cpuset","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/memory","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/devices","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/perf_event","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/freezer","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/pids","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/blkio","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/fs/cgroup/hugetlb","{#FSTYPE}":"cgroup"},{"{#FSNAME}":"/sys/kernel/config","{#FSTYPE}":"configfs"},{"{#FSNAME}":"/","{#FSTYPE}":"xfs"},{"{#FSNAME}":"/proc/sys/fs/binfmt_misc","{#FSTYPE}":"autofs"},{"{#FSNAME}":"/dev/mqueue","{#FSTYPE}":"mqueue"},{"{#FSNAME}":"/dev/hugepages","{#FSTYPE}":"hugetlbfs"},{"{#FSNAME}":"/sys/kernel/debug","{#FSTYPE}":"debugfs"},{"{#FSNAME}":"/boot","{#FSTYPE}":"xfs"},{"{#FSNAME}":"/proc/sys/fs/binfmt_misc","{#FSTYPE}":"binfmt_misc"},{"{#FSNAME}":"/run/user/0","{#FSTYPE}":"tmpfs"}]}]
2)
3)
4)自动创建的item配置:
5)自动发现正则表达式填写的位置:
(2)创建mysql多实例低级自动发现规则:
1)创建mysql多实例:
在salve-node1上已经使用yum安装了mariadb数据库:
#配置mysql多实例文件:
[root@slave-node1 ~]# mkdir -p /data/3307/
[root@slave-node1 ~]# mkdir -p /data/3308/
[root@slave-node1 ~]# chown -R mysql.mysql /data/3307/
[root@slave-node1 ~]# chown -R mysql.mysql /data/3308/
[root@slave-node1 ~]# cp -a /etc/my.cnf /etc/my3307.cnf
[root@slave-node1 ~]# cp -a /etc/my.cnf /etc/my3308.cnf
[root@slave-node1 ~]# egrep -v "^#|^$" /etc/my3307.cnf
[mysqld]
datadir=/data/3307
socket=/data/3307/mysql.sock
port=3307
symbolic-links=0
[mysqld_safe]
log-error=/data/3307/mariadb.log
pid-file=/data/3307/mariadb.pid
!includedir /etc/my.cnf.d
[root@slave-node1 ~]# egrep -v "^#|^$" /etc/my3308.cnf
[mysqld]
datadir=/data/3308/mysql
socket=/data/3308/mysql.sock
symbolic-links=0
port=3308
[mysqld_safe]
log-error=/data/3308/mariadb.log
pid-file=/data/3308/mariadb.pid
!includedir /etc/my.cnf.d
#初始化mysql多实例:
[root@slave-node1 ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf
[root@slave-node1 ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3308.cnf
#启动mysql多实例:
[root@slave-node1 ~]# mysqld_safe --defaults-file=/etc/my3307.cnf &
[root@slave-node1 ~]# mysqld_safe --defaults-file=/etc/my3308.cnf &
[root@slave-node1 ~]# netstat -tunlp -4 | grep 330
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1273/mysqld
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 6794/mysqld
tcp 0 0 0.0.0.0:3308 0.0.0.0:* LISTEN 6608/mysqld
#为mysql多实例创建新的密码:
[root@slave-node1 ~]# mysqladmin -S /data/3307/mysql.sock -uroot password '123456'
[root@slave-node1 ~]# mysqladmin -h127.0.0.1 -P3308 -uroot password '123456'
#创建mysql多实例监控的用户:
[root@slave-node1 ~]# mysql -h127.0.0.1 -P3307 -uroot -p123456
MariaDB [(none)]> show global variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3307 |
+---------------+-------+
1 row in set (0.00 sec)
MariaDB [(none)]> grant select on *.* to zabbix@"localhost" identified by "123456";
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
[root@slave-node1 ~]# mysql -h127.0.0.1 -P3308 -uroot -p123456
MariaDB [(none)]> show global variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3308 |
+---------------+-------+
1 row in set (0.00 sec)
MariaDB [(none)]> grant select on *.* to zabbix@"localhost" identified by "123456";
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
2)编写mysql多实例低级自动发现脚本:
[root@slave-node1 ~]# netstat -tunlp -4 | grep mysqld | awk -F "[ :]+" '{print $5}'
3306
3307
3308
[root@slave-node1 ~]# cat /etc/zabbix/zabbix_agentd.d/discovery-mysql.sh
#!/bin/bash
# ###################################################
# Script-Name: discovery-mysql.sh
# Revision: 1.0
# Date:
# Author:
# Email:
# Website:
#####################################################
res=`netstat -tunlp -4 | grep mysqld | awk -F "[ :]+" '{print $5}'`
port=($res)
printf '{\n'
printf '\t"data":[\n'
for key in ${!port[@]}
do
if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then
printf '\t {\n'
printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n"
else [[ "${key}" -eq "((${#port[@]}-1))" ]]
printf '\t {\n'
printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n"
fi
done
printf '\t ]\n'
printf '}\n'
[root@slave-node1 ~]# sh /etc/zabbix/zabbix_agentd.d/discovery-mysql.sh | python -m json.tool
{
"data": [
{
"{#MYSQLPORT}": "3306"
},
{
"{#MYSQLPORT}": "3307"
},
{
"{#MYSQLPORT}": "3308"
}
]
}
[root@slave-node1 ~]# cat /etc/zabbix/zabbix_agentd.d/discovery-mysql.conf
UserParameter=discovery-mysql,sh /etc/zabbix/zabbix_agentd.d/discovery-mysql.sh
#由于netstat命令zabbix用户无法使用,需要赋予该命令s权限位:
[root@slave-node1 ~]# chmod u+s /usr/bin/netstat
3)重启zabbix-agent:
[root@slave-node1 ~]# systemctl restart zabbix-agent.service
4)使用"zabbix_get"命令测试:
zabbix_get命令是被动模式,现在zabbix-agent使用的是主动模式所以需要在zabbix-agent配置文件中打开被动模式;
[root@slave-node1 ~]# zabbix_get -s 172.16.1.91 -k discovery-mysql
{
"data":[
{
"{#MYSQLPORT}":"3306"},
{
"{#MYSQLPORT}":"3307"},
{
"{#MYSQLPORT}":"3308"}
]
}
5)创建mysql多实例低级自动现item原型脚本:
#修改zabbix-agent自带的mysql监控配置文件:
[root@slave-node1 ~]# egrep -v "^#|^$" /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mysql.status[*],echo "show global status where Variable_name='$4';" | HOME=/var/lib/zabbix mysql -u$1 -p$2 -h127.0.0.1 -P$3 -N | awk '{print $$2}'
UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -N'
UserParameter=mysql.ping[*],HOME=/var/lib/zabbix mysqladmin -u$1 -p$2 -h127.0.0.1 -P$3 ping | grep -c alive
UserParameter=mysql.version[*],mysql -u$1 -p$2 -h127.0.0.1 -P$3 -V
6)重启zabbix-agent:
[root@slave-node1 ~]# systemctl restart zabbix-agent.service
7)测试:
[root@slave-node1 ~]# zabbix_get -s 172.16.1.91 -k mysql.status[zabbix,123456,3308,Uptime]
16922
[root@slave-node1 ~]# zabbix_get -s 172.16.1.91 -k mysql.status[zabbix,123456,3307,Uptime]
16918
8)在zabbix-web界面中创建mysql多实例低级自动发现规则:
A、
B、
9)创建mysql多实例低级自动现item、触发器、图像原型(模仿系统中自带的mysql模板):
A、item原型:
a、
b、
B、触发器原型:
C、图像原型:
10)测试:
A、查看最新数据:
B、触发器:
C、图像:
9.5、zabbix高级操作(1)的更多相关文章
- 9.5、zabbix高级操作(2)
4.zabbix的分布式监控: 使用zabbix-proxy主动方式(被动也可),使用zabbix-agent的主动方式(被动也可): Zabbix Server <- Zabbix Proxy ...
- [Session] SessionHelper2---C#关于Session高级操作帮助类 (转载)
点击下载 SessionHelper2.rar 这个类是关于Session的一些高级操作1.添加时限制时间2.读取对象3.读取数据等等看下面代码吧 /// <summary> /// 联系 ...
- cassandra高级操作之索引、排序以及分页
本次就给大家讲讲cassandra的高级操作:索引.排序和分页:处于性能的考虑,cassandra对这些支持都比较简单,所以我们不能希望cassandra完全适用于我们的逻辑,而是应该将我们的逻辑设计 ...
- MySQL学习笔记_9_MySQL高级操作(上)
MySQL高级操作(上) 一.MySQL表复制 create table t2 like t1; #复制表结构,t2可以学习到t1所有的表结构 insert into t2 ...
- MySQL学习笔记_10_MySQL高级操作(下)
MySQL高级操作(下) 五.MySQL预处理语句 1.设置预处理stmt,传递一个数据作为where的判断条件 prepare stmt from "select * from table ...
- python列表(list)的使用技巧及高级操作
python列表(list)的使用技巧及高级操作置顶 2018年03月25日 13:39:41 顽劣的石头 阅读数:5478 标签: python extend bisect list enumera ...
- C语言指针的高级操作
C语言指针的高级操作 指针 指针 在上篇博客中我介绍了C语言指针的最基本操作,那么我在这篇博客中会介绍一下C语言指针的一些骚操作. 指向指针的指针 这名字乍一听有点拗口,再次一听就更加拗口了.先看定 ...
- django之创建第8-3个项目-数据库数据提取之高级操作
1.配置test2.html <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- SpringMVC整合Mongodb开发,高级操作
开发环境: 操作系统:windows xpMongodb:2.0.6依 赖 包:Spring3.2.2 + spring-data-mongodb-1.3.0 + Spring-data-1.5 + ...
随机推荐
- [bug] Docker:Error ruuning deviceCreate(createSnapDevice) dm_task_run failed
原因 删除容器时报错,元信息出错,需要修复 最后一个参数要改成自己docker元信息路径,如: thin_check --clear-needs-check-flag /var/lib/docker/ ...
- C++知识点案例 笔记-5
1.关系运算符重载 2.类型转换函数重载 3.转换构造函数 4.函数模板 5.显式实例化 6.类模板外定义模板函数 1.关系运算符重载 ==关系运算符重载== //直接(按分数)比较两个对象 #inc ...
- Linux服务之nginx服务篇一(概念)
nginx官网:http://nginx.org/ 一. nginx和apache的区别 Nginx: 1.轻量级,采用 C 进行编写,同样的 web 服务,会占用更少的内存及资源. 2.抗并发,ng ...
- MyBatis 延迟加载(十四)
什么是延迟加载 延迟加载又叫懒加载,也叫按需加载,也就是说先加载主表信息,需要的时候,再去加载从表信息.代码中有查询语句,当执行到查询语句时,并不是马上去数据库中查询,而是根据设置的延迟策略将查询向后 ...
- mysql数据库-日志管理
MySQL 支持丰富的日志类型 事务日志:transaction log 事务日志的写入类型为"追加",因此其操作为"顺序IO":通常也被称为:预写式日志 wr ...
- [Django高级之Auth模块]
[Django高级之Auth模块] auth模块 ←详情点击查看 1.Auth模块是什么 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统 ...
- ThinkPHP 全局异常处理
wqy的笔记:http://www.upwqy.com/details/273.html 在thinkphp6 和 thinkphp5 全局异常处理 稍有不同 ThinkPHP6 在 tp6 中 框架 ...
- 4D毫米波雷达Radar
4D毫米波雷达Radar 围绕雷达.激光雷达.高精定位等新一代传感器技术将会进入量产周期. 自动驾驶公司的竞争,在传感器配置上坦白说并没有太多差异化.除了车载激光雷达属于近几年的产物,类似摄像头.毫米 ...
- 将TVM集成到PyTorch上
将TVM集成到PyTorch上 随着TVM不断展示出对深度学习执行效率的改进,很明显PyTorch将从直接利用编译器堆栈中受益.PyTorch的主要宗旨是提供无缝且强大的集成,而这不会妨碍用户.为此, ...
- 微信架构 & 支付架构(上)
微信架构 & 支付架构(上) 一. 微信和支付宝对比 这两者现在已经占领了移动支付的90%市场,支付形式也都大抵相同,只是在实现细节上略微不同.这里之所以要专门对比,是因为有些接口的不同在后边 ...