zabbix 监控部署(下)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

在之前的zabbix 监控部署(上) 这篇博客中,主要是使用了源码编译安装的方式,在实际的生产中,如果没有特殊要求,也可以直接使用yum 安装。这篇博文主要是使用yum方式通过salt安装的一个简单示例,同时介绍如何自定义监控项。


选择yum源和安装版本

由于zabbix每六个月会发布一个新的稳定版本,在此期间,还会发布长期支持版LTS (Long Term Support), 长期支持版本往往有较长时间的支持,遇到了问题也能更容易解决,所以如果使用yum安装的方式,建议使用LTS版本。目前的LTS版本是3.0, 在不久之后将会推出4.0的LTS版本,所以这里选择使用zabbix3.0最为示例。系统版本为CentOS7.2。


如果使用手动安装,需要添加3.0的yum源:

1
yum  install  http: //repo .zabbix.com /zabbix/3 .0 /rhel/7/x86_64/zabbix-release-3 .0-1.el7.noarch.rpm

使用salt安装的sls文件(仅供参考):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
zabbix-server-rhel:
   file .managed:
     - name:  /tmp/zabbix-release-3 .0-1.el7.noarch.rpm
     source : salt: //zabbix/files/zabbix-release-3 .0-1.el7.noarch.rpm
   cmd.run:
     - name: rpm -i  /tmp/zabbix-release-3 .0-1.el7.noarch.rpm
     - unless:  test  -f  /etc/yum .repos.d /zabbix .repo
zabbix-server- install :
   pkg.installed:
     - pkgs:
       - httpd
       - mariadb-server 
       - gcc  
       - gcc-c++
       - glibc 
       - mariadb-devel 
       - libxml2-devel 
       - libcurl 
       - curl  
       - libcurl-devel 
       - fping
       - net-snmp
       - net-snmp-libs 
       - net-snmp-utils  
       - net-snmp-devel
       - libssh2-devel 
       - OpenIPMI-devel
       - java-1.8.0-openjdk-devel
       - zabbix-server-mysql
       - zabbix-agent
       - zabbix-web
       - zabbix-web-mysql
       - zabbix-get
     - require:
       - cmd: zabbix-server-rhel
zabbix-db-config:
   file .managed:
     - name:  /etc/my .cnf
     source : salt: //zabbix/files/my .cnf
   service.running:
     - name: mariadb
     enable : True
     - require:
       - pkg: zabbix-server- install
   cmd.run:
     - name: mysql -e  "DROP USER ''@'localhost';"  && mysql -e  "DROP USER ''@'$(hostname)'"  && mysql -e  "DROP DATABASE test"  && mysql -e  "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');"  && mysql -e  " create database zabbix;grant all on zabbix.* to zabbix@localhost identified by'zabbix';"  &&  mysql -e  "UPDATE mysql.user SET Password = PASSWORD('zabbix') WHERE User = 'root';"  && mysql -e  "FLUSH PRIVILEGES"
     - onlyif: mysql -e  "show databases;"
     - require:
       - service: zabbix-db-config
zb-server-db- import :
   cmd.run:
     - name: zcat  /usr/share/doc/zabbix-server-mysql- * /create .sql.gz | mysql zabbix -uzabbix -pzabbix
     - unless:  "mysql -uzabbix -pzabbix -e 'select alias from zabbix.users;'"
     - require:
       - cmd: zabbix-db-config
zb-web-config:
   file .managed:
     - name:  /etc/httpd/conf .d /zabbix .conf
     source : salt: //zabbix/files/zabbix .conf
     - user: root
     - group: root
     - mode: 644
     
zb-web-service:
   service.running:
     - name: httpd
     enable : True
     - reload: True
     watch :
       file : zb-web-config
zb-agent-service:
   service.running:
     - name: zabbix-agent
     enable : True
     - reload: True
zb-server-service:
   cmd.run:
     - name:  mkdir  -p  /etc/zabbix/alertscripts
     - unless:  test  -d  /etc/zabbix/alertscripts
   file .managed:
     - name:  /etc/zabbix/zabbix_server .conf
     source : salt: //zabbix/files/zabbix_server .conf
     - user: root
     - group: root
     - mode: 644
     - template: jinja
     - defaults:
       DBHost: localhost
       DBName: zabbix
       DBUser: zabbix
       DBPassword: zabbix
   service.running:
     - name: zabbix-server
     enable : True
     - reload: True
     watch :
       file : zb-web-config

对应的配置文件都放在zabbix/files/目录下。如果使用手动安装,可以参照sls文件中的步骤完成安装。


使用snmp对交换机进行监控

