监控-zabbix
1:什么是监控?
监控:安防的监控 看监控,事后追责
linux监控: 事前预警,数据分析
2:常见的linux监控命令
cpu
top
htop
uptime
vmstat
内存
free
磁盘
df
iotop
网卡
iftop
nethogs
系统进程
ps
pstree
系统日志 ELK
3:使用shell脚本来监控服务器
shell+crontab
#!/bin/bash
avai_mem=`free -m|awk '/^Mem/{print $NF}'`
if [ $avai_mem -lt 100 ];then
echo "可用内存过低,当前内存是:$avai_mem" >>/tmp/monitor_mem.log
echo "可用内存过低,当前内存是:$avai_mem"|mail -s "服务可用内存低" 296917342@qq.com
fi
4:zabbix的基础服务架构

5:zabbix生产环境安装
#安装zabbix前提,关闭selinux
1:配置zabbix的yum源
#下载zabbix-release
wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
#安装zabbix-release
rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm
#将官方仓库地址替换为清华仓库地址
sed -i 's#http://repo.zabbix.com#https://mirror.tuna.tsinghua.edu.cn/zabbix#g' /etc/yum.repos.d/zabbix.repo
2:安装zabbix服务端和zabbix-web前端
yum install zabbix-server-mysql zabbix-web-mysql -y
3:安装mariadb,创建zabbix库,授权zabbix用户
yum install mariadb-server -y
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation
先回车
再n
然后一路y
mysql
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by '123456';
导入zabbix表结构和初始数据
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123456 zabbix
检查zabbix库是否导入成功
mysql -uroot zabbix -e 'show tables'
4:配置启动zabbix-server
vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
启动zabbix-server
systemctl start zabbix-server
systemctl enable zabbix-server
检查:
netstat -lntup|grep 10051
5:修改Zabbix前端的PHP配置,并启动httpd
vi /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
systemctl start httpd
systemctl enable httpd
6:前端zabbix-web的安装
浏览器:http://10.0.0.71/zabbix
后期修改zabbix数据库密码的时候,需要修改的配置文件:
/etc/zabbix/web/zabbix.conf.php
http://10.0.0.61/zabbix/zabbix.php
登录的账号密码;
Admin
zabbix
6:监控一台服务器主机
监控zabbix-server自己
yum install zabbix-agent.x86_64 -y
systemctl enable zabbix-agent.service
systemctl start zabbix-agent.service
使用zabbix-agent监控其他主机(10.0.0.8)
wget https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.16-1.el7.x86_64.rpm
rpm -ivh zabbix-agent-4.0.16-1.el7.x86_64.rpm
vim /etc/zabbix/zabbix_agentd.conf
Server=10.0.0.71
systemctl enable zabbix-agent.service
systemctl start zabbix-agent.service





7:自定义监控项
已监控硬盘的tps值为例
a: 命令行取值
iostat|awk '/^sda/{print $2}'
b:修改zabbix-agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
UserParameter=tps,iostat|awk '/^sda/{print $2}'
systemctl restart zabbix-agent.service
c: 在web界面上添加监控项



8:自定义触发器


9:微信报警
邮件报警
1:配置发件人


2:配置收件人

3:启动报警发消息的动作

微信报警
#上传weixin.py的脚本
python weixin.py
yum install python-pip -y
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
mv weixin.py /usr/lib/zabbix/alertscripts
chmod +x weixin.py
配置报警媒介


