3、物理主机搭建KF2服务端-自动化运维监控平台搭建

目录 运维

当在使用云运营商的云主机时,云主机被入侵或负载过高,运营商都会以短信或者邮件的方式提醒用户,告知用户服务器状态。那么我们用物理主机能否也能做到这样呢?当然可以。

Zabbix是一套分布式企业级监控开源解决方案。它能够根据客户端,主动被动等方式获得交换机,路由器,服务器等网络设备的健康度,完整性以及运行的应用程序的状态。它有灵活的触发器配合自定义的报警机制,可以将报警信息以短信,微信,钉钉,邮件等方式传递给用户。配合自定义脚本,可以在故障触发后尝试自动修复,同时将修复结果反馈给用户。同时还可以记录各类数据并生成可视化图形。

创建Zabbix Server虚拟机

与创建KF2服务端模版一样,接下去与前面模版重复的动作我不会太详细去讲解。如果有什么不明白的,可以回到前面看为KF2服务端创建虚拟机的手册。

选择创建新虚拟机

为虚拟机取一个新的名称,我填的Zabbix Server 这个名称后面也可以更改。兼容性默认,操作系统系列选择Linux,版本选择Debian GNU/Linux 10 (64位)。

因为Zabbix服务端需要运行数据库,Web服务端,zabbix_server和zabbix_agentd,监控数据也会大量存储在服务端。所以我将配置设置为4U4G内存,500G存储。CD/DVD驱动器选择数据存储ISO文件,然后选择自己上传的debian10镜像。

配置完成后启动虚拟机。

Zabbix虚拟机安装Debian10系统

与为KF2服务端安装Debian10一样,除了主机名与新用户名字外几乎完全重复。如果有什么不明白的,可以回到前面看为KF2服务端Debian10系统安装的手册,这里就不在重复演示了。

安装Zabbix Server初始环境

使用vi打开sources.list

vi /etc/apt/sources.list

删除原有的源后写入

deb http://mirrors.zju.edu.cn/debian/ buster main non-free contrib
deb http://mirrors.zju.edu.cn/debian/ buster-updates main non-free contrib
deb http://mirrors.zju.edu.cn/debian-security/ buster/updates main non-free contrib
deb-src http://mirrors.zju.edu.cn/debian/ buster main non-free contrib
deb-src http://mirrors.zju.edu.cn/debian/ buster-updates main non-free contrib
deb-src http://mirrors.zju.edu.cn/debian-security/ buster/updates main non-free contrib

保存并退出然后执行下面的命令更新源

apt-get update

安装wget curl vim 等初始工具。

apt-get install wget curl vim -y

在home路径下创建zabbix deb文件的下载目录,安装完后可自行删除。如果当前不知道在什么位置。则按下面的命令输入。

mkdir /home/zabbix && cd /home/zabbi

下载zabbix的deb包并执行,然后更新源,安装zabbix_agentd。命令如下

wget https://repo.zabbix.com/zabbix/5.4/debian/pool/main/z/zabbix-release/zabbix-release_5.4-1+debian10_all.deb
dpkg -i zabbix-release_5.4-1+debian10_all.deb
apt update

安装zabbix服务端的一系列软件

apt-get install zabbix-server-pgsql zabbix-frontend-php php7.3-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent -y

等待安装完毕即可

安装PostgreSql数据库

Zabbix数据可以用mysql和postgresql。我使用的是postgresql数据库

输入下方命令安装数据库

apt-get install postgresql -y

如上图,安装完成。

pg_ctlcluster 11 main start #启动
pg_ctlcluster 11 main restart #重启
pg_ctlcluster 11 main stop #停止

检查Postgresql运行情况

配置PostgreSql支持密码登录

vim /etc/postgresql/11/main/pg_hba.conf

添加一条

host all all 192.168.0.1/24 md5

保存退出。

接下来,准备配置数据库允许远程连接。

打开配置文件。

vim /etc/postgresql/11/main/postgresql.conf

找到下面这一行

#listen_addresses = 'localhost'

将它修改为

Listen_addresses = '*'

保存后退出。

重启PostgreSql数据库,让配置生效。

Pg_ctlcluster 11 main restart

接下来修改postgres用户的登录密码,postgres用户也是postgresql数据库的管理用户。

#切换到postgres用户
su postgres
#登录postgresql数据库
psql
#执行语句,修改postgres用户的登录密码
ALTER ROLE postgres WITH PASSWORD '需要修改的密码';
#退出postgresql数据库登录
exit
#退出postgres用户
exit

注意:密码123456只是本手册示范的的密码,建议数据库密码使用强密码。

固定Zabbix主机IP地址

登录路由器

在客户端列表中,找到zabbix的主机的MAC地址。

将它固定。

然后重启Zabbix主机。

注意:重启主机前手动关闭Postgresql数据库。

下载PgAdmin可视化管理PostgreSql数据库

https://www.pgadmin.org/ 下载PG数据库官方提供的数据库可视化管理工具PgAdmin。下载安装后即可登录192.168.0.201上的数据库。

登录成功后的页面。

创建Zabbix默认数据库与默认用户

右键数据库点击创建,然后给数据库取一个名字。

然后保存。

注意:这里的所有者暂时选postgres后续我们更换为新的低权限用户。

右键“登录/组角色”创建新的用户。名称随意。

为新用户创建密码。

勾选可以登录。

 

 

右键新创建的数据库,点击属性。

将所有者选择为刚刚新建的用户。

接下去回到终端界面,准备导入zabbix初始数据库表的模版

