防伪码:他日若遂凌云志 敢笑黄巢不丈夫

操作系统

CentOS Linux release 7.5.1804 (Core)

Nginx

nginx/1.16.1

PHP

7.2.24 

MYSQL

5.7.2

Zabbix

5.0.2

第一章 zabbix监控

1.1 为什么要监控

   在需要的时刻,提前提醒我们服务器出问题了

   当出问题之后,可以找到问题的根源

   网站/服务器 的可用性

1.1.1 网站可用性

  在软件系统的高可靠性(也称为可用性,英文描述为HA,High Available)里有个衡量其可靠性的标准——X个9,这个X是代表数字3~5。X个9表示在软件系统1年时间的使用过程中,系统可以正常使用时间与总时间(1年)之比,我们通过下面的计算来感受下X个9在不同级别的可靠性差异。

    1个9:(1-90%)*365=36.5天,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是36.5天

    2个9:(1-99%)*365=3.65天 , 表示该软件系统在连续运行1年时间里最多可能的业务中断时间是3.65天

    3个9:(1-99.9%)*365*24=8.76小时,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是8.76小时。

    4个9:(1-99.99%)*365*24=0.876小时=52.6分钟,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是52.6分钟。

    5个9:(1-99.999%)*365*24*60=5.26分钟,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是5.26分钟。

    6个9:(1-99.9999%)*365*24*60*60=31秒, 示该软件系统在连续运行1年时间里最多可能的业务中断时间是31秒

1.2 监控什么东西

监控一切需要监控的东西,只要能够想到,能够用命令实现的都能用来监控

1.3 怎么来监控

1.3.1 远程管理服务器

如果想远程管理服务器就有远程管理卡,比如Dell idRAC,HP ILO,IBM IMM

1.3.2监控硬件

查看硬件的温度/风扇转速,电脑有鲁大师,服务器就有ipmitool。

使用ipmitool实现对服务器的命令行远程管理

yum -y install OpenIPMI ipmitool  ->IPMI在物理机可以成功,虚拟机不行

[root@KVM ~] ipmitool sdr type Temperature

Temp             | 01h | ns  |  3.1 | Disabled

Temp             | 02h | ns  |  3.2 | Disabled

Temp             | 05h | ns  | 10.1 | Disabled

Temp             | 06h | ns  | 10.2 | Disabled

Ambient Temp     | 0Eh | ok  |  7.1 | 22 degrees C

Planar Temp      | 0Fh | ns  |  7.1 | Disabled

IOH THERMTRIP    | 5Dh | ns  |  7.1 | Disabled

CPU Temp Interf  | 76h | ns  |  7.1 | Disabled

Temp             | 0Ah | ns  |  8.1 | Disabled

Temp             | 0Bh | ns  |  8.1 | Disabled

Temp             | 0Ch | ns  |  8.1 | Disabled

 

1.3.3 查看cpu相关

lscpu、uptime、top、htop vmstat mpstat

其中htop需要安装,安装依赖与epel源。

[znix@clsn ~]$lscpu

Architecture:          x86_64

CPU op-mode(s):        32-bit, 64-bit

Byte Order:            Little Endian

CPU(s):                1

On-line CPU(s) list:   0

Thread(s) per core:    1

Core(s) per socket:    1

 

 

1.3.4 内存够不够可以用

free

[znix@clsn ~]$free -h

             total       used       free     shared    buffers     cached

Mem:          996M       867M       128M       712K       145M       450M

-/+ buffers/cache:       271M       725M

Swap:         1.0G         0B       1.0G

 

1.3.5 磁盘剩多少写的快不快可以用

  df、dd、iotop

[znix@clsn ~]$df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/vda1        40G   24G   15G  62% /

tmpfs           499M   20K  499M   1% /dev/shm

/dev/vdb1        20G  4.4G   15G  24% /data

 

1.3.6 监控网络

iftop nethogs

iftop   监控主机间流量  -i 指定监控网卡

nethogs 监控进程流量

1.4 监控工具总览

  mrtg 流量监控出图

  nagios 监控

  cacti  流量监控出图

  zabbix 监控+出图

