51.运维8nginx-高可用

73.nginx动静分离:

0.回顾
	1) LNMP架构常见问题
	   a 如何实现WEB服务器和存储服务器建立关系
	     web+nfs   
         1) 找到网站数据存储的本地目录
		 2) 如果本地存储目录有数据,需要进行迁移备份
		 3) 编写查看nfs服务配置参数(xxx_squash)
		 4) 实现挂载操作(实现开机自动挂载)
		 
		 web+mysql
		 1) 将本地数据数据进行备份 mysqldump --all-database
		 2) 将备份数据进行迁移
		 3) 将数据进行还原
		 4) 修改代码文件,连接新的数据库服务
       b 负载均衡概念说明
	     什么是集群
		 什么是负载
		 什么是反向代理
	   c 负载均衡集群架构部署
	     集群环境部署
		 负载均衡部署
		 upstream模块  实现负载均衡
		 proxy_pass    实现反向代理
	   d 负载均衡相关模块详细说明
	   e 负载均衡异常排错思路
        
1.课程介绍
	1) 负载均衡遗留知识点补充
	2) 高可用服务的概念介绍
	3) 部署安装高可用服务
	4) 高可用服务配置文件参数说明
	5) 高可用服务VRRP协议原理
	6) 高可用服务常见问题(脑裂文件)
	7) 高可用服务如何进行监控
	8) 高可用服务实现双主配置
    
2.负载均衡企业实践应用
    1) 根据用户访问的uri信息进行负载均衡
	第一个历程: 架构环境规划
	/upload	  集群-10.0.0.8:80	html/www/upload	   upload服务器集群
	/static   集群-10.0.0.7:80  html/www/static    static服务器集群
	/         集群-10.0.0.9:80  html/www           default服务器集群
	
	web02上进行环境部署:
	[root@web02 ~]# mkdir /html/www/upload
    [root@web02 ~]# echo  "upload-web集群_10.0.0.8" >/html/www/upload/oldboy.html
    web01上进行环境部署:
	[root@oldboy01 html]# mkdir /html/www/static
    [root@oldboy01 html]# echo static-web集群_10.0.0.7 >/html/www/static/oldboy.html
	web03上进行环境部署:
    echo  "default-web集群_10.0.0.9" >/html/www/oldboy.html	

	第二个历程: 编写负载均衡配置文件
    [root@lb01 conf.d]# cat lb.conf
    upstream upload {
       server 10.0.0.8:80;
    }
    upstream static {
       server 10.0.0.7:80;
    }
    upstream default {
       server 10.0.0.9:80;
    }
    
    server {
        listen       80;
        server_name  www.oldboy.com;
        location / {
           proxy_pass http://default;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $remote_addr;
           proxy_next_upstream error timeout http_404 http_502 http_403;
        }
        location /upload {
           proxy_pass http://upload;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $remote_addr;
           proxy_next_upstream error timeout http_404 http_502 http_403;
        }
        location /static {
           proxy_pass http://static;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $remote_addr;
           proxy_next_upstream error timeout http_404 http_502 http_403;
        }
    }	
	
        server {
        listen       	80;
        server_name	 www.oldboy.com;
        location / {
          root html/static;
          index index.html;
          #auth_basic	"oldboy_sz_01";
          #auth_basic_user_file ../passwd/htpasswd;
          #  autoindex on;
          charset utf-8;
        }
    }
    
    # curl -H host:www.oldboy.com 172.16.1.7/static/ 访问时最后的/一定要加上,否则找不目录一直报错
    
	总结: 实现网站集群动静分离
	01. 提高网站服务安全性
	02. 管理操作工作简化
	03. 可以换分不同人员管理不同集群服务器
	
	2) 根据用户访问的终端信息显示不同页面
	第一个历程: 准备架构环境
	iphone   www.oldboy.com  --- iphone_access 10.0.0.7:80  mobile移动端集群
	谷歌     www.oldboy.com  --- google_access 10.0.0.8:80  web端集群
	IE 360   www.oldboy.com  --- default_access 10.0.0.9:80 default端集群
	
	web01:
	echo "iphone_access 10.0.0.7" >/html/www/oldboy.html
	web02:
	echo "google_access 10.0.0.8" >/html/www/oldboy.html
	web03:
	echo "default_access 10.0.0.9" >/html/www/oldboy.html

    第二个历程: 编写负载均衡配置文件
    [root@lb01 conf.d]# cat lb.conf
    upstream web {
       server 10.0.0.8:80;
    }
    upstream mobile {
       server 10.0.0.7:80;
    }
    upstream default {
       server 10.0.0.9:80;
    }
    
    
    server {
        listen       80;
        server_name  www.oldboy.com;
        location / {
           if ($http_user_agent ~* iphone) {
              proxy_pass http://mobile;
           }
           if ($http_user_agent ~* Chrome) {
             proxy_pass  http://web;
           }
           proxy_pass http://default;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $remote_addr;
           proxy_next_upstream error timeout http_404 http_502 http_403;
        }
    }

74.高可用服务:

高可用:

1589966864521

VRRP:

1589966927889

VRRP:

1589967266002

1589967310171

1. 高可用服务介绍说明
    避免负载均衡服务出现单点问题			# 类似于备胎服务器
	
2. 高可用服务的原理
    见图说明
	
3. 如何实现部署高可用服务
    利用keepalived软件实现
	作用:
	1. 为LVS服务而诞生出来的   k8s + 容器技术docker 容器<--镜像<--仓库  春节抢红包
                                keepalived + LVS负载均衡软件(4层)
	2. 实现高可用服务功能
	
4. 高可用keepalived服务部署流程
    第一个历程: 准备高可用服务架构
	第二个历程: 安装部署keepalived软件 (lb01 lb02)
	yum install -y keepalived
	第三个历程: 编写keepalived配置文件  # 通过rpa -qa keepalive
	vim /etc/keepalived/keepalived.conf
    GLOBAL	CONFIGURATION			--- 全局配置部分
	VRRPD 	CONFIGURATION			--- VRRP协议配置部分
    LVS 	CONFIGURATION			--- LVS服务管理配置部分  #现在不用这部分配置文件可以删除
    
    [root@lb01 ~]# cat /etc/keepalived/keepalived.conf 
    ! Configuration File for keepalived
   
    global_defs {                  	--- 全局配置部分
       notification_email {			--- 设置发送邮件信息的收件人
         acassen@firewall.loc
         failover@firewall.loc
         sysadmin@firewall.loc
       }
       notification_email_from oldboy@163.com   --- 设置连接的邮件服务器信息
       smtp_server 163.smtp.xxx_
       smtp_connect_timeout 30 
       # 上面全是监控的配置,后面学到的zibbix可以代替
       router_id lb01           --- 高可用集群主机身份标识(集群中主机身份标识名称不能重复)
    }
   
    vrrp_instance oldboy {           --- Vrrp协议家族 oldboy  # 类似于python中的实例(类的对象)
        state MASTER                 --- 标识所在家族中的身份 (MASTER/BACKUP)
        interface eth0               --- 指定虚拟IP地址出现在什么网卡上
        virtual_router_id 51         --- 标识家族身份信息 多台高可用服务配置要一致 # 一组服务的id 
        priority 100                 --- 设定优先级 优先级越高,就越有可能成为主  # 优先使用权
        advert_int 1                 --- 定义组播包发送的间隔时间(秒)  主和备配置一样  1 # 组播发送间隔时间
        authentication {             --- 实现通讯需要有认证过程 # 用户认证
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {          --- 配置虚拟IP地址信息  
            192.168.200.16   # 这里配置的eth0网卡网段中的一个ip
            192.168.200.17
            192.168.200.18
        }
    }

    lb01配置信息:
    [root@lb01 ~]# cat /etc/keepalived/keepalived.conf 
    ! Configuration File for keepalived
    
    global_defs {
        router_id lb02   # 名称不能重复
    }
   
    vrrp_instance oldboy {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 150
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            10.0.0.3/24   # 小心掩码,需要填写
        }
    }
    lb02配置信息:
    ! Configuration File for keepalived
    
    global_defs {
       router_id lb02
    }
    
    vrrp_instance oldboy {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 100    # 那个优先级高哪个是主
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            10.0.0.3/24 
        }   
    }
    
    第三个历程: 启动keepalived服务
    ...

	第四个历程: 修改域名和IP地址解析关系
     10.0.0.3   www.oldboy.com   # 需要将hosts文件对应关系进行修改

