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

[经验分享] Zabbix监控服务部署

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-1-9 16:40:16 | 显示全部楼层 |阅读模式
一、Zabbix介绍
1.监控概述
    简单地理解,就是第一时间发现、定位并记录异常;复杂地理解,就是从外部/内部、业务/基础环境、功能/性能、预算/收入等各个方面对业务数据进行采集、展现和告苦的体系。对于运维人员,通过对各层次数据的展示和告警设置,快速、直观地发现和定位故障。按监控类型划分,可分硬件监控、系统监控、网络监控、应用监控等。
硬件监控:可以利用IPMI 监视服务器的物理特征如温度、电压、电扇工作状态、电源供应以及机箱入侵等。详细过程见http://www.ibm.com/developerworks/cn/linux/l-ipmi/。磁盘监控:MegaCli是一款管理维护硬件RAID软件。可以通过它来了解当前raid卡的所有信息,包括 raid卡的型号,raid的阵列类型,raid上各磁盘状态,等等。http://blog.chinaunix.net/uid-25135004-id-3139293.html
系统监控:主要监控CPU 使用率、内存使用情况、磁盘io速度、传输和读/写比率等。可以利用nmon,帮助在一个屏幕上显示所有重要的性能优化信息,并动态地对其进行更新。
网络监控:Smokeping、基调、博睿等。
2.Zabbix简介
zabbix(音同 zbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。zabbix由2部分构成,zabbixserver与可选组件zabbix agent。zabbixserver可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,OpenBSD,OS X等平台上。
3. zabbix的主要特点
  多种数据收集方式(SNMP、IPMI、JMX)(SERVER、PROXY、AGENTS)
  高级告警配置(自定义告警升级、告警信息支持使用宏macro变量、远程命令实现自动化动作)
  实时绘图(自定义创建多监控项视图、网络拓扑、自定义面板screen,并允许在dashboard页面显示)
  历史数据存储(数据存储在数据库中,可配置、内置数据清理机制)
  多模板使用(模板中可以添加组监控、模板允许继承)
  网络自动发现(自动发现网络设备、自动agent注册)
  ZabbixAPI接口(提供程序级别的访问接口、第三方程序可很快接入)
4.Zabbix主要功能
   - CPU负荷
   - 内存使用
   - 磁盘使用
   - 网络状况
   - 端口监视
   - 日志监视。
5.Zabbix进程构成
   zabbix_agentd(客户端守护进程,手机客户端数据,如cpu负载、内存、磁盘使用等...)
   zabbix_get(zabbix工具,单独使用,常用于在server或者proxy端执行,用户获取监控数据,通常用于排错)
   zabbix_sender(用于向server端主动发送数据,常用于再执行耗时比较长的check时,导致zabbix超时,使用sender主动提交一次数据)
   zabbix_proxy(代理守护进程,数据中转站,最后还要将获取到的数据提交到server里,一般跨机房、地区的环境需要使用到proxy)
   zabbix_java_gateway(监控java时候使用到代理网关,类似于agent,最后数据还要提交给server)
   zabbix_server(server端守护进程,server可以被动去搜集数据,也可以让客户端主动提交数据)
二、 Zabbix安装
    要想搭建一个Zabbix的工作环境,需要从服务器入手。与服务器通信,管理员需要使用一个Zabbix前端界面,与Zabbix服务器和数据库进行通信。三个关键(界面、服务器和数据库)可以安装在同一台服务器上,但是如果你拥有一个更大更复杂的环境,将它们安装在不同的主机上也是一个选项。Zabbix服务器能够直接监控到同一网络中的设备,如果其他网络的设备也需要被监控,那还需要一台Zabbix代理服务器。
1.环境准备
zabbix-server:192.168.80.107
zabbix-client:192.168.80.103、192.168.80.107
1
2
3
4
[iyunv@zabbix ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)
[iyunv@zabbix ~]# uname -r
2.6.32-504.el6.x86_64



2.安装依赖
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install httpd  php mysql mysql-server mysql-devel php-pdo php-mysql gcc gcc-c++ glibc libxml2-devel curl curl-devel net-snmp net-snmp-devel libssh2-devel OpenIPMI-devel php-common php-gd perl-DBI php-xml php-mbstring php-bcmath
/etc/init.d/httpd start
/bin/cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
vi /etc/my.cnf            #在[mysqld]中加入如下内容
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
/etc/init.d/mysqld start          #启动数据库
echo -e "<?php\nphpinfo();\n?>"
> /var/www/html/index.php
访问
mysql
create databases zabbix;
create database zabbix character set utf8 collate utf8_bin;
grant all on zabbix.* to zabbix@'localhost' identified by '123456';
flush privileges;
exit
yum install zabbix22-agent -y



3.  安装zabbix
1.编译安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
cd /server/tools/
wget http://jaist.dl.sourceforge.net/ ... zabbix-2.4.8.tar.gz
tar zxvf zabbix-2.4.8.tar.gz
cd zabbix-2.4.8/database/mysql/
mysql -uzabbix -p123456 zabbix <schema.sql
mysql -uzabbix -p123456 zabbix <images.sql
mysql -uzabbix -p123456 zabbix <data.sql
cd ../..
./configure --prefix=/usr/local/zabbix-2.4.8 --enable-server --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ssh2
make install
cd frontends/php/
cp -rp ./* /var/www/html/
chown -R apache.apache /var/www/html
ln -s /usr/local/zabbix-2.4.8 /usr/local/zabbix
vi /usr/local/zabbix/etc/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
/usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
注意:安装zabbix22-agent,会自动添加zabbix用户,如果提前没有安装,会启动失败,需要自己手动添加zabbix用户



    访问http://192.168.80.107进行安装,发现会有报错,可以修改php的配置文件达到报错的要求,例如本次需要续改的配置
1
2
3
4
5
6
vi /etc/php.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = PRC
/etc/init.d/httpd restart



#重启apache,然后刷新进行安装,其中Zabbix server的name可以随便写,也可以为空,安装后登录,默认用户名密码为Admin,zabbix  注意:用户名必须大写。
    2. yum安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
注意:此种方法可能安装不成功
[iyunv@zabbix ~]# rpm -ivh http://repo.zabbix.com/zabbix/2. ... .2-1.el6.noarch.rpm
Retrieving http://repo.zabbix.com/zabbix/2. ... .2-1.el6.noarch.rpm
warning: /var/tmp/rpm-tmp.zKPszZ: Header V4
DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY
Preparing...               ########################################### [100%]
   1:zabbix-release        ########################################### [100%]
[iyunv@zabbix ~]# rpm -ql zabbix-release
/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
/etc/yum.repos.d/zabbix.repo
/usr/share/doc/zabbix-release-2.2
/usr/share/doc/zabbix-release-2.2/GPL
[iyunv@zabbix ~]# yum install -y zabbix zabbix-server zabbix-web zabbix-server-mysql zabbix-web-mysql zabbix-agent
[iyunv@zabbix ~]# yum install mysql-server mysql



4.  客户端安装
1
2
3
4
yum install zabbix22-agent -y
vi /etc/zabbix/zabbix_agentd.conf
Server=192.168.80.107
/etc/init.d/zabbix-agent start



三、  配置监控
1.  修改zabbix web界面字体
    拷贝控制面板---字体--微软雅黑--上传到zabbix server中家目录下
1
2
3
cd /var/www/html/fonts/
mv /root/msyh.ttf .
chown apache.apache msyh.ttf



2. 自定义监控
客户端操作
1
2
3
4
5
[iyunv@client ~]# vi /etc/zabbix/zabbix_agentd.conf
UserParameter=mysql-check,ps aux|grep mysql|grep -cv grep
[iyunv@client ~]# /etc/init.d/zabbix-agent restart
服务器端测试:
[iyunv@zabbix ~]# zabbix_get -s 192.168.80.103 -k mysql-check



测试成功后添加主机项目,然后可以创建图表显示和触发器。
3. 自定义报警动作
   服务端操作
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
[iyunv@zabbix ~]# vi /usr/local/zabbix/etc/zabbix_server.conf +425
AlertScriptsPath=/usr/local/zabbix/lib/alertscripts
[iyunv@zabbix ~]# mkdir /usr/local/zabbix/lib/alertscripts
[iyunv@zabbix alertscripts]# killall zabbix_server
[iyunv@zabbix alertscripts]# /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
[iyunv@zabbix ~]# cd /usr/local/zabbix/lib/alertscripts   
[iyunv@zabbix alertscripts]# vi pymail.py
#!/usr/bin/python
#coding: utf-8
import smtplib
import sys
from email.mime.text import MIMEText
from email.header import Header
from email.Utils import COMMASPACE

receiver = 'sys.argv[1]'
subject = 'sys.argv[2]'
mailbody = 'sys.argv[3]'
smtpserver = 'smtp.163.com'
username = '18753365278'
password = '6180878lwb'
sender = username

msg = MIMEText(sys.argv[3],'html','utf-8') #中文需参数‘utf-8',单字节字符不需要
msg['Subject'] = Header(subject, 'utf-8')
msg['From'] = username
msg['to'] = receiver

smtp = smtplib.SMTP()
smtp.connect('smtp.163.com')
smtp.login(username, password)
smtp.starttls()
smtp.sendmail(msg['From'], msg['to'],msg.as_string()))
smtp.quit()
[iyunv@zabbix alertscripts]# chmod +x pymail.py



  1. 创建报警媒介
    Administration-->Media types-->Create Media Type创建报警动作(执行报警脚本),默认会有三个报警类型(Email、Jabber、SMS)。类型选择Scripts,脚本名为pymail.py,然后保存。
  2.编辑用户选择报警介质
    Administration-->Users-->Media选项进行添加
  3.添加行为
    Administration-->Actions -->编辑Report problems to Zabbix administrators-->(Action、Conditions、Operations)
4.查看最近所有监控项的数据
    Monitoring-->Latest data查看
5.客户端主动模式
  1.服务端克隆模板
    Configuration-->Templates-->Template OS Linux(选中其中一个进去)-->Full Clone-->填写名称(例如Template OS Linux Active)-->添加
    然后再克隆Template OS Linux链接的模板(如Template App Zabbix Agent)并且让Template OS Linux链接其克隆的模板。注意:链接表示模板项目的并集
  2.把模板里项目全选,批量更新,项目类型改为主动方式,链接的模板项目也得改为主动方式
  3.修改客户端配置文件
1
2
3
4
5
6
[iyunv@client ~]# vi /etc/zabbix/zabbix_agentd.conf
#Server=192.168.80.107         #注释此项,编辑如下三项
StartAgents=0
ServerActive=192.168.80.107
Hostname=data-1
[iyunv@client ~]# /etc/init.d/zabbix-agent start



  4.添加主机
6.  zabbix分布式
  1.代理客户端安装,即安装zabbix-proxy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[iyunv@client ~]# yum install -y zabbix-proxy zabbix-proxy-mysql mysql-server
[iyunv@client ~]# /etc/init.d/mysql start
[iyunv@client ~]# mysql
mysql> create database zabbix_proxy character set utf8;
mysql> grant all on zabbix_proxy.* to zabbix@localhost identified by 'zabbix';
mysql> use zabbix_proxy
mysql> source /usr/share/doc/zabbix-proxy-mysql-2.4.6/create/schema.sql;
[iyunv@client ~]# grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf
ProxyMode=0   #0主动,1被动
Server=192.168.80.107   #主动模式设置
Hostname=client  #必须改
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock
ExternalScripts=/usr/lib/zabbix/externalscripts
[iyunv@client ~]# /etc/init.d/zabbix-proxy start
[iyunv@client ~]# lsof -i:10051



2.在服务端添加
Administration-->Proxies-->Createproxy
之后在服务端添加主机(选上代理即可),要监控的机器agent配置文件ip改成代理的ip
四、自动化监控
1.  zabbix-agent自动注册(使用proxy)
    1.修改客户端配置文件
1
2
3
4
5
6
7
8
9
10
11
[iyunv@client ~]# grep '^[a-Z]'
/etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
StartAgents=0
ServerActive=192.168.80.103  #这里用了代理的ip
Hostname=client
HostMetadataItem=system.uname
Include=/etc/zabbix/zabbix_agentd.d/
[iyunv@client ~]# /etc/init.d/zabbix-agent start



服务器端测试:
1
2
[iyunv@zabbix ~]# zabbix_get -s 192.168.80.103 -k system.uname
Linux client 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64



2.服务端操作
     Configuration-->Actions-->事件源选择Auto registration-->创建
     条件可以写使用哪个代理、Metadata值等;Action operations可以写添加主机、添加模板等
  2.  主机探索(不使用proxy,被动模式)
1.修改客户端配置文件
1
2
3
4
5
6
7
8
9
10
11
[iyunv@client ~]# grep '^[a-Z]'
/etc/zabbix/zabbix_agentd.conf               
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
StartAgents=3
Server=192.168.80.107
Hostname=client
HostMetadata=system.uname
UserParameter=login-user,uptime| awk -F' ' '{print $4}'
[iyunv@client ~]# /etc/init.d/zabbix-agent restart



2.服务端操作
    Configuration--> Discovery-->修改默认的Local network
wKiom1hxrZrDcXlRAABswxehpQc125.jpg
之后Configuration-->Actions-->事件源选择Discovery-->修改默认的Action-->然后启用。稍等会儿查看Monitoring-->Events(查看添加事件);或者查看主机
3.使用zabbix-api
  1.获取验证
    官方文档:https://www.zabbix.com/documenta ... eference/user/login
在linux命令行执行如下命令
1
2
3
4
5
6
7
8
9
10
11
12
curl -s -X POST -H 'Content-Type:application/json'
-d '
{
   "jsonrpc": "2.0",
   "method": "user.login",
   "params": {
       "user": "Admin",
       "password": "zabbix"
    },
   "id": 1
}' http://192.168.80.107/api_jsonrpc.php | python
-mjson.tool



显示结果如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[iyunv@client ~]# curl -s -X POST -H
'Content-Type:application/json' -d '
> {
>   
"jsonrpc": "2.0",
>   
"method": "user.login",
>   
"params": {
>        
"user": "Admin",
>        
"password": "zabbix"
>     },
>   
"id": 1
> }' http://192.168.80.107/api_jsonrpc.php |
python -mjson.tool
{
   "id": 1,
   "jsonrpc": "2.0",
   "result": "58512eef345e5ba2f01b474324819db2"
}



  2.获取监控主机(带上session id)
在linux命令行执行如下命令
1
2
3
4
5
6
7
8
9
10
curl -s -X POST -H 'Content-Type:application/json' -d '
{   
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
        "output": ["hostid"]
    },
    "auth": "58512eef345e5ba2f01b474324819db2",
    "id": 2
}' http://192.168.80.107/api_jsonrpc.php | python -mjson.tool



    显示如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[iyunv@client ~]# curl -s -X POST -H 'Content-Type:application/json' -d '
> {
>     "jsonrpc": "2.0",
>     "method": "host.get",
>     "params": {
>         "output": ["hostid"]
>     },
>     "auth": "58512eef345e5ba2f01b474324819db2",            #必须和获取到的session相同
>     "id": 2
> }' http://192.168.80.107/api_jsonrpc.php | python -mjson.tool   #下边为输出
{
    "id": 2,
    "jsonrpc": "2.0",
    "result": [
        {
            "hostid": "10084"
        }
    ]
}



wKioL1hxrwfR6YxzAACRWZB7JkU434.jpg
3.创建主机
    在linux命令行执行如下命令(带上获取的session id)
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
curl -s -X POST -H 'Content-Type:application/json'
-d '
{
   "jsonrpc": "2.0",
   "method": "host.create",
   "params": {
       "host": "Linux server",
       "interfaces": [
            {
               "type": 1,
               "main": 1,
               "useip": 1,
               "ip": "192.168.80.103",
               "dns": "",
               "port": "10050"
            }
        ],
       "groups": [
            {
               "groupid": "8"
            }
        ],
       "templates": [
            {
               "templateid": "10001"
            }
        ]
    },
   "auth": "58512eef345e5ba2f01b474324819db2",
   "id": 1
}' http://192.168.80.107/api_jsonrpc.php | python
-mjson.tool



获取模板的id号
wKiom1hxsGexIZq2AADKadZhqSM660.jpg
另外一种方式
点击模板进去,在网址输入框查看id号,如下图所示
同理可得组等id。
wKioL1hxsKbTKp97AADUM1fw9Cs401.jpg
执行命令的输出
1
2
3
4
5
6
7
8
9
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "hostids": [
            "10111"             #返回的主机id
        ]
    }
}



wKioL1hxsN-w7KXrAAChng-Edo0186.jpg


运维网声明 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-326100-1-1.html 上篇帖子: Grafana-zabbix配置模板 下篇帖子: Zabbix 使用企业微信公众号发送报警短信 监控
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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