首页 > 其他分享 >zabbix--学习笔记

zabbix--学习笔记

时间:2024-04-15 22:01:55浏览次数:25  
标签:conf -- 笔记 zabbix TRIGGER agent2 监控 com

zabbix--学习笔记

第一天

1.为什么使用监控?

01-实时状态 
02-反馈当前系统状态
03-系统可靠性
04-保障业务稳定性




2.如何监控,比如我们需要监控磁盘 内存  使用率
01 我们首先要知道手动怎么看磁盘  内存指标
02 监控磁盘指标
03 获取数值 报警

[root@centos7mage ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        475M     0  475M   0% /dev
tmpfs           487M     0  487M   0% /dev/shm
tmpfs           487M  7.6M  479M   2% /run
tmpfs           487M     0  487M   0% /sys/fs/cgroup
/dev/sda2        94G  2.3G   91G   3% /
/dev/sda3        47G   33M   47G   1% /data
/dev/sda1      1014M  153M  862M  16% /boot
[root@centos7mage ~]# df -h |awk '{print $5}'
Use%
0%
0%
2%
0%
3%
1%
16%






3.流行的监控工具

01 zabbix
02 Prometheus(适合监控容器)
03 open-falcon(小米开源)




4.面试题:入职一家公司如何入手监控

01 系统层监控:进程 CPU 内存 tcp状态 磁盘I/O 网络 应用
02 应用层监控: nginx tomcat php redis mysql 等监控
03 web监控: 请求时间 响应时间 加载时间 
04 硬件监控: 路由器 交换机
05 日志监控: elk





5.web网站打开速度探测
免费工具:www.17ce.com



阿里云web监控

https://cloudmonitor.console.aliyun.com/browser-probe/create/_all

第二天


1.单机时代如何监控

CPU  top
内存  free -h
磁盘  df -h

系统负载  uptime



2.zabbix的组件讲解
01 zabbix-server  服务端(守护进程)  作用:客户端收集数据给server端
02 zabbix-agent   客户端            作用:负责数据收集
03 zabbix-proxy   分布式



3.面试题:zabbix如何工作的

zabbix客户端被监控的主机上-负责数据收集-传给zabbix服务端-客户端发送数据--存储到mysql--通过zabbix客户端 -做展示和预警






第三天

 zabbix5.0 生产部署实战(php版本必须7.0以上)




2.部署zabbix服务端 客户端
0.zabbix5.0 TLS部署    #官网推荐yum方式部署

#------------------------------zabbix-server部署------------------------------#
#官方地址
https://www.zabbix.com/cn/download?zabbix=5.0&os_distribution=centos&os_version=7&db=mysql&ws=nginx

#系统和内核版本
CentOS Linux release 7.6.1810、内核3.10.0-957.el7.x86_64)

#安装zabbix仓库、zabbix软件和数据库,修改仓库配置
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo 
yum clean all && yum install -y zabbix-server-mysql zabbix-agent
yum install -y centos-release-scl   #升级gcc
sed -i '11s/enabled=0/enabled=1/' /etc/yum.repos.d/zabbix.repo     #开启安装源
yum install -y zabbix-web-mysql-scl 
yum install -y zabbix-nginx-conf-scl 
yum install -y mariadb-server

#启动数据库
systemctl enable mariadb --now

初始化数据库,并设置密码
mysql_secure_installation


mysql -uroot -p123456  进入数据库
#数据库脚本导入

create database zabbix character set utf8 collate utf8_bin;

grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';


#导入初始架构和数据,系统将提示您输入新创建的密码
use zabbix;
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

#为Zabbix server配置数据库	
sed -i 's/# DBPassword=/DBPassword=zabbix/' /etc/zabbix/zabbix_server.conf

#为Zabbix前端配置PHP   #必须访问server_name,否则报错403.server_name填IP即可
#一定要修改example.com为自己访问的域名
sed -i 's/#\        listen\          80;/\        listen\          80;/'  /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf

sed -i 's/#\        server_name\     example.com;/\        server_name\     local.zabbix.com;/' /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf

sed -i 's/listen.acl_users = apache/listen.acl_users = apache,nginx/' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

#修改前端页面访问真实资源目录
sed -i 's@\        root\         /opt/rh/rh-nginx116/root/usr/share/nginx/html;@\        root\         /usr/share/zabbix;@' /etc/opt/rh/rh-nginx116/nginx/nginx.conf

#更改时区亚洲上海
sed -i '$iphp_value[date.timezone] = Asia/Shanghai' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

#启动服务并设置开机自启
systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm

#访问403是server_name设置问题

