https://oldqiang.com/archives/867.html
a:安装zabbix-agent
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/6/x86_64/zabbix-agent-5.0.2-1.el6.x86_64.rpm
b:配置zabbix-agent
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.2.214
c:启动zabbix-agent
systemctl start zabbix-agent
systemctl enable zabbix-agent
监控项:就是我们想要监控的指标,例如剩余内存,磁盘空间,服务的状态等等
每一个监控项,都有一个唯一的key,简洁明了(相当于shell脚本的变量名)
只需要安装zabbix-agent,默认就支持大量的监控项,但是linux模板并没有使用所有监控项
Template OS Linux by Zabbix agent主要监控了cpu,内存,磁盘,网卡,安全,它们都属于通用监控
应用集是监控项的分组
a:命令行,手动取值
[root@zabbix-server ~]# iostat|awk '$1 ~/sda/'
sda 4.07 41.98 68.30 255455 415578
[root@zabbix-server ~]# iostat|awk '$1 ~/sda/{print $2}'
4.07
b:修改zabbix-agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
UserParameter=sda_tps,iostat|awk '$1 ~/sda/{print $2}'
systemctl restart zabbix-agent.service
c:zabbix-server测试监控项取值
zabbix_get -s 127.0.0.1 -k sda_tps
d:在web界面添加自定义监控项
练习: 自定义监控项,监控tcp的ESTABLISHED状态的数量
b: 定义收件人
→报警媒介
c:启动动作
配置→动作→启动动作
查看报表→动作日志 查看发送的邮件日志
定制邮件报警内容 官方支持变量地址
https://www.zabbix.com/documentation/5.0/manual/appendix/macros/supported_by_location
https://work.weixin.qq.com/ 登录企业微信,没有的可以注册一个
a:将weixin.py放在zabbix特定目录/usr/lib/zabbix/alertscripts(yum安装路径)
此处我的安装路径如下
[root@localhost /]# find / -name 'alertscripts'
/usr/local/zabbix/share/zabbix/alertscripts
chmod +x /usr/local/zabbix/share/zabbix/alertscripts/weixin.py
weixin.py脚本内容如下,只需要改三个地方corpid、appsecret、agentid
#!/usr/bin/env python
#_*_coding:utf-8_*_
#@author :xuqiyao
#导入python模块
import requests
import sys
import os
import json
import logging
#自定义logging模块的格式,具体日志会存放在"/var/log/weixin.log"中,你也可以自定义到其它目录中,该文件默认以追加方式写入,你可以写一个周期性任务进行滚动操作
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')
#指定企业ID
corpid='wwc5479ddc1a7b3838'
#指定应用管理的Secret
appsecret="KRWQWoIyQYqh1yd-qQbf8fFRKx8f6g_XXXXXXXXXXXX"
#指定应用管理的AgentId
agentid="1000002"
#指定Token_url
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
#获取tocken
req=requests.get(token_url)
#获取tocken中access_token字段对应的值
accesstoken=req.json()['access_token']
#定义消息发送的URL
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
#定义要发送的人,也就是zabbix webUI配置的"{ALERT.SENDTO}"参数对应的值
touser=sys.argv[1]
#定义要发送的主题,也就是zabbix webUI配置的"{ALERT.SUBJECT}"参数对应的值
subject=sys.argv[2]
#定义要发送的消息内容,也就是zabbix webUI配置的"{ALERT.MESSAGE}"参数对应的值
message=sys.argv[2] + "\n\n" +sys.argv[3]
#指定参数
params={
"touser": touser,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}
#基于requests模块的post方法发送企业微信报警消息
req=requests.post(msgsend_url, data=json.dumps(params))
#发送消息后记得打印日志信息,在本地的配置文件中可以查看
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
python脚本缺少模块处理
[root@localhost /]# python weixin.py
Traceback (most recent call last):
File "weixin.py", line 6, in <module>
import requests
ImportError: No module named requests
处理步骤
1、安装pip
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y install python-pip
查看pip
[root@localhost /]# which pip
/usr/bin/pip
2、pip安装requests模块
pip install requests
慢的话可以使用国内的源
[root@localhost /]# pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
测试脚本没提示说明脚本没问题,脚本需要带上三个参数
[root@localhost /]# python weixin.py '发给谁' '发送微信的标题' '发送的内容'
[root@localhost /]# python weixin.py 'XuQiYao' '你有个外卖' '请到前台领取'
{ALERT.SENDTO}, {ALERT.SUBJECT} and {ALERT.MESSAGE}
前1分钟以邮件形式发送某用户组
一分钟后发送企业微信告警,持续时间3分钟,直到问题解决
名称:Action-Email
告警标题:故障{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}
发现zabbix图形出现乱码
zabbix server端处理:
[root@localhost zabbix]# find / -name *.ttf ##找到如下的发布目录
/var/www/html/assets/fonts/DejaVuSans.ttf
windows本机C:\Windows\Fonts找到黑体的字体
上传到var/www/html/assets/fonts/目录 并重命名为DejaVuSans.ttf文件
前台刷新验证正常
安装grafana
wget https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-7.5.2-1.x86_64.rpm
yum localinstall grafana-7.5.2-1.x86_64.rpm -y
systemctl start grafana-server.service
systemctl enable grafana-server.service
#访问grafana
http://192.168.2.214:3000
默认账号密码:admin/admin
grafana的概念
grafana只是个出图工具 需要经过以下步骤才能连接上zabbix出图
1.安装zabbix插件
2.新建一个zabbix数据源
3.导入dashboard效果图(找现成的)
安装zabbix插件,启动插件
grafana-cli plugins list-remote|grep zabbix
grafana-cli plugins install alexanderzobnin-zabbix-app
systemctl restart grafana-server.service
数据源–zabbix数据源
导入dashboard(待实验)
tcp 11种状态
模板:定义好了,一些监控项,应用集,触发器,图形等资源
模板可以包含子模板
模板,可以导入导出,可以分享
自定义模板
https://www.jianshu.com/p/e276d578a09d
a、开启监控页面
vim nginx.conf
#开启nginx监控页面
location = /nginx_status {
stub_status;
access_log off;
}
systemctl restart nginx
上github下载templates
务必选择zabbix的版本,否则可能下载到不匹配的模板
c:准备zabbix的配置文件,并测试脚本
vim zbx_nginx.conf
UserParameter=nginx_[*],/etc/zabbix/nginx.sh $1
systemctl restart zabbix-agent
上传脚本nginx.sh 至/etc/zabbix/并增加执行权限
#测试脚本取值
sh nginx.sh accepts
d:在zabbix-server上zabbix-get测试取值
zabbix_get -s 192.168.2.139 -k nginx[accepts]
被监控主机安装同版本的zabbix-agent
[root@localhost nginx]# wget -c https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.2-1.el7.x86_64.rpm
[root@localhost nginx]# rpm -ivh zabbix-agent-5.0.2-1.el7.x86_64.rpm
[root@localhost nginx]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.2.214
[root@localhost nginx]# systemctl start zabbix-agent
#查看php73的配置文件
[root@localhost nginx]# grep -rl 'pm.status_path' /etc/ #或者find / -name 'www.conf'
/etc/php-fpm.d/www.conf
a:开启监控页面
vim /etc/php-fpm.d/www.conf
pm.status_path = /status
ping.path = /ping
vim /etc/nginx/nginx.conf
# Enable php-fpm status page
location ~ ^/(status|ping)$ {
## disable access logging for request if you prefer
access_log off;
## Only allow trusted IPs for security, deny everyone else
# allow 127.0.0.1;
# allow 1.2.3.4; # your IP here
# deny all;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
## Now the port or socket of the php-fpm pool we want the status of
fastcgi_pass 127.0.0.1:9000;
# fastcgi_pass unix:/run/php-fpm/your_socket.sock;
}
systemctl restart php-fpm.service nginx.service
[root@localhost nginx]# ab -n 1000 -c 100 http://192.168.2.205/php_status
b: 导入模板
上github下载templates
务必选择zabbix的版本,否则可能下载到不匹配的模板,另外务必查看STEP的步骤,php-fpm7与php-fpm5存在差异,可以参考php-fpm7配置php-fpm5实现监控,此例已实践
c:准备zabbix的配置文件,并测试脚本
由于zabbix5.0已经自带模板
被监控机器需安装zabbix-agent2
[root@localhost ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent2-5.0.2-1.el7.x86_64.rpm
[root@localhost ~]# vi /etc/zabbix/zabbix_agent2.conf
Server=192.168.2.214
ServerActive=192.168.2.214
Hostname=xuqy01
[root@localhost ~]# systemctl restart zabbix-agent2
[root@localhost ~]# systemctl enable zabbix-agent2
# 若装过zabbix-agent版本需要先停掉zabbix-agent
systemctl disable zabbix-agent
systemctl disable zabbix-agent
#测试
[root@localhost init.d]# zabbix_get -s 192.168.2.208 -k redis.ping["tcp://192.168.2.208:7001"]
1
a: 物理硬件监控(cpu温度,风扇转速,主板温度,电压,功率 ipmi工具监控 机房巡检)ipmitool命令行
b:操作系统监控(cpu负载,内存,磁盘容量io,网卡io,进程数,安全监控/etc/password)linux模板
c: 应用软件监控(nginx,php-fpm,mysql,redis,分布式文件系统glusterFS,ceph) 修改开源的模板
d:业务监控(业务状态,网页速度,pv,uv,ip监控,会员活跃数量,每天的成单量)
e: 网络设备监控 snmp
f:ELK监控日志
pv,uv,ip监控
开源软件: piwik matomo js代码
AWstates
第三方统计平台,腾讯分析。百度统计,谷歌分析, js代码
前提:登陆页面没有验证码或其他验证方式即可使用curl模拟登陆
1):使用curl命令,命令行模拟登陆discuz 2):使用curl模拟登陆zabbix web
保存session,鼠标点一点,发起http请求,html
选择Zabbix server机器(原因是一般这台策略开通到外网,其他机器配置可能没法发告警)
1、
新开浏览器模拟登陆一次F12获取index.php登陆信息获取如下登陆用户的表单数据或源码
这里用源码了,比较方便,也可以用表格数据一项项的手工填写
name=Admin&password=zabbix&autologin=1&enter=Sign+in
3、创建测试页面
查看监测情况
创建web监测触发器
当然响应时间过长也可以作为触发器判断条件 比如响应时间大于1s
创建触发器
测试触发器
[root@localhost zabbix]# find / -name 'hosts.php'
/root/zabbix-5.0.2/ui/hosts.php
/var/www/html/hosts.php
[root@localhost zabbix]# ll /var/www/html/hosts.php
-rw-r--r--. 1 apache apache 52175 Jul 6 2020 /var/www/html/hosts.php
由于用的lamp架构 所以我们改一下/var/www/html/hosts.php文件,去掉读的权限测试
[root@localhost zabbix]# ll /var/www/html/hosts.php
--w-------. 1 apache apache 52175 Jul 6 2020 /var/www/html/hosts.php
[root@localhost zabbix]# chmod +r /var/www/html/hosts.php
[root@localhost zabbix]# ll /var/www/html/hosts.php
-rw-r--r--. 1 apache apache 52175 Jul 6 2020 /var/www/html/hosts.php
[root@localhost zabbix]# ab -n 100000 -c 20 http://192.168.2.214
https://www.percona.com/ 开源数据库专家,改进数据库性能,提供了很多性能诊断工具
yum安装的mysql监控方法
#导入模板(兼容性)
#把zabbix的取值配置文件,放入到指定目录/etc/zabbix/zabbix_agentd.d/
rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
cd /var/lib/zabbix/percona/templates/
cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agent2.d/
systemctl restart zabbix-agent2.service
yum install php-cli php-mysqlnd -y 或者php72w-cli php72w-mysqlnd
vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php
数据库账号密码
$mysql_user = 'root';
$mysql_pass = '123456';
$mysql_socket = '/tmp/mysql.sock';
#zabbix-get调试取值
zabbix_get -s 10.0.0.8 -k MySQL.Open-files
#在目标主机链接刚导入的模板
#验证,查看最新数据
其他方式安装的mysql监控方法
1、创建用于监控的 MySQL 用户
CREATE USER ‘zbx_monitor’@’%’ IDENTIFIED BY ‘123456’;
GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON . TO ‘zbx_monitor’@’%’;
2、下载模板template_db_mysql_agent2.xml
3、被监控端安装zabbix-agent2
root@localhost ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent2-5.0.2-1.el7.x86_64.rpm
[root@localhost ~]# vi /etc/zabbix/zabbix_agent2.conf
Server=192.168.2.214
ServerActive=192.168.2.214
Hostname=xuqy01
[root@localhost ~]# systemctl restart zabbix-agent2
[root@localhost ~]# systemctl enable zabbix-agent2
# 若装过zabbix-agent版本需要先停掉zabbix-agent
systemctl disable zabbix-agent
systemctl disable zabbix-agent
#测试
[root@localhost init.d]# zabbix_get -s 192.168.2.208 -k redis.ping["tcp://192.168.2.208:7001"]
1
不能安装zabbix-agent的设备,都可以使用snmp监控
snmp协议: simple network manager protocol
OID:监控标准都有一个唯一的id,object id
oid自行百度 很多根据需要获取
总内存oid: .1.3.6.1.4.1.2021.4.5.0
MIB:
存储所有oid信息
snmp协议版本
v1
v2c -c commuity 密码,口令
v3
a:安装snmp服务端,配置,启动
被监控主机为ip 192.168.2.205
yum install net-snmp -y
vim /etc/snmp/snmpd.conf
#第41行修改为
com2sec notConfigUser default 123456
view systemview included .1
systemctl start snmpd
systemctl enable snmpd
b: zabbix-server(192.168.2.214)安装snmp客户端,测试取值
yum install net-snmp-utils.x86_64 -y
# oid .1.3.6.1.4.1.2021.11.11.0 空闲CPU百分比
snmpwalk -v 2c -c 123456 192.168.2.205 .1.3.6.1.4.1.2021.11.11.0
snmpwalk -v 2c -c 123456 192.168.2.205
自动发现需要zabbix Server询问范围内机器是agent吗?效率低
因此引入自动注册
配置被监控机器agent如下
[root@localhost ~]# grep -vE '^$|#' /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.2.214 #重要!
ServerActive=192.168.2.214 #重要!
Hostname=elasticsearch #重要!
HostMetadata=web #重要!
Include=/etc/zabbix/zabbix_agentd.d/*.conf
#重启客户端后zabbix server立马就能看到监控的主机
[root@localhost ~]# systemctl restart zabbix-agent