CentOS源码编译安装Zabbix

源码包下载

zlib :

http://www.zlib.net/fossils/zlib-1.2.8.tar.gz

pcre: 

https://ftp.pcre.org/pub/pcre/pcre-8.39.tar.gz

boost:

https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

nginx:

http://nginx.org/download/nginx-1.10.2.tar.gz

mysql:

http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.17.tar.gz

libmcrypt:

ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz

php:

http://ftp.ntu.edu.tw/php/distributions/php-5.6.27.tar.gz

fping:

http://fping.org/dist/fping-3.12.tar.gz

zabbix:

https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.10/zabbix-3.4.10.tar.gz

zabbix简介:

zabbix重要组件说明:

1)zabbix server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据都由它组织进行;

2)database storage:专用于存储所有配置信息,以及由zabbix收集的数据;

3)web interface:zabbix的GUI接口;

4)proxy:可选组件,常用于监控节点很多的分布式环境中,代理server收集部分数据转发到server,可以减轻server的压力;

5)agent:部署在被监控的主机上,负责收集主机本地数据如cpu、内存、数据库等数据发往server端或proxy端;

另外,zabbix server、proxy、agent都有自己的配置文件以及log文件,重要的参数需要在这里配置,后面会详细说明。

一个监控系统运行的大概的流程是这样的:

agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agentd收集数据分为主动和被动两种模式:

主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy

被动:server向agent请求获取监控项的数据,agent返回数据。

zabbix常用的监控架构平台

1、server-agentd模式:

这个是最简单的架构了,常用于监控主机比较少的情况下。

2、server-proxy-agentd模式:

这个常用于比较多的机器,使用proxy进行分布式监控,有效的减轻server端的压力。

查看系统版本:

[root@admin ~]# cat /etc/redhat-release 
CentOS release 6.7 (Final)

安装编译工具及库文件

yum -y install make apr* autoconf automake curl-devel gcc gcc-c++  openssl openssl-devel gd kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* freetype libjpeg* libpng*  libtool* libxml2 libxml2-devel patch libcurl-devel bzip2-devel freetype-devel cmake bison ncurses ncurses-devel

Mysql安装

shell> tar -zxvf boost_1_59_0.tar.gz -C /usr/local/

添加用户

shell> groupadd mysql #添加mysql用户组

shell> useradd -r -g mysql -s /bin/false mysql #添加mysql用户

解压软件包:

shell> tar -xf mysql-5.7.17.tar.gz

删除已安装数据库

shell> rpm -qa|grep mysql

创建目录

shell> mkdir /usr/local/mysql

shell> mkdir /usr/local/mysql/data

shell> chown -R mysql.mysql /usr/local/mysql/

配置mysql预编译参数

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/data/ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost_1_59_0

·      -DCMAKE_INSTALL_PREFIX:安装路径

·      -DMYSQL_DATADIR:数据存放目录

·      -DWITH_BOOST:boost源码路径

·      -DSYSCONFDIR:my.cnf配置文件目录

·      -DEFAULT_CHARSET:数据库默认字符编码

·      -DDEFAULT_COLLATION:默认排序规则

·      -DENABLED_LOCAL_INFILE:允许从本文件导入数据

·      -DEXTRA_CHARSETS:安装所有字符集

编译安装:

shell> make -j `grep processor /proc/cpuinfo | wc -l` && make install

-j参数表示根据CPU核数指定编译时的线程数,可以加快编译速度。默认为1个线程编译,经测试单核CPU,1G的内存,编译完需要将近1个小时

初始化系统数据库

shell> cd /usr/local/mysql/

shell> cd bin/

./mysqld --initialize --user=mysql --datadir=/usr/local/data/ --basedir=/usr/local/mysql --socket=/tmp/mysql.sock

如果使用–initialize参数初始化系统数据库之后,会在~/.mysql_secret文件中生成root用户的一个临时密码,同时也在初始化日志中打印出来了,如下图红圈中所示:

shell> ./mysql_ssl_rsa_setup

shell> chown -R root .

shell> chown -R mysql data

复制并修改mysql配置文件

shell> cp support-files/my-default.cnf /etc/my.cnf

shell> vim /etc/my.cnf

[mysqld]

port=3306

