分布?p>
郊嗫?/h3>
创建代理proxy节点
更改主机名
hostnamectl set-hostname zabbix_proxy bash
yum 源下载
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all
yum -y install zabbix-proxy-mysql
安装mysql
yum -y install mysql-community-server #下载5.7版本的Mysql
初始化mysql
systemctl start mysqld 修改密码策略 vim /etc/my.cnf validate-password=OFF grep "password" /var/log/mysqld.log 重启mysqld systemctl restart mysqld 修改密码 mysqladmin -uroot -p'Tos.sJpXt9tz' password '123'
登录数据库
mysql -p'123'
创建一个数据库:zabbix_proxy库名
create database zabbix_proxy character set utf8 collate utf8_bin;
创建一个用户:zabbix用户名并设置密码
create user zabbix@localhost identified by '123';
授权上面创建的用户的权限:zabbix用户名
grant all on zabbix_proxy.* to 'zabbix'@'%' identified by '123';
刷新授权表
flush privileges;
导入初始化数据 管道符后写上面的用户名密码,和库名
zcat /usr/share/doc/zabbix-proxy-mysql*/schema.sql.gz | mysql -uzabbix -p123 zabbix_proxy
修改配置文件:
vim /etc/zabbix/zabbix_proxy.conf ProxyMode=1 将0主动模式改为被动模式1 Server=Server端的ip 因为Proxy是代理端口所以要配Server端 ServerPort=10051 根据个人需要修改,一般可以不改,默认端口是10051,要实现转发的话使用这个选项(zabbix server) Hostname=Proxy的主机名 ListenPort=10051 默认Port监听端口 SourceIP=proxy端IP 要使用那个ip去agent端去取数据 DBName=数据库库名 proxy端数据库库名 DBUser=授权的数据库用户 DBPassword=这个用户的数据库密码 DataSenderFrequency=1 #每一秒向Server端发送一次数据 ConfigFrequency=10 #多长时间去服务端拖一次有自己监控的配置 重启服务 systemctl restart zabbix-proxy
进入Zabbix页面端
给Server添加代理 管理>agent代理程序>创建代理>根据刚才的设置选择被动式>ip地址输入Proxy端ip>端口10051>添加
选择有agent端的主机修改配置文件
vim /etc/zabbix/zabbix_agentd.conf Server=proxy端ip ServerActive=proxy端ip Hostname=agent主机名 重启服务 systemctl restart zabbix-agent
给一个主机设置代理程序
配置>主机>创建主机>客户端地址选择agent端的ip>代理程序监测选择设置的Proxy
Zabbix监控Nginx
首先更改Nginx的子配置文件打开监控选项 vim /etc/nginx/conf.d/*.conf server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.hml; } location /nginx-status{ stub_status on; access_log /var/log/nginx/access.log; } } 检查有没有这个模块:nginx -V 如果没有此模块,需要重新安装,编译命令如下:./configure –with-http_stub_status_module nginx -s reload
进行命令测试:
curl 监控nginx的IP/nginx-status 返回: Active connections: 6 server accepts handled requests 89508 89508 173945 Reading: 3 Writing: 2 Waiting:1 Active connections: 6 =当前连接数 accepts(已经接受的请求数 ) handled(已处理请求数) requests(总请求数) Dropped(已丢弃,计算得出) 89508 =已经接受的请求数 89508 =已经处理请求数 173945 =总请求数 Reading: 3 =当前正在读的请求 Writing: 2 =当前正在写的请求 Waiting:1 =当前正在等待的请求
在agent端设置自定义参数
vim /etc/zabbix/zabbix_agentd.d/*.conf UserParameter=跟监控项有关系的自定键值名,curl -s 监控nginx的IP/nginx-status |awk 'NR==1{print $NF}' UserParameter=键值名,curl -s 监控nginx的IP/nginx-status |awk 截取 重启agent端:systemctl restart zabbix-agent 在Server端测试时选择你要监控的那条数据:zabbix_get -s 10.12.153.224 -p 10050 -k "memory.haha[Buffers]" zabbix_get -s agent端ip -p 10050 -k "键值名"
页面中设置:
配置>模板>创建模板>创建监控项>键值选自定义键值>那个有Nginx给链接新模板>
补充
查看Nginx并发进程数:ps -ef | grep nginx | wc -l 查看Web服务器TCP连接状态:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' LISTEN:侦听来自远方的TCPport的连接请求 SYN-SENT:再发送连接请求后等待匹配的连接请求 SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认 ESTABLISHED:代表一个打开的连接 FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认 FIN-WAIT-2:从远程TCP等待连接中断请求 CLOSE-WAIT:等待从本地用户发来的连接中断请求 CLOSING:等待远程TCP对连接中断的确认 LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认 TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认 CLOSED:没有不论什么连接状态 商业版的 nginx plus 通过他的 ngx_http_status_module 提供了比 nginx 更多的监控指标,可以参看 http://demo.nginx.com/status.html
nginx 日志分析
nginx 的日志 中可以记录很多有价值的信息,通过分析 日志,可以收集到很多指标 python 编写的 linux 工具 ngxtop 就实现了对 日志的分析功能 1.制作nginx的日志切割,每天凌晨切割并压缩。 PV:PV([访问量](https://www.baidu.com/s?wd=%E8%AE%BF%E9%97%AE%E9%87%8F&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao)): 即Page View, 即页面浏览量或[点击量](https://www.baidu.com/s?wd=%E7%82%B9%E5%87%BB%E9%87%8F&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao),用户每次刷新即被计算一次。 UV:UV(独立访客):即Unique Visitor,访问您网站的一台[电脑客户端](https://www.baidu.com/s?wd=%E7%94%B5%E8%84%91%E5%AE%A2%E6%88%B7%E7%AB%AF&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao)为一个访客。00:00-24:00内相同的客户端只被计算一次。 #sodu提权给/etc/sudoers添加这个用户 visudo 或者 vim /etc/sudoers 101行添加 zabbix的用户名 ALL=(ALL) NOPASSWD: ALL vim /etc/zabbix/zabbix_agentd.conf 93行 EnableRemoteCommands=1 101行 LogRemoteCommands=1 重启服务: systemctl restart zabbix-agent 1.根据访问IP统计UV sudo awk '{print $1}' access.log|sort | uniq -c |wc -l 2.统计访问URL统计PV sudo awk '{print $7}' access.log|wc -l 3.查询访问最频繁的URL sudo awk '{print $7}' access.log|sort | uniq -c |sort -n -k 1 -r|more 4.查询访问最频繁的IP sudo awk '{print $1}' access.log|sort | uniq -c |sort -n -k 1 -r|more 5.查询访问最频繁的前10的IP sudo awk '{print $1}' access.log|sort | uniq -c |sort -n -k 1 -r|head -n 10
Mysql的主从监控
1,首先准备好配置完主从的数据库并在从库设置agent端
2,在从库在命令行查看主从状态:SQL线程和IO线程位两个Yes
mysql -uroot -p'123' -e 'show slave statusG'
3,进行截取
mysql -uroot -p'123' -e 'show slave statusG' 2>/dev/null |grep "Slave_IO_Running" |awk '{print $2}' mysql -uroot -p'123' -e 'show slave statusG' 2>/dev/null |grep "Slave_SQL_Running" |awk 'NR==1{print $2}'
4,写个脚本来判断是否为YES
#!/bin/bash IO=$(mysql -uroot -p'123' -e 'show slave statusG' 2>/dev/null |grep "Slave_IO_Running" |awk '{print $2}') SQL=$(mysql -uroot -p'123' -e 'show slave statusG' 2>/dev/null |grep "Slave_SQL_Running" |awk 'NR==1{print $2}') if [ "$SQL" = "Yes" -a "$IO" = "Yes" ] #判断这两个变量是否等于Yes then echo 1 #如果等于Yes那就打印1 else echo 0 #否则就打印0 fi
创建完成后给这个脚本添加一个可执行权限:
chmod +x /etc/zabbix/zabbix_agentd.d/脚本名
5,定义自定义键值
vim /etc/zabbix/zabbix_agentd.d/*.conf UserParameter=自定义键值名,/etc/zabbix/zabbix_agentd.d/*.sh UserParameter=自定义键值名,脚本路径
6,重启服务
systemctl restart zabbix-agent
7,在Server端检查键值是否成功
zabbix_get -s agent端ip -p 10050 -k "键值名"
8,成功以后去页面端配置监控项
Zabbix电话告警
1,注册睿象云https://www.aiops.com/
智能告警平台>集成>监控工具>ZABBIX>设置名称并保存获取应用key>
2,Server端进行配置
1,在配置文件中查找这个可执行脚本的目录 vim /etc/zabbix/zabbix_server.conf AlertScriptsPath=/usr/lib/zabbix/alertscripts 2,cd /usr/lib/zabbix/alertscripts 3,wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-4.0.3.tar.gz 4,tar -xzf ca_zabbix_release-4.0.3.tar.gz 5,cd cloudalert/bin 6,bash install.sh d08883958947490bbd6b51ed7369c60f #应用key 7,输入Server端地址:http://ip 8,输入账号密码:Admin zabbix
3,在zabbix页面配置报警类型和报警用户,并和触发器关联
类型选择Cloud Alert Media 随便写一个收件人
4,进入睿象云平台
配置>分派策略>分派人发送给那个用户>通知测略>新建>通知对象选择
5,在zabbix页面配置触发器动作
配置>动作>触发器动作>选择需要告警的主机>操作>发送消息>发送用户选择>Cloud Alert User>仅送到>Cloud Alert Media>恢复操作一样