{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
配置收件人

重新触发报警


#定制报警内容
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
{
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
}
10:自定义图形和grafana出图
解决zabbix默认图形乱码问题
cd /usr/share/zabbix/assets/fonts/
#上传一个中文的ttf字体
\mv simkai.ttf graphfont.ttf
a:安装grafana
wget https://mirror.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-6.5.2-1.x86_64.rpm
yum localinstall grafana-6.5.2-1.x86_64.rpm -y
systemctl start grafana-server.service
b:grafana的主要内容
插件: zabbix的插件
#安装zabbix插件
grafana-cli plugins install alexanderzobnin-zabbix-app
service grafana-server restart
数据源:
登录http://10.0.0.71:3000/login(默认admin:admin)
dashboard:
11:自定义监控模板
使用其他人分享的zabbix模板
a:导入模板
b:把zabbix-agent的自定义key的配置文件放到/etc/zabbix/zabbix_agentd.d
c:如果有取值脚本,将取值脚本放在对应的目录
d:手动执行脚本测试取值(使用root身份执行)
e:使用zabbix_get测试取值(使用zabbix身份执行)
f:目标主机监控关联模板
自定义模板(监控tcp 11种状态)
略
12: zabbix 监控角度总结
服务器硬件(cpu温度,主板温度,功率,风扇的转速,硬盘的健康状态) ipmi芯片 远程管理控制卡idrac,ilo,imm
交换机路由器: snmp协议
操作系统 (cpu,内存,硬盘,网卡,系统进程,日志) zabbix linux模板
应用程序 nginx,mysql,redis,k8s-master 自定义模板(网上现有的模板)
业务层面 业务访问速度,流量(pv,uv,ip),活跃用户日活,周活,月活,成单量,交易额
日志监控 ELK
13: web网站的可用性监测




14: 使用percona 插件监控mysql
15:snmp监控window和Linux
snmp监控:simple network manager protocol
交换机,路由器,打印机 开启snmp,打开snmp服务端
zabbix-server 客户端
snmp协议三个版本
v1 没有密码验证
v2c 支持口令验证 community
v3 太复杂
16:zabbix自动发现和自动注册(主动)
·a:自动发现
配置规则


自动注册:

配置agent客户端
vim /etc/zabbix/zabbix_agentd.conf
Server=10.0.0.71
ServerActive=10.0.0.71
Hostname=10.0.0.8
HostMetadata=web
17:zabbix-agent主动和被动的区别
18:zabbix版本升级
a:版本可以解决性能
b:模板不兼容问题
19:zabbix分布式监控proxy


#web01上安装zabbix-proxy
yum install zabbix-proxy-mysql mariadb-server -y
#mysql中创库,授权
mysql> 略
cd /usr/share/doc/zabbix-proxy-mysql-4.0.16/
gzip -d schema.sql.gz
mysql zabbix_proxy -uzabbix -p123456 < schema.sql
mysql zabbix_proxy -uzabbix -p123456 -e 'show tables;'
vim /etc/zabbix/zabbix_proxy.conf
ProxyMode=0
Server=10.0.0.71
ServerPort=10051
Hostname=sh_proxy
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=123456
HeartbeatFrequency=60
ConfigFrequency=60
DataSenderFrequency=1
systemctl restart zabbix-proxy.service


20:zabbix监控jvm原理
#开启tomcat的远程监控
vim /app/apache-tomcat-8.0.27/bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=10.0.0.8
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"


21:zabbix低级自动发现
a:什么是低级自动发现(low level discovery)
低级自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法。
b:为什么要用低级自动发现
低级自动发现特别适合用于监控那些有规律,又有差异的监控对象。例如A主机有3个挂载分区,B主机有4个挂载分区,c主机有5个挂载分区,每个分区挂载目录还不一样,现在要求,监控每一个分区的磁盘总容量,剩余容量,使用容量,block剩余百分比,inode使用百分比,这时候使用普通的zabbix模板根本无法监控
c:zabbix模板自带的低级自动发现有哪些?



d:增加一个监控项原型
增加监控项原型1:

增加监控项原型2:
自定义监控项原型
#修改agent配置文件
[root@hdss7-11 ~]# cat /etc/zabbix/zabbix_agentd.d/net.conf
UserParameter=net.if.mac[*],ifconfig $1|awk 'NR==4{print $$2}'
#zabbix-get测试取值
[root@k8s-zabbix ~]# zabbix_get -s 10.4.7.11 -k net.if.mac[eth0]
fa:16:3e:f1:36:29

效果展示:

e:创建一个低级自动发现规则
第一个特殊key:定义低级自动发现规则,输出格式为json:例如:{"data":[{"{#IFNAME}":"eth0"},{"{#IFNAME}":"eth1"},{"{#IFNAME}":"lo"}]}
第二个key: 监控项原型,取值
第一步:修改agent配置文件
#agent配置文件
[root@k8s-node-2 ~]# cat /etc/zabbix/zabbix_agentd.d/discovery_container.conf
UserParameter=discovery_container,/bin/bash /opt/discovery_container.sh
UserParameter=container_mem_per[*],/usr/bin/docker stats --no-stream |grep "$1"|awk '{print $$8}'|tr -d '%'
低级自动发现脚本
#!/bin/bash
port=($(/usr/bin/docker ps -a|grep -v "CONTAINER ID"|awk '{print $NF}'))
printf '{\n'
printf '\t"data":[\n'
for key in ${!port[@]}
do
if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then
printf '\t {\n'
printf "\t\t\t\"{#CONTAINERNAME}\":\"${port[${key}]}\"},\n"
else [[ "${key}" -eq "((${#port[@]}-1))" ]]
printf '\t {\n'
printf "\t\t\t\"{#CONTAINERNAME}\":\"${port[${key}]}\"}\n"
fi
done
printf '\t ]\n'
printf '}\n'
第二步:测试取值
[root@k8s-zabbix ~]# zabbix_get -s 10.4.7.17 -k discovery_container
{
"data":[
{
"{#CONTAINERNAME}":"7a4552bf6b07"},
{
"{#CONTAINERNAME}":"4081845226ee"},
{
"{#CONTAINERNAME}":"9d73c4fc6eb4"},
{
"{#CONTAINERNAME}":"7c7aadff9e11"},
{
"{#CONTAINERNAME}":"bbf5e3e231e0"}
]
}
[root@k8s-zabbix ~]# zabbix_get -s 10.4.7.17 -k container_mem_per[bbf5e3e231e0]
0.12
第三步:web界面创建规则和监控项原型


效果展示:

22:zabbix性能优化
1)针对mysql,写多读少 mariadb 5.5 innodb 升级 mysql 5.7 tokudb
2)去掉无用监控项,增加监控项的取值间隔,减少历史数据保存周期
3)把被动模式修改为主动模式,增加zabbix-proxy
4)针对于zabbix-server进程调优,谁忙,就加大它的进程数量
5)针对于zabbix-server缓存调优,谁的剩余内存少,就加大它的缓存值
6)针对zabbix 历史数据和趋势图的表,进行周期性分表( 分表)
23:zabbix api
api:aplication interface
zabbix集成到其他的平台,把zabbix二次开发
调用api,发起一个http请求
#获取认证
curl -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin",
"password": "zabbix"
},
"id": 1,
"auth": null
}' http://10.0.0.71/zabbix/api_jsonrpc.php
{"jsonrpc":"2.0","result":"5fce40fb14005e696d26873c88b83465","id":1}
#创建主机
curl -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "oldboy",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "10.0.0.8",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "15"
}
],
"templates": [
{
"templateid": "10272"
},
{
"templateid": "10001"
}
]
},
"auth": "5fce40fb14005e696d26873c88b83465",
"id": 1
}
' http://10.0.0.71/zabbix/api_jsonrpc.php
curl -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10295"
],
"auth": "5fce40fb14005e696d26873c88b83465",
"id": 1
}
' http://10.0.0.71/zabbix/api_jsonrpc.php
24: zabbix 高可用
keepalived
启动zabbix-server01
启动zabbix-server02 keepalived agent01
监控-zabbix的更多相关文章
- 运维监控-Zabbix Server 使用微信 WeChat 告警
运维监控-Zabbix Server 使用微信 WeChat 告警 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 微信公众号告警每个一天只支持1000次告警,如果超出这个次数了就不 ...
- 运维监控-Zabbix Server 使用QQ SMTP发送邮件报警及定制报警内容
运维监控-Zabbix Server 使用QQ SMTP发送邮件报警及定制报警内容 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客采用腾讯邮箱,想必大家都对QQ很了解,所以 ...
- Zabbix WebUI 配置监控Zabbix Agent
Zabbix WebUI 配置监控Zabbix Agent 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.部署zabbix服务 1>.部署zabbix server 和z ...
- 第八章 监控 Zabbix
1.1 YUM部署 Zabbix 2.4 1. 前期准备(省略) l Yum源的配置 cd /etc/yum.repos.d/; mkdir old;mv ./* old/ rpm -Uvh ...
- 企业级监控zabbix基础
一个标准的监控系统所具备的基本功能: 1.数据的采集 2.为了展示其长期走势,将数据存储下来 3.万一某次采样的结果不在被认为是合理的范围内,然后就会做出告警操作,尽早的让相关人员得知到此消息 4.展 ...
- 服务监控-zabbix监控指标
1.cpu unitzation 监控cpu的整体状态. 使用Zabbix查看CPU利用率,会有下面几个值: CPU idle time:空闲的cpu时间比[简称id] CPU user time:用 ...
- 服务器监控zabbix
nagios服务器安装:http://www.jb51.net/article/79496.htm默认端口12489 nagios +ndo2db+mysqlhttps://www.cnblogs.c ...
- 服务监控Zabbix和Nagios的继任者
本文转载自:https://blog.csdn.net/moonpure/article/details/78633668 为了调研市场,从而做出更好的监控工具,David Gildeh 曾采访了超过 ...
- 建设DevOps统一运维监控平台,全面的系统监控 Zabbix VS Nagios VS Open-Falcon OR Prometheus
前言 随着Devops.云计算.微服务.容器等理念的逐步落地和大力发展,机器越来越多,应用越来越多,服务越来越微,应用运行基础环境越来多样化,容器.虚拟机.物理机不一而足.面对动辄几百上千个虚拟机.容 ...
- 企业及监控zabbix
Php要求必须是5.4及以上(centos 7默认是 5.4.16可以) #安装依赖库 yum -y install gcc curl curl-devel net-snmp net-snmp-dev ...
随机推荐
- Process Synchronization-Example 2
问题描述 理发店有一位理发师,一把理发椅和N把供等候的顾客坐的椅子. 如果没有顾客,理发师在理发椅上睡觉: 当有一个顾客到来时,他必须先唤醒理发师: 如果顾客来时理发师正在理发,如果有空椅子,坐下等待 ...
- CF思维联系– CodeForces -CodeForces - 992C Nastya and a Wardrobe(欧拉降幂+快速幂)
Nastya received a gift on New Year - a magic wardrobe. It is magic because in the end of each month ...
- 图论--差分约束--POJ 1201 Intervals
Intervals Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 30971 Accepted: 11990 Descripti ...
- python selenium(用例断言)
1.if ...else ...判断进行断言 from time import * from selenium import webdriver "): driver = webdriver ...
- Nginx模块开发(1)————类helloworld
Nginx看了一点了,准备写个helloworld试试,觉得只看书的话很多东西都乱乱的,晕晕的,印象不深. 我的helloworld模块的目的就是:能够在浏览器里输入http://你的ip地址/lcw ...
- B - Dining POJ - 3281 网络流
Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will c ...
- 视频文件自动转rtsp流
最近碰到一个项目需要用到 rtsp 视频流做测试, 由于真实环境的 摄像头 并不能满足需求,故尝试了一下用本地视频文件转换成rtsp视频流做测试,记录一下~ 采用方案: Docker + EasyDa ...
- 【matlab 基础篇 01】快速开始第一个程序(详细图文+文末资源)
快速入门matlab,系统地整理一遍,如何你和我一样是一个新手,那么此文很适合你: 文章目录 1 软件安装 2 打开软件 3 编写程序 3.1 基础步骤 3.2 添加PATH 3.3 命令行模式 4 ...
- flink入门学习
Flink学习笔记 一.简介 1.定义: 针对流数据和批数据的分布式处理引擎.它主要是由 Java 代码实现.. 2.应用场景: 流数据:把所有任务当成流来处理,处理观察和分析连续事件产生的数 ...
- Velocity中判断表达式是不是为空
Velocity中判断表达式是不是为空 $if ($null.isNull($mycoll) || $mycoll.size()==0) ${}与$!{}区别 例子: ${str}:如果str没有值, ...