1、保障企业数据的安全可靠
2、为客户提供7*24小时服务
3、不断提升用户的体验
所谓网站可用性(availability)也即网站正常运行时间的百分比,业界用 N 个9 来量化可用性, 最常说的就是类似 “4个9(也就是99.99%)” 的可用性。
| 描述 | 通俗叫法 | 可用性级别 | 年度停机时间 |
|:----|:----:----|:----:----|:----:----|:----
| 基本可用性 | 2个9 | 99% | 87.6小时 |
| 较高可用性 | 3个9 | 99.9% | 8.8小时 |
| 具有故障自动恢复能力的可用性 | 4个9 | 99.99% | 53分钟 |
| 极高可用性 | 5个9 | 99.999% | 5分钟 |
RPO:(Recovery Point Obejective,恢复点目标)是指业务系统所允许的在灾难过程中的最大数据丢失量,用来衡量容灾系统的数据冗余备份能力。
RTO:(Recovery Time Objective,恢复时间目标)是指信息系统从灾难状态恢复到可运行状态所需的时间,用来衡量容灾系统的业务恢复能力。
我国的国家标准《GB20988-2007-T 信息安全技术信息系统灾难恢复规范》对灾备数据中心根据RPO与RTO两项指标分成了6个相应的等级,如下所示
http://blog.csdn.net/pan_tian/article/details/23270119
当服务器快要出问题还未出问题时,提前提醒我们服务器要出问题了
当出问题之后,可以便于找到问题的根源
https://software.intel.com/zh-cn/articles/book-Processor-Architecture_CPU_work_process/
[root@backup ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 58
Stepping: 9
CPU MHz: 2394.589
BogoMIPS: 4789.17
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0
[root@backup ~]# uptime
09:59:05 up 24 min, 3 users, load average: 0.00, 0.00, 0.00
lscpu 查看cpu信息==》L1d cache 一级数据缓存;L1i cache 一级指令缓存
uptime 查看系统负载 load average: 0.07, 0.07, 0.02 1, 5, 15分钟平均负载
top 查看系统实时负载
第1行结果和uptime一样,
第2行显示进程状态统计,zombie(僵尸进程);
第3行显示cpu使用率,us 用户使用cpu百分比 sy 系统使用cpu百分比 id cpu空闲百分比 按数字键1切换显示CPU平均使用率和每个cpu使用率。
第4/5行显示内存和swap分区信息
top 实时查看系统负载情况,z加颜色,x显示排列区域,<>移动(选择)排序区域
yum install htop -y
[root@backup ~]# mpstat 1
Linux 2.6.32-573.el6.x86_64 (backup) 2016年07月17日 x86_64 (1 CPU)
10时02分25秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
10时02分26秒 all 0.00 0.00 0.99 0.00 0.00 0.00 0.00 0.00 99.01
10时02分27秒 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
10时02分28秒 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
10时02分29秒 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
10时02分30秒 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
free -h 查看内存使用情况
[root@backup ~]# vmstat 1
procs -----------memory---------- —swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 158476 9492 260520 0 0 30 145 35 70 0 1 97 1 0
0 0 0 158444 9492 260508 0 0 0 0 13 11 0 0 100 0 0
0 0 0 158444 9500 260504 0 0 0 28 22 23 0 0 93 7 0
0 0 0 158444 9500 260508 0 0 0 0 11 10 0 0 100 0 0
0 0 0 158444 9500 260508 0 0 0 0 15 14 0 0 100 0 0
0 0 0 158444 9500 260508 0 0 0 0 11 11 0 0 100 0 0
0 0 0 158444 9500 260508 0 0 0 0 15 12 0 1 99 0 0
0 0 0 158444 9500 260508 0 0 0 0 14 14 0 0 100 0 0
0 0 0 158444 9500 260508 0 0 0 0 16 12 0 0 100 0 0
df-h 查看磁盘使用率
iotop:查看实时的io负载
yum install -y iotop
iotop
iostat
测试磁盘写速度
dd if=/dev/zero of=tst.data bs=1M count=10
测试磁盘读速度
[root@m01 ~]# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 248 MB in 3.03 seconds = 81.95 MB/sec
hdparm -i /dev/sda
smartctl -a /dev/sda
iftop:查看网络接口实时流量
yum install iftop -y
iftop -i eth1
nethogs:查看进程的流量
yum -y install nethogs
如果想远程管理服务器就有远程管理卡,比如Dell idRAC HP ILO IBM IMM
查看硬件的温度/风扇转速,使用ipmitool实现对服务器的命令行远程管理
yum -y install OpenIPMI ipmitool #->IPMI在物理机可以成功,虚拟机不行
[root@KVM ~]# ipmitool sdr type Temperature
Temp | 01h | ns | 3.1 | Disabled
Temp | 02h | ns | 3.2 | Disabled
Temp | 05h | ns | 10.1 | Disabled
Temp | 06h | ns | 10.2 | Disabled
Ambient Temp | 0Eh | ok | 7.1 | 22 degrees C
Planar Temp | 0Fh | ns | 7.1 | Disabled
IOH THERMTRIP | 5Dh | ns | 7.1 | Disabled
CPU Temp Interf | 76h | ns | 7.1 | Disabled
Temp | 0Ah | ns | 8.1 | Disabled
Temp | 0Bh | ns | 8.1 | Disabled
Temp | 0Ch | ns | 8.1 | Disabled
总结:
查看硬件的温度/风扇转速,电脑有撸大师,服务器就有ipmitool。使用ipmitool实现对服务器的命令行远程管理
知道了cpu性能好不好、忙不忙可以用lscpu、uptime、top、htop、vmstat、mpstat
内存够不够可以用free、vmstat
磁盘剩多少写的快不快可以用df、dd、iotop、iostat
网络太卡找iftop, nethogs
监控TCP连接状态及文件句柄 netstat,ulimit
megacli 查看raid磁盘信息
dstat 查看CPU、内存、磁盘、网络所有信息
网站测速
http://ping.chinaz.com
https://www.17ce.com/
MRTG(Multi Router Traffic Grapher)是一套可用来绘制网络流量图的软件
用Perl语言写成,可跨平台使用,数据采集用SNMP协议,MRTG将收集到的数据通过Web页面以GIF或PNG格式绘制出图像,并以日、周、月为单位分别绘出,可以查询最大值和最小值
Cacti(英文含义为仙人掌)是一套基于PHP、MySQL、SNMP和RRDtool开发的网络流量监测图形分析工具,它通过snmpget来获取数据,使用RRDtool绘图
SmokePing主要用于监视网络性能,包括常规的ping、WWW服务器性能、DNS查询性能、SSH性能等。底层也是用RRDtool做支持,特点是绘制的图非常漂亮,网络丢包和延迟用颜色和阴影来表示,支持将多张图叠放在一起
Graphite是一个用于采集网站实时信息并进行统计的开源项目。Graphite服务支持平均每分钟4800次更新操作,采用简单文本协议,具有绘图功能,其即插即用的功能可方便地用于任何需要监控的系统上
和其他监控工具不同的是,Graphite本身并不收集具体的数据,这些数据收集的工作通常由第三方工具或插件完成(如Gan-glia、Nagios、collectd、statsd、Collectl等)
Graphite用Python语言编写,采用Django框架,对于熟悉Python的用户(通常是运维人员)来说,将是一个不错的绘图工具选择。
Graphite做两件事:存储数据和按需绘图
Nagios是一个企业级的监控系统,可监控服务的运行状态和网络信息等,并能监视所指定的本地或远程主机参数以及服务,提供异常告警通知功能,同时提供一个可选的基于浏览器的Web界面,以方便系统管理人员查看网络状态、各种系统问题,以及日志等
Nagios的功能侧重于监控服务的可用性,能及时根据触发条件告警。目前,Nagios也占领了一定的市场份额, Nagios并没有与时俱进,已经不能满足于多变的监控需求,架构的扩展性和使用的便捷性有待增强,其高级功能集成在商业版Nagios XI中
Zenoss Core(简称Zenoss)是开源企业级IT管理软件,它允许IT管理员依靠单一的Web控制台来监控网络架构的状态和健康度。Zenoss Core的强大功能来自深入的列表与配置管理数据库,用于发现和管理公司IT环境的各类资产(包括服务器、网络和其他结构设备)。
Ganglia是一个跨平台的、可扩展的、高性能的分布式监控系统,如集群和网格。它基于分层设计,使用广泛的技术,用RRDtool存储数据,具有可视化界面,适合于对集群系统的自动化监控。
OpenTSDB用HBase存储所有时序(无须采样)的数据,来构建一个分布式、可伸缩的时间序列数据库。它支持秒级数据采集,支持永久存储,可以做容量规划,并很容易地接入到现有的告警系统里
在对实时性要求比较高的场合,OpenTSDB是一个很好的选择。它支持秒级别的数据采集,这在其他监控系统中是无法想象的。因得益于其存储系统的选择,所以它支持大数据分析。因此,这个开源软件在未来的环境中会有更多的用户,也会获得更广泛的支持。
https://book.open-falcon.org/zh_0_2/
Zabbix是一个分布式监控系统,支持多种采集方式和采集客户端,有专用的Agent(代理),也可以支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。其灵活的扩展性和丰富的功能是其他监控系统所不能比的。相对来说,它的总体功能做得非常优秀,从以上各种监控系统的对比来看,Zabbix都是具有优势的,其丰富的功能、可扩展的能力、二次开发的能力和简单易用的特点,读者只要稍加学习,即可构建起自己的监控系统
| 硬件监控 | 1、通过远程控制卡:dell的iDRAC,HP的ILO,IBM的IMM等 2、使用IPMI来完成物理设备的监控工作。通常必须要监控的就是温度、风扇转速、硬盘故障等 3、路由器,交换机(端口、光衰、日志),打印机等 |
|:----|:----:----|:----
| 系统监控 | CPU、内存、磁盘的剩余空间/利用率和I/O、swap使用率、系统uptime、进程数、负载 |
| 网络监控 | 端口,ping包,IDC带宽网络流量,网络流出流入速率,网络入流量,网络出流量,网络使用率,SMTP, POP3 |
| 流量分析 | pv、uv,并发连接数,独立IP数 常见工具:piwik,友盟+,百度统计 |
| 业务监控 | 用户登录失败次数,用户登录网站次数,输入验证码失败次数,网络连接数,电商网站订单,支付交易的数量,总订单数,平均订单数 |
| URL监控 | 监测指定URL访问过程中的返回码、下载时间及文件大小,支持内容匹配 |
| 数据库 | 监测数据库中指定的表空间、数据库的游标数、session数、事务数、死锁数、缓冲池命中率、库cache命中率、当前连接数、进程的内存利用率等性能参数 |
| 服务监控 | 端口和内存使用率、CPU使用率、服务状态、请求数、并发连接数、消息队列的字节数、client事务处理数等 |
| 日志监控 | 系统日志,访问日志、错误日志,运行日志特定字符串匹配 |
| 安全监控 | nginx+lua编写了一个WAF通过kibana可以图形化的展示不同的攻击类型的统计 |
| 文件监控 | 监控文件大小、hash值,匹配查询、字符串存在与否 |
所有监控范畴都可以整合到zabbix中
硬件监控:zabbix IPMI interface
系统监控:zabbix agent interface
Java监控:zabbix JMX interface
网络设备监控:zabbix SNMP interface
应用服务监控:zabbix agent UserParameter
MySQL数据库监控:percona-monitoring-plugins
URL监控:zabbix web监控
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
vim /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=http://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/$basearch/debuginfo/
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=1
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://mirror.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent mariadb-server
创建数据库并导入数据
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
在zabbix_server.conf中编辑数据库配置
# vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
systemctl start zabbix-server
编辑Zabbix前端的PHP配置
Zabbix前端的Apache配置文件位于 /etc/httpd/conf.d/zabbix.conf 。一些PHP设置已经完成了配置。
vim /etc/httpd/conf.d/zabbix.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai
依据所在时区,你可以取消 “date.timezone” 设置的注释,并正确配置它。在配置文件更改后,需要重启Apache Web服务器。
systemctl start httpd
zabbix连接数据库文件
10.0.0.61/zabbix
默认的用户名/密码为 Admin/zabbix
监控一台服务器
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
zabbix-agent配置
/etc/zabbix/zabbix_agentd.conf
...
Server=10.0.0.61
...
yum install wqy-microhei-fonts
\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
cat /etc/zabbix/zabbix_agentd.d/iotop.conf
UserParameter=iotps,iostat |awk '/^sda/{print $2}'
自定义监控项检测
zabbix_agentd -p |grep iotps
iotps [t|3.24]
zabbix-server获取数据
yum install zabbix-get
zabbix_get -s 10.0.0.9 -p10050 -k iotps
自定义阈值
自定义报警
graphtree
cd /usr/share/zabbix
wget https://raw.githubusercontent.com/OneOaaS/graphtrees/master/graphtree3.0.4.patch
2.导入补丁包
yum install -y patch
patch -Np0
3.修改Apache配置文件
vim /etc/httpd/conf.d/zabbix.conf
Alias /oneoaas /usr/share/zabbix/oneoaas
Alias /zabbix /user/share/zabbix
4.重启httpd服务
systemctl restart httpd
https://grafana.com/
https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/el7/
插件
数据源
dashboard
安装grafana
yum localinstall grafana-6.3.0-1.x86_64.rpm -y
systemctl start grafana-server.service
systemctl enable grafana-server.service
访问grafana:http://10.0.0.61:3000
账号:密码 admin:admin
安装zabbix插件,启动插件
grafana-cli plugins list-remote|grep zabbix
grafana-cli plugins install alexanderzobnin-zabbix-app
systemctl restart grafana-server.service
数据源–zabbix数据源
选择zabbix类型
导入模板
ESTABLISHED
SYN_SENT
SYN_RECV
FIN_WAIT1
FIN_WAIT2
TIME_WAIT
CLOSE
CLOSE_WAIT
LAST_ACK
LISTEN
CLOSING
监控脚本
vim /etc/zabbix/scripts/tcp_status.sh
#!/bin/bash
STAT="$1"
netstat -ant |awk '$1~/^tcp$/' |grep -c "$STAT"
自定义监控项
vim /etc/zabbix/zabbix_agentd.d/tcp.conf
UserParameter=tcp_status[*],/bin/bash /etc/zabbix/scripts/tcp_status.sh "$1"
[root@web03 zabbix_agentd.d]# cat nginx.conf
UserParameter=nginx_status[*],/bin/bash /etc/zabbix/scripts/nginx_status.sh "$1"
cat /etc/zabbix/scripts/nginx_status.sh
#!/bin/bash
NGINX_COMMAND=$1
NGINX_PORT=80
nginx_active(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Active/ {print $NF}'
}
nginx_reading(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Reading/ {print $2}'
}
nginx_writing(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Writing/ {print $4}'
}
nginx_waiting(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Waiting/ {print $6}'
}
nginx_accepts(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $1}'
}
nginx_handled(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $2}'
}
nginx_requests(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $3}'
}
case $NGINX_COMMAND in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
;;
*)
echo $"USAGE:$0 {active|reading|writing|waiting|accepts|handled|requests}"
esac
php状态监控
/etc/php-fpm.d/www.conf
pm.status_path = /phpfpm_status
nginx配置
location ~ /phpfpm_status {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
[root@web03 zabbix_agentd.d]# cat php.conf
UserParameter=phpfpm_status[*],/bin/bash /etc/zabbix/scripts/phpfpm_status.sh "$1"
监控MySQL
vim /etc/zabbix/.my.cnf
[mysql]
host = localhost
user = root
password = 123456
[mysqladmin]
host = localhost
user = root
password = 123456
vim /var/lib/zabbix/.my.cnf
[mysql]
host=127.0.0.1
port=3306
user=root
password=vcloud@123
[mysqladmin]
host=127.0.0.1
port=3306
user=root
password=vcloud@123
yum install php php-mysql
rpm -ivh https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm
监控脚本
/var/lib/zabbix/percona/scripts/
监控模板
/var/lib/zabbix/percona/templates
自定义监控
cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
systemctl restart zabbix-agent.service
测试
/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh qp
Redis监控
yum install redis
/etc/redis.conf
requirepass 123456
监听地址
bind 127.0.0.1
yum install php php-fpm php-mysql php-pdo php-pecl-redis
连接redis
config/config_global.php
$_config['memory']['redis']['server'] = '127.0.0.1';
$_config['memory']['redis']['port'] = 6379;
$_config['memory']['redis']['pconnect'] = 1;
$_config['memory']['redis']['timeout'] = '0';
$_config['memory']['redis']['requirepass'] = '123456';
[root@web03 ~]# find /code/ -type f |xargs grep -l "discuz.gtimg.cn"
/code/api/manyou/cloud_channel.htm
/code/source/plugin/cloudcaptcha/seccode/seccode_cloudcaptcha.php
/code/source/plugin/cloudsearch/template/module.htm
/code/source/plugin/manyou/Service/DiscuzTips.php
/code/source/plugin/manyou/Service/Doctor.php
查看redis信息
redis-cli -a 123456 info
mkdir -p /etc/zabbix/scripts
vim /etc/zabbix/scripts/redis_status.sh
#!/bin/bash
R_COMMAND="$1"
R_PORT="6379" #根据实际情况调整端口
R_SERVER="127.0.0.1" #根据具体情况调整IP地址
PASSWD="123456" #如果没有设置Redis密码,为空即可
redis_status(){
(echo -en "AUTH $PASSWD\r\nINFO\r\n";sleep 1;) | /usr/bin/nc "$R_SERVER" "$R_PORT" > /tmp/redis_"$R_PORT".tmp
REDIS_STAT_VALUE=$(grep "$R_COMMAND:" /tmp/redis_"$R_PORT".tmp | cut -d ':' -f2)
echo "$REDIS_STAT_VALUE"
}
case $R_COMMAND in
used_cpu_user_children)
redis_status "$R_PORT" "$R_COMMAND"
;;
used_cpu_sys)
redis_status "$R_PORT" "$R_COMMAND"
;;
total_commands_processed)
redis_status "$R_PORT" "$R_COMMAND"
;;
role)
redis_status "$R_PORT" "$R_COMMAND"
;;
lru_clock)
redis_status "$R_PORT" "$R_COMMAND"
;;
latest_fork_usec)
redis_status "$R_PORT" "$R_COMMAND"
;;
keyspace_misses)
redis_status "$R_PORT" "$R_COMMAND"
;;
keyspace_hits)
redis_status "$R_PORT" "$R_COMMAND"
;;
keys)
redis_status "$R_PORT" "$R_COMMAND"
;;
expires)
redis_status "$R_PORT" "$R_COMMAND"
;;
expired_keys)
redis_status "$R_PORT" "$R_COMMAND"
;;
evicted_keys)
redis_status "$R_PORT" "$R_COMMAND"
;;
connected_clients)
redis_status "$R_PORT" "$R_COMMAND"
;;
changes_since_last_save)
redis_status "$R_PORT" "$R_COMMAND"
;;
blocked_clients)
redis_status "$R_PORT" "$R_COMMAND"
;;
bgsave_in_progress)
redis_status "$R_PORT" "$R_COMMAND"
;;
bgrewriteaof_in_progress)
redis_status "$R_PORT" "$R_COMMAND"
;;
used_memory_peak)
redis_status "$R_PORT" "$R_COMMAND"
;;
used_memory)
redis_status "$R_PORT" "$R_COMMAND"
;;
used_cpu_user)
redis_status "$R_PORT" "$R_COMMAND"
;;
used_cpu_sys_children)
redis_status "$R_PORT" "$R_COMMAND"
;;
total_connections_received)
redis_status "$R_PORT" "$R_COMMAND"
;;
*)
echo $"USAGE:$0 {used_cpu_user_children|used_cpu_sys|total_commands_processed|role|lru_clock|latest_fork_usec|keyspace_misses|keyspace_hits|keys|expires|expired_keys|connected_clients|changes_since_last_save|blocked_clients|bgrewriteaof_in_progress|used_memory_peak|used_memory|used_cpu_user|used_cpu_sys_children|total_connections_received}"
esac
web监控
wireshark抓包获取cookie
模拟登录
curl -L -c cook -b cook -d 'fastloginfield=username&username=admin&password=123456&quickforward=yes&handlekey=ls' 'http://10.0.0.9/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1'
curl -c cook -b cook http://192.168.0.192/zabbix/index.php
curl -L -c cook -b cook -X POST -d 'name=Admin&password=zabbix&autologin=1&enter=Sign+in' http://192.168.0.192/zabbix/index.php > login.html
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36
首页
Username
登录
name=Admin&password=zabbix&autologin=1&enter=Sign+in
仪表板
主机
http://192.168.0.192/zabbix/hosts.php?ddreset=1
创建主机
报警
URL
http://10.0.0.9/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1
原始发布
fastloginfield=username&username=admin&password=123456&quickforward=yes&handlekey=ls
URL
http://10.0.0.9/home.php?mod=space&do=friend
原始发布
fastloginfield=username&username=admin&password=123456&quickforward=yes&handlekey=ls
退出登录
URL
http://10.0.0.9/member.php?mod=logging&action=logout
自动发现和自动注册
自动发现
客户端名称: {DISCOVERY.SERVICE.NAME}
客户端端口: {DISCOVERY.SERVICE.PORT}
客户端状态: {DISCOVERY.SERVICE.STATUS}
自动注册
修改配置zabbix-agent配置文件
Server: #server地址
ServerActive: 找zabbix-server注册
Hostname: #主机名,区分每一个agent节点
Hostmetadata: #元数据,例如:web
zabbixProxy分布式监控
代理(proxies)可用于代替Zabbix server本地收集数据,然后将数据报告给服务器
zabbix proxy 使用场景:
监控远程区域设备
监控本地网络不稳定区域
当 zabbix 监控上千设备时,使用它来减轻 server 的压力
简化分布式监控的维护
安装
yum localinstall https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-proxy-mysql-3.0.12-1.el7.x86_64.rpm
create database zabbix_proxy character set utf8 collate utf8_bin;
grant all on zabbix_proxy.* to zabbix_proxy@'localhost' identified by 'zabbix_proxy';
cd /usr/share/doc/zabbix-proxy-mysql-*
zcat schema.sql.gz |mysql -uzabbix_proxy -pzabbix_proxy zabbix_proxy
proxy配置
[root@web02 ~]grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf
Server=10.0.0.61
Hostname=web02
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=zabbix_proxy
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
agent配置
grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=172.16.1.8
ServerActive=172.16.1.8
Hostname=web03
Include=/etc/zabbix/zabbix_agentd.d/*.conf
Zabbix API
获取token
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1
}' http://10.0.0.61/zabbix/api_jsonrpc.php
#f返回的token
4f51830c86bdffebfbc4b5a92734260c
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://192.168.0.192/zabbix/api_jsonrpc.php
禁用某一台主机
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.update",
"params": {
"hostid": "10289",
"status": 1
},
"auth": "4f51830c86bdffebfbc4b5a92734260c",
"id": 1
}' http://10.0.0.61/zabbix/api_jsonrpc.php
删除一台主机
hostid=10280
token='62b206dbbb02de282369a3472b25933a'
curl -X POST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10280"
],
"auth": "'$token'",
"id": 1
}' http://192.168.0.192/zabbix/api_jsonrpc.php
curl -s -X POST -H 'Content-Type:application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "192.168.3.3",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.3.1",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "5"
}
],
"templates": [
{
"templateid": "10095"
}
]
},
"auth": "e42a8c26b5a66826f7c3b988d53d4a9f",
"id": 1
}' http://10.0.0.61/zabbix/api_jsonrpc.php
zabbix_create.sh
#login
GetToken=$(curl -s -X POST -H 'Content-Type:application/json' -d '{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1
}' http://10.0.0.61/zabbix/api_jsonrpc.php)
# result token
Token=$(echo $GetToken|awk -F ',' '{print $2}'|awk -F '"' '{print $4}')
while read line;do
curl -s -X POST -H 'Content-Type:application/json' -d '{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": '\"$line\"',
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": '\"$line\"',
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": '\"$Token\"',
"id": 1
}' http://10.0.0.61/zabbix/api_jsonrpc.php|python -m json.tool
主动模式和被动模式
默认是被动:
被动模式,100个监控,需要100个回合
主动模式,100个监控,需要1个回合
1:zabbix server 配置主动模板
2:agent需要配置
Server: #允许谁来管我取值10.0.0.61
ServerActive: #我主动向谁汇报10.0.0.61
Hostname: #区分每一个agent节点 (zabbix-web配置的名称)
低级自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法
适用于监控项类似但监控项数量不确定
df -h |grep -w "/" |awk '{print $5}'|tr -d "%"
df -h |grep -w "$1" |awk '{print $$5}'|tr -d "%"
disk.conf
UserParameter=disk_use[*],df -h |grep -w "$1" |awk '{print $$5}'|tr -d "%"
zabbix_get -s 192.168.0.194 -p 10050 -k disk_use[/boot]
Used disk space on {#FSNAME} (percentage)
disk_use[{#FSNAME}]
Incoming network traffic on {#IFNAME}
net.if.in[{#IFNAME}]
zabbix_get -s 192.168.0.194 -p 10050 -k net.if.discovery
{"data":[{"{#IFNAME}":"eth0"},{"{#IFNAME}":"eth1"},{"{#IFNAME}":"eth2"},{"{#IFNAME}":"lo"}]}
{#IFNAME}
@Network interfaces for discovery
自动发现规则 —> 创建发现规则(特殊的监控项(json))—> 监控项原型—> 创建监控项原型(自定义监控项)
1)针对mysql,写多读少 mariadb 5.5 innodb 升级 mysql 5.7 tokudb
https://www.percona.com/doc/percona-server/5.7/tokudb/tokudb_installation.html
2)去掉无用监控项,增加监控项的取值间隔,减少历史数据保存周期
3)把被动模式修改为主动模式,增加zabbix-proxy
4)针对于zabbix-server进程调优,谁忙,就加大它的进程数量
5)针对于zabbix-server缓存(CacheSize)调优,谁的剩余内存少,就加大它的缓存值
6)针对zabbix 历史数据(history表)和趋势图的表(trends),进行周期性分表
zabbix-server调整
/etc/zabbix/zabbix_server.conf
### Option: SourceIP
# Source IP address for outgoing connections.
#
# Mandatory: no
# Default:
# SourceIP=
zabbix-server不能同时运行