01.Zabbix监控快速入门

1.监控知识基本概述

  • 1.为什么要使用监控

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

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

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

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

  • 2.如何进行监控,比如我们需要监控磁盘的使用率

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

    • 2.监控磁盘的那些指标block、inode

    • 3.如何获取具体的信息df -h|awk '/\/$/{print $(NF-1)}'

    • 4.获取的数值到达多少报警 80%

  • 3.流行的监控工具

    • 1.cacti、Nagios、Zabbix、

    • 2.Lepus(天兔)数据库监控系统

    • 3.Open-Falcon 小米

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

  • 4.如果去到一家新公司,如何入手监控

    • 1.硬件监控 路由器、交换机、防火墙

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

    • 3.服务监控 nginx、php、tomcat、redis、memcache、mysql

    • 4.WEB监控 请求时间、响应时间、加载时间、

    • 5.日志监控 ELk(收集、存储、分析、展示) 日志易

    • 6.安全监控 Firewalld、WAF(Nginx+lua)、安全宝、牛盾云、安全狗

    • 7.网络监控 smokeping 多机房

    • 8.业务监控

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 用户态: 跟用户的操作有关 35%
    sy 系统态: 跟内核的处理有关 60%    id CPU空闲:

内存监控命令: free

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

磁盘监控命令: df、iotop

Device:            tps    kB_read/s    kB_wrtn/s        kB_read     kB_wrtn
sda               0.80        25.32        33.36        221034      291193设备名        每秒传输次数   每秒读大小   每秒写大小   读的总大小   写的总大小

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

单位换算
Mbps  100Mbps/8MB    12MB

iftop  中间的<= =>这两个左右箭头,表示的是流量的方向。
TX:发送流量、RX:接收流量、TOTAL:总流量#查看TCP11中状态netstat -an|grep ESTABLISHED
netstat -rn                    # 查看路由信息netstat -lntup

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

1.当系统内存不足的时候就会大量使用swap
2.当系统大量使用swap的时候,系统会特别卡
注意: 有时可能内存还有剩余300Mb-500Mb,但会发现swap依然被使用

[root@m01 ~]# dd if=/dev/zero of=/dev/null bs=800M[root@m01 ~]# tail -f /var/log/messagesOut of memory: Kill process 2227 (dd) score 778 or sacrifice child
Killed process 2227 (dd) total-vm:906724kB, anon-rss:798820kB, file-rss:0kB

3.那单机时代,如何使用shell脚本来实现服务器的监控

需求: 每隔1分钟监控一次内存,当你的可用内存低于100m,发邮件报警,要求显示剩余内存

1.怎么获取内存可用的值free -m|awk '/^Mem/{print $NF}'
2.获取到内存可用的值如何和设定的阈值进行比较
3.比较如果大于100m则不处理,如果小于100则报警
4.如何每隔1分钟执行一次

[root@m01 ~]# cat free.sh #!/usr/bin/bashHostName=$(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 5done

3.zabbix监控快速安装

1.配置Zabbix仓库

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

2.安装Zabbix程序包,以及MySQL、Zabbix-agent

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

3.创建Zabbix数据库以及用户

[root@zabbix-server ~]# mysql -uroot -pMariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';

4.导入Zabbix数据至数据库中

[root@zabbix-server ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.12/[root@linux-node1 zabbix-server-mysql-3.4.12]# zcat create.sql.gz |mysql -uroot zabbix

5.编辑/etc/zabbix/zabbix_server.conf文件,修改数据库配置

[root@zabbix-server ~]# grep  ^[a-Z]  /etc/zabbix/zabbix_server.confLogFile=/var/log/zabbix/zabbix_server.logLogFileSize=0PidFile=/var/run/zabbix/zabbix_server.pidDBHost=localhostDBName=zabbixDBUser=zabbixDBPassword=zabbixSNMPTrapperFile=/var/log/snmptrap/snmptrap.logTimeout=4AlertScriptsPath=/usr/lib/zabbix/alertscriptsExternalScripts=/usr/lib/zabbix/externalscriptsLogSlowQueries=3000

6.启动Zabbix服务进程,并加入开机自启

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

7.配置Apache的配置文件/etc/httpd/conf.d/zabbix.conf,修改时区。

[root@zabbix-server ~]# vim /etc/httpd/conf.d/zabbix.confphp_value max_execution_time 300php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300php_value always_populate_raw_post_data -1#取消注释,设置正确的时区php_value date.timezone Asia/Shanghai

8.重启Apache Web服务器

[root@zabbix-server ~]# systemctl start httpd

欢迎界面, 直接下一步即可

检查依赖项是否不存在任何异常

配置zabbixWeb连接数据库

配置ZabbixServer服务器的主机名或主机IP地址和端口号, 以及安装的名称(可选)

安装前摘要,检查配置参数。如果一切都正确,请按"下一步"按钮或"后退"按钮来更改配置参数。


提示已成功地安装了Zabbix前端。配置文件/etc/zabbix/web/zabbix.conf.php被创建。

默认登陆ZabbixWeb的用户名Admin,密码zabbix


调整ZabbixWeb前端为中文字符集

至此Zabbix已经安装完毕

4.zabbix快速监控主机

1.安装Zabbix-Agent

[root@web03 ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.12-1.el7.x86_64.rpm

2.配置Zabbix-Agent

[root@web03 ~]# vim /etc/zabbix/zabbix_agentd.confServer=10.0.0.61    #指向Zabbix-Server

3.启动Zabbix-Agent

[root@web03 ~]# systemctl start zabbix-agent[root@web03 ~]# systemctl enable zabbix-agent[root@web03 ~]# netstat -lntpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1103/zabbix_agentd

4.配置ZabbixWeb页面,点击配置->选择主机->创建主机

5.点击模板->选择连接指示器->选择->搜索Linux->点击小按钮添加->最后添加

5.Zabbix监控基础架构

zabbix-agent(数据采集)-->zabbix-server(数据分析|报警)--> 数据库(数据存储)<--zabbix web(数据展示)

Zabbix单台时代: LNMP+Zabbix
Zabbix数据拆分: LAP+MySQL(修改如下两个文件中连接数据库的配置信息)

[root@m01 ~]# ll /etc/zabbix/zabbix_server.conf[root@m01 ~]# ll /etc/zabbix/web/zabbix.conf.php

Zabbix拆分数据库实战

# 1.在新的数据库上创建zabbix库mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@'%' identified by 'Bgx123.com';# 2.在旧的zabbix服务器上备份数据库文件,然后将备份数据导入新的数据库[root@m01 ~]# mysqldump -uroot \--databases zabbix \
--single-transaction > `date +%F%H`-zabbix.sql
[root@m01 ~]# cat 2018-08-2017-zabbix.sql |mysql -h 10.0.0.51 -uzabbix -pBgx123.com zabbix# 3.修改zabbixServer的数据库连接信息[root@m01 ~]# vim /etc/zabbix/zabbix_server.conf DBHost=172.16.1.51DBName=zabbixDBUser=zabbixDBPassword=Bgx123.com
[root@m01 ~]# systemctl restart zabbix-server# 4.修改zabbixWeb连接数据库信息  [root@m01 ~]# vim /etc/zabbix/web/zabbix.conf.php $DB['TYPE']     = 'MYSQL';$DB['SERVER']   = '172.16.1.51';$DB['PORT']     = '0';$DB['DATABASE'] = 'zabbix';$DB['USER']     = 'zabbix';$DB['PASSWORD'] = 'Bgx123.com';
[root@m01 ~]# systemctl restart httpd   # 如出现如下错误:请检查数据库是否允许远程连接,对应的账户和密码是否配置错误[root@m01 ~]# tail -f /var/log/zabbix/zabbix_server.log
 2189:20180820:173636.941 [Z3001] connection to database 'zabbix' failed: [2003] Can't connect to MySQL server on '172.16.1.51' (111)

6.zabbix自定义监控初试

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

1.监控系统中的对象

(系统监控命令 + awk + 筛选条件  =  状态值)
iostat | awk '/^sda/{print $2}'

2.如何在Zabbix-Agent新增监控项UserParameter=<key>,<shell command>

[root@web03 ~]# cat /etc/zabbix/zabbix_agentd.d/iotop.confUserParameter=iotps,iostat | awk '/^sda/{print $2}'[root@web03 ~]# systemctl restart zabbix-agent

3.agent如何验证自己定义的监控项是否生效,是否能取值

[root@web03 ~]# zabbix_agentd -p |grep iotpsiotps                               [t|1.72]

4.Zabbix-Server如何验证Zabbix-Agent是否有对应的监控项

[root@m01 ~]# yum install zabbix-get -y[root@m01 ~]# zabbix_get -s 10.0.0.9 -p10050 -k iotps1.69

5.在ZabbixWeb前端界面进行关联展示

1.选择配置->主机->对应主机->监控项->创建监控项->名称->键值(监控项目名称)->信息类型->单位
2.选择监测中->最新数据->等待30s

6.自定义阈值(到达预设的瓶颈)

1.选择配置->主机->对应主机->触发器->创建触发器->名称->
表达式一定要选择对应的监控项进行设定({web03-10.0.0.9:system.users.num.last()}>2)->确认
2.开启多个会话窗口,测试前端报警
3.前端报警开启方式->右上角->小人头->正在发送消息->开启即可

7.zabbix自定义监控报警

当监控项超过触发器设定的阈值->触发动作->(发送消息|执行命令)
1.怎么报警-> 2.报警怎么发,发什么内容 -> 报警发给谁
注意:要使SMTP验证选项可用,Zabbix服务器应使用cURL 7.20.0或更高版本

1.单击配置->动作->启用动作

2.单击管理→报警媒介类型,设定发送消息的介质-email

3.配置服务器邮件的发件人,使用邮箱账户和授权密码(注意:不是收件人邮箱)

4.配置收件人接收的邮箱,单击右上角用户->报媒介->添加

5.填写收件人类型, 收件人邮箱,接收报警的级别,最后点击添加,

6.确认没有任何问题,点击更新即可。

7.如果邮箱配置没有任何错误,可以尝试触发报警, 查看邮件是否能收到报警消息

8.如果邮箱配置存在错误,单击报表->动作日志->检查邮箱发送情况

2.实现企业微信报警

1.准备微信报警脚本, 脚本怎么写->脚本放在哪

[root@m01 ~]# yum install python-pip -y[root@m01 ~]# pip install requests[root@m01 ~]# cd /usr/lib/zabbix/alertscripts[root@m01 alertscripts]# [root@m01 alertscripts]# chmod +x weixin.py [root@m01 alertscripts]# ./weixin.py  WeiXinID   Subject Messages[root@m01 alertscripts]# rm -f /tmp/weixin.log

2.单击管理->报警媒介类型->创建媒介类型

3.填写微信报警名称, 脚本传入的参数

{ALERT.SENDTO} #发给谁
{ALERT.SUBJECT} #发送的主题
{ALERT.MESSAGE} #发送的内容


4.配置接收的企业微信号(微信号是企业中的微信名称), 单击用户->报警媒介->添加->按如下填写即可

5.测试微信报警






Powered By Z-BlogPHP 1.7.3

 Theme By 优美模版

本博客为开源博客,本博客联系QQ:372097243