75.脑裂问题:

1589972445085

1.  高可用服务企业应用
    1. 高可用服务常见异常问题---脑裂问题
	出现原因: 
	高可用备服务器接收不到主服务器发送的组播包,备服务器上会自动生成VIP地址

    物理原因:
	高可用集群之间通讯线路出现问题
	逻辑原因:
	有安全策略阻止  # 开启selinux防火墙造成脑裂问题(没有经过特殊配置会产生)然后备胎服务器,收不到主服务器的组播包,然后产生了两台服务器都启动了10.0.0.3虚拟网卡,这下用户彻底不知道访问谁了.
	
	如何解决脑裂问题:
	01. 进行监控,发出告警
	备服务器出现VIP地址的原因:
	a 主服务器出现故障
	b 出现脑裂问题
	#!/bin/bash
    ip a s eth0|grep "10.0.0.3" >/dev/null
    if [ $? -eq 0 ]
    then
      echo "keepalived服务出现异常,请进行检查"|mail -s 异常告警-keepalived  330882721@qq.com
    fi
	
    # cat /etc/mail.rc  查看邮件服务配置
    # systemctl start postfix.service
    # cat /var/log/message  # 查看日志,找出切换的原因
    
	shell脚本进行比较判断
	-eq  等于
	-ne  不等于
	-lt  小于
	-gt  大于
	-le  小于等于
	-ge  大于等于
	
	02. 直接关闭一台服务器的keepalived服务
	
	2. 如何实现keepalived服务自动释放vip地址资源???
	nginx(皇帝) + keepalived(妃子): nginx服务停止(皇帝死了),keepalived也必须停止(殉情)
	
	第一个历程: 编写监控nginx服务状态监控
    #!/bin/bash
    num=`ps -ef|grep -c [n]ginx`
    if [ $num -lt 2 ]
    then
       systemctl stop keepalived
    fi

	第二个历程: 测试监控脚本
		# 编写脚本名不能包含过滤的字符串,否则各种错误
        
	第三个历程: 实时监控nginx服务状态---keepalived配置文件
    # 这一步中有很多坑
    1.编写脚本完成之后:set ff 检查是不是unix格式如果是dos修改改为unix格式 set format=unix
    2.编写/etc/keepalived/keepalived.conf文件中格式也需要set ff
    3.同时将你写的脚本的权限改为755,使其具有执行权限
	check_web=/server/scripts/check_web.sh
    vrrp_script check_web {
       script "/server/scripts/check_web.sh"   --- 定义需要监控脚本(脚本是执行权限)   
       interval 2                              --- 执行脚本的间隔时间(秒)  
       weight 2                                --- ???
    }

    $check_web
    track_script {                             
         check_web                             --- 调用执行你的脚本信息
    }	
	
    keepalived信息配置	
    [root@lb01 scripts]# cat /etc/keepalived/keepalived.conf
    ! Configuration File for keepalived
     global_defs {
       router_id lb01
    }
    
    # 必须放在这两个之间
    vrrp_script check_web {
     script "/server/scripts/check_web.sh"  
     interval 3   
     weight 2
    }
    
    vrrp_instance oldboy {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 150
        advert_int 1							# 定义组播包发送的间隔时间(秒)  主和备配置一样
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
         10.0.0.3/24
        }
       track_script {   # 执行在这里
             check_web
       }
    }
	
	3. 如何高可用集群双主配置???
    vim check_web.sh
    #!/bin/bash
    num=`ps -ef|grep -c [n]ginx`
    if [ $num -lt 2 ]
    then
       exit 0
    else
       eixt 1
    fi
	第一个历程: 编写lb01服务器keepalived配置文件
	[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
    ! Configuration File for keepalived
     global_defs {
       router_id lb01
    }
    
    
    vrrp_instance oldboy {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 150
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
         10.0.0.3/24
        }
    }
    vrrp_instance oldgirl {
        state BACKUP
        interface eth0
        virtual_router_id 52
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
         10.0.0.4/24
        }
    }
    	
	第二个历程: 编写lb02服务器keepalived配置文件	
	! Configuration File for keepalived
    global_defs {
       router_id lb02
    }
    
    vrrp_instance oldboy {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            10.0.0.3/24
        }
    }
    vrrp_instance oldgirl {
        state MASTER
        interface eth0
        virtual_router_id 52
        priority 150
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            10.0.0.4/24
        }
    }
	
	第三个历程: 编写域名和IP地址解析信息
	进行抓包查看:
	www.oldboy.com --- 10.0.0.3(10.0.0.5)
	10.0.0.1       --- 10.0.0.3
	10.0.0.5       --- 10.0.0.7
	10.0.0.7       --- 10.0.0.5
	10.0.0.3       --- 10.0.0.1
	
	bbs.oldboy.com --- 10.0.0.4(10.0.0.6)
	10.0.0.1       --- 10.0.0.4
	10.0.0.6       --- 10.0.0.7
	10.0.0.7       --- 10.0.0.6
	10.0.0.4       --- 10.0.0.1
	
	4. 高可用服务安全访问配置(负载均衡服务)
    第一个历程: 修改nginx负载均衡文件
    upstream oldboy {
       server 10.0.0.7:80;
       server 10.0.0.8:80;
       server 10.0.0.9:80;
    }
    server {
        listen       10.0.0.3:80;  # 只监听10.0.0.3网络
        server_name  www.oldboy.com;
        location / {
           proxy_pass http://oldboy;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $remote_addr;
           proxy_next_upstream error timeout http_404 http_502 http_403;
        }
    }
    server {
        listen       10.0.0.4:80;
        server_name  bbs.oldboy.com;
        location / {
           proxy_pass http://oldboy;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $remote_addr;
        }
    }
	
	第二个历程: 修改内核文件
	异常问题:
	01. 如何设置监听网卡上没有的地址10.0.0.4/10.0.0.3是虚拟网卡,监听失败
	解决: 需要修改内核信息
	echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf  # 可以监听网卡上不存在的网卡
    sysctl -p  # 加载内核文件

	第三个历程: 重启nginx负载均衡服务  # 只要是涉及到ip的都需要重启,reload没用
	systemctl restart nginx

