Zabbix-基础部署-数据库拆分-快速监控主机

1. 监控的基本概述

1.什么是监控

    不管在我们运维工作生涯中,还是整体的架构的当中都是最重要的一部分。

    事前及时预警发现故障,事后提供详细的故障报错,用于追查问题的原因。

2.为什么要进行监控

    1. 对系统不间断的实时监控

    2. 实时反馈当前系统状态

    3. 保证服务可靠性和安全性

    4. 保证业务持续稳定运行

3.如何进行监控,监控磁盘的使用率

    1. 如何查看磁盘的使用率   df  -h

    2. 监控磁盘的哪些选项  block  inode

    3. 如何取出具体的值

    4. 值多大才开始进行报警   峰值是多少

4.流行的一些监控工具

    1.zabbix        分布式监控:硬件 系统 网络 服务 业务   图形  趋势图 模板

    2.cacti            网络监控

    3.nagios        系统监控:需要人为定义,没有比较好的图形,也没有办法查询历史趋势图。

    4.天兔Lepus        数据库监控

    5.Open-Falcon     小米开发的 开源

    6.Prometheus     普罗米修斯   专门 k8s docker

5. 面试题:刚入职一家新公司,如何进行入手监控

    从业务角度考虑,进行针对性的监控

    1. 硬件监控        路由器 交换机  防火墙  CPU的温度

    2. 系统监控        CPU 内存 磁盘  网络 进程 TCP

    3. 服务监控        nginx PHP mysql redis

    4. web监控     网站的请求时间  响应时间 加载数据的时间

    5. 日志监控        ELK 收集数据    日志易

    6. 安全监控        防火墙 WAF 安全宝 牛盾云  安全狗

    7. 网络监控        第三方  监控宝

    8. 业务监控     项目 引入多少流量  产生多少注册量  给带来多少价值  效益

    9. API监控     针对业务的接口  

    10. 分布式监控   多机房

    11. 自动化监控   网络发现 自动注册  主动模式 被动模式

    12. 公有云      云监控  云平台自带的

2. 单机时代如何进行监控

1. 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 — 用户空间占用CPU的百分比。

    sy — 内核空间占用CPU的百分比。

    ni — 改变过优先级的进程占用CPU的百分比

    id — 空闲CPU百分比

    wa — IO等待占用CPU的百分比

    hi — 硬中断(Hardware IRQ)占用CPU的百分比

    si — 软中断(Software Interrupts)占用CPU的百分比

    st — 这个虚拟机被hypervisor(虚拟机监视器)偷去的CPU时间


2. 内存监控命令: free


[root@ZabbixServer ~]# free -m
total used free shared buff/cache available
Mem: 974 440 194 4 340 328
Swap: 2047 11 2036

3. 磁盘监控命令: df、iotop、iostat、dstat


[root@ZabbixServer ~]# iotop
Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s

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

[root@ZabbixServer ~]# iftop
bgx.com:https => 101.200.101.219:57456 0b 9.53Kb 6.11Kb
<=
bgx.com:https => 101.200.101.207:65254 0b 3.37Kb 1.12Kb
#中间的<= =>这两个左右箭头,表示的是流量的方向。

TX: cum: 170KB #发送流量

RX: 37.1KB #接收流量

TOTAL: 208KB #总的流量

#如果单位为Mbps,换算为MB需要除以8,比如:100Mbps = 12MB

5. TCP11状态监控netstat

[root@ZabbixServer ~]# netstat -an|grep ESTABLISHED
[root@ZabbixServer ~]# netstat -lntup
6. 那单机时代,如何使用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
7. 随着时间的推移,用户不断的增多,服务消耗的内存越来越多,当系统内存不足的时候可能会导致系统产生oom(out of memory)

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

8. 引入Zabbix

1.单台服务器如何去查看系统的指标 cpu 内存
磁盘
网路IO

2.几台服务器的情况如何去监控     shell-->系统命令(取值)-->比对是否达到设定阈值-->通知。

3.借助第三方工具来实现监控:zabbix

zabbix版本

zabbix 1.8 2.0 2.2 2.4 3.0 3.2 3.4 3.5 4.0 4.2    测试版

2 --> 3 改动非常的大

3 --> 4 改动非常小

课程内容使用4.0版本。

3. Zabbix的安装

准备一台服务器  内存 2G    磁盘  >50G 

#zabbix官方手册
https://www.zabbix.com/documentation/4.0/zh/manual

#1.配置zabbix的官方仓库

