强哥带你学zabbix 5.01:什么是监控?2:常见的linux监控命令3:使用shell脚本来监控服务器4: zabbix的基础服务架构5: zabbix生产环境安装5.1:安装php运行环境5.2:安装数据库5.3:安装zabbix-server5.4: 安装zabbix-web6∶监控一台服务器主机7∶自定义监控项7.1:什么是监控项7.2 使用内置key监控nginx的状态7.3 使用自定义的监控项来监控nginx7.4 自定义带参数的监控项8∶自定义触发器9:自定义报警9.1 邮件报警9.2 微信报警(自定义脚本报警)9.3 报警升级10:自定义图形和grafana出图11∶自定义监控模板12:zabbix监控角度总结13: 用户访问量监控14:使用percona插件监控mysql15: snmp监控window和Linux16: zabbix自动发现和自动注册(主动)17: zabbix-agent主动和被动的区别18: zabbix版本升级19: zabbix分布式监控proxy20: zabbix监控java jvm原理21: zabbix性能优化22: zabbix低级自动发现23: zabbix api
监视和控制,
生活中的监控:事后追责
运维中的监控:事后追责,事前预警,性能分析,实时报警
cpu,内存,磁盘,网络
1top2htop3uptime4free 5vmstat6iostat7df 8iftop9nethogs没有监控工具的时候,shell脚本+定时任务 监控服务器
x1[root@k8s ~]# cat mem_alter.sh 234MEM=`free -m|awk 'NR==2{print $NF}'`5if [ $MEM -lt 100 ];then6 echo "web服务器 192.168.2.104 可用内存不足,当前可用内存$MEM" | mail -s "web服务器内存不足" 296917342@qq.com7fi缺点:效率低,不能实现集中报警,不能分析历史数据
我只有一台云主机需要监控,适合shell脚本+定时任务

主机 :zabbix-server
ip地址: 10.0.0.71
操作系统版本: centos 7.6
要求php版本 7.2以上+
安装php第三方源
xxxxxxxxxx31yum install epel-release -y2rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm3yum install php72w-fpm php72w-gd.x86_64 php72w-bcmath.x86_64 php72w-xml.x86_64 php72w-mbstring.x86_64 php72w-ldap.x86_64 php72w-mysqlnd.x86_64 -y安装nginx
xxxxxxxxxx11yum install nginx -y配置php-fpm和nginx
xxxxxxxxxx301vim /etc/php-fpm.d/www.conf2user = nginx3group = nginx45vim /etc/nginx/nginx.conf6worker_processes 1;7events {8 worker_connections 1024;9}10http {11 include mime.types;12 default_type application/octet-stream;13 sendfile on;14 keepalive_timeout 65;15 server {16 listen 80;17 server_name localhost;18 location / {19 root /html;20 index index.php index.html index.htm;21 }22 location ~ \.php$ {23 root /html;24 fastcgi_pass 127.0.0.1:9000;25 fastcgi_index index.php;26 fastcgi_param SCRIPT_FILENAME /html$fastcgi_script_name;27 include fastcgi_params;28 }29 }30}启动nginx和php-fpm
xxxxxxxxxx61mkdir /html2nginx -t3systemctl start nginx4systemctl enable nginx5systemctl start php-fpm6systemctl enable php-fpm准备zabbix-web的php代码
xxxxxxxxxx81wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.8.tar.gz2tar xf zabbix-5.0.8.tar.gz3cd zabbix-5.0.8/ui/4cp -a * /html/5chown -R nginx:nginx /html6#解决首次访问 zabbix-web安装界面 error 500的错误7mkdir /var/lib/php/session8chown -R nginx:nginx /var/lib/php/session/

xxxxxxxxxx81#解决方法:2vim /etc/php.ini3max_execution_time = 3004max_input_time = 3005post_max_size = 16M6date.timezone = Asia/Shanghai78systemctl restart php-fpm.service
xxxxxxxxxx251#参数链接https://www.jianshu.com/p/dd7137c4efa52 120 tar xf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz 3 122 mkdir /app4 123 mv mysql-5.7.32-linux-glibc2.12-x86_64 /app/mysql5 125 vim /etc/profile6 126 source /etc/profile7 127 useradd mysql 8 128 mkdir /data/mysql -p 9 129 chown -R mysql.mysql /app/*10 130 chown -R mysql.mysql /data/*11 132 yum install libaio-devel -y12 133 mysqld --initialize --user=mysql --basedir=/app/mysql --datadir=/data/mysql13 138 vim /etc/my.cnf14 139 vim /etc/systemd/system/mysqld.service 15 140 systemctl start mysqld.service 16 141 netstat -lntup17 142 systemctl enable mysqld18 143 mysql -uroot -p'j>jd&D;2(1_E'19 146 mysqladmin -uroot -p'j>jd&D;2(1_E' password '1qaz@WSX'20 147 mysql -uroot -p'1qaz@WSX'2122#创库授权23create database zabbix character set utf8 collate utf8_bin;24create user 'zabbix'@'localhost' identified by '123456';25grant all privileges on zabbix.* to 'zabbix'@'localhost';配置zabbix 5.0的源
xxxxxxxxxx21rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm2sed -i 's#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#g' /etc/yum.repos.d/zabbix.repo安装zabbix-server
xxxxxxxxxx11yum install zabbix-server-mysql -y导入zabbix初始数据
xxxxxxxxxx11zcat /usr/share/doc/zabbix-server-mysql-*/create.sql.gz|mysql -uzabbix -p123456 zabbix配置zabbix-server
xxxxxxxxxx61vim /etc/zabbix/zabbix_server.conf2DBHost=localhost3DBName=zabbix4DBUser=zabbix5DBPassword=1234566DBSocket=/tmp/mysql.sock启动zabbix-server
xxxxxxxxxx31systemctl start zabbix-server.service 2systemctl enable zabbix-server.service3netstat -lntup|grep 10051
解决方法:
xxxxxxxxxx51vim /etc/php.ini2pdo_mysql.default_socket= /tmp/mysql.sock3mysqli.default_socket = /tmp/mysql.sock45systemctl restart php-fpm



登录zabbix
用户名: Admin
密码:zabbix


调整语言为中文

6.1 监控zabbix-server
xxxxxxxxxx41yum install zabbix-agent -y23systemctl start zabbix-agent.service 4systemctl enable zabbix-agent.service6.2 监控其他linux主机
添加监控前准备
xxxxxxxxxx91#安装2rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent2-5.0.8-1.el7.x86_64.rpm3#配置4vim /etc/zabbix/zabbix_agent2.conf5Server=10.0.0.7167#启动8systemctl start zabbix-agent2.service 9systemctl enable zabbix-agent2.service


监控项:就是我们想要监控的指标,例如剩余内存,磁盘空间,服务的状态等等
每一个监控项,都有一个唯一的key,简洁明了(相当于shell脚本的变量名)
只需要安装zabbix-agent,默认就支持大量的监控项,但是linux模板并没有使用所有监控项 Template OS Linux by Zabbix agent主要监控了cpu,内存,磁盘,网卡,安全,它们都属于通用监控
应用集是监控项的分组




