Linux系列之zabbix监控

1.监控概述

Alexei Vladishev创建了Zabbix项目,当前处于活跃的开发状态,Zabbix SIA提供支持。

Zabbix是一个企业级的、开源的、分布式的监控套件。

Zabbix可以对网络和服务进行监控。 Zabbix利用灵活的告警机制,可实现微信、短信和邮件的自动报警。Zabbix利用存储的监控数据提供监控报告及实现图形化显示。

Zabbix支持polling和trapping两种方式。所有的Zabbix报告都可以通过配置参数在WEB界面进行访问。你可以通过Web界面实时查看网络和服务的监控状况。 不管你是小型组织还是大规模的公司,Zabbix都可以通过不通的配置来扮演监控你的IT基础框架的角色。

Zabbix是零成本的,因为Zabbix编写和发布基于GPL V2协议. 意味着源代码是免费发布的。

同时,Zabbix公司也提供商业化的技术支持。

1.1监控流程

  1. 识别监控对象
  2. 理解监控对象
  3. 细分监控对象的指标
  4. 标准化监控(标准化脚本、模板)
  5. 分布式监控(主动、被动、分布式)
  6. 自动化监控(自动发现、主动注册)
  7. 确定报警的基准线 ①动态告警 ②告警去重 依赖 3故障自愈 ④大规模(精简)

1.2监控对象的分类

  1. 硬件监控(方法:机房巡检、IPMI、SNMP)
  2. 系统监控(对象:CPU、内存、IO【磁盘、网络】)
  3. 服务监控(对象:各类服务【Nginx|Tomcat|RabbitMQ|Openstack|MySQL|*】)
  4. 日志监控(方法:Elastic Stack)
  5. 网络监控(方法:第三方、Smokeping)
  6. APM应用性能管理(工具:PINPoint)
  7. 浏览监控(工具:Piwik)
  8. 其他监控(APP监控、安全监控、业务监控、等等)

2.硬件监控IPMI

2.1简介

IPMI(Intelligent Platform Management Interface)即智能平台管理接口是使硬件管理具备“智能化”的新一代通用接口标准。用户可以利用 IPMI 监视服务器的物理特征,如温度、电压、电扇工作状态、电源供应以及机箱入侵等。Ipmi 最大的优势在于它是独立于 CPU BIOS 和 OS 的,所以用户无论在开机还是关机的状态下,只要接通电源就可以实现对服务器的监控。Ipmi 是一种规范的标准,其中最重要的物理部件就是BMC(Baseboard Management Controller 如图1),一种嵌入式管理微控制器,它相当于整个平台管理的“大脑”,通过它 ipmi 可以监控各个传感器的数据并记录各种事件的日志。

2.2 使用 ipmi 的先决条件

想要实现对服务器的 ipmi 管理,必须在硬件、OS、管理工具等几个方面都满足:

2.2.1 服务器硬件本身提供对 ipmi 的支持

目前惠普、戴尔和 NEC 等大多数厂商的服务器都支持 IPMI 1.5,但并不是所有服务器都支持,所以应该先通过产品手册或在 BIOS 中确定服务器是否支持 ipmi,也就是说服务器在主板上要具有 BMC 等嵌入式的管理微控制器。

2.2.2 操作系统提供相应的 ipmi 驱动

通过操作系统监控服务器自身的 ipmi 信息时需要系统内核提供相应的支持,linux 系统通过内核对 OpenIPMI(ipmi 驱动)的支持来提供对 ipmi 的系统接口。

2.2.3 ipmi 管理工具

本文选择的是 Linux 下的命令行方式的 ipmi 平台管理工具 ipmitool

[root@linux-node1 ~]# yum install -y OpenIPMI ipmitool

参考资料:https://www.ibm.com/developerworks/cn/linux/l-ipmi/

3.硬件监控SNMP