2.  高可用服务课程总结
    1) 负载均衡服务扩展补充
	   根据用uri信息进行负载均衡(动静分离架构)
	   根据user_agent信息进行负载均衡(手机用户和浏览器访问用户页面信息可以不一致)
	2) 高可用服务作用(避免出现单点故障)
	3) keepalived高可用服务
	   1. 管理LVS负载均衡软件
	   2. 实现高可用功能(vrrp原理)
	4) keepalived服务配置文件 
    5) keepalived服务企业应用
	   1. 可能出现脑裂问题       	--- 脚本编写
	   2. 如何实现自动释放资源 	--- 脚本(监控web服务)  修改keepalived文件
	   3. 如何实现双主配置        	--- 编写keepalived配置文件  编写多个vrrp实例
	   4. 如何实现负载均衡安全访问 --- 编写负载均衡nginx配置文件 配置监听vip地址信息

76.zibbix监控服务:

0.回顾
	1) 综合架构高可用服务概念
	2) 综合架构高可用服务部署(配置)--keepalived heartbeat
	3) 综合架构高可用服务原理 vrrp
	4) 综合架构高可用服务应用
	   a 解决脑裂问题
	   b 解决释放资源
	   c 解决双主问题
	   d 解决安全访问
	   
	weight参数: 权重值参数,主要用于和优先级进行运算
	重要知识点01:
    求和运算:  weight数值必须是正数  weight + priority   自动提升优先级, 使主机可以成为主服务器
    求差运算:  weight数值必须是负数  weight - priority   自动降低优先级, 使主机可以成为备服务器 	
    重要知识点02:
	运行一个脚本, 执行脚本结束之后, 脚本的执行结果可以为真 看脚本执行返回值 $?==0
	运行一个脚本, 执行脚本结束之后, 脚本的执行结果可以为假 看脚本执行返回值 $$<>0
    重要知识点03:
	如何将知识01 + 知识02
	权重值为正数:
	1. 脚本运行后为真  weight + priority 
	2. 脚本运维后为假  priority
	权重值为负数:
	1. 脚本运行后为真  priority
	2. 脚本运维后为假  weight - priority
    