注意:添加监控项之前最好使用zabbix-get测试取值
xxxxxxxxxx81#只在zabbix-server上安装2yum install zabbix-get -y34zabbix_get -s 127.0.0.1 -k proc.num[nginx]5#注释6-s 被监控主机的ip地址7-p 端口8-k 指定监控项的key修改agent配置文件
xxxxxxxxxx81#zabbix-agent2vim /etc/zabbix/zabbix_agentd.conf34#zabbix-agent25vim /etc/zabbix/zabbix_agent2.conf67#增加一行8UserParameter=nginx_status,netstat -lntp|grep -c nginx重启agent生效
xxxxxxxxxx11systemctl restart zabbix-agent2.service使用zabbix-get测试取值
xxxxxxxxxx21#只能在zabbix-server上执行2zabbix_get -s 10.0.0.8 -k nginx_status注意 zabbix-agent 取值的时候权限不足解决方法:
xxxxxxxxxx311:使用sudo来执行22:使用suid来执行33:使用root用户来运行zabbix-agentweb界面添加监控项过程,同上
建议把agent自定义监控项独立成一个配置文件
xxxxxxxxxx21vim /etc/zabbix/zabbix_agent2.d/zbx_nginx.conf2UserParameter=nginx_status,netstat -lntp|grep -c nginx好处:可以复用,管理更方便
对应有规律的监控项:
xxxxxxxxxx31UserParameter=mysql_Uptime,echo 'show status;'|mysql -uroot|grep -w 'Uptime'|awk '{print $2}'2UserParameter=mysql_Com_select,echo 'show status;'|mysql -uroot|grep -w 'Com_select'|awk '{print $2}'3UserParameter=mysql_Com_delete,echo 'show status;'|mysql -uroot|grep -w 'Com_delete'|awk '{print $2}'适合使用带参考的自定义监控项
xxxxxxxxxx11UserParameter=mysql_define[*],echo 'show status;'|mysql -uroot|grep -w "$1"|awk '{print $$2}'取值效果
xxxxxxxxxx61[root@zabbix-server ~]# zabbix_get -s 10.0.0.8 -k mysql_define[Uptime]28273[root@zabbix-server ~]# zabbix_get -s 10.0.0.8 -k mysql_define[Com_select]415[root@zabbix-server ~]# zabbix_get -s 10.0.0.8 -k mysql_define[Com_insert]60触发器:设置一个报警条件
一个触发器至少对应一个监控项
触发器表达式的格式
例子1:
xxxxxxxxxx41{10.0.0.8:vfs.file.cksum[/etc/passwd].diff()}>02主机:10.0.0.83key值:vfs.file.cksum[/etc/passwd]4函数方法:diff() 对比两次监控项的值例子2:
xxxxxxxxxx41{10.0.0.8:proc.num.last()}/{10.0.0.8:kernel.maxproc.last()}*100>80210.0.0.8:proc.num:当前运行进程310.0.0.8:kernel.maxproc 系统最大允许进程的数量4函数方法:last() 最新值例子3:
xxxxxxxxxx61{10.0.0.8:vm.memory.size[available].min(5m)}<{$MEMORY.AVAILABLE.MIN} and {10.0.0.8:vm.memory.size[total].last()}>023函数方法 mim(5m),max(5m),avg(5m)4{$MEMORY.AVAILABLE.MIN}=20m5and 同时610.0.0.8:vm.memory.size[total] 最新的总内存大小自定义触发器表达



单条件
xxxxxxxxxx11{10.0.0.8:nginx_status.last()}=0多条件
xxxxxxxxxx11{10.0.0.8:disk_free.last()}<100M and {10.0.0.8:disk_free_per.last()}<3配置发件人




配置收件人


配置触发器动作

触发报警
xxxxxxxxxx11systemctl stop nginx.service效果

准备好企业微信号

加入企业微信

使用微信关联企业微信

测试微信报警脚本
xxxxxxxxxx141#修改脚本2corpid='wxd074861951c67ba6'3appsecret='QtraZrI936DZ0jZ3aSWTZ-lFVheAMgLmq3toM4B9U1A'4agentid=156#安装python模板7yum install python-pip -y8pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple910#测试发送微信消息11python weixin.py 'BuYuanTouLuXingShiDeCuiXianSheng' '天气真好' '阳光明媚,春暖花开!'12#第一个参数,企业微信的用户13#第二个参数,报警标题14#第三个参数,报警内容将脚本放在指定的位置
xxxxxxxxxx61#查看报警脚本路径2grep -Ev '^$|#' /etc/zabbix/zabbix_server.conf3AlertScriptsPath=/usr/lib/zabbix/alertscripts45mv weixin.py /usr/lib/zabbix/alertscripts/6chmod +x /usr/lib/zabbix/alertscripts/weixin.py配置发件人
xxxxxxxxxx31{ALERT.SENDTO}2{ALERT.SUBJECT}3{ALERT.MESSAGE}

