在centos7上体验zabbix5.0

在centos7上体验zabbix5.0

以下文档基于zabbix5.0、centos7.9、nginx1.16、php73、mysql5.7,如有不同版本请自行修改。

官方文档:
https://www.zabbix.com/cn/download?zabbix=5.0&os_distribution=centos&os_version=7&db=mysql&ws=nginx

参考文档:
https://www.cnblogs.com/clsn/p/7885990.html#auto-id-76

Agent端

安装

推荐使用agent2,支持更多zabbix自带的监控模板。

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all
yum install zabbix-agent2 -y

Agent修改配置

vi /etc/zabbix/zabbix_agent2.conf

# 允许192.168.1.% 网段的服务器连接这个agent
Server=127.0.0.1,192.168.1.0/24
# 192.168.1.82是zabbix server的ip
ServerActive=192.168.1.82
# 本机的hostname,system.hostname是指取系统的hostname,也可以配置为固定值
HostnameItem=system.hostname

如果出现问题,可以先查看agent日志:/var/log/zabbix/

监控mysql(适用agent1)

创建用于监控的mysql用户

CREATE USER 'zabbix'@'%' IDENTIFIED BY '12345678';
GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zabbix'@'%';

在zabbix客户端默认配置路径下 /etc/zabbix 目录下新建 .my.cnf 文件,然后新增一个监控帐号,上面我们新建了一个zabbix帐号

[client]
user='zabbix'
password='12345678'
cat >/etc/zabbix/.my.cnf <<EOF
[client]
user='zabbix'
password='12345678'
EOF

复制配置文件

cp /usr/share/doc/zabbix-agent-5.0.12/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d/
sed -i 's%], mysql%],HOME=/etc/zabbix/ mysql%g' /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
systemctl restart zabbix-agent

最后,在web端mysql所在的主机上,添加关联模板Template DB MySQL by Zabbix agent,为了减少警告,进入该模板的修改界面,跳转到标签,将{$MYSQL.BUFF_UTIL.MIN.WARN}的值改为1。这个配置的意思是,当缓存池的利用率低于{$MYSQL.BUFF_UTIL.MIN.WARN}%的时候,会有一个warning级别的问题。默认值50过高,不需要的话可以移除掉或者改为1

监控mysql(适用agent2)

创建用于监控的mysql用户

CREATE USER 'zabbix'@'%' IDENTIFIED BY '12345678';
GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zabbix'@'%';

主机选择模板Template DB MySQL by Zabbix agent 2,在主机上添加值

{$MYSQL.DSN}    tcp://127.0.0.1:3306
{$MYSQL.PASSWORD}   12345678
{$MYSQL.USER}   zabbix

禁用模板的触发器MySQL: Buffer pool utilization is too low

监控redis

