zabbix学习笔记1

2018-09-18  本文已影响0人  Net夜风

一、snmp(简单网络管理协议simple network management protocol)

SNMP协议的版本:
最通用的监控系统;只要配置了snmp的监控端,就能监控所有设备;

SNMP的组件:
SNMP的工作模式:

nmp支持管理端发送写操作,在被管理端执行;不能保存数据和图形显示;

snmp的监控端就是一个命令行,在linux上使用snmp协议,安装一个net-snmp程序包即可
    [root@zabbix ~]# yum -y install net-snmp
    [root@zabbix ~]# yum -y install net-snmp-utils
    [root@zabbix ~ ]# rpm -ql net-snmp-utils

如果要本机成为snmp被监控对象,要启动snmp服务;

    [root@localhost snmp]# systemctl start snmpd.service 
    [root@localhost snmp]# ss -unl   #161端口被监控表明启动成功
    UNCONN     0      0                    *:161                              *:* 

在监控端安装net-snmp-utils程序包后生成许多工具,来管理查看监控:

  /usr/bin/snmpget 一次获取一个数据
  /usr/bin/snmpgetnext 获取下一个数据
  /usr/bin/snmpwalk 获取所有数据,轮询读取数据
  /usr/bin/snmpset
  /usr/bin/snmptable
  /usr/bin/snmptest
  /usr/bin/snmptrap 捕获
  /usr/bin/snmpdelta
  /usr/bin/snmpdf
  /usr/bin/snmpbulkget 批量获取
  /usr/bin/snmpbulkwalk 批量获取所有数据

语法格式:
snmpget [OPTIONS] AGENT OID [OID]...

       -c COMMUNITY 配置文件中为public;
       -v 1|2c|3:指明使用的snmp协议版本;
       AGENT:指明要获取哪个主机地址上的数据;

示例:

[root@zabbix ~]# snmpwalk -v 2c -c public 192.168.43.12 .1.3.6.1.2.1   #获取这个分支上的所有数据
SNMPv2-MIB::sysDescr.0 = STRING: Linux localhost.localdomain     3.10.0-862.11.6.el7.x86_64 #1 SMP Tue Aug 14 21:49:04 UTC 2018 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-    MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (32770) 0:05:27.70
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: localhost.localdomain
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (8) 0:00:00.08
SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-    MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.6 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.8 = OID: SNMP-VIEW-BASED-ACM-  MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.9 = OID: SNMP-NOTIFICATION-    MIB::snmpNotifyFullCompliance
SNMPv2-MIB::sysORID.10 = OID: NOTIFICATION-LOG-MIB::notificationLogMIB
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB for Message     Processing and Dispatching.
SNMPv2-MIB::sysORDescr.2 = STRING: The management information definitions for the SNMP User-based Security Model.
SNMPv2-MIB::sysORDescr.3 = STRING: The SNMP Management     Architecture MIB.
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing IP and ICMP implementations
SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.8 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORDescr.9 = STRING: The MIB modules for managing SNMP Notification, plus filtering.
SNMPv2-MIB::sysORDescr.10 = STRING: The MIB module for logging     SNMP Notifications.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.9 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.10 = Timeticks: (8) 0:00:00.08
HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (1731711)     4:48:37.11
HOST-RESOURCES-MIB::hrSystemUptime.0 = No more variables left     in this MIB View (It is past the end of the MIB tree)

[root@zabbix ~]# snmpget -v 2c -c public 192.168.43.12 sysDescr.0   #获取一个采集的数据
SNMPv2-MIB::sysDescr.0 = STRING: Linux localhost.localdomain 3.10.0-862.11.6.el7.x86_64 #1 SMP Tue Aug 14 21:49:04 UTC 2018 x86_64

[root@zabbix ~]# snmpwalk -v 2c  -c public 192.168.43.12 .1.3.6.1.2.1.25.1
HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (1761644) 4:53:36.44
HOST-RESOURCES-MIB::hrSystemUptime.0 = No more variables left in this MIB View (It is past the end of the MIB tree)

二、分布式监控:

著名的开源监控工具:zabbix, zennos, opennms, cacti, nagios(icinga), ganglia

监控系统可以使用的数据库类型

三、ZABBIX

zabbix支持多种监控功能:
zabbix的特性:
zabbix的程序架构:
zabbix程序架构.png
zabbix支持分布式监控:

所有数据存储在数据库中,例如zabbix server只监控5万个指标,另外2万个指标交给代理服务器进行监控,代理监控服务器先把收集的数据放在本地数据库,每隔一段时间,连接zabbix server后,把数据统计汇总后一次性发出;这样减轻了连接的压力;
在大规模监控中,Zabbix server、Zabbix database、Zabbix web GUI有可能是分别的主机提供,彼此间通过socket进行通信;


zabbix分布式架构.png

server1运行Zabbix sever,server2运行Zabbix web gui和apache、php(mysql或pgsql),server3运行mysql或pgsql数据库;
通过server2的web页面进行配置和展示,Zabbix server把采集的数据存储在数据库中;
Zabbix server所有运行通过Zabbix_server.conf配置文件加载,运行中的所有日志信息,记录在Zabbix_server.log文件中;

Zabbix agent每个agent端运行一个zabbix_agentd守护进程,zabbix_agentd通过负责在本地监控各种应用,例如数据库、硬件设备、应用程序等等,把收集的数据通过zabbix协议发送给zabbix server,然后进行存储;

对于agent通过zabbix_agentd.conf配置文件加载自己的配置,每个zabbix agent产生的日志信息记录在zabbix_agentd.log文件中;

zabbix proxy也需要配置文件zabbix_proxy.conf,日志文件zabbix_proxy.log;

配置好zabbix_agentd,在zabbix server端通过使用zabbix_get命令手动获取zabbix agent端数据测试,被动监控;zabbix agent端通过使用zabbix_sender命令,手动向zabbix server发送数据测试,主动监控;

zabbix监控java应用时,通过java gateway组件与java应用程序通信;

zabbix常用术语:
zabbix工作模式:
zabbix-poll.png

zabbix server端由zabbix poller进程从各被监控端拉取数据,例如每5分钟poller进程向zabbix agent端、snmp端或基于internal机制,向被监控项发起数据采集请求;任何poller的执行都基于items监控项进行的;定义了监控项就意味着基于某个命令来完成数据采集;
item会采集出时间序列数据,对每个数据判断是否在有效区间内,大多数item都需要定义触发器trigger,超过阈值进行触发一个报警事件;
触发器一旦触发一个事件,action能订阅事件,来触发某一动作;所以在trigger之上,还要定义触发事件执行的动作以便完成报警通知或执行远程脚本;
某一个监控项都是被监控主机上的某一指标;
可把主机定义一个组,在套用模板时方便批量监控部署操作;
maintenance是维护模式,不让触发器报警;

四、zabbix的安装部署:

