Zabbix快速入门
监控软件
- Cacti:监控网络,监控流量
- Nagios
- Zabbix
- Open-falcon
- Prometheus
- 天兔
http://www.lepus.cc/tag/index/Lepus
面试问题
你们监控怎么做的?
1)硬件层面
- CPU温度
- 风扇的转速
- Cmos电池的电量
- 磁盘是否损坏
- 内存是否损坏
- 南桥芯片,北桥芯片
# 例子
DELL服务器:DELL R710 R720 R730 R740
远程管理卡:走的是内网,不会受到外网关闭影响
远程管理卡会有一些安装包,装上后会有一些命令,去获取一些数据,可以利用代码去让zabbix进行监控
2)系统层面
- CPU
- 使用率
- 负载
- 内存
- 使用率
- 缓存区
- 缓冲区
- 内存锁
- 内存页
- 磁盘
- 使用率
- IO
- 用户数量
3)应用层面
- 进程
- 端口
- web 监控
- 数据库主从
- 数据库慢查询
- 数据库读写速率
- NFS、GFS挂载情况
4)网络层面
- 进出口流量
- 交换机
- 路由器
- 带宽峰值
5)业务层面
- 网站各个接口:API
- URL的监控
- nginx的状态码
- tomcat的exception
监控命令
监控目标 | 命令 |
---|---|
本地端口监控 | netstat -lntup |
本地端口监控 | ss -lntup |
本地端口监控 | lsof |
远端端口监控 | telnet |
远端端口监控 | nc |
远端端口监控 | nmap |
进程监控 | ps -ef |
进程监控 | ps aux |
web监控 | curl |
web监控 | wget |
数据库 | mysql -uroot -p123 -e'select ping()' |
内存 | free -m |
磁盘 | df -h |
文件内容 | md5 |
本地端口监控
# 查看端口
netstat -lntup
ss -lntup
lsof
# 查看tcp状态
netstat -ant
ss -lntup
远程端口监控
# 查看端口
telnet
退出命令
ctrl + ] 后输入quit
# 检查TCP端口是否能接通的脚本
#!/bin/bash
. /etc/init.d/functions
for port in `seq 1 65535`;do
prot_start=`(echo 'quit'|telnet 172.16.1.51 $port|grep -c 'Connected') 2>/dev/null`
if [ $prot_start -eq 1 ];then
action "172.16.1.51 $port" /bin/true
fi
done
-------------------nc 不止检测端口还可以开启端口------------------------------
# 查看端口
echo |nc 127.0.0.1 22
[root@web01 ~]# echo |nc 127.0.0.1 22
SSH-2.0-OpenSSH_7.4
Protocol mismatch.
# 开启端口(临时建立链接)
nc -l 3838
# 开启端口(永久建立链接)
nc -lk 3838
# 选项
-u 指定nc使用udp协议(默认tcp)
-s 指定发送数据的源IP地址,适用于多网卡机器
-w 设置超时时间
-z 扫描时不发送任何数据
-l 创建端口
-k 保持连接
----------------------------- nmap ------------------------------------------
# 扫描IP
nmap 10.0.0.61
# 扫描一个主机的一个端口
nmap -p 22 10.0.0.61
# 扫描一个主机的多个端口
nmap -p 22-1024 10.0.0.61
# 扫描多个主机的多个端口
nmap -p 22-1024 10.0.0.61 baidu.com
-----------------------------------------------------------------------------
## curl
-I:只显示响应头信息
-H:修改请求头信息
-v:显示详细的请求过程
-L --location:跟随跳转
-s:不显示头部的统计信息
-X:指定请求方式
-w:取出指定内容,例如:%{http_code}取出状态码
-o:指定输出位置
-A:指定User-Agent
-u:指定用户名密码
## wget
-O:指定输出位置
-r:递归下载
--debug:类似于curl的-v显示过程
-q:静默输出
--spider:不下载,就访问(爬虫模式)
-T:设置超时时间
-t:设置重试次数 retry
CPU监控命令
1)w
2)top
3)htop
4)glances
5)uptime
# 不管用什么命令监控,查看CPU,我们都必须了解,系统的用户态和内和态。
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
us: 用户态 跟用户的操作有关35%
sy: 内和态 跟内核的处理有关65%
id: CPU空闲
内存监控命令
1)free
2)top
3)glances
4)htop
磁盘监控命令
1)df
2)iotop
3)iostat
4)dstat
5)glances
网络监控命令
1)glances
2)iftop
3)nethogs
4)ifconfig
5)route
生产场景需求
如何每1分钟监控当前系统的内存使用状态,如果可用低于100MB则发送邮件。
同时打印当前还剩余多少内存
1.如何获取内存的状态信息 free -m
2.如何获取内存的可用状态 free -m|awk '/Mem/{print $NF}'
3.如何进行数字的比对,高于100MB不处理,低于100MB,发送邮件。
4.如何每分钟执行。
[root@web02 ~]# vim free.sh
#!/bin/bash
while true;do
free_av=$(free -m|awk '/^Mem/{print $NF}')
Hostname=$(hostname)_$(hostname -I|awk '{print $2}')
Date=$(date +%F)
if [ $free_av -lt 100 ];then
echo "$Date: ${Hostname},内存低于100MB,还有${free_av}MB内存可用"
fi
sleep 2
done
[root@web02 ~]# sh free.sh
2018-10-12: web02_,内存低于100MB,还有20MB内存可用
2018-10-12: web02_,内存低于100MB,还有6MB内存可用
2018-10-12: web02_,内存低于100MB,还有5MB内存可用
[root@web02 ~]# dd < /dev/zero > /dev/null bs=2000M
环境准备
主机名 | IP | 应用 |
---|---|---|
zabbix-server | 10.0.0.71 | zabbix5.0 |
zabbix-server | 10.0.0.81 | zabbix3.4 |
db01 | 10.0.0.51 | MySQL |
web01 | 10.0.0.7 | zabbix5.0-agent |
web02 | 10.0.0.8 | zabbix3.4-agent |
安装zabbix-server(5.0)
# 1.换源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# 2.安装Zabbix server,Web前端,agent
yum install -y zabbix-server-mysql zabbix-agent
# 3.安装前端代码源
yum install -y centos-release-scl
# 4.开启前端源
vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
# 5.安装前端
yum install -y zabbix-web-mysql-scl zabbix-nginx-conf-scl
# 6.数据库配置(db01)
mysql -uroot -p123
password
## 6.1 创建库
create database zabbix character set utf8 collate utf8_bin;
## 6.2 创建zabbix用户
grant all on zabbix.* to zabbix@'172.16.1.%' identified by '123';
## 6.3 信任函数
set global log_bin_trust_function_creators = 1;
# 7. 在zabbix安装mysql客户端
yum insatll -y mariadb(zabbix安装数据库客户端)
## 7.1 查看是否能登陆
[root@zabbix ~]# mysql -uzabbix -p123 -h172.16.1.51
# 8.导入数据
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123 -h172.16.1.51 zabbix
# 9.配置zabbix服务端
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf
DBHost=172.16.1.51
DBPassword=123
# DBSocket=
# 10.配置zabbix的nginx配置文件
vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
listen 80;
server_name xxx.zb.com;
## 10.1 修改nginx主配置文件的用户
vim /etc/opt/rh/rh-nginx116/nginx/nginx.conf
user apache;
## 10.2 域名解析
10.0.0.71 xxx.zb.com
# 11.配置zabbix的php配置文件
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
listen.acl_users = apache,nginx
php_value[date.timezone] = Asia/Shanghai
# 12.启动服务并加入开机自启
systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
账号:Admin
密码:zabbix
修改zabbix字体
# 进入目录
[root@zabbix ~]# cd /usr/share/zabbix/assets/fonts/
# 导入字体文件
win+r=>输入Fonts
导入SIMSUN.TTC
# 删除原有的字体文件
[root@zabbix fonts]# rm -f graphfont.ttf
# 改名为原有的字体名称
[root@zabbix fonts]# mv SIMSUN.TTC graphfont.ttf
zabbix-server(3.4)
# 1.换源
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
# 2.安装server web agent mariadb
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent mariadb
# 3.配置数据库
# 3.1 创建库
create database zabbix34 character set utf8 collate utf8_bin;
# 3.2 创建zabbix用户
grant all on zabbix34.* to zabbix@'172.16.1.%' identified by '123';
# 4.导入数据
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123 -h172.16.1.51 zabbix34
# 5.配置zabbix服务端
vim /etc/zabbix/zabbix_server.conf
DBHost=172.16.1.51
DBName=zabbix34
DBUser=zabbix
DBPassword=123
# 6.修改时区
vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
# 7.启动服务
systemctl start zabbix-server httpd zabbix-agent
systemctl enable zabbix-server httpd zabbix-agent
# 8.浏览网站
10.0.0.81/zabbix
修改字体
# 进入目录
[root@zabbix ~]# cd /usr/share/zabbix/fonts/
# 导入字体文件
win+r=>输入Fonts
导入SIMSUN.TTC
# 删除原有的字体文件
[root@zabbix fonts]# rm -f graphfont.ttf
# 改名为原有的字体名称
[root@zabbix fonts]# mv SIMSUN.TTC graphfont.ttf