3、物理主机搭建KF2服务端-自动化运维监控平台搭建
当在使用云运营商的云主机时,云主机被入侵或负载过高,运营商都会以短信或者邮件的方式提醒用户,告知用户服务器状态。那么我们用物理主机能否也能做到这样呢?当然可以。
Zabbix是一套分布式企业级监控开源解决方案。它能够根据客户端,主动被动等方式获得交换机,路由器,服务器等网络设备的健康度,完整性以及运行的应用程序的状态。它有灵活的触发器配合自定义的报警机制,可以将报警信息以短信,微信,钉钉,邮件等方式传递给用户。配合自定义脚本,可以在故障触发后尝试自动修复,同时将修复结果反馈给用户。同时还可以记录各类数据并生成可视化图形。
创建Zabbix Server虚拟机
选择创建新虚拟机
为虚拟机取一个新的名称,我填的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
apt-get install wget curl vim -y
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数据库。
登录成功后的页面。
创建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用户的目录时,会出现因为权限导致的问题。
注意: 其中存在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