以3.0版本的zabbix-server演示安装:
  1. 准备数据库

    [root@localhost src]# yum -y install mariadb-server   #安装mairadb数据库
    [root@localhost src]# vim /etc/my.cnf.d/server.cnf   #修改配置文件
         [server]
         skip_name_resolve=ON
         innodb_file_per_table=ON
    [root@localhost src]# systemctl start mariadb.service   #启动mariadb
    [root@localhost src]# systemctl enable mariadb.service  #设置开机自启
    [root@localhost src]# mysql 
     MariaDB [(none)]> GRANT ALL ON zabbix.* TO 'zbxuser'@'192.168.%.%' IDENTIFIE
     Query OK, 0 rows affected (0.00 sec)
     MariaDB [(none)]> CREATE DATABASE zabbix CHARSET 'utf8';
     MariaDB [(none)]> FLUSH PRIVILEGES;
     MariaDB [(none)]> exit
     Bye
    [root@localhost src]# mysql_secure_installation  #加固数据库,设置密码
    [root@localhost src]# mysql -uzbxuser -h192.168.43.11 -p   #使用授权的用户登陆测试
    Enter password:
    
  2. 安装zabbix-server

     #安装依赖包
     [root@localhost ~]# yum install gcc  libxml2-devel   net-snmp net-snmp-devel   curl  curl-devel php  php-bcmath  php-mbstring mariadb mariadb-devel -y
      [root@localhost ~]# cd /usr/local/src
      [root@localhost src]# tar xf zabbix-3.0.21.tar.gz
      [root@localhost src]# cd zabbix-3.0.21
      [root@localhost zabbix-3.0.21]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java
      [root@localhost zabbix-3.0.21]# make install   
      
      #安装完成之后导入数据库脚本,以生成数据库环境
      [root@localhost ~]# mysql -uzbxuser -h192.168.43.11 -pzbxpasswd zabbix </usr/local/src/zabdatabase/mysql/schema.sql
      [root@localhost ~]# mysql -uzbxuser -h192.168.43.11 -pzbxpasswd zabbix </usr/local/src/zabdatabase/mysql/images.sql
      [root@localhost ~]# mysql -uzbxuser -h192.168.43.11 -pzbxpasswd zabbix </usr/local/src/zabdatabase/mysql/data.sql
     
     #复制启动脚本,并修改
      [root@localhost ~]# cp /usr/local/src/zabbix-3.0.21/misc/init.d/fedora/core/* /etc/init.d/
      [root@localhost init.d]# vim zabbix_server
             BASEDIR=/usr/local/  #此行修改为:BASEDIR=/usr/local/zabbix  
     
     # 编辑zabbix_server.con配置文件
      [root@localhost ~]# mkdir /var/log/zabbix
      [root@localhost ~]# chown zabbix.zabbix /var/log/zabbix
      [root@localhost ~]# vim /usr/local/zabbix/etc/zabbix_server.conf
             LogFile=/var/log/zabbix/zabbix_server.log
             DBHost=192.168.43.11   #此项一定要改,使用默认localhost无法连接到数据库
             DBUser=zbxuser
             DBPassword=zbxpasswd
             Timeout=300
     #启动zabbix-server
     [root@localhost ~]# /etc/init.d/zabbix_server start
     [root@localhost ~]# ss -tnl
         LISTEN      0      128                                        *:10051                                                  *:*   #监听到10051端口,zabbix启动成功 
    
  3. 安装配置WEB-GUI

    #首先安装httpd服务
    [root@localhost ~]# yum -y install httpd
    [root@localhost ~]# mkdir /var/www/html/zabbix
    [root@localhost ~]# mkdir /var/www/html/zabbix
    [root@localhost ~]# chown zabbix.zabbix /var/www/html/zabbix -R
    [root@localhost conf.d]# systemctl start httpd
    

使用浏览器访问:http://ZABBIX_IP/zabbix

zabbix.png

Next Step:


zabbix.error.png zabbix.error2.png
[root@localhost ~]# vim /etc/php.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone =Asia/Shanghai
#安装web-gui的依赖包
[root@localhost ~]# yum -y install php-mysql php-gd php-xml php-ldap php-bcmath
[root@localhost ~]# systemctl restart httpd.service

刷新网页:

zabbix.error.ok.png

继续Next Step


zabbix.1.png
zabbix2.png
zabbix.login.png

如果忘记zabbix的登录密码,可在mysql数据库中直接更改密码:

[root@zabbix ~]# mysql
> use zabbix;
> show tables;
> update users set passwd=md5('mageedu') WHERE userid=1;
> SELECT userid,name,passwd FROM users;
> exit

@到此zabbix-server部署完。


zabbix汉化:
  1. 修改php中字体配置

    [root@localhost ~]# vim /var/www/html/zabbix/include/locales.inc.php
     'zh_CN' => ['name' => _('Chinese (zh_CN)'),     'display' => false],   #将此出false改为true
    
  2. 在web-gui中修改配置


    user.zh.png
  1. 更换字体

    [root@localhost ~]# /var/www/html/zabbix/fonts   #将简体字*.ttf文件复制到此
    [root@localhost ~]# /var/www/html/zabbix/fonts/include/defines.inc.php
    define('ZBX_GRAPH_FONT_NAME',           'simkai'); // font file name
    

