部署zabbix 4.2服务器(编译安装)

部署zabbix 4.2服务器(编译安装)

简介 Zabbix是一款开源的网络监控软件,用于实时监测各种网络参数、服务器状态和网络服务运行情况。它能够收集、处理、存储和分析各种指标数据,并提供可视化的图表和报表,以便管理员能够及时发现并解决网络和服务器的问题。Zabbix具有灵活的配置选项和强大的报警功能,可以根据预先设定的阈值条件发送通知,

简介

Zabbix是一款开源的网络监控软件,用于实时监测各种网络参数、服务器状态和网络服务运行情况。它能够收集、处理、存储和分析各种指标数据,并提供可视化的图表和报表,以便管理员能够及时发现并解决网络和服务器的问题。Zabbix具有灵活的配置选项和强大的报警功能,可以根据预先设定的阈值条件发送通知,帮助管理员及时采取行动,确保系统的稳定性和可靠性。

Zabbix的主要特点包括:

  1. 分布式架构:支持多个监控服务器和代理,可灵活部署。

  2. 多种数据收集方式:支持主动和被动监控,可以通过代理、SNMP、IPMI等方式收集数据。

  3. 自定义监控项:可以根据需要定义监控项和触发器,满足各种监控需求。

  4. 多种可视化方式:提供丰富的图表、地图和报表,便于管理员进行数据分析和故障排查。

  5. 强大的报警功能:支持多种报警方式,包括邮件、短信、微信等,可根据不同的场景和优先级进行配置。

  6. 高度可定制性:通过自定义脚本和插件,可以扩展和定制各种功能。

  7. 安全性:支持用户认证和权限控制,保障监控数据的安全性和完整性。

准备环境

  • OS:CentOS 7.6

  • nginx:nginx-1.16.1.tar.gz

  • postgresql:postgresql-11.5.tar.gz

  • php-fpm:php-7.2.22.tar.gz

  • zabbix:zabbix-4.2.6.tar.gz

RPM包下载地址

安装PostgreSQL

  • 安装依赖

yum install -y gcc gcc-c++ readline-devel zlib-devel
  • 源码编译安装PostgreSQL

tar -zxvf postgresql-11.5.tar.gz
cd postgresql-11.5
./configure --prefix=/usr/local/postgresql
make && make install
  • 用户权限与环境变量

mkdir /usr/local/postgresql/{data,log}
useradd postgres
echo "postgres" | passwd --stdin postgres
chown -R postgres:postgres /usr/local/postgresql/
cat >> /home/postgres/.bash_profile <<EOF
export PGHOME=/usr/local/postgresql
export PGDATA=/usr/local/postgresql/data
export PATH=\$PATH:\$PGHOME/bin
EOF
su - postgres
initdb -D /usr/local/postgresql/data/
  • 修改配置PG文件

vim /usr/local/postgresql/data/postgresql.conf
listen_addresses = '*'
port = 5432
max_connections = 600
vim /usr/local/postgresql/data/pg_hba.conf
host all all 0.0.0.0/0 md5
  • 启动PostgresSQL

pg_ctl start -l /usr/local/postgresql/log/pg_server.log
  • 修改postgres密码

psql -U postgres -d postgres
postgres=# \password postgres
# 根据提示输入两次密码即可
  • 关闭PostgresSQL

pg_ctl stop
  • 添加服务并设置自动启动

cat >> /usr/lib/systemd/system/postgresql.service << EOF
[Unit]
Description=PostgreSQL database server
After=network.target
[Service]
Type=forking
User=postgres
Group=postgres
# Port number for server to listen on
Environment=PGPORT=5432
# Location of database directory
Environment=PGDATA=/usr/local/postgresql/data
# Disable OOM kill on the postmaster
OOMScoreAdjust=-1000
ExecStart=/usr/local/postgresql/bin/pg_ctl start -D \${PGDATA} -l
/usr/local/postgresql/log/pg_server.log -o "-p \${PGPORT}" -w -t 300
ExecStop=/usr/local/postgresql/bin/pg_ctl stop -D \${PGDATA}
ExecReload=/usr/local/postgresql/bin/pg_ctl reload -D \${PGDATA}
# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start postgresql
systemctl enable postgresql
  • 设置防火墙

firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --reload

安装php-fpm

  • 安装依赖

yum install -y libxml2-devel gd-devel libjpeg-devel libpng-devel freetype-devel
yum install -y openssl-devel pcre-devel libcurl-devel zlib-devel
  • 报错

    • 解决php configure: error: Cannot find ldap libraries in /usr/lib.错误

