zabbix--学习笔记

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电邮
15178374440@163.com
安全链接
无STARTTLS(纯文本通信协议扩展)SSL/TLS
SSL验证对端

SSL验证主机

认证
无用户名和密码
用户名称
15178374440@163.com
PSOHJFUPVIXBZSBD


#群组设置
管理-创建群组--开发组/运维组
管理-用户--zhangfei/lisi(任意设置)--
报警媒介:邮件报警邮件报警	15178374440@163.com	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

posted @ 2024-04-15 21:55  三思博客  阅读(85)  评论(0编辑  收藏  举报