1.课程介绍
	1) 综合架构监控服务概念说明
	2) 综合架构服务器如何监控  
	   a 手动执行命令进行监控  df w top ps ...
	   b 自动执行命令进行监控  shell脚本
    3) 综合架构监控体系结构(面试)
	   你的原公司是如何对架构服务器进行监控?
	   利用zabbix软件进行监控 错误回答
	4) 综合架构监控服务软件---zbbix
	   a zabbix软件结构组成
	   b zabbix软件安装步骤(LAMP) == wordpress网站页面部署(LNMP)
	   c zabbix软件初始监控
	5) 综合架构监控服务详细配置
	   a zabbix软件功能组成
	   b zabbix软件功能实践
    
2.综合架构监控服务概念说明
    01. 对系统不间断实时监控
	    实现报警通知  邮件/微信/短信/电话 --手环(学员)
    02. 实时反馈系统当前状态
    03. 保证服务可靠性安全性
    04. 保证业务持续稳定运行

    a 掌握架构服务的运行情况
	b 用于分析公司网站运行情况

1590050488687

3.综合架构监控服务器常用命令
    CPU: top htop glances
    监控什么:
	us: user state 		用户态信息 40%
	sy: system state	内核态信息 40%  MySQL进程
	id: idle            空闲状态   20%
    内存: top htop free
	监控什么:
	内存可用率:
	swap空间使用情况:
	磁盘: df iotop(检查磁盘io消耗) glances
	监控什么:
	磁盘使用情况
	磁盘的IO消耗 
	网络: iftop glances   # 带宽
	监控什么:
	网络带宽使用情况
	进程: top htop ps glances
	监控什么: 
	占用内存情况 tomcat(java)---内存占满(内存溢出)--服务出现僵死(重启服务)
	占用CPU情况: MySQL
	负载: w top uptime glances
	监控什么:
	10分钟负载  <CPU内核数
	15分钟负载
    
4.综合架构监控服务器编写脚本(shell python)
    练习题:
	01. 如何监控内存使用情况:???
	正常使用情况: 内存使用率高于80%
	异常使用情况: 内存使用率低于20% 发送报警
	02. 如何监控服务运行状态:???
	ps -ef|grep -c [n]ginx
	netstat -lntup|grep xxx
	PS: tomcat服务---僵死   # 必须在磁盘满之前,清理磁盘,否则当磁盘满了之后冲了去机房,远程不能重启
	
5.  综合架构监控服务体系结构:
    1) 硬件监控		服务器 路由器 交换机 防火墙(SNMP)
    2) 系统监控     CPU 内存 磁盘 网络 进程 TCP(十一种状态)
    3) 服务监控     nginx php tomcat redis memcache mysql
    4) 网站监控     请求时间 响应时间 加载时间 页面监控
    5) 日志监控     ELK(收集 存储 分析 展示) 日志易
	   access  --- 用户源IP地址  北京1000 上海100 深圳500	
    6) 安全监控     Firewalld(4层和4层以上)  WAF(Nginx+lua)(应用层面) 安全宝  牛盾云 安全狗
    7) 网络监控     smokeping 监控宝 站长工具  奇云测  多机房
    8) 业务监控     (数据库信息)活动产生多少流量  产生多少注册量  带来多少价值	
 prometheus监控容器 天兔监控数据库 zibiix监控主机

