http://www.web008.net

美高梅手机版:Plugins自动开采

mysql多实例监察和控制实录

 

系统意况:

cat /etc/redhat-release

CentOS Linux release 7.3.1611 (Core)

底工版本:

uname -r

3.10.0-514.el7.x86_64

docker版本:

docker -v

Docker version 1.12.6, build 3a094bd/1.12.6

docker 相关镜像版本:

docker.io/zabbix/zabbix-web-nginx-mysql latest

docker.io/zabbix/zabbix-server-mysql latest

docker.io/mysql 5.7

被监督mysql应用版本:

mysql-5.7.17-linux-glibc2.5-x86_64

Percona Monitoring Plugins版本:

1.1.7-2.noarch.rpm

 

写在最前:如若zabbix server和zabbix agent已经通过其它方式安装,能够一贯跳过1、2步,直接从第3步带头看。

 

1、zabbix服务端大家运营在docker容器内

就此服务器端先安装docker服务

yum install -y epel-release

yum install -y docker #centos6.x版本的授命是yum install -y docker-io

 

接下来运维docker服务

systemctl start docker

docker参加开机自运维

systemctl enable docker

翻看docker是还是不是中标运行

systemctl status docker

注:使用docker需求运用加速器,不然那龟速,自个儿心得呢。加快器daocloud和Ali云都得以,小编动用的前端。

 

2.装置相关容器

2.1. mysql 容器

docker run --name mysql-server -t

      -e MYSQL_DATABASE="zabbix"

      -e MYSQL_USER="zabbix"

      -e MYSQL_PASSWORD="ywwd.net"

      -e MYSQL_ROOT_PASSWORD="ywwd.net"

      -v /data/container/mysql/zabbix:/var/lib/mysql

      -v /etc/localtime:/etc/localtime:ro

      --restart=always

      -d mysql:5.7

      --character-set-server=utf8 --collation-server=utf8_general_ci --sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

 

2.2. zabbix-server 容器

docker run --name zabbix-server-mysql -t

      -e DB_SERVER_HOST="mysql-server"

      -e MYSQL_DATABASE="zabbix"

      -e MYSQL_USER="zabbix"

      -e MYSQL_PASSWORD="ywwd.net"

      -e MYSQL_ROOT_PASSWORD="ywwd.net"

      --link mysql-server:mysql

      -p 10051:10051 --restart=always

      -v /etc/localtime:/etc/localtime:ro

      -d zabbix/zabbix-server-mysql:latest

 

2.3. zabbix-web 容器(nginx)

docker run --name zabbix-web-nginx-mysql -t

      -e DB_SERVER_HOST="mysql-server"

      -e MYSQL_DATABASE="zabbix"

      -e MYSQL_USER="zabbix"

      -e MYSQL_PASSWORD="ywwd.net"

      -e MYSQL_ROOT_PASSWORD="ywwd.net"

      --link mysql-server:mysql

      --link zabbix-server-mysql:zabbix-server

      -v /etc/localtime:/etc/localtime:ro

美高梅手机版,      -p 80:80

      --restart=always

      -d zabbix/zabbix-web-nginx-mysql:latest

 

专心:这里有个小标题,zabbix-web-nginx-mysql的启航脚本/run_zabbix_component.sh中,内定了时区,不是炎黄的Asia/Shanghai,所以大家要步入zabbix-web-nginx-mysql进行改善

2.4. 修改zabbix-web的时区

docker exec -it zabbix-web-nginx-mysql /bin/bash

TZ=${TZ:-"Asia/Shanghai"} 这里改为Asia/Shanghai,不然zabbix-web端的岁月会慢5个钟头

sed -in 's#Europe/Riga#Asia/Shanghai#g' /run_zabbix_component.sh

改过时区后,须求重启容器

docker restart zabbix-web-nginx-mysql

2.5. 在firewall防火墙松开zabbix-server和zabbix-agent的服务端口号

firewall-cmd --permanent --add-port=10050-10051/tcp

#--permanent恒久生效,10050zabbix-agent服务端口,10051zabbix-server服务端口

firewall-cmd --reload

#纠正后须求再次加载firewall防火墙

firewall-cmd --list-all

#终极查看配置是还是不是见到成效

 

这么zabbix-server端就曾经设置完结

接下去顾客端大家运用rpm包进行设置

