分类:linux日期:2020-05-12 - 21:22:20评论:2条作者:老谢
不知道哪位大神最近在做法机房攻击频发,一被攻击路由就绕路,为了监控发生频率故需对路由进行监控,思路为使用BESTTRACE来追踪理由,利用bash脚本对追踪结果进行分析,并交由zabbix做映射值。
安装BESTTRACE
BESTTRACE是ipip.net推出的Linux版路由追踪工具,可以替代traceroute命令,该工具可以输出json数据,及查ip所属地和AS号,但实际情况发现查询频率过高,会导致返回503错误,可能是ipip.net做了请求限制,避免滥用。
wget http://cdn.ipip.net/17mon/besttrace4linux.zip
unzip besttrace4linux.zip
chmod +x besttrace
mv besttrace /usr/sbin/
chmod +s /usr/sbin/besttrace |
wget http://cdn.ipip.net/17mon/besttrace4linux.zip
unzip besttrace4linux.zip
chmod +x besttrace
mv besttrace /usr/sbin/
chmod +s /usr/sbin/besttrace
外部脚本监控
cd /usr/local/zabbix/share/zabbix/externalscripts
vim besttrace.sh
#!/bin/bash
IP=$1
var=$RANDOM
/usr/sbin/besttrace -q 1 -l -a $IP > /tmp/besttrace/tmp.$var
if [ `grep -c -E 'jp|tko' /tmp/besttrace/tmp.$var` != 0 ]; then
if [ `grep -c -E '219.158' /tmp/besttrace/tmp.$var` != 0 ]; then
echo "1"
else
echo "2"
fi
elif [ `grep -c -E 'us' /tmp/besttrace/tmp.$var` != 0 ]; then
if `grep -c -E '219.158' /tmp/besttrace/tmp.$var` != 0 ]; then
echo "3"
else
echo "4"
fi
elif [ `grep -c -E 'he.net' /tmp/besttrace/tmp.$var` != 0 ]; then
echo "5"
else
echo "0"
fi
rm -rf /tmp/besttrace/tmp.$var |
cd /usr/local/zabbix/share/zabbix/externalscripts
vim besttrace.sh
#!/bin/bash
IP=$1
var=$RANDOM
/usr/sbin/besttrace -q 1 -l -a $IP > /tmp/besttrace/tmp.$var
if [ `grep -c -E 'jp|tko' /tmp/besttrace/tmp.$var` != 0 ]; then
if [ `grep -c -E '219.158' /tmp/besttrace/tmp.$var` != 0 ]; then
echo "1"
else
echo "2"
fi
elif [ `grep -c -E 'us' /tmp/besttrace/tmp.$var` != 0 ]; then
if `grep -c -E '219.158' /tmp/besttrace/tmp.$var` != 0 ]; then
echo "3"
else
echo "4"
fi
elif [ `grep -c -E 'he.net' /tmp/besttrace/tmp.$var` != 0 ]; then
echo "5"
else
echo "0"
fi
rm -rf /tmp/besttrace/tmp.$var
映射值
0 ⇒ 正常
1 ⇒ 联通-日本
2 ⇒ 电信-日本
3 ⇒ 联通-美国
4 ⇒ 电信-美国
5 ⇒ he.net
bash写的太烂,各位大佬指正。
分类:linux日期:2018-12-12 - 22:06:09评论:0条作者:老谢
通过BIND内置的监控模块提供统计数据,需在named.conf加入以下行打开该功能:
statistics-channels {
inet 127.0.0.1 port 8053 allow { 127.0.0.1; };
}; |
statistics-channels {
inet 127.0.0.1 port 8053 allow { 127.0.0.1; };
};
编辑/usr/local/zabbix/etc,加入:
UserParameter=bind.queries.in[*],curl http://127.0.0.1:8053/ 2>/dev/null | /usr/bin/xml2 | grep -A1 "/isc/bind/statistics/server/queries-in/rdtype/name=$1$" | tail -1 | cut -d= -f2
UserParameter=bind.queries.out[*],curl http://127.0.0.1:8053/ 2>/dev/null | /usr/bin/xml2 | grep -A1 "/isc/bind/statistics/views/view/rdtype/name=$1$" | tail -1 | cut -d= -f2
#注意,需要安装xml2,可以使用yum install xml2来安装 |
UserParameter=bind.queries.in[*],curl http://127.0.0.1:8053/ 2>/dev/null | /usr/bin/xml2 | grep -A1 "/isc/bind/statistics/server/queries-in/rdtype/name=$1$" | tail -1 | cut -d= -f2
UserParameter=bind.queries.out[*],curl http://127.0.0.1:8053/ 2>/dev/null | /usr/bin/xml2 | grep -A1 "/isc/bind/statistics/views/view/rdtype/name=$1$" | tail -1 | cut -d= -f2
#注意,需要安装xml2,可以使用yum install xml2来安装
PS:折腾一圈发现,模板里没有包含OUT的监控,而且命令执行后OUT是空的,不太熟悉bind-statistics输出的内容,以后再研究吧……
继续阅读…
和之前写过的Zabbix 3.2 agentd监控Nginx性能原理差不多,都是通过web引擎输出status信息来进行性能监控,一般情况下我们需要对ReqPerSec、BytesPerSec、BusyWorkers、IdleWorkers四个数据进行关注。
开启Apache Status
Listen 80
<VirtualHost *:80>
CustomLog /dev/null common
ErrorLog /dev/null
<Location "/server-status">
SetHandler server-status
Require ip 127.0.0.1
</Location>
</VirtualHost> |
Listen 80
<VirtualHost *:80>
CustomLog /dev/null common
ErrorLog /dev/null
<Location "/server-status">
SetHandler server-status
Require ip 127.0.0.1
</Location>
</VirtualHost>
我这里生产环境监控的是一台WHM服务器,默认开启apache status,访问地址为http://127.0.0.1:80/whm-server-status?auto,正常情况下应该如下页面内容:
Apache Server Status for 127.0.0.1 (via 127.0.0.1)
Server Version: Apache/2.4.37 (cPanel) OpenSSL/1.0.2p mod_bwlimited/1.4
Server MPM: prefork
Server Built: Oct 29 2018 18:29:24
Current Time: Thursday, 22-Nov-2018 13:48:50 CST
Restart Time: Thursday, 22-Nov-2018 13:48:35 CST
Parent Server Config. Generation: 1
Parent Server MPM Generation: 0
Server uptime: 15 seconds
Server load: 0.05 0.09 0.08
Total accesses: 7 – Total Traffic: 54 kB – Total Duration: 19687
CPU Usage: u.02 s0 cu0 cs0 – .133% CPU load
.467 requests/sec – 3686 B/second – 7.7 kB/request – 2812.43 ms/request
7 requests currently being processed, 4 idle workers
……………
继续阅读…
Zabbix版本从3.0之后,开始支持Zabbix server, Zabbix proxy, Zabbix agent, zabbix_sender and zabbix_get之间的通信加密,加密方式有预共享密钥(PSK)和证书加密,加密配置是可选项,一些proxies和agents可以使用证书认证加密通信,另外一些可以使用PSK加密通信,而剩余的可以不使用加密进行通信,需要注意的是如果希望使用加密通信,编译的时候必须加入 –with-openssl参数。
生成并添加PSK共享密钥
使用命令openssl rand -hex 32生产一串密钥,配置步骤如下:
[root@zabbix scripts]# openssl rand -hex 32
ef52cbe2d1a35e6bb3c43b22bd4f1a1d7bf24d1ccb7c47f6a602425970da5432
# 将生成的密钥写入该文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/zabbix_agentd.psk
vim /usr/local/zabbix/etc/zabbix_agentd.conf
#加入
TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/usr/local/zabbix/etc/zabbix_agentd.conf.d/zabbix_agentd.psk
TLSPSKIdentity=PSKTest
#配置完成后重启zabbix_agent进程 |
[root@zabbix scripts]# openssl rand -hex 32
ef52cbe2d1a35e6bb3c43b22bd4f1a1d7bf24d1ccb7c47f6a602425970da5432
# 将生成的密钥写入该文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/zabbix_agentd.psk
vim /usr/local/zabbix/etc/zabbix_agentd.conf
#加入
TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/usr/local/zabbix/etc/zabbix_agentd.conf.d/zabbix_agentd.psk
TLSPSKIdentity=PSKTest
#配置完成后重启zabbix_agent进程
在zabbix web gui中添加
测试命令
zabbix_get -s 127.0.0.1 -k "system.cpu.load[all,avg1]" --tls-connect=psk --tls-psk-identity="PSK 001" --tls-psk-file=/etc/zabbix/zabbix_agentd.conf.d/zabbix_agentd.psk |
zabbix_get -s 127.0.0.1 -k "system.cpu.load[all,avg1]" --tls-connect=psk --tls-psk-identity="PSK 001" --tls-psk-file=/etc/zabbix/zabbix_agentd.conf.d/zabbix_agentd.psk
分类:运维技术日期:2018-06-13 - 19:34:41评论:1条作者:老谢
创建top.sh
#!/bin/sh
top -n 1 -b> /tmp/top.txt |
#!/bin/sh
top -n 1 -b> /tmp/top.txt
#注: 所有脚本请放至/usr/local/zabbix/share/scripts中
#注: 该脚本的意思是执行一次top命令并将结果重定向到top.txt
crontab -e
*/1 * * * * /usr/local/zabbix/share/scripts/top.sh > /dev/null |
crontab -e
*/1 * * * * /usr/local/zabbix/share/scripts/top.sh > /dev/null
#注: 使用crond每分钟执行一次脚本,输出最新top数据到top.txt
创建check_process.sh获取进程名
#!/bin/bash
TABLESPACE=`tail -n +8 /tmp/top.txt|awk '{a[$NF]+=$6}END{for(k in a)print a[k]/1024,k}'|sort -gr|head -10|cut -d" " -f2`
COUNT=`echo "$TABLESPACE" |wc -l`
INDEX=0
echo '{"data":['
echo "$TABLESPACE" | while read LINE; do
echo -n '{"{#PROCESSNAME}":"'$LINE'"}'
INDEX=`expr $INDEX + 1`
if [ $INDEX -lt $COUNT ]; then
echo ','
fi
done
echo ']}' |
#!/bin/bash
TABLESPACE=`tail -n +8 /tmp/top.txt|awk '{a[$NF]+=$6}END{for(k in a)print a[k]/1024,k}'|sort -gr|head -10|cut -d" " -f2`
COUNT=`echo "$TABLESPACE" |wc -l`
INDEX=0
echo '{"data":['
echo "$TABLESPACE" | while read LINE; do
echo -n '{"{#PROCESSNAME}":"'$LINE'"}'
INDEX=`expr $INDEX + 1`
if [ $INDEX -lt $COUNT ]; then
echo ','
fi
done
echo ']}'
注: 最关键的是tail -n +8 /tmp/top.txt|awk ‘{a[NF]+=6}END{for(k in a)print a[k]/1024,k}’|sort -gr|head -10|cut -d” ” -f2这条命令:这条命令的意思是从top.txt文件中取出从第八行到末尾行的数据,然后使用awk对这些数据进行累加,效果是以最后一列为关键字,每个关键字对应的第6列的数值进行累加,输出第六列数据的累加结果和最后一列数据,然后使用sort进行排序,注意这里的参数是使用-gr而不是使用-nr是因为获取到的第六列的值是以KB为单位的,假如某进程占用内存大于10G的话,将会使用科学记数法计数,sort -nr参数无法对科学记数法进行计数,需要将参数改成-gr才行,其中的-r是进行反向排序,同时为了防止zabbix获取到该值是科学记数法获取的值从而无法识别,先将该值/1024将单位变成MB,当zabbix获取到数据后再*1024*1024将该值还原成BYTE单位。head -10是取出占用内存最大的十个进程,然后使用cut对数据进行切分,获得十个进程的进程名。
继续阅读…
分类:运维技术日期:2018-06-11 - 20:58:49评论:0条作者:老谢
MySQL基础监控
通过SHOW STATUS 可以提供服务器状态信息,也可以使用mysqladmin extendedstatus 命令获得。
以下几个参数对Myisam 和Innodb 存储引擎都计数:
- Com_select 执行select 操作的次数,一次查询只累加1
- Com_insert 执行insert 操作的次数,对于批量插入的insert 操作,只累加一次
- Com_update 执行update 操作的次数
- Com_delete 执行delete 操作的次数
以下几个参数是针对Innodb 存储引擎计数的:
- Innodb_rows_read select 查询返回的行数
- Innodb_rows_inserted 执行Insert 操作插入的行数
- Innodb_rows_updated 执行update 操作更新的行数
- Innodb_rows_deleted 执行delete 操作删除的行数
通过以上几个参数,可以很容易的了解当前数据库的应用是以插入更新为主还是以查询操作为主,以及各种类型的SQL 大致的执行比例是多少。对于更新操作的计数,是对执行次数的计数,不论提交还是回滚都会累加。对于事务型的应用,通过Com_commit 和Com_rollback 可以了解事务提交和回滚的情况,对于回滚操作非常频繁的数据库,可能应用编写存在问题。
另外还有几个参数可以了解数据库的基本信息:
- Connections 试图连接Mysql 服务器的次数
- Uptime 服务器工作时间
- Slow_queries 慢查询的次数
继续阅读…
分类:运维技术日期:2018-05-16 - 15:13:15评论:0条作者:老谢
zabbix_proxy编译安装
groupadd zabbix
useradd -g zabbix -s /sbin/nologin zabbix
yum -y install net-snmp net-snmp-devel curl curl-devel perl-DBI net-snmp-utils
wget https://netix.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.2.11/zabbix-3.2.11.tar.gz
tar -zxf zabbix-3.2.11.tar.gz
mysql -uroot -proot -e "create database zabbix_proxy character set utf8"
cd zabbix-3.2.11
./configure --prefix=/usr/local/zabbix \
--enable-proxy \
--enable-agent \
--with-mysql=/usr/bin/mysql_config \
--with-net-snmp \
--with-libcurl \
--with-libxml2 \
--with-openssl
make install
mysql -uroot -proot zabbix_proxy < database/mysql/schema.sql |
groupadd zabbix
useradd -g zabbix -s /sbin/nologin zabbix
yum -y install net-snmp net-snmp-devel curl curl-devel perl-DBI net-snmp-utils
wget https://netix.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.2.11/zabbix-3.2.11.tar.gz
tar -zxf zabbix-3.2.11.tar.gz
mysql -uroot -proot -e "create database zabbix_proxy character set utf8"
cd zabbix-3.2.11
./configure --prefix=/usr/local/zabbix \
--enable-proxy \
--enable-agent \
--with-mysql=/usr/bin/mysql_config \
--with-net-snmp \
--with-libcurl \
--with-libxml2 \
--with-openssl
make install
mysql -uroot -proot zabbix_proxy < database/mysql/schema.sql
修改/usr/local/zabbix/etc/zabbix_proxy.conf配置文件
Server=IP # zabbix服务端IP
Hostname=wyy_proxy # 必须和WEB页面添加代理时设置的名称一致
LogFile=/tmp/zabbix_proxy.log # 日志文件
DBHost=IP # 数据库IP
DBName=zabbix_proxy # 数据库名
DBUser=user # 数据库用户名
DBPassword=password # 数据库密码 |
Server=IP # zabbix服务端IP
Hostname=wyy_proxy # 必须和WEB页面添加代理时设置的名称一致
LogFile=/tmp/zabbix_proxy.log # 日志文件
DBHost=IP # 数据库IP
DBName=zabbix_proxy # 数据库名
DBUser=user # 数据库用户名
DBPassword=password # 数据库密码
启动proxy服务
/usr/local/zabbix/sbin/zabbix_proxy |
/usr/local/zabbix/sbin/zabbix_proxy
iptables开放端口
iptables -A INPUT -p tcp --dport 10050 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 10050 -j ACCEPT
iptables -A INPUT -p tcp --dport 10051 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 10051 -j ACCEPT
/etc/init.d/iptables save |
iptables -A INPUT -p tcp --dport 10050 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 10050 -j ACCEPT
iptables -A INPUT -p tcp --dport 10051 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 10051 -j ACCEPT
/etc/init.d/iptables save
修改/usr/local/zabbix/etc/zabbix_agentd.conf配置文件
Server=proxyIP #proxyIP为proxy服务器IP
#重启agent端,使配置生效
service zabbix_agentd start |
Server=proxyIP #proxyIP为proxy服务器IP
#重启agent端,使配置生效
service zabbix_agentd start
zabbix_agentd及zabbix_proxy的主机名要与zabbix_server中添加的主机名一致,zabbix_agent的server地址填proxy的地址。
下面是重点
ConfigFrequency=60 #zabbix proxy从zabbix server取得配置数据的频率(秒),默认1小时同步一次!
最新评论
老何:不至于跌得这么狠吧
Andy烧麦:这些大厂都能提供必要的售后
王光卫博客:小米生态还是比较丰富
空空裤兜:在天猫买的利维斯顿,阿里智能APP...
林羽凡:我突然发现,你也记录了很多博文了。
菊座:小米的东西还行
zwwooooo:一般电器产品都jd,就是想售后身心
zwwooooo:能随便搞个公司玩玩也算是实力选手
大D:坚持就是胜利哈哈哈
老麦:看着那一排日志存档,老前辈了啊。