搭建一个高可用负载均衡的集群架构(四)

释放双眼,带上耳机,听听看~!

13 搭建zabbix监控告警系统,要求监控各个基础指标(cpu、内存、硬盘),网卡流量需要成图,还需要监控web站点的可用性,
14 定制自定义监控脚本,监控web服务器的并发连接数,接入zabbix,成图,设置触发器,超过100告警
15 定制自定义监控脚本,监控mysql的队列,接入zabbix,成图,设置触发器,队列超过300告警
16 定制自定义监控脚本,监控mysql的慢查询日志,接入zabbix,成图,设置触发器,每分钟超过60条日志需要告警,需要仔细分析慢查询日志的规律,确定日志条数
17 利用jmx,在zabbix上监控tomcat

1.安装zabbix


1
2
3
4
5
1rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
2
3yum install -y  zabbix-server zabbix-server-mysql zabbix-web zabbix-web-mysql  zabbix-agent
4
5

zabbix的原始数据库是create.sql.gz,可以使用gzip -d 解压此文件,在导入数据库,也可以使用zcat命令。


1
2
3
4
5
1cd /usr/share/doc/zabbix-server-mysql-4.2.3/
2
3src create.sql.gz  root@ip:/data/zabbix/              //ip指mysql数据库的地址
4
5

设置zabbix—server配置文件


1
2
3
4
5
6
7
8
9
10
11
1vim /etc/zabbix/zabbix_server.conf
2
3DBHost=IP:3306
4
5DBName=zabbix
6
7DBUser=zabbix
8
9DBPassword=123456
10
11

设置zabbix—agent配置文件


1
2
3
4
5
6
7
1vim /etc/zabbix/zabbix_agentd.conf
2
3Server=127.0.0.1
4
5ServerActive=127.0.0.1
6
7

安装htppd


1
2
3
4
5
6
7
8
9
1yum install -y httpd
2
3vim /etc/httpd/conf/httpd.conf
4
5Listen 8888
6
7ServerName www.zabbix.com:8888
8
9

web端图形界面文字处乱码,传入一个windows上的字体,修改名称


1
2
3
1cd  /usr/share/zabbix/assets/fonts/
2
3

设置php文件中date.timezone


1
2
3
4
5
1vim /etc/php.ini
2
3date.timezone = Asia/Shanghai
4
5

编辑nginx配置


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1vim /usr/local/nginx/conf/vhost/zabbix.com.conf
2upstream zabbix_com
3{
4    ip_hash;
5    server localhost:8888;
6}
7server
8{
9    listen 80;
10    server_name www.zabbix.com;
11    location /zabbix/
12    {
13        proxy_pass      http://zabbix_com/zabbix/;
14        proxy_set_header Host   $host;
15        proxy_set_header X-Real-IP      $remote_addr;
16        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
17    }
18    location /
19    {
20        proxy_pass      http://zabbix_com;
21        proxy_set_header Host   $host;
22        proxy_set_header X-Real-IP      $remote_addr;
23        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
24    }
25}
26
27

2.mysql 设置(下面的ip指向zabbix-server主机)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
1vim /etc/my.cnf
2
3character_set_server = utf8
4
5service mysqld restart
6
7登录mysql创建zabbix数据库
8
9mysql -uroot -p123456
10
11create database zabbix haracter set utf8;
12
13grant all on zabbix.* to zabbix@'IP' identified  by '123456';
14
15flush privileges ;
16
17quit
18
19
20## 还原数据库
21cd /data/zabbix/
22
23gzip -d create.sql.gz
24
25
26##文中的Latin修改成utf8,解决中文名称不能写数据库
27vim create.sql  
28
29:1,$s/latin1/utf8/g
30
31mysql -uroot -p123456 zabbix < create.sql
32
33
34

3.zabbix-agent端安装


1
2
3
4
5
6
7
8
9
10
11
12
13
1rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
2
3yum install -y  zabbix-agent
4
5#修改zabbix-agent的配置文件
6
7vim /etc/zabbix/zabbix_agentd.conf
8
9Server=zabbix_server_ip
10
11ServerActive=zabbix_server_ip
12
13

4. 搭建zabbix监控告警系统,要求监控各个基础指标(cpu、内存、硬盘),网卡流量需要成图,还需要监控web站点的可用性,


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1vim /etc/zabbix/zabbix_agentd.d/userparameter_io.conf
2UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$4}'                    
3//磁盘读的次数  
4
5UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$7}'                    
6//磁盘读的毫秒数  
7
8UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$8}'                  
9//磁盘写的次数  
10
11UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$11}'                  
12//磁盘写的毫秒数  
13
14UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$12}'
15//I/O的当前进度,只有这个域应该为0
16
17UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$13}'                      
18//花费在IO操作上的毫秒数  
19
20UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$6}'
21//读扇区的次数(一个扇区的等于512B)  
22
23UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$10}'
24//写扇区的次数(一个扇区的等于512B)
25
26