1.5 zabbix介绍

  Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构。可用于监视各种网络服务、服务器和网络机器等状态。

  使用各种 Database-end 如 MySQL, PostgreSQL, SQLite, Oracle 或 IBM DB2 储存资料。Server 端基于 C语言、Web 管理端 frontend 则是基于 PHP 所制作的。Zabbix 可以使用多种方式监视。可以只使用 Simple Check 不需要安装 Client 端,亦可基于 SMTP 或 HTTP ... 各种协定做死活监视。

  在客户端如 UNIX, Windows 中安装 Zabbix Agent 之后,可监视 CPU Load、网络使用状况、硬盘容量等各种状态。而就算没有安装 Agent 在监视对象中,Zabbix 也可以经由 SNMP、TCP、ICMP、利用 IPMI、SSH、telnet 对目标进行监视。

另外,Zabbix 包含 XMPP 等各种 Item 警示功能。

1.5.1 zabbix的组成

zabbix官网: https://www.zabbix.com

zabbix 主要由2部分构成 zabbix server和 zabbix agent

zabbix proxy是用来管理其他的agent,作为代理

1.5.2 zabbix监控范畴

   硬件监控 Zabbix IPMI Interface

   系统监控 Zabbix Agent Interface

   Java 监控:ZabbixJMX Interface

 网络设备监抟:Zabbix SNMP Interface

    应用服务监控:Zabbix Agent UserParameter

MySQL 数据库监控:percona-monitoring-pldlgins

URL监控:Zabbix Web监控

第二章 安装zabbix

2.1关闭防火墙

systemctl stop firewalld.service      停止firewalld服务

systemctl disable firewalld.service    设置开机默认不启动

2.2关闭selinux

getenforce    查看状态

vim /etc/sysconfig/selinux    开机不启动

     SELINUX=disabled

生产环境单独在防火墙上开启端口和策略

2.3安装zabbix5.0源

2.3.1 安装依赖

yum -y install openssl OpenIPMI-libs  unixODBC libaio   iksemel fping net-snmp net-snmp-utils mysql perl-DBI curl libcurl-devel net-snmp-devel libssh2 libssh2-devel libxml2 libxml2-devel

2.3.2安装数据库

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm   yum clean all                         *清理yum缓存

2.4安装zabbix5.0服务端和客户端

yum install zabbix-server-mysql zabbix-agent     国外源安装可能比较慢或者出错,多试几次

2.5安装CentOS SCLo RH存储库:

yum install centos-release-scl

编辑配置文件 /etc/yum.repos.d/zabbix.repo

[zabbix-frontend]

...

Enabled=1

...

安装Zabbix前端包

yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl

2.6安装并配置数据库

2.6.1安装mysql5.7

安装MySQL服务

yum install rh-mysql57-mysql rh-mysql57-mysql-server rh-mysql57-mysql-devel

配置MySQL服务

vim /etc/opt/rh/rh-mysql57/my.cnf

character_set_server = utf8

vim /etc/profile

export PATH=/opt/rh/rh-mysql57/root/bin:$PATH

source  /etc/profile

启动服务

systemctl start rh-mysql57-mysqld

2.6.2创建初始数据库

mysql -uroot -p

password

mysql> create database zabbix character set utf8 collate utf8_bin;

mysql> create user zabbix@localhost identified by 'Password@123.';

mysql> grant all privileges on zabbix.* to zabbix@localhost;

mysql> quit;

2.6.3导入初始架构和数据

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix          提示输入的密码为:password

2.6.4 Zabbix server配置数据库

vim /etc/zabbix/zabbix_server.conf

DBPassword=password

DBSocket=/var/lib/mysql/mysql.sock

2.7配置文件

vim /etc/opt/rh/rh-php72/php.ini

soap.wsdl_cache_enabled=1

max_input_time = 600

max_execution_time = 300

date.timezone = Asia/Shanghai

post_max_size = 32M

memory_limit = 128M

mbstring.func_overload = 1
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

[zabbix]

user = apache

group = apache

 

listen = /var/opt/rh/rh-php72/run/php-fpm/zabbix.sock

listen.acl_users = apache

listen.allowed_clients = 127.0.0.1

listen.mode = 0666

pm = dynamic

pm.max_children = 50

pm.start_servers = 5

pm.min_spare_servers = 5

pm.max_spare_servers = 35

 

php_value[session.save_handler] = files