切换到数据库表模版的地址,输入导入命令将数据导入

#进入数据库模版目录
cd /usr/share/doc/zabbix-sql-scripts/postgresql
#解压create.sql.gz
gunzip create.sql.gz
#进入zabbix用户,该用户就是你新建的数据库用户。
su zabbix
#执行导入,-d后面的参数为你新建的数据库名字。
psql -d zabbix < create.sql

出现以上的输出即为导入成功。

回到PgAdmin也可以看到全部模版表已导入。

Nginx配置

首先先介绍几个路径,后续配置主要在这几个路径上展开。

#这个路径是zabbix网页管理的代码路径。
/usr/share/zabbix
​
#这个是nginx配置路径。
/etc/nginx/nginx.conf
​
#这个是nginx配置中导入的一个默认配置路径
/etc/nginx/sites-available/default

首先编辑/etc/nginx.conf

将除了

include /etc/nginx/sites-enabled/*

外的全部带include的代码删除。

在http块中新增。

include mime.types;
default_type application/octet-stream;

进入/etc/nginx/sites-available/defaul文件中

vim /etc/nginx/sites-available/defaul

删除原有server块中的全部内容,填入下图的内容

server {
listen 80;
server_name localhost;

    location / {
        root /usr/share/zabbix/;
        index index.php;
    }

    location ~ \.php$ {
        root /usr/share/zabbix/;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
        fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

保存后退出。

修改Nginx根目录所属组与用户

按上一步完成后,我们需要给Nginx指向的根路径下的所有文件重新配置所属组和用户。因为Nginx默认情况下为了安全性,使用的用户是www-data用户,并不是root用户。而当前指向的根路径下的目录文件全是属于root用户,www-data用户的Nginx去操作root用户的目录时,会出现因为权限导致的问题。

使用htop命令确认nginx和php-fpm的运行用户。

注意: 其中存在2个root权限运行的nginx和php-fpm,那2个是负责管理的进程。实际的工作都是由www-data用户的子进程完成的

运行命令

chown -R www-data.www-data /usr/share/zabbix/

接下来运行下面的指令,来查看所属组和用户是否配置完成。

ls -lh /usr/share/zabbix/

如果中间这段,从原先的root root变成了www-data www-data则配置成功。

成功后,重启nginx。

nginx -s reload

Zabbix网页初始配置

完成上面的步骤后,就可以访问Zabbix页面来进行初始配置。

因为在Nginx上指定的端口为80,那么初始地址为http://<zabbix绑定的IP>

出现如上页面,则开始进入配置。这个页面只是选择配置语言,直接下一步即可。

这一步,开始检测一些必要条件,这些条件基本配置PHP即可。如上图,post_max_size,代表最大post数据,默认是8M,需要的是16M,我们一步一步开始配置。

先找到PHP的配置文件,php.ini。这个文件在/etc/php/版本号/fpm目录下,我安装的是7.3版本。

vim /etc/php/7.3/fpm/php.ini

使用上面的这个指令,用vim开始编辑。

首先找到 post_max_size 将初始的8M修改为 16M

使用htop命令,光标移动到php-fpm的进程,按F9 杀死进程。输入

php-fpm7.3

重新启动。

回到Zabbix配置页面,重新刷新页面。可以看到所有必要条件都完成了。点击下一步

这一步开始配置数据库连接,我们使用的是PostgreSql数据库,类型选择PostgreSQL。数据库主机因为我们数据库和应用部署在一台机器上,所以填localhost或者127.0.0.1即可。数据库端口默认的5432,库名称填写前面创建的数据库名称,概要可以不填,将前面申请的低权限用户和密码填入。点击下一步即可。

配置Zabbix 服务器详细信息,像zabbix有agent和server,上面填写的信息就是server的信息,直接按如上填写即可。后续我们会配置zabbix_server。填写完成后按下一步即可。

配置主题,这步看个人喜好。我喜欢暗色,就选择暗色的配置即可。点击下一步

安装完成。接下去就是喜闻乐见的登录界面了

初始用户名:Admin

初始密码:zabbix

顺利登录,这时我们在仪表盘上的系统信息中,可以看到zabbix服务端是离线状态。因为我们当前还没有对它进行配置。

配置Zabbix_server服务端

使用vim编辑zabbix_server配置文件,这个配置文件和zabbix_agent客户端是在一个位置

vim /etc/zabbix/zabbix_server.conf

将DBHots改为localhost或者127.0.0.1。将DBName改为数据库名字。

注意:这里其实就是配置连接数据库和命令超时时间等内容。

DBUser和DBPassword就是PostgreSql的连接用户和连接密码。

配置连接端口,默认的5432。

接下去搜索Timeout将值改为30,客户端和服务端都各有一个超时时间配置,只配置一边的话,是按最小超时时间计算。

修改完成后,重启zabbix_server服务端,然后重新刷新zabbix网页,这时仪表盘系统信息中显示Zabbix服务器已上线。

Zabbix安全性配置

同服务端一样,需要对Zabbix的主机进行一个安全性的配置。

安装UFW防火墙

apt-get install ufw -y

配置主机只暴露必须的80端口和10051端口。

其中80端口是提供网页服务,10051端口则是客户端和服务端通讯用的端口。

这2个端口都只需要暴露在局域网中即可

#输入规则
ufw allow from 192.168.0.0/24 to any port 80
ufw allow from 192.168.0.0/24 to any port 10051
#启用ufw
ufw enable

修改Zabbix默认的密码。

到这一步Zabbix的平台就已经搭建完毕,下一篇: https://deployment.net.cn/?p=1193