cp -frp /usr/lib64/libldap* /usr/lib/
tar zxvf php-7.2.22.tar.gz
cd php-7.2.22

# 预编译
./configure --prefix=/usr/local/php \
--enable-fpm \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--with-gd \
--with-png-dir \
--with-jpeg-dir \
--with-freetype-dir \
--enable-bcmath \
--with-libxml-dir \
--with-xmlrpc \
--with-curl \
--enable-sockets \
--enable-mbstring \
--with-gettext \
--with-pcre-dir \
--with-openssl \
--with-zlib \
--with-pgsql=/usr/local/postgresql

# 编译安装
make && make install
 # 设置自动启动
cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl enable php-fpm
cp php.ini-development /usr/local/php/lib/php.ini
cp /usr/local/php/etc/{php-fpm.conf.default,php-fpm.conf}
cp /usr/local/php/etc/php-fpm.d/{www.conf.default,www.conf}
vim /usr/local/php/lib/php.ini
# 修改以下内容:
#报告所有的错误,但除了E_NOTICE这一种
error_reporting = E_ALL & ~E_NOTICE
#在终端显示出错信息,这个在生产环境最好设置成off
display_errors = On
#表单最大提交的数据量大小
post_max_size = 16M
#准许上传文件大小限制为16M
upload_max_filesize = 16M
max_execution_time = 300
max_input_time = 300
#中华人民共和国时区
date.timezone = PRC
#隐藏php版本信息
expose_php = Off
  • 启动关闭

# 启动
systemctl start php-fpm
# 关闭
systemctl stop php-fpm

安装nginx

安装nginx依赖包

yum install -y gcc pcre-devel zlib-devel openssl-devel

创建管理用户 nginx

# 添加nginx用户,其中-M参数表示不添加用户家目录,-s参数表示指定shell类型
useradd -s /sbin/nologin -M nginx

nginx软件编译安装过程

# 上传nginx源码包:nginx-1.16.1.tar.gz
rz -y
# 解压源码包
tar zxvf nginx-1.16.1.tar.gz
cd nginx-1.16.1
# 预编译
./configure --prefix=/usr/local/nginx \
--user=nginx --group=nginx \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-pcre \
--with-stream
# 编译安装
make && make install

将nginx添加到系统服务

cat >> /usr/lib/systemd/system/nginx.service << EOF
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
# 重载systemctl配置
systemctl daemon-reload
# 设置开机自启动
systemctl enable nginx
  • 编辑nginx.conf配置文件,使nginx支持PHP

location / {
root /data/html;
index index.php index.html index.htm;
}
location ~ \.(php|php5)?$ {
root /data/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/html$fastcgi_script_name;
include fastcgi_params;
}
location ~* ^.+\.(ico|gif|jpg|jpeg|png|html|css|htm|bmp|js|svg)$ {
root /data/html;
}
  • 启动和关闭

systemctl start nginx # 启动nginx
systemctl stop nginx # 结束nginx
systemctl restart nginx # 重启nginx

安装zabbix server

tar zxvf zabbix-4.2.6.tar.gz
cd zabbix-4.2.6
useradd -s /sbin/nologin zabbix
  • 安装依赖

yum install net-snmp-devel libssh2-devel OpenIPMI-devel openldap-devel libeventdevel curl-devel -y
  • 编译安装

# 编译
./configure --prefix=/usr/local/zabbix --enable-server --enable-proxy --enableagent --enable-ipv6 --with-postgresql=/usr/local/postgresql/bin/pg_config --
with-net-snmp --with-ssh2 --with-openipmi --with-ldap --with-libcurl --withiconv
# 安装
make install
  • 拷贝zabbix页面至nginx,并设置权限

