跳转至

01-自动化监控-zabbix安装

【腾讯文档】01-自动化监控工具-zabbix

https://docs.qq.com/doc/DUUFiWXhxSWd3cU1P

自动化监控体系

监控的层次

一:基础

1.识别需要监控的对象(分级)
2.理解需要监控的对象(理论知识)
3.细分监控对象的指标
4.确定报警数值的基准线

二:预中级

1.工具化和监控分离
2.监控对象的分离:
硬件监控(方法:机房巡检,IPMI,SNMP)
系统监控(对象:CPU,内存,IO【磁盘,网络】)
服务监控(对象:各类服务[Nginx|Tomcat|RabbitMQ|Openstack|MySQL])
日志监控(方法:Elastic Stack)
网络监控(方法:第三方,Smokeping)
APM应用性能管理(国内最的比较好的是听云)。开源产品pinpoint
其他监控(安全监控,业务监控,舆论监控)
https://github.com/naver/pinpoint
3.掌握一个监控工具,例如zabbix类型

三:中级

1.分布式监控(标准化得脚本,模板,………)
2.自动化监控(主动,被动,分布式)
3.自动化监控(自动发现,自动注册)
4.性能优化
5.二次开发(定制报表,API调用)

四:进阶

1.动态报警,根据不同的情况去调整报警阈值。
2.智能告警,告警去重,依赖
3.故障自愈,例如某服务宕机,自动重启
4.大规模(事件驱动,主动控制)

监控概述

(1)监控是运维工作中比较重要的!Linux运维中几乎所有的都需要监控。

(2)监控不仅仅支持zabbix工具的使用

故事主角:小王

任务:接到公司的任务公司的监控

1.将硬件设备监控起来,使用IPMI监控硬件服务器,缺点如果硬件损坏,无法获取硬盘信息,但是我们可以使用MegaCli工具查看Raid磁盘阵列状态

使用MegaCli工具查看Raid磁盘阵列状态

http://www.ttlsa.com/tools/megacli-tool-query-raid-status/

2.将系统状态监控起来,监控CPU,内存,硬盘,网络状态,通过编写脚本监控

3.将系统运行的服务监控起来,如apache,nginx,mysql进行应用监控

但是以上的监控需要通过脚本实现,是在很复杂,这时我们就需要引入zabbix监控工具

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

优点:所有的配置都可以在web界面配置

Ngios主要针对于监控报警,但是图像功能差,为了弥补需要引入cacti工具,缺点是报警,这两个工具可以结合在一起使用

Ngios官网:https://www.nagios.org/

cacti官网:http://www.cacti.net/

*思路:做监控要站点业务的高度去思考*

硬件监控

(1)专业的机房运维人员对服务器进行定期的巡检

(2)查看服务器指示灯的各种状态,如果网线松动造成网络时常丢包

(3)检查服务器标签是否完整,是否标签贴错

(4)通过服务器的远程控制卡进行监控,买服务器的时候建议安装

(5)通过IPMI监控硬件服务器状态,使用 ipmitool 实现 Linux 系统下对服务器的 ipmi 管理

相关资料:http://www.ibm.com/developerworks/cn/linux/l-ipmi/

IPMI的安装与使用,虚拟机无法使用,物理机可以。

yum -y install OpenIPMI ipmitool        #安装方法
[root@linux-node1 ~]# /etc/init.d/ipmi start    #因为是虚拟机,所以无法启动,物理机可以
Starting ipmi drivers:                                     [失败]
[root@linux-node1 ~]# lsmod|grep ipmi       #查看ipmi内核模块

以下为物理机启动成功后内核模块的状态

image-20211024113036832

[root@linux-node1 ~]# ipmitool sensor --help    #帮助手册
[root@linux-node1 ~]# ipmitool sensor list      #打印传感器相关的数据

我们一般可以使用IPMI监控服务器温度,如果过高自动报警

缺点:无法获取硬盘状态

但是我们可以使用MegaCli工具查看Raid磁盘阵列状态

使用MegaCli工具查看Raid磁盘阵列状态

http://www.ttlsa.com/tools/megacli-tool-query-raid-status/

硬件服务器的外部管理API简介

Dell        iDRAC
HP      ILO
IBM     IMM

赵班长博客wiki

https://www.unixhot.com/wiki/doku.php

Linux下安装与配置snmp服务

http://blog.csdn.net/jacky0922/article/details/6952152

