设为首页 收藏本站
查看: 1933|回复: 0

[经验分享] 标准化监控:Zabbix 生产案例实战

[复制链接]

尚未签到

发表于 2018-1-1 13:43:58 | 显示全部楼层 |阅读模式
DSC0000.png

一、项目规划

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
  

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


1.2 在Zabbix上添加SNMP监控

 步骤:Configuration--->Hosts--->设置

DSC0001.png  


1.3 Host页面设置

DSC0002.png

1.4 Templates 模板设置

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

DSC0004.png

  因为Zabbix监控的时候依赖团体名称


  1.5 生产图片

DSC0005.png
  Zabbix会自动给我们进行检测端口,每个端口都会添加一个网卡的流量图,每个端口都会加上一个触发器。(端口的状态) 还会帮我们添加VLAN的一个监控

 1.6 案例图

  含有有进口和出口流量
DSC0006.jpg

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

IPMI监控   

2.1 添加IPMI

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

JMX监控

Zabbix默认提供了一个监控JMX
  通过java gateway来监控java

DSC0007.png

地址:https://www.zabbix.com/documentation/3.2/manual/appendix/config/zabbix_java

  JAVA GATEWAY需要独立安装,相当于一个网关,因为zabbix_server和zabbix-agent不可以直接获取java信息。所以需要一个代理来获取

DSC0008.jpg

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

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


2、配置
  修改java-gateway
  

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


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

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


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

[iyunv@linux-node1 ~]# netstat -lntp  
Active Internet connections (only servers)
  
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 10439/mysqld
  
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 33484/nginx: master
  
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1054/sshd
  
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2484/master
  
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 76482/zabbix_agentd
  
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 34572/zabbix_server
  
tcp 0 0 127.0.0.1:199 0.0.0.0:* LISTEN 11143/snmpd
  
tcp6 0 0 :::80 :::* LISTEN 10546/httpd
  
tcp6 0 0 :::22 :::* LISTEN 1054/sshd
  
tcp6 0 0 ::1:25 :::* LISTEN 2484/master
  
tcp6 0 0 :::10050 :::* LISTEN 76482/zabbix_agentd
  
tcp6 0 0 :::10051 :::* LISTEN 34572/zabbix_server
  
tcp6 0 0 :::10052 :::* LISTEN 13465/java 
  


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

[iyunv@linux-node1 ~]# ps -aux|grep java  
root 13465 0.4 3.4 2248944 34060 ? Sl 19:17 0: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
  
root 13584 0.0 0.0 112648 972 pts/0 S+ 19:21 0:00 grep --color=auto java
  


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

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


6、重启zabbix-server
  

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


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