[root@zabbix-server ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm

#2.Zabbix 前端需要额外的基础安装包。 您需要在运行 Zabbix 前端的系统中启用可选 rpms 的软件仓库
[root@zabbix-server ~]# yum install -y yum-utils
[root@zabbix-server ~]# 
[root@zabbix-server ~]# yum-config-manager --enable rhel-7-server-optional-rpms

#3.安装zabbix服务端

[root@zabbix-server ~]# yum install -y  zabbix-server-mysql  zabbix-web-mysql  zabbix-agent mariadb-server

https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-server-mysql-4.0.18-1.el7.x86_64.rpm
https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-web-mysql-4.0.18-1.el7.noarch.rpm
https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-web-4.0.18-1.el7.noarch.rpm

#4.配置数据库
[root@zabbix-server ~]# systemctl  start mariadb.service

[root@zabbix-server ~]# mysql
MariaDB [(none)]> create database zabbix character set  utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost  identified  by 'zabbix';
Query OK, 0 rows affected (0.00 sec)


#5. 初始化数据库,进行导入数据

[root@zabbix-server ~]# zcat /usr/share/doc/zabbix-server-mysql-4.0.18/create.sql.gz | mysql -uzabbix -pzabbix  zabbix

#6.编辑zabbix-server配置文件

[root@zabbix-server ~]# grep  '^DB'  /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

#7.启动zabbix-server  并加入开机自启动

[root@zabbix-server ~]# systemctl  start zabbix-server.service 
[root@zabbix-server ~]# systemctl  enable zabbix-server.service 

#8. 修改时区

[root@zabbix-server ~]# vim  /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai

#9. 启动web
[root@zabbix-server ~]# systemctl  start httpd.service 
[root@zabbix-server ~]# systemctl  enable httpd.service 

#10. 使用IP地址进行浏览器上面进行访问

10.0.0.100/zabbix

#所有web界面安装的配置信息保存在这个文件里面
[root@zabbix-server ~]# ll /etc/zabbix/web/zabbix.conf.php

#启动服务端的zabbix客户端
    [root@zabbix-server ~]# systemctl  start zabbix-agent.service 

[root@zabbix-server ~]# systemctl  enable zabbix-agent.service

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述 在这里插入图片描述

4. Zabbix快速监控主机

#1.安装客户端

[root@web01 ~]# yum  install  -y  https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.18-1.el7.x86_64.rpm

#2.编写配置文件
[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.conf 
[root@web01 ~]# grep  '^Server' /etc/zabbix/zabbix_agentd.conf
Server=172.16.1.71

#3.启动客户端
[root@web01 ~]# systemctl  start zabbix-agent.service 
[root@web01 ~]# systemctl  enable  zabbix-agent.service 

[root@web01 ~]# netstat  -lntp| grep  zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      7891/zabbix_agentd  
tcp6       0      0 :::10050                :::*                    LISTEN      7891/zabbix_agentd

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

5. Zabbix基础架构

Zabbix-agent(数据采集) --》zabbix-server(数据分析,报警)--》数据库(数据存储)《--zabbix-web(数据展示)

LAMP + zabbix

LAP     + MySQL

[root@zabbix-server ~]# ll /etc/zabbix/zabbix_server.conf 
-rw-r----- 1 root zabbix 17393 2020-03-23 11:29 /etc/zabbix/zabbix_server.conf
[root@zabbix-server ~]# ll /etc/zabbix/web/zabbix.conf.php 
-rw-r--r-- 1 apache apache 443 2020-03-23 11:55 /etc/zabbix/web/zabbix.conf.php

6. Zabbix数据库拆分

mysql   10.0.0.51

#1.安装数据库
[root@db01 ~]# yum install -y mariadb-server  mariadb

#2.启动数据库

[root@db01 ~]# systemctl  enable  mariadb.service 
[root@db01 ~]# systemctl  start   mariadb.service 

#3.创建数据库

[root@db01 ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.64-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges  on zabbix.* to  zabbix@'172.16.1.%'  identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> 

#4.在原有的数据库里面,进行备份

[root@zabbix-server ~]# mysqldump -uroot  --single-transaction  --databases zabbix >zabbix.sql
[root@zabbix-server ~]# ll
total 3240
-rw-------. 1 root root    1558 2019-05-08 18:33 anaconda-ks.cfg
-rw-r--r--  1 root root     451 2020-03-23 10:18 free.sh
-rw-r--r--  1 root root     513 2019-12-07 11:36 hostname_ip.sh
-rw-r--r--  1 root root 3305241 2020-03-23 16:02 zabbix.sql

#5.将备份好的数据传输到新的数据库,并导入数据
[root@zabbix-server ~]# scp -rp  zabbix.sql  root@10.0.0.51:
[root@db01 ~]# mysql -h 172.16.1.51  -uzabbix -pzabbix zabbix <zabbix.sql


#如果出现反向解析问题,需修改数据库配置文件
[root@db01 ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
skip_name_resolve  #加入此行内容

#重启数据库
[root@db01 ~]# systemctl  restart  mariadb.service

#6.在进行配置zabbix服务端数据库配置

[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf 
[root@zabbix-server ~]# grep '^DB'  /etc/zabbix/zabbix_server.conf
DBHost=172.16.1.51
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
[root@zabbix-server ~]# systemctl   restart zabbix-server.service

[root@zabbix-server ~]# vim /etc/zabbix/web/zabbix.conf.php 
[root@zabbix-server ~]# cat /etc/zabbix/web/zabbix.conf.php
<?php
// Zabbix GUI configuration file.
global $DB;

$DB['TYPE']     = 'MYSQL';
$DB['SERVER']   = '172.16.1.51';
$DB['PORT']     = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER']     = 'zabbix';
$DB['PASSWORD'] = 'zabbix';

[root@zabbix-server ~]# systemctl    httpd.service

[root@zabbix-server ~]# systemctl  stop mariadb.service
Copyright © 高程程 all right reserved,powered by Gitbook修订于: 2021-05-18 21:14:55

results matching ""

    No results matching ""