监控宝SNMP监控安装部署

http://wiki.jiankongbao.com/doku.php/%E6%96%87%E6%A1%A3:%E5%AE%89%E5%85%A8%E6%8C%87%E5%BC%95

SNMP OID列表 监控需要用到的OID

http://www.ttlsa.com/monitor/snmp-oid/

快速安装SNMP服务

[root@linux-node19 ~]# yum install -y net-snmp net-snmp-utils

修改配置文件

[root@linux-node19 ~]# grep "^[a-Z]" /etc/snmp/snmpd.conf
com2sec admin  default      admin
group   admin v2c           admin
view admin included .1 80
access  admin ""      any       noauth    exact  admin admin none
syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
dontLogTCPWrappersConnects yes

启动服务

[root@linux-node19 ~]# systemctl start snmpd

系统监控

进程与线程的区别:

http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html
CPU:
    进程:每一个进程,至少有一个线程,每个进程可以有多个线程。
负载:单位时间内允许队列中就绪等待的进程数平均值
内存:虚拟内存,SWAP,物理内存
IO: 调度算法http://www.cnblogs.com/cutepig/p/3403711.html

(1)我们监控某个对象,需要了解某个对象的原理,不然监控是没有意义的,

(2)要了解监控的基准线,知道什么是好,什么是坏

(3)需要明白如何去做监控

对于系统监控我们需要监控哪些?

*(1)CPU:查看监控CPU信息的常见命令*

[root@linux-node1 ~]# cat /proc/cpuinfo
[root@linux-node1 ~]# lscpu     #查看CPU的信息
[root@linux-node1 ~]# uptime    #查看CPU的负载分别为1分钟5分钟10分钟
 12:12:22 up  1:27,  1 user,  load average: 0.00, 0.00, 0.00
[root@linux-node1 ~]# top       #查看CPU的使用率,常用的监控工具
[root@linux-node1 ~]# vmstat 1  #每秒查看CPU的信息
[root@linux-node1 ~]# mpstat 1  #每秒查看CPU的使用率,专门监控CPU的

提示:用户态与内核态的使用比率为3:7

*(2)内存:查看监控内存信息的常见命令*

[root@linux-node1 ~]# free      #查看剩余内存

提示:一般是监控内存的使用率

*(3)硬盘:查看监控硬盘信息的常见命令*

监控磁盘的使用率

[root@linux-node1 ~]# df -h     #查看磁盘的使用量

监控磁盘的IO

[root@linux-node1 ~]# iotop     #默认是没有安装的,需要配置epel源安装
-bash: iotop: command not found
[root@linux-node1 ~]# yum -y install iotop
[root@linux-node1 ~]# iotop     #监控磁盘的IO读取速度
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                           
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd] 

*(4)网络:查看网络信息的常见命令*

监控网卡的流量

[root@linux-node1 ~]# iftop             #查看网卡的流量
[root@linux-node1 ~]# iftop -F eth0     #监控指定的网卡

*提示:当然我们也可以使用*****nmon********工具将上述的所有内容监控起来(运维必会)****

以下为相关博文资料

Linux下使用NMON监控、分析系统性能

http://blog.itpub.net/23135684/viewspace-626439/

Nmon工具的使用以及通过nmon_analyse生成分析报表

http://phpseyo.iteye.com/blog/1958502

网络监控

提示:无论使用什么做网络监控就不会很准确

*常见的网络监控品牌:*

监控宝:http://www.jiankongbao.com/

*基调*****:****http://www.tingyun.com/sem1.html

博睿:http://www.bonree.com/

smokeping 免费开源的网络监控软件,特点支持分布式

安装博文:http://www.xuliangwei.com/xubusi/507.html

提示:可以使用站长工具检查网站的网络性能http://tool.chinaz.com/

ping检测工具:

http://tool.chinaz.com/

http://ce.cloud.360.cn/

1.监控网络常见命令iftop,一般TCP比较大的情况下会用到

[root@linux-node1 ~]# iftop
-bash: iftop: command not found
[root@linux-node1 ~]# yum -y install iftop
[root@linux-node1 ~]# iftop
                   12.5Kb             25.0Kb              37.5Kb             50.0Kb        62.5Kb