basedir=/usr/local/mysql

datadir=/usr/local/data

socket=/tmp/mysql.sock

user=mysql

配置mysql服务

shell> cd support-files/

shell> cp -a mysql.server /etc/init.d/mysqld

shell> chkconfig --add mysqld# 添加到系统服务

shell> chkconfig mysqld on # 开机启动

shell> service mysqld start

shell> service mysqld stop

shell> service mysqld restart

修改数据库密码:

shell> cd bin/


安装Nginx

解压zlib

[root@Admin ~]# tar zxf zlib-1.2.8.tar.gz

说明:不需要编译,只需要解压就行。

解压pcre

[root@Admin ~]# tar zxf pcre-8.39.tar.gz 

[root@Admin ~]# groupadd www

[root@Admin ~]# useradd -g www www -s /sbin/nologin

解压源码包:

[root@Admin ~]# tar zxf nginx-1.10.2.tar.gz 

[root@Admin nginx-1.10.2]# cd nginx-1.10.2/

./configure --prefix=/usr/local/nginx1.10 --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module  --with-http_flv_module --with-http_mp4_module --with-pcre=/root/pcre-8.39 --with-zlib=/root/zlib-1.2.8 --with-http_ssl_module --with-http_gzip_static_module --user=www --group=www && make && make install

[root@Admin nginx-1.10.2]# ln -s /usr/local/nginx1.10/sbin/nginx /usr/local/sbin/

[root@Admin nginx-1.10.2]# nginx

[root@Admin nginx-1.10.2]# netstat -antp | grep nginx

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      99063/nginx: master

安装php

[root@Admin ~]# tar zxf libmcrypt-2.5.7.tar.gz

 [root@Admin ~]# cd libmcrypt-2.5.7/

[root@Admin libmcrypt-2.5.7]# ./configure && make && make install

[root@Admin libmcrypt-2.5.7]# cd

[root@Admin ~]# tar zxf php-5.6.27.tar.gz
编译PHP

[root@Admin ~]# cd php-5.6.27/

./configure --prefix=/usr/local/php5.6 --with-config-file-path=/etc  --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-gd --with-iconv --with-libxml-dir=/usr --with-mhash --with-mcrypt --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-zlib --with-freetype-dir --with-png-dir --with-jpeg-dir --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl && make && make install

[root@Admin php-5.6.27]# cp php.ini-production /etc/php.ini

编辑配置文件/etc/php.ini ,修改后的内容如下:

找到:;date.timezone = 修改为:date.timezone = Asia/Shanghai #设置时区

找到:expose_php = On 修改为:expose_php = Off #禁止显示php版本的信息

找到:short_open_tag = Off 修改为:short_open_tag = On //支持php短标签

找到:post_max_size = 8M修改为:post_max_size = 16M  //上传文件大小

找到:max_execution_time = 30修改为:max_execution_time = 300  //php脚本最大执行时间

找到:max_input_time = 60修改为:max_input_time = 300  //以秒为单位对通过POST、GET以及PUT方式接收数据时间进行限制

找到:;always_populate_raw_post_data = -1修改为:always_populate_raw_post_data = -1

找到:;mbstring.func_overload = 0修改为:mbstring.func_overload= 0

创建php-fpm服务启动脚本:

[root@Admin php-5.6.27]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

[root@Admin php-5.6.27]# chmod +x /etc/init.d/php-fpm

 [root@Admin php-5.6.27]# chkconfig --add php-fpm

[root@Admin php-5.6.27]# chkconfig php-fpm on

提供php-fpm配置文件并编辑:

[root@Admin php-5.6.27]# cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf

[root@Admin php-5.6.27]# vi /usr/local/php5.6/etc/php-fpm.conf

修改内容如下:

pid = run/phpfpm.pid

user = www

group = www

listen =127.0.0.1:9000

pm.max_children = 300

pm.start_servers = 10

pm.min_spare_servers = 10

pm.max_spare_servers =50

启动php-fpm服务:

[root@Admin php-5.6.27]# service php-fpm start

Starting php-fpm  done

[root@Admin php-5.6.27]# netstat -anpt | grep php-fpm

tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      110892/php-fpm: mas 

配置nginx支持php

