监控知识学习记录

监控知识学习

一篇好的博客https://www.cnblogs.com/xuliangwei/p/6709438.html#3925227

文章目录

一、监控知识基本概述

1. 为什么要使用监控(实时、反馈、可靠、稳定
  1. 对系统不间断实时监控
  2. 实时反馈系统当前状态
  3. 保证服务可靠性安全性
  4. 保证业务持续稳定运行
2. 如何进行监控,比如我们需要监控磁盘的使用率(free -h)
  1. 如何查看磁盘使用率 df -h
  2. 监控磁盘的哪些指标 block、incode
  3. 如何获取具体的信息df -h | awk ‘//$/{print $(NF -1)}’ ($5)
  4. 获取的数值到达多少报警?(一般来说80%)

我们想要监控什么(cpu的使用率、负载、用户态、内核态、上下文切换)—用什么命令查找到这些信息—信息中那些是我们所需要的—如何把这些需要的信息取出来–根据企业的实际情况,定义阈值

  1. 了解监控对象:我们监控的对象你是否了解呢?比如CPU是如何工作的?

  2. 性能基准指标:我们要监控这个东西的什么属性?比如CPU的使用率、负载、用户态、内核态、上下文切换

  3. 报警阈值定义:怎么样才算是故障,要报警呢?比如CPU的负载到底多少算高,用户态、内核态分别跑多少算高?

  4. 故障处理流程:收到了故障报警,那么我们怎么处理呢?有什么更高效的处理流程呢?

image-20211202082958311

发现问题:当系统发生故障报警,我们会受到故障报警的信息

定位问题:故障邮件一般会写某某主机故障、具体故障的内容,就需要我们对报警内容需要分析,比如一台服务器连不上:我们就需要去考虑是网络问题、还是负载太高导致长时间无法连接、又或者是某开发出发了防火墙禁止的相关策略等等,我们就需要去分析故障具体原因

解决问题:当我们了解到了故障的原因后,就需要通过故障解决的优先级去解决该故障

总结问题:当我们解决完重大故障后,需要对故障原因以及防范进行总结归纳,避免以后重复出现

####3 流行的监控工具

  1. cactI(仙人掌)、Nagios、Zabbix、

    cacti:网络流量监控

    Nagios: 主机监控

  2. Zabbix是一个分布式监控系统,支持多种采集方式和采集客户端,有专用的Agent代理,也支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。其灵活的扩展性和丰富的功能是其他监控系统所不能比的。相对而言,它的总体功能做的非常优秀(丰富的功能、可扩展的能力、二次开发的能力和简单易用的特点)

  3. Lepus(天兔)专门用来数据库监控系统

  4. Open—Falcon 小米

  5. Prometheus(普罗米修斯,Docker、K8s)

  6. 三方监控软件(监控宝、安全宝、安全狗、)

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

####5. 监控流程

  1. 数据采集: Zabbix通过SNMP、Agent、ICMP、SSH、IPMI等对系统进行数据采集
  2. 数据存储: Zabbix存储在Mysql上,也可以存储在其他的数据库服务中
  3. 数据分析:当我们事后需要复盘分析故障时。Zabbix能给我们提供图形以及时间等相关信息,方便我们确定故障所在。
  4. 数据展示: web页面展示(移动APP、Java_php开发一个web页面也可以)
  5. 监控报警: 电话报警、邮件报警、微信报警、短信报警、报警升级机制等(无论什么报警都可以)
  6. 报警处理: 当接收到报警时,我们需要根据故障的级别进行处理,比如:重要紧急、重要不紧急等。根据故障的级别,配合相关的人员进行快速处理。

二、单机时代如何监控

1. 监控基本命令

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

内存监控命令: free -m

磁盘监控命令: df、iotop

网络监控命令: ifconfig、route、glances、iftop、nethogs、netstat(查看网络状态)

查看tcp11中的状态

netstat -an | grep ESTABLISHED

查看路由信息

netstat -rn

netstat -lntup

2. 随着时间的推移,用户不断地增多,服务随时可能扛不住会被oom(out of memory),当系统内存不足的时候,会触发oom
  1. 当系统内存不足的时候会大量使用swap
  2. 当系统大量使用swap的时候,系统会特别卡

注意:有时可能内存还有剩余300Mb~500Mb,但会发现swap依然被使用

dd if=/dev/zero of=/dev/null bs=800M
tail -f /var/log/messages

dd命令: 用于读取、转换并输出数据(指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换)

参数说明

  • if=文件名: 输入文件名,默认为标准输入。即指定源文件
  • of=文件名: 输出文件名,默认为标准输出。即指定目的文件
  • obs=bytes 一次写入bytes字节,即写入缓冲区的字节数
  • bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)
  • count=blocks 只拷贝输入的blocks块