#默认登录的账号密码
账号:Admin   密码:zabbix  #Admin首字母大写,测试修改账号密码都为admin小写

#更改为中文
User settings-->Language-->Chinese(zh_CN)   Update更新即可
#------------------------------zabbix-server END------------------------------#
#
#------------------------------zabbix-server配置grafana------------------------------#

















3.学习监控服务器主机
安装一个或多个客户端 
zabbix-agent    c语言写的 独立进程运行
zabbix-agent2   c语言 go语言  一个进程多线程运行 承受高并发

客户端:10.0.1.150
服务端:10.0.1.149





#安装客户端
安装源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
替换阿里云源
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo 
安装客户度:
yum install zabbix-agent2 -y

启动 客户端: systemctl restart zabbix-agent2
systemctl status zabbix-agent2
systemctl enable zabbix-agent2


配置文件重新配置:
cp /etc/zabbix/zabbix_agent2.conf /etc/zabbix/zabbix_agent3.conf
egrep -v "^$|#" zabbix_agent3.conf >zabbix_agent2.conf


客户端配置文件
cd /etc/zabbix/
echo > zabbix_agent2.conf 

[root@centos7mage ~]# grep '^[A-Z]' /etc/zabbix/zabbix_agent2.conf 

PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=10.0.1.149 
ServerActive=10.0.1.149  
Hostname=slb 
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock



注释(这段别用,用上面的)
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=10.0.1.149  #zabbix服务端ip
ServerActive=10.0.1.149  #zabbix服务端ip
Hostname=slb   #客户端名称(任意名称)
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock

systemctl restart zabbix-agent2




服务端配置文件
[root@centos7mage zabbix]# cat zabbix_server.conf |grep '^[A-Z]'
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1





4.#报错解决
1.防火墙未关闭
2.服务端server.conf配置文件有误
3.客户端agent2.conf配置文件有误
4.服务器是否开启了多个进程
5.客户端是否开启了多个进程(没有开启进程)
6.客户端/服务端重启zabbix服务后要等待一分钟,再看结果



122 # Mandatory: no
123 # Default:
124 DBPassword=zabbix






5.#解决zabbix服务端乱码

yum install wqy-microhei-fonts -y

cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf

systemctl restart zabbix-server














6.实现zabbix自定义监控
监控项:自定义监控服务器主机信息
模板:多个监控项和触发器弄到一个模版,方便监控主机调用
动作:报警信息发送给谁   
报警类型:钉钉 微信 邮件 电话
触发器:报警提示
图形:监控可视化
报警媒介:报警方式 (脚本 python )



工作需求:
tcp 状态
工作安排监控tcp连接状态

思路
01 取tcp状态值
TIME_WAIT
netstat -ant|awk 'NR>2{print $6}'|grep TIME_WAIT|wc -l



02 编辑配置文件(客户端)

cd /etc/zabbix/zabbix_agent2.d
vim tcp.conf

UserParameter=TIME_WAIT,netstat -ant | awk 'NR>2{print $6}' | grep "TIME_WAIT" | wc -l
UserParameter=LISTEN,netstat -ant | awk 'NR>2{print $6}' | grep "LISTEN" | wc -l
UserParameter=ESTABLISHED,netstat -ant | awk 'NR>2{print $6}' | grep "ESTABLISHED" | wc -l

systemctl restart zabbix-agent2







03 服务端操作
zabbix_get -s 10.0.1.150 -p 10050 -k TIME_WAIT

创建监控项

名称:tcp连接状态
键值:TIME_WAIT
名称:LISTEN连接状态
键值:LISTEN
名称:ESTABLISHED连接状态
键值:ESTABLISHED

创建图形
名称:tcp连接状态
监控项:上面刚刚添加的,选择一下就可以了--应用(可添加一个多个)



04 zabbix 调用这个值

TIME_WAIT   连接请求确认
LISTEN   远方tcp端口连接请求
ESTABLISHED  tcp成功建立 开始传输


应用集


触发器





需求2:监控80端口是否正常

思路
01 取值
netstat -tulpn | grep -wc 80 


02 编辑配置文件(客户端)
cd /etc/zabbix/zabbix_agent2.d
vim nginx.conf

UserParameter=nginx.port,netstat -tuln| grep -wc 80

systemctl restart zabbix-agent2


03 服务端测试
zabbix_get -s 10.0.1.150 -p 10050 -k nginx.port



04 配置监控项和触发器
名称:nginx状态
键值:nginx.port









7.监控类型讲解(常用)

zabbix客户端 :zabbix被动模式-服务端向客户端要数据  -监控服务器比较多的时候 我们服务端有压力
zabbix客户端(主动模式):客户端把数据发给服务端-监控服务器很多的时候 用这个模式