[root@Admin php 5.6.27]# cat /usr/local/nginx1.10/conf/nginx.conf

user  www www;
worker_processes  4;
error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
use epoll;
    worker_connections  1024;
}
http {
include       mime.types;
    default_type  application/octet-stream;
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
 #                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';


    #access_log  logs/access.log  main;
sendfile        on;
 #tcp_nopush     on;
 #keepalive_timeout  0;
keepalive_timeout  65;
    #gzip  on;
server {
listen       80;
        server_name  localhost;
        charset utf-8;
                #access_log  logs/host.access.log  main;
location / {
root   html;
index  index.php index.html index.htm;
        }
        location ~ \.php$ { 
        root html; 
                    fastcgi_pass 127.0.0.1:9000; 
                                fastcgi_index index.php; 
                                include fastcgi.conf; 
                                        }
                                                #error_page  404              /404.html;
                                                        # redirect server error pages to the static page /50x.html
                                                                #
                                                                        error_page   500 502 503 504  /50x.html;
                                                                        location = /50x.html {
                                                                        root   html;
                                                                                }
                                                                                location /status {
                                                                                stub_status on;
                                                                                        }
                                                                                           }
                                                                                           }

[root@Admin php-5.6.27]# nginx -t

nginx: the configuration file /usr/local/nginx1.10/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx1.10/conf/nginx.conf test is successful

[root@Admin php-5.6.27]# killall -s HUP nginx

至此,LNMP部署完毕。

安装zabbix

admin端的操作

zabbix服务器端要提前安装好LNMP环境(mysql,nginx,php5的安装目录均是/usr/local)

创建Zabbix运行的用户:

[root@Admin ~]# groupadd zabbix

[root@Admin ~]# useradd -g zabbix zabbix

安装libcurl和net-snmp:

yum -y install net-snmp net-snmp-devel curl-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel OpenIPMI-devel libssh2-devel pcre* libevent-devel

注:OpenIPMI-devel 和libssh2-devel软件包使用centos在线yum软件源安装

安装Fping:

[root@Admin ~]# tar zxf fping-3.12.tar.gz 

[root@Admin ~]# cd fping-3.12/

[root@Admin fping-3.12]# ./configure && make && make install

[root@Admin fping-3.12]# chown root:zabbix /usr/local/sbin/fping 

[root@Admin fping-3.12]# chmod 4710 /usr/local/sbin/fping 

安装Zabbix Server:

[root@Admin fping-3.12]# cd

[root@Admin ~]# tar -xf zabbix-3.4.10.tar.gz

[root@Admin ~]# cd zabbix-3.4.10/

./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-openipmi

注意:编译时最好带上--enable-java这个参数,方便后续监控tomcat程序所用。--with-ssh2 是不需要在客户端服务器上面安装Zabbix agent,如果需要使用ssh检查,需要在编译的时候加上这项,最低需要libssh2 1.0.0版本,需要安装ssh开发包--with-openipmi用户可以利用 IPMI 监视服务器的物理特征,如温度、电压、电扇工作状态、电源供应等。如果添加了--enable-proxy, 那么会生成get和sender两条命令. 如下, 用于接收agent发生过来的信息, 同时发送给server.

[root@Admin zabbix-3.4.10]# make && make install

添加系统软连接

[root@Admin zabbix-3.4.10]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/

[root@Admin zabbix-3.4.10]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/

ZabbixServer配置与启动创建Zabbix数据库和MySQL用户:

mysql> create database zabbix character set utf8;

Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';

Query OK, 0 rows affected, 1 warning (0.00 sec)

导入Zabbix初始数据:切换到zabbix的解压目录下

[root@Admin zabbix-3.4.10]# cd database/mysql/

[root@Admin mysql]# pwd/root/zabbix-3.4.10/database/mysql

[root@Admin mysql]# lsdata.sql  images.sql  schema.sql

[root@Admin mysql]# mysql -uzabbix -pzabbix -hlocalhost zabbix < schema.sql 

mysql: [Warning] Using a password on the command line interface can be insecure.

[root@Admin mysql]# mysql -uzabbix -pzabbix -hlocalhost zabbix < images.sql

mysql: [Warning] Using a password on the command line interface can be insecure.

