一、zabbix server部署
1、监控的方式
- 手工巡检
- 专业的监控工具
zabbix
IT基础设施设备(网络设备、服务器、存储)
promethus
适用于容器化应用的监控
2、zabbix特性
- 开源的、跨平台
- 获取监控数据的方式
zabbix agent
适用于主机、服务器
主动模式、被动模式
SNMP协议 161/udp
适用于网络监控
SNMP v2
IPMI协议
适用于硬件信息(cpu温度、序列号)
JMX协议
适用于java应用
支持自动监控
支持多种报警方式 —— 邮件、微信、电话
支持分布式监控
提供API接口
3、zabbix server安装部署
以下操作仅以centos7系统为例说明
3.1、关闭防火墙、SELinux、时间同步
3.2、配置epel仓库、zabbix仓库
[root@zabbix_server ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@zabbix_server ~]# cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=zabbix
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/
enabled=1
gpgcheck=0
3.3、安装zabbix 服务端软件
[root@zabbix_server ~]# yum install -y zabbix-server-mysql zabbix-web-mysql
3.4、安装配置MySQL
[root@zabbix_server ~]# yum install -y mariadb-server
[root@zabbix_server ~]# systemctl start mariadb
[root@zabbix_server ~]# systemctl enable mariadb
MariaDB [(none)]> create database zabbix charset utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on zabbix.* to 'zabbixuser'@'localhost' identified by 'redhat';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
3.5、导入zabbix需要的表
[root@zabbix_server zabbix-server-mysql-4.4.10]# pwd
/usr/share/doc/zabbix-server-mysql-4.4.10
[root@zabbix_server zabbix-server-mysql-4.4.10]# zcat create.sql.gz | mysql -uroot zabbix
3.6、编辑zabbix server配置文件,指定数据库连接信息
[root@zabbix_server ~]# vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbixuser
DBPassword=redhat
DBSocket=/var/lib/mysql/mysql.sock
[root@zabbix_server ~]# systemctl start zabbix-server
[root@zabbix_server ~]# systemctl enable zabbix-server
[root@zabbix_server ~]# netstat -antp | grep zabbix
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 7544/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 7544/zabbix_server
3.7、初始化web管理界面
[root@zabbix_server ~]# grep "date" /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
[root@zabbix_server ~]#
[root@zabbix_server ~]# systemctl start httpd
[root@zabbix_server ~]# systemctl enable httpd
访问地址:
http://zabbix服务器/zabbix
修改显示界面为中文
4、配置监控本机
4.1、安装zabbix agent
[root@zabbix_server ~]# yum install -y zabbix-agent
备注:zabbix-agent yum安装成功后会在etc下生成zbbix目录,需要修改zabbix目录下的zabbix_agentd.conf文件,指定zabbix-server服务器的地址。
4.2、编辑zabbix agent配置文件
[root@zabbix_server ~]# vi /etc/zabbix/zabbix_agentd.conf
Server=192.168.140.10 # 被动模式下,等待哪个server要数据
ServerActive=192.168.140.10 # 主动模式下,主动向哪个server汇报数据
Hostname=Zabbix server # 被监控端名称,惟一
[root@zabbix_server ~]# systemctl start zabbix-agent
[root@zabbix_server ~]# systemctl enable zabbix-agent
[root@zabbix_server ~]# netstat -antp | grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 19071/zabbix_agentd
4.3、在web界面修改本机监控接口地址
5、解决图形乱码问题
5.1、下载中文楷体simkai.ttf的文件
[root@zabbix_server ~]# wget http://y.downya.com/soft/simkai_downyi.com.zip
[root@zabbix_server ~]# unzip simkai_downyi.com.zip
5.2、将simkai.ttf拷贝到zabbix存放字体文件的目录
[root@zabbix_server ~]# cp simkai.ttf /usr/share/zabbix/assets/fonts/
[root@zabbix_server ~]# ls /usr/share/zabbix/assets/fonts/
graphfont.ttf simkai.ttf
5.3、 修改zabbix显示图形的配置文件
[root@zabbix_server ~]# vim /usr/share/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME', 'simkai'); // font file name
define('ZBX_FONT_NAME', 'simkai');
6、、服务器监控指标参考
cpu
1、CPU上下文切换/秒 Context Switch CS
2、CPU中断数/秒 Interruput
3、CPU平均负载
4、CPU使用率
- user 用户进程CPU使用率
- sys 系统进程CPU使用率
- idle CPU空闲
内存
- 剩余内存
- free + shared + buffer/cache
硬盘
- 剩余空间
- 磁盘IO
网卡
- 流入流量
- 流出流量
- 总流量
- 流入错误流量
- 流出错误流量
进程
- 进程总数量
- 正在运行进程
- 僵尸进程
用户信息
- 用户登录数
二、基于zabbix agent获取监控数据
1、监控远程主机
1.1、在被监控端安装zabbix agent
[root@node01 ~]# yum install -y zabbix-agent
[root@node01 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.140.10
ServerActive=192.168.140.10
Hostname=node01.linux.com
[root@node01 ~]# systemctl start zabbix-agent
[root@node01 ~]# systemctl enable zabbix-agent
[root@node01 ~]# netstat -antp | grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 6965/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 6965/zabbix_agentd
1.2、在web界面添加被监控端
1.3、链接模板
1.4、创建图形
1.5、创建聚合图形
2、基于zabbix agent获取监控数据的三种方式
- 链接模板
适用于系统自身(cpu、内存、硬盘、网卡)的监控
- 利用zabbix agent自带的key进行监控
- 自定义key进行监控
2.1、利用zabbix agent自带的key进行监控
示例1: 监控ens33网卡的流入流量
2.2、常用键值
- 监控网卡流量
net.if.in[if,]
- ⇒ net.if.in[eth0,errors]
- ⇒ net.if.in[eth0]
net.if.total[if,]
net.if.out[if,]
- 监控TCP服务状态
net.tcp.listen[port]
- ⇒ net.tcp.listen[80]
net.tcp.port[,port]
- ⇒net.tcp.port[,80]
- 监控UDP服务状态
net.udp.listen[port]
- => net.udp.listen[123]
- 进程数量
proc.num[,,,]
- ⇒ proc.num[]
- ⇒ proc.num[redis_server,]
- ⇒ proc.num[nginx,www]
- => proc.num[,zomb]
- 进程所消耗的内存
proc.mem[,,,,]
- => proc.mem[httpd]
- 进程所消耗的CPU使用率
proc.cpu.util[,,,,,]
- => proc.cpu.util[httpd]
- 磁盘空间
vfs.fs.size[fs,]
- vfs.fs.size[/webdata, free]
- vfs.fs.size[/var/lib/mysql, pfree]
- 内存大小
vm.memory.size[]
- vm.memory.size[free]
- vm.memory.size[buffers]
- vm.memory.size[cached]
- 文件内容变化
vfs.file.cksum[file]
- ⇒ vfs.file.cksum[/etc/passwd]
1、分别监控node01主机网卡的流入、流出、总流量及错误的数据包流量, 并创建图形
2、监控node01主机/etc/passwd文件数据变化, 并创建图形
3、在node01上分别安装ftp, httpd, mysql, ntp服务,监控所有服务的状态,并创建图形
4、在node01添加一块2G硬盘,创建200M分区,并挂载到/opt/data目录;监控该分区的剩余空间;
并创建图形
5、分别监控node01主机以apache用户、mysql用户启动的进程数, 并创建图形
6、分别监控node01主机httpd, mysql进程所占用的CPU使用率、及内存
7、监控物理内存剩余量、buffer/cache大小、并创建图形
8、部署MySQL主从复制,监控从服务器IO、SQL线程状态、复制延迟
三、自定义key
- 在被监控端定义
- 配置语法
UserParameter=,
UnsafeUserParameters=1
注意: 确保zabbix用户对命令拥有读取、执行权限
3.1、监控MySQL用户数
3.1.1、在被监控端定义key
[root@node01 ~]# vim /etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1
UserParameter=mysql.user.number,mysql -uroot -e "select count(*) from mysql.user" | sed '1d'
[root@node01 ~]# systemctl restart zabbix-agent
3.1.2、在zabbix server测试获取数据
[root@zabbix_server ~]# zabbix_get -s 192.168.140.11 -k mysql.user.number
6
3.1.3、在web界面创建监控项
3.2、监控MySQL连接数
UserParameter=mysql.conn.number,mysql -uroot -e "show processlist" | sed '1d' | wc -l
3.3、定义有参数的键值
UserParameter=memory.size[*], awk '/^$1:/{print $$2}' /proc/meminfo
说明:
-
$1, $2, $3
依次代表键值中的第1个参数、第2个参数
-
$$2
转义
[root@zabbix_server ~]# zabbix_get -s 192.168.140.11 -k memory.size[MemTotal]
995924
[root@zabbix_server ~]# zabbix_get -s 192.168.140.11 -k memory.size[Buffers]
2108
[root@zabbix_server ~]# zabbix_get -s 192.168.140.11 -k memory.size[MemFree]
409852
3.4、监控MySQL复制线程状态
[root@node01 ~]# cat /opt/check_mysql_slave.sh
#!/bin/bash
#
state=$(mysql -uroot -e "show slave status\G" | awk "/$1:/{print \$2}")
if [ $state == "Yes" ]; then
echo 1
else
echo 0
fi
UserParameter=mysql.slave[*],bash /opt/check_mysql_slave.sh $1
[root@zabbix_server ~]# zabbix_get -s 192.168.140.11 -k mysql.slave[Slave_IO_Running]
1
[root@zabbix_server ~]# zabbix_get -s 192.168.140.11 -k mysql.slave[Slave_SQL_Running]
1
MySQL监控指标参考:
1、服务状态 3306
2、数据目录剩余容量、二进制目录容量
3、用户数、连接数
4、IO线程、SQL线程、复制延迟
5、事务数量
6、慢查询数量
7、运行时长
8、Innodb buffer缓冲
9、Innodb Cache
[root@node01 ~]# mysql -uroot -e "status"
--------------
mysql Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1
Connection id: 1957
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server: MariaDB
Server version: 5.5.68-MariaDB MariaDB Server
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 39 min 31 sec
Threads: 1 Questions: 14319 Slow queries: 0 Opens: 22 Flush tables: 2 Open tables: 48 Queries per second avg: 6.039
[root@node01 ~]# mysqladmin extended-status
Com_delete:数据库执行delete的次数
Com_insert:数据库执行insert的次数
Com_select:数据库执行select的次数
Com_update:数据库执行update的次数
Com_commit: 提交的事务的次数
Com_rollback
Threads_created 创建的线程数
Threads_running 正在处理请求的线程数
Subquery_cache_hit //子查询的缓存命中数
Subquery_cache_miss //子查询的缓存丢失数
Qcache_hits //所有查询的缓存命中
Cpu_time //数据库消耗的CPU资源
Bytes_received //网卡接收的数据量
Bytes_sent //网卡发送的数据量
Connections //处理的连接数
nginx、redis监控指标