php_value[session.save_path]    = /var/opt/rh/rh-php72/lib/php/session/

 

php_value[max_execution_time] = 300

php_value[memory_limit] = 128M

php_value[post_max_size] = 16M

php_value[upload_max_filesize] = 2M

php_value[max_input_time] = 300

php_value[max_input_vars] = 10000

; php_value[date.timezone] = Europe/Riga

 

vim /etc/opt/rh/rh-nginx116/nginx/nginx.conf

# For more information on configuration, see:

#   * Official English Documentation: http://nginx.org/en/docs/

#   * Official Russian Documentation: http://nginx.org/ru/docs/

 

user nginx;

worker_processes auto;

error_log /var/opt/rh/rh-nginx116/log/nginx/error.log;

pid /var/opt/rh/rh-nginx116/run/nginx/nginx.pid;

 

# Load dynamic modules. See /opt/rh/rh-nginx116/root/usr/share/doc/README.dynamic.

include /opt/rh/rh-nginx116/root/usr/share/nginx/modules/*.conf;

 

events {

    worker_connections  1024;

}

 

http {

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

 

    access_log  /var/opt/rh/rh-nginx116/log/nginx/access.log  main;

 

    sendfile        on;

    tcp_nopush      on;

    tcp_nodelay     on;

    keepalive_timeout  65;

    types_hash_max_size 2048;

 

    include       /etc/opt/rh/rh-nginx116/nginx/mime.types;

    default_type  application/octet-stream;

 

    # Load modular configuration files from the /etc/nginx/conf.d directory.

    # See http://nginx.org/en/docs/ngx_core_module.html#include

    # for more information.

    include /etc/opt/rh/rh-nginx116/nginx/conf.d/*.conf;

 

 

}

vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf

server {

        listen          80;

#        server_name     example.com;

 

        root    /usr/share/zabbix;

 

        index   index.php;

 

        location = /favicon.ico {

                log_not_found   off;

        }

 

        location / {

                try_files       $uri $uri/ =404;

        }

 

        location /assets {

                access_log      off;

                expires         10d;

        }

 

        location ~ /\.ht {

                deny            all;

        }

 

        location ~ /(api\/|conf[^\.]|include|locale) {

                deny            all;

                return          404;

        }

 

        location ~ [^/]\.php(/|$) {

                fastcgi_pass    unix:/var/opt/rh/rh-php72/run/php-fpm/zabbix.sock;

                fastcgi_split_path_info ^(.+\.php)(/.+)$;

                fastcgi_index   index.php;

 

                fastcgi_param   DOCUMENT_ROOT   /usr/share/zabbix;

                fastcgi_param   SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;

                fastcgi_param   PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;

 

                include fastcgi_params;

                fastcgi_param   QUERY_STRING    $query_string;

                fastcgi_param   REQUEST_METHOD  $request_method;

                fastcgi_param   CONTENT_TYPE    $content_type;

                fastcgi_param   CONTENT_LENGTH  $content_length;

 

                fastcgi_intercept_errors        on;

                fastcgi_ignore_client_abort     off;

                fastcgi_connect_timeout         60;

                fastcgi_send_timeout            180;

                fastcgi_read_timeout            180;

                fastcgi_buffer_size             128k;

                fastcgi_buffers                 4 256k;

                fastcgi_busy_buffers_size       256k;

                fastcgi_temp_file_write_size    256k;

        }

}

2.8启动Zabbix5.0

 systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm

 systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm rh-mysql57-mysqld

2.9 配置Zabbix前端

@JUPGS$7[S`XGWU@[PZXDYR.png

(KNSO99$]NSF%6N1Q1A$~A4.png

~%8IY}YUX4J{9YQH2X_$GFD.png

F]RPFB]VRG0I4YR{E_67J76.png

VTLZMZY([7TDU)7$}I(JJ(W.png

第三章 基础功能使用

3.1 Linux主机监控

linux主机的话还是比较好处理的,无论是安装agent代理程序还是使用snmp,都是比较方便的

基础配置:关闭selinux,关闭防火墙或者打开161端口。

3.1.1 安装

安装net-snmp

yum install -y net-snmp

3.1.1.1修改配置文件

vim /etc/snmp/snmpd.conf

sec.name source community

com2sec notConfigUser default public    #社区名称定义为public

view systemview included .1            #添加一个采集项.1,意味着可以采集到所有mib tree的信息

view systemview included .1.3.6.1.2.1.1

view systemview included .1.3.6.1.2.1.25.1.1

3.1.3启动服务

systemctl start snmpd.service

netstat -lntup|grep 161

udp 0 0 0.0.0.0:161 0.0.0.0:* 6711/snmpd

3.1.4在zabbix server上测试

snmpwalk -v 2c -c zabbix 222.29.77.167|wc -l

12235        #这里取到了12235项

nmap端口扫描

yum install -y nmap

nmap -sU 目标IP -p 161

T)D})R7C5JMSBM~BU2([@WX.png

3.1.5 添加Linux主机

配置——主机——创建主机——移除interface的客户端——添加SNMP客户端

——填写主机名称、可见名称、群组、IP地址,如图所示:

PGAZ2C)A[3G0(ATH(BG`{WF.png

H1`U{%@~PHA`BXB{HTN~YME.png

Z]Q{Z]$P9U4J~(R}[Y59[OB.png

点击添加,然后等待1分钟,等待图标变成绿色即正常,如图所示:

Y${5%WN34JWL2U6B1O3QE)5.png

3.2 Web监控

通过zabbix做web监控,不仅仅可以监控到站点的响应时间,还可以根据站点返回的状态码或响应时间做报警设置,比如说对某个url进行监控,当访问返回的状态码是非200状态时都报警(创建触发器即可)。下面简单介绍下监控设置

3.2.1 创建监控模板

点击配置——模板——创建模板

O~58)UY[%4C@A]]OGX09%YP.png

3.2.2 创建web监控场景

I9[NI%{EDDG}@{`58[_UCVM.png

监控网页名称便于自己区分

监控的URL地址

监控超时时间,根据自己相应业务动态调整频率

要求返回的状态码,这里返回200为正常,非200报警

7BXL808CT`C1@){XAO0HKSD.png

3.2.3 查看效果

NFJ8173%@~$U{RHJU~OF)UP.png

3.2.4 创建触发器

如果想要实现报警功能还需要我们进行触发器的设置

点击刚才创建的模块Templates Web status,选择触发器,创建触发器

CPY)OQ97G89S~YAGRUPHOAG.png

(WJIFH0MMY$`J~V_4HMDDZI.png

@2O7WPH~1FVTVYIV)LX[3S7.png

LC{Z4R2{4BQN1DGGPXD@RD3.png

(3U$9EAH(D19F860TT[[{WP.png


3.3 Windows主机监控

3.3.1 安装/打开snmp服务

TWZ37W$(QU{S$OFQ~VQ{XRU.png

3.3.2 关闭防火墙

这里只是测试,实际生产环境环境,需要开放snmp端口161,或者对主机的固定IP进行放行。

A%MH00}D9C@Y)B_S}2A]E]S.png

3.3.3 配置snmp服务并将其重启

59Z7M}SUJ$]WUJOW_A_%CEW.png

如图所示,192.168.249.142是我zabbix-server的IP,需要配置接受,上面是本地snmp的团体名,必须配置的与zabbix-server上的一样,否则不能正常的收发数据。

3.3.4配置检测

server端使用命令检测client的配置是否有问题:

无法收集到数据:

[root@localhost ~]# snmpwalk -v 2c -c zabbix 192.168.249.128 hrMemory    

Timeout: No Response from 192.168.249.128

正常情况:

[root@localhost ~]# snmpwalk -v 2c -c zabbix 192.168.249.128 hrMemory    

HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 2096632 KBytes

snmpwalk命令依赖于:net-snmp-utils软件包,如果提示找不到命令,安装就好了:yum install net-snmp-utils -y,如果检测不通过,则说明client配置有问题。

3.3.5 创建主机

S%_Z[DJ3D%ORHC@B{47_H15.png

(ZVQCK4{MY`SGJBOND1Z4IG.png

(D)}]T_LF_Q$[4W$FJ4F04L.png

YGMZ9R4NAQQ20R$HBFJ$I_F.png

SNMP绿色亮起,说明sever与client的交互没有问题,ok,如果一直为灰色,一般是团体名,既宏的配置有问题,检查更改直到这个按钮亮起。(在网络没有问题的前提下)