部署网站架构(LNMP)
LNMP
“L”表示linux系统,“N”表示nginx网站服务,“M”表示mysql/mariadb数据库,“P”表示PHP
更改主机名
hostnamectl set-hostname zabbixserver
安装部署LNMP部署的依赖包
yum install -y gcc pcre-devel openssl-devel
部署nginx服务
安装wget
yum install -y wget
源码安装nginx
下载源码
wget -P /root https://nginx.org/download/nginx-1.12.2.tar.gz
解压源码包
tar -zxvf nginx-1.12.2.tar.gz
进入源码包进行源码编译安装
cd /nginx-1.12.2
./configure //检测环境
make && make install //编译并安装
启动服务
/usr/local/nginx/sbin/nginx
访问网页进行验证
echo "<marquee><font color=red><h1>你好,世界<marquee>" > /usr/local/nginx/html/index.html
此时我们使用浏览器会发现中文变成了乱码,我们需要修改一个nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
39行:#charset koi8-r; 这一行取消注释,并修改为 charset UTF-8;
重启服务
将服务重启的目录进行一个软连接到root目录下面
ln -s /usr/local/nginx/sbin/nginx /root/
/root/nginx -s reload
如果访问还是乱码,记得清除浏览器的访问缓存
部署数据库
安装数据库
yum install -y mariadb mariadb-server mariadb-devel
启动数据库
systemctl start mariadb
部署PHP
安装PHP
yum install -y php php-mysql php-fpm
启动PHP
systemctl start php-fpm
配置nginx支持PHP动态网站
修改nginx配置文件
让nginx能够处理PHP动态页面,PHP是写网页的语言
vim /usr/local/nginx/conf/nginx.conf
取消65-71行的注释,并修改参数
server{
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
)
配置nginx支持PHP动态网站,因为有大量的PHP脚本需要执行,因此还需要开启nginx的各种fastcgi缓存,加速PHP脚本的执行速度
vim /usr/local/nginx/conf/nginx.conf
server{
fastcgi_buffers 8 16k; //缓存PHP生成的页面内容,8个16k
fastcgi_buffer_size 32k; //缓存PHP生成的头部信息
fastcgi_connect_timeout 300; //连接PHP的超时时间
fastcgi_send_timeout 300; //发送请求的超时时间
fastcgi_read_timeout 300; //读取请求的超时时间
}
写PHP网页进行验证
vim /usr/local/nginx/html/test.php
<?php
$x=hello;
echo $x;
?>
浏览器url输入”IP地址/test.php“进行测试
部署zabbix的server端
安装zabbix需要的依赖包
yum install -y net-snmp-devel curl-devel libevent-devel
源码安装zabiix
源码包下载
wget -P /root https://cdn.zabbix.com/zabbix/sources/oldstable/3.4/zabbix-3.4.15.tar.gz
解压源码包
tar -zxvf zabbix-3.4.15.tar.gz
检测环境,指定安装功能
cd zabbix-3.4.15/
./configure --enable-server \ //zabbix服务端软件
--enable-agent \ //zabbix被监控端软件
--with-mysql=/usr/bin/mysql_config \ //配置mysql——config路径
--with-net-snmp \ //zabbix通过snmp监控其他设备
--with-libcurl //zabbix通过curl连接http,ftp等服务
编译安装
make&&make install
编译安装zabbix报错
报错代码:parse.c:391:2: error: ‘for’ loop initial declarations are only allowed in C99 mode for(int i = ctx->ops.values_num - 1; i >= 0; i --)
报错背景
编译安装zabbix
执行完./configure
make install的时候报错
解决方法
这句话的意思是,直接在for循环中声明变量只在C99模式下允许的。这是什么意思?
这是因为,部分人使用的编译器是老版本的(一般都是C89的,例如:gcc编译器
而这种直接在for循环中声明变量的方法是C99后来添加的,所以在C89模式编译就过不去,必须换C99编译才可以
在执行./configure之前设置一个环境变量从新编译即可通过
export CFLAGS="-std=gnu99"
配置mysql数据库
创建一个数据库
创建一个名为zabbix的数据库,让zabbix把监控到的数据放进这个数据库里面
mysql
create database zabbix character set utf8;
mysql用户授权
zabbix需要把数据存放在数据库里面,但是数据库里面默认只允许root用户存储数据,所以我们需要创建授权一个用户
grant all on zabbix.* to zabbix@"localhost" identified by "zabbix";
zabbix.* 表示zabbix数据库中的所有表
这条命令行表示允许zabbix用户在本地进行登录管理zabbix数据库中的所有表,并且这个用户的密码设置为zabbix
测试连接数据库
mysql -uzabbix -pzabbix
use zabbix;
能够进入到之前创建的zabbix数据库说明用户授权完成
向数据库导入表格
现在只创建了数据库,但是zabbix的监控数据不知道如何往数据库里面存储,存储数据是需要创建表格的,但是zabbix的源码包里面官方已经给你设计了表格,不需要手动创建
官方设计好的表格在zabbix源码包里面,三张表格名字为data.sql,images.sql,schema.sql,并且导入表格是有顺序的,先导入schema.sql,再导入images.sql,最后再导入data.sql,从后往前的顺序进行导入
cd zabbix-3.4.15/database/mysql
mysql -uzabbix -pzabbix zabbix < schema.sql
mysql -uzabbix -pzabbix zabbix < images.sql
mysql -uzabbix -pzabbix zabbix < data.sql
部署zabbix的web界面
zabbix的web界面官方也已经设计好了在zabbix的源码包里
cd zabbix-3.4.15/frontends/php/
cp -r * /usr/local/nginx/html/
chmod -R 777 /usr/local/nginx/html/*
修改zabbix的server端的配置文件
此时zabbix还不知道数据库是谁,我们需要去指定zabbix去连接数据库时相关参数
vim /usr/local/etc/zabbix_server.conf
DBHost=localhost //数据库主机,默认该行被注释
DBName=zabbix //数据库名称
DBUser=zabbix //数据库账户
DBPassword=zabbix //数据库密码,默认改行被注释
LogFile=/tmp/zabbix_server.log //日志文件位置
创建zabbix启动的系统用户
zabbix服务在启动之前必须使用名为zabbix系统用户来进行启动启动
useradd -s /sbin/nologin zabbix
启动服务
zabbix_server
查看是否启动成功
ss -anptul | grep zabbix
tcp LISTEN 0 128 *:10051
注意:如果是因为配置文件不对,导致服务无法启动时,不要重复执行zabbix_server,一定要先使用killall zabbix_server关闭服务之后,再重新启动一次
linux自带的yum源安装的mariadb版本可能过低,导致无法启动zabbix服务,需要修改yum源安装更高版本的mariadb版本,可以参考[[mariadb高版本yum安装]]
部署zabbix的agent端
修改zabbix的agent端的配置文件
vim /usr/local/etc/zabbix_agented.conf
Server=192.168.134.139 //允许哪些主机来监控本机(因为现在是自己监控自己,所以IP地址是自己)
LogFile=/tmp/zabbix_agentd.log //日志文件位置
ServerActive=127.0.0.1,192.168.134.139 //允许哪些主机通过主动模式监控本机
Hostname=zabbixserver //设置本机主机名
UnsafeUserParameters=1 //是否允许自定义key,默认值为0,改成1,该行默认被注释
启动服务
zabbix_agentd
查看服务状态
ss -anptul | grep zabbix_agent
tcp LISTEN 0 128 *:10050
注意:如果是因为配置文件不对,导致服务无法启动时,不要重复执行zabbix_agentd,一定要先使用killall zabbix_agentd关闭服务之后,再重新启动一次
配置zabbix的初始化页面
访问初始化页面
使用浏览器输入"192.168.134.139/setup.php"进行访问,如果访问的时候,网站页面显示“minimum required php version is 7.4.0”说明PHP的版本太低了,要高于等于7.4.0。安装高版本的PHP请参考[[使用yum安装指定版本的php]]
配置PHP先决条件
vim /etc/php.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Shanghai
重启PHP服务
systemctl restart php-fpm
安装zabbix需要软件包
重启完成php之后我们刷新网页继续访问会发现还是有些缺少软件包的条件没有满足,我们安装即可
yum install -y php-gd php-xml php-bcmatch php-mbstring php-bcmath
安装完成之后我们重启php,刷新页面最后发现LDAP的条件没有满足,这个条件是可有可无的。LDAP叫做统一用户认证,专门用来存放和管理账户的。如果没有部署LDAP,我们可以吧账户存放在数据库里面
配置数据库的参数
Database host表示部署数据库服务器的IP地址,这边布置在本机,所以使用localhost,修改完成之后只需要一直下一步即可
访问zabbix管理页面
默认zabbix软件提供用户认证,默认的用户名为admin,默认的密码为zabbix,默认界面为英文,我们修改为中文
默认监控是没有启用的,我们需要进入配置页面手动启用
到此为止,zabbix算是部署完成,配置完成之后我们今后只需要输入192.168.134.139/index.php直接来进行访问即可
配置zabbix监控snmp
路由交换设备启用snmp
如果客户端想要被监控,就必须要安装zabbix的agent端。如果想要监控交换机和路由器,就只需要在设备上面启用snmp即可。注意:监控的设备一定要和zabbix服务器在同一个网段下
我们配置需要监控的路由交换设备。给它们启用snmp
en
conf ter
snmp-server community public ro //配置只读通信字符串
snmp-server community public rw //配置读写通信字符串
snmp-server enable traps //配置网关SNMP TRAP
snmp-server host 192.168.134.139 rw //配置网关工作站地址
end
修改zabbix服务器的snmp配置文件
定义可以查看的snmp的范围
vim /etc/snmp/snmpd.conf
修改完成之后重新启动snmp
systemctl restart snmpd
安装snmp-utils软件包,并抓取数据
安装snmp-utils软件包
我们此时需要监控三层交换机,监控三层交换机我们就需要获取它的数据,此时就需要安装snmp-utils软件包,这是一个抓取数据的软件包
yum install -y net-snmp-utils
抓取数据
snmpwalk -v 2c -c public 192.168.134.60
2c表示snmp的版本号
public表示密钥,密钥对应的是snmp里面的团体名
配置管理页面监控
主机名称随便填写,添加组是为了方便管理
接下来我们开始选择监控的模板,一般选择这两个通用的模板
解决zabbix中文乱码
中文乱码现象
安装语言包
yum install -y wqy-microhei-fonts
拷贝语言文件替换原有文件
cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/local/nginx/html/fonts/DejaVuSans.ttf
刷新页面验证
配置zabbix的监控报警
配置邮件报警
localhost表示本机是邮件服务器
root@localhost表示以root的身份去发送邮件
配置admin超级管理员用户去发送邮件,并且设置发送给谁
想给谁发就设置这个参数
配置配置触发什么条件的时候才给你发送邮件消息
这边我们选择全部勾选上
我们继续配置发送邮件的时间间隔
这边我们配置出现报警每60s发送一次,只要出现错误就会一直发送邮件,直到解决问题为止
查看收到的邮件消息
yum install -y mailx
mail
zabbix总结
SNMP叫做简单网络管理协议,主要的作用是收集设备里的信息(例如:带宽,接口状态,CPU使用率,内存使用率等)然后传递到流量监控服务器里并实现一个报警的功能
SNMP设计之初主要是用于自动下发配置的,完成自动化部署。并不是只是为了收集设备的信息。常见的类型功能的还有华为的Agile Controller(敏捷控制器)中的一个南向协议(SNMP协议)来进行下发配置。
类似zabbix的功能的开源软件还有nagios,cacti(仙人掌),还有HC3的监控软件IMC,华为的监控软件eSight,windows常用的监控软件PRTG。
大的互联网公司都是使用开源的监控软件,比如说腾讯使用的监控系统是TMP