安装服务端
1:配置zabbix的yum源
#下载zabbix-release
wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
#安装zabbix-release
rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm
#将官方仓库地址替换为清华仓库地址
sed -i 's#http://repo.zabbix.com#https://mirror.tuna.tsinghua.edu.cn/zabbix#g' /etc/yum.repos.d/zabbix.repo
2:安装zabbix服务端和zabbix-web前端
yum install zabbix-server-mysql zabbix-web-mysql -y
3:安装mariadb,创建zabbix库,授权zabbix用户
yum install mariadb-server -y
mysql_secure_installation
先回车
再n
然后一路y
mysql
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by '123456';
导入zabbix表结构和初始数据
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123456 zabbix
检查zabbix库是否导入成功
mysql -uroot zabbix -e 'show tables'
4:配置启动zabbix-server
vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
1 DBName=zabbix
2 DBUser=zabbix
3 DBPassword=4JwjfGiCwvt3JSzi
4 DBHost=127.0.0.1
5 DBPort=3306
6 LogFile=/usr/local/zabbix/tmp/zabbix_server.log
7 PidFile=/usr/local/zabbix/tmp/zabbix_server.pid
8 AlertScriptsPath=/usr/local/zabbix/alertscripts
9 StartPollers=25
10 StartTrappers=2
11 CacheSize=16M
12 HistoryCacheSize=16M
13 TrendCacheSize=8M
14 ValueCacheSize=16M
15 CacheUpdateFrequency=180
16 LogFileSize=2
17 Timeout=10
5:修改Zabbix前端的PHP配置,并启动httpd
vi /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
后期修改zabbix数据库密码的时候,需要修改的配置文件:
/etc/zabbix/web/zabbix.conf.php
登录的账号密码;
Admin
zabbix
安装客户端
wget https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.16-1.el7.x86_64.rpm
rpm -ivh zabbix-agent-4.0.16-1.el7.x86_64.rpm
vim /etc/zabbix/zabbix_agentd.conf
Server=10.0.0.71
自定义监控项
[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/disk.conf
UserParameter=disk.tps[*],iostat|awk '/$1/{print $$2}'
触发器
diff() 比较两次取到的值
last() 最新值
avg(5m) 平均5分钟,改值都大于>1
max(5m) 最大值
min(5m) 最小值
nodate(5m) 没有收到数据报警
报警媒介
存放脚本目录
/usr/lib/zabbix/alertscripts
脚本参数
{ALERT.SENDTO} 收件人的用户名
{ALERT.SUBJECT} 发送主题
{ALERT.MESSAGE} 发送详情信息
配置>动作>触发器>操作>中定制报警内容
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
}
grafana出图
下载zabbix插件
grafana-cli plugins install alexanderzobnin-zabbix-app
自动注册
vim /etc/zabbix/zabbix_agentd.conf
Server=10.0.0.71 #允许向自己要取数据的ip
ServerActive=10.0.0.71 #向指定ip地址发送数据
Hostname=10.0.0.8 #主机名字
HostMetadata=web #主机群组
动作创建自动注册
包含agent的HostMetadata元数据
版本升级
卸载旧版本的源
rpm -e zabbix-release
yum install zabbix-server-mysql zabbix-web-mysql
解决模板不兼容问题
分布式监控
配置yum源
安装
yum install zabbix-proxy-mysql mariadb-server -y
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by
导数据
cd /usr/share/doc/zabbix-proxy-mysql-4.0.16/
gzip -d schema.sql.gz
mysql zabbix_proxy -uzabbix -p123456 < schema.sql
[root@web02 ~]# grep -Ev ‘^$|#’ /etc/zabbix/zabbix_proxy.conf
Server=10.0.0.71
Hostname=sz_proxy #唯一,和创建的agent代理名称一致
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=123456
jmx监控
yum install zabbix-java-gateway
#开启tomcat的远程监控
vim /app/apache-tomcat-8.0.27/bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=10.0.0.8
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
windows jconsole.exe MBean
查看ObjectName和值名称
jmx["Catalina:type=Engine",startStopThreads]
#ObjectName #值名称
低级自动发现LLD
[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/disk.conf
UserParameter=disk.discovery,/tmp/discovery.sh #执行权限
[root@web01 ~]# cat /tmp/discovery.sh #生成json格式
#!/bin/bash
port=(`iostat|awk 'NR>6{print $1}'|sed '/^$/d'`) #查看所有磁盘命令放入数组
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\"{#DISKNAME}\":\"${port[${key}]}\"},\n" #变量名称
else [[ "${key}" -eq "((${#port[@]}-1))" ]]
printf '\t {\n'
printf "\t\t\t\"{#DISKNAME}\":\"${port[${key}]}\"}\n"
fi
done
printf '\t ]\n'
printf '}\n'
服务端下载zabbix-get测试
zabbix_get -s 10.0.0.8 -k disk.discovery
运行监控项使用的zabbix用户,命令权限拒绝chmod u+s即可
性能优化
1)针对mysql,写多读少 mariadb 5.5 存储引擎innodb 升级 mysql 5.7 tokudb
2)去掉无用监控项,增加监控项的取值间隔,减少历史数据保存周期
3)把被动模式修改为主动模式,增加zabbix-proxy
4)针对于zabbix-server进程调优,谁忙,就加大它的进程数量
监测>图形
Zabbix data gathering process busy %
Zabbix internal process busy %
查询哪个进程压力高,调高进程
进程过高影响内存,造成oom
5)针对于zabbix-server缓存调优,谁的剩余内存少,就加大它的缓存值
6)针对zabbix 历史数据和趋势图的表,进行周期性分表( 分表)
api
官方文档
获取token
curl -x POST -H “Content-Type: application/json-rpc” -d ‘{
“jsonrpc”: “2.0”,
“method”: “user.login”,
“params”: {
“user”: “Admin”,
“password”: “zabbix”
},
“id”: 1,
“auth”: null
}’ “http://10.0.0.71/zabbix/api_jsonrpc.php”
引入变量需要单引号引起来
企业微信群聊机器人报警
- 添加报警媒介类型
将wechat.py文件放在配置文件的AlertScriptsPath路径 - 添加动作
Trigger: {TRIGGER.NAME}
Trigger status: {TRIGGER.STATUS}
Trigger severity: {TRIGGER.SEVERITY}
Trigger URL: {TRIGGER.URL}
Item values:
1. {ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}
2. {ITEM.NAME2} ({HOST.NAME2}:{ITEM.KEY2}): {ITEM.VALUE2}
3. {ITEM.NAME3} ({HOST.NAME3}:{ITEM.KEY3}): {ITEM.VALUE3}
Original event ID: {EVENT.ID}
- 用户报警媒介