配置收件人

重新触发报警
xxxxxxxxxx11systemctl stop nginx.service注意权限问题

增加一个用户



分别为oldboy和admin配置不同的收件人


报警升级设置


效果



解决中文乱码
xxxxxxxxxx91cd /html/2cd assets/fonts/3#上传中文字体4rz -E56[root@zabbix-server fonts]# ls7DejaVuSans.ttf SIMHEI.TTF89mv SIMHEI.TTF DejaVuSans.ttf 
自定义图形



使用grafana给zabbix出图
安装grafana
xxxxxxxxxx81wget https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-7.3.7-1.x86_64.rpm2yum localinstall grafana-7.3.7-1.x86_64.rpm -y3systemctl start grafana-server.service 4systemctl enable grafana-server.service56#访问grafana7http://10.0.0.8:30008默认账号密码:admin/admingrafana的概念
xxxxxxxxxx31a:插件,丰富原有功能plugin2b:数据源 datasource3c:dashboard 效果图安装zabbix插件
xxxxxxxxxx21grafana-cli plugins install alexanderzobnin-zabbix-app 4.1.22service grafana-server restart
启用zabbix插件

新建zabbix数据源





效果







导入dashboard




模板:定义好了,一些监控项,应用集,触发器,图形等资源
模板可以包含子模板
模板,可以导入导出,可以分享
自定义模板
xxxxxxxxxx211#开启nginx监控页面2 location = /nginx_status {3 stub_status;4 access_log off;5 }67#测试8[root@web01 ~]# curl http://127.0.0.1/nginx_status9Active connections: 1 10server accepts handled requests11 7 7 7 12Reading: 0 Writing: 1 Waiting: 0 1314#自定义监控项15[root@web01 zabbix_agent2.d]# cat zbx_nginx.conf16UserParameter=nginx_status,netstat -lntp|grep -c nginx17UserParameter=nginx_accepts,curl http://127.0.0.1/nginx_status 2>/dev/null|awk 'NR==3{print $1}'18UserParameter=nginx_active_con,curl http://127.0.0.1/nginx_status 2>/dev/null|awk 'NR==1{print $NF}'19UserParameter=nginx_Reading,curl http://127.0.0.1/nginx_status 2>/dev/null|awk 'NR==4{print $2}'20UserParameter=nginx_Writing,curl http://127.0.0.1/nginx_status 2>/dev/null|awk 'NR==4{print $4}'21UserParameter=nginx_Waiting,curl http://127.0.0.1/nginx_status 2>/dev/null|awk 'NR==4{print $NF}'

制作模板



添加监控项



同样的方法,复制触发器,复制图形等资源
使用模板注意事项:
xxxxxxxxxx71#开启监控页面2#导入模板(兼容性)3#把zabbix的取值配置文件,放入到指定目录/etc/zabbix/zabbix_agentd.d/4#如果有取值脚本,需要把取值也放在对应的目录5#zabbix-get调试取值6#在目标主机链接刚导入的模板7#验证,查看最新数据xxxxxxxxxx91物理层: 物理服务器 物理交换机2物理服务器:cpu温度,主板温度,功率,电压,风扇转速 ipmitool3物理交换机:接口流量 snmp模板45系统层:cpu,负载,内存,磁盘,网络,系统 zabbix自带模板67应用层:nginx/lvs/haproxy/php-fpm/mysql/pgsql/tomcat/nfs/glusterfs... 模板监控89业务层:网站访问速度,用户访问量pv\uv\ip,用户活跃度 日活,周活,月活 订单量,利润
使用第三方统计平台


