CentOS 7 安装和配置服务器监控软件 zabbix

By | August 2, 2017

最后更新时间: 2020-06-12 23:46:57

CentOS7 安装和配置 zabbix

Updated On: 2020-06-12

目标: 配置zabbix + Nginx + MariaDB 对CentOS 7 系统进行监控

准备工作:

安装MariaDB

安装Nginx

安装Zabbix

安装epel

yum -y install epel-release

安装zabbix包仓库

rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

安装 zabbix 服务器和客户端

yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-web

由于安装了php7相关的模块,所以可能会出现以下的错误,只要加上--skip-broken参数再次执行上述命令即可:

--> Finished Dependency Resolution
Error: php-pdo conflicts with php56u-pdo-5.6.31-1.ius.centos7.x86_64
Error: php-json conflicts with php56u-pecl-jsonc-1.3.10-2.ius.centos7.x86_64
Error: php-process conflicts with php56u-process-5.6.31-1.ius.centos7.x86_64
Error: php-cli conflicts with php56u-cli-5.6.31-1.ius.centos7.x86_64
Error: php-common conflicts with php56u-common-5.6.31-1.ius.centos7.x86_64
Error: php-xml conflicts with php56u-xml-5.6.31-1.ius.centos7.x86_64
Error: php-mysqlnd conflicts with php56u-mysqlnd-5.6.31-1.ius.centos7.x86_64
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

数据库配置

登录MariaDB服务器,创建数据库和数据库用户

create database zabbix character set utf8;
grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';
flush privileges;

往数据库导入表结构

# 这儿替换*.*.*为zabbix版本号
zcat /usr/share/doc/zabbix-server-mysql-*.*.*/create.sql.gz |mysql -uzabbix -pzabbix -b zabbix

配置zabbix服务器和客户端

配置zabbix服务器参数

编辑/etc/zabbix/zabbix_server.conf文件:

取消注释并按实际情况修改以下几行:

ListenPort=10051
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/data/mysql/mysql.sock # 在mariadb配置文件中可以找到
DBPort=3306

配置zabbix客户端

编辑/etc/zabbix/zabbix_agentd.conf文件:

查找并按实际修改以下几行:

Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=127.0.0.1

配置PHP

编辑/etc/php.ini 文件:

修改以下几行,不同值的将其修改(按需),没有的添加到文件中:

max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 32M
upload_max_filesize = 2M
date.timezone = Asia/Shanghai
extension=bcmath.so
extension=gettext.so
extension=sockets.so

如果上面三个扩展没有安装,需要另外安装

配置zabbix web站点

cp -r /usr/share/zabbix /var/www/
chown -R nginx.nginx /var/www/zabbix
chown -R nginx.nginx /etc/zabbix
chown -R nginx.nginx /usr/share/zabbix
chown -R nginx.nginx /usr/lib/zabbix
chmod -R 755 /etc/zabbix/web

如果开启SELinux:

chcon -t httpd_sys_rw_content_t /var/www/zabbix/ -R

配置Nginx

编辑Nginx配置文件:

在http块中加入:

location /zabbix {

listen 80;
server_name domainname.com;
root /var/www/zabbix;
index index.php index.html index.htm;

location ~ .php$ {
if (!-f $request_filename) { return 404; }
expires epoch;
include /etc/nginx/fastcgi_params;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_index index.php;
fastcgi_pass php-handler;

<h1>https://blog.martinfjordvald.com/2013/04/nginx-config-history-fastcgi_params-versus-fastcgi-conf</h1>

<h1>"as it takes the alias directive into account,..."</h1>

fastcgi_param SCRIPT_FILENAME $request_filename;
}

location ~ .(jpg|jpeg|gif|png|ico)$ {
access_log off;
expires 33d;
}

SElinux设置:

setsebool -P httpd_can_connect_zabbix=1

重启Nginx和php-fpm服务

启动zabbix服务

systemctl start zabbix-server
systemctl start zabbix-agent
systemctl enable zabbix-server
systemctl enable zabbix-agent

发现启动不了,systemctl status zabbix-server命令的执行结果:

Job for zabbix-server.service failed because a configured resource limit was exceeded. See "systemctl status zabbix-server.service" and "journalctl -xe" for details.
[root@iZwz9bcxg9cus8vnh1vye6Z www]# systemctl status zabbix-server
● zabbix-server.service - Zabbix Server
Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; disabled; vendor preset: disabled)
Active: activating (auto-restart) (Result: resources) since 日 2017-07-23 12:25:36 CST; 2s ago
Process: 1996 ExecStop=/bin/kill -SIGTERM $MAINPID (code=exited, status=1/FAILURE)
Process: 2022 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
Main PID: 1995 (code=exited, status=1/FAILURE)