rpm -ivh zabbix-agent-3.2.6-1.el7.x86_64.rpm

如出生龙活虎辙要求推广zabbix-agent端口

firewall-cmd --permanent --add-port=10050/tcp

firewall-cmd --reload

 

下一场对zabbix-agent端进行配备

egrep -v '^$|^#' /etc/zabbix/zabbix_agentd.conf

PidFile=/var/run/zabbix/zabbix_agentd.pid

LogFile=/var/log/zabbix/zabbix_agentd.log

Server=10.0.0.106 # <====zabbix-server端的IP地址

ServerActive=10.0.0.106 #<====zabbix-server端的IP地址,主动情势

Hostname=10.0.0.107 #<====zabbix-agent端的IP地址或然主机名

Include=/etc/zabbix/zabbix_agentd.d/*.conf

 

然后在zabbix-server端的web界面进行主机添加

美高梅手机版 1

 

1)改进主机名称,要跟zabbix-agent的配置文件中的Hostname相对应

2)采用你想设置的群组,假设群组官样文章,能够在下不驾驭龙活虎栏新的群组中实行增多

3)钦定zabbix-agent端的IP地址恐怕域名(端口号日常变卡塔尔国

此外保险暗中同意,点击加多就能够

 

3、利用Percona Monitoring Plugins插件举行MySQL多实例的监督

1卡塔 尔(阿拉伯语:قطر‎percona监察和控制zabbix的脚本是接纳php写的,所以要求未雨策画粮草先行好php运转条件,这里直接用yum安装就能够知足要求了:

yum install -y php php-mysql

2)安装percona-zabbix-templates

yum install -y https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.7/binary/redhat/6/x86_64/percona-zabbix-templates-1.1.7-2.noarch.rpm

 

也可配备Percona yum旅馆后装置,提出配置percona的yum源,因为作为一个DBA你势必会用到percona toolkit套件。 注:作者未曾用这种措施,percona toolkit小编是透过源码包安装的。

yum install -y

yum install -y percona-zabbix-templates

 

4、yum安装的shell为单实例版,所以大家要开展有关改正,这里已经有同伙进行了改革,我们一贯克隆,举办相比较,供给先安装git

git clone https://github.com/lianghx7123/Mysql_Multiport_monitor_used_zabbix.git mysql_monitor

 

1卡塔 尔(英语:State of Qatar)比较后,我们发今后get_mysql_stats_wrapper.sh脚本中,增添了有关参数

PORT=$2

HOST=127.0.0.1

 

2)CMD="/usr/bin/php -q $DIR/ss_get_mysql_stats.php --host $HOST --items $ITEM --port $PORT"

CMD变量的php路线必定要内定精确,不然会报错,我们在后边增添了 --port $PORT

CACHEFILE改为决断

if [ $PORT == 3306 ];then

CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt"

else

CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt":$PORT

fi

 

3卡塔 尔(英语:State of Qatar)running-slave举行如下改革,此处报警跟模板中的另七个Slave Stopped是重叠的,可是那一个比Slave Stopped要灵活,大致提前3分钟左右报告急察方,可是需求在/etc/my.cnf以致脚本中增添mysql的账号和密码等音信,有利有弊吧

 

if [ "$ITEM" = "running-slave" ]; then

# Check for running slave

RES=`HOME=~zabbix /usr/local/mysql/bin/mysql -P$PORT -h127.0.0.1 -uzabbix -e 'SHOW SLAVE STATUSG' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | grep -i yes|wc -l `

if [ "$RES" -ne 2 ]; then

echo 1

else

echo 0

fi

exit

并在/etc/my.cnf中添加

[mysql]

password=123456 #存在安全隐患,不过假诺把权限改小,大概会得到不到值,因为是透过zabbix客户去运作的本子,里面只是密码,何况账号只好本机登入,所以难题也相当的小,但是要严控别的3个shell脚本的权位。

 

4)#cat $CACHEFILE | sed 's/ /n/g; s/-1/0/g'| grep $ITEM | awk -F: '{print $2}'

这一列改为:

cat $CACHEFILE | sed 's/ /n/g'| grep $ITEM | awk -F: '{print $2}' 或者

cat $CACHEFILE | sed 's/ /n/g; s/-1/1/g'| grep $ITEM | awk -F: '{print $2}'

改为第二个,在zabbix-server的web端配置报告急察方阈值为小于0,也许等于1的时候报告急察方,

改为第二行,能够统后生可畏设置报告急察方阈值为等于1,因为这个标题,忧虑了本身长期

 

5、匡正自动开采脚本

cat mysql_low_discovery.sh

#!/bin/bash

#Fucation:mysql low-level discovery

#Script_name mysql_low_discovery.sh

discovery() {

port=($(sudo ss -tpln | awk -F "[ :]+" '/[m]ysql/ {print $4}'))

printf '{n'

printf 't"data":[n'

for key in ${!port[@]}

do

if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then

socket=`ps aux|grep ${port[${key}]}|grep -v grep|awk -F '=' '{print $9}'|cut -d ' ' -f 1`

printf 't {n'

printf "ttt"{#MYSQLPORT}":"${port[${key}]}"},n"

else [[ "${key}" -eq "((${#port[@]}-1))" ]]

socket=`ps aux|grep ${port[${key}]}|grep -v grep|awk -F '=' '{print $9}'|cut -d ' ' -f 1`

printf 't {n'

printf "ttt"{#MYSQLPORT}":"${port[${key}]}"}n"

fi

done

printf 't ]n'

printf '}n'

}

discovery

 

注意:由于此地使用了 sudo ,所以要把zabbix客商增进sudo权限,且不能不实行ss命令

echo 'zabbix ALL=(ALL) NOPASSWD:/usr/sbin/ss'>>/etc/sudoers

 

修改ss_get_mysql_stats.php脚本

$mysql_user = 'zabbix'; <=====此为php登录mysql的用户

$mysql_pass = 123456; <=====此为php登录mysql的密码

$mysql_port = NULL; <=====端口和socket要改为NULL

$mysql_socket = NULL;

 

修改userparameter_percona_mysql.conf 配置文件

把每行中的逗号',' 替换为[*],

sed -in 's#,#[*],#g' userparameter_percona_mysql.conf

在每行前面增加 $1

sed -in 's#$#$1#g' userparameter_percona_mysql.conf

最终在首行加多端口自动发掘脚本

sed -in '1i UserParameter=MySQL.discovery,/bin/bash /var/lib/zabbix/percona/scripts/mysql_low_discovery.sh' userparameter_percona_mysql.conf

 

6、复制脚本文件并施行权限

mkdir -p /var/lib/zabbix/percona/scripts/

cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/

cp get_mysql_stats_wrapper.sh /var/lib/zabbix/percona/scripts/

cp mysql_low_discovery.sh /var/lib/zabbix/percona/scripts/

cp ss_get_mysql_stats.php /var/lib/zabbix/percona/scripts/

chmod 700 /var/lib/zabbix/percona/scripts/*

chown -R zabbix. /var/lib/zabbix/

7、最终必定就要在全体的库上边做授权操作,不然拿不到监察和控制数据

GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT ON *.* TO 'zabbix'@'localhost' identified by '123456';

flush privileges;

 

8、最终把模版Mysql_Multiport.xml导入到zabbix-server内,全体应用的台本文件都曾经增添到附属类小构件中,咱们能够下载使用。

始建触发器原型

 

在zabbix-server端,增添触发器

次第点击 主机===>自动开掘===>触发器类型===>点击右上角的开创触发器原型

分红报告急察方等第,点击表明式栏的丰裕,选拔选择原型

接下来选用 比如:MySQL.slave-stopped[{#MYSQLPORT}]

挑选新型的T值小于N

N为0

注:假诺在第4.4中钦定的是cat $CACHEFILE | sed 's/ /n/g; s/-1/1/g'| grep $ITEM | awk -F: '{print $2}'

选料新型的T值等于N

N为1

 

然后大家能够手动结束主从复制,稍等片刻,就能够发了报告急察方新闻

 

天涯论坛不允许放附件,所以自个儿只能把附属类小零部件放在百度云了

 

参照他事他说加以考察小说:

https://ywwd.net/read-1271

http://www.ywnds.com/?p=6199

 

除此以外可以增进Wechat和邮件告急,这里推荐下边包车型大巴博文

Wechat告警:https://www.oschina.net/news/75588/zabbix-3.0.3

 

郑重声明:本文版权归美高梅163888所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。