└──────────────────┴──────────────────┴─────────linux-node1ぉぉぉぉぉ丞ぉぉぉぉぉぉ=> 10.0.0.1──────┴───────2.72Kb  3.70Kb  3.70Kb─                                 <=                                      320b    424b    424b
linux-node1                        => public1.alidns.com                     0b    270b    270b
                                   <=                                        0b    488b    488b
[root@linux-node1 ~]# iftop -F eth0     #监控指定的网卡

课后作业:

smokeping 免费开源的网络监控软件,特点支持分布式
安装博文:http://www.xuliangwei.com/xubusi/507.html

应用监控

(1)apache 的mod-status状态监控

Apache模块 mod_status
http://www.t086.com/code/apache2.2/mod/mod_status.html

(2)nginx的状态监控

使用 Nginx 提升网站访问速度
https://www.ibm.com/developerworks/cn/web/wa-lo-nginx/

提示:所有的应用程序都会提供监控的接口

*性能检测工具dstat*

dstat命令可以收集cpu、disk、net、system、内存、进程等系统信息;功能比vmstat强大,一条命令可以集成了uptime、vmstat、top等相关信息;

1.安装dstat命令:

yum install -y dstat

执行 dstat 命令,默认收集-cpu-、-disk-、-net-、-paging-、-system-的数据,一秒钟收集一次。默认输入 dstat 等于输入了dstat -cdngy 1 或 dstat -a 1;

如果我们执行 dstat 5 命令的话,他就是每5秒收集一次信息。

同样的 dstat 也可以收集指定的性能资源。使用 dstat -h 可以看到相应的参数。

[root@localhost ~]# dstat -h
Usage: dstat [-afv] [options..] [delay [count]]
Versatile tool for generating system resource statistics
Dstat options:
-c, --cpu              enable cpu stats 显示CPU状态
     -C 0,3,total           include cpu0, cpu3 and total  
  -d, --disk             enable disk stats 显示磁盘状态(读/写)
     -D total,hda           include hda and total  -D 后可以指定某一个磁盘
  -g, --page             enable page stats 显示页面状态
  -i, --int              enable interrupt stats 显示中断状态
     -I 5,eth2              include int5 and interrupt used by eth2
  -l, --load             enable load stats 显示系统负载
  -m, --mem              enable memory stats 显示内存使用状态
  -n, --net              enable network stats 网络流量
     -N eth1,total          include eth1 and total    指定网络接口
  -p, --proc             enable process stats 进程状态
  -r, --io               enable io stats (I/O requests completed)
  -s, --swap             enable swap stats 交换分区状态
     -S swap1,total         include swap1 and total 可以指定多个SWAP
  -t, --time             enable time/date output 显示系统日期和时间
  -T, --epoch            enable time counter (seconds since epoch)
  -y, --sys              enable system stats 显示系统信息状态
  --aio                  enable aio stats 
  --fs, --filesystem     enable fs stats 
  --ipc                  enable ipc stats 报告IPC消息队列和信号量的使用情况
  --lock                 enable lock stats
  --raw                  enable raw stats
  --socket               enable socket stats
  --tcp                  enable tcp stats
  --udp                  enable udp stats
  --unix                 enable unix stats
  --vm                   enable vm stats
  --plugin-name          enable plugins by plugin name (see manual)
  --list                 list all available plugins 列出可用的插件
  -a, --all              equals -cdngy (default) 默认显示
  -f, --full             automatically expand -C, -D, -I, -N and -S lists
  -v, --vmstat           equals -pmgdsc -D total   与vmstat执行的信息一样;
  --bw, --blackonwhite   change colors for white background terminal
  --float                force float values on screen
  --integer              force integer values on screen
  --nocolor              disable colors (implies --noupdate)
  --noheaders    disable repetitive headers  只显示一次表头以后就不显示了,使用重定向写入文件时很有用
  --noupdate             disable intermediate updates
  --output file          write CSV output to file  写入到CVS文件中

别名 alias dstat=’dstat -cdlmnpsy’

image-20211024113646604

参考博文

性能检测工具dstat

http://mofansheng.blog.51cto.com/8792265/1784493

Zabbix Documentation 3.0安装

Zabbix server端部署

深度实践zabbix3.0之server端部署

http://www.aclstack.com/284.html

1、基础环境准备

安装zabbix的yum源,这里有必要提一点,阿里的yum源已经提供了zabbix3.0 。因此我们不需要像某个叫X布斯的low B博客用官方的yum源,当然如果你对本地的网络有足够的自信可以尝试官方的yum源。此外本次我们将以centos7系统来进行安装,在安装之前请确保防火墙以及selinux关闭,并做好时间同步