zibbix监控架构:

1590130863925

6.  zabbix监控服务说明
    a zabbix软件结构组成
	zabbix-server:	监控服务端
	zabbix-agent:	监控客户端
	zabbix-web:		监控网站服务
	php:			处理动态请求
	mysql:			数据库存储监控数据
	zabbix-proxy:	负责收集agent信息汇总告知zabbix-server

    b zabbix软件安装部署过程
	软件选择: 4.0 LTS(long time support 长期支持版)
	
	zabbix服务端部署软件流程:L
	第一个里程: 下载安装zabbix yum 源文件
    LTS long time support
    1) aliyun zabbix yum 源 
    2) 清华源
    rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
    rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm  -- 老版本
    
    第二个里程: 下载安装zabbix服务端相关软件
    zabbix服务程序软件: zabbix-server-mysql
    zabbix服务web软件: zabbix-web-mysql httpd php
    数据库服务软件: mariadb-server
    # 安装的时候可以能回一致爆出error信息,找不到什么的,不用管,多安装几次就好了,这是因为zabbix的repo源是外国的
    yum install -y zabbix-server-mysql zabbix-web-mysql httpd php mariadb-server
    
    第三个里程: 软件配置
    vim /etc/zabbix/zabbix_server.conf
    126 DBPassword=zabbix
    vim /etc/httpd/conf.d/zabbix.conf
    21         php_value date.timezone Asia/Shanghai
    
    第四个里程: 编写配置数据库服务
    systemctl start mariadb.service 
    systemctl status mariadb.service
    创建zabbix数据库--zabbix
    create database zabbix character set utf8 collate utf8_bin;
    创建数据库管理用户
    grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
    在zabbix数据库中导入相应的表信息
    zcat /usr/share/doc/zabbix-server-mysql-4.0.0/create.sql.gz|mysql -uzabbix -pzabbix zabbix
	zgrep 
    
    第五个里程: 启动zabbix程序相关服务
    数据库服务 zabbix服务 httpd服务
    systemctl start zabbix-server.service httpd mariadb.service
    systemctl enable zabbix-server.service httpd mariadb.service
    说明: 至此zabbix-server命令行操作结束
	LNMP: nginx php mysql 
	LAMP: apache(php模块) mysql
    
    第六个里程: 登录zabbix服务端web界面, 进行初始化配置
    http://10.0.0.71/zabbix/setup.php
    
    10051  zabbix-server 服务端端口号
    10050  zabbix-agent  客户端端口号
    /etc/zabbix/web/zabbix.conf.php   -- 记录web页面初始化信息
    
    第七个里程: 登录zabbix服务web页面
    用户名Admin 密码zabbix
    
    
    监控客户端部署流程
    第一个里程: 下载安装zabbix yum 源文件
    LTS long time support
    1) aliyun zabbix yum 源 
    2) 清华源
    rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
    
    第二个里程: 下载安装zabbix客户端软件
    yum install -y zabbix-agent
    或者
    rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm
    
    第三个里程: 编写zabbix客户端配置文件
    vim /etc/zabbix/zabbix_agentd.conf
    98 Server=172.16.1.71
    
    第四个里程: 启动zabbix-agent服务
    [root@web01 ~]# systemctl start zabbix-agent
    [root@web01 ~]# netstat -lntup|grep 10050
    tcp      0     0 0.0.0.0:10050           0.0.0.0:*            LISTEN      4509/zabbix_agentd  
    tcp      0     0 :::10050                :::*                 LISTEN      4509/zabbix_agentd

77.zabbix添加主机:

1. 实现zabbix默认第一台主机的监控
    第一步: 配置---主机---创建主机(创建要监控的主机)
    第二步: 配置监控的主机
            主机信息中: 名称 主机组 监控的主机地址
            模板信息中: 指定需要链接的模板信息
    第三步: 保存退出,进行监控检查			
            检查主机有没有变绿
			监测--最新数据

