zabbix总览

总览:
1.什么是监控工
2.常见的linux监控命令
3.使用shell脚本来监控服务器
4.zabbix的基础服务架构
5.zabbix生产环境安装
6.监控一台服务器主机
7.自定义监控项
8.自定义触发器
9.微信报警
10.自定义图形和grafana出图
11.自定义监控模板
12.zabbix监控角度总结
13.web网站的可用性检测
14.使用percona插件监控mysql
15.snmp监控Windows和linux
16.zabbix自动发现和自动注册(主动)
17.zabbix-agent主动和被动的区别
18.zabbix版本升级
19.zabbix分布式监控proxy
20.zabbix监控jvm原理
21.zabbix低级自动发现
什么是低级自动发现
为什么要用低级自动发现
zabbix模板自带的低级自动发现有哪些
增加一个监控原型
创建一个低级自动发现规则

22.zabbix性能优化
23.zabbix api
24.zabbix高可用

1.什么是监控?
现实生活中监控:安防的监控 看监控 事后追责
linux监控: 实现预警 数据分析

2.常见的linux监控命令
CPU

top
htop
uptime
vmstat

内存

free

磁盘

df
iotop

网卡

iftop 查看IP地址占用流量
nethogs 查看进程占用流量

系统进程

ps
pstree 以树状的形式查看进程

系统日志ELK

3.使用shell脚本来监控服务器

shell+crontab适合服务器数量少的场景

#!/bin/bash
avai_mem=`free -m|awk '/^Mem/{print $NF}'`
if [ $avai_mem -lt 100 ];then
echo "可用内存过低,当前内存是:$avai_mem" >>/tmp/monitor_mem.log
echo "可用内存过低,当前内存是:$avai_mem"|mail -s  "服务可用内存低"
[email protected] 
fi

定时任务:分时日月周 cmd

4.zabbix的基础服务架构
在这里插入图片描述
5.zabbix生产环境安装
#安装zabbix前提,关闭selinux
1:配置zabbix的yum源
#下载zabbix-release

 wget   http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix -release-4.0-1.el7.noarch.rpm

#安装zabbix-release

rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm 

#将官方仓库地址替换为清华仓库地址

sed -i 's#http://repo.zabbix.com#https://mirror.tuna.tsinghua .edu.cn/zabbix#g' /etc/yum.repos.d/zabbix.repo

2:安装zabbix服务端和zabbix-web前端

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

3:安装mariadb,创建zabbix库,授权zabbix用户

yum install mariadb-server -y 
systemctl start mariadb 
systemctl enable mariadb 
mysql_secure_installation

先回车
再n
然后一路y

mysql 
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; 
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by '123456';

导入zabbix表结构和初始数据

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123456 zabbix

检查zabbix库是否导入成功

 mysql -uroot  zabbix -e 'use zabbix; show tables'

4:配置启动zabbix-server

vi /etc/zabbix/zabbix_server.conf 
DBHost=localhost 
DBName=zabbix 
DBUser=zabbix 
DBPassword=123456

启动zabbix-server

systemctl start zabbix-server 
systemctl enable zabbix-server

检查:

netstat -lntup|grep 10051

5:修改Zabbix前端的PHP配置,并启动httpd

vi /etc/httpd/conf.d/zabbix.conf 
php_value date.timezone Asia/Shanghai
systemctl start httpd 
systemctl enable httpd

6:前端zabbix-web的安装

浏览器:http://10.0.0.71/zabbix

后期修改zabbix数据库密码的时候,需要修改的配置文件: /etc/zabbix/web/zabbix.conf.php

http://10.0.0.71/zabbix/zabbix.php 

登录的账号密码

Admin zabbix

6.监控一台服务器主机

监控zabbix-server自己

yum install zabbix-agent.x86_64 -y 
systemctl enable zabbix-agent.service 
systemctl start zabbix-agent.service

使用zabbix-agent监控其他主机(10.0.0.8)

wget https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/r hel/7/x86_64/zabbix-agent-4.0.16-1.el7.x86_64.rpm 
rpm -ivh  zabbix-agent-4.0.16-1.el7.x86_64.rpm 
vim /etc/zabbix/zabbix_agentd.conf 
Server=10.0.0.71 
systemctl enable zabbix-agent.service 
systemctl start zabbix-agent.service

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7.自定义监控项
以监控硬盘的tps值为例
a: 命令行取值

iostat|awk '/^sda/{print $2}'

b:修改zabbix-agent配置文件

vim /etc/zabbix/zabbix_agentd.conf UserParameter=tps,iostat|awk '/^sda/{print $2}'

systemctl restart zabbix-agent.service

c: 在web界面上添加监控项
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

8.自定义触发器
触发器的作用,实现报警
触发器的方法:

diff()  比较两次取到的值 
last()  最新值
 avg(5m) 平均5分钟,改值都大于>1 
 max(5m)   最大值 
 min(5m)   最小值 
 nodate(5m)   没有收到数据报警

在这里插入图片描述
在这里插入图片描述
9.微信报警
邮件报警
1.配置发件人
在这里插入图片描述
在这里插入图片描述

2.配置收件人
在这里插入图片描述
3.启动报警发消息的动作
在这里插入图片描述
微信报警
#上传weixin.py的脚本

python weixin.py 
yum install python-pip -y 
pip install requests   -i https://pypi.tuna.tsinghua.edu.cn/simple

mv  weixin.py   /usr/lib/zabbix/alertscripts 
chmod +x  weixin.py

配置报警媒介
在这里插入图片描述
在这里插入图片描述
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

配置收件人
在这里插入图片描述
重新出发报警
在这里插入图片描述
在这里插入图片描述

#定制报警内容 
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
 { 
 告警主机:{HOST.NAME} 
 告警地址:{HOST.IP} 
 监控项目:{ITEM.NAME} 
 监控取值:{ITEM.LASTVALUE} 
 告警等级:{TRIGGER.SEVERITY} 
 当前状态:{TRIGGER.STATUS} 
 告警信息:{TRIGGER.NAME} 
 告警时间:{EVENT.DATE} {EVENT.TIME} 
 事件ID:{EVENT.ID} 
 }

10.自定义图形好grafana出图
解决zabbix默认图形乱码问题

cd /usr/share/zabbix/assets/fonts/ 
#上传一个中文的ttf字体 
\mv simkai.ttf graphfont.ttf

a:安装grafana

wget
https://mirror.tuna.tsinghua.edu.cn/grafana/yum/rpm/gra fana-6.5.2-1.x86_64.rpm 
yum localinstall grafana-6.5.2-1.x86_64.rpm -y 
systemctl start grafana-server.service

b:grafana的主要内容

插件: zabbix的插件
 #安装zabbix插件 
 grafana-cli plugins install alexanderzobnin-zabbix-app service grafana-server restart 
 数据源: 
 登录http://10.0.0.71:3000/login(默认admin:admin)

dashboard:

11.自定义监控模板

使用其他人分享的zabbix模板

a:导入模板(测试模板的兼容性)
 b:把zabbix-agent的自定义key的配置文件放 到/etc/zabbix/zabbix_agentd.d
  c:如果有取值脚本,将取值脚本放在对应的目录 
  d:手动执行脚本测试取值(使用root身份执行) 
  e:使用zabbix_get测试取值(使用zabbix身份执行)
   f:目标主机监控关联模板

自定义模板十一种状态集

12.zabbix监控角度总结

服务器硬件(cpu温度,主板温度,功率,风扇的转速,硬盘的健康状态)
 ipmi芯片  远程管理控制卡idrac,ilo,imm 
 交换机路由器: snmp协议
操作系统  (cpu,内存,硬盘,网卡,系统进程,日志)  zabbix 
 linux模板
 
应用程序 nginx,mysql,redis,k8s-master      自定义模板 (网上现有的模板)

业务层面  业务访问速度,流量(pv,uv,ip),活跃用户日活,周 活,月活,成单量,交易额

日志监控 ELK 

13.web网站的可用性监测
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
14.使用percona插件监控mysql
下载插件

wget  https://www.percona.com/downloads/perconamonitoring-plugins/percona-monitoring-plugins1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates1.1.8-1.noarch.rpm

安装插件

 rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm 

15.snmp监控Windows和linux
snmp监控:simple network manager protocol
交换机,路由器,打印机 开启snmp,打开snmp服务端

snmp协议三个版本
 v1  没有密码验证
  v2c 支持口令验证 community 
  v3  太复杂

使用snmp监控linux

#linux上面snmp服务端,守护进程
 yum install net-snmp -y 
 vim /etc/snmp/snmpd.conf  
    com2sec notConfigUser  default       oldboy   
  view    systemview    included   .1 
  systemctl start snmpd 
  systemctl enable snmpd 
  netstat -lntup
#zabbix就是snmp客户端  oid 
yum install net-snmp-utils.x86_64 -y 
snmpwalk -c oldboy -v 2c 10.0.0.7  .1.3.6.1.2.1.25.2.2.0

16.zabbix自动发现和自动注册(主动)

·a:自动发现
配置规则
在这里插入图片描述
在这里插入图片描述
自动注册:
在这里插入图片描述
配置agent客户端

vim /etc/zabbix/zabbix_agentd.conf 
Server=10.0.0.71 
ServerActive=10.0.0.71 
Hostname=10.0.0.8 
HostMetadata=web

17.zabbix-agent主动和被动的区别

18.zabbix版本升级
a:新版本可以提高性能
b:模板不兼容问题

19.zabbix分布式监控proxy

在这里插入图片描述
在这里插入图片描述

#web01上安装zabbix-proxy 
yum install  zabbix-proxy-mysql  mariadb-server -y 
#mysql中创库,授权 mysql> 略  
cd /usr/share/doc/zabbix-proxy-mysql-4.0.16/ gzip -d schema.sql.gz  
mysql zabbix_proxy -uzabbix -p123456 < schema.sql  
mysql zabbix_proxy -uzabbix -p123456 -e 'show tables;'
 vim /etc/zabbix/zabbix_proxy.conf 
 ProxyMode=0 
 Server=10.0.0.71 
 ServerPort=10051
  Hostname=sh_proxy 
  DBHost=localhost
   DBName=zabbix_proxy 
   DBUser=zabbix 
   DBPassword=123456 
   HeartbeatFrequency=60
    ConfigFrequency=60 
    DataSenderFrequency=1

systemctl restart zabbix-proxy.service 

在这里插入图片描述

在这里插入图片描述
20:zabbix监控jvm原理

#开启tomcat的远程监控
 vim /app/apache-tomcat-8.0.27/bin/catalina.sh CATALINA_OPTS="$CATALINA_OPTS \ -Dcom.sun.management.jmxremote \ -Djava.rmi.server.hostname=10.0.0.8 \ -Dcom.sun.management.jmxremote.port=12345 \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.authenticate=false"

在这里插入图片描述
在这里插入图片描述

21:zabbix低级自动发现
a:什么是低级自动发现(low level discovery)

低级自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控 项,触发器和图形的方法。

b:为什么要用低级自动发现
低级自动发现特别适合用于监控那些有规律,又有差异的监控对象。例如A 主机有3个挂载分区,B主机有4个挂载分区,c主机有5个挂载分区,每个 分区挂载目录还不一样,现在要求,监控每一个分区的磁盘总容量,剩余 容量,使用容量,block剩余百分比,inode使用百分比,这时候使用普通 的zabbix模板根本无法监控

c:zabbix模板自带的低级自动发现有哪些?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
d:增加一个监控项原型
增加监控项原型1:

在这里插入图片描述
增加监控项原型2:
自定义监控项原型

#修改agent配置文件 [root@hdss7-11 ~]# cat /etc/zabbix/zabbix_agentd.d/net.conf UserParameter=net.if.mac[*],ifconfig $1|awk 'NR==4{print $$2}'
#zabbix-get测试取值
 [root@k8s-zabbix ~]# zabbix_get -s 10.4.7.11 -k net.if.mac[eth0] 
 fa:16:3e:f1:36:29

在这里插入图片描述
效果展示:

在这里插入图片描述
e:创建一个低级自动发现规则
第一个特殊key:定义低级自动发现规则,输出格式为json:例如: {“data”:[{"{#IFNAME}":“eth0”},{"{#IFNAME}":“eth1”},{" {#IFNAME}":“lo”}]}

第二个key: 监控项原型,取值

第一步:修改agent配置文件

#agent配置文件
 [root@k8s-node-2 ~]# cat /etc/zabbix/zabbix_agentd.d/discovery_container.conf UserParameter=discovery_container,/bin/bash /opt/discovery_container.sh UserParameter=container_mem_per[*],/usr/bin/docker stats --no-stream |grep "$1"|awk '{print $$8}'|tr -d '%'

低级自动发现脚本

#!/bin/bash 
port=($(/usr/bin/docker ps -a|grep -v "CONTAINER 
ID"|awk '{print $NF}')) 
printf '{\n' 
printf '\t"data":[\n'   
for key in ${!port[@]}       
do          
 if [[ "${#port[@]}" -gt 1 && "${key}" -ne 
 "$((${#port[@]}-1))" ]];then              
 printf '\t {\n'             
  printf "\t\t\t\"
   {#CONTAINERNAME}\":\"${port[${key}]}\"},\n"   
           else [[ "${key}" -eq "((${#port[@]}-1))" ]]  
                       printf '\t {\n'
                        printf "\t\t\t\" {#CONTAINERNAME}\":\"${port[${key}]}\"}\n" 
                                 fi   
                                 done             
                                  printf '\t ]\n' 
                               printf '}\n'

第二步:测试取值

[root@k8s-zabbix ~]# zabbix_get -s 10.4.7.17 -k discovery_container
{    "data":[


     {            "{#CONTAINERNAME}":"7a4552bf6b07"},   
       {            "{#CONTAINERNAME}":"4081845226ee"},   
         {            "{#CONTAINERNAME}":"9d73c4fc6eb4"},   
           {            "{#CONTAINERNAME}":"7c7aadff9e11"},  
              {            "{#CONTAINERNAME}":"bbf5e3e231e0"}   
                ] 
                }
[root@k8s-zabbix ~]# zabbix_get -s 10.4.7.17 -k container_mem_per[bbf5e3e231e0]
 0.12

第三步:web界面创建规则和监控项原型
在这里插入图片描述

在这里插入图片描述
效果展示:

在这里插入图片描述
22:zabbix性能优化

1)针对mysql,写多读少 mariadb 5.5 innodb 升级 mysql 5.7 tokudb
2)去掉无用监控项,增加监控项的取值间隔,减少历史数据保存周期
3)把被动模式修改为主动模式,增加zabbix-proxy
4)针对于zabbix-server进程调优,谁忙,就加大它的进程数量
5)针对于zabbix-server缓存调优,谁的剩余内存少,就加大它的缓存值
6)针对zabbix 历史数据和趋势图的表,进行周期性分表( 分表)

23:zabbix api

api:application interface
zabbix集成到其他的平台,把zabbix二次开发
调用api,发起一个http请求

#获取认证
 curl -X POST -H "Content-Type: application/json" -d ' 
 {    
 "jsonrpc": "2.0", 
    "method": "user.login",  
      "params": {       
       "user": "Admin", 
              "password": "zabbix"   
               },   
                "id": 1,    
                "auth": null
                 }'  http://10.0.0.71/zabbix/api_jsonrpc.php
{"jsonrpc":"2.0","result":"5fce40fb14005e696d26873c88b 83465","id":1}

#创建主机

 curl -X POST -H "Content-Type: application/json" -d '
  {   
   "jsonrpc": "2.0",   
    "method": "host.create", 
       "params": {       
        "host": "oldboy",  
             "interfaces": [       
                  {                "type": 1,    
                              "main": 1,  
                                            "useip": 1,  
                                                          "ip": "10.0.0.8",  
                                                                        "dns": "",   
                                                                                     "port": "10050"
         }      
           ],        "groups": [     
                  {             
                     "groupid": "15"        
                         }      
                           ],      
                             "templates": [   
                                      {      
                                                "templateid": "10272"         
                                                   },     
                                                          {       
                                                                   "templateid": "10001"           
                                                                    }  
                                                                          ]   
                                                                           },   
                                                                            "auth": "5fce40fb14005e696d26873c88b83465",   
                                                                             "id": 1 
                                                                             } '  http://10.0.0.71/zabbix/api_jsonrpc.php
curl -X POST -H "Content-Type: application/json" -d '
 {  
   "jsonrpc": "2.0",   
    "method": "host.delete",  
      "params": [     
         "10295" 
            ],   
             "auth": "5fce40fb14005e696d26873c88b83465",    "id": 1
              } '  http://10.0.0.71/zabbix/api_jsonrpc.php

24: zabbix 高可用
keepalived
启动zabbix-server01

启动zabbix-server02 keepalived agent01

发布了224 篇原创文章 · 获赞 19 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_42506599/article/details/105496692