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

[经验分享] zabbix安装过程

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-29 08:52:29 | 显示全部楼层 |阅读模式
                      一、概述

Zabbix作为一个商业开源的监控软件,在易用性上相较纯粹的nagios来强的多,近期版本也更新到了3.0。与2.4版本相较,安装的过程多少有些差异,现记录此次安装全过程。同时记录下踩到坑,备忘!
zabbix的安装可分为下面表格中的四大块,
1
2
3
4
zabbix_server    监控主程序
front_end        WEB管理界面
mysql            历史数据存储空间
nginx+php        为web界面提供http server



整个安装包括调试到Zabbix基本功能可用的程序,发现一个万能神器:官方文档+最高级别日志,90%的问题殾能解决。
二、安装全程
本此安装涉及到的软件版本:
1
2
3
4
5
CentOS6.X  64位
zabbix3.0
mysql5.1   
php-5.5.37 (zabbix3.0要求5.4以上的php版本)
nginx-1.8.1



依赖软件库:(只标出有特别需求的)

curl >= 7.20 (这里是一个坑,不在意的话,后面会遇到一堆乱七八糟的问题)(#1)
1.前置依赖安装

1.1使用yum安装下列依赖软件
1
yum install -y gcc make zlib zlib-devel freetype freetype-devel gd-devel gd openssl openssl-devel gzip gzip-devel pcre pcre-devel libjpeg libpng libpng-devel libxml2 libxml2-devel



安装mysql
1
yum install mysql mysql-devel mysql-server




1.2 从源码编译curl,要求版本大于7.2(#1)
1
2
3
4
tar xzf curl-7.50.0.tar.gz
cd curl-7.50.0
./configure --prefix=/usr/local/curl
make && make install



1.3 mysql的初始化

启动mysql
1
2
/etc/init.d/mysqld start
mysqladmin -uroot password '*********'    #设置mysql root初始密码



2.zabbix安装

2.1采用源码编译的方式
作为服务器角色存在的服务器,同时激活agent功能,server本身也需要被监控.(#1)
增加zabbix用户:
1
2
groupadd zabbix
useradd -M -s /sbin/nologin  -g  zabbix  zabbix



编译zabbix,安装过程中提示缺少的库等依赖,使用yum安装即可!
1
2
3
4
5
6
7
tar xzf zabbix-3.0.3.tar.gz
cd zabbix-3.0.3
./configure --enable-server --enable-agent --with-mysql \
--with-net-snmp --with-libcurl=/usr/local/curl/bin/curl-config  \
--with-libxml2  --enable-agent  --with-openssl  \
--prefix=/opt/yingmoo/zabbix
make install



2.2配置zabbix_server

修改/opt/yingmoo/zabbix/etc/zabbix_server.conf文件,找到下面各项,去掉它们的注释,并改为下面的值。
1
2
3
4
5
6
7
8
9
ListenPort=10051
LogFile=/var/log/zabbix_server.log
DebugLevel=4
DBHost=192.168.1.198
DBName=zabbix
DBUser=zabbix
DBPassword=************(#2)
ListenIP=192.168.1.198
AlertScriptsPath=/opt/yingmoo/zabbix/share/zabbix/alertscripts



2.3编写一个简单的zabbix的启动脚本zabbix.sh

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
#!/bin/bash
daemon="/opt/yingmoo/zabbix/sbin/zabbix_server"
config="/opt/yingmoo/zabbix/etc/zabbix_server.conf"
pidfile="/tmp/zabbix_server.pid"
start() {
        if [ -f $pidfile ];then
                echo "zabbix is already running!"
                exit 1
        else
                echo " Starting zabbix_server...."
                sudo -u monitor $daemon -c $config
        fi
}
stop() {
        echo "stop zabbix_server"
        PID=`cat $pidfile`
        kill $PID
}
case "$1" in
        start)
        start
        ;;
        stop)
        stop
        ;;
        *)
        ''
esac



2.4导入zabbix数据源文件

在数据库这块踩了个坑,使用了最新的mysql5.7,因为不熟悉所以导致后边zabbix的调试过程中出现不同的问题,都是因为max_allowed_packet = 128M 这个值配置不太合适导致,数据写不到库,报警数据读不到,延迟较大等问题。文档最后会把这部分mysql的日志贴出来。
数据库的操作这里直接引用官方文档的内容
1
2
3
4
5
6
7
8
shell> mysql -uroot -p<password>
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '<password>'; (#2)
mysql> quit;
shell> cd zabbix-3.0.3/database/mysql  #zabbix源码中的数据库文件
shell> mysql -uzabbix -p<password> zabbix < schema.sql   #3个脚本导入的顺序不可乱
shell> mysql -uzabbix -p<password> zabbix < images.sql
shell> mysql -uzabbix -p<password> zabbix < data.sql



2.5 验证zabbix是否正常安装

1
2
sh zabbix.sh start
netstat -tlnp | grep 10051



10051端口存在,则zabbix服务端安装成功
注:至此zabbix的安装暂告一段落,在配置web服务后再继续zabbix的配置。
3.实现web环境

zabbix的WEB界面需要php的支持,zabbix的内容管理和配置都是通过WEB界面来进行的,下面配置nginx+php的WEB环境。官方文档中使用的是apache,此处更换为nginx。
3.1编译nginx
相对其他组件,整个系统对nginx没有特别的要求,为求快捷也可以考虑使用yum安装,对zabbix的安装不会有什么影响。
#yum install -y nginx
源码安装:
1
2
3
4
tar xzf nginx-1.8.1.tar.gz
./configure --prefix=/opt/yingmoo/nginx
make
make install



nginx的启动脚本这里就不再展示了,网上有很多,或者可以采用直接yum安装的脚本再根据自己的需要修改。
install完成后,启动nginx测试nginx功能是否正常:
1
2
3
/opt/yingmoo/nginx/sbin/nginx -t    #检查配置文件是否可用
/opt/yingmoo/nginx/sbin/nginx      #启动nginx进程
netstat -tlnp  | grep 80        #验证80端口是否启动



出现80端口,证明nginx安装完成且功能正常。(相关配置放到后面跟php一起展示)

3.2编译 php

1
2
3
4
5
6
7
8
9
10
11
12
tar xjf php-5.5.37.tar.bz2
cd php-5.5.37
./configure --prefix=/opt/yingmoo/php --with-config-file-path=/opt/yingmoo/php/etc  \
--with-mysql --with-mysqli --with-pdo-mysql \
--with-gd --enable-gd-native-ttf --with-iconv-dir=/opt/yingmoo/php/libs\
--with-freetype-dir=/opt/yingmoo/php/libs --with-jpeg-dir=/opt/yingmoo/php/libs \
--with-png-dir=/opt/yingmoo/php/libs  --with-libxml-dir=/opt/yingmoo/php/libs --enable-xml  \
--enable-bcmath --with-gettext   --with-curl --enable-fpm --enable-mbstring \
--with-openssl  --enable-sockets --with-xmlrpc --enable-zip  --enable-opcache \
--with-zlib  --enable-dom
make
make install



把php的可执行文件路径加入到系统变量中

#echo "export PATH=$PATH:/opt/yingmoo/php/bin" >> /etc/profile  && source /etc/profile
执行php -v 显示php当前版本,则php正常。
3.3nginx+fastcgi+php的配置
nginx配置:
在nginx.conf中加入以下配置,其他nginx配置省略不显示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server {
        listen       192.168.1.198:80;
        server_name  zabbix.yingmoo.net;
        root /home/httpd/zabbix;
        #charset koi8-r;
        index index.php index.html;
        #access_log  logs/host.access.log  main;
        location / {
            try_files $uri $uri/ /index.php?$args;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~ ^(.+.php)(.*)$  {
            fastcgi_split_path_info ^(.+.php)(.*)$;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param PATH_INFO  $fastcgi_path_info;
#            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
#            include        fastcgi_params;
            include fastcgi.conf;
        }
}



配置php/fpm
fpm使用默认的配置文件即可!但zabbix对php有一些特殊的需求,修改/opt/yingmoo/php/etc/php.ini文件,找到下面的项目并修改成下面的值:
1
2
3
4
5
6
7
max_execution_time= 300
memory_limit =128M
post_max_size =16M
upload_max_filesize =2M
max_input_time= 300
always_populate_raw_post_data =-1
date.timezone=Asia/ShangHai



3.4测试
启动nginx、php-fpm :
1
echo "<? phpinfo() ?>" > /home/httpd/zabbix/info.php



访问http://192.168.1.198/info.php,能正常显示php的信息则php环境成功!

4.配置zabbix-frontend
在zabbix的源码文件中找到frontend文件夹,将下面的php复制到设置好的web根目录下
1
2
cd zabbix-3.0.3
cp -a frontends/php/   /home/httpd/zabbix



重启nginx和fpm,在浏览器中访问http://192.168.1.198/  
出现下面界面则以上所有安装成功,可根据提示直接进入zabbix配置过程。(文档是安装后写的,过程中没有截图,此处借用官方文档中的原图。
《《图片可参考官方文档》》

5.zabbix_agent的安装配置
5.1 使用yum安装
相对于源码编译来说,yum安装,更方便一些,特别是对来客户端来说,与源码安装并无太多区别。
但在centos官方的yum源中并没有zabbix的包,需要先安装zabbix官方的yum源。对于agent来说,推荐使用yum来安装,除非在特殊需求的情况下。
1
2
rpm -ivh  zabbix-release-3.0-1.el6.noarch.rpm
yum install  -y zabbix-agent



5.2 源码安装agent
对于单agent来说,编译参数要简单的多:其他的跟server端是一样的。此次安装客户端都采用是yum,这部分文档引用官方文档原文。
1
2
3
4
tar -zxvf zabbix-3.0.0.tar.gz
cd zabbix-3.0.3
./configure --enable-agent
make install



5.3 配置agent
找到/etc/zabbix/zabbix_agentd.conf文件,修改下面几项内容。
1
2
3
Server=192.168.1.198
Hostname=192.168.1.100  #在zabbix系统里添加主机时,主机名与这个值要求一致,否则日志中会报错
ServerActive=192.168.1.198



三、zabbix监控的使用
不使用zabbix的邮件报警,这里通过外部脚本发送邮件。同时通过外部脚本,可以实现短信、微信或者其他方式的报警媒介。
1.增加报警媒介
1.1进入zabbix管理界面,进入“管理“”报警媒介类型“,选择创建媒体类型:
QQ截图20160729085134.png
脚本参数是自zabbix3.0起才支持的选项。
1.2 进入用户中心(用户基本资料)报警媒介,添加报警媒介
QQ截图20160729085140.png

点击添加,通过脚本报警配置完成。
2.编写脚本
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
#!/usr/bin/python
#for zabbix
#-*- coding:utf-8 -*-
import time
import sys
import smtplib  
from email.Header import Header
from email import encoders
from email.mime.text import MIMEText
from email.MIMEMultipart import MIMEMultipart
from email.utils import parseaddr, formataddr
#define mailbox used for send mails
mail_host="smtp.qiye.163.com"
mail_from="    "
mail_user="    "
mail_pass="*************"
#define function
def send_mail(mailto,subject,body):
    msg=MIMEMultipart()
    msg['subject']=subject
    msg['from']=mail_from
    msg['to']=mail_to
    msg['date']=time.ctime()
    txt=MIMEText(body,'plain','utf-8')
    msg.attach(txt)
    s=smtplib.SMTP(mail_host,25)
    s.set_debuglevel(0)
    s.ehlo()
    s.starttls()
    s.ehlo()
    s.login(mail_user,mail_pass)
    s.sendmail(mail_from,mail_to,msg.as_string())
    s.close()
#main function
if __name__=='__main__':
#get three argv from scripts
    mail_to=sys.argv[1]
    subject=sys.argv[2]
    body=sys.argv[3]
    send_mail(mail_to,subject,body)     
    sys.exit()




四、安装过程中遇到的问题

Problem 1:
Mysql配置不合适导致的问题
现象:客户端可达,图形没有数据,不出图,mysql报以下错误:
Aborted connection 9 to db: 'zabbix' user: 'zabbix' host: 'nosql.yingmoo.com' (Got an error reading communication packets)
解决:修改max_allowed_packet = 128配置后解决
最开始使用了mysql5.7,因为配置的问题导致各种问题,包括在后面配置邮件报警的时候,邮件发送不及时,同时数据库的日志还一直在报错。最后干脆把mysql的版本换回了5.1,同时修改了上面的配置,然后一切正常。
Problem 2:

Php在安装时候编译参数不完全,特别是下面几个参数。
1
2
3
4
--with-iconv-dir=/opt/yingmoo/php/libs
--with-freetype-dir=/opt/yingmoo/php/libs
--with-jpeg-dir=/opt/yingmoo/php/libs
--with-png-dir=/opt/yingmoo/php/libs



如果在编译时缺少,即使增加了--with-gd依然会出现下图红圈中选项不支持的情况。
QQ截图20160729085145.png

另外如果,系统中不加入php的系统变量,则在修改3.3中php的参数时,是不会生效的!!!

Problem 3:
邮件报警,需要在zabbix编译的时候加入—with-openssl参数,否则会出现
13662:20160726:180213.098 Support for SMTP authentication was not compiled in  ---这个问题。

Problem 4:
脚本路径的问题:
QQ截图20160729085150.png

这里只填脚本的名称,而不是绝对路径,在调用时zabbix会到{datadir}/zabbix/alertscripts这个路径下去查找,这部分由配置文件中的AlertScriptsPath 选项决定!这部分需要特别注意。在配置时在这踩了个坑,耽误了不短时间!

                   


运维网声明 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-250903-1-1.html 上篇帖子: zabbix 3.0.3 邮件报警 下篇帖子: zabbix 客户端 监控nginx_status
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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