简单检查:不需要客户端,就检查网络情况
比如  监控ip状态
SNMP:监控网络设备 比如交换机 路由器 防火墙
DMX:监控java
IPMI:监控硬件(风扇  速度  电压 温度)







需求3  要监控主机是否在线

思路

01 监控项结合

名称 :网络宕机
类型 :简单检查
键值 :icmpping


02 触发器

1 正常
0 宕机

03 邮件微信报警












8.自定义模板制作

大白话:就是监控项 图形 触发器 做一个模板 提升工作效率

01 创建主机

创建模板

02
链接模板


















9. 报警方式
01  邮件报警            免费(企业邮箱/个人邮箱)
02  微信报警            免费
03  钉钉报警            免费
04  短信报警            收费
05  电话报警            收费




需求5:配置邮件报警

思路
01 个人邮箱 企业邮箱
02 开启邮箱smtp功能 授权码
03 配置发件人
04 配置收件人
05 配置动作   什么时候发邮件




PSOHJFUPVIXBZSBD
smtp.163.com

#邮箱设置
名称
邮件报警
类型
电子邮件
SMTP服务器
smtp.163.com
SMTP服务器端口
465
SMTP HELO
163.com
SMTP电邮
[email protected]
安全链接
无STARTTLS(纯文本通信协议扩展)SSL/TLS
SSL验证对端

SSL验证主机

认证
无用户名和密码
用户名称
[email protected]
PSOHJFUPVIXBZSBD


#群组设置
管理-创建群组--开发组/运维组
管理-用户--zhangfei/lisi(任意设置)--
报警媒介:邮件报警邮件报警	[email protected]	1-7,00:00-24:00  未信警一严灾	  已启用	

#权限(用户)
超级管理员
用户类型        超级管理员
权限
主机群组	 权限
所有组   	  读写


#报警媒介类型
这里可以是你自己设置的模板,也可以用已经设置过的模板

消息模板

#故障模板
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}



#恢复模板
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}







需求6:设置企业微信报警 钉钉报警


思路

01 准备一个企业微信

02 企业微信id 机器人id 密钥信息

03 准备一个python 脚本

04 配置发件人

05 配置收件人

06 动作




实战微信报警
#第一种方法(看企业微信支不支持,有些企业可能不支持,未认证)

01 企业微信(获取)
https://work.weixin.qq.com/wework_admin/frame


02 
企业微信id wwe00636342f2932ea
机器人id 1000002
密钥  VJ3dKeQAVvn6dhzilY4DXbHe_UV_qjtaCJSWyjQBqkk

03 

#!/usr/bin/env python
#-*- coding: utf-8 -*-
import requests
import sys
import os
import json
import logging
logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/tmp','weixin.log'),
filemode = 'a')
corpid='wwe00636342f2932ea'
appsecret='VJ3dKeQAVvn6dhzilY4DXbHe_UV_qjtaCJSWyjQBqkk'
agentid='1000002'
#获取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']
#发送消息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]
params={
"touser": touser,
# "toparty": toparty,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}
req=requests.post(msgsend_url, data=json.dumps(params))
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)


需要修改的部分有:
corpid='微信企业号corpid'
appsecret='应用的Secret'
agentid=应用的id

脚本的三个参数都是zabbix内置变量,分别为:
报警收件人:{ALERT.SENDTO},
报警标题:{ALERT.SUBJECT},
报警内容:{ALERT.MESSAGE}



查看zabbix服务器脚本存放目录
# AlertScriptsPath=${datadir}/zabbix/alertscripts

AlertScriptsPath=/usr/lib/zabbix/alertscripts



#如果提示:
Traceback (most recent call last):
  File "./weixin.py", line 3, in <module>
    import requests
ImportError: No module named requests

安装   yum -y install python-requests

测试
python weixin.py NianWenQiang "test" "2"






---------------------------------------------------


#第二种方法 (第一种使用不了,用这个)-----(群聊机器人)
01 在企业群聊中,添加群聊机器人

https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=a435f73e-73fb-4e59-8a12-a6bc4495076c



02 cd /usr/lib/zabbix/alertscripts
vim wechat.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os

headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=a435f73e-73fb-4e59-8a12-a6bc4495076c" #这就是先前的webhook地址
def msg(text):
    json_text= {
     "msgtype": "text",
        "text": {
            "content": text
        },
    }
    print requests.post(api_url,json.dumps(json_text),headers=headers).content

if __name__ == '__main__':
    text = sys.argv[1]
    msg(text)



03 测试
python wechat.py 我要上岸666


04 zabbix页面配置发件人-收件人