2. 实现zabbix自定义配置监控
    监控项: 可以自定义监控收集主机的信息
	应用集: 将多个类似的监控项进行整合 便于查看检查
	模板:   将多个监控项 触发器 图形都配置在模板中, 方便多个监控的主机进行调用
	动作:	指定将报警信息发送给谁OK/定义报警的信息ok/定义报警的类型OK(邮件 微信 短信电话)
	        PS: 宏信息定义方法: 
         注意事项:
            1.点击配置 动作 动作这个页面中的新的触发条件一般如果不需要指定某个触发器的时候,尽量别动
            2.点击操作 默认持续时间(就是留给运维解决问题的时间) 操作细节可以同时添加多个,当这个报警一个小时还没有解决,就发送给运维人员的领导.
			https://www.zabbix.com/documentation/4.0/zh/manual/appendix/macros/supported_by_location
	触发器: 可以实现报警提示(条件表达式),默认页面提示报警
	图形:   将多个图整合成一张,便于分析数据
	报警媒介: 定义报警的方式
    

3. 实现zabbix自定义监控---监控项作用
    简单的自定义监控配置(单一服务状态)
    需求: 监控nginx服务是否启动
    1) 在zabbix-agent进行配置文件编写
	第一个历程: 编写自定义监控命令
	ps -ef|grep -c [n]ginx
	
	第二个历程: 编写zabbix-agent配置文件
	第一种方法: 直接修改zabbix-agent配置文件参数
	UserParameter=
	第二种方法: 在zabbix_agentd.d/目录中编写自定义监控文件
	vim web_server.conf
	UserParameter=键(变量名),值(变量信息)
	UserParameter=web_state,ps -ef|grep -c [n]ginx
	
	第三个历程: 重启zabbix-agent服务
	systemctl restart zabbix-agent
	
	2) 在zabbix-server命令行进行操作
	第一个历程: 检测自定义监控信息是否正确
	yum install -y zabbix-get
	zabbix_get  -s 172.16.1.7 -k 'web_state'
	
	
	3) 在zabbix-server网站页面进行配置
	第一个历程: 进入到创建监控项页面:
	配置---主机---选择相应主机的监控项
	第二个历程: 监控项页面如何配置
		名称 键值 更新间隔时间 应用集
	第三个历程: 检查是否收集到监控信息
	
    自行研究: 监控远程服务是否正常启动
	
    复杂的自定义监控配置(多个服务状态)
	1) 在zabbix-agent端编写配置文件
	vim server_state.conf 
    UserParameter=server_state[*],netstat -lntup|grep -c $1

    2) 在zabbix-server命令测试
	zabbix_get  -s 172.16.1.7 -k 'server_state[22]'
	
	3) 修改配置页面
    键值: server_state[22]

邮箱报警配置:

1590146212801