[root@linux-node1 ~]# yum install -y net-snmp net-snmp-utils
#更改配置文件
[root@linux-node1 ~]# cp /etc/snmp/snmpd.conf{,.ori}
[root@linux-node1 ~]# egrep '^[a-z]' /etc/snmp/snmpd.conf
com2sec admin default admin
group admin v2c admin
view admin included .1 80
access admin "" any noauth exact admin admin none
[root@linux-node1 ~]# systemctl start snmpd.service
[root@linux-node1 ~]# netstat -lnup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name 
udp      0      0 0.0.0.0:161      0.0.0.0:*         15318/snmpd 
#1分钟负载 
参考文档:https://blog.csdn.net/apple_llb/article/details/50494787
[root@linux-node1 ~]# snmpget -v2c -c admin 118.190.201.11 .1.3.6.1.4.1.2021.10.1.3.1
UCD-SNMP-MIB::laLoad.1 = STRING: 0.00
#查看OID,3下有什么
[root@linux-node1 ~]# snmpwalk -v2c -c admin 118.190.201.11 .1.3.6.1.4.1.2021.10.1.3
UCD-SNMP-MIB::laLoad.1 = STRING: 0.00
UCD-SNMP-MIB::laLoad.2 = STRING: 0.01
UCD-SNMP-MIB::laLoad.3 = STRING: 0.05

4.系统监控

4.1系统监控之CPU

参考文档http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html

top命令的用户态与系统态
参考文章:https://blog.csdn.net/morixinguan/article/details/50775417
参考文章:https://www.xttblog.com/?p=998
参考文章:http://os.51cto.com/art/201011/233490.htm
ni:niceness 的缩写,CPU 消耗在 nice 进程(低优先级)的时间百分比

id:idle 的缩写,CPU 消耗在闲置进程的时间百分比,这个值越低,表示 CPU 越忙

wa:wait 的缩写,CPU 等待外部 I/O 的时间百分比,这段时间 CPU 不能干其他事,但是也没有执行运算,这个值太高就说明外部设备有问题

hi:hardware interrupt 的缩写,CPU 响应硬件中断请求的时间百分比

si:software interrupt 的缩写,CPU 响应软件中断请求的时间百分比

st:stole time 的缩写,该项指标只对虚拟机有效,表示分配给当前虚拟机的 CPU 时间之中,被同一台物理机上的其他虚拟机偷走的时间百分比

4.2系统监控之内存/IO

虚拟内存=swap+物理内存

[root@linux-node1 ~]# free -m
 total used free shared buff/cache available
Mem: 1824 108 1372 8 344 1558
Swap: 2047 0 2047
[root@linux-node1 ~]# vmstat 1 5
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 1405244 948 351392 0 0 1 1 8 9 0 0 100 0 0
 0 0 0 1405120 948 351408 0 0 0 0 32 41 0 1 100 0 0
 0 0 0 1405120 948 351408 0 0 0 0 26 28 0 0 100 0 0
 0 0 0 1405120 948 351408 0 0 0 0 25 29 0 0 100 0 0
 0 0 0 1405120 948 351408 0 0 0 0 27 28 0 0 100 0 0
#注释说明
参考文章:http://www.vpsee.com/2009/11/linux-system-performance-monitoring-memory
swpd,已使用的 SWAP 空间大小,KB 为单位;
free,可用的物理内存大小,KB 为单位;
buff,物理内存用来缓存读写操作的 buffer 大小,KB 为单位;
cache,物理内存用来缓存进程地址空间的 cache 大小,KB 为单位;
si,数据从 SWAP 读取到 RAM(swap in)的大小,KB 为单位;
so,数据从 RAM 写到 SWAP(swap out)的大小,KB 为单位;
bi,磁盘块从文件系统或 SWAP 读取到 RAM(blocks in)的大小,block 为单位;
bo,磁盘块从 RAM 写到文件系统或 SWAP(blocks out)的大小,block 为单位;
#内存优化,不使用交换分区
[root@linux-node1 ~]# cat /proc/sys/vm/swappiness 
30
#优先级越低,越不容易使用,不使用不设置

4.2.1监控磁盘IO

[root@linux-node1 ~]# yum install -y iotop
[root@linux-node1 ~]# iotop 
Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 304.56 K/s
 TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 
#IO调度算法
[root@linux-node1 ~]# cat /sys/block/sda/queue/scheduler 
noop [deadline] cfq   #ssd使用noop,不是ssd使用deadline,其它使用cfg
参考文章:http://www.cnblogs.com/cutepig/p/3403711.html
#使用dd命令测试
[root@linux-node1 ~]# dd bs=8k count=4k if=/dev/zero of=test.lg conv=fsync
#使用iftop检测
[root@linux-node1 ~]# yum -y install iftop
[root@linux-node1 ~]# iftop -i eth0  #-i指定网卡名称
[root@linux-node1 ~]# iftop -i eth0 -P #-P指定端口
[root@linux-node1 ~]# iftop -i eth0 -F 118.190.201.0/24 #-F指定网段
#使用netdogs检测进程流量
[root@linux-node1 ~]# yum install -y nethogs
[root@linux-node1 ~]# nethogs