名称 微信报警2025
类型 脚本
脚本名称 wechat.py  (#与你的zabbix服务器的脚本一样,别乱改)
脚本参数 {ALERT.MESSAGE}



admin用户
报警媒介
类型   微信报警2025
收件人   @all


05 消息模板

#故障模板
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}



#恢复模板
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}



06 测试
模拟nginx故障或其他故障,看群聊机器人是否有报警信息



第四天

下载Windowszabbix客户端


https://cdn.zabbix.com/zabbix/binaries/stable/6.0/6.0.1/zabbix_agent2-6.0.1-windows-amd64-openssl.msi





img

11111111111

标签:conf,--,笔记,zabbix,TRIGGER,agent2,监控,com
From: https://www.cnblogs.com/nwq1101/p/18136994

相关文章

  • 四则运算结对编程
     这次结对编程由我和王振宇同学共同完成,使用C++语言代码及注释如下#include<iostream>usingnamespacestd;//实现加法运算doubleadd(doublex,doubley){returnx+y;}//实现减法运算doublesubtract(doublex,doubley){returnx-y;}//实现乘法运算do......
  • 企业微信机器人告警--zabbix
    企业微信机器人告警企业微信群聊里面增加机器人,机器人会提供发送信息的URLpython脚本进行实现的1、创建企业微信机器人没有企业微信的可以自己在企业微信官网申请注册个企业,创建企业微信群至少3个人以上这个webhook后面需要使用到2、配置zabbixserver2.1:配置脚本......
  • 3
    利大于弊的论据:文化交流促进了经济发展:外国文化的影响可以带来新的商业模式、技术和产品,促进中国经济的发展和繁荣。丰富了文化多样性:外国文化的影响使中国社会更加多元化和开放,促进了不同文化之间的交流和理解,丰富了人们的生活体验。激发创新和变革:外国文化的冲击可以激发中国......
  • 【MySQL】二进制安装MySQL
    【MySQL】二进制安装MySQL一、基于Ubuntu二进制安装MySQL8.0(5.7+适用)1、创建用户[root@Node-Ubuntu1804-20:~]#groupaddmysql[root@Node-Ubuntu1804-20:~]#useradd-r-gmysql-s/usr/sbin/nologinmysql2、创建目录[root@Node-Ubuntu1804-20:~]#mkdir/data/mysql......
  • 手把手教你做阅读理解提高003-Letters Cheer Up Lonely Seniors-信件让孤独的老年人振
    PDF格式公众号回复关键字:ZKYDT003阅读理解技巧,在帮助读者有效获取和理解文本信息方面发挥着重要作用,熟练掌握如下6个技巧,可快速突破阅读理解1预览文章结构在开始深入阅读之前,快速浏览文章的标题、段落开头和结尾,可以迅速把握文章的主题、大致内容和结构标题通常能概括文......
  • 苹果 iOS 18 的首批 AI 功能将完全运行于设备端
    苹果计划为iOS18推出的首批AI功能将完全在端侧上运行,不依赖云服务器。iOS18预计不会包含苹果自己的类ChatGPT的聊天机器人,但目前还不清楚Gemini或其他聊天机器人是否会直接集成到iOS18中。Gurman表示,目前看来苹果即将在WWDC上发布的AI技术将完全在设备本地运......
  • 日记
    2024.4.15#include<stdio.h>voidf(intarr[][5],intnum_1,intnum_2){for(intj=0;j<5;j++){inttemp=arr[num_1-1][j];arr[num_1-1][j]=arr[num_2-1][j];arr[num_2-1][j]=temp;}}i......
  • JZ27 二叉树的镜像
    /***structTreeNode{* intval;* structTreeNode*left;* structTreeNode*right;* TreeNode(intx):val(x),left(nullptr),right(nullptr){}*};*/classSolution{public:/***代码中的类名、方法名、参数名已经指定,请勿修改,直接返回......
  • SE-SSD
    PDF:《SE-SSD:Self-EnsemblingSingle-StageObjectDetectorFromPointCloud》Code:https://github.com/Vegeta2020/SE-SSD一、大体内容由于距离的远近和遮挡问题,同一个Hard样本的点云和特征差异可能较大,而soft样本信息更加丰富,因此借助soft样本来进行优化有助于揭示同类......
  • 结对编程——Java实现四则运算
    任务要求请两位同学以结对编码(一个同学coding,另一个同学在旁边审核代码,之后再交换角色)的方式完成本次实验,并把程序、运算结果、博客体会等截屏发到其中一位同学的博客上,并在博客中体现另一位同学的学号(仅学号不体现姓名)。小学老师要每周给同学出300道四则运算练习题。–这个程......