1.1、yum源配置

rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

1.2、安装相关软件

yum install zabbix-server zabbix-web zabbix-server-mysql zabbix-web-mysql mariadb-server mariadb -y

注:如果Server端也需要监控则需要安装zabbix-agent

zabbix安装报错libiksemel解决方法
报错:
Error: Package: zabbix-server-mysql-3.4.15-1.el7.x86_64 (zabbix)
           Requires: libiksemel.so.3()(64bit)
问题应该在于repo.zabbix.com不能正常访问,导致下载不了此rpm包。
可以使用wget下载或者其他地址下载此rpm包后安装。
报错解决方法
https://blog.csdn.net/jiaping0424/article/details/94661482

zabbix官方所需附件包
http://repo.zabbix.com/non-supported/rhel/7/x86_64/
fping-3.10-1.el7.x86_64.rpm
iksemel-1.4-2.el7.centos.x86_64.rpm 


wget http://repo.zabbix.com/non-supported/rhel/7/x86_64/iksemel-devel-1.4-2.el7.centos.x86_64.rpm
wget http://repo.zabbix.com/non-supported/rhel/7/x86_64/iksemel-1.4-2.el7.centos.x86_64.rpm
wget http://repo.zabbix.com/non-supported/rhel/7/x86_64/iksemel-utils-1.4-2.el7.centos.x86_64.rpm
yum localinstall iksemel-*


第三方附件包
iksemel-1.4-6.sdl7.x86_64.rpm
http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/iksemel-1.4-6.sdl7.x86_64.rpm

1.3、修改PHP时区配置

sed -i 's@# php_value date.timezone Europe/Riga@php_value date.timezone Asia/Shanghai@g' /etc/httpd/conf.d/zabbix.conf

#要注意需要改的配置文件是/etc/httpd/conf.d/zabbix.conf而不是/etc/php.ini,当初力哥就踩了这个坑

2、数据库配置

在Centos7上如果通过yum安装的话,已经找不到了MySQL已经变成了mariadb。所以启动方式有略有不同

2.1、启动数据库

systemctl start mariadb

2.2、创建zabbix所用的数据库及用户

mysql
create database zabbix character set utf8 collate utf8_bin;
grant all on zabbix.* to zabbix@'localhost' identified by '123456';
exit
cd /usr/share/doc/zabbix-server-mysql-3.0.3
zcat create.sql.gz |mysql -uzabbix -p123456 zabbix

2.3、修改zabbix配置

# vim /etc/zabbix/zabbix_server.conf
DBHost=localhost    #数据库所在主机
DBName=zabbix       #数据库名 
DBUser=zabbix       #数据库用户 
DBPassword=123456   #数据库密码 

2.4、启动zabbix及http

systemctl start zabbix-server
systemctl start httpd

3、web界面安装master

访问http://192.168.56.11/zabbix/setup.php

image-20211024114129428

image-20211024114137432

image-20211024114143762

image-20211024114149382

image-20211024114154665

image-20211024114159726

以上的配置会生成一个配置文件,如果你需要做数据库分离的时候,需要修改这个配置文件

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

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

// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';

$ZBX_SERVER      = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '';

$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;

image-20211024114229346

image-20211024114236142

Zabbix agent端部署

深度实践zabbix3.0之agent端部署及加入监控

http://www.aclstack.com/329.html

1、基础环境准备

安装zabbix的yum源,这里有必要提一点,阿里的yum源已经提供了zabbix3.0 。因此我们不需要像某个叫X布斯的low B博客用官方的yum源,当然如果你对本地的网络有足够的自信可以尝试官方的yum源。此外本次我们将以centos7系统来进行安装,在安装之前请确保防火墙以及selinux关闭,并做好时间同步

1.1、yum源配置

rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

1.2、zabbix_agent安装配置

yum install zabbix-agent -y
vim /etc/zabbix/zabbix_agentd.conf     
Server=192.168.56.11               #用于被动模式,数据获取
ServerActive=192.168.56.11         #用于主动模式,数据提交
systemctl start zabbix-agent       #启动zabbix agent

很多人总对主动模式和被动模式有些迷茫,在这里笔者就简单的说明下。首先这里的主动模式还有被动模式的出发点是agent端,所以agent主动向server端发送数据就成为主动模式,而等待server端主动获取数据则称为被动模式。