5.网络监控

ping检测工具:http://ping.chinaz.com
360测:http://ce.cloud.360.cn/
开源工具:smokeping支持分布式

6.如何选择Zabbix版本

6.1什么是Zabbix

Zabbix是一个分布式开源的监控系统,支持多种采集方法,使它几乎可以采集和处理所有类型的监控数据;灵活的报警机制,可以实现各种的自定义报警策略,强大的拓展性,可以自定义监控项、图形、模板,还支持自动注册和自动发现,使它可以快速构建一套大型的监控系统,还有丰富的API接口

其他监控系统cacti,nagios,ManageEngine_ApplicationsManager,lepus,smokeping,piwiki等选择zabbix是因为简单高效灵活

常见的监控系统架构 数据采集–数据存储–数据分析、展示、告警

zabbix-agent--->zabbix-server--->mysql---->web前端

Zabbix官网发行周期:https://www.zabbix.com/life_cycle_and_release_policy

6.2安装Zabbix3.0

zabbix安装官方文档:https://www.zabbix.com/documentation/3.0/

1.软件版本要求

zabbix3.0安装
http1.3.12
php5.4.0(不支持php7.0)
mysql5.0.3

2.同步时间

[root@linux-node1 ~]# yum install -y ntpdate
[root@linux-node1 ~]# echo "*/5 * * * * root /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null" >>/etc/crontab

3.安装Zabbix源

[root@linux-node1 ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
#国内站点需要修改
vim /etc/yum.repos.d/zabbix.repo
baseurl=http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/$basearch/
baseurl=http://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
#使用MySQL数据库安装Zabbix服务器和Web前端
[root@linux-node1 ~]# yum install -y zabbix-server-mysql zabbix-web-mysql
#创建初始数据库
[root@linux-node1 ~]# yum install -y mariadb-server
[root@linux-node1 ~]# rpm -qa mariadb-server
mariadb-server-5.5.60-1.el7_5.x86_64
#启动数据库
[root@linux-node1 ~]# systemctl enable mariadb.service 
[root@linux-node1 ~]# systemctl start mariadb.service 
[root@linux-node1 ~]# lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld   18588   mysql   13u   IPv4    537271    0t0    TCP     *:mysql (LISTEN)
#安全化初始数据库
[root@linux-node1 ~]# mysql_secure_installation 

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
 SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

#登录数据库创建对应库
[root@linux-node1 ~]# mysql -uroot -p123456
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;

MariaDB [(none)]> grant all on zabbix.* to zabbix@'localhost' identified by '123.com';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit
Bye
#导入数据到zabbix库中
[root@linux-node1 ~]# rpm -qa zabbix-server-mysql
zabbix-server-mysql-3.0.21-1.el7.x86_64
[root@linux-node1 ~]# rpm -ql zabbix-server-mysql
/etc/logrotate.d/zabbix-server
/etc/zabbix/zabbix_server.conf
/usr/lib/systemd/system/zabbix-server.service
/usr/lib/tmpfiles.d/zabbix-server.conf
/usr/lib/zabbix/alertscripts
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-3.0.21
/usr/share/doc/zabbix-server-mysql-3.0.21/AUTHORS
/usr/share/doc/zabbix-server-mysql-3.0.21/COPYING
/usr/share/doc/zabbix-server-mysql-3.0.21/ChangeLog
/usr/share/doc/zabbix-server-mysql-3.0.21/NEWS
/usr/share/doc/zabbix-server-mysql-3.0.21/README
/usr/share/doc/zabbix-server-mysql-3.0.21/create.sql.gz
/usr/share/man/man8/zabbix_server.8.gz
/var/log/zabbix
/var/run/zabbix
[root@linux-node1 ~]# zcat /usr/share/doc/zabbix-server-mysql-3.0.21/create.sql.gz |mysql -uzabbix -p123.com zabbix
[root@linux-node1 ~]# mysql -uroot -p123456 -e "use zabbix; show tables;"|wc -l
114
#启动web界面
[root@linux-node1 ~]# sed -i '95a ServerName 127.0.0.1:80' /etc/httpd/conf/httpd.conf
[root@linux-node1 ~]# systemctl enable httpd.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@linux-node1 ~]# systemctl start httpd.service 
[root@linux-node1 ~]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 18951 root 4u IPv6 569493 0t0 TCP *:http (LISTEN)
httpd 18953 apache 4u IPv6 569493 0t0 TCP *:http (LISTEN)
httpd 18954 apache 4u IPv6 569493 0t0 TCP *:http (LISTEN)
httpd 18955 apache 4u IPv6 569493 0t0 TCP *:http (LISTEN)
httpd 18956 apache 4u IPv6 569493 0t0 TCP *:http (LISTEN)
httpd 18957 apache 4u IPv6 569493 0t0 TCP *:http (LISTEN)

4.web界面进行安装

修改时区

[root@linux-node1 ~]# sed -i 's@        # php_value date.timezone Europe/Riga@        php_value date.timezone Asia/Shanghai@g' /etc/httpd/conf.d/zabbix.conf
[root@linux-node1 ~]# systemctl restart httpd.service

配置数据库

登录zabbix-web界面,默认账号:Admin,密码:zabbix

5.启动zabbix-server服务

#修改zabbix-server配置文件
vim /etc/zabbix/zabbix_server.conf
#115行内容为:
DBPassword=123.com
#启动zabbix-server服务
[root@linux-node1 ~]# systemctl enable zabbix-server.service
[root@linux-node1 ~]# systemctl start zabbix-server.service

6.安装Zabbix-agent客户端

[root@linux-node1 ~]# rpm -ivh zabbix-agent-3.0.5-1.el7.x86_64.rpm 
Preparing... ################################# [100%]
Updating / installing...
 1:zabbix-agent-3.0.5-1.el7 ################################# [100%]
#此次本地的agent关联本地的server所有不用修改配置文件,直接启动服务
[root@linux-node1 ~]# systemctl enable zabbix-agent.service 
[root@linux-node1 ~]# systemctl start zabbix-agent.service

7.创建监控项

[root@linux-node2 ~]# rpm -ivh zabbix-agent-3.0.5-1.el7.x86_64.rpm 
Preparing... ################################# [100%]
Updating / installing...
 1:zabbix-agent-3.0.5-1.el7 ################################# [100%]
#修改配置文件启动
vim /etc/zabbix/zabbix_agentd.conf 
Server=118.190.201.11
Hostname=linux-node2.example.com
#启动agent服务
systemctl enable zabbix-agent.service 
systemctl start zabbix-agent.service 
netstat -lntup

web页面添加监控项

参数配置

模板添加

返回主机添加监控项

添加成功

使用zabbix_get命令行获取状态值

#zabbix_get 找不到命令是因为没有安装上zabbix_get ,解决办法:
~]# yum list all |grep zabbix
#返的列表中出现 zabbix-get.x86_84,使用命令yum install zabbix-get.x86_64进行安装
[root@linux-node1 ~]# zabbix_get -s 118.190.201.12 -p 10050 -k agent.ping
1

