Zabbix 3.0 生产案例 [四]

摘要

本文主要讲述监控tomcat、Nginx 以及监控tomcat内存使用情况等,Nginx状态

zabbix

时间:2016年9月22日
笔者QQ:381493251
Abcdocker交流群:454666672
如果遇到什么问题可以进群询问,我们是一个乐于帮助的集体!

 

Zabbix 生产案例实战

1.png-18.9kB

 

一、项目规划

 

1、主机分组:

   交换机
   Nginx
   Tomcat
   MySQL

 

2、监控对象识别:

  1、使用SNMP监控交换机
  2、使用IPMI监控服务器硬件
  3、使用Agent监控服务器
  4、使用JMX监控Java应用
  5、监控MySQL
  6、监控Web状态
  7、监控Nginx状态

 

3、操作步骤:

SNMP监控
 1.1 在交换机上开启Snmp

 
  1. config t
  2. snmp-server community public ro
  3. end
  4. 提示:如果不知道我们可以百度

 1.2 在Zabbix上添加SNMP监控
 步骤:Configuration--->Hosts--->设置
 1.png-72.3kB

 1.3 Host页面设置
2.png-51.3kB

 1.4 Templates 模板设置
3.png-46.9kB

设置SNMP团体名称Macros宏
这里的设置要跟我们创建的SNMP的设置相同
4.png-36.4kB

因为Zabbix监控的时候依赖团体名称
 1.5 生产图片
3.png-46.9kB

  Zabbix会自动给我们进行检测端口,每个端口都会添加一个网卡的流量图,每个端口都会加上一个触发器。(端口的状态) 还会帮我们添加VLAN的一个监控
 1.6 案例图
  含有有进口和出口流量
5.jpg-54kB

提示:此图是Zabbix SNMP模板自动生成的


IPMI监控
  2.1 添加IPMI
Configuration--->Hosts--->选择主机--->设置IPMI端口及主机--->用户名密码
  因为IMP容易超时,建议使用自定义item,本地执行ipmitool命令来获取数据

JMX监控
  Zabbix默认提供了一个监控JMX
通过java gateway来监控java
2.png-113.7kB

地址:https://www.zabbix.com/documentation/3.2/manual/appendix/config/zabbix_java
  JAVA GATEWAY需要独立安装,相当于一个网关,因为zabbix_server和zabbix-agent不可以直接获取java信息。所以需要一个代理来获取
1.jpg-11.8kB

zabbix java Gateway不存任何数据,只是一个简单的代理
1、安装

 
  1. [root@linux-node1 ~]# yum install -y zabbix-java-gateway java-1.8.0
  2. 提示:java-gateway 需要java环境

2、配置
修改java-gateway

 
  1. [root@linux-node1 ~]# vim /etc/zabbix/zabbix_java_gateway.conf
  2. # LISTEN_IP="0.0.0.0" 监听的IP地址
  3. # LISTEN_PORT=10052 监听的端口
  4. PID_FILE="/var/run/zabbix/zabbix_java.pid"存放pid路径
  5. # START_POLLERS=5 开通几个进程,默认是5。你有多少java进行可以设置多少个,也可以设置java进程的一半。
  6. TIMEOUT=3超时时间1-30,如果网络环境差,超时时间就修改长一点

我们默认就可以了,不进行修改
3、启动

 
  1. [root@linux-node1 ~]# systemctl start zabbix-java-gateway.service