刷新页面后显示正常:


zabbix汉化.png
监控tomcat
  1. 安装部署tomcat
    #安装tomcat依赖的jdk程序
[root@localhost src]# yum -y install jdk-7u79-linux-x64.rpm 
[root@localhost src]# ln -sv /usr/java/jdk1.7.0_79/ /usr/local/jdk

#安装tomcat
[root@localhost src]# tar zxf apache-tomcat-7.0.78.tar.gz
[root@localhost src]# ln -sv /usr/local/src/apache-tomcat-7.0.78 /usr/local/tomcat
            
#添加环境变量
[root@localhost src]# vim /etc/profile
        export JAVA_HOME=/usr/local/jdk
        export TOMCAT_HOME=/usr/local/tomcat
        export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$TOMCAT_HOME/bin:$PATH
        export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
[root@localhost src]# source /etc/profile

#修改配置文件添加如下内容
[root@localhost ~]# vim /usr/local/tomcat/bin/catalina.sh
    在# ----- Execute The Requested Command -----------------段下添加:
     CATALINA_OPTS="$CATALINA_OPTS 
    -Dcom.sun.management.jmxremote                                         #启用远程java监控
    -Djava.rmi.server.hostname=192.168.43.11                            #tomcat主机
    -Dcom.sun.management.jmxremote.port=12345               #默认启动的JMX端口号
    -Dcom.sun.management.jmxremote.ssl=false            #不适用ssl认证
    -Dcom.sun.management.jmxremote.authenticate=false"   #不适用用户名密码


[root@localhost ~]# /usr/local/tomcat/bin/catalina.sh start  #启动tomcat
[root@localhost ~]# ss -tnl
    LISTEN      0      100                        :::8080                                   :::*
    LISTEN      0      50                          :::12345                              :::*

使用浏览器访问tomcat测试


tomcat.png

在windows验证tomcat:(window上安装jdk,打开默认路径:C:\Program Files\Java\jdk1.8.0_191\lib\JConsole.jar)

java1.png java2.png
  1. 安装zabbix-agent和zabbix-java两个服务
[root@localhost ~]# cd /usr/local/src
[root@localhost src]# ls
apache-tomcat-7.0.78         zabbix-agent-3.0.9-1.el7.x86_64.rpm
apache-tomcat-7.0.78.tar.gz  zabbix-java-gateway-3.0.9-1.el7.x86_64.rpm
jdk-7u79-linux-x64.rpm
[root@localhost src]# yum -y install zabbix-agent-3.0.9-1.el7.x86_64.rpm zabbix-java-gateway-3.0.9-1.el7.x86_64.rpm    #用yum的方式安装agent和java-gateway
[root@localhost src]# vim /etc/zabbix/zabbix_agentd.conf   #修改agent配置内容如下
    EnableRemoteCommands=1
    LogRemoteCommands=1
    Server=192.168.43.11
    ListenPort=10050
    ListenIP=0.0.0.0
    StartAgents=30
    Hostname=192.168.43.12
    Timeout=30
[root@localhost src]# vim /etc/zabbix/zabbix_java_gateway.conf   #修改agent配置内容如下
    LISTEN_IP="0.0.0.0"
    LISTEN_PORT=10052
    PID_FILE="/var/run/zabbix/zabbix_java.pid"
    START_POLLERS=20
    TIMEOUT=30
