zabbix性能优化(监控) myisam innode

监控:写多读少的应用 适合innnode,innode是行级锁

小说类型网站:读多写少 适合myisam,myisam是表级锁

针对mysql,写多读少(DBA的工作内容)

1.生成cnf配置文件 https://imysql.com/my-cnf-wizard.html

2.zabbix的主要瓶颈在于数据库

数据库中压力最大的五张表,表里带索引,所以数据量大

https://www.cnblogs.com/52py/p/9604381.html

去掉无用的监控项,增加监控项的间取值间隔,减少历史数据保存周期

没用的,不需要的,全部去掉

可以增大取值间隔,不要快速取值

由于表中数据巨大,重启(意外关机)可能一天都没能起来,(或者海外业务)

后台启动运行:

​ 开启screen(会开启子shell在后台运行)

​ screen

输入命令

​ CMD

查看screen

​ screen -ls

恢复screen

​ screen -r ID

结束screen

​ kill ID

减少保存周期

监控项数量在一段时间后会自动稳定(自带一定的监控项删除)

也可以自动检测后删除

把被动模式修改为主动模式,增加zabbix-proxy

能改成主动模式的都改成主动模式

能用zabbix-proxy的都用zabbix-proxy

请求次数汇总在zabbix-proxy这一层,但是总数据量没变

zabbix-server任务清单会发给zabbix-proxy,proxy发给anget

针对zabbix-server进程调优,谁忙,就加大他的进程数量

针对zabbix_server缓存调优,谁的剩余内存少,就加大它的缓存值

先给server添加Template App Zabbix Server模板,里面都是收集器

当低于40%时,适量增大他的进程

vim /etc/zabbix/zabbix_server.conf

各种cache都可以在文件里调,每个进程数都可以在文件中找到

zabbix繁忙程度查看

针对zabbix 历史数据和趋势图的表,进行周期性分表

写触发器,进行定期分表

zabbix分组报警,使用grafana对接zabbix出图

分组报警

https://www.cnblogs.com/ssgeek/p/9274767.html

取消垃圾报警(多采用合适的阈值,如10分钟的avg)

zabbix-server默认内存可以调

可以减少因为内存不足引起的误报

延迟查看

误报会占Swap空间不释放,如果报警多,会减少可用空间

查看年度报警

删除所有无用报警项

5.查看修改动作

zabbix-api使用

微信报警,调用api(http curl)

顶顶报警,调用api(http curl)

zabbix api(可用二次开发,在运维平台接入zabbix)

granfana调用zabbix api

http://localhost/zabbix/api_jsonrpc.php Admin zabbix

官方文档

https://www.zabbix.com/documentation/4.0/zh/manual/api

创建主机

获取cookie

发送数据

(请求头+请求内容(json格式)+目的地址)

curl -X POST -H 'Content-Type: application/json' -d '

1
2
3
4
5
6
7
8
9
10
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}'

http://192.168.1.10:56/zabbix/api_jsonrpc.php

拿到token

{“jsonrpc”:”2.0”,”result”:”e0bf8ce1e015dd932ae4620609f4cbcf”,”id”:1}

token = “e0bf8ce1e015dd932ae4620609f4cbcf”

创建主机

脚本解析

批量创建进行变量替换

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
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "Linux server", #(主机名称,随便填)
"interfaces": [ #(接口内容)
{
"type": 1, #(agent模式,1~4)
"main": 1, #(默认即可,不用改)
"useip": 1, #(1为ip地址,否则为DNS)
"ip": "192.168.1.10",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "16" #(主机组ID)
}
],
"templates": [
{
"templateid": "10317" #(模板ID)
}
],
"inventory_mode": 0, #资产模式,这部分可以删除
"inventory": {
"macaddress_a": "01234",
"macaddress_b": "56768"
}
},
"auth": "$token",
"id": 1
}'

http://192.168.1.10:56/zabbix/api_jsonrpc.php