将统计分析的js代码添加到网站模板


自建统计平台
使用开源的统计平台piwik

yum安装的mysql监控方法
xxxxxxxxxx161#导入模板(兼容性)2#把zabbix的取值配置文件,放入到指定目录/etc/zabbix/zabbix_agentd.d/3rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm4cd /var/lib/zabbix/percona/templates/5cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agent2.d/6systemctl restart zabbix-agent2.service7yum install php-cli php-mysqlnd -y 或者php72w-cli php72w-mysqlnd89vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php10数据库账号密码1112#zabbix-get调试取值13zabbix_get -s 10.0.0.8 -k MySQL.Open-files1415#在目标主机链接刚导入的模板16#验证,查看最新数据其他方式安装的mysql监控方法
xxxxxxxxxx181#导入模板(兼容性)2#把zabbix的取值配置文件,放入到指定目录/etc/zabbix/zabbix_agentd.d/3rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm4cd /var/lib/zabbix/percona/templates/5cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agent2.d/6systemctl restart zabbix-agent2.service7yum install php-cli -y 或者php72w-cli89vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php10$mysql_user = 'root';11$mysql_pass = '123456';12$mysql_socket = '/tmp/mysql.sock';1314#zabbix-get调试取值15zabbix_get -s 10.0.0.8 -k MySQL.Open-files1617#在目标主机链接刚导入的模板18#验证,查看最新数据不能安装zabbix-agent的设备,都可以使用snmp监控
snmp协议: simple network manager protocol
OID:监控标准都有一个唯一的id,object id
xxxxxxxxxx11总内存oid: .1.3.6.1.4.1.2021.4.5.0MIB:
xxxxxxxxxx11存储所有oid信息snmp协议版本
xxxxxxxxxx31v12v2c -c commuity 密码,口令3v3安装snmp服务端
xxxxxxxxxx71yum install net-snmp -y2vim /etc/snmp/snmpd.conf3#第41行修改为4com2sec notConfigUser default oldboy5view systemview included .167systemctl start snmpd.service安装snmp客户端,测试取值
xxxxxxxxxx51yum install net-snmp-utils.x86_64 -y2#snmpget 每次只能取一个值3#snmpwalk 范围性的取值4[root@zabbix-server yum.repos.d]# snmpwalk -v 2c -c oldboy 10.0.0.8 .1.3.6.1.2.1.25.2.2.05HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 995896 KBytes新建主机,链接模板


自动发现


添加主机的规则




自定注册:





agent配置
xxxxxxxxxx51vim /etc/zabbix/zabbix_agent2.conf2Server=10.0.0.713ServerActive=10.0.0.714Hostname=10.0.0.85HostMetadata=web验证:
xxxxxxxxxx11systemctl restart zabbix-agent2.service
agent配置
xxxxxxxxxx11[root@web02 templates]# vim /etc/zabbix/zabbix_agentd.conf验证:
xxxxxxxxxx11 systemctl restart zabbix-agent.service 
ansible实现自动注册
xxxxxxxxxx361[root@zabbix-server ~]# tail -3 /etc/ansible/hosts 2[agent]310.0.0.7 ansible_ssh_user='root' ansible_ssh_pass='123456' HostMetadata=db410.0.0.8 ansible_ssh_user='root' ansible_ssh_pass='123456' HostMetadata=web5 6[root@zabbix-server ~]# grep -Ev '^$|#' zabbix_agentd.conf.j2 7PidFile=/var/run/zabbix/zabbix_agentd.pid8LogFile=/var/log/zabbix/zabbix_agentd.log9LogFileSize=010Server={{ zabbix_server_ip }}11ServerActive={{ zabbix_server_ip }}12Hostname={{ ansible_default_ipv4.address }}13HostMetadata={{ HostMetadata }}14Include=/etc/zabbix/zabbix_agentd.d/*.conf1516[root@zabbix-server ~]# cat zabbix_agent.yml 17- hosts: agent18 vars: 19 - zabbix_server_ip: 10.0.0.7120 tasks:2122 - name: Install Zabbix Agent23 yum:24 name: https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.7-1.el7.x86_64.rpm25 state: present2627 - name: Configure Zabbix Agent28 template: src=zabbix_agentd.conf.j2 dest=/etc/zabbix/zabbix_agentd.conf29 notify: Restart Zabbix Agent3031 - name: Start Zabbix Agent32 service: name=zabbix-agent state=started enabled=yes3334 handlers:35 - name: Restart Zabbix Agent36 service: name=zabbix-agent state=restarted被动:如果有100个监控项,zabbix-server对agent进行100次取值
主动:如果有100个监控项,agent主动向zabbix-server索要任务清单,根据清单采集所有监控项,一次性发送给zabbix-server
使用主动模式之前