mkdir -p /data/html
cp -R frontends/php/* /data/html
chown -R nginx.nginx /data/html
  • 创建zabbix 数据库,先切换到postgres账户下

su - postgres
psql -U postgres -d postgres
postgres=# create role zabbix login;
CREATE ROLE
postgres=# \password zabbix
Enter new password:
Enter it again:
postgres=# create database zabbix with template template0 encoding 'UTF8' ;
CREATE DATABASE
postgres=# grant all on database zabbix to zabbix;
GRANT
postgres=# \q
  • 导入zabbix数据

    • 在源码下,有zabbix数据库的数据

cd /opt/download/zabbix-4.2.6/database/postgresql/
psql -Uzabbix -dzabbix -h127.0.0.1 -f schema.sql
psql -Uzabbix -dzabbix -h127.0.0.1 -f images.sql
psql -Uzabbix -dzabbix -h127.0.0.1 -f data.sql
  • 配置zabbix_server参数

mkdir /usr/local/zabbix/log
chown -R zabbix.zabbix /usr/local/zabbix
vim /usr/local/zabbix/etc/zabbix_server.conf
#监听port
ListenPort=10051
#日志存放地点及大小
LogFile=/usr/local/zabbix/log/zabbix_server.log
LogFileSize=500
#pid文件存放地点
PidFile=/usr/local/zabbix/log/zabbix_server.pid
#下面几个参数是配置数据库连接参数
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=5432
#监听ip范围
ListenIP=0.0.0.0
HousekeepingFrequency=12
Timeout=30
pingLocation=/usr/sbin/fping
#media types中使用script存放目录
AlertScriptsPath=/usr/local/zabbix/alertscripts
  • 安装服务

cat >> /usr/lib/systemd/system/zabbix-server.service << EOF
[Unit]
Description=Zabbix
After=network.target
[Service]
Type=forking
Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_server.conf"
Restart=on-failure
PIDFile=/usr/local/zabbix/log/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/local/zabbix/sbin/zabbix_server -c \$CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
[Install]
WantedBy=multi-user.target
EOF
# 安装服务
systemctl daemon-reload
systemctl enable zabbix-server
# 启动服务
systemctl start zabbix-server
  • 设置防火墙

firewall-cmd --permanent --add-port=10051/tcp
firewall-cmd --reload
  • 错误处理

启动zabbix_server服务时提示错误:/usr/local/zabbix/sbin/zabbix_server: error while
loading shared libraries: libpq.so.5: cannot open shared object file: No such
file or directory
处理办法:
ln -s /usr/local/postgresql/lib/libpq.so.5 /usr/lib64/libpq.so.5
  • 配置zabbix-agent服务

ln -s /usr/local/zabbix/sbin/zabbix_agentd /usr/sbin/
cat > /usr/lib/systemd/system/zabbix-agent.service << EOF
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_agentd.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start zabbix-agent

安装zabbix agent

  • agnet端就是被监控的数据库主机

    • 创建用户

groupadd zabbix
useradd -g zabbix -s /sbin/nologin zabbix
  • 编译安装

./configure --prefix=/usr/local/zabbix-agent --enable-agent
make install
  • 修改配置文件

vi /usr/local/zabbix-agent/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=192.168.0.8
Hostname=Zabbix agent
  • 配置到环境变量

PATH=/usr/local/zabbix-agent/bin:/usr/local/zabbix-agent/sbin:$PATH
  • 启动zabbix_agent

    • 直接运行zabbix_agent命令,查看日志,观察是否正常

# 一键安装zabbix_agent脚本,使用RPM包方式安装
wget http://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.6-
1.el7.x86_64.rpm
b=$(hostname)
#修改相应的配置文件
sed -i '97cServer=192.168.0.245' /etc/zabbix/zabbix_agentd.conf
sed -i '138cServerActive=192.168.0.245' /etc/zabbix/zabbix_agentd.conf
sed -i "149cHostname=$b" /etc/zabbix/zabbix_agentd.conf
#防火墙开通10050端口
firewall-cmd --add-port=10050/tcp --permanent
firewall-cmd --reload
#开启服务
systemctl restart zabbix-agent
systemctl enable zabbix-agent
rm -f zabbix-agent-4.2.6-1.el7.x86_64.rpm

安装fping

  • 下载地址:http://www.fping.org/

  • 编译安装

tar zxvf fping-4.2.tar.gz
cd fping-4.2
./configure --prefix=/usr/local --enable-ipv4 --enable-ipv6
make && make install
  • 修改fping的权限

ln -s /usr/local/sbin/fping /usr/sbin/fping
chown root:root /usr/local/sbin/fping
chmod u+s /usr/local/sbin/fping

解决图形报表界面中文乱码问题

# 方法1
yum -y install wqy-microhei-fonts
# /data/html是网站根目录,替换时要注意
\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc
/data/html/assets/fonts/DejaVuSans.ttf
# 方法2
cp msyh.ttc /data/html/assets/fonts/DejaVuSans.ttf

常见问题处理

  • 忘记管理员登陆密码

update users set passwd='5fce1b3e34b520afeffb37ce08c7cd66' where userid='1';
-- 解释:5fce1b3e34b520afeffb37ce08c7cd66 = zabbix
-- 因为zabbix默认密码就是zabbix

LICENSED UNDER CC BY-NC-SA 4.0
评论
访问统计
总访问量: 👀| 访客数: 🚶‍♂️