zabbix 可以通过多种方式对多种设备进行监控。只要是支持SNMP协议的设备,就可以对其进行监控,如我们可以通过zabbix 监控网络设备如路由器,交换机,打印机等。对安装支持snmp的操作系统我们也可以对其进行监控。

简单介下绍对华为交换机的监控。

查看交换机支持的SNMP版本,设置团体名:

1
2
3
4
5
6
7
<sw5752p>display snmp-agent sys-info 
    The contact person  for  this managed node: 
            R&D Beijing, Huawei Technologies co.,Ltd.
    The physical location of this node: 
            Beijing China
    SNMP version running  in  the system: 
            SNMPv2c

交换机支持v2c,如果交换机使用的是v3版本或者其他版本可以通过修改交换机版本,也可以配置的方式来使用snmpv3。

更改为v2c 版本:

1
2
[sw5752p]undo snmp-agent sys-info version v3
[sw5752p]snmp-agent sys-info version v2c

配置团体名:

1
[sw5752p]snmp-agent community  read  sw5752-public

在zabbix服务器上,我们可以通过snmp相关命令来获取交换机的状态信息:

1
2
# snmpwalk -v 2c -c sw5752-public 192.168.1.2 sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (197075041) 22 days, 19:25:50.41

在zabbix 上添加交换机为一个host,选择snmp:

f35b40518c52ed02726ac8dd190dff10.jpg


添加需要的模板:

15737544725082427d37b41a640bcc0b.jpg

设置团体名:



3065611f6f5545c07205a23d8b40e66a.jpg


在主机界面,我们可以看到已经添监控中:

4df806358a13d6844ca946f1423f7ab5.jpg


使用agent 对主机进行监控

在大多数情况下,我们都会使用zabbix的agent来监控服务状态。需要对被监控的客户端安装agent,并配置它与服务端通信。


1、安装agent

在zabbix的官方网站上下载与服务端对应版本的agent安装包进行安装。

安装完成后,我们需要修改配置文件,让它与主机通信,再此之前需要统一主机名,主机名要可识别。

修改之后,配置文件要有如下几个参数:

1
2
3
4
5
6
7
8
9
[root@node2 ~] # 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=192.168.1.3   #服务端主机IP
ServerActive=192.168.1.3    #服务端主机IP
Hostname= node2    #本机主机名
Include= /etc/zabbix/zabbix_agentd .d/*.conf    #自定义配置文件路径
#UserParameter=login-users,uptime|awk -F" " '{print $6}'  #此行为自定义,默认注释状态

 如果客户端配置了iptables,需要加入一条iptables规则:

1
iptables -A INPUT -m state --stateNEW -m tcp -p tcp --dport 10050 -j ACCEPT

启动客户端服务.


2、在服务端加入要监控的客户端服务器

打开服务端web管理界面,默认账户为Admin, 密码为 zabbix

创建一个主机组:

89031720b1982eec5bf0893ce55d99e0.jpg

如果此时没有主机,这不会有选择列表,这里可以看到之前所创建的主机:

f991b39bff9df91e4b6edada203714d7.jpg

设置主机信息和所属组:

b9a6b7867b76ecd4ebe3328f61c99b0f.jpg


在zabbix3.0版本中,会默认添加本地的bases模板,在低版本中需要手动搜索OS Linux模板添加,这两者都是一样的,在此模板中会对一些基础的服务器状态进行监控:

5ef3a295df6d33a04c92c1591639706c.jpg



自定义监控项

自定义监控项需要有两个主要步骤:

  • 修改配置文件,编写自定义监控内容。

  • 在server端加上自定义的监控key值。


1、例如我们要加入一个监控,监控当前状态下系统有多少人同时登录(系统自带的模板也有此功能)

可以使用此命令来获取用户的实时在线数量:

1
uptime| awk  -F  " " '{print $4}'

 修改配置文件:

vim /etc/zabbix/zabbix_agentd.conf

找到UserParameter这一行,打开注释,设置监控的键值和获取键值的方式:

UserParameter=login-users,uptime|awk-F " " '{print $6}'

语法说明:

UserParameter=KEY,COMMAND

定义一个键值,后面为获得此键值的执行命令,键值的命名对于整个系统必须是唯一的,两者之间逗号隔开,命令也可以是脚本。用户自定义的数据最大可以返回512KB的数据。


提示:如果系统需要自定义多个模板,可以单独创建一个文件,存放路径Include=/usr/local/etc/zabbix_agentd.userparams.conf


配置完成之后,重启zabbix-agent.


2、配置server端

首先在server测试看能否获取到agent端所返回的KEY值,server端上执行:

使用zabbix-get命令:

zabbix_get -s 192.168.1.10 -klogin-users

如果返回值正常,则key 添加成功。


打开server web配置界面,在客户端主机上添加监控项:

04c08b57180500a34ca0e5917db7a71f.jpg


创建监控项目:

551549e610b93d59ac00ea5f43fd7099.jpg

f8ab9e4bccdefc89c8bc0487f9bc4673.jpg



添加成功后,在这个客户端的items中就可以看到添加的选项:

d6f2d3cef22bf749dc07925ddfaa2933.jpg

创建主机图形:

a7a84634e018630099ae038a283a12b7.jpg

87b2f9cfecc8c1f69b3f106291b0d768.jpg

添加刚刚创建的监控项,可以自定义图形的样式:

ea9381e485e2872f61f2e3639780bf12.jpg

此时通过监控的主界面,进入图形界面,就可以直接看到系统绘制的状态图:

80c3ff04a5584a3e1dc167880efb71f6.jpg



 创建触发器

当监控的项目到某一个阈值时,需要触发一些动作,下面触发器:

d30fde19899bbf05f89c6887596211be.jpg


进入触发器的配置界面,点击添加规则按钮就可以设置触发规则:

431dbea56b5eed6cee0b9680f5571d94.jpg


触发器规则配置界面:

1d3fa2f9d42291d533b8d893b7827bb1.jpg

添加成功后,查看添加的项目:

0dec1099fe7a85ac2dcad549aad9456e.jpg


可以对创建的触发器添加报警声音:在userprofile,中设置即可。

7df6d1287f92bd02a49ea28aab57d17e.jpg

创建触发行为:当出现故障时,条件触发报警行为时,自动发送邮件或者手机短信报警。

系统默认自带了一个未被启用的模板,可以重新编辑此模板,也可以添加一个新的模板来定义action的行为。

97a45308a2c391bf478ff3645969c133.jpg


e6d02eae9c3aabdc6889c334db57dc08.jpg


然后定义发送的内容和收件人:

0c89051a377c157fdf3cbe781eaf0f79.jpg

e475b7fbd805d1fce6d71e3438d597a3.jpg


自定义媒体介质:在系统中默认自带的有mail,短信等报警通知机制,一般常用的是mail功能.

ed71acf5dd7a8df4d3071a53f9514ec3.jpg

这里定义的是发件箱的信息,在admin账户中,我们还要配置收件箱的信息:

7cca194e92d3c599803d22de2e950481.jpg

我们也可以通过编写一个发邮件的脚本或者程序来实现,在系统中配置上执行此脚本的触发机制就可以了。

8c864c367a57a097a173f750b89331b0.jpg


ZABBIX3.0以上的版本需要自定义三个脚本参数,才可以将邮件信息传入脚本:

012861788bd0c80dc09d7b62ad76a73b.jpg


3b68e855fad41b3483d8b11f6e79e1c3.jpg

在server端创建此脚本并加上执行权限,这个脚本的存放路径,在zabbix的配置文件中可以指定:

# grep"AlertScriptsPath"/usr/local/zabbix_server/etc/zabbix_server.conf|grep -v "#"

AlertScriptsPath=/etc/zabbix/alertscripts

将发邮件或者任何动作的脚本放在此目录下,也可以直接使用python编写发邮件的脚本。

注意:脚本中一定要接受三个参数 $1  $2  $3,分别为收件人,发送的主题和内容。对应的参数是 {ALERT.SENDTO}  {ALERT.SUBJECT}  {ALERT.MESSAGE} 


编辑用户属性,指定发送报警信息的方式:

ce87304578aca18f77c5fa136694364c.jpg5138be2c468ed3ee08722de44b38e380.jpg


对于不同的组,如果有新加的设备和服务器,要添加权限给组,否则其他的组成员无法管理这些新加设备:

8eac04c1b084f950fbb8593d88180f8e.jpg


当设置的报警被触发成功后,会提示已经发送成功:

a4a6ca1aa9a8df2c1ce195e08cf5b695.jpg


如果这里没有设置成功,看一下action模板是否开启,actions中设置是否正确,查看系统日志信息:

 tail -f /var/log/zabbix/zabbix_server.log

附上邮件python发送脚本:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#! /usr/bin/envpython
# coding:utf-8
  
from  email importencoders
from  email.headerimport Header
fromemail.mime.text  import  MIMEText
from  email.utilsimport parseaddr, formataddr
import  smtplib
import  sys
  
defsend_mail(_to_email,_subject,_message):
         smtp_host  =  'smtp.ym.163.com'         #邮箱服务器
         from_email  =  'alert@dawanjia.com.cn'    #用户名
         passwd  =  '12345password'               #密码
         msg  = MIMEText(_message, 'plain' , 'utf-8' )
         msg[ 'Subject' =  _subject
         smtp_server  = smtplib.SMTP_SSL(smtp_host, 994 )    # 994为开启SSL的端口号
         smtp_server.login(from_email,passwd)
        smtp_server.sendmail(from_email,[_to_email],msg.as_string())
         smtp_server.quit()
  
if  __name__  = = '__main__' :
        send_mail(sys.argv[ 1 ],sys.argv[ 2 ],sys.argv[ 3 ])




自定义模板

对于一些系统不带的监控项目,我们需要自定义一个模板,然后在模板中添加自定义的监控项目。

72d0e5fa90561881a44528de8c0f6395.jpg

4fcce13850f97f9445353b6b49460e54.jpg

之后就可以给当前自定义的模板添加 applications,items,trigger等组件.

注意:这里自定义的模板里所加的自定义监控项中,如果是需要修改agent端的配置文件,那么所有使用这个模板的agent端都要修改配置,可以将配置信息编写成单独文件和脚本都放在系统设定的路径下。


# grep "Include"/etc/zabbix/zabbix_agentd.conf

Include=/etc/zabbix/zabbix_agentd.d/*.conf


zabbix 客户端主动模式配置

在zabbix的默认配置中,agent端是被动模式的,server端是主动模式,server端主动发送请求给agent端获取需要的数据,但是当我们有大量的机器需要监控时,仅仅依靠server端去大量的主动发送数据请求是不合适的,所以需要配置agent端主动发送数据给server端才是最佳的方案。

在配置agent端为主动模式时,需要两步操作:

  • 克隆需要的模板,并将模板类型从agent 改为 agent-active状态。

  • 修改agent端的配置文件,注释掉被动模式配置,打开主动模式配置,并设置Activeserver.




 本文转自 酥心糖 51CTO博客,原文链接:http://blog.51cto.com/tryingstuff/1977879
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
存储 SQL 监控
修改Zabbix源码实现监控数据双写,满足业务需求!
虽然对接Elasticsearch后有诸多好处,但是它不往数据库写历史数据了,同时还不再计算趋势数据了。有这么一个场景...
修改Zabbix源码实现监控数据双写,满足业务需求!
|
4月前
|
数据采集 监控 数据库
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
75 4
|
4月前
|
监控 Unix Windows
Zabbix【部署 04】 Windows系统安装配置agent及agent2
Zabbix【部署 04】 Windows系统安装配置agent及agent2
141 0
|
1月前
|
数据采集 监控 数据库
请问OceanBase社区版能否通过zabbix监控,然后将报错信息展现到grafana?
【2月更文挑战第25天】请问OceanBase社区版能否通过zabbix监控,然后将报错信息展现到grafana?
25 2
|
2月前
|
监控 Cloud Native 关系型数据库
使用 Grafana 统一监控展示 - 对接 Zabbix
使用 Grafana 统一监控展示 - 对接 Zabbix
|
4月前
|
监控 Java 数据库
Zabbix【部署 05】 Docker部署Zabbix Server Agent Agent2 Web interface及 Java-Gate-Way(详细启动脚本及踩坑记录)不定时更新
Zabbix【部署 05】 Docker部署Zabbix Server Agent Agent2 Web interface及 Java-Gate-Way(详细启动脚本及踩坑记录)不定时更新
118 0
|
4月前
|
监控 Docker 容器
Zabbix【部署 03】zabbix-agent2安装配置使用(zabbix-agent2监控docker实例分享)
Zabbix【部署 03】zabbix-agent2安装配置使用(zabbix-agent2监控docker实例分享)
221 0
|
4月前
|
监控 Java
Zabbix【部署 02】Zabbix-Java-Gateway安装配置使用(使用Zabbix-Java-Gateway通过JMX监控Java应用程序实例分享)
Zabbix【部署 02】Zabbix-Java-Gateway安装配置使用(使用Zabbix-Java-Gateway通过JMX监控Java应用程序实例分享)
87 0
|
4月前
|
监控 前端开发 应用服务中间件
Zabbix【部署 01】Zabbix企业级分布式监控系统部署配置使用实例(在线安装及问题处理)程序安装+数据库初始+前端配置+服务启动+Web登录
Zabbix【部署 01】Zabbix企业级分布式监控系统部署配置使用实例(在线安装及问题处理)程序安装+数据库初始+前端配置+服务启动+Web登录
411 0
|
4月前
|
监控 关系型数据库 MySQL
zabbix部署以及配置
zabbix部署以及配置
74 3

推荐镜像

更多