4、端口、进程查看
我们可以进行进程的查看

 
  1. [root@linux-node1 ~]# netstat -lntp
  2. ActiveInternet connections (only servers)
  3. ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
  4. tcp 000.0.0.0:33060.0.0.0:* LISTEN 10439/mysqld
  5. tcp 000.0.0.0:80800.0.0.0:* LISTEN 33484/nginx: master
  6. tcp 000.0.0.0:220.0.0.0:* LISTEN 1054/sshd
  7. tcp 00127.0.0.1:250.0.0.0:* LISTEN 2484/master
  8. tcp 000.0.0.0:100500.0.0.0:* LISTEN 76482/zabbix_agentd
  9. tcp 000.0.0.0:100510.0.0.0:* LISTEN 34572/zabbix_server
  10. tcp 00127.0.0.1:1990.0.0.0:* LISTEN 11143/snmpd
  11. tcp6 00:::80:::* LISTEN 10546/httpd
  12. tcp6 00:::22:::* LISTEN 1054/sshd
  13. tcp6 00::1:25:::* LISTEN 2484/master
  14. tcp6 00:::10050:::* LISTEN 76482/zabbix_agentd
  15. tcp6 00:::10051:::* LISTEN 34572/zabbix_server
  16. tcp6 00:::10052:::* LISTEN 13465/java

10052 zabbix-java-gateway默认端口已经起来了!
  它是一个java应用,需要安装jdk

 
  1. [root@linux-node1 ~]# ps -aux|grep java
  2. root 134650.43.4224894434060?Sl19:170:01 java -server -Dlogback.configurationFile=/etc/zabbix/zabbix_java_gateway_logback.xml -classpath lib:lib/android-json-4.3_r3.1.jar:lib/logback-classic-0.9.27.jar:lib/logback-core-0.9.27.jar:lib/slf4j-api-1.6.1.jar:bin/zabbix-java-gateway-3.0.4.jar-Dzabbix.pidFile=/var/run/zabbix/zabbix_java.pid -Dzabbix.timeout=3-Dsun.rmi.transport.tcp.responseTimeout=3000 com.zabbix.gateway.JavaGateway
  3. root 135840.00.0112648972 pts/0 S+19:210:00 grep --color=auto java

5、通知zabbix-server
  我们需要通知zabbix-serverjava-gateway在哪里
修改配置文件

 
  1. [root@linux-node1 ~]# vim /etc/zabbix/zabbix_server.conf
  2. 编辑zabbix-server来指定zabbix-java-gateway
  3. JavaGateway=192.168.56.11#IP地址是安装java-gateway的服务器
  4. # JavaGatewayPort=10052 端口,默认就可以
  5. StartVMwareCollectors=5预启动多少个进程[zabbix--->java-gateway的数量]

6、重启zabbix-server

 
  1. [root@linux-node1 ~]# systemctl restart zabbix-server.service

7、准备apache
我们安装tomcat-8版本
官网:http://tomcat.apache.org
下载软件包

 
  1. [root@linux-node2 src]# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz

我们将tomcat安装在apache服务器上,来模拟监控jvm

 
  1. [root@linux-node2 src]# tar xf apache-tomcat-8.5.5.tar.gz
  2. [root@linux-node2 src]# mv apache-tomcat-8.5.5/usr/local/
  3. [root@linux-node2 src]# ln -s /usr/local/apache-tomcat-8.5.5/ /usr/local/tomcat
  4. [root@linux-node2 src]# yum install -y java-1.8.0#tomcat 需要在java环境运行
  5. [root@linux-node2 src]#/usr/local/tomcat/bin/startup.sh
  6. Using CATALINA_BASE:/usr/local/tomcat
  7. Using CATALINA_HOME:/usr/local/tomcat
  8. Using CATALINA_TMPDIR:/usr/local/tomcat/temp
  9. Using JRE_HOME:/usr
  10. Using CLASSPATH:/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  11. Tomcat started.

在web2上面查看运行状态

 
  1. [root@linux-node2 src]# netstat -lntup
  2. ActiveInternet connections (only servers)
  3. ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
  4. tcp 000.0.0.0:220.0.0.0:* LISTEN 1073/sshd
  5. tcp 00127.0.0.1:250.0.0.0:* LISTEN 2498/master
  6. tcp 000.0.0.0:100500.0.0.0:* LISTEN 10088/zabbix_agentd
  7. tcp6 00:::8080:::* LISTEN 25750/java
  8. tcp6 00:::22:::* LISTEN 1073/sshd
  9. tcp6 00::1:25:::* LISTEN 2498/master
  10. tcp6 00:::10050:::* LISTEN 10088/zabbix_agentd
  11. tcp6 00127.0.0.1:8005:::* LISTEN 25750/java
  12. tcp6 00:::8009:::* LISTEN 25750/java

1.png-412.3kB

JMX三种类型:
  1.无密码认证
  2.用户面密码认证
  3.ssl

开启JMX远程监控
官方文档:http://tomcat.apache.org/tomcat-8.0-doc/monitoring.html
我们创建一个无密码认证

 
  1. [root@linux-node2 src]# vim /usr/local/tomcat/bin/catalina.sh
  2. CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
  3. -Dcom.sun.management.jmxremote.port=8888    #端口号
  4. -Dcom.sun.management.jmxremote.ssl=false     #SSL 关闭
  5. -Dcom.sun.management.jmxremote.authenticate=false #用户密码验证关闭
  6. -Djava.rmi.server.hostname=192.168.56.12"        #监控的主机

修改完成后重启tomcat
可以使用./shutdown.sh 或者使用kill的方式

 
  1. [root@linux-node2 src]#/usr/local/tomcat/bin/shutdown.sh
  2. Using CATALINA_BASE:/usr/local/tomcat
  3. Using CATALINA_HOME:/usr/local/tomcat
  4. Using CATALINA_TMPDIR:/usr/local/tomcat/temp
  5. Using JRE_HOME:/usr
  6. Using CLASSPATH:/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  7. 中间可以使用px -aux|grep java 查看是否被杀死
  8. [root@linux-node2 src]#/usr/local/tomcat/bin/startup.sh
  9. Using CATALINA_BASE:/usr/local/tomcat
  10. Using CATALINA_HOME:/usr/local/tomcat
  11. Using CATALINA_TMPDIR:/usr/local/tomcat/temp
  12. Using JRE_HOME:/usr
  13. Using CLASSPATH:/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  14. Tomcat started.

我们JMX端口设置为8888

 
  1. [root@linux-node2 src]# netstat -lntup
  2. ActiveInternet connections (only servers)
  3. ProtoRecv-Q Send-Q LocalAddressForeignAddressState PID/Program name
  4. tcp 000.0.0.0:220.0.0.0:* LISTEN 1073/sshd
  5. tcp 00127.0.0.1:250.0.0.0:* LISTEN 2498/master
  6. tcp 000.0.0.0:100500.0.0.0:* LISTEN 10088/zabbix_agentd
  7. tcp6 00:::8080:::* LISTEN 26226/java
  8. tcp6 00:::22:::* LISTEN 1073/sshd
  9. tcp6 00:::8888:::* LISTEN 26226/java
  10. tcp6 00::1:25:::* LISTEN 2498/master
  11. tcp6 00:::10050:::* LISTEN 10088/zabbix_agentd
  12. tcp6 00:::38532:::* LISTEN 26226/java
  13. tcp6 00127.0.0.1:8005:::* LISTEN 26226/java
  14. tcp6 00:::8009:::* LISTEN 26226/java
  15. tcp6 00:::38377:::* LISTEN 26226/java

 我们可以在windows上面安装jdk ,使用命令行来监控java
1.png-264.3kB

  我们下载安装,具体步骤不说了,然后我们找到jconsole.exe文件运行
2.png-267kB

填写安装JMX的服务器
4.png-84.8kB

  因为在配置文件中我们设置的是无密码认证,所以这里不需要输入密码直接连接。端口号我们设置的是8888连接即可
5.png-71.3kB

这样我们就可以在图形化监控tomcat
6.png-91.7kB

  提示:按照现在观察,java-gateway已经安装成功,我们可以加入到zabbix中
  找我们要添加的主机
1.png-178kB