[root@localhost src]# systemctl start zabbix-agent.service zabbix-java-gateway.service   #启动agent和java-gateway
  1. 在zabbix-server端修改配置,添加javagatewayip等参数

     [root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_server.conf
     JavaGateway=192.168.10.102 #指定java gateway的地址
     JavaGatewayPort=10052  #指定java gateway的服务器监听端口,如果是默认端口可以不写
     StartJavaPollers=20  #启动多少个进程去轮训 java gateway,要和java gateway的配置一致
     Timeout=30
    
  2. 授权zabbix用户sudo权限

[root@localhost src]# visudo
zabbix  ALL=(ALL)       NOPASSWD:ALL
Defaults requiretty   #用井号注释此行
  1. 在WEB GUI中添加主机并关联模板


    192.168.43.12-1.png
192.168.43.12-web.png 182.168.43.12-模板.png 192.168.43.12.png
安装zabbix proxy
  1. 主动模式与被动模式工作原理(对于zabbix agent来说的工作模式 )
  1. 安装主动模式的zabbix
    zabbix 是一个分布式的监控系统,支持通过代理服务器zabbix proxy收集zabbix agent的数据,然后把收集保存在本地数据库并发送给zabbix server进行统一存储和 展示。
准备数据库:(在server端连接数据库)
[root@zabbix-server ~]# mysql -uroot -pinspur -h127.0.0.1
MariaDB [(none)]> CREATE DATABASE zabbix_proxy CHARSET 'utf8';
    Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL ON zabbix_proxy.* TO 'proxy'@'192.168.%.%' IDENTIFIED BY '123456';
    Query OK, 0 rows affected (0.01 sec
MariaDB [(none)]> FLUSH PRIVILEGES;
在proxy端连接数据测试:
[root@localhost src]# mysql -uproxy -p123456 -h192.168.43.3

安装proxy:
[root@zabbix src]# yum -y install zabbix-proxy-mysql-3.0.9-1.el7.x86_64.rpm zabbix-agent-3.0.9-1.el7.x86_64.rpm     

导入数据库:
[root@localhost zabbix-3.0.21]# mysql -uproxy -p123456 -h192.168.43.11zabbix_proxy < /usr/local/src/zabbix-3.0.21/database/mysql/schema.sql
    
修改proxy配置文件
[root@zabbix src]# vim /etc/zabbix/zabbix_proxy.conf
ProxyMode=0  #0为主动,1为被动
Server=192.168.43.11  #zabbix server端的地址或主机名
Hostname=Zabbix_proxy  #代理服务器名称,需要与zabbix server田间代理时的proxy name是一致的
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0   #指明代理端日志文件大小;
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBHost=192.168.43.11 #数据库服务器地址
DBName=zabbix_proxy  #数据库的名称
DBUser=zbxproxy
DBPassword=zbxproxy
ProxyLocalBuffer=3  #代理端本地缓存;
ProxyOfflineBuffer=24   #代理端离线缓冲;
HeartbeatFrequency=60  #心跳间隔检测时间,默认为60秒,范围1-3600,被动模式不使用
ConfigFrequency=5   #间隔多久从zabbix server获取监控信息
DataSenderFrequency=5  #数据发送时间间隔,默认为1秒,范围1-3600秒,被动模式不使用
StartPollers=10  #启动的线程数,与客户端的数据保持一致
JavaGateway=192.168.43.12  #java gateway服务器的地址
JavaGatewayPort=10052
StartJavaPollers=20   #监控java启动的线程,必须启用要不监控不到java
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=30
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000

agent的配置和上文中配置一样就不在列举;
启动proxy和 agent
[root@zabbix src]# systemctl start zabbix-proxy.service
[root@zabbix src]# systemctl start zabbix-agent.service
[root@zabbix src]# ss -tnl
LISTEN     0      128                  *:10050                            *:*                  
LISTEN     0      128                  *:10051                            *:*       

在web中添加proxy主机本身并监控


proxy1.png
  1. 在web中配置代理程序:


    proxy.png
  1. zabbix-web gui中添加主机并监控


    proxy3.png
proxy4.png proxy5.png
  1. 修改192.168.43.12-web上agent的配置文件使server指向proxy主机即可
[root@localhost src]# vim /etc/zabbix/zabbix_agentd.conf
    Server=192.168.43.13
    ServerActive=192.168.43.13  #开启主动模式,此项也要启用
[root@localhost src]# systemctl restart zabbix-agent.service

web中监控正常:


proxy6.png
上一篇 下一篇

猜你喜欢

热点阅读