NSD PROJECT3 DAY04
- 案例1:部署zabbix监控服务器
- 案例2:制作Zabbix客户端RPM软件包
- 案例3、Zabbix自动化监控
- 案例4、自定义Zabbix监控项目
- 案例5、监控报警
- 案例6:Zabbix分布式监控
- 案例7:Grafana数据可视化
- 案例8:部署企业私有镜像仓库Habor
1 案例1:部署zabbix监控服务器
1.1 问题
本案例要求部署在华为云上部署一台Zabbix监控服务器,监控其他主机。
- 安装LNMP环境
- 源码安装Zabbix
- 安装监控端主机,修改基本配置
- 初始化Zabbix监控Web页面
- 修改PHP配置文件,满足Zabbix需求
- 监控Zabbix_server自身系统状态
1.2 方案
准备如表-1所示的实验环境,配置主机名称、IP地址。
表-1 主机列表
![](index.files/table001.png)
1.3 步骤
实现此案例需要按照如下步骤进行。
步骤一、部署LNMP环境
1)、购买华为云服务器
基础配置:无 网络配置:手动分配IP地址 192.168.1.51 高级配置:云服务器名称 zabbix-server 确认配置:1台
2)、更新/etc/hosts
[root@ecs-proxy ~]# cat >> /etc/hosts <<EOF 192.168.1.51 zabbix-server EOF
3)、更新/root/ansible/hosts配置文件
[root@ecs-proxy ~]# cat >> /root/ansible/hosts <<EOF [zabbix] 192.168.1.51 EOF
将最新的/etc/hosts配置文件更新到所有的云主机上
[root@ecs-proxy ~]# cd /etc/ansible [root@ecs-proxy ansible]# ansible all -m copy -a 'src=/etc/hosts dest=/etc'
4)、安装LNMP所需软件包
[root@zabbix-server ~]# yum -y install gcc pcre-devel openssl-devel [root@zabbix-server ~]# scp root@192.168.1.252:/root/project3/DAY04/nginx-1.12.2.tar.gz /root [root@zabbix-server ~]# tar -xf /root/nginx-1.12.2.tar.gz [root@zabbix-server ~]# cd /root/nginx-1.12.2/ [root@zabbix-server nginx-1.12.2]# ./configure --with-http_ssl_module [root@zabbix-server nginx-1.12.2]# make && make install [root@zabbix-server nginx-1.12.2]# yum -y install php php-mysql php-fpm [root@zabbix-server nginx-1.12.2]# yum -y install mariadb mariadb-devel mariadb-server
5)、修改Nginx配置文件
配置Nginx支持PHP动态网站,因为有大量PHP脚本需要执行,因此还需要开启Nginx的各种fastcgi缓存,加速PHP脚本的执行速度。
[root@zabbix-server ~]# vim /usr/local/nginx/conf/nginx.conf … … http{ … … 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; #读取请求的超时时间 … … server { listen 8090; #将监听端口更改为8090 … …
location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
… …
6)、启动服务
[root@zabbix-server nginx-1.12.2]# systemctl enable --now mariadb
[root@zabbix-server nginx-1.12.2]# systemctl enable --now php-fpm
[root@zabbix-server nginx-1.12.2]# /usr/local/nginx/sbin/nginx
[root@zabbix-server nginx-1.12.2]# echo /usr/local/nginx/sbin/nginx >> /etc/rc.local
[root@zabbix-server nginx-1.12.2]# chmod +x /etc/rc.local
步骤二、部署Zabbix服务端
1)、源码安装Zabbix Server
多数源码包都是需要依赖包的,zabbix也一样,源码编译前需要先安装相关依赖包。
[root@zabbix-server nginx-1.12.2]# yum -y install net-snmp-devel curl-devel autoconf libevent-devel
[root@zabbix-server nginx-1.12.2]# scp root@192.168.1.252:/root/project3/DAY04/zabbix-3.4.4.tar.gz /root
[root@zabbix-server nginx-1.12.2]# tar -xf /root/zabbix-3.4.4.tar.gz -C /root
[root@zabbix-server nginx-1.12.2]# cd /root/zabbix-3.4.4/
[root@zabbix-server zabbix-3.4.4]# ./configure --enable-server --enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl
[root@zabbix-server zabbix-3.4.4]# make && make install
–enable-server安装部署zabbix服务器端软件
–enable-agent安装部署zabbix被监控端软件
–enable-proxy安装部署zabbix代理相关软件
–with-mysql指定mysql_config路径
–with-net-snmp允许zabbix通过snmp协议监控其他设备(如交换机、路由器等)
–with-libcurl安装相关curl库文件,这样zabbix就可以通过curl连接http等服务,测试被监控主机服务的状态
2)、创建并初始化数据库
[root@zabbix-server zabbix-3.4.4]# mysql mysql> create database zabbix character set utf8; #创建数据库,数据库名称为zabbix,支持中文字符集 mysql> grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix'; #创建可以访问数据库的账户与密码,用户名是zabbix,密码是zabbix
[root@zabbix-server zabbix-3.4.4]# cd /root/zabbix-3.4.4/database/mysql/
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < data.sql
#刚刚创建是空数据库,zabbix源码包目录下,有提前准备好的数据
#使用mysql导入这些数据即可(注意导入顺序)
#-u指定数据库用户名,-p指定数据库密码
3)、修改zabbix_server配置并启动监控服务
修改zabbix_server配置文件,设置数据库相关参数,启动zabbix_server服务
[root@zabbix-server mysql]# sed -n ‘38p;95p;111p;119p’ /usr/local/etc/zabbix_server.conf
LogFile=/tmp/zabbix_server.log #38行,日志的位置,排错使用,仅查看以下即可(默认已经配置OK)
DBHost=localhost # 85行,定义数据库服务器在哪台电脑(localhost本机)
DBName=zabbix #95行,设置数据库名称。(默认已经配置OK)
DBUser=zabbix #111行,设置数据库账户。(默认已经配置OK)
DBPassword=zabbix #119行,设置数据库密码
[root@zabbix-server mysql]# useradd -s /sbin/nologin zabbix
[root@zabbix-server mysql]# zabbix_server
[root@zabbix-server mysql]# echo zabbix_server >> /etc/rc.local #设置开机自启
[root@zabbix-server mysql]# chmod +x /etc/rc.local
#确认连接状态,端口10051
[root@zabbix-server mysql]# netstat -antpu | grep zabbix_server
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 13890/zabbix_server
提示:如果是因为配置文件不对,导致服务无法启动时,不要重复执行zabbix_server,一定要先使用killall zabbix_server关闭服务后,再重新启动一次。
4)、修改Zabbix_agent配置文件,启动Zabbix_agent服务。
自定义的key文件一般存储在/usr/local/etc/zabbix_agentd.conf.d/目录,这里还需要修改zabbix_agentd.conf文件,允许自定义监控key,来读取该目录下的所有文件 。
[root@zabbix-server mysql]# vim /usr/local/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log #30行,定义日志文件的位置(默认已经配置OK)
Server=127.0.0.1,192.168.1.51 #93行,允许哪些主机监控本机
ServerActive=127.0.0.1,192.168.1.51 #134行,允许哪些主机通过主动模式监控本机
Hostname=Zabbix_server #145行,设置本机主机名
Include=/usr/local/etc/zabbix_agentd.conf.d/ #264行,加载配置文件目录。
UnsafeUserParameters=1 #280行,自定义监控可以传递参数。默认为0,表示不允许自定义key。
[root@zabbix-server mysql]# zabbix_agentd #启动监控agent
[root@zabbix-server mysql]# echo zabbix_agentd >> /etc/rc.local #设置开机自启
[root@zabbix-server mysql]# netstat -antpu | grep zabbix_agentd #查看端口信息为10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 14095/zabbix_agentd
5)、部署访问页面
[root@zabbix-server mysql]# cp -r /root/zabbix-3.4.4/frontends/php/* /usr/local/nginx/html/
[root@zabbix-server mysql]# chmod -R 777 /usr/local/nginx/html/
6)、设置监听器,添加后端服务器。
【服务器列表】—>【弹性负载均衡ELB】—>【(自定义ELB名称)】—>【监听器】—>【添加监听器】,如图-1所示。
![](index.files/image001.png)
图-1
配置后端服务器组名称,如图-2所示。
![](index.files/image002.png)
图-2
点击刚创建的监听器名称->后端服务器组->添加,如图-3所示。
![](index.files/image003.png)
图-3
添加后端服务器,并监听端口8090,如图-4、图-5所示。
![](index.files/image004.png)
图-4
![](index.files/image005.png)
图-5
7)、访问Zabbix Web界面,http://华为云公网IP:8090/
根据错误提示,修改PHP配置文件,满足Zabbix_server的Web环境要求。
#第一次访问,初始化PHP页面会检查计算机环境是否满足要求,如果不满足会给出修改建议
#默认会提示PHP的配置不满足环境要求,需要修改PHP配置文件
[root@zabbix-server mysql]# yum -y install php-gd php-xml php-ldap php-bcmath php-mbstring
[root@zabbix-server mysql]# vim /etc/php.ini
max_execution_time = 300 #384行,最大执行时间
max_input_time = 300 #394行,服务器接收数据的时间限制
memory_limit = 128M #405行,内存容量限制(默认已经配置,确认下即可)
post_max_size = 32M #672行,POST数据最大容量
date.timezone = Asia/Shanghai #878行,设置时区
[root@zabbix-server mysql]# systemctl restart php-fpm
修改完PHP配置文件后,再次使用浏览器访问zabbix-server服务器,则会提示如图-6所示信息。
![](index.files/image006.png)
图-6
在初始化数据库页面,填写数据库相关参数,如图-7,图-8所示。
![](index.files/image007.png)
图-7
![](index.files/image008.png)
图-8
在登陆页面,使用用户(admin)和密码(zabbix)登陆,如图-9所示。
![](index.files/image009.png)
图-9
登陆后在Zabbix界面点击右上角,设置语言环境为中文Chinese(zh_CN),如图-10、图-11所示。
![](index.files/image010.png)
图-10
![](index.files/image011.png)
图-11
2 案例2:制作Zabbix客户端RPM软件包
2.1 问题
本案例要求使用zabbix-3.4.4版本的源码软件,生成对应的RPM软件包。
安装rpm-build软件包,编写SPEC配置文件,创建新的RPM软件包。
2.2 步骤
步骤一、安装rpm-build软件
1)、安装rpm-build软件包
[root@nginx-0001 ~]# yum -y install rpm-build
2)、生成rpmbuild目录结构。
#有报错,无需理会,可以看到rpmbuild目录已经创建完成
[root@nginx-0001 ~]# rpmbuild -ba nginx.spec
error: failed to stat /root/nginx.spec: No such file or directory
[root@nginx-0001 ~]# ls /root/rpmbuild/
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
3)、准备工作,将源码软件复制到SOURCES目录。
[root@nginx-0001 ~]# scp root@192.168.1.252:/root/project3/DAY04/zabbix-3.4.4.tar.gz /root/rpmbuild/SOURCES/
4)、创建并修改SPEC配置文件
[root@nginx-0001 ~]# cat /root/rpmbuild/SPECS/zabbix.spec
Name:zabbix #源码包软件名称。【不能错】
Version:3.4.4 #源码包软件的实际版本号。【不能错】
Release: 22 #发布序列号,标明第几次打包,后面可使用%{release}引用
Summary: zabbix agentd #软件包的内容概要。自定义
#Group: #软件分组。(一个组中可以有多个软件包,输入组名安装软件包,可都安装。)
License: GPL #软件授权方式,通常就是GPL
URL: www.zabbix.com #网址
Source0: zabbix-3.4.4.tar.gz #源码包文件名。 【不能错】
#BuildRequires: #源码编译的依赖。(写和写都不能解决依赖,仅起到标注作用。)
#Requires #yum安装的依赖。
%description #定义rpm包的描述信息
This is zabbix rpm from dayu
%post #rpm包安装后执行的脚本。今后有人在使用这个软件包安装时,就会触发下面的脚本内容。
useradd -s /sbin/nologin zabbix
%prep #rpm包安装前执行的脚本
%setup -q #自动解压源码并cd
%build #定义编译软件包时的操作
./configure --enable-agent #配置源码【需要修改】
make %{?_smp_mflags}
%install
make install DESTDIR=%{buildroot}
%files
%doc #对哪个目录打包用来做rpm包
/usr/local/sbin/zabbix_agentd
/usr/local/bin/zabbix_get
/usr/local/bin/zabbix_sender
/usr/local/etc/zabbix_agentd.conf.d
/usr/local/etc/zabbix_agentd.conf
/usr/local/share/man/man1/zabbix_get.1
/usr/local/share/man/man1/zabbix_sender.1
/usr/local/share/man/man8/zabbix_agentd.8
%changelog
2、使用配置文件创建RPM包
1)、安装依赖软件包
yum -y install gcc pcre-devel openssl-devel
2)、rpmbuild创建RPM软件包
[root@nginx-0001 ~]# rpmbuild -ba /root/rpmbuild/SPECS/zabbix.spec
[root@nginx-0001 ~]# ls /root/rpmbuild/RPMS/x86_64/
zabbix-3.4.4-22.x86_64.rpm zabbix-debuginfo-3.4.4-22.x86_64.rpm
3 案例3、Zabbix自动化监控
3.1 问题
本案例要求配置Zabbix自动发现机制。
- 沿用案例二制作的rpm包,为三台Nginx部署Zabbix客户端。
- 创建Web监测
- 创建自动发现规则
- 创建自动发现后的动作,添加主机、为主机链接模板。
3.2 方案
当Zabbix需要监控的设备越来越多,手动添加监控设备越来越有挑战,此时,可以考虑使用自动发现功能,自动添加被监控主机,实现自动批量添加一组监控主机功能。
3.3 步骤
实现此案例需要按照如下步骤进行。
步骤一、为三台Nginx部署Zabbix客户端。
1)、将Zabbix客户端软件分发到三台Nginx服务器上。
[root@ecs-proxy ansible]# ansible web -m copy -a "src=/root/project3/DAY04/zabbix-3.4.4-22.x86_64.rpm dest=/root/"
2)、安装软件包
[root@ecs-proxy ansible]# ansible web -m shell -a "yum -y install /root/zabbix-3.4.4-22.x86_64.rpm" [root@ecs-proxy ansible]# chmod +x /root/project3/DAY04/zabbix_agent.sh [root@ecs-proxy ansible]# ansible web -m script -a "/root/project3/DAY04/zabbix_agent.sh"
3)、Zabbix客户端启动是否成功
[root@nginx-0001 ~]# netstat -antpu |grep zabbix_agent tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 27128/zabbix_agentd
[root@nginx-0002 ~]# netstat -antpu | grep zabbix_agent
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 11430/zabbix_agentd[root@nginx-0003 ~]# netstat -antpu |grep zabbix_agent
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 1454/zabbix_agentd
步骤二、创建Web监测
监控网站的指标:平均下载速度、响应时间、HTTP状态码
zabbix提供了web监测功能,监控到站点的响应时间,还可以根据站点返回的状态码等。
1)、创建模板,如图-12所示
模板名称可自定义,可选择现有群组,也可以在下方写新模板的名称,会自动创建。
图-12
创建完成后,点击群组,能够快速刚刚创建的模版,点击Web监测,如图-13所示。
图-13
2)、在Web监测中创建Web场景,如图-14所示
图-14
名称,自定义填写。客户端模拟用户去访问网站使用的浏览器类型。
图-15
添加步骤,监测目前的nginx-0001、nginx-0002、nginx-0003网站。如图-16所示。
图-16
3)、关联模版
将Zabbix Server设备开启,点击状态下“停用的”即可开启,如图-17所示。
图-17
关联刚才新创建的模版,如图-18所示。
图-18
添加完成后,点击【监测中】->【Web监测】,查看由哪台主机进行监测。如图-19所示。当点击名称,即可看到网页检测的数据图。
图-19
因为字体的原因,打开的页面显示出很多乱码。需要向/usr/local/nginx/html/fonts中导入字体。
[root@zabbix-server ~]# scp 192.168.1.252:/root/project3/DAY04/simkai.ttf /usr/local/nginx/html/fonts/
[root@zabbix-server ~]# ls /usr/local/nginx/html/fonts/
DejaVuSans.ttf simkai.ttf
[root@zabbix-server ~]# mv /usr/local/nginx/html/fonts/simkai.ttf /usr/local/nginx/html/fonts/DejaVuSans.ttf
mv: overwrite ‘/usr/local/nginx/html/fonts/DejaVuSans.ttf’? yes导入字体刷新页面,即可看到下载速度的图表和响应时间的图表,如图-20所示。
图-20
步骤二、自动发现规则
1)、创建自动发现规则
通过Configuration(配置)-->Discovery(自动发现)-->Create discovery rule(创建发现规则),如图-21所示。
图-21
2)填写规则
填写自动发现的IP范围(逗号隔开可以写多个),多久做一次自动发现(默认为1小时,仅实验修改为1m),如图-22所示。
图-22
3、创建动作
1)、创建Action动作
通过Configuration(配置)--> Actions(动作)--> Actions Event source(事件源):自动发现(Discovery)-->Create action(创建动作),如图-23所示。
图-23
2)配置Action动作具体行为
配置动作,添加动作名称,添加触发动作的条件。如图-24所示。
图-24
点击操作(触发动作后要执行的操作指令),操作细节:与模板链接(HTTP模板 OS Linux模版)。如图-25所示。
图-25
【注意:每台被监控主机必须要属于一个主机组,在这里会自动生成一个Discovered hosts群组,把自动发现的主机加入。】
通过Configuration(配置)--> Hosts(主机),如图-26所示。
图-26
4 案例4、自定义Zabbix监控项目
4.1 问题
使用Zabbix实现自定义监控,实现以下目标:监控nginx-0003主机登录用户数量。需要使用Zabbix自定义key的方式实现自定义监控,参考如下操作步骤:
- 创建自定义key
- 创建监控项目
- 创建监控图形
4.2 步骤
实现此案例需要按照如下步骤进行。
步骤一、被监控主机创建自定义key(在192.168.1.13上操作)
1)、创建自定义key
Zabbix虽然自带了许多Key,能满足大多数的监控需求。但是真正在生产上还是有很多不足的。所以Zabbix还提供了一种自定义Key来实现这种需求。
自定义key语法格式为:UserParameter=自定义key名称,命令。
自定义的key文件一般存储在/usr/local/etc/zabbix_agentd.conf.d/目录,这里还需要修改zabbix_agentd.conf文件,允许自定义监控key,来读取该目录下的所有文件 。
【注意,之前在自动化案例中已经将该配置的注释去掉,此处只是为了确认。】
[root@nginx-0003 ~]# sed -n '264p' /usr/local/etc/zabbix_agentd.conf Include=/usr/local/etc/zabbix_agentd.conf.d/ [root@nginx-0003 ~]# cat /usr/local/etc/zabbix_agentd.conf.d/count.login.num UserParameter=count.login.num,w --no-header | wc -l
2)测试自定义key是否正常工作
[root@nginx-0003 ~]# killall zabbix_agentd [root@nginx-0003 ~]# zabbix_agentd [root@nginx-0003 ~]# zabbix_get -s 127.0.0.1 -k count.login.num 2
步骤二、创建监控模版
1)添加监控模板
登录Zabbix Web监控控制台,通过Configuration(配置)-->Template(模板)-->Create template(创建模板),填写模板名称,新建模板群组。如图-27,图-28所示。
图-27
图-28
2)创建应用集
创建完成模板后,默认模板中没有任何应用集、监控项、触发器、图形等资源。这里需要点击模板后面的Application(应用集)链接打开创建应用的页面。如图-29所示。
图-29
点击Application(应用集)后,在该页面中点击Create application(创建应用集)按钮。如图-30所示。
图-30
设置应用名称,名称可以任意,如图-31所示。
图-31
3)创建监控项目item(监控项)
与创建应用一样,在模板中还需要创建监控项目。点击items(监控项),并在刷新出的新页面中选择Create items(创建监控项)创建项目。如图-32、图-33所示。
图-32
图-33
接下来,还需要给项目设置名称(名称可以任意)及对应的自定义key(必须与前面自定义的监控key名称一致)。如图-34所示。
图-34
4)创建图形
为了后期可以通过图形的方式展示监控数据,还需要在模板中创建图形,设置方法与前面的步骤一致,在监控模板后面点击Graph(图形)即可创建图形,设置监控图形基于什么监控数据。如图-35,图-36所示。
图-35
图-36
5)将模版链接到被监控主机nginx-0003上。
将完整的监控模板制作完成后,就可以将模板链接到主机实现监控功能了。首先找到被监控主机Configuration(配置)-->Hosts(主机)。如图-37所示。
图-37
点击需要的被监控主机链接,打开监控主机设置页面,在Template(模板)页面中选择需要链接到该主机的模板,在此选择刚刚创建的模板count_num添加即可。如图-38所示。
图-38
6)查看监控数据图形
点击Monitoring(监控中)-->Craphs(图形),根据需要选择条件,查看监控图形。如图-39所示。
图-39
5 案例5、监控报警
5.1 问题
沿用前面的Zabbix练习环境,使用Zabbix实现报警功能。
- 注册163网易邮箱账号,并且申请授权码
- 设置邮件服务器及收件人邮件
- 当系统登录用户数量超过5人时发送报警邮件
5.2 步骤
步骤一、注册163网易邮箱账号,申请授权码
授权码是用于登录第三方邮件客户端的专用密码,启用授权码,避免密码泄漏造成邮箱安全隐患,使用邮件客户端更安心。
1)登陆网易邮箱,【设置】—>【POP3/SMTP/IMAP】,如图-40所示。
图-40
2)将两个服务开启。(开启需要手机发送短信。发送完后,点击“我已发送”),如图-41所示。
图-41
出现授权码,用于第三方邮件客户端登录。如图-42所示。
图-42
步骤二、创建触发器规则
1)、创建触发器
通过Configuration(配置)--> Templates(模板),找到我们在案例四中创建的模板count_num,点击模板后面的triggers(触发器)。如图-43所示。
图-43
点击创建触发器按钮,如图-44所示。
图-44
2)配置触发器
设置触发器名称,点击add[添加]表达式,填写表达式:监控项为登录系统的用户数量,最近账户数量大于5。如图-45、图-46所示。
图-45
图-46
步骤三、设置邮件
1)创建Media
通过Administration(管理)-->Media Type(报警媒体类型)-->选择Email(邮件)。如图-47所示。
图-47
设置邮件服务器信息,设置邮件服务器及发件人邮件账户信息。如图-48所示。
【注意:此处的密码为邮箱的授权码】
图-48
2)为用户添加Media(设置收件人信息)
在Administration(管理)-->Users(用户)中找到选择Admin账户。如图-49所示。
图-49
点击Admin账户后,在弹出的界面中选择Media(报警媒介)菜单-->点击Add(添加)报警媒介。如图-50所示。
图-50
点击Add(添加)后,在Meida Type(类型)中填写报警类型,收件人,时间等信息。如图-51所示。
图-51
步骤四、创建Action动作
1)Action动作
Action(动作)是定义当触发器被触发时的时候,执行什么行为。
通过Configuration(配置)-->Actions(动作)-->Create action(创建动作),注意事件源选择触发器。如图-52所示。
图-52
2)配置Action动作的触发条件
填写Action动作的名称,配置什么触发器被触发时会执行本Action动作(登录用户数量大于5)。如图-53所示。
图-53
3)配置Action动作的具体行为
配置动作的具体操作行为(发送信息或执行远程命令),无限次数发送邮件,60秒1次,发送给Admin用户,如图-54、图-55所示。
图-54
图-55
4)购买弹性公网IP,按需付费,并绑定zabbix-server主机。如图-56、图-57所示。
图-56
图-57
5)、开启25端口
为了提升华为云IP地址发邮件的质量,基于安全考虑,TCP 25端口出方向默认被封禁,无法使用TCP 25端口连接外部地址。如果存在特殊场景,您必须在云服务器上使用TCP 25端口进行对外连接,请提交25端口解封申请。
【工单】—>【新建工单】—>【弹性云服务器】—>【25端口解封】—>【新建工单】
填入zabbix-server主机的弹性公网IP,不需要通过手机、邮件联系,6遵守许可,点击提交即可。如图-58所示。
图-58
6)、测试效果
开启终端登录nginx-0003(登录用户数大于5),然后登录监控端Web页面,在仪表盘中查看问题报警(需要等待一段时间)。并查看自己的QQ邮箱。如图-59所示。
图-59
[练习]
告警主机: {HOSTNAME1}
告警时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME} : {ITEM.VALUE}
当前状态: {TRIGGER.STATUS} : {ITEM.VALUE1}
事件ID: {EVENT.ID}
6 案例6:Zabbix分布式监控
6.1 问题
本案例要求部署Zabbix分布式。
- Zabbix分布式Proxy安装
- Zabbix分布式监控Linux
6.2 方案
Zabbix Proxy可以代替Zabbix Server检索客户端的数据,然后把数据汇报给Zabbix Server,并且在一定程度上分担了Zabbix Server的压力Zabbix Proxy可以非常简便的实现了集中式、分布式监控。
Zabbix Proxy 使用场景:
监控远程区域设备
监控本地网络不稳定区域
当 Zabbix 监控上千设备时,使用它来减轻 Server 的压力
简化分布式监控的维护
6.3 步骤
实现此案例需要按照如下步骤进行。
步骤一、Zabbix分布式Proxy安装
1)、购买华为云服务器
基础配置:无 网络配置:手动分配IP地址 192.168.1.52 高级配置:云服务器名称 zabbix-proxy 确认配置:1台 基础配置:无 网络配置:手动分配IP地址 192.168.1.53 高级配置:云服务器名称 zabbix-agentd 确认配置:1台
2)、安装软件
[root@zabbix-proxy ~]# scp root@192.168.1.252:/root/project3/DAY04/zabbix-3.4.4.tar.gz /root [root@zabbix-proxy ~]# yum -y install net-snmp-devel curl-devel autoconf libevent-devel [root@zabbix-proxy ~]# yum -y install mariadb mariadb-server mariadb-devel [root@zabbix-proxy ~]# systemctl enable --now mariadb [root@zabbix-proxy ~]# useradd -s /sbin/nologin zabbix [root@zabbix-proxy ~]# tar -xf zabbix-3.4.4.tar.gz [root@zabbix-proxy ~]# cd zabbix-3.4.4/ [root@zabbix-proxy zabbix-3.4.4]#./configure --enable-proxy --enable-agent --with-mysql --with-net-snmp --with-libcurl [root@zabbix-proxy zabbix-3.4.4]# make && make install
查看Zabbix Proxy的版本
[root@zabbix-proxy zabbix-3.4.4]# /usr/local/sbin/zabbix_proxy –version
3)、Mysql数据库初始化
[root@zabbix-proxy ~]# mysql
MariaDB [(none)]> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@‘127.0.0.1’ identified by ‘zabbix123’;
Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> use zabbix;
MariaDB [zabbix]> source /root/zabbix-3.4.4/database/mysql/schema.sql;
4)、Zabbix分布式Proxy配置
[root@zabbix-proxy ~]# sed -n “24p;43p;85p;150p;161p;176p;184p;198p” /usr/local/etc/zabbix_proxy.conf
Server=192.168.1.51 #第24行,zabbix server服务器的地址或主机名
Hostname=shproxy #第43行,代理服务器名称, 需要与zabbix server添加代理时候proxy name一致。
LogFile=/tmp/zabbix_proxy.log #第85行,代理服务器的日志。
DBHost=127.0.0.1 #第150行,数据库地址。
DBName=zabbix #第161行,数据库名。
DBUser=zabbix #第176行,数据库用户名称。
DBPassword=zabbix123 #第184行,数据库登陆的密码
DBPort=3306 #第198行,数据库的端口。[root@zabbix-proxy ~]# zabbix_proxy
[root@zabbix-proxy ~]# netstat -atnpu | grep zabbix_proxy
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 28582/zabbix_proxy
5)、创建代理
通过管理–> agent代理程序,点击创建代理,如图-60、图61所示。
图-60
注意:agent代理程序名称一定要与192.168.1.52(zabbix-proxy主机)配置文件中Hostname设置的名称一致。
图-61
步骤二、Zabbix分布式监控Linux
1)、部署一台Zabbix客户端
可以按照以下步骤操作,也可以使用案例2制作的RPM包完成Zabbix客户端的快速部署。
[root@zabbix-agent ~]# yum -y install pcre-devel
[root@zabbix-agent ~]# useradd -s /sbin/nologin Zabbix
[root@zabbix-agent ~]# scp root@192.168.1.252:/root/project3/DAY04/zabbix-3.4.4.tar.gz /root
[root@zabbix-agent ~]# tar -xf /root/zabbix-3.4.4.tar.gz
[root@zabbix-agent ~]# cd /root/zabbix-3.4.4/
[root@zabbix-agent zabbix-3.4.4]# ./configure --enable-agent
[root@zabbix-agent zabbix-3.4.4]#make && make install
[root@zabbix-agent zabbix-3.4.4]#sed -n ‘30p;93p;134p;145p;264p;280p’ /usr/local/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=192.168.1.52 #此处指向zabbix-proxy主机的IP地址
ServerActive=192.168.1.52 #此处指向zabbix-proxy主机的IP地址
Hostname=zabbix-agent
Include=/usr/local/etc/zabbix_agentd.conf.d/
UnsafeUserParameters=1[root@zabbix-agent zabbix-3.4.4]# zabbix_agentd
[root@zabbix-agent zabbix-3.4.4]# netstat -atnpu | grep zabbix_agentd
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 11940/zabbix_agentd
2)、创建主机
通过Configuration(配置)–> Hosts(主机),如图-62、图-63所示。
图-62
由agent代理程序监测选择创建好的agent代理程序(shproxy)。
图-63
在Template(模板)页面中选择需要链接到该主机的模板,在此选择模板。如图64所示。
图-64
3)、查看监控数据图形
点击Monitoring(监控中)–>Craphs(图形),根据需要选择条件,查看监控图形。如图-65所示。
图-65
7 案例7:Grafana数据可视化
7.1 问题
本案例要求部署Granfana
- 安装Grafana与配置
- Grafana展示Zabbix数据
7.2 方案
Grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现。权威的资料网站是官网(http://docs.grafana.org/)。
7.3 步骤
实现此案例需要按照如下步骤进行。
步骤一、安装Grafana与配置
1)安装软件
[root@zabbix-server ~]# scp 192.168.1.252:/root/project3/DAY04/grafana-6.3.6-1.x86_64.rpm /root [root@zabbix-server ~]# yum localinstall /root/grafana-6.3.6-1.x86_64.rpm [root@zabbix-server ~]# systemctl enable grafana-server --now [root@zabbix-server ~]# netstat -anptu | grep grafana tcp6 0 0 :::3000 :::* LISTEN 20920/grafana-serve
2)创建监听器并添加后端服务器【监听端口3000】,如图-66、图-67、图-68所示。
图-66
图-67
图-68
3)、访问http://公网IP:3000,登录grafana管理界面。如图-69所示。
登录用户名admin 密码admin
第一次登录时,需要修改密码。
图-69
4)安装插件,支持Grafana连接zabbix-server
Grafana是一个纯静态的仪表盘,本身并没有数据,需要配置数据源从哪里获取,Grafana支持从Zabbix中获取数据。Grafana优化了图形的展现,可以用来做监控大屏。
方式一:在线安装插件 (需要连接外网,较慢。)
[root@zabbix-server ~]# grafana-cli -help #列出远端可用的插件 [root@zabbix-server ~]# grafana-cli plugins list-remote #安装插件 [root@zabbix-server ~]# grafana-cli plugins install alexanderzobnin-zabbix-app 3.12.2 installing alexanderzobnin-zabbix-app @ 3.12.2 from: https://grafana.com/api/plugins/alexanderzobnin-zabbix-app/versions/3.12.2/download into: /var/lib/grafana/plugins
? Installed alexanderzobnin-zabbix-app successfully
Restart grafana after installing plugins . <service grafana-server restart>
[root@zabbix-server ~]# systemctl restart grafana-server #重启服务
方式二:手动下载离线安装插件
若在线方式安装超时,可以手动下载安装
第一步:访问官网,找到要下载的插件,并且选择版本,下载。
第二步:将插件的压缩包释放到/var/lib/grafana/plugins默认目录下,重启服务即可。
刷新之后,在主页中会出现一个App,点击后面的【Enable now】。如图-70所示。
图-70
激活插件,点击【Enable】,如图-71所示。。
图-71
5)安装好插件alexanderzobnin-zabbix-app,点击【Data Source】就可以添加数据来源。如图-72、图-73所示。
图-72
图-73
在搜索框里输入zabbix即可快速找到,如图-74所示。
图-74
在URL中输入Zabbix的接口地址,如:http://192.168.1.51:8090/api_jsonrpc.php
在Username和Password分别输入Zabbix的登录用户及密码。如图-75所示。
图-75
Grafana的logo,即当前页为Grafana的主页,在任何页面点击Grafana的logo,都会跳转到主页。如图-76所示。
图-76
新建按钮,用于创建Dashaboard,文件夹、以及高如外部的Dashboard。如图-77所示。
图-77
用于查看或管理Dashboard。如图-78所示。
图-78
Explore(探索),主要用于快速编写查询语句,来查询数据中的数据。如图-79所示。
图-79
告警设置,可以设置邮件、钉钉、短信的告警。如图-80所示。
图-80
设置。包括这是Data Sources(数据源)、Users(用户)、Teams(创建团队)、Plugin(插件查找)、perferences(个人性设置) API keys(API密钥)。如图-81所示。
图-81
管理设置,包括Users(用户创建),Org(组织创建)、Settings(设置参数查看)、stats(Grafana本身状态信息统计)、upgrade(Grafana 软件升级)。如图-82所示。
图-82
步骤二、Grafana展示Zabbix数据
1)创建仪表盘,如图-83所示。
图-83
自定义仪表盘名称,保存仪表盘。如图-84、图-85所示。
图-84
图-85
2)、添加图形(CPU负载),如图-86。
图-86
创建图表,如图-87所示。
图-87
显示192.168.1.11(nginx-0001)主机的负载,如图-88所示。
Item使用正则表达式,匹配所有的负载。
图-88
3)、更改标题,如图-89、图-90所示。
图-89
图-90
4)、优化图表,如图-91所示。优化完成后,进行保存。
图-91
5)、添加图形(服务器网卡流量)。对现有的图表,进行复制更改,如图-92所示。
图-92
对复制出来的图标进行编辑,如图-93、图-94、图-95所示。
图-93
图-94
图-95
8 案例8:部署企业私有镜像仓库Habor
8.1 问题
本案例要求在华为云服务器上侯建私有镜像仓库
- 部署私有镜像仓库harbor
- 部署docker主机测试
8.2 方案
私有镜像仓库有许多优点
1)节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可;
2)提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用。
VMware公司开源了企业级Registry项目Harbor,其的目标是帮助用户迅速搭建一个企业级的Docker registry 服务。
准备如表-2所示的实验环境,配置主机名称、IP地址。
表-2 主机列表
8.3 步骤
实现此案例需要按照如下步骤进行。
步骤一、购买华为云服务器更新ecs-proxy配置文件
1)、购买华为云服务器
基础配置:无 网络配置:手动分配IP地址 192.168.1.67 高级配置:云服务器名称 harbor 确认配置:1台 基础配置:无 网络配置:手动分配IP地址 192.168.1.68 高级配置:云服务器名称 docker 确认配置:1台
2)、更新/etc/hosts
[root@ecs-proxy ~]# cat >> /etc/hosts <<EOF 192.168.1.67 harbor 192.168.1.68 docker EOF
3)、更新/root/ansible/hosts配置文件
[root@ecs-proxy ~]# cat >> /root/ansible/hosts <<EOF [harbor] 192.168.1.67 [docker] 192.168.1.68 EOF #将最新的/etc/hosts配置文件更新到所有的云主机上 [root@ecs-proxy ansible]# ansible all -m copy -a 'src=/etc/hosts dest=/etc'
4)部署docker安装源
[root@ecs-proxy ansible]# mkdir /var/ftp/localrepo/docker [root@ecs-proxy absible]# cp -a /root/project3/DAY04/docker/* /var/ftp/localrepo/docker [root@ecs-proxy ansible]# createrepo --update /var/ftp/localrepo
5)分发实验所需软件包
Dokcer Compose 是用于定义和运行多容器 Docker 应用程序的工具。
Harbor的每个组件都是以Docker容器的形式构建的,所以使用Docker Compose来对它进行部署。
[root@ecs-proxy ansible]# ansible harbor -m copy -a "src=/root/project3/DAY04/docker-compose dest=/root" [root@ecs-proxy ansible]# ansible harbor -m copy -a "src=/root/project3/DAY04/harbor-offline-installer-v1.2.0.tgz dest=/root"
步骤二、部署私有镜像仓库harbor
1)、开启路由转发
[root@harbor ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf [root@harbor ~]# sysctl -p
2)、安装docker服务,并启动
[root@harbor ~]# yum -y install docker-ce [root@harbor ~]# systemctl start docker [root@harbor ~]# systemctl enable docker
3)、部署harbor
[root@harbor ~]# mv /root/docker-compose /usr/local/bin/ [root@harbor ~]# chmod +x /usr/local/bin/docker-compose [root@harbor ~]# tar -xf harbor-offline-installer-v1.2.0.tgz -C /usr/local/ [root@harbor ~]# cd /usr/local/harbor [rootharbor harbor]# ls common docker-compose.notary.yml harbor_1_1_0_template harbor.v1.2.0.tar.gz LICENSE prepare docker-compose.clair.yml docker-compose.yml harbor.cfg install.sh NOTICE upgrade
4)修改配置文件
#访问harbor管理界面的地址,改为本机的IP地址 [root@harbor harbor]# sed -i '/^hostname/s/reg.mydomain.com/192.168.1.67/' /usr/local/harbor/harbor.cfg [root@harbor harbor]# sed -i '121 s/80:80/8099:80/' /usr/local/harbor/docker-compose.yml #默认是访问80端口,但因为80端口与Nginx集群冲突,故改变访问端口为8099 [root@harbor harbor]#sed -i '24 s/$ui_url/$ui_url:8099/' /usr/local/harbor/common/templates/registry/config.yml
[root@harbor harbor]# ./install.sh
…
✔ ----Harbor has been installed and started successfully.----Now you should be able to visit the admin portal at http://192.168.1.67.
For more details, please visit https://github.com/vmware/harbor .[root@harbor harbor]# netstat -antpu | grep 8099
tcp6 0 0 :::8099 ::😗 LISTEN 3028/docker-proxy
5)、设置监听器,添加后端服务器。
【服务器列表】—>【弹性负载均衡ELB】—>【(自定义ELB名称)】—>【监听器】—>【添加监听器】。如图-96、图-97、图-98、图-99所示。
图-96
图-97
图-98
图-99
6)、访问Harbor界面(http://公网IP地址:8099)。如图-100、图-101所示。
用户名:admin
密码:Harbor12345
图-100
图-101
步骤三、部署一台Docker主机用于测试上传和下载。
1)、安装docker软件。
Docker Registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。为了解决这个问题需要在启动docke时增加启动参数为默认使用http访问。这个是在客户机的docker配置文件里添加的(即上传镜像到私有仓库里或从私有仓库下载镜像的客户机)。
[root@docker ~]# yum -y install docker-ce
[root@docker ~]# sed -i ‘/ExecStart/s/$/ --insecure-registry 192.168.1.67:8099/’ /usr/lib/systemd/system/docker.service
[root@docker ~]# systemctl daemon-reload && systemctl enable docker && systemctl start docker
2)、测试登录Harbor镜像仓库。
[root@docker ~]# docker login http://192.168.1.67:8099
Username: admin
Password: Harbor12345
Login Succeeded#密码信息会存储在/root/.docker/config.json中。
注意:
如果没有添加–insecure-registry 192.168.1.67:8099/,在登录时会报以下错误。
Error response from daemon: Get https://192.168.1.67:8099/v2/: http: server gave HTTP response to HTTPS client
解决方法:添加参数,重启服务即可。
3)向私有仓库中上传镜像
[root@docker ~]# scp root@192.168.1.252:/root/project3/DAY04/busybox.tar /root
#导入镜像
[root@docker ~]# docker load -i /root/busybox.tar
#查看系统中镜像
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest be5888e67be6 2 months ago 1.22MB
#更改标签
[root@docker ~]# docker tag busybox:latest 192.168.1.67:8099/library/busybox:latest
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.67:8099/library/busybox latest be5888e67be6 2 months ago 1.22MB
busybox latest be5888e67be6 2 months ago 1.22MB
#向私有仓库推送镜像
[root@docker ~]# docker push 192.168.1.67:8099/library/busybox:latest
The push refers to repository [192.168.1.67:8099/library/busybox]
5b0d2d635df8: Pushed
latest: digest: sha256:a2490cec4484ee6c1068ba3a05f89934010c85242f736280b35343483b2264b6 size: 527
4)在界面中查看刚刚上传的镜像文件。
能够看到镜像仓库数为1,点击项目名称,查看该项目下的镜像文件。如图-102、图-103所示。
图-102
图-103
5)将系统中目前有的镜像文件删除, 从私有镜像仓库中下载镜像
[root@docker ~]# docker rmi 192.168.1.67:8099/library/busybox:latest
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest be5888e67be6 2 months ago 1.22MB
下载镜像
[root@docker ~]# docker pull 192.168.1.67:8099/library/busybox:latest
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.67:8099/library/busybox latest be5888e67be6 2 months ago 1.22MB
busybox latest be5888e67be6 2 months ago 1.22MB
明确的看到该镜像的下载次数为1。如图-104所示。
图-104
点击左侧导航栏,可以看到日志信息。如图-105所示。
图-105