填写安装java-gateway的主机
1.png-120.5kB

我们还需要设置一个模板
2.png-69.9kB

这个模板就是我们自带的一个监控JMX的模板,然后我们点击Update.更新
3.png-85kB

我们需要等待一会才可以出图

提示:可以在Zabbix-server上使用zabbix-get获取某一台机器的某一个key
效果图如下:需要等待一会
1 (1).png-566kB

手动检测监控状态
Zabbix-Server操作:

 
  1. [root@linux-node1 ~]# yum install -y zabbix-get

Key:
2 (1).png-165.8kB

我们随便找一个key,然后我们复制后面的key

1.png-146.9kB

 
  1. [root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k jmx["java.lang:type=Runtime",Uptime]
  2. ZBX_NOTSUPPORTED:Unsupported item key.

提示:未支持的key,现在并不能获取到这个key 因为没有获取到这个值,所以不会显示。我们可以获取别的试一下

 
  1. [root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k system.cpu.util[,user]
  2. 0.079323
  3. [root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k system.cpu.util[,user]
  4. 0.075377
  5. [root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k system.cpu.util[,user]
  6. 0.075377
  7. [root@linux-node1 ~]# zabbix_get -s 192.168.56.12-k system.cpu.util[,user]
  8. 0.073547

小结: Zabbix其实就是通过zabbix_get 获取到的这个值进行比较的

 

日志

开启zabbix debug模式

 
  1. [root@linux-node2 tomcat]# systemctl restart zabbix-agent
  2. ### Option: DebugLevel
  3. # Specifies debug level:
  4. # 0 - basic information about starting and stopping of Zabbix processes
  5. # 1 - critical information
  6. # 2 - error information
  7. # 3 - warnings
  8. # 4 - for debugging (produces lots of information)
  9. # 5 - extended debugging (produces even more information)
  10. DebugLevel=4

如果及别是4就是debug模式,修改完配置文件之后需要重启生效

 

Zabbix生产案例

1.开启Nginx监控
2.编写脚本来进行数据采集
3.设置用户自定义参数
4.重启zabbix-agent
5.添加item
6.创建图形
7.创建触发器
8.创建模板

 

实践步骤

  1. 脚本编写: 我们这里提供已经写好的脚本
链接:http://pan.baidu.com/s/1jIlpNT0 密码:eix2
  2. 需要修改一下zabbix-agent的配置文件

 
  1. vim /etc/zabbix/zabbix_agentd.conf
  2. #修改Include设置,这样我们可以把脚本放在这个目录下。配置就是.conf结尾
  3. Include=/etc/zabbix/zabbix_agentd.d/*.conf

  3.添加权限及测试脚本

 
  1. [root@linux-node1 zabbix_agentd.d]# chmod +x zabbix_linux_plugin.sh
  2. [root@linux-node1 zabbix_agentd.d]# sh zabbix_linux_plugin.sh
  3. Usage: zabbix_linux_plugin.sh {tcp_status key|memcached_status key|redis_status key|nginx_status key}

提示: 这个脚本要用zabbix用户执行的权限,因为都是zabbix用户在执行,监控TCP会在/tmp/目录生成一个文件用于监控使用

 4.修改nginx配置文件

 
  1. 提示:nginx 默认路径是/usr/local/nginx 编译安装需要查看安装路径
  2. [root@linux-node1 zabbix_agentd.d]# vim /usr/local/nginx/conf/nginx.conf
  3. location /nginx_status {
  4. stub_status on;
  5. allow 127.0.0.1;
  6. access_log off;
  7. }

因为脚本的url是nginx_status所以我们配置文件也要这样修改
  测试脚本

 
  1. [root@linux-node1 zabbix_agentd.d]# curl 192.168.56.11:8080/nginx_status
  2. Active connections:1
  3. server accepts handled requests
  4. 282368228236822821835
  5. Reading:0Writing:1Waiting:0
  6. [root@linux-node1 zabbix_agentd.d]#./zabbix_linux_plugin.sh nginx_status 8080 active
  7. 1
  8. [root@linux-node1 zabbix_agentd.d]#./zabbix_linux_plugin.sh nginx_status 8080 reading
  9. 0
  10. [root@linux-node1 zabbix_agentd.d]#./zabbix_linux_plugin.sh nginx_status 8080 handled
  11. 2823688

设置Key,首先是Key的名称

 
  1. [root@linux-node1 zabbix_agentd.d]# cat linux.conf
  2. UserParameter=linux_status[*],/etc/zabbix/zabbix_agentd.d/zabbix_linux_plugin.sh "$1""$2""$3"
  3. [*]代表一个传参,可以将后面的$1,$2,$3引入进行
  4. ,后面是脚步本的路径

需要重启agent

 
  1. [root@linux-node1 zabbix_agentd.d]# systemctl restart zabbix-agent

我们使用zabbix_get进行测试

 
  1. [root@linux-node1 zabbix_agentd.d]# zabbix_get -s 192.168.56.11-k linux_status[nginx_status,8080,active]
  2. 1
  3. [-k]就是指定key 不细说了
  4. [*]*的作用在web界面配置item会显示出来

 5.Zabbix web界面设置
  我们需要添加item,因为要加好多。我们就使用模板的方式进行添加
CKD_1XOES2~JK28{8XIFKP3.png-318.8kB

1.png-75.9kB

2.png-27.6kB

提示:我们写一下注释然后选择Add即可
找到我们的模板
3.png-209.7kB

我们创建item
1.png-93.9kB

创建
2.png-139.6kB

各参数前文都有讲解不细说!
 修改完成吼点击Add
3.png-92.6kB

  添加完成后我们要复制很多个用来监控Nginx status的所有状态,所以我们使用克隆。来克隆多个进行设置
4.png-145kB

点进我们的item,然后拖到最下面选择克隆
5.png-42.3kB

填一些基本的修改即可,例如下:
1.png-97.6kB

添加完成如下图:
3.png-210.1kB

item添加完成我们还需要添加一个图形,用于展示,找到图形路径。点击创建
4.png-85.3kB

5.png-132.8kB

因为我们主机还没有加入我们的模板,所以我们这里是没有数据的
1.png-106.8kB

下面将模板加入到主机中
2.png-193.8kB

修改模板
3.png-97.4kB

查看结果如下:
4.png-258.4kB

 6.导出模板
因为设置模板比较麻烦,我们可以将模板导出

5.png-403.2kB

导出之后我们需要修改名称就可以了

 7.导入模板
我们需要导出自然需要导入,操作如下:
6.png-289.1kB

点击添加即可
7.png-241.7kB

提示: 模板之间的名称不可以相同

 

以上就是Nginx完整的监控使用

 8.导入TCP模板
  加入模板的步骤跟刚刚加入Nginx的一样,这里我们就使用模板了。
下载链接:http://pan.baidu.com/s/1i54ULjJ 密码:25lh
我们导入模板即可
1.png-82.8kB

导入完成之后我们可以查看模板
2.png-330.1kB

  在里面我们可以见到TCP的11种状态,这个item是我们需要根据我们脚本进行同步的。
3.png-245.6kB

我们可以随便点击一个进行查看,其中这里的key要和脚本的相同
4.png-130.9kB

5.png-33.2kB

我们在两台服务器都加载这个模板
6.png-97kB

步骤和上面的一样
7.png-95.5kB

添加完成
8.png-166.2kB

  查看脚本需要等待1分钟,这主要看我们设置的获取值的时间而定。
我们可以查看图形
2.png-64.9kB

更多内容请看下集!~

  为了方便大家观看博客当中的文章,本人开通了微信公众号。喜欢我们就快来关注我们吧

posted @ 2018-01-17 19:43  北方客888  阅读(138)  评论(0)    收藏  举报