[root@Admin mysql]#  mysql -uzabbix -pzabbix -hlocalhost zabbix < data.sql

mysql: [Warning] Using a password on the command line interface can be insecure.

编辑/usr/local/zabbix/etc/zabbix_server.conf:

[root@Admin mysql]# grep -v "^#" /usr/local/zabbix/etc/zabbix_server.conf | grep -v "^$"

LogFile=/usr/local/zabbix/logs/zabbix_server.log

PidFile=/usr/local/zabbix/logs/zabbix_server.pid

DBHost=localhost

DBName=zabbix

DBUser=zabbix

DBPassword=zabbix

DBPort=3306F

pingLocation=/usr/local/sbin/fping

[root@Admin mysql]# mkdir -p /usr/local/zabbix/logs

[root@Admin mysql]# chown -R zabbix:zabbix /usr/local/zabbix/

启动Zabbix Server:

[root@Admin mysql]# /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf

/usr/local/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

解决方法:

在ld.so.conf中加入/usr/local/mysql/lib

[root@Admin mysql]# find / -name libmysqlclient.so.20

/root/mysql-5.7.13/libmysql/libmysqlclient.so.20

/usr/local/mysql/lib/libmysqlclient.so.20

[root@Admin mysql]# vi /etc/ld.so.conf

[root@Admin mysql]# cat /etc/ld.so.confi