示例脚本

curl -X POST -H 'Content-Type: application/json' -d '

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
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "kunpeng",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.1.10",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "16"
}
],
"templates": [
{
"templateid": "10317"
}
]
},
"auth": "f1a13824c6e095743be64be42b872895",
"id": 1
} '

http://192.168.1.10:56/zabbix/api_jsonrpc.php

返回值
{“jsonrpc”:”2.0”,”result”:{“hostids”:[“10339”]},”id”:1}

运维平台只需要几个核心的运维开发,其他的都可以是小白,会点点点就行了,特别是实习生

删除主机

脚本解析

1
2
3
4
5
6
7
8
9
10
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [ #(主机id)
"13",
"32"
],
"auth": "038e1d7b1735c6a5436ee9eae095879e",
"id": 1
}

脚本示例

curl -X POST -H 'Content-Type: application/json' -d '

1
2
3
4
5
6
7
8
9
10
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10339",
"10328"
],
"auth": "f1a13824c6e095743be64be42b872895",
"id": 1
} '

http://192.168.1.10:56/zabbix/api_jsonrpc.php

接下来就是前端写按钮,可以点点点发起请求就行了

ID查询

主机群ID查看

模板ID查看

zabbix高可用

高可用对比

传统服务

nginx + php , keeplievd vip

nginx + php , keeplievd

新服务

zabbix-server, keeplived vip

zabbix-server, keeplived
如果开启,会一直收不到数据,所以我需要用keeplived状态来实现启动和关闭

zabbix-angent vip

参考博客

https://www.qstack.com.cn/archives/287.html

部署步骤

安装

yum install keepalived sshpass -y

配置文件修改

修改zabbix_server.conf

vim /etc/zabbix/zabbix_server.conf

修改DB数据库地址

修改密码

修改取值IP(指定多个IP时,从哪个IP取值)

修改zabbix.conf.php

vim /etc/zabbix/web/zabbix.conf.php

优化http

vim /etc/httpd/conf/httpd.conf

备份数据库

1
2
3
4
5
6
7
8
9
mysqldump -B zabbix > zabbix.sql
迁移数据
scp -rp 192.168.1.10:/root/zabbix.sql
导入数据
mysql < zabbix.sql
授权
grant all on zabbix.* to zabbix@'192.168.1.%' identified by '123456';
测试登录
mysql -h 192.168.1.10 -uzabbix -p123456

编写并授权脚本

编写自启脚本

1
2
3
4
vim /opt/to_master.sh
#!/bin/bash
sshpass -p aosatech ssh -o StrictHostKeyChecking=no root@192.168.1.92 "systemctl stop zabbix-server.service"
systemctl restart zabbix-server.service

参数:

-p 远程密码

/etc/init.d/zabbix-server stop cmd命令

/etc/init.d/zabbix-server start cmd命令

授权执行脚本

chmod +x /opt/to_master.sh

授权keeplived脚本

chmod 644 /etc/keepalived/keepalived.conf

修改keeplived

LVS 需要修改

state 需要修改

interface 需要修改

priority 需要修改

ip 需要修改

keepalived脚本示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL 29 (这里需要修改,同一ID组里不能存在相同LVS_ID)
}
vrrp_instance VI_1 {
state BACKUP (这里双方备机即可)
interface eth0 (根据实际网卡选填)
virtual_router_id 51 (这里需要修改,同一网段不能存在相同ID组)
priority 150 (权重自行决定)
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.56.66 (ip不能有人在使用)
}
notify_master /opt/to_master.sh
}

添加hosts解析(要么不加,要么全加)

要么双方都加上解析,要么双发都不加解析,否则在验证的过程中会出现问题

192.168.1.10 node10

192.168.1.91 node91

修改agent端

vim /etc/zabbix/zabbix_agentd.conf

agent日志

zabbix日志在 /var/log/zabbix/zabbix_agentd.log

访问

http://VIP/zabbix/