eg1: 1、要把一张软盘的内容拷贝到另外一张软盘上,利用/tmp作为临时存储区。把源盘插入驱动器中,输入下述命令
dd if=/dev/fd0 of=/tmp/tmpfile
	2、拷贝完成后,把源盘从驱动器中取出,把目标盘插入,输入命令
dd if=/tmp/tmpfile of=/dev/fd0
	3、软盘拷贝完成后,应该将临时文件删除
rm /tmp/tmpfile

eg2: 把net.i这个文件写入软盘中,并设定读/写缓冲区的数目
dd if=net.i of=/dev/fd0 be=16384

eg3: 将文件sfile拷贝到文件dfile中
dd if=sfile of=dfile

eg4: 创建一个100M的空文件
dd if=/dev/zero of=hello.txt bs=100M count=1

补充知识
/dev/null,外号叫无底洞,你可以向他输出任何数据,他通吃,并且不会撑着
/dev/zero,是一个输入设备,你可以用它来初始化文件
创建特定文件大小最简单的方法是使用dd命令
dd if="inputFileName" of="outFileName" bs="块大小" count="块个数"

也可以用dd命令来传输大量数据来测试内存的操作速度
dd if=/dev/zero of=./testmm.file bs=10M count=10

3. 监控脚本需求:
  1. 怎么获取内存可用的值
  2. 获取到内存可用的值如何和设定的阈值进行比较
  3. 比较如果大于100m则不处理,如果小于100则进行报警
  4. 如何每分钟执行一次
#!/bin/bash
#1、定义变量
Avail_buffer=$(free -m | awk '/^Mem/{print $NF}')
IP=$(hostname -I | awk '{print $1}')
Host=$(hostname)
Date=$(date +%F-%R)
#2、循环语句实现实时监控
while true
do
        Avail_buffer=$(free -m | awk '/^Mem/{print $NF}')
        if [ $Avail_buffer -lt 1000 ];then
                echo "报警。${Date}_${Host}_$IP,内存不足,可用内存为$Avail_buffer.请及时处理"
        else
                echo "正常,进入下一次循环"
        fi
        sleep 2
done

image-20211203175851032

当我们向里面写入大量的数据

dd if=/dev/zero of=/tmp/file bs=1G count=222模拟向里面写入数据
4. Zabbix监控快速安装

官方安装网址

https://www.zabbix.com/cn/download?zabbix=4.0&os_distribution=centos&os_version=7&db=mysql&ws=apache

阿里巴巴镜像站

[阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com)](https://developer.aliyun.com/mirror/)

1. 配置Zabbix仓库

rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

2. 安装Zabbix server,Web前端,agent、mysql(mariabd)
yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent mariadb-server -y   
zabbix-server-mysql #zabbix服务器包
zabbix-web-mysql #zabbix前端包
zabbix-agent #zabbix代理包
mariadb-server #mysql
3. 创建初始数据库
systemctl start mariadb
systemctl enable mariabd   #先把服务提起来
创建数据库并授权
# mysql -uroot -p   
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'zabbix';
mysql> grant all privileges on zabbix.* to zabbix@localhost ;
mysql> quit;

导入初始架构和数据,系统将提示您输入新创建的密码。

# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix zabbix(库名)
4. 为Zabbix server配置数据库

编辑配置文件 /etc/zabbix/zabbix_server.conf

DBPassword=zabbix	
5. 为Zabbix前端配置PHP

编辑配置文件 /etc/httpd/conf.d/zabbix.conf, uncomment and set the right timezone for you.

# php_value date.timezone Asia/Shanghai
6. 启动Zabbix server和apachet

启动Zabbix server和apache,并为它们设置开机自启:

# systemctl restart zabbix-server  httpd
# systemctl enable zabbix-server  httpd
7. 可以进行访问了
http://192.168.121.155/zabbix  

额外补充

Nginx和php

​ Nginx自身不能解析php,需要通过php的fpm插件 9000端口来处理

​ 启动或重启时,必须要分开进行

Apache和php

​ Apache自带php模块,只要安装且启动服务,就能自动解析php

​ 启动和重启时,只需对httpd操作就行

防火墙未放行,导致Zabbix页面加载不出来

  203  firewall-cmd --add-port=80/tcp --permanent
  204  firewall-cmd --query-port=80/tcp
  205  firewall-cmd --reload 
  206  firewall-cmd --query-port=80/tcp
5.Zabbix快速监控主机

代理节点的配置

1. 安装Zabbix-Agent
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.36-1.el7.x86_64.rpm
2. 配置Zabbix-Agent指向Zabbix-Server
[root@zabbix-agent ~]# vim /etc/zabbix/zabbix_agentd.conf 
Server=172.0.0.1改为192.168.121.163(server)
3. 启动Zabbix-Agent,默认监听在10050端口

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

netstat -lntp 查看端口号

4. 配置Zabbix-web访问zabbix-server,添加zabbix-agent

image-20211204160351665

image-20211204161319281

image-20211204161431174

image-20211204165921552

image-20211204170854863

6. Zabbix自定义监控初试

如何获取想要监控对象的值,又如何将数据传递给zabbix

1. 监控系统中的对象(iostat对系统的磁盘IO活动做出监视)
[root@zabbix-agent ~]# iostat | awk '/^sda/ {print $2}'
2. 在ZabbixAgent的/etc/zabbix/zabbix_agentd.d目录中新增监控项,使用UserParameter=,
[root@zabbix-agent ~]# vim /etc/zabbix/zabbix_agentd.d/iotop.conf 
[root@zabbix-agent ~]# cat /etc/zabbix/zabbix_agentd.d/iotop.conf 
UserParameter=iotps,iostat | awk '/^sda/ {print $2}'
[root@zabbix-agent ~]# systemctl restart zabbix-agent.service 
 
3. 在ZabbixAgent客户端测试设置的监控项是否正常,使用zabbix_agentd -p | grep KEY检测是否能获取到对应的值
[root@zabbix-agent ~]# systemctl restart zabbix-agent.service 
[root@zabbix-agent ~]# zabbix_agentd -p | grep iotps
iotps                                         [t|1.41]
4. 在Zabbbixserver端测试获取ZabbixAgent端自定义的监控项是否正常`zabbix_get -s IP_addr -k KEY
[root@localhost ~]# yum -y install zabbix-get
[root@localhost ~]# zabbix_get  -s 192.168.121.166 -p10050 -k iotps
1.37
5.在ZabbixWeb前端页面进行关联展示
  1. 点击配置–>主机–>对应主机–>监控项–>创建监控项–>名称–>键值(监控项目名称)–>信息类型–>单位
  2. 点击检测中–>最新数据–>等待数据

image-20211204231534991

image-20211204231708415

image-20211204231835708

6. 自定义阈值(到达预设的瓶颈)
  1. 选择配置–>主机–>对应主机>–>触发器–>创建触发器–>名称–>表达式一定要选择对应的监控项进行设定({web03-10.0.09:system.users.num.last()})–>确认

image-20211205134910807

image-20211205134709144

7. 验证Zabbix报警
  1. 开启多个会话端口,测试前端报警
  2. 前端Zabbix面板报警开启方式–>右上角小人头–>正在发送消息–>开启即可

image-20211205140517303

image-20211205140337394

image-20211205140415015

8. 邮件报警

image-20211205142511125

image-20211205143411601

收件人的邮箱设置,–小人图标–报警媒介

image-20211205144109640

模拟报警情况

image-20211205144542988

image-20211205144616503

image-20211205144805615

实施思路

  1. 配置–动作– Report problems to Zabbix administrators(已启用)
  2. 管理–报警媒介类型–Email–填写发送人邮件地址等信息
  3. 右上角小人—报警媒介—添加发送人的邮件信息–更新

排错思路

  1. 先看报表中的动作日志,有没有记录,如果没有。按照实施思路重新检查。systemctl restart zabbix-server

自定义模板、监控项、触发器

  1. 默认的监控项和触发器不合理
  2. 多调试才能找到最适合当前环境的监控阈值
  3. 但不知道键值KV是干嘛的时,复制粘贴到server端

[root@localhost ~]# zabbix_get -s 192.168.121.166 -p10050 -k 键值

zabbix_server -R config_cache_reload来清除缓存,而不用重启服务

三、自定义邮件报警

Zabbix报警媒介类型中默认有Email

但是 Zabbix2.*的版本中没有这个功能

Centos6的php版本过低,就算装了Zabbix3.4的版本,也不支持

脚本监控报警

脚本发邮件实施步骤

1. 在Zabbix-server端安装mailx

[root@localhost ~]# yum -y install mailx

修改配置文件。配置邮件信息

[root@localhost ~]# vim /etc/mail.rc 
添加
set bsdcompat
set from=1305456282@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=1305456282@qq.com
set smtp-auth-password=
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/

image-20211206145521463

[root@localhost ~]# echo tangkaikainihaoa | mail -s kaikaitang 1305456282@qq.com(发送邮件)

-s 写标题 echo或者cat 写内容

2. 写脚本

[5 自定义警报提示 (zabbix.com)](https://www.zabbix.com/documentation/4.0/zh/manual/config/notifications/media/script)

image-20211206190539949

[root@localhost alertscripts]# cd /usr/lib/zabbix/alertscripts/
[root@localhost alertscripts]# pwd
/usr/lib/zabbix/alertscripts
[root@localhost alertscripts]# vim alart.sh
[root@localhost alertscripts]# cat alart.sh 
#!/bin/bash
       
to=$1
subject=$2
body=$3
       
cat <<EOF | mail -s "$subject" "$to"
$body
EOF
[root@localhost alertscripts]# bash alart.sh 1305456282@qq.com test 123
然后就依次正常收到邮件

image-20211206195405805

3. 在Zabbix-web上创建自定义报警

管理–报警媒介–创建媒体类型

image-20211206201130228

image-20211206205453303

收到的邮件发现是乱码

4. 实现企业微信报警

image-20211206221035334

image-20211206221258809

5. 编写邮件内容

image-20211206223156186

image-20211206223254186

配置故障报警邮件内容

单击配置—东作----事件源----触发器----启用默认的告警通知

1. 配置故障报警邮件内容

邮件名称:

故障告警:{TRIGGER.NAME}

告警消息内容:

问题开始于:{EVENT.DATE} on {EVENT.TIME}

设备主机名:{HOST.NAME1}

报警严重性:{TRIGGER.SEVERITY}

报警服务:{ITEM.NAME1}

报警key: {ITEM.KEY1}:{ITEM.VALUE1}

原始问题ID: {EVENT.ID}

2. 配置恢复告警邮件内容

邮件名称:

告警恢复:{TRIGGER.NAME}

恢复消息内容:

故障恢复于:{EVENT.DATE} on {EVENT.TIME}

恢复主机:{HOST.NAME1}

恢复服务:{ITEM.NAME1}

恢复key1: {ITEM.KEY1} : {ITEM.VALUE1}

恢复key2: {ITEM.KEY2} : {ITEM.VALUE2}

报警内容详细了很多

image-20211207004448064

image-20211207004532162

6. zabbix图表中中文不显示

image-20211207103707568

  1. 从windows中找到字体C:\Windows\Fonts
  2. 找到Linux里,zabbix的字体路径,将第一步的字体替换
find / -name "*fonts*"
cd /usr/share/zabbix/assets/fonts/
ls
file graphfont.ttf 
cd /etc/alternatives/
ls
file zabbix-web-font
cd /usr/share/fonts/dejavu/
ls
file DejaVuSans.ttf 
上传字体licon.ttf
mv DejaVuSans.ttf  DejaVuSans.ttf.bak
mv lucon.ttf DejaVuSans.ttf

修改之后的字体

image-20211207105742122

7. Zabbix自定义配置阈值

目标:演示去除内存的百分比(取出内存的可用的MB大小 / 总的内存大小 = 实际可用的百分比)

1. 定义剩余内存百分比
[root@zabbix-agent zabbix_agentd.d]# cd /etc/zabbix/zabbix_agentd.d/
[root@zabbix-agent zabbix_agentd.d]# vim available_mem.conf 
UserParameter=available_mem_percent,free | awk '/^Mem/{print $NF*100/$2}'
2. server端测试是否成功
[root@localhost ~]# zabbix_get -s 192.168.121.166 -k available_mem_percent
80.1087
3. 创建监控项

image-20211207133308970

image-20211207133850816

4. 定义触发器

image-20211207134359899

5. 模拟触发条件

关闭交换分区.swapoff -a

用dd if=/dev/zero of=/tmp/test bs=100M count=100 模拟情况时就会发生agent系统宕掉的情况。不好验证

6. 触发现象省略

四、Zabbix监控nginx

具体情况访问这篇推文

[(20条消息) Centos7下通过zabbix监控nginx status_bobpen的专栏-CSDN博客](https://blog.csdn.net/bobpen/article/details/53431699)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值