1、监控linux系统状态(CPU/内存)
2、监控linux系统状态(磁盘)
3、监控linux系统状态(监控网卡流量)
4、监控linux系统状态(进程)
5、监控linux系统状态(抓包)
6、监控介绍
7、监控zabbix安装
8、客户机安装zabbix
9、zabbix邮件告警
10、zabbix监控Nginx
11、zabbix监控tomcat
12、zabbix监控mysql
1、监控linux系统状态(CPU/内存)
w
时间、启动了多场时间、有几个用户在登录、1分钟 5分钟 15分钟 平均负载。top
id:空闲cpu 100-空闲的就是实际使用的、avail Mem:是系统实际可使用的物理内存、res:进程占用的内存大 小、virt:虚拟内存。top-bn1
静态一次性全部显示出来,按照cpu百分比排序。方便shell脚本中使用。cat /proc/cpuinfo
查看cpu数量。processor: 0 表示1个cpu、2为3个cpu。lscpu
架构、位数、cpu数量、型号、详细信息free
available 真正能剩余的物理内存大小 -h 人性化显示单位 beffer这部分内存是从CPU产生即将写入到磁盘去的那部分数据(缓冲),cached 这部分数据是先重磁盘里读出来,然后临时存到内存里的那部分数据(缓存)手动增加swap
dd if=/dev/zero of=/bigfile bs=1M count=1000 #根下的bigfile 块大小1M 有1000个块
mkswap /bigfile #格式化成swap
chmod 600 /bigfile #设置权限
swapon /bigfile #挂载
2、监控linux系统状态(磁盘)
监控磁盘
安装工具:yum install -y sysstatiostat -dx 1
每隔1秒显示1次 %util 磁盘空闲情况iostat -dx 1 3
每隔1秒显示1次一共显示3次iotop
安装:yum install -y iotopiotop
动态显示,按IO使用率大小排序分析系统瓶颈点
vmstat 1
vmstat 1 10
关注:r、b、si、so、bi、bo、id、wa
3、监控linux系统状态(监控网卡流量)
sar -n DEV 1 10
查看网络流量情况每秒显示一次,一共显示10次sar -n DEV -f /var/log/sa/sa28
查看28号这天网卡流量情况,默认没10分钟记录一次sar
查看的是cpusar -b
查看的是磁盘IOsar -q
查看的是历史的系统负载nload
安装epel源:yum install -y epel-release
安装nload:yum install nloadnload
回车后查看网卡流量,动态显示ethtool eth0
显示Link detected: yes
表示网卡是连接状态
4、监控linux系统状态(进程)
ps aux
查看系统及用户级别所有进程 ls -l /proc/PID号
查看该进程相关的文件 ps -elf
查看线程
STAT
S Sleep
R Running
s 父进程
N 低优先级
< 高优先级
+ 前台进程
l 多线程进程
Z 僵尸进程
netstat
查看网络连接状况
netstat -lnp 、netstat -lntp 、 netstat -lntup
netstat -an
ss -an
5、监控linux系统状态(抓包)
tcpdump
抓包工具 安装:yum install -y tcpdump
tcpdump -nn -i ens33 port 80
tcpdump -nn -i ens33 -c 100 -w 1.cap
tcpdump -i ens33 -nn not port 22 and not port 80 and not host 192.168.222.1
tcpdump -nn -r 1.cap
wireshark
安装:yum install -y wireshark
tshark -i ens33 -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"
6、监控介绍
为什么要做监控?
可以提前发现潜在故障隐患,第一时间解决掉。把影响降低。
常见的监控软件:
cacti、nagios、zaabix、open-falcon、prometheus、grafana
7、监控zabbix安装
zabbix 官网 https://www.zabbix.com/
zabbix4.0 安装
1)安装zabbix yum源
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
2)yum 安装
yum install zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
3)数据库操作
create database zabbix;
grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'zabbix-pa';
4) 导入数据
/usr/share/doc/zabbix-server-mysql-4.0.3/create.sql.gz
gzip -d /usr/share/doc/zabbix-server-mysql-4.0.3/create.sql.gz
mysql -uroot -paminglinux zabbix < /usr/share/doc/zabbix-server-mysql-4.0.3/create.sql
5) 编辑zabbix_server.conf
vi /etc/zabbix/zabbix_server.conf # 定义数据库相关的参数
systemctl start zabbix-server
systemctl enable zabbix-server
6)zabbix_agent.conf
vi /etc/zabbix/zabbix_agentd.conf #定义Server=127.0.0.1和 ServerActive=127.0.0.1
systemctl start zabbix-agent
systemctl enable zabbix-agent
7)httpd
systemctl start httpd # 如果已经启动了nginx,需要先把nginx关闭,然后启动httpd
8)webui配置
http://ip/zabbix 访问,解决php的问题 (date.timezone Asia/Shanghai) /etc/php.ini
默认密码 admin zabbix
8、客户机安装zabbix
1)安装zabbix yum源
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
2)yum 安装
yum install -y zabbix-agent
3)zabbix_agent.conf
vi /etc/zabbix/zabbix_agentd.conf #定义Server=服务器ip和 ServerActive=服务器ip
systemctl start zabbix-server #启动
ps aux|grep zabbix #查看服务
netstat -ltnp #查看监听端口
yum install -y net-tools #安装netstat
iptables -nvL 查看防火墙规则
iptables -F
解决中文名称不能写数据库的问题
1) 设置utf8字符集
my.cnf
character_set_database = utf8
character_set_server = utf8
2) mysqldump -uroot -paminglinux --default-character-set=utf8 zabbix > zabbix.sql
vim zabbix.sql
:1,$s/latin1/utf8/g
3) mysql -uroot -paminglinux --default-character-set=utf8 zabbix < zabbix.sql
解决图形中文乱码
vim /usr/share/zabbix/include/defines.inc.php #搜索fonts
字体路径:define('ZBX_FONTPATH', realpath('fonts'));
字体名称:define('ZBX_GRAPH_FONT_NAME', 'graphfont');
拷贝windows:C:\Windows\Fonts\simsun.ttc
改名字为/usr/share/zabbix/fonts/graphfont.ttf
9、zabbix邮件告警
创建发邮件python脚本
vi mail.py #内容
#!/usr/bin/python
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
import sys
mail_user = 'aming@ishiming.net'
mail_pass = 'xxxxxxxx'
def send_mail(to_list,subject,content):
me = "zabbix 监控告警平台"+"<"+mail_user+">"
msg = MIMEText(content, 'plain', 'utf-8')
msg['Subject'] = subject
msg['From'] = me
msg['to'] = to_list
try:
s = smtplib.SMTP("smtpdm.aliyun.com", 25)
s.login(mail_user,mail_pass)
s.sendmail(me,to_list,msg.as_string())
s.close()
return True
except Exception,e:
print str(e)
return False
if __name__ == "__main__":
send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
测试: python mail.py aming_test@163.com "测试邮件" "cececececece"
设置zabbix_server配置文件
vim /etc/zabbix/zabbix_server.conf
找到:AlertScriptsPath=/usr/lib/zabbix/alertscripts
cd /usr/lib/zabbix/alertscripts
把mail.py 挪到这个目录下来
给它一个755权限 chmod 755 mail.py
设置zabbixWEB UI
1) 设置报警媒介
Administration -> Media types -> 右上角(Create Media type)
Name: baojing
Type: Script
Script name: mail.py
Script parameters -> Add {ALERT.SENDTO}/ Add {ALERT.SUBJECT}/Add {ALERT.MESSAGE}
Add
2)设置接收邮件地址
Administration -> Users -> Admin(或者新建用户)
Media -> Add
Type: baojing
Send to: 邮箱地址,如 aming_test@163.com
Add
Update
3)配置动作
Configuration -> Actions -> Create action
Name: 发邮件
Operations
New
Send to Users -> Admin
Send only to -> baojing
Conditions -> new -> Add
Add
Recovery operations
New
Send to Users -> Admin
Send only to -> baojing
Add
Add
测试报警
Configuration -> Hosts -> Triggers
故意调整一个trigger
Monitoring -> Problems
10、zabbix监控Nginx
编辑yum仓库:
vi /etc/yum.repos.d/nginx.repo
粘贴:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
安装:
yum install -y nginx
配置Nginx状态信息
vi /etc/nginx/conf.d/default.conf #增加
location /nginx_status
{
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
测试
curl http://127.0.0.1/nginx_status
说明:
Active Connections 当前活动连接数,其中也包括了等待状态的连接
accepts 接收到的连接数
handled 已经处理完的连接数,该数字一般和accepts一致,如果不一致那么说明Nginx出错了
requests总共处理的请求数,一个连接可以有多个请求,所以该值比accpets要大
Reading 正在读取请求头信息的连接数
Writing 正在发送响应报文的连接数
Waiting 处于闲置状态,等待客户端发送请求的连接数
编写监控脚本
vi /usr/local/sbin/ngx_status.sh #内容如下
#!/bin/bash
url="http://127.0.0.1/nginx_status"
curl=/usr/bin/curl
# 检测nginx进程是否存在
function ping {
/sbin/pidof nginx | wc -l
}
# 检测nginx性能
function active {
$curl $url 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
$curl $url 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
$curl $url 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
$curl $url 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
$curl $url 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
$curl $url 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
$curl $url 2>/dev/null| awk NR==3 | awk '{print $3}'
}
$1
chmod 755 /usr/local/sbin/ngx_status.sh
编辑zabbix_agent.conf
vi /etc/zabbix/zabbix_agentd.conf # 增加
UserParameter=nginx.status[*],/usr/local/sbin/ngx_status.sh $1
重启服务
systemctl restart zabbix-agent
zabbix_get 测试
在服务端执行
zabbix_get -s 192.168.222.129 -k 'nginx.status[accepts]
导入nginx模板
下载模板 https://github.com/aminglinux/linux2019/blob/master/zabbix_nginx_template/zbx_export_templates.xml
Configuration -> Templates -> 右上角Import
链接模板
Configuration -> Hosts -> aminglinux02 -> Templates -> Select -> Add -> Update
11、zabbix监控tomcat
监控流程:
1)安装zabbix_java_gateway
2)配置zabbix_java_gateway配置文件和zabbix_server配置文件,指定监听端口,启动进程数
3)编辑Tomcat配置文件,开启JMX
4)添加host,指定JMX interface
5)链接TOMCAT模板
安装zabbix_java_gateway
yum install -y zabbix-java-gateway
修改配置文件
vi /etc/zabbix/zabbix_java_gateway.conf
定义 LISTEN_PORT 和 START_POLLERS
vi /etc/zabbix/zabbix_server.conf
定义 JavaGateway 和 JavaGatewayPort 和 StartJavaPollers
启动zabbix-java-gateway服务 systemctl start zabbix-java-gateway
重启zabbix-server服务 systemctl restart zabbix-server
开启JMX
vi /usr/local/tomcat/bin/catalina.sh #在#!/bin/sh下增加
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.222.128
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
重启tomcat
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
添加Host链接模板
Configuration -> Hosts -> Create host
Agent interfaces -> remove
JMX interfaces -> Add -> 192.168.222.128 9999
Templates -> Select -> Template App Apache Tomcat JMX -> select -> Add
Add
12、zabbix监控mysql
授权一个监控用户
> grant usage, process, replication client on *.* to 'mon'@'localhost' identified by 'x2ay9xodTvyM';
编辑配置文件
vi /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
mkdir /var/lib/zabbix
vi /var/lib/zabbix/.my.cnf #如下内容
[mysql]
host=localhost
user=mon
password='x2ay9xodTvyM'
socket=/tmp/mysql.sock
[mysqladmin]
host=localhost
user=mon
password='x2ay9xodTvyM'
socket=/tmp/mysql.sock
重启zabbix-agent服务
systemctl restart zabbix-agent
测试
zabbix_get -s 127.0.0.1 -p 10050 -k mysql.ping
若提示:sh: mysqladmin: 未找到命令
需要: ln -s /usr/local/mysql/bin/mysqladmin /usr/bin/
zabbix_get -s 127.0.0.1 -p 10050 -k mysql.version
zabbix_get -s 127.0.0.1 -p 10050 -k mysql.size
添加主机和模板
Configuration -> Hosts -> Create host
Agent interfaces -> 127.0.0.1 10050
Templates -> Select -> Template DB MySQL -> select -> Add
Add