使用主动模式之后

xxxxxxxxxx121zabbix不同版本对php的要求22.2 -->3.0 -->4.0 -->5.03php5.3 php5.4 php5.4 php7.245zabbix-server 升级6安装新版本zabbix-release,7安装新版本yum install zabbix-server-mysql -y8重启服务systemctl restart zabbix-server910zabbix-web php版本升级11卸载旧版本yum remove php-* -y12安装新版本yum install php72w-fpm php72w-gd.x86_64 php72w-bcmath.x86_64 php72w-xml.x86_64 php72w-mbstring.x86_64 php72w-ldap.x86_64 php72w-mysqlnd.x86_64 -y安装proxy
xxxxxxxxxx311#创库2create database zabbix character set utf8 collate utf8_bin;3grant all on zabbix.* to zabbix@localhost identified by '123456';45#安装proxy6rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm7sed -i 's#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#g' /etc/yum.repos.d/zabbix.repo8yum install zabbix-proxy-mysql -y910#导入表结构11zcat /usr/share/doc/zabbix-proxy-mysql-5.0.8/schema.sql.gz |mysql -uzabbix -p123456 zabbix1213#配置14vim /etc/zabbix/zabbix_proxy.conf15Server=10.0.0.7116ServerPort=1005117Hostname=tj_proxy18....19DBHost=localhost20DBName=zabbix21DBUser=zabbix22DBPassword=1234562324#启动25systemctl start zabbix-proxy.service 26systemctl enable zabbix-proxy.service2728#检测29[root@web01 ~]# netstat -lntup|grep 1005130tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 96337/zabbix_proxy 31tcp6 0 0 :::10051 :::* LISTEN 96337/zabbix_proxy 创建代理



调通

agent配置
xxxxxxxxxx61vim /etc/zabbix/zabbix_agentd.conf2Server=172.16.1.83ServerActive=172.16.1.84Hostname=172.16.1.956systemctl restart zabbix-agent.service

tomcat weblogic jboss resin
tomcat:
开启监控接口
xxxxxxxxxx151#安装tomcat2rpm -ivh jdk-8u102-linux-x64.rpm 3mkdir /app4tar xf apache-tomcat-8.0.27.tar.gz -C /app/5/app/apache-tomcat-8.0.27/bin/startup.sh 67#增加一行8vim /app/apache-tomcat-8.0.27/bin/catalina.sh 9CATALINA_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" 10#重启生效11/app/apache-tomcat-8.0.27/bin/shutdown.sh12/app/apache-tomcat-8.0.27/bin/startup.sh 13#检验14[root@web01 opt]# netstat -lntup|grep 1234515tcp6 0 0 :::12345 :::* LISTEN 100141/java 安装zabbix-java-gateway来监控jvm
xxxxxxxxxx31yum install zabbix-java-gateway.x86_64 -y2systemctl start zabbix-java-gateway.service 3systemctl enable zabbix-java-gateway.service修改zabbix-server的配置文件
xxxxxxxxxx51vim /etc/zabbix/zabbix_server.conf2JavaGateway=127.0.0.13JavaGatewayPort=100524StartJavaPollers=35systemctl restart zabbix-server.service添加监控



性能不足的时候:经常出现误报,断图,还有其他报警

优化:
数据库优化:业务类型 写多读少
xxxxxxxxxx71存储引擎:innodb --> tokudb2版本 mariadb 5.5 --> mysql 5.73存储:机械硬盘--->固态硬盘4去掉无用的监控项5增加取值间隔,建议60s6减少数据的保留周期,重要监控项保留90d,其他的一律3d7mysql的分区和分表zabbix-server服务优化
xxxxxxxxxx21进程数2缓存大小xxxxxxxxxx91新增一个监控项原型2增加一个UserParameter=xxxx[*],cmd $134监控每块网卡的mac地址5[root@web01 zabbix_agent2.d]# cat zbx_net.conf6UserParameter=net_mac[*],ifconfig $1|awk '/ether /{print $$2}'78[root@zabbix-server ~]# zabbix_get -s 10.0.0.8 -k net_mac[eth1]900:0c:29:2e:16:18





通过低级自动发现监控mysql多实例
准备环境mysql多实例
xxxxxxxxxx261cp /etc/my.cnf /etc/my3307.cnf2vim /etc/my3307.cnf3[mysqld]4datadir=/data/3307/5socket=/data/3307/mysql.sock6port=33077user=mysql8symbolic-links=09[mysqld_safe]10log-error=/data/3307/mysqld.log11pid-file=/data/3307/mysqld.pid1213sed '/^$/d' /etc/my3307.cnf14sed -i '/^$/d' /etc/my3307.cnf15cp /etc/my3307.cnf /etc/my3308.cnf16sed -i 's#3307#3308#g' /etc/my3308.cnf17cat /etc/my3308.cnf18mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf19mysql_install_db --user=mysql --defaults-file=/etc/my3308.cnf20mysqld_safe --defaults-file=/etc/my3307.cnf &21mysqld_safe --defaults-file=/etc/my3308.cnf &2223mysqladmin -uroot -h 127.0.0.1 -P 3307 password '123456'24mysql -uroot -p123456 -h 127.0.0.1 -P 330725mysqladmin -uroot -h 127.0.0.1 -P 3308 password '123456'26mysql -uroot -p123456 -h 127.0.0.1 -P 3308创建低级自动发现规则
xxxxxxxxxx261#自定义规则的监控项2vim /etc/zabbix/zabbix_agent2.d/zbx_mysql.conf3UserParameter=mysql.port.discovery,/bin/bash /server/scripts/mysql_port_discovery.sh4#脚本5vim /server/scripts/mysql_port_discovery.sh 67#mysql low-level discovery8res=`netstat -lntp|awk -F "[ :\t]+" '/mysqld/{print$5}'`9port=($res)10printf '['11for key in ${!port[@]}12do13 if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then14 printf '{'15 printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"},"16 else [[ "${key}" -eq "((${#port[@]}-1))" ]]17 printf '{'18 printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"}"19 fi20done21printf ']\n'22#重启23systemctl restart zabbix-agent2.service24#测试25[root@zabbix-server ~]# zabbix_get -s 10.0.0.8 -k mysql.port.discovery26[{"{#MYSQLPORT}":"3306"},{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"}]



创建监控项原型
xxxxxxxxxx61vim zbx_mysql.conf2UserParameter=mysql_alive[*],mysqladmin -uroot -p123456 -h 127.0.0.1 -P $1 ping 2>/dev/null|grep -c alive34#测试5[root@zabbix-server ~]# zabbix_get -s 10.0.0.8 -k mysql_alive[3307]61




