CentOS下Zabbix Server部署记录

简介

Zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

Zabbix由2部分构成,zabbix server与可选组件zabbix agent。Zabbix server可以通过SNMP、zabbix agent、ping、端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能。

zabbix-server:提供zabbix-server服务
zabbix-proxy:提供zabbix的代理服务,可以实现分布式监控,减轻zabbix-server的压力
zabbix-web:提供httpd服务
zabbix-get:提供检查是否能正确获取到zabbix的监控脚本key的监控值
zabbix-agent:提供zabbix-agent服务

https://sourceforge.net/projects/zabbix/files/
https://www.zabbix.com/download_sources

安装依赖

# yum install fping unixODBC OpenIPMI-libs net-snmp net-snmp-devel

net-snmp

yum install net-snmp-devel失败,则考虑手动安装net-snmp

官网:http://www.net-snmp.org
下载:http://www.net-snmp.org/download.html
安装:http://www.net-snmp.org/docs/INSTALL.html

# yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
# tar -zxf net-snmp-5.8.tar.gz 
# cd net-snmp-5.8/
# ./configure --prefix=/usr/local/net-snmp
# make & make install

编译安装

# tar -zxf zabbix-4.2.5.tar.gz 
# cd zabbix-4.2.5/
# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --enable-java  //当rpm或yum安装依赖时,MySQL实际上只需要安装mysql-devel
# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --enable-ipv6 --with-net-snmp=/usr/local/net-snmp/bin/net-snmp-config --with-libcurl=/usr/local/curl/bin/curl-config --with-libxml2=/usr/local/libxml2/bin/xml2-config --with-libevent=/usr/local/libevent/ --enable-java

***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*              <http://www.zabbix.com>                    *
***********************************************************

# make
# make install
  • --prefix 指定zabbix安装目录
  • --enable-server 支持zabbix服务器
  • --enable-agent 支持zabbix代理
  • --enable-proxy 支持zabbix代理服务器
  • --with-mysql 使用MySQL客户端库可以选择指定路径mysql_config
  • --with-net-snmp 使用net-snmp软件包,择性地指定路径NET-SNMP配置
  • --with-libcurl 使用curl包

添加库搜索路径

# vim /etc/ld.so.conf.d/local.conf
# ldconfig
/usr/local/lib64
/usr/local/lib
/usr/lib64
/usr/lib
/usr/local/zlib/lib
/usr/local/libzip/lib
/usr/local/libgd/lib
/usr/local/libevent/lib
/usr/local/libmcrypt/lib
/usr/local/freetype/lib
/usr/local/mysql/lib
/usr/local/net-snmp/lib

测试Zabbix

# /usr/local/zabbix/sbin/zabbix_server --version
zabbix_server (Zabbix) 4.2.5
Revision 2c0e4d1d39 29 July 2019, compilation time: Aug  1 2019 10:42:15

Copyright (C) 2019 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.

创建zabbix数据库

# mysql -uroot -hlocalhost
> create user 'zabbix'@'localhost' identified by 'zabbix@2019';
> alter user 'zabbix'@'localhost' identified with mysql_native_password by 'zabbix@2019';  //MySQL 8默认使用新的密码验证插件:caching_sha2_password,早期的PHP版本中所带的mysqlnd无法支持这种验证
> create database zabbix character set utf8;
> grant all privileges on `zabbix`.* to 'zabbix'@'localhost';
> flush privileges;

顺序导入zabbix数据  

cd zabbix-4.2.5/
mysql -uzabbix -pzabbix@2019 -h localhost zabbix < database/mysql/schema.sql
mysql -uzabbix -pzabbix@2019 -h localhost zabbix < database/mysql/images.sql
mysql -uzabbix -pzabbix@2019 -h localhost zabbix < database/mysql/data.sql

修改php.ini

vim /usr/local/php/etc/php.ini

zabbix要求php下列参数为以下值

post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Shanghai
always_populate_raw_post_data = -1

拷贝zabbix前端文件至nginx站点目录

# groupadd www
# useradd -g www -M -s /bin/nologin www
# mkdir /data/www
# mkdir /data/www/zabbix
# cp -R zabbix-4.2.5/frontends/php/* /data/www/zabbix/
# chown www:www /data/www -R
# mkdir /data/www/logs
# chmod 777 -R /data/www/logs/

修改nginx配置nginx.conf