nclude ld.so.conf.d/*.conf

/root/mysql-5.7.13/libmysql/

/usr/local/mysql/lib/

加载/etc/ld.so.conf文件生效并再次启动zabbix_server

[root@Admin mysql]# ldconfig

 [root@Admin mysql]# /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf

[root@Admin mysql]# netstat -anpt | grep zabbix_server

tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      15820/zabbix_server 

添加开机启动脚本

[root@Admin ~]# cd zabbix-3.4.10/

[root@Admin zabbix-3.4.10]# cp misc/init.d/fedora/core/zabbix_server /etc/rc.d/init.d/zabbix-server

[root@Admin zabbix-3.4.10]# cp misc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/zabbix-agent

[root@Admin zabbix-3.4.10]# chmod +x /etc/rc.d/init.d/zabbix-server

[root@Admin zabbix-3.4.10]# chmod +x /etc/rc.d/init.d/zabbix-agent

[root@Admin zabbix-3.4.10]# chkconfig --add zabbix-server

[root@Admin zabbix-3.4.10]# chkconfig --add zabbix-agent

[root@Admin zabbix-3.4.10]# chkconfig zabbix-server on

[root@Admin zabbix-3.4.10]# chkconfig zabbix-agent on

修改zabbix开机启动脚本中的zabbix安装目录

[root@Admin zabbix-3.4.10]# vi /etc/rc.d/init.d/zabbix-server #编辑服务端配置文件

BASEDIR=/usr/local/zabbix/ #zabbix安装目录

PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid    #pid文件路径

:wq! #保存退出

[root@Admin zabbix-3.4.10]# vi /etc/rc.d/init.d/zabbix-agent #编辑客户端配置文件

BASEDIR=/usr/local/zabbix/ 

#zabbix安装目录PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid  #pid文件路径

:wq! #保存退出

[root@Admin zabbix-3.4.10]# /etc/init.d/zabbix-server stop

Stopping zabbix_server                   [  OK  ]

[root@Admin zabbix-3.4.10]# netstat -antp | grep zabbix

[root@Admin zabbix-3.4.10]# /etc/init.d/zabbix-server start

Starting zabbix_server [  OK  ]

[root@Admin zabbix-3.4.10]# netstat -antp | grep zabbix

tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      17223/zabbix_server

配置zabbix web页面在安装目录将frontends拷贝到指定的web root:

[root@Admin zabbix-3.4.10]# pwd/root/zabbix-3.4.10

[root@Admin zabbix-3.4.10]# cp -r frontends/php/ /usr/local/nginx1.10/html/zabbix

[root@Admin zabbix-3.4.10]# chown -R www:www /usr/local/nginx1.10/html/zabbix/

注:/usr/local/nginx/html为Nginx默认站点目录 www为Nginx运行账户注:PHP需要至少开启扩展:

gd,bcmath,ctype,libXML,xmlreader,xmlwriter,session,sockets,mbstring,gettext,mysql

如下,查看是否包括了上面所提到的扩展模块

[root@Admin zabbix-3.4.10]# /usr/local/php5.6/bin/php -m

[PHP Modules]

bcmath bz2 Core ctype curl date dom ereg fileinfo filter ftp gd gettext hash iconvjson libxml mbstring mcrypt mhash mysql mysqli openssl pcntl pcrePDO pdo_sqlite Phar posix Reflection session shmop SimpleXML soap socketsSPL sqlite3 standard sysvsem tokenizer xml xmlreader xmlrpc xmlwriter zip zlib

[Zend Modules]

安装web

访问Web界面http://localhost/zabbix,进行相关web配置,配置完成后使用默认用户admin(密码:zabbix)登陆即可









解决zabbix绘图中出现中文乱码问题:

a.从windows下控制面板->字体->选择一种中文字库例如“楷体”

并且将之前的字体文件DejaVuSans.ttf移动到别处

c.然后,接着修改代码include/defines.inc.php文件中的字体配置,将里面关于字体设置从DejaVuSans替换成simkai  

vi替换技巧:%s/DejaVuSans/simkai

其中:simkai为字库名字,不包含ttf后缀

[root@Admin fonts]# cd /usr/local/nginx1.10/html/zabbix/

[root@Admin zabbix]# vi include/defines.inc.php 

在vi编辑器的末行模式下输入%s/DejaVuSans/simkai

这样,修改后,zabbix监控图形中的中文字就不会出现乱码了

zabbix客户端的安装

既然要监控我们就要添加要监控的主机,在添加主机之前我们首先要在被检测主机上面安装agent,安装agent比较简单,我们也是按照安装server的流程,下载软件包,在编译的时候,我们只选择agent

10.10.10.50作为zabbix的被监控端,提供web和mysql应用

安装Zabbix,配置Zabbix agent:

[root@Admin ~]#tar zxf zabbix-3.4.10.tar.gz

[root@Admin ~]# cd zabbix-3.4.10/

[root@Admin zabbix-3.4.10]# ./configure --prefix=/usr/local/zabbix --enable-agent && make && make install

[root@Admin zabbix-3.4.10]# cp misc/init.d/fedora/core/admind /etc/init.d/

[root@Admin zabbix-3.4.10]# mkdir -p /usr/local/zabbix/logs

[root@Admin zabbix-3.4.10]# groupadd zabbix

[root@Admin zabbix-3.4.10]# useradd -g zabbix zabbix

[root@Admin zabbix-3.4.10]# chown -R zabbix:zabbix /usr/local/zabbix/

配置开机自动启动:

[root@Admin zabbix-3.4.10]# chkconfig --add admin

[root@Admin zabbix-3.4.10]# chkconfig admind on

修改zabbix开机启动脚本中的zabbix安装目录

vi /etc/rc.d/init.d/admin 

#编辑客户端配置文件

BASEDIR=/usr/local/zabbix/ #zabbix

安装目录

PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid  

#pid文件路径

:wq! #保存退出

编辑zabbix_agentd.conf

[root@Admin zabbix-3.4.10]# vi /usr/local/zabbix/etc/zabbix_agentd.conf

内容如下:

[root@Admin zabbix-3.4.10]#grep -v "^#" /usr/local/zabbix/etc/zabbix_agentd.conf | grep -v "^$"

PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid

LogFile=/usr/local/zabbix/logs/zabbix_agentd.log

Server=10.10.10.50

ListenPort=10050ServerActive=192.168.0.103

Hostname=10.10.10.50

Timeout=15

Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/

其中Server和ServerActive都指定zabbixserver的IP地址,不同的是,前者是被动后者是主动。也就是说Server这个配置是用来允许110.10.10.50这个ip来我这取数据。而serverActive的10.10.10.50的意思是,客户端主动提交数据给他。

Hostname=XXX,这个定义的名字必须和web页面里面host的名字一样

启动zabbix_agent:

[root@Admin zabbix-3.4.10]# /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf

[root@Admin zabbix-3.4.10]# netstat -anpt | grep zabbix_agent

tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      18142/zabbix_agent

 

 

猜你喜欢

转载自blog.csdn.net/abel_dwh/article/details/80681891