4. 实现zabbix报警功能---触发器/动作
    报警方式:
	01. 页面提示信息报警(值班运维)  	OK
	02. 页面声音提示报警            	OK
	03. 邮件信息报警                  	OK
	04. 微信功能报警					OK
	05. 短信报警/电话报警				OK
	
	# 页面提示和声音报警实践:
	第一个历程: 创建触发器
	配置---主机---选择相应监控主机触发器---创建触发器 
	设置好表达式
	{web01:server_state[nginx].last()}<=2
	{监控主机名称:键值名称.调用的表达式函数}<=2 
	
	表达式总结:
	last()   收集到最新信息(数值)  *****
	max()	 在一定周期内,收集到的最大值
    min()    在一定周期内,收集到的最小值
	diff()   在一定时间内,判断收集的信息是否不同
	change() 在一定时间内,判断收集的信息是否不同
	avg()    取一段时间的平均值   

    企业工作遇见告警信息处理思路步骤:
	第一步: 看到告警提示信息,定位主机信息
	第二步: 看到主机信息之后,定位报警原因 获得监控项Key值
	第三步: 根据key值信息,最终获得报警原因
	
	至此: 已经看到提示报警
	
	第二个历程: 修改网页配置,有提升声音报警
	小人头---正在发送消息---前端信息勾选
	PS: 如何修改报警铃声:
	1) 找到文件所在目录(在站点目录中找)
	find /usr/share/zabbix -type f -name "alarm_disaster.wav"
	2) 将原有声音文件做替换
	替换成指定声音文件,或者直接将
	3) 需要清除浏览器缓存,进行测试
	
	# 邮件信息报警
	第一个历程: 创建触发器
	配置---主机---选择相应监控主机触发器---创建触发器 
	设置好表达式
	{web01:server_state[nginx].last()}<=2
	{监控主机名称:键值名称.调用的表达式函数}<=2 

    第二个历程: 修改动作配置
    配置---动作---将默认动作进行开启	
	
	第三个历程: 建立和163邮箱服务关系
	管理---报警媒介类型---创建报警媒介
	
	第四个历程: 定义接收报警的邮件地址
	小人头--报警媒介--设置收件人信息
	
	
	# 微信报警
    第一个历程: 需要注册企业微信,并进行配置
	我的企业: 
	01. 获取企业id: ww32d68104ab5f51b0
	02. 获取企业二维码: 允许员工加入
	管理工具:
	01. 成员加入---进行审核通过
	应用小程序:
	01. 进行创建
	02. 收集程序信息
	    AgentId: 1000006
		Secret: RvQYpaCjWbYMCcwhnPqg1ZYcEGB9cOQCvvlkn-ft6j4
		
	第二个历程: 编写脚本(python)
	cat /etc/zabbix/zabbix-server.conf 
	AlertScriptsPath=/usr/lib/zabbix/alertscripts  --- 放置告警脚本
	
    执行脚本报错问题解决:
	01. 问题: No module named requests
	yum install -y python-pip
    pip install requests
	02. 问题: 脚本执行语法
	
    第三个历程: 管理 报警媒介 创建修改报警媒介---定义了发微信配置
	
	第四个历程: 配置接收微信的人员
	第五个历程:chown zabbix /tmp/weixi.log
	# 短信和电话:
	利用第三方短信电话报警平台
	01. 利用阿里大鱼(收费)
	    https://yq.aliyun.com/articles/658524?spm=a2c4e.11155472.0.0.d821153fAjrH3q  --- 自行研究
	02. 利用onealert发送告警
        第一个历程: 配置报警平台
        01. 配置--应用--选择zabbix报警
        02. 配置--通知策略  # 给谁发消息,添加微信也可以
        03. 配置--分派策略
	
5. 实现zabbix图形配置---图形
    1.配置  --  主机  --  图形  --  创建图形 -- 选择图形类型 -- 选择监控项 --设置颜色
	2.检测 -- 图形 -- 群组 -- 主机 -- 图形(就是你创建爱你的图形名称)
    
6. 模板 
   作用:将多个监控项 触发器 图形都配置在模板中, 方便多个监控的主机进行调用
   配置 -- 模板 -- 创建模板 -- 选好群组
   之后点击上面的模板 -- 你创建的模板就在下面显示了出来 -- 可以配置监控项 -- 触发器 -- 之后就可以通过报警进行管理了
=============================================

综合架构需求:
低级标准: 负载均衡 web服务器 存储 数据库 备份
中级标准: 高可用服务 负载均衡 web服务 存储 数据库 备份
高级标准: 
基础完成项: 高可用服务 负载均衡 web服务 存储 数据库 备份  监控服务  批量管理服务
进阶完成项: 
简单: yum本地仓库 jumpserver跳板机 pptpvpn 时间同步服务器 cobbler批量部署系统 
扩展: mysql高可用 nfs高可用 tomcat服务 实现防火墙配置(主机没有外网如何进行上网) 实现nginx缓存功能
      HTTPS访问网站  如何实现session会话功能(memcache) 
高级: 如何利用ansible一键化部署
posted @ 2020-05-31 14:30  楠海  阅读(334)  评论(0编辑  收藏  举报