使用模板Template DB Redis(仅适用于agent2
如果redis在本机且端口是6379,则直接可以监控。否则需要配置一下。
打开模板的,找到{$REDIS.CONN.URI},修改host和端口。
如果redis还设置了密码,则需要增加一个宏,比如{$REDIS_PASS},然后,在这个模板的触发器标签中,找到表达式中含有["{$REDIS.CONN.URI}"]的指令,点击进去修改成["{$REDIS.CONN.URI}","{$REDIS_PASS}"]

监控nginx

nginx编译时需要加上参数--with-http_stub_status_module,如果已经有安装的nginx,通过nginx -V查看是否有--with-http_stub_status_module,有则表示可以使用stub status模块。

在nginx配置文件中加上:

location = /basic_status {
    stub_status;
    allow 127.0.0.1;
    allow 192.168.0.0/24;
    allow 192.168.101.0/24;
    allow ::1;
    deny all;
}

nginx所在主机关联模板Template App Nginx by Zabbix agent,其中以下宏为默认值

{$NGINX.STUB_STATUS.HOST}   localhost
{$NGINX.STUB_STATUS.PATH}   basic_status
{$NGINX.STUB_STATUS.PORT}   80

如果不是这些默认值,则在nginx所在主机上添加对应的配置项即可。

服务端

安装

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all
yum install zabbix-server-mysql zabbix-agent2 -y

Mysql初始化的时候一定要按照文档,create database zabbix character set utf8 collate utf8_bin;,不要换成utf8mb4,也不要修改collate成其他utf8,否则后面会出现无法连接mysql的错误。

导入mysql表结构

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uxxxx -p zabbix

编辑配置文件

/etc/zabbix/zabbix_server.conf,修改DBUser、DBPassword

部署web端可视化监控界面

使用已有的nginx和php73环境。
下载php-src(https://www.zabbix.com/cn/download_sources#tab:50LTS),压缩包中的ui目录,就是php-src。
上传前端php项目代码并解压到/usr/share/zabbix,并修改权限

chown -R nginx:nginx /usr/share/zabbix
# 为php-fpm配置做准备,这里路径可以自定义
mkdir -p /var/opt/rh/rh-php73/run/php-fpm/
mkdir -p /var/opt/rh/rh-php73/lib/php/session
chown nginx:nginx /var/opt/rh/rh-php73/lib/php/session

增加php-fpm配置文件

[zabbix]
user = nginx
group = nginx
# sock文件路径,在nginx配置文件中需要使用到,先把目录创建好并保证php-fpm可以写入
listen = /var/opt/rh/rh-php73/run/php-fpm/zabbix.sock
listen.acl_users = nginx
listen.allowed_clients = 127.0.0.1
# 默认的0660 修改成0666
listen.mode = 0666

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

php_value[session.save_handler] = files
# session文件存放目录,先把目录创建好并保证php-fpm可以写入
php_value[session.save_path]    = /var/opt/rh/rh-php73/lib/php/session
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
php_value[date.timezone] = Asia/Shanghai

重启php-fpm:systemctl restart php73-php-fpm

增加nginx配置文件

# 修改成自己的端口号和域名
server {
        listen          1080;
        server_name     example.com;
        root    /usr/share/zabbix;
        index   index.php;
        location = /favicon.ico {
                log_not_found   off;
        }
        location / {
                try_files       $uri $uri/ =404;
        }
        location /assets {
                access_log      off;
                expires         10d;
        }
        location ~ /\.ht {
                deny            all;
        }
        location ~ /(api\/|conf[^\.]|include|locale) {
                deny            all;
                return          404;
        }
        location ~ [^/]\.php(/|$) {
                # 这里就是php-fpm中的listen指向的sock文件
                fastcgi_pass    unix:/var/opt/rh/rh-php73/run/php-fpm/zabbix.sock;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_index   index.php;
                fastcgi_param   DOCUMENT_ROOT   /usr/share/zabbix;
                fastcgi_param   SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
                fastcgi_param   PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;
                include fastcgi_params;
                fastcgi_param   QUERY_STRING    $query_string;
                fastcgi_param   REQUEST_METHOD  $request_method;
                fastcgi_param   CONTENT_TYPE    $content_type;
                fastcgi_param   CONTENT_LENGTH  $content_length;
                fastcgi_intercept_errors        on;
                fastcgi_ignore_client_abort     off;
                fastcgi_connect_timeout         60;
                fastcgi_send_timeout            180;
                fastcgi_read_timeout            180;
                fastcgi_buffer_size             128k;
                fastcgi_buffers                 4 256k;
                fastcgi_busy_buffers_size       256k;
                fastcgi_temp_file_write_size    256k;
        }
}

重启nginx服务:systemctl restart nginx

生成zabbix要引用的文件/etc/zabbix/web/maintenance.inc.php,内容为空的php模板即可

<?php

并设置目录权限,以便web安装的时候可以写入配置文件

chown nginx:nginx /etc/zabbix/web/

访问nginx里配置的端口,将进入初始化,根据提示安装缺少的php模块

# 比如ldap模块
yum install -y php73-php-ldap

图形中文乱码

获取一个中文字体的ttf文件(比如阿里普惠体Alibaba-PuHuiTi-Regular.ttf),上传到 /usr/share/zabbix/assets/fonts/ 下。
修改 /usr/share/zabbix/include/defines.inc.php 文件

define('ZBX_GRAPH_FONT_NAME', 'Alibaba-PuHuiTi-Regular');
define('ZBX_FONT_NAME', 'Alibaba-PuHuiTi-Regular');

web端

配置报警发送邮件

  • 进入管理报警媒介类型Email (HTML),配置发送邮件的邮箱信息,点击更新;点击测试测试邮件是否能发送成功。【这里不设置好会发送不了邮件】
  • 进入管理用户,点击要设置邮件通知的用户,切换到报警媒介,添加一个类型为Email (HTML)、收件人填邮箱。【这里没设置好的话用户会收不到邮件】
  • 进入配置动作Trigger actions,将默认的动作Report problems to Zabbix administrators启用,也可以自己配置一个动作。【这里没启用的话,出问题不会触发发送邮件的动作】
Comments are closed.