8.自定义监控项

#进入zabbix_agentd.d目录
[root@linux-node2 ~]# cd /etc/zabbix/zabbix_agentd.d/
#查看系统配置
[root@linux-node2 zabbix_agentd.d]# tail -2 userparameter_mysql.conf 
UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
UserParameter=mysql.version,mysql -V
#添加自定义监控
[root@linux-node2 zabbix_agentd.d]# stat -c %s /etc/services 
670293
[root@linux-node2 zabbix_agentd.d]# vim monitor_file.conf
UserParameter=monitor_size,stat -c %s /etc/services

web界面添加自定义监控项

创建自定义监控项

参数配置

查看添加的监控项

9.使用smtp发送邮件报警及定制报警内容

#添加自定义端口监控
[root@linux-node2 ~]# yum install httpd -y
[root@linux-node2 ~]# systemctl enable httpd.service
[root@linux-node2 ~]# systemctl start httpd.service

web界面添加监控项

创建监控项

检查端口监控项是否添加完成

9.1添加触发器发送邮件

添加触发器

9.2定义触发器的动作



1.添加邮箱发件人邮件

生成授权码:xxxxxxxxxxxx

2.添加收件人邮箱



3.发送邮件测试

报警信息参考网址:https://www.zabbix.com/documentation/3.0/manual/appendix/macros/supported_by_location

10.添加微信报警

#报警目录
[root@linux-node1 ~]# rpm -ql zabbix-server-mysql |egrep alertscripts
/usr/lib/zabbix/alertscripts
[root@linux-node1 ~]# cd /usr/lib/zabbix/alertscripts
#参考文章
https://blog.csdn.net/qq_31613055/article/details/78831607
https://www.abcdocker.com/abcdocker/2472
https://www.linuxprobe.com/zabbix-alert-with-wechat.html