2、Server端添加zabbix_agent

2.1、创建主机

登录zabbix Server (在上一篇文章中我们Server端的web地址是192.168.56.11/zabbix)。依次点击Configuration ----> Host ----> Create host

image-20211024114330599

2.2、配置主机信息

在1处配置主机名,2处配置要在zabbix server 端要显示的名称。3处选择要添加的群组,4处填写zabbix agent端的ip

image-20211024114342823

2.3、配置主机模板

点击1处配置模板,在2处输入linux然后选择Template OS Linux 。这个在3处点击Add 之后再4处点击Add

image-20211024114356680

2.4、验证结果

完成上一步的添加即可自动返回到列表页,之后等待数分钟刷新界面即可发现ZBX变成绿色,至此agent添加完毕

image-20211024114407592

zabbix升级3.0.4教程

zabbix3.0.4升级到zabbix3.2教程最傻瓜教程

http://user.qzone.qq.com/296917342/blog/1478441052?ptlang=2052&ADUIN=838997384&ADSESSION=1478437640&ADTAG=CLIENT.QQ.5443_.0&ADPUBNO=26536

环境

[root@zabbix ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core)
[root@zabbix ~]# sestatus 
SELinux status:                 disabled
[root@zabbix ~]# systemctl stop firewalld.service

我之前的zabbix3.0.4是参考力哥博客http://www.aclstack.com/284.html,全yum安装的

so,升级非常简单,为了保险可以备份/etc/zabbix/web/和/etc/httpd/conf.d/目录,当然还有数据库,方便还原

操作步骤如下,不解释

rpm -qa zabbix-release
rpm -e zabbix-release
rpm -Uvh http://mirrors.aliyun.com/zabbix/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
yum clean all
yum makecache
systemctl stop mariadb.service
systemctl stop zabbix-server.service
yum install zabbix-web zabbix-server-mysql zabbix-web-mysql -y
systemctl start mariadb.service
systemctl start zabbix-server.service

日志中出现database upgrade fully completed,代表升级成功

这时候,你可以打开浏览器体验新的zabbix3.2了!http://192.168.56.11/zabbix/

image-20211024114455508

Zabbix设置默认模板规则

当我们配置完成zabbix-agent端的时候需要将一些以前默认的模板触发器的规则设置合理,如

image-20211024114532870

将进程数监控的阙值修改为600

image-20211024114543900

将Too many processes on {HOST.NAME}监控项的阙值修改为600

image-20211024114554037

zabbix-agent简单优化

修改zabbix-sever连接agent超时时间

[root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.conf
Timeout=15
[root@linux-node2 ~]# systemctl restart zabbix-agent

Zabbix获取数据的方式

1.第一种方式使用zabbix-get命令去获取key指

[root@linux-node1 ~]# yum -y install zabbix-get 
#安装可以从客户端获取数据的命令,默认已经安装
[root@linux-node1 ~]# zabbix_get -s 172.16.1.8 -p 10050 -k "system.cpu.load[all,avg1]"          
0.000000        #采集远端系统的负载
[root@linux-node1 ~]# zabbix_get -s 192.168.56.111 -k system.hostname   
#获取远端主机名称                    
linux-node1

2.第二种方式可以使用telnet相应的agent端口去获取key值

[root@linux-node1 ~]# telnet 192.168.56.112 10050
Trying 192.168.56.112...
Connected to 192.168.56.112.
Escape character is '^]'.
system.hostname
ZBXD
     linux-node2Connection closed by foreign host.

解决中文乱码问题

复制本机windows下的中文的文件C:\Windows\Fonts

image-20211024114727356

将文件复制到zabbix,/usr/share/zabbix/fonts/

[root@linux-node1 ~]# cd /usr/share/zabbix/fonts/
[root@linux-node1 fonts]# ll
total 1720
-rw-r--r-- 1 root root 1758480 Feb 21 07:58 fzltcxhjw.ttf
lrwxrwxrwx 1 root root      33 Mar  4 19:33 graphfont.ttf -> /etc/alternatives/zabbix-web-font

然后链接新的模板接口

[root@linux-node1 fonts]# rm -f graphfont.ttf 
[root@linux-node1 fonts]# ln -s /usr/share/zabbix/fonts/fzltcxhjw.ttf graphfont.ttf

最后检查字体是否OK

image-20211024114802231