29

CentOS7部署Zabbix5.0.2监控主机和Web(无坑版)-一盏烛光

 4 years ago
source link: https://blog.51cto.com/yw666/2512801
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

CentOS7部署Zabbix5.0.2监控主机和Web(无坑版)

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

CentOS Linux release 7.5.1804 (Core)

Nginx

nginx/1.16.1

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 内存够不够可以用

[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,如果一直为灰色,一般是团体名,既宏的配置有问题,检查更改直到这个按钮亮起。(在网络没有问题的前提下)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK