zabbix监控

1.1 Zabbix监控框架
  • zabbix监控模式: cs client server服务端和客户端模式
  • zabbix监控原理: agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图
    在这里插入图片描述
1.2 多维度的监控体系
  • 应用程序层(app)
    • 页面反映出 nginx + php + mysql 是否正常 代码是否正常
    • nginx+php phpinfo();
  • 服务层
    • 各种程序 nginx mysql php tomcat xxx
    • 端口
    • 进程
    • 服务内置方法:nginx:stub_status
    • redis
  • 系统层
    • cpu:ps aux;top;htop;vmstat;iostat;sar;/proc/cpuinfo;lscpu
    • 内存: free -h;ps aux;htop;top;jmap -heap pid;
    • 磁盘 磁盘io: df -h; du -sh;iotop -o;vmstat;iostat;
    • 网络带宽: iftop;nethogs;ping;nc;telnet;nmap
    • 负载: top;w;uptime
  • 物理硬件
    • 温度 ipmitool
    • 风扇转速 ipmitool
    • raid卡状态 megacli
    • 网络设备 流量
    • 监控宝/听云/smokeping
  • 基于osi7层模型和用户访问网站流程监控
    在这里插入图片描述
1.3 zabbix安装部署
  • m01 zabbix-server 服务端

    #m01  配置zabbix yum源
    root@m01 files]# rpm -ivh  https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
    [root@m01 files]# sed -i 's#http://repo.zabbix.com/#https://mirrors.tuna.tsinghua.edu.cn/zabbix/#g'  /etc/yum.repos.d/zabbix.repo 
    [root@m01 files]# yum -y install php zabbix-server-mysql zabbix-web-mysql zabbix-agent  httpd mariadb-server zabbix-get
    #创建zabbix数据库及管理用户
    create database zabbix default charset utf8;
    MariaDB [(none)]> grant all on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';Query OK, 0 rows affected (0.00 sec)
    #编辑server配置文件
    [root@m01 ~]# grep -n '^DB' /etc/zabbix/zabbix_server.conf 
    91:DBHost=localhost
    100:DBName=zabbix
    116:DBUser=zabbix
    124:DBPassword=zabbix
    #zabbix数据导入数据库
    zcat  /usr/share/doc/zabbix-server-mysql-4.0.14/create.sql.gz |mysql zabbix
    #启动服务
    systemctl enable httpd.service  zabbix-server.service zabbix-agent.service mariadb
    #访问网站
    http://10.0.0.61/zabbix/
    #修改时区
    [root@oldboy-m01 ~]# grep -n Asia/etc/httpd/conf.d/zabbix.conf
    20:php_value date.timezone Asia/Shanghai
    [root@oldboy-m01 ~]# systemctl restart httpd
    #默认用户名密码 : Admin 和zabbix
    

    在这里插入图片描述

  • web01 zabbix-agent 客户端

    #客户端只需安装zabbix-agent
    [root@web01 ~]# grep ^Server= /etc/zabbix/zabbix_agentd.conf 
    Server=172.16.1.71
    #启动服务
    [root@web01 ~]# systemctl start zabbix-agent
    
1.4 web页面操作
#从客户端直接获取数据测试
[root@oldboy-m01 ~]# zabbix_get -s 172.16.1.7 -p 10050 -kagent.version
4.0.13
[root@oldboy-m01 ~]# zabbix_get -s 172.16.1.7 -p 10050 -kagent.ping
1	

在这里插入图片描述

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

  • 配置主机信息
zabbix监控客户端方式含义应用场景
agent模式服务端客户端模式最常用
SNMPSNMPSimple NetworkManagement Protocal简单网络管理协议zabbix监控网络设备 路由器 交换机(需要支持SNMP)
JMX监控java程序 (tomcat)推荐使用自定义监控(agent模式)
IPMI监控服务器硬件信息 :温度 风扇转速
1.5 图形显示中文乱码
[root@ZabbixServer ~]# cd /usr/share/fonts/dejavu/
[root@ZabbixServer dejavu]# mv DejaVuSans.ttfDejaVuSans.ttf.bak
#进入windows电脑,C盘->windows->fonts->随便复制字体至桌面
[root@ZabbixServer dejavu]# rz  #上传了simhei.ttf #原有格式不是ttf也ok ttc
[root@ZabbixServer dejavu]# mv simhei.ttf DejaVuSans.ttf
1.6 zabbix自定义监控 模板
  • 在linux下面只要能使用命令取出来的内容 都可以自定义监控.
  • 客户端
    1.在客户端操作 自定义监控项
    2.通过命令获取到你要的内容
    3.配置键值(key)
    4.修改zabbix客户端配置文件
  • 服务端
    1在服务端测试:zabbix_get
    2.在web页面进行点点点
    3.创建模板 Template
    4.应用集 Applications: 监控项进行分类: 系统 cpu
    5.监控项item:(获取数据) zabbix web页面与自定义键值 关联起来
    6.触发器 Trigger:什么时候报警
    7.图形 Graph :图形展示
1.7 nginx状态:stub_status;
  • nginx准备

    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;
    include /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/log/nginx/access.log  main;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
     #include /etc/nginx/conf.d/*.conf;
    server {
      listen       80 default_server;
      server_name  _;
      root         /usr/share/nginx/html;
      # Load configuration files for the default server block.
      #include /etc/nginx/default.d/*.conf;
      location / {
      }
      location /status {
        stub_status;
      }
      error_page 404 /404.html;
          location = /40x.html {
      }
      error_page 500 502 503 504 /50x.html;
          location = /50x.html {
      }
    }
    }
    [root@web01 ~]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok	 
    [root@web01 ~]# nginx
    [root@web01 ~]# curl 172.16.1.7/status
    Active connections: 1
    server accepts handled requests
    2 2 2
    Reading: 0 Writing: 1 Waiting: 0
    
  • 定义key

    #zabbix自定义监控使用脚本 及 参数传递  
    [root@web01 ~]# cat /server/scripts/nginx.sh
    #!/bin/bash
    case "$1"  in 
    active)
    curl -s 172.16.1.7/status |awk 'NR==1{print $3}'
    ;;
    read)
    curl -s 172.16.1.7/status |awk 'NR==4{print $2}'
    ;;
    write)
    curl -s 172.16.1.7/status |awk 'NR==4{print $4}'
    ;;
    wait) 
    curl -s 172.16.1.7/status |awk 'NR==4{print $6}'
    ;;
    esac
    #编辑配置文件
    [root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf 
    UserParameter=nginx.status[*],/bin/sh /server/scripts/nginx.sh "$1"
    
  • zabbix服务端测试

    [root@oldboy-m01 ~]# zabbix_get -s 172.16.1.7 -k nginx.status[accept]
    149275
    
  • web页面点点点
    修改模板–>应用集–>监控项–>触发器–>图形

1.8 聚合图形及拓扑图

在这里插入图片描述

1.9 触发器表达式

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

  • 故障表达式及恢复表达式 自定义触发器中
    在这里插入图片描述
2.0 报警
  • 邮件报警
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 微信报警

    #上传weixin.py脚本
    [root@oldboy-m01 ~]# cd /usr/lib/zabbix/alertscripts
    [root@oldboy-m01 /usr/lib/zabbix/alertscripts]# ll
    -rw-r--r-- 1 root root 1352 Jan 10  2019 weixin.py
    #安装requests模块
    [root@oldboy-m01 /usr/lib/zabbix/alertscripts]# python weixin.py
    Traceback (most recent call last):
    File "weixin.py", line 7, in <module>
    #安装pip
    yum install -y python-pip
    #pip查看安装后软件的信息
    [root@oldboy-m01 /usr/lib/zabbix/alertscripts]# pip showrequests
    

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

#根据企业微信填写
[root@zabbix alertscripts]# egrep -n '^(corpid|appsecret|agentid)' weixin.py  
19:corpid='ww8ef1be1e0258a527'
20:appsecret='nhhS0UoE6hsZusCGJ0Xr6nlam68W7-3gKmCPlED_deo'
21:agentid=1000002
#给脚本添加执行权限
[root@oldboy-m01 /usr/lib/zabbix/alertscripts]# chmod +xweixin.py
#web页面微信发件人配置
{ALERT.SENDTO}   报警收件人
{ALERT.SUBJECT}   报警标题
{ALERT.MESSAGE}   报警内容

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

#模拟报警进行测试
[root@zabbix alertscripts]# python weixin.py "YuHongLei" "server" "guale"

在这里插入图片描述

2.1 web监测
  • 模拟用户 访问网站页面 监控指定的页面.
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
2.2 网站pv ip uv (pwiki matomo)

在这里插入图片描述

2.3 对于批量大量服务器监控
  • 自动发现 discovery
  • zabbix服务端定期扫描指定的网段 把主机添加进来
  • 优点:配置简单 缺点:服务器压力较大
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  • 自动注册 atuoregister

    [root@web03 ~]# vim /etc/zabbix/zabbix_agentd.conf
    Server=172.16.1.61  #
    ServerActive=172.16.1.61  #主动模式 使用的服务端ip 
    #Hostname=nfs01      #客户端主机名 解析 ping
    HostnameItem=system.hostname  #获取客户端主机名 主机名解析 
    [root@lb01 ~]# systemctl restart zabbix-agent.service
    

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

###补充:
[root@lb01 ~]# grep '^HostMetadataItem' /etc/zabbix/zabbix_agentd.conf
HostMetadataItem=system.uname    #主机元数据 来源来自于key
2.4 客户端 主动与被动模式
  • 客户端的被动模式 : server向agent请求获取监控项的数据,agent返回数据
  • 客户端的主动模式: agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
    -
2.5 proxy zabbix分布式监控
#配置yum源
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
sed -i 's#http://repo.zabbix.com/#https://mirrors.tuna.tsinghua.edu.cn/zabbix/#g'  /etc/yum.repos.d/zabbix.repo
#安装zabbix-proxy及数据库
yum -y install zabbix-proxy-mysql mariadb-server
#开机自启
systemctl enable  mariadb.service zabbix-proxy
#配置数据库
mysql
create database zabbix_proxy default charset utf8;
grant all on zabbix_proxy.* to zabbix@'localhost' identified by 'zabbix';
#初始化数据库
zcat /usr/share/doc/zabbix-proxy-mysql-4.0.14/schema.sql.gz |mysql -uzabbix -pzabbix zabbix_proxy
#修改proxy配置文件
sed -i.ori '162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.conf
sed -i 's#Server=127.0.0.1#Server=172.16.1.71#' /etc/zabbix/zabbix_proxy.conf
sed -i 's#Hostname=Zabbix proxy#Hostname=proxy-web01#' /etc/zabbix/zabbix_proxy.conf
systemctl start zabbix-proxy.service mariadb-server

#修改agent配置文件\
[root@web01 ~]# grep '^Server' /etc/zabbix/zabbix_agentd.conf 
Server=172.16.1.7
ServerActive=172.16.1.7

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

3. 钉钉报警

[root@zabbix ~]#cat /usr/lib/zabbix/alertscripts/dingding.py 
#!/usr/bin/env python
#coding:utf-8
#zabbix钉钉报警
import requests,json,sys,os,datetime
webhook="https://oapi.dingtalk.com/robot/send?access_token=041160204c02c587f130aed5ed5e9f09d3ea57edd00272ee439b73dee7d07394"      #说明:这里改为自己创建的机器人的webhook的值
user=sys.argv[1]
text=sys.argv[3]
data={
 "msgtype": "text",
	"text": {
   	 "content": text
 },
 "at": {
  	  "atMobiles": [
      	  user
  	  ],
  	  "isAtAll": False
 }
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/usr/local/zabbix/log/dingding.log"):
   f=open("/usr/local/zabbix/log/dingding.log","a+")
else:
   f=open("/usr/local/zabbix/log/dingding.log","w+")
   f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
   f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送成功"+"\n"+str(text))
   f.close()
else:
   f.write("\n"+str(datetime.datetime.now()) + "    " + str(user) + "    " + "发送失败" + "\n" + str(text))
   f.close()

说明:手都测试脚本
./dingding.py 标题 手机号 内容

在这里插入图片描述

4. 低级自动发现

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

查看已有规则 键值
[root@oldboy-zabbix-server ~]# zabbix_get -s 127.0.0.1 -k vfs.fs.discovery |python -m json.tool
低级自动发现规则 取出网卡名称
[root@oldboy-zabbix-server ~]# zabbix_get -s 127.0.0.1 -k net.if.discovery |jq .
  • 低级自动发现难点: 取出的key是json格式.

  • 低级自动发现 mysql多实例的端口 然后监控

    #MySQL 多实例的 脚本 输出json格式 ok
    自定义key 并测试 给zabbix低级自动发现 发现端口 json
    Web页面配置 低级自动发现规则
    添加 监控项原型 需要key (可以是zabbix 内置 或 自定义 )
    测试 关联主机 模板
    #MySQL 多实例的 脚本 输出json格式 ok
    #!/bin/bash
    #oldboyedu.com
    #mysql low-level discovery
    res=`netstat -lntp|awk -F "[ :\t]+" '/mysqld/{print$5}'`
    port=($res)
    printf '{'
    printf '"data":['
    for key in ${!port[@]}
    do
    if [[ "${#port[@]}" -gt 1 && "${key}" -ne
    "$((${#port[@]}-1))" ]];then
    printf '{'
    printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"},"
    else [[ "${key}" -eq "((${#port[@]}-1))" ]]
    printf '{'
    printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"}"
    fi
    done
    printf ']'
    printf '}\n'
    
    # 测试 自定义发下规则里面的 key
    # 然后根据key获取 内容 3306 3307
    # 监控3306
    # 监控3307 状态
    修改 mysql_userparameter.conf
    status
    ping
    ##自定义key 给zabbix低级自动发现 发现端口 json
    [root@oldboy-zabbix-server ~]# cat
    /etc/zabbix/zabbix_agentd.d/mysql.conf
    UserParameter=mysql.port.discovery,sh /server/scripts/mysql_port.sh
    [root@oldboy-zabbix-server ~]# systemctl restart zabbix-agent.service
    [root@oldboy-zabbix-server ~]# zabbix_get -s 127.0.0.1 -k mysql.port.discovery
    
    web页面 低级自动发现规则
    

在这里插入图片描述

添加 监控项原型 需要key (可以是zabbix 内置 或 自定义 )
[root@oldboy-zabbix-server ~]# cat /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mysql.status[*],echo "show global status
where Variable_name='$1';" | HOME=/var/lib/zabbix mysql - uzabbix -p123456 -P "$2" -N -S /var/lib/mysql/mysql.sock  2>/dev/null| awk '{print $$2}' ping | grep -c alive
[root@oldboy-zabbix-server ~]# systemctl restart zabbix-agent.service
[root@oldboy-zabbix-server ~]# zabbix_get -s 127.0.0.1 -k mysql.status[uptime,3306]

web 添加 监控项原型

在这里插入图片描述

进行检查与测试

zabbix_get -s 127.0.0.1 -k net.if.discovery|python -m json.tool

5. Grafana可视化工具

wget https://dl.grafana.com/oss/release/grafana-6.5.2-1.x86_64.rpm
yum localinstall -y grafana-6.5.2-1.x86_64.rpm 
systemctl start grafana-server
systemctl enable grafana-server
浏览器访问: IP:3000
查看插件
grafana-cli plugins list-remote
有问题就看日志

官方模板地址:https://grafana.com/grafana/dashboards
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重要参数有:
Type: Zabbix
Url: http://192.168.4.47/zabbix/api_jsonrpc.php
Username: Admin(默认)
Password: zabbix(默认)

6. zabbix优化

1. 针对mysql,写多读少mariadb 5.5 innodb升级mysql 5.7 tokudb
 innodb myisam tokudb 存储引擎(Linux 文件系统)
2. 去掉无用监控项
3. 增加监控项的取值间隔
4. 减少历史数据保存周期 增加趋势数据时间
5. 把客户端被动模式修改为主动模式, 避免zabbix-proxy
6. 针对于zabbix-server缓存调优,谁的剩余内存少,就加大它的缓存值 CacheSize
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值