11.使用第三方短信报警

https://blog.csdn.net/qq_33285112/article/details/78592211?locationNum=10&fps=1

12.web监控

说明:zabbix_server上外网


创建web场景及添加监控关键字



12.1监控MySQL服务

#存在此文件可直接配置
[root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

#查看日志是否监控
[root@linux-node1 ~]# tailf /var/log/zabbix/zabbix_server.log

#MySQL带密码监控
需要在文件/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf中写入密码
如下:
UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin -uzabbix -pzabbix ping | grep -c alive
重启生效
1.监控无规则密码的MySQL

#修改如下配置文件
[root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mysql.status[*],echo "show global status where Variable_name='$3';" | HOME=/var/lib/zabbix mysql -u$1 -p$2 -N | awk '{print $$2}' 
UserParameter=mysql.ping[*],HOME=/var/lib/zabbix mysqladmin -u$1 -p$2 ping | grep -c alive 
#重启服务 
[root@linux-node2 ~]# systemctl restart zabbix-agent.service 
#获取key值 
[root@linux-node1 ~]# zabbix_get -s 118.190.201.12 -k mysql.status[zabbix,zabbix,Uptime]

修改模板进行传参

修改其它Items

添加{$USER},{$PASSWD}然后更新如下所示

说明:其他Items的选项默认

如若更改了用户跟密码需要做如下操作

13.监控TCP的状态码

[root@linux-node2 zabbix_agentd.d]# netstat -ant|grep -c UNKNOWN
0
[root@linux-node2 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@linux-node2 zabbix_agentd.d]# tail -1 userparameter_mysql.conf 
UserParameter=mysql.version,mysql -V
#监控TCP状态配置文件
[root@linux-node2 zabbix_agentd.d]# cat TCP_Status.conf 
UserParameter=TCP_Status[*],netstat -ant|grep -c $1
#重启服务
[root@linux-node2 zabbix_agentd.d]# systemctl restart zabbix-agent.service
#验证测试
[root@linux-node1 ~]# zabbix_get -s 118.190.201.12 -k TCP_Status[ESTABLISHED]
3

13.1创建模板

创建itmes

克隆模板

添加主机

13.2监控nginx服务

#开启nginx状态配置文件
vim /etc/nginx/nginx.conf
     location /nginx_status {
               stub_status on;
               access_log off;
               allow 118.190.201.0/24;
               allow 127.0.0.1;
               deny all;
     }
#启动nginx服务
~]# nginx -t
~]# nginx
[root@linux-node2 zabbix_agentd.d]# cd /etc/zabbix/zabbix_agentd.d/
[root@linux-node2 zabbix_agentd.d]# cat nginx_monitor.conf 
UserParameter=nginx_status[*],/etc/zabbix/zabbix_agentd.d/nginx_monitor.sh $1
[root@linux-node2 zabbix_agentd.d]# cat nginx_monitor.sh 
#!/bin/bash
NGINX_COMMAND=$1
NGINX_PORT=80
CACHEFILE="/tmp/nginx_status.txt"
CMD="/usr/bin/curl http://127.0.0.1:"$NGINX_PORT"/nginx_status/"
if [ ! -f $CACHEFILE ];then
 $CMD >$CACHEFILE 2>/dev/null
fi
# Check and run the script
TIMEFLM=`stat -c %Y $CACHEFILE`
TIMENOW=`date +%s`
if [ `expr $TIMENOW - $TIMEFLM` -gt 60 ]; then
 rm -f $CACHEFILE
fi
if [ ! -f $CACHEFILE ];then
 $CMD >$CACHEFILE 2>/dev/null