# vim /usr/local/nginx/conf/nginx.conf
user  www;
worker_processes  2;  #指定要开启的进程数,每进程占用10M~12M的内存,建议和CPU的核心数量一样多即可
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
#events用来指定Nginx工作模式以及连接数上限
events {
    use epoll;  #使用epoll高效模式,适用于Linux,Unix使用kqueue
    worker_connections  100000;  #定义Ningx没个进程最大的连接数。默认为1024,受到文件句柄的约束
}
worker_rlimit_nofile 100000;  #打开的文件句柄数量最高为10万

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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;  #客户端请求头部的缓冲区大小,一般一个请求头的大小不会超过1k
    large_client_header_buffers 4 32k;  #客户请求头缓冲大小 nginx默认会用client_header_buffer_size这个buffer来读取header值
    client_max_body_size 8m;  #设定通过nginx上传文件的大小

    gzip              on; #该指令用于开启或关闭gzip模块(on/off)
    gzip_min_length   1k; #设置允许压缩的页面最小字节数,页面字节数从header头得content-length中进行获取
    gzip_buffers      4 16k; #设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流
    gzip_http_version 1.0; #识别http的协议版本
    gzip_comp_level   2; #gzip压缩比,1压缩比最小处理速度最快
    gzip_types        application/javascript text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; #匹配mime类型进行压缩,无论是否指定,”text/html”类型总是会被压缩的
    gzip_vary         on; #和http头有关系,加个vary头,给代理服务器用的

    charset      utf-8;  #字符集为utf-8
    access_log    on;    #日常日志开启
    log_not_found on;    #日常日志开启

    #fastcgi_temp_path  /etc/nginx/tmp;    
    #fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=MYAPP:100m inactive=60m;
    #fastcgi_cache_key  "request_method request_uri";

    fastcgi_connect_timeout 300; #指定连接到后端FastCGI的超时时间。
    fastcgi_send_timeout 300; #向FastCGI传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI传送请求的超时时间。
    fastcgi_read_timeout 300; #接收FastCGI应答的超时时间,这个值是指已经完成两次握手后接收FastCGI应答的超时时间。
    fastcgi_buffer_size 254k; #指定读取FastCGI应答第一部分需要用多大的缓冲区
    fastcgi_buffers 16 256k; #指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答。
    fastcgi_busy_buffers_size 512k; #这个指令我也不知道是做什么用,只知道默认值是fastcgi_buffers的两倍。
    fastcgi_temp_file_write_size 512k; #在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi_buffers的两倍。

    server {
        listen       88;
        server_name  localhost;
        index index.html index.htm index.php;
        root /data/www/zabbix;
        server_name_in_redirect off;

        location ~ .+\.php($|/)
        {
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
            include       fastcgi.conf;

            fastcgi_split_path_info  ^(.+\.php)(/.*)$;
            fastcgi_param  PATH_INFO $fastcgi_path_info;

            client_max_body_size  5m;
        }
        error_log /data/www/logs/zabbix-error.log;
        access_log /data/www/logs/zabbix-access.log;
    }
}

登陆web进行zabbix配置

浏览器url:192.168.16.30:88/setup.php

zabbix配置包括:必要条件检测、配置DB连接、zabbix服务器详细信息、安装前汇总、安装

服务端口:10051
默认用户名及密码:admin/zabbix

修改zabbix配置

(1)Zabbix Server 配置

vim /usr/local/zabbix/etc/zabbix_server.conf
DBName=zabbix #数据库名称
DBUser=zabbix #数据库用户名
DBPassword=zabbix@2019 #数据库密码
#ListenIP=192.168.16.30 #服务器IP地址
ListenIP=0.0.0.0 #服务器IP地址
AlertScriptsPath=${datadir}/zabbix/alertscripts #zabbix运行脚本存放目录

(2)Zabbix GUI 配置

# cp /data/www/zabbix/conf/zabbix.conf.php.example /data/www/zabbix/conf/zabbix.conf.php
# vim /data/www/zabbix/conf/zabbix.conf.php
<?php
// Zabbix GUI configuration file.
global $DB;

$DB['TYPE']     = 'MYSQL';
$DB['SERVER']   = 'localhost';
$DB['PORT']     = '3306';
$DB['DATABASE'] = 'zabbix';
$DB['USER']     = 'zabbix';
$DB['PASSWORD'] = 'zabbix@2019';

// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';

$ZBX_SERVER      = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'zabbix';

$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;

注意:zabbix_server.conf中的ListenIPzabbix.conf.php中的$ZBX_SERVER配置一致性,否则Zabbix GUI报错:

Zabbix server is not running: the information displayed may not be current.

(3)解决zabbix中文乱码问题

# mkdir /data/www/zabbix/fonts/
# cp /home/nagios/SIMKAI.TTF /data/www/zabbix/fonts/
# chown www:www /data/www/zabbix -R

# vim /data/www/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME',           'simkai'); // font file name

从windows中拷贝楷体常规simkai.ttf到zabbix的字体目录/data/www/zabbix/fonts中(注意字体文件名大小写,simkai.ttf 或 SIMKAI.TTF,上述配置中的大小写应与文件大小写一致)

启动服务

(1)普通启动

# /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
# /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf

(2)服务启动(推荐)

  • zabbix_server
# cp zabbix-4.2.5/misc/init.d/fedora/core/zabbix_server /etc/init.d/
# vim /etc/init.d/zabbix_server

        # Zabbix-Directory
        BASEDIR=/usr/local/zabbix
# /etc/init.d/zabbix_server start
# /etc/init.d/zabbix_server restart
  • zabbix_agentd
# cp zabbix-4.2.5/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
# vim /etc/init.d/zabbix_agentd

        # Zabbix-Directory
        BASEDIR=/usr/local/zabbix
# /etc/init.d/zabbix_agentd start
# /etc/init.d/zabbix_agentd restart

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/25/zabibix-server-deployment-records-under-centos/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
CentOS下Zabbix Server部署记录
简介 Zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 Zabbix能监视各种网络参数,保证服务器系统的安……
<<上一篇
下一篇>>
文章目录
关闭
目 录