7月 23 12:25:36 iZw39bcxgqcusbv1h11ye6Z systemd[1]: zabbix-server.service never wrote its PID file. Failing.
7月 23 12:25:36 iZw39bcxgqcusbv1h11ye6Z systemd[1]: Failed to start Zabbix Server.
7月 23 12:25:36 iZw39bcxgqcusbv1h11ye6Z systemd[1]: Unit zabbix-server.service entered failed state.
7月 23 12:25:36 iZw39bcxgqcusbv1h11ye6Z systemd[1]: zabbix-server.service failed.

解决方案:

grep zabbix_server /var/log/audit/audit.log
grep "denied.*zabbix_server" /var/log/audit/audit.log | audit2allow -M zabbix_server

执行结果:

******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i zabbix_server.pp

按照上面的结果做,这里是

semodule -i zabbix_server.pp

参考:RHEL 7.3 - Cannot Disable Core Dump Exiting

然后再启动zabbix server,成功启动。

我添加了HTTPS访问,具体步骤就不说了,很简单,本站中也有相应的文章介绍:linux+nginx+mysql/myariadb+php7-fpm配置LEMP以及HTTPS

通过浏览器访问domainname.com

发现访问不了,打开错误日志,里面的错误信息是:

[error] 3737#0: *1 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Exception: Cannot start session. in /www/zabbix/include/classes/core/CS ession.php:50

原因是php-fpm没有 /var/lib/php/fpm/session/var/lib/php/fpm/wsdlcache 这两个目录的读写权限,因此要将这两个目录的属主改为php-fpm的运行用户(在php-fpm的配置文件中可找到,查找user项)值:

chown nginx.nginx -R /var/lib/php/fpm/

参考: 最近安装zabbix遇到的问题

修改之后重启php-fpm。

首次访问网站,界面是这样的:

下一步:

然后填写一些关于数据库等的一些信息(前面都设置过了,照着填写就是)。

完成这一步后,访问首页,又出现了问题,这时候首页是这个的:

通过修改php配置文件可解决此问题:

;; 原值
cgi.fix_pathinfo=0
;; 修改后
cgi.fix_pathinfo=1

重启php-fpm,刷新页面,即可见到登录界面。

那么,登录的用户名和密码分别是多少呢?

zabbix默认的登录用户名是admin, 密码是zabbix。

修改用户名和密码:

首先登录mysql shell,然后:

use zabbix
update users set passwd=md5('yourpassword') where userid=1;

重启zabbix-server以及zaabbix-agent。

这时候是还未开启主机监控的,主机监控还在关闭状态,需要到“配置”->“主机”开启

开启后:

此时警告一个问题:Lack of free swap space on Zabbix server。

解决办法请参考: Zabbix报告无交换内存主机“Lack of free swap space”问题解决

问题解决后:

目前为止只是搭建了监控平台,至于建立监控模板相关的文章以后需要时再发布。

参考资料:
Centos 7安装zabbix

Zabbix 监控之 修改管理员用户密码

Created On: 2017/07/23

鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,也欢迎指正,一起学习,共同进步。如果本文对您有帮助,而且让您觉得值得为内容付费,那么就请赞助(打赏)一下本人,这不强制。打赏支持微信支付,方法是使劲地戳一下下方的“打赏”按钮,然后得到微信收款的二维码,再用微信支付扫一下,就像买菜那样。祝好!