[iyunv@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
  

[iyunv@linux-node2 src]# tar xf apache-tomcat-8.5.5.tar.gz  
[iyunv@linux-node2 src]# mv apache-tomcat-8.5.5 /usr/local/
  
[iyunv@linux-node2 src]# ln -s /usr/local/apache-tomcat-8.5.5/ /usr/local/tomcat
  
[iyunv@linux-node2 src]# yum install -y java-1.8.0 #tomcat 需要在java环境运行
  
[iyunv@linux-node2 src]# /usr/local/tomcat/bin/startup.sh
  
Using CATALINA_BASE: /usr/local/tomcat
  
Using CATALINA_HOME: /usr/local/tomcat
  
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  
Using JRE_HOME: /usr

  
Using>  
Tomcat started.
  
在web2上面查看运行状态
  

  

[iyunv@linux-node2 src]# netstat -lntup  
Active Internet connections (only servers)
  
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1073/sshd
  
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2498/master
  
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 10088/zabbix_agentd
  
tcp6 0 0 :::8080 :::* LISTEN 25750/java
  
tcp6 0 0 :::22 :::* LISTEN 1073/sshd
  
tcp6 0 0 ::1:25 :::* LISTEN 2498/master
  
tcp6 0 0 :::10050 :::* LISTEN 10088/zabbix_agentd
  
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 25750/java
  
tcp6 0 0 :::8009 :::* LISTEN 25750/java
  

  

DSC0009.png


JMX三种类型:


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

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


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

[iyunv@linux-node2 src]# /usr/local/tomcat/bin/shutdown.sh  
Using CATALINA_BASE: /usr/local/tomcat
  
Using CATALINA_HOME: /usr/local/tomcat
  
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  
Using JRE_HOME: /usr

  
Using>  
中间可以使用px -aux|grep java 查看是否被杀死
  
[iyunv@linux-node2 src]# /usr/local/tomcat/bin/startup.sh
  
Using CATALINA_BASE: /usr/local/tomcat
  
Using CATALINA_HOME: /usr/local/tomcat
  
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  
Using JRE_HOME: /usr

  
Using>  
Tomcat started.
  
我们JMX端口设置为8888
  

  

  

[iyunv@linux-node2 src]# netstat -lntup  
Active Internet connections (only servers)
  
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1073/sshd
  
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2498/master
  
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 10088/zabbix_agentd
  
tcp6 0 0 :::8080 :::* LISTEN 26226/java
  
tcp6 0 0 :::22 :::* LISTEN 1073/sshd
  
tcp6 0 0 :::8888 :::* LISTEN 26226/java
  
tcp6 0 0 ::1:25 :::* LISTEN 2498/master
  
tcp6 0 0 :::10050 :::* LISTEN 10088/zabbix_agentd
  
tcp6 0 0 :::38532 :::* LISTEN 26226/java
  
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 26226/java
  
tcp6 0 0 :::8009 :::* LISTEN 26226/java
  
tcp6 0 0 :::38377 :::* LISTEN 26226/java
  


 我们可以在windows上面安装jdk ,使用命令行来监控java

DSC00010.png

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

DSC00011.png

填写安装JMX的服务器

DSC00012.png

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

DSC00013.png

这样我们就可以在图形化监控tomcat

DSC00014.png

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

DSC00015.png

填写安装java-gateway的主机

DSC00016.png

我们还需要设置一个模板

DSC00017.png

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

DSC00018.png

我们需要等待一会才可以出图
提示:可以在Zabbix-server上使用zabbix-get获取某一台机器的某一个key
  效果图如下:需要等待一会

DSC00019.png

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

[iyunv@linux-node1 ~]# yum install -y zabbix-get  


Key:
DSC00020.png

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

DSC00021.png
  

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


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

[iyunv@linux-node1 ~]# zabbix_get -s 192.168.56.12 -k system.cpu.util[,user]  
0.079323
  
[iyunv@linux-node1 ~]# zabbix_get -s 192.168.56.12 -k system.cpu.util[,user]
  
0.075377
  
[iyunv@linux-node1 ~]# zabbix_get -s 192.168.56.12 -k system.cpu.util[,user]
  
0.075377
  
[iyunv@linux-node1 ~]# zabbix_get -s 192.168.56.12 -k system.cpu.util[,user]
  
0.073547 
  


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

日志

开启zabbix debug模式
  

[iyunv@linux-node2 tomcat]# systemctl restart zabbix-agent  
### Option: DebugLevel
  
# Specifies debug level:
  
# 0 - basic information about starting and stopping of Zabbix processes
  
# 1 - critical information
  
# 2 - error information
  
# 3 - warnings
  
# 4 - for debugging (produces lots of information)
  
# 5 - extended debugging (produces even more information)
  
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的配置文件
  

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


  3.添加权限及测试脚本
  

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


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

 4.修改nginx配置文件
  

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


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

[iyunv@linux-node1 zabbix_agentd.d]# curl 192.168.56.11:8080/nginx_status  
Active connections: 1
  
server accepts handled requests
  
2823682 2823682 2821835
  
Reading: 0 Writing: 1 Waiting: 0
  
[iyunv@linux-node1 zabbix_agentd.d]# ./zabbix_linux_plugin.sh nginx_status 8080 active
  
1
  
[iyunv@linux-node1 zabbix_agentd.d]# ./zabbix_linux_plugin.sh nginx_status 8080 reading
  
0
  
[iyunv@linux-node1 zabbix_agentd.d]# ./zabbix_linux_plugin.sh nginx_status 8080 handled
  
2823688
  


设置Key,首先是Key的名称
  

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


    需要重启agent
      

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


    我们使用zabbix_get进行测试
      

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


    5.Zabbix web界面设置

      我们需要添加item,因为要加好多。我们就使用模板的方式进行添加

    DSC00022.png

    DSC00023.png
    DSC00024.png

    提示:我们写一下注释然后选择Add即可
      找到我们的模板

    DSC00025.png

    我们创建item

    DSC00026.png

    创建

    DSC00027.png

    各参数前文都有讲解不细说!
      修改完成吼点击Add

    DSC00028.png

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

    DSC00029.png

    点进我们的item,然后拖到最下面选择克隆

    DSC00030.png

    填一些基本的修改即可,例如下:

    DSC00031.png

    添加完成如下图:

    DSC00032.png

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

    DSC00033.png

    DSC00034.png

    因为我们主机还没有加入我们的模板,所以我们这里是没有数据的

    DSC00035.png

    下面将模板加入到主机中

    DSC00036.png

    修改模板

    DSC00037.png


    查看结果如下:

    DSC00038.png


    6.导出模板

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

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

     7.导入模板


      我们需要导出自然需要导入,操作如下:

    DSC00040.png


    点击添加即可

    DSC00041.png

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

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

     8.导入TCP模板

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

    DSC00042.png

    导入完成之后我们可以查看模板

    DSC00043.png

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

    DSC00044.png

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

    DSC00045.png

    DSC00046.png

      我们在两台服务器都加载这个模板

    DSC00047.png


    步骤和上面的一样

    DSC00048.png

    添加完成

    DSC00049.png

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

  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-430525-1-1.html 上篇帖子: zabbix 3.2.4 使用详解 下篇帖子: zabbix安装、部署、lnmp(一)
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表