zoukankan      html  css  js  c++  java
  • 1--Zabbix介绍 ; 安装

    一、 监控知识基本概述

    1.为什么要使用监控

    1.对系统不间断实时监控
    2.实时反馈系统当前状态
    3.保证服务可靠性安全性
    4.保证业务持续稳定运行

    2.如何进行监控,比如我们需要监控磁盘的使用率

    1.如何查看磁盘使用率 df -h
    2.监控磁盘的那些指标 block、 inode
    3.如何获取具体的信息 df -h
    4.获取的数值到达多少报警 80%

    3.流行的监控工具

    1.Zabbix
    2.Lepus(天兔)数据库监控系统
    3.Open-Falcon 小米
    4.Prometheus(普罗米修斯, Docker、 K8s)

    4.如果去到一家新公司,如何入手监控

    1.硬件监控 路由器、交换机、防火墙
    2.系统监控 CPU、内存、磁盘、网络、进程、 TCP
    3.服务监控 nginx、 php、 tomcat、 redis、 memcache、 mysql
    4.WEB 监控 请求时间、响应时间、加载时间、
    5.日志监控 ELk(收集、存储、分析、展示) 日志易
    6.安全监控 Firewalld、 WAF(Nginx+lua)、安全宝、牛盾云、安全狗
    7.网络监控 smokeping 多机房
    8.业务监控 活动引入多少流量、产生多少注册量、带来多大价值

    二、 单机时代如何监控

    linux中常见的额监控命令

    1.top 			系统时间 登录用户  负载 进程 cpu 内存 swap    进程详细信息
    2.htop(eple)   系统时间 登录用户  负载 进程 cpu 内存 swap   进程详细信息 支持鼠标 树状 快捷键
    3.uptime 	    当前系统时间、登录用户、负载 
    4.free			监控内存
    5.vmstat		程、虚存、页面交换空间及 CPU
    5.iostat		磁盘I/O统计
    6.df			硬盘 -h block	-i inode
    7.iftop			流量监控工具
    8.nethogs		查看进程占用的网络带宽
    9.iotop			进程占用的硬盘I/O
    
    
    shell脚本监控服务器
    没有监控工具的时候,shell脚本+定时任务
    [root@k8s ~]# cat mem_alter.sh
    #!/bin/bash
    MEM=`free -m|awk 'NR==2{print $NF}'`
    if [ $MEM -lt 100 ];then
    echo "web服务器 192.168.2.104 可用内存不足,当前可用内存
    $MEM" | mail -s "web服务器内存不足" 29262626@qq.com
    fi
    
    缺点:效率低,不能实现集中报警,不能分析历史数据
    

    CPU 监控命令: w、 top、 htop、 glances

    %Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
    us 用户态: 跟用户的操作有关 35%
    sy 系统态: 跟内核的处理有关 60%
    id CPU 空闲:
    

    内存监控命令: free

    [root@m01 ~]# free -h
                  total        used        free      shared  buff/cache   available
    Mem:           977M        105M        724M        6.6M        148M        729M
    Swap:          1.0G          0B        1.0G
    

    磁盘监控命令: df、 iotop

    Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
    sda 0.80 25.32 33.36 221034 291193
    设备名 每秒传输次数 每秒读大小 每秒写大小 读的总大小 写的总大小
    

    网络监控命令: ifconfig、 route、 glances、 iftop、 nethogs、 netstat

    单位换算
    Mbps 100Mbps/8
    MB 12MB
    iftop 中间的<= =>这两个左右箭头,表示的是流量的方向。
    TX:发送流量、 RX:接收流量、 TOTAL:总流量
    #查看 TCP11 中状态
    netstat -an|grep ESTABLISHED
    netstat -rn # 查看路由信息
    netstat -lntup
    

    2.随着时间的推移,用户不断的增多,服务随时可能扛不住会被 oom(out of memory),当系统内存不足的时候,会
    触发 oom
    1.当系统内存不足的时候就会大量使用 swap
    2.当系统大量使用 swap 的时候,系统会特别卡
    注意: 有时可能内存还有剩余 300Mb-500Mb,但会发现 swap 依然被使用

    [root@ZabbixServer ~]# dd if=/dev/zero of=/dev/null bs=800M
    [root@ZabbixServer ~]# tail -f /var/log/messages
    Out of memory: Kill process 2227 (dd) score 778 or sacrifice child
    Killed process 2227 (dd) total-vm:906724kB, anon-rss:798820kB, file-rss:0kB
    

    3.那单机时代,如何使用 shell 脚本来实现服务器的监控
    需求: 每隔 1 分钟监控一次内存,当你的可用内存低于 100m,发邮件报警,要求显示剩余内存
    1.怎么获取内存可用的值 free -m|awk '/^Mem/{print $NF}'
    2.获取到内存可用的值如何和设定的阈值进行比较
    3.比较如果大于 100m 则不处理,如果小于 100 则报警
    4.如何每隔 1 分钟执行一次

    [root@ZabbixServer ~]# cat free.sh
    #!/usr/bin/bash
    HostName=$(hostname)_$(hostname -i)
    Date=$(date +%F)
    while true;do
    Free=$(free -m|awk '/^Mem/{print $NF}')
    if [ $Free -le 100 ];then
    echo "$Date: $HostName Mem Is < ${Free}MB"
    fi
    sleep 5
    done
    

    三、 zabbix 监控快速安装

    服务端安装zabbix5.0

    #安装要求
    
    #硬件
    内存和磁盘
    Zabbix同时需要物理内存和磁盘空间。刚开始使用Zabbix,建议128MB物理内存和256MB可用磁盘空间。然而, 具体需要的内存大小和磁盘空间要根据主机数量和监控参数而定。如果你计划对监控的参数进行长期保存,你应该考虑至少在数据库中预留几个GB的空间,以用来保留历史数据。 每个Zabbix的守护进程需要与数据库服务器建立多个连接。分配给连接的内存数量,取决于数据库引擎的配置。
    
    CPU
    根据监控参数及选择的数据库引擎,Zabbix,特别是Zabbix数据库,可能需要大量的CPU资源
    
    #时钟同步
    对于Zabbix稳定运行而言,服务获得精确的系统时间是非常重要的。ntpd 是一个最流行的用于同步主机和其他服务器之间的时间的后台程序。对于所有运行Zabbix组件的系统,强烈建议这些系统的时间保持同步。
    
    # 0、下载epel源
    [root@zabbix01 ~]# yum install epel-release -y
    
    # 1 、获取zabbix官方源
    [root@zabbix01 ~]# rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm 
    
    # 2、修改源
    [root@zabbix01 ~]# sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
    [root@zabbix01 ~]# yum clean all && yum makecache
    
    # 3、安装zabbix server和agent
    [root@zabbix01 ~]# yum install zabbix-server-mysql zabbix-agent -y
    
    # 4、安装software collections便于安装高版本的php (yum默认php是5.4)
    [root@zabbix01 ~]# yum install centos-release-scl -y
    
    # 5、修改zabbix前端源 
    [root@zabbix01 ~]# cat /etc/yum.repos.d/zabbix.repo 
    [zabbix-frontend]
    name=Zabbix Official Repository frontend - $basearch
    baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/frontend
    enabled=1  #修改为1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
    
    # 6、安装zabbix前端环境
    [root@zabbix01 ~]# yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y
    # 注意时间正确
    [root@zbbbix ~]# yum install -y ntpdate
    [root@zbbbix ~]# ntpdate -u ntp.aliyun.com
    [root@zbbbix ~]# mv /etc/localtime{,.bak}
    [root@zbbbix ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    # 7、安装zabbix所需要的数据库
    7.1、配置MySQL的yum源
    [root@zabbix01 ~]# cat > /etc/yum.repos.d/mysql.repo << EOF
    # Enable to use MySQL 5.7
    [mysql57-community]
    name=MySQL 5.7 Community Server
    baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
    enabled=1
    gpgcheck=0
    EOF
    
    7.2、安装MySQL
    [root@zabbix01 ~]# yum install mysql-community-server
    
    7.3、启动MySQL
    [root@zabbix01 ~]# systemctl enable --now mysqld.service   
    # MYSQL5.7版本默认密码在mysqld.log日志里面
    [root@zabbix01 ~]# grep 'localhost' /var/log/mysqld.log 
    2021-07-31T07:54:52.161434Z 1 [Note] A temporary password is generated for root@localhost: 3dzy(StgsxNT
    
    7.4、检查MySQL运行状态
    [root@zabbix01 ~]# systemctl status mysqld.service 
    ● mysqld.service - MySQL Server
       Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
       Active: active (running) since Thu 2021-07-29 00:04:02 CST; 8s ago
    
    7.5、创建zabbix依赖数据库
    [root@zabbix01 ~]# mysql -uroot -p'3dzy(StgsxNT'
    # 7.5.1、修改密码并授权root用户
    mysql> set password=password('Cdan@111');
    mysql> grant all privileges on *.* to root@'localhost' identified by 'Cdan@111';
    mysql> grant all privileges on *.* to root@'%' identified by 'Cdan@111';
    mysql> flush privileges;
    
    # 7.5.2、创建zabbix库及授权
    mysql> create database zabbix character set utf8 collate utf8_bin;
    mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'Cdan@111';
    mysql> grant all privileges on zabbix.* to zabbix@'192.168.15.%' identified by 'Cdan@111';
    mysql> flush privileges;
    mysql> exit
    
    # 7.5.3、 my.cnf文件
    [root@zabbix01 ~]# grep '^[^#]' /etc/my.cnf
    [mysqld]
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    symbolic-links=0
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    [client]
    default-character-set=utf8mb4
    [mysql]
    user="root"
    password="Cdan@111"
    default-character-set=utf8mb4
    
    # 8、启动数据库
    [root@zabbix01 ~]# systemctl restart mysqld
    
    # 9、导入数据库
    [root@zabbix01 ~]# cd /usr/share/doc/zabbix-server-mysql-5.0.14/
    [root@zabbix01 zabbix-server-mysql-5.0.14]# zcat create.sql.gz | mysql -uroot -p'Cdan@111' zabbix
    
    # 10、修改zabbix配置文件
    10.1、修改zabbix_server.conf文件
    [root@zabbix01 ~]# vim /etc/zabbix/zabbix_server.conf
    [root@zabbix01 ~]# grep '^DBPa' /etc/zabbix/zabbix_server.conf 
    DBPassword=Cdan@111
    
    10.2、修改zabbix.conf文件
    [root@zabbix01 ~]# vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf 
    [root@zabbix01 ~]# grep 'timezone' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf 
    php_value[date.timezone] = Asia/Shanghai
    
    # 11、启动zabbix
    [root@zabbix01 ~]# systemctl enable --now zabbix-server zabbix-agent.service httpd rh-php72-php-fpm.service 
    
    # 12、ip访问
    192.168.15.10/zabbix 依次完成
    默认用户 Admin 密码zabbix
    

    词汇表

    zabbix-server	:负责接收agent的数据,分析并存入mysql
    zabbix-agent	:负责采集客户端的数据并发送给zabbix-server
    zabbix-web 		: 负责展示,过滤,配置监控项,触发器,报警媒介
    mysql			:实际负责存储数据
    监控项			:每一个实际的监控内容
    自定义监控项	:默认监控模板没有的监控内容,需要自己自定义的监控
    应用集			: 把监控项分类划分
    触发器			:监控项的报警阈值
    报警媒介		:报警的方式 微信 邮件 
    图形			:监控项历史记录的趋势图,多个监控项可以一起展示
    聚合图形		:多个图形可以组合成一个更大的图形		
    

    调整字符集为中文

    修复中文乱码

    打开图形之后会发现语言为乱码,原因是缺少字体

    img

    解决方法:安装字体并替换现有字体

    [root@m01 ~]# yum install wqy-microhei-fonts -y
    [root@m01 ~]# cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/zabbix/assets/fonts/graphfont.ttf
    

    再次刷新发现已经变成中文了

  • 相关阅读:
    思路决定出路
    php-异常处理机制
    Win10 IoT 10 中文显示乱码或报错的问题
    Win10 IoT 9 Windows IoT Core扩展开发包
    Win10 IoT 8 GPIO输入输出
    Win10 IoT 7 10586版本的异同
    Win10 IoT 6 设置系统时间
    Win10 IoT 5 修改IP地址
    Win10 IoT 4 远程启动计划任务
    Win10 IoT 3 部署应用
  • 原文地址:https://www.cnblogs.com/caodan01/p/15092945.html
Copyright © 2011-2022 走看看