fi
nginx_active(){
 grep 'Active' $CACHEFILE| awk '{print $NF}'
 exit 0;
}
nginx_reading(){
 grep 'Reading' $CACHEFILE| awk '{print $2}'
 exit 0;
}
nginx_writing(){
 grep 'Writing' $CACHEFILE | awk '{print $4}'
 exit 0;
}
nginx_waiting(){
 grep 'Waiting' $CACHEFILE| awk '{print $6}'
 exit 0;
}
nginx_accepts(){
 awk NR==3 $CACHEFILE| awk '{print $1}' 
 exit 0;
}
nginx_handled(){
 awk NR==3 $CACHEFILE| awk '{print $2}' 
 exit 0;
}
nginx_requests(){
 awk NR==3 $CACHEFILE| awk '{print $3}'
 exit 0;
}
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 'Invalid credentials';
exit 2;
esac
[root@linux-node2 zabbix_agentd.d]# chmod +x nginx_monitor.sh
#修改zabbix配置文件,使只有.conf的文件生效
[root@linux-node2 zabbix]# vim /etc/zabbix/zabbix_agentd.conf
Include=/etc/zabbix/zabbix_agentd.d/*.conf
#重启服务
[root@linux-node2 ~]# systemctl restart zabbix-agent.service

导入模板

链接:https://pan.baidu.com/s/1DBxNqTNkrbfsJOd12od0xQ 密码:edcl

添加主机关联模板此步骤省略

#重启zabbix_agent服务
[root@linux-node2 ~]# systemctl restart zabbix-agent.service

14.JMX监控详解

#安装tomcat服务
链接:https://pan.baidu.com/s/1etVcu8R1XoYtGhixA81Jsg 密码:krup (下载对应安装包)
[root@linux-node2 ~]# tar xvf jdk-8u60-linux-x64.tar.gz
[root@linux-node2 ~]# ln -s jdk1.8.0_60/ jdk
[root@linux-node2 ~]# sed -i.ori '$a export JAVA_HOME=/root/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
[root@linux-node2 ~]# source /etc/profile
[root@linux-node2 ~]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
[root@linux-node2 ~]# tar xvf apache-tomcat-8.0.27.tar.gz
[root@linux-node2 ~]# ln -s /root/apache-tomcat-8.0.27 /root/tomcat
[root@linux-node2 ~]# echo 'export TOMCAT_HOME=/root/tomcat'>>/etc/profile
[root@linux-node2 ~]# source /etc/profile
[root@linux-node2 ~]# chown -R root.root /root/jdk/ /root/tomcat/
[root@linux-node2 ~]# tail -4 /etc/profile
export JAVA_HOME=/root/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/root/tomcat
#启动tomcat服务
[root@linux-node2 ~]# cd tomcat/bin/
[root@linux-node2 bin]# ./startup.sh
#在node1节点安装zabbix-java-gateway
[root@linux-node1 ~]# yum install -y zabbix-java-gateway

15.监控MySQL(percona)模板

#下载rpm包地址
[root@linux-node2 ~]# wget https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.7/binary/redhat/6/x86_64/percona-zabbix-templates-1.1.7-2.noarch.rpm 
 
[root@linux-node2 ~]# rpm -ivh percona-zabbix-templates-1.1.7-2.noarch.rpm 
[root@linux-node2 ~]# cd /var/lib/zabbix/percona/scripts 
[root@linux-node2 scripts]# ls get_mysql_stats_wrapper.sh ss_get_mysql_stats.php 
 #用此模板监控需要用到php,php-mysql模块 
[root@linux-node2 scripts]# yum install -y php php-mysql 
#conf文件拷贝到相对于的目录下 
[root@linux-node2 scripts]# cd ../templates/ 
[root@linux-node2 templates]# ls 
userparameter_percona_mysql.conf 
zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.7.xml 
[root@linux-node2 templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/ 
#如果mysql有密码需要修改配置get_mysql_stats_wrapper.sh 
RES=`HOME=~zabbix mysql -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','` 
 #修改php配置文件 
[root@linux-node2 scripts]# vim ss_get_mysql_stats.php
$mysql_user = 'zabbix'; $mysql_pass = '123456'; 
[root@linux-node2 scripts]# systemctl restart zabbix-agent.service 
#测试验证 
[root@linux-node2 scripts]# tail -4 /etc/zabbix/zabbix_agentd.d/userparameter_percona_mysql.conf 
UserParameter=MySQL.Query-time-count-09,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh ou 
UserParameter=MySQL.Open-files,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh ij 
UserParameter=MySQL.State-closing-tables,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh lq 
UserParameter=MySQL.running-slave,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slave 
[root@linux-node1 ~]# zabbix_get -s 118.190.201.12 -k MySQL.Open-files 21 
#下载模板进行导入 因为自带的是2.2版本不兼容3.0所以重新下载 
wget http://jaminzhang.github.io/soft-conf/Zabbix/zbx_percona_mysql_template.xml 
[root@linux-node2 templates]# sz Zabbix/zbx_percona_mysql_template.xml 
修改文件删除 <date>2016-12-09 18:22:02</date>字段

添加主机进行关联

0
如无特殊说明,文章均为本站原创,转载请注明出处

该文章由 发布

这货来去如风,什么鬼都没留下!!!