5. 自定义监控脚本,监控web服务器的并发连接数,接入zabbix,成图,设置触发器,超过100告警


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1vim /usr/local/sbin/zabbix/web_mon.sh
2
3#!/bin/bash
4#接收告警邮件的邮箱
5mail_account="aaa@163.com"
6  
7#提取本服务器的IP地址信息
8IP=`/sbin/ifconfig |grep -A1 "eth0: "|awk '/inet/ {print $2}'`
9
10#web服务器的并发连接数
11web=`netstat -ant |grep ':80' |grep -c ESTABLISHED`
12
13#设置web并发连接告警值,超过99的时候告警
14web_gt=100
15
16#当web值大于告警值,直接发邮件告警
17if (($web > $web_gt))
18then
19echo "$IP监控web服务器的并发连接数为$web_gt,超过警戒值100,请立即处理!!!" | mutt -s "$IP 服务器并发连接数严重告警!!!" $mail_account
20fi
21
22
23

6.定制自义监控脚本,监控mysql的队列,接入zabbix,成图,设置触发器,队列超过300告警


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
1首先安装rabbitmqctl 命令
2rabbitmqctl 命令 可以获取Mysql对列的信息
3
4rpm -Uvh http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.6/rabbitmq-server-3.5.6-1.noarch.rpm
5
6启动rabbitmq-server
7
8service rabbitmq-server start在对应的机器创建脚本
9
10vim /usr/local/sbin/mysql.sh
11#!/bin/bash #堵塞最大数量
12maxNum=100
13#接收者
14email_reciver="bbb@163.com"
15#smtp服务器地址
16email_smtphost=smtp.exmail.126.com
17#发送者邮箱
18email_sender=aaa@126.com
19#邮箱用户名
20email_username=tinna_wu
21#使用qq邮箱进行发送需要注意:首先需要开启:POP3/SMTP服务。
22email_password=xxxxx
23#服务器ip
24local_ip=`ifconfig|grep inet|awk '{print $2}'|awk -F " " '{print $1}'|head -1`
25#主题
26email_title="服务器${local_ip}消息队列堵塞"
27#Mysql的环境变量 export RABBITMQPATH=/usr/lib/rabbitmq/bin/
28#获取所有队列的名字和每个队列中的消息数量,存入'queueNum'数组中 declare -A A queue Json
29queuelindex=0
30for QUEUE in $(rabbitmqctl list_queues |grep -v 'Listing queues ...' | awk -F' ' '{print $1}');
31do
32#统计每个消息队列的数量
33queueJson[$QUEUE]=$(rabbitmqctl list_queues |grep $QUEUE | awk -F' ' '{print $2}')
34nums=${queueJson[$QUEUE]}
35# -ge
36if [[ $nums -ge $maxNum ]]; then
37#存key
38queueName[$queueIndex]=$QUEUE
39queueIndex=`expr $queueIndex + 1`
40fi
41done
42#如果有异常,发送邮件
43exceptionNum=${#queueName[@]}
44if [[ $exceptionNum -gt 0 ]]; then
45#有队列阻塞,exceptionName存放的为堵塞队列的名称,发送邮件
46#内容
47email_content="队列阻塞情况:"
48for name in ${queueName[*]}
49do
50email_content=$email_content"\\n${name}:${queueJson[${name}]}"
51done
52echo "###################count at $(date +'%d-%m-%Y %H:%M:%S') ######################"
53echo -e $email_content
54#发送邮件
55/usr/local/sbin/mysql.sh -f ${email_sender} -t ${email_reciver} -s ${email_smtphost} -u ${email_title} -xu ${email_username} -xp ${email_password} -m ${email_content} -o message-charset=utf-8
56fi
57
58

7. 定制自定义监控脚本,监控mysql的慢查询日志,接入zabbix,成图,设置触发器,每分钟超过60条日志需要告警,需要仔细分析慢查询日志的规律,确定日志条数


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1#!/bin/bash
2# script name: slow_query_count.sh
3
4slow_log=/tmp/dbm-slow.log
5grep 'timestamp' $slow_log | awk -F '=' '{print $2}' |awk -F ';' '{print $1}'|sort -r > /tmp/timestamp.log
6now=`sed -n '1'p /tmp/timestamp.log`
7alert_num=60
8one_min_ago=$[$now-60]
9num=0
10slow_query_sum() {
11    if [ $1 -ge $2 ]
12    then
13        num=$[$num+1]
14    else
15    break
16    fi
17}
18
19for n in `cat /tmp/timestamp.log`
20do
21    slow_query_sum $n $one_min_ago
22done
23rm -f /tmp/timestamp.log
24# There are $num slow query in a minute.
25echo $num
26
27

8. 利用jmx,在zabbix上监控tomcat

agent端安装zabbix-java-gateway


1
2
3
4
5
6
7
8
9
10
11
12
1yum install -y zabbix_java_gateway
2
3vim /etc/zabbix/zabbix_java_gateway.conf
4 LISTEN_IP="0.0.0.0"
5
6 LISTEN_PORT=10052
7
8 START_POLLERS=5
9
10systemctl start zabbix-java-gateway
11
12

agent端修改tomcat的catalina.sh


1
2
3
4
5
6
7
8
9
10
11
1vim  /usr/local/tomcat/bin/catalina.sh
2#在#!/bin/sh下增加
3export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
4-Djava.rmi.server.hostname=
5-Dcom.sun.management.jmxremote.port=9999
6-Dcom.sun.management.jmxremote.ssl=false
7-Dcom.sun.management.jmxremote.authenticate=false"
8
9/usr/local/tomcat/bin/startup.sh
10
11

给TA打赏
共{{data.count}}人
人已打赏
安全经验

如何避免Adsense违规封号

2021-10-11 16:36:11

安全经验

安全咨询服务

2022-1-12 14:11:49

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索