zabbix

为什么监控

1、保障企业数据的安全可靠

2、为客户提供7*24小时服务

3、不断提升用户的体验

  1. 网站可用性

所谓网站可用性(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分钟 |

  1. 容灾恢复能力的关键指标

RPO:(Recovery Point Obejective,恢复点目标)是指业务系统所允许的在灾难过程中的最大数据丢失量,用来衡量容灾系统的数据冗余备份能力。

图片

RTO:(Recovery Time Objective,恢复时间目标)是指信息系统从灾难状态恢复到可运行状态所需的时间,用来衡量容灾系统的业务恢复能力。

图片

我国的国家标准《GB20988-2007-T 信息安全技术信息系统灾难恢复规范》对灾备数据中心根据RPO与RTO两项指标分成了6个相应的等级,如下所示

图片

http://blog.csdn.net/pan_tian/article/details/23270119

  1. ** 监控的作用**

当服务器快要出问题还未出问题时,提前提醒我们服务器要出问题了

当出问题之后,可以便于找到问题的根源

怎么监控

  1. cpu

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

  1. 内存

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

  1. 磁盘

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

  1. 网络

iftop:查看网络接口实时流量

yum install iftop -y

iftop -i eth1

nethogs:查看进程的流量

yum -y install nethogs

  1. ** 硬件的温度/风扇转速**

如果想远程管理服务器就有远程管理卡,比如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

总结:

  1. 查看硬件的温度/风扇转速,电脑有撸大师,服务器就有ipmitool。使用ipmitool实现对服务器的命令行远程管理

  2. 知道了cpu性能好不好、忙不忙可以用lscpu、uptime、top、htop、vmstat、mpstat

  3. 内存够不够可以用free、vmstat

  4. 磁盘剩多少写的快不快可以用df、dd、iotop、iostat

  5. 网络太卡找iftop, nethogs

  6. 监控TCP连接状态及文件句柄 netstat,ulimit

megacli 查看raid磁盘信息

dstat 查看CPU、内存、磁盘、网络所有信息

网站测速

http://ping.chinaz.com

https://www.17ce.com/

监控工具

  1. ** MRTG**

MRTG(Multi Router Traffic Grapher)是一套可用来绘制网络流量图的软件

用Perl语言写成,可跨平台使用,数据采集用SNMP协议,MRTG将收集到的数据通过Web页面以GIF或PNG格式绘制出图像,并以日、周、月为单位分别绘出,可以查询最大值和最小值

  1. ** Cacti**

Cacti(英文含义为仙人掌)是一套基于PHP、MySQL、SNMP和RRDtool开发的网络流量监测图形分析工具,它通过snmpget来获取数据,使用RRDtool绘图

  1. ** SmokePin**

SmokePing主要用于监视网络性能,包括常规的ping、WWW服务器性能、DNS查询性能、SSH性能等。底层也是用RRDtool做支持,特点是绘制的图非常漂亮,网络丢包和延迟用颜色和阴影来表示,支持将多张图叠放在一起

  1. ** Graphite**

Graphite是一个用于采集网站实时信息并进行统计的开源项目。Graphite服务支持平均每分钟4800次更新操作,采用简单文本协议,具有绘图功能,其即插即用的功能可方便地用于任何需要监控的系统上

和其他监控工具不同的是,Graphite本身并不收集具体的数据,这些数据收集的工作通常由第三方工具或插件完成(如Gan-glia、Nagios、collectd、statsd、Collectl等)

Graphite用Python语言编写,采用Django框架,对于熟悉Python的用户(通常是运维人员)来说,将是一个不错的绘图工具选择。

Graphite做两件事:存储数据和按需绘图

  1. ** Nagios**

Nagios是一个企业级的监控系统,可监控服务的运行状态和网络信息等,并能监视所指定的本地或远程主机参数以及服务,提供异常告警通知功能,同时提供一个可选的基于浏览器的Web界面,以方便系统管理人员查看网络状态、各种系统问题,以及日志等

Nagios的功能侧重于监控服务的可用性,能及时根据触发条件告警。目前,Nagios也占领了一定的市场份额, Nagios并没有与时俱进,已经不能满足于多变的监控需求,架构的扩展性和使用的便捷性有待增强,其高级功能集成在商业版Nagios XI中

  1. ** Zenoss Core**

Zenoss Core(简称Zenoss)是开源企业级IT管理软件,它允许IT管理员依靠单一的Web控制台来监控网络架构的状态和健康度。Zenoss Core的强大功能来自深入的列表与配置管理数据库,用于发现和管理公司IT环境的各类资产(包括服务器、网络和其他结构设备)。

  1. ** Ganglia**

Ganglia是一个跨平台的、可扩展的、高性能的分布式监控系统,如集群和网格。它基于分层设计,使用广泛的技术,用RRDtool存储数据,具有可视化界面,适合于对集群系统的自动化监控。

  1. ** OpenTSDB**

OpenTSDB用HBase存储所有时序(无须采样)的数据,来构建一个分布式、可伸缩的时间序列数据库。它支持秒级数据采集,支持永久存储,可以做容量规划,并很容易地接入到现有的告警系统里

在对实时性要求比较高的场合,OpenTSDB是一个很好的选择。它支持秒级别的数据采集,这在其他监控系统中是无法想象的。因得益于其存储系统的选择,所以它支持大数据分析。因此,这个开源软件在未来的环境中会有更多的用户,也会获得更广泛的支持。

  1. ** 小米 open-falcon**

https://book.open-falcon.org/zh_0_2/

  1. ** Zabbix**

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中

硬件监控:zabbix IPMI interface

系统监控:zabbix agent interface

Java监控:zabbix JMX interface

网络设备监控:zabbix SNMP interface

应用服务监控:zabbix agent UserParameter

MySQL数据库监控:percona-monitoring-plugins

URL监控:zabbix web监控

zabbix逻辑图

图片

zabbix安装

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进程

在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连接数据库文件

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

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

agent自定义监控项

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

1.安装graphtree

cd /usr/share/zabbix
wget https://raw.githubusercontent.com/OneOaaS/graphtrees/master/graphtree3.0.4.patch

2.导入补丁包

yum install -y patch
patch  -Np0 <graphtree3.0.4.patch
chown -R apache.apache oneoaas

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

grafana

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

1565141405954

安装zabbix插件,启动插件

grafana-cli plugins list-remote|grep zabbix
grafana-cli plugins install alexanderzobnin-zabbix-app
systemctl restart grafana-server.service

图片

数据源–zabbix数据源

图片

选择zabbix类型

图片

图片

导入模板

图片

图片

tcp状态监控

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"

图片

nginx状态监控

[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

zabbix检测

场景

图片

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

自动发现和自动注册

自动发现

自动发现主机IP:{DISCOVERY.DEVICE.IPADDRESS}

客户端名称: {DISCOVERY.SERVICE.NAME}
客户端端口: {DISCOVERY.SERVICE.PORT}
客户端状态: {DISCOVERY.SERVICE.STATUS}

自动注册

修改配置zabbix-agent配置文件

Server:      #server地址 
ServerActive:  找zabbix-server注册 
Hostname:    #主机名,区分每一个agent节点
Hostmetadata:   #元数据,例如:web

图片

zabbixProxy分布式监控

概述

Zabbix通过Zabbix proxies为IT基础设施提供有效和可用的分布式监控

代理(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

done < /tmp/ip.txt

主动模式和被动模式

默认是被动:

被动模式,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))—> 监控项原型—> 创建监控项原型(自定义监控项)

zabbix性能优化

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高可用

zabbix-server调整

/etc/zabbix/zabbix_server.conf

### Option: SourceIP
#       Source IP address for outgoing connections.
#
# Mandatory: no
# Default:
# SourceIP=

zabbix-server不能同时运行

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wuxingge

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值