api:应用程序接口
什么是调用api
怎么调用api,常见的调用api,就是发起一个http请求
xxxxxxxxxx21curl "http://apis.juhe.cn/simpleWeather/query?city=昌平&key=3dae6629acd8689e9b12f8bb4f"2{"reason":"查询成功!","result":{"city":"昌平","realtime":{"temperature":"13","humidity":"15","info":"晴","wid":"00","direct":"西风","power":"2级","aqi":"67"},"future":[{"date":"2021-02-05","temperature":"1\/13℃","weather":"晴","wid":{"day":"00","night":"00"},"direct":"西风转西北风"},{"date":"2021-02-06","temperature":"-3\/13℃","weather":"多云","wid":{"day":"01","night":"01"},"direct":"西北风转南风"},{"date":"2021-02-07","temperature":"-5\/5℃","weather":"晴","wid":{"day":"00","night":"00"},"direct":"东南风转北风"},{"date":"2021-02-08","temperature":"-5\/5℃","weather":"多云转晴","wid":{"day":"01","night":"00"},"direct":"东南风转西北风"},{"date":"2021-02-09","temperature":"-3\/9℃","weather":"多云转晴","wid":{"day":"01","night":"00"},"direct":"东南风转西北风"}]},"error_code":0}调用zabbix-api
获取token
xxxxxxxxxx141curl -X POST -H 'Content-Type:application/json-rpc' -d '2{3 "jsonrpc": "2.0",4 "method": "user.login",5 "params": {6 "user": "Admin",7 "password": "zabbix"8 },9 "id": 1,10 "auth": null11}' http://10.0.0.71/api_jsonrpc.php12返回结果;13{"jsonrpc":"2.0","result":"6d33c0a88b0d55d7860eea70005c5b5b","id":1}14token='6d33c0a88b0d55d7860eea70005c5b5b'删除主机

xxxxxxxxxx121curl -X POST -H 'Content-Type:application/json-rpc' -d '2{3 "jsonrpc": "2.0",4 "method": "host.delete",5 "params": [6 103727 ],8 "auth": "'$token'",9 "id": 110}' http://10.0.0.71/api_jsonrpc.php11返回结果12{"jsonrpc":"2.0","result":{"hostids":[10372]},"id":1}创建主机
xxxxxxxxxx321curl -X POST -H 'Content-Type:application/json-rpc' -d '2{3 "jsonrpc": "2.0",4 "method": "host.create",5 "params": {6 "host": "10.0.0.8",7 "interfaces": [8 {9 "type": 1,10 "main": 1,11 "useip": 1,12 "ip": "10.0.0.8",13 "dns": "",14 "port": "10050"15 }16 ],17 "groups": [18 {19 "groupid": "17"20 }21 ],22 "templates": [23 {24 "templateid": "10357"25 }26 ]27 },28 "auth": "'$token'",29 "id": 130}' http://10.0.0.71/api_jsonrpc.php31返回结果:32{"jsonrpc":"2.0","result":{"hostids":["10377"]},"id":1}批量创建主机
xxxxxxxxxx371[root@web01 ~]# cat piliang_create_host.sh 234token='6d33c0a88b0d55d7860eea70005c5b5b'5for n in `echo 10.0.0.{50..100}`6do7curl -X POST -H 'Content-Type:application/json-rpc' -d '8{9 "jsonrpc": "2.0",10 "method": "host.create",11 "params": {12 "host": "'$n'",13 "interfaces": [14 {15 "type": 1,16 "main": 1,17 "useip": 1,18 "ip": "10.0.0.8",19 "dns": "",20 "port": "10050"21 }22 ],23 "groups": [24 {25 "groupid": "17"26 }27 ],28 "templates": [29 {30 "templateid": "10357"31 }32 ]33 },34 "auth": "'$token'",35 "id": 136}' http://10.0.0.71/api_jsonrpc.php37done