监控、监控客户机-添加主机、管理模板、管理图形和窗口、配置触发器,zabbix邮件告警、zabbix监控Nginx、Tomcat、MySQL

  1. 监控Linux系统状态
  2. 监控介绍
  3. 安装zabbix4.0 
  4. 监控客户机-添加主机
  5. 监控客户机-管理模板
  6. 监控客户机-管理图形和窗口
  7. 监控客户机-配置触发器
  8. 解决中文名称不能写数据库的问题
  9. 解决图形中文乱码
  10. zabbix邮件告警
  11. zabbix监控Nginx
  12. zabbix监控Tomcat
  13. zabbix监控MySQL

 

具体监控命令见此连接:https://my.oschina.net/u/4093217/blog/3036056php

监控cpu

w和uptime查看系统负载
top 动态查看进程使用资源状况,shell脚本中会使用 
占用CPU的进程能够是Running,也能够是Waiting 
某一时刻1颗CPU只能有一个进程在使用其资源
top 3秒显示一次,动态的,默认按cpu百分比排序,按大写的m(M)键,按照内存的使用率大小排序 
top -bn1 静态的显示,一次性把全部的信息所有输出出来,也是按cpu百分比排序,适合在写脚本时使用
cat /proc/cpuinfo 查看CPU信息
lscpu 也能够查看cpu信息
free命令 ,用来查看内存和swap使用状况,关注最后一列的available,这个数字是真正剩余的物理内存大小

手动增长swap

模拟一个G的磁盘空间:java

dd if=/dev/zero of=/bigfile bs=1M count=1000 
dd(对磁盘进行操做的工具),if(从哪里来),of(目标的文件或磁盘,此处写入到跟目录下,叫bigfile),bs(决定文件大小)=1M(即每一个块为1M),count=1000(共有1000个块),也能够写成bs=100M,count=10

mkswap /bigfile 格式化成swap格式
chmod 600 /bigfile 更改权限

swapon /bigfile 挂载

以前的swap大小python

挂载后的大小mysql

监控磁盘

yum install -y sysstat 安装iostat、sar

iotop 当磁盘io很忙,可使用iotop查看,得到读写的进程是哪一个,按IO使用率大小排序

综合工具,判定瓶颈点 vmstat 1,关注r、b、si、so、bi、bo、id、wa

监控网卡流量

sar -n DEV 1 10 查看网卡流量 1是每一秒钟显示一次,10是显示10次
bit 比特(带宽单位)
Byte 字节(速度传输单位)
8bit =1Byte 2MB/s 2*8=16Mbit 100Mbit 12.8MB/s
nload命令 动态的显示网卡实时速度的一个页
ethtool ens33    查看网卡是否链接
mii-tool ens33    查看网卡是否链接

查看进程:

ps aux 、ps -elf 、ps -eLf(查看线程)

查看网络链接情况:

netstat netstat -lnp 查看监听端口 须要关注上面的端口部分
netstat -an 查看tcp/ip 全部的链接状态
netstat -ltnp 只查看tcp的监听端口
netstat -ltunp 查看tcp和udp的监听端口
ss -an和netstat殊途同归,显示tcpip状态

抓包:

tcpdump -nn -r 1.cap -r读取一个包
tcpdump -nn -i ens33
tcpdump -nn -i ens33 port 22 只要端口是22的包
tcpdump -nn -i ens33 not port 80 不要80端口的包
tcpdump -nn -i ens33 not port 80 and host 192.168.247.3 不要80端口而且host是192.168.247.3 的包
tcpdump -nn -i ens33 -c 100 只抓取100个包
tshark: 
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"

监控介绍

作监控的目的:能够提早发现潜在故障隐患,第一时间解决掉,把影响下降。、linux

常见的监控软件:ios

cacti、nagios、zabbix、open-falcon、prometheus、grafana等等nginx

zabbix 4.0安装

zabbix官网  www.zabbix.com ,进入官网下载(从二进制包安装比较方便快捷)git

yum源安装zabbix  :github

rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

yum list |grep zabbix              须要安装服务端、客户端的程序
zabbix-get 命令行工具
zabbix-proxy 代理软件
zabbix-web webUI ,web界面,监控web的链接时间、加载时间,确认网站没有挂掉
zabbix-agent 客户端的程序,须要启动
zabbix-server-mysql 服务端的程序,须要启动  
zabbix-web-mysql web和mysql相关组件

须要安装的包:web

 yum install -y  zabbix-agent.x86_64 zabbix-get.x86_64 zabbix-server-mysql.x86_64 zabbix-web.noarch zabbix-web-mysql.noarch

建立zabbix库和用户

create database zabbix;
grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'tobe';

编辑zabbix配置文件    /etc/zabbix/zabbix_server.conf

根据刚才建立的数据库名称,建立的用户名密码修改

DBHost=127.0.0.1 #zabbix须要链接的数据库地址
DBName=zabbix 库名
DBUser=zabbix #用户名
DBPassword=tobe #密码

把zabbix-server-mysql中的sql导入到zabbix库中,所在位置 ls /usr/share/doc/zabbix-server-mysql-4.0.9/create.sql.gz

 解压

gzip -d /usr/share/doc/zabbix-server-mysql-4.0.9/create.sql.gz

导入到zabbix库中

mysql -uroot -ptobe zabbix < /usr/share/doc/zabbix-server-mysql-4.0.9/create.sql 

启动zabbix服务        systemctl start zabbix-server.service
设置开启启动          systemctl enable zabbix-server

注意关闭防火墙或iptables:

setenforce 0
systemctl stop firewalld

启动成功:

若是启动失败,注意查看日志报错:       

zabbix_server日志存放路径 :  /var/log/zabbix/zabbix_server.log

netstat -lntp   会监听10051端口

zabbix_agentd配置文件 :    vim /etc/zabbix/zabbix_agentd.conf

配置文件中须要修改下面两处内容

zabbix监控有两种模式:主动模式和被动模式

Server=127.0.0.1
ServerActive=127.0.0.1 客户端主动上报
启动agent服务 systemctl start zabbix-agent.service
设置开机启动   systemctl enable zabbix-agent

zabbix_agentd日志存放路径  :   /var/log/zabbix/zabbix_agentd.log

ps aux |grep zabbix_agentd

安装webUI,在浏览器上安装,须要启动httpd服务

netstat -lntp  此时80端口监听的是nginx,须要停掉,监听httpd

systemctl stop nginx   停掉Nginx

systemctl start httpd  启动httpd

或者使用kill -9 PID结束进程

浏览器中访问zabbix: url直接输入:192.168.183.133/zabbix ,出现安装页面

安装页面点击下一步,PHP option "date.timezone"出现报错

须要修改httpd配置文件  vim /etc/php.ini

lamp的配置文件路径 ls /etc/php.ini
lnmp的配置文件路径 ls /usr/local/php-fpm/etc/php.ini

找到date.timezone,加上时区

systemctl restart httpd.service  重启httpd服务,而后到页面刷新便可,点击下一步

date.timezone = Asia/Shanghai

输入数据库的配置信息

下一步,更改host,name本身定义,点击下一步:安装完成

进入登陆界面,用户名admin,密码zabbix

监控客户机-添加主机

在第二台机器上:

rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum install -y  zabbix-agent.x86_64   客户端上只须要安装此包

编辑配置文件:vim /etc/zabbix/zabbix_agentd.conf

Server=192.168.183.3 
ServerActive=192.168.183.3 修改为zabbix-server的ip
启动agent服务 systemctl start zabbix-agent.service
设置开机启动    systemctl enable zabbix-agent

ps aux |grep zabbix_agentd

netstat -lntp            zabbix_agentd监听10050端口,会和10051通讯,若是有防火墙的话,须要放行10050端口,或加白名单

加白名单 实现通讯 :   iptables -I INPUT -s 192.168.183.3 -j ACCEPT

到weiUI界面设置

先添加主机组,在到hosts中,右边找到(建立主机)create hosts添加,一台机器能够属于多个组

此处IP地址为客户端10050端口的地址

添加监控项目:

一、到模板中->建立模板

二、把经常使用的监控项目添加到test模板中

模板里的Template OS Linux中的应用集->CPU的监控项->拷贝(CPU idle time和Processor load (1 min average per core))到test模板

拷贝出这两个文件到templates模板中

复制完成后,test模板的监控项中,出现这两项

继续点击模板里的Template OS Linux->监控项->复制Total memory,复制到test中

把Template OS AIX中监控项:Free real memory复制到test,方法同上

监控客户机-管理模板

点击Template OS Linux->全克隆

全克隆以后修改模板名称和群组,最下面点击添加

进入刚刚克隆的模板中把连接取消并清理,点击更新

刚刚克隆的模板中把用不到的都删除,保留所须要的,把选择的两项删除

删除是为了把在删监控项时减小报错,由于触发器中有和监控项关联的

触发器中也保留所须要的

监控项也保留所须要的

应用集也同样

自动发现规则最好不动

完成后,到主机选择新添加的主机tobejiang->模板->选择刚刚克隆的模板tobe->添加->更新

在第一台机器上

使用 zabbix_get -s 192.168.183.33 -p 10050 -k "system.cpu.load[all,avg1]"   测试是否通讯

iptables -I INPUT -s 192.168.183.33 -j ACCEPT    在第一台server上也要加白名单

出现报错

两台机器都须要重启:
服务端重启  systemctl restart zabbix-server.service
客户端重启  systemctl restart zabbix-agent.service

重启服务后,成功

主机也启动成功

此时在最新数据中,选中此模板->应用,也出现了数据

监测->图形中,选择对应主机选项,下方出现图形界面

监控客户机-管理图形和窗口

监测中的自动发现此时是空的

到配置->主机->选择tobejiang的自动发现->选中点击如今检查

点击图形,会多出几项

监测下的图形,也多出这几项

把图形放到:监测->仪表板中

操做方法:监测->聚合图形->建立聚合图形

添加完成后点击后面的构造函数->点击更改,选择须要显示的图形

自定义仪表板:

编辑仪表盘右边模块->建立新的->输入名称->点击空白处添加构件

添加一个新的构件:图形->下面的添加新数据集,能够添加监控项

想要在新建立的screens中显示tobe02的聚合图形,须要在聚合图形界面点击这个收藏按钮

点击保存报错,不支持中文,把名称改成英文后,正常保存

监控客户机-配置触发器

配置->主机->触发器->建立触发器->添加表达式(结果中的单位为bit)>=1000000(10M)->添加

配置告警过程:

 

解决中文名称不能写数据库的问题

写入中文名字时不识别

show create table items\G;

在导入前设置字符集

show variables like 'character%'; 能够在my.cnf更改字符集

此处因为已经安装好了,因此导出表数据

mysqldump -uroot -ptobe --default-character-set=utf8 zabbix > zabbix.sql

vim zabbix.sql   编辑导出的sql
把latin1改为utf8
:1,$s/latin1/utf8/g   查找替换,$表示到最后一行,s表示要查找替换了,/latin1表示须要替换的,/utf8/表示要替换成的内容,g替换全部

导入表数据

mysql -uroot -ptobe --default-character-set=utf8 zabbix < zabbix.sql

此时在回到数据库  show create table items\G;

已经改成utf8

回到页面更改,显示中文

解决图形中文乱码

缘由是没有支持中文的字体

搜索: find . -type f -name "*inc*"

字体存放目录 :  vim /usr/share/zabbix/include/defines.inc.php

搜索font,注意此处fonts的路径

windows中的字体所在路径,把须要的字体放到桌面,rz到服务器上


并移动到/usr/share/zabbix/assets/fonts目录下

先把原来的graphfont.ttf文件更名: mv graphfont.ttf graphfont.ttf.bak
作软链接:  ln -s ./simfang.ttf graphfont.ttf

此时回到页面显示已正常

zabbix邮件告警

阿里云邮件推送服务
阿里云 -> 管理控制台 -> 产品与服务 -> 云通讯 -> 邮件推送
当即开通 -> 发信域名 -> 新建域名 -> 点击配置
到dnspod -> 域名解析-> 添加TXT记录/MX记录/CNAME
验证
发信地址 -> 新建发信地址 -> 域名/帐号/发信类型(触发) -> 设置smtp密码
SMTP服务地址: smtpdm.aliyun.com ,SMTP服务端口号:25或80或465(SSL加密)

把阿里云上对应的值写入便可,主机记录为空,写@

阿里云上的状态变为   可以使用-未备案  便可继续下一步

建立发信地址和smtp密码

yum install -y expect  生产随机字符串使用

mkpasswd -s 0 -l 15 生成密码复制到邮件推送控制台中的发信地址

 

建立发邮件python脚本

vim mail.py   放到root下就能够

#!/usr/bin/python
#coding:utf-8

import smtplib
from email.mime.text import MIMEText
import sys

mail_user = 'foutt@tobej.cn'        域名
mail_pass = 'xxxxx'                smtp密码

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])

给予755权限,不然不会执行此脚本;

chmod 755 mail.py

测试:给邮箱发邮件,进行测试,把标题为测试邮件,内容为my.cnf中的内容发送到foutt7777@163.com

./mail.py foutt7777@163.com "测试邮件" "`cat /etc/my.cnf`"

163邮箱已经收到,测试成功

编辑zabbix配置文件    /etc/zabbix/zabbix_server.conf

vim /etc/zabbix/zabbix_server.conf

找到:AlertScriptsPath=/usr/lib/zabbix/alertscripts

把mail.py 挪到这个目录下来

mv mail.py /usr/lib/zabbix/alertscripts/

cd /usr/lib/zabbix/alertscripts

给它一个755权限  chmod 755 mail.py

 

设置zabbixWEB UI

1) 设置报警媒介

管理->报警媒介类型->建立媒体类型
脚本参数 -> Add {ALERT.SENDTO}/ Add {ALERT.SUBJECT}/Add {ALERT.MESSAGE}

2)设置接收邮件地址

管理->用户->选择admin(或新建)
报警媒介->添加,此处的收件人能够添加多个

并确认是否有权限,若是没有权限的话,在用户处选择Zabbix administrators群组,并选择权限中的用户类型

3)配置动做

配置->动做->建立动做
设置好名称后,在操做模块->新的->选择发送到的用户->发送到baojing->点击添加
恢复操做->新的->选择用户->发送到baojing->点击添加
最后点击添加便可

测试报警 :

配置->主机
为了实验效果,先停用Zabbix server
主机->触发器->故意调整一个触发器 :网卡入口流量,改成<=10000000

监测->问题->选择主机->应用,能够看到报警

邮箱也收到了报警邮件

测试完成后,把触发器恢复为>=10000000,过一下子会收到已解决邮件

更改发送时间

配置->模板->选择模板->自动发现规则->Network interface discovery的监控项原型->点击Incoming network traffic on {#IFNAME}->更新间隔改成30s

zabbix监控Nginx

配置文件中前面不能有空格

在002上安装Nginx

编辑yum仓库: vim /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
systemctl start nginx
vim /etc/nginx/nginx.conf   配置状态信息放到此目录下


配置Nginx状态信息
vim /etc/nginx/conf.d/default.conf  #增长
location /nginx_status 
{
        stub_status on;
        access_log   off;
        allow 127.0.0.1;
        deny all;
    }

nginx -t检查没有问题

nginx -s reload

进行测试

curl http://127.0.0.1/nginx_status

说明:

字段

含义

Active Connections

当前活动链接数,其中也包括了等待状态的链接

accepts

接收到的链接数

handled

已经处理完的链接数,该数字通常和accepts一致,若是不一致那么说明Nginx出错了

requests

总共处理的请求数,一个链接能够有多个请求,因此该值比accpets要大

Reading

正在读取请求头信息的链接数

Writing

正在发送响应报文的链接数

Waiting

处于闲置状态,等待客户端发送请求的链接数

在客户端002上,编写监控脚本

vim /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

curl

更改权限    chmod 755 /usr/local/sbin/ngx_status.sh

在客户端002上,编辑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.183.33 -k 'nginx.status[accepts]'

导入nginx模板

下载模板 https://github.com/aminglinux/linux2019/blob/master/zabbix_nginx_template/zbx_export_templates.xml

配置->模板->导入,把在上面连接复制的内容复制到xml文件中导入->规则不动->导入

监控nginx的状态页

配置->主机->点击须要设置的机器->模板->选择Template App NGINX->添加->更新

zabbix监控Tomcat

监控流程:

1)安装zabbix_java_gateway
2)配置zabbix_java_gateway配置文件和zabbix_server配置文件,指定监听端口,启动进程数
3)编辑Tomcat配置文件,开启JMX
4)添加host,指定JMX interface
5)连接TOMCAT模板

服务端001上,安装zabbix_java_gateway

yum install -y zabbix-java-gateway

修改配置文件

vim /etc/zabbix/zabbix_java_gateway.conf 
    去掉 LISTEN_PORT 和 START_POLLERS  的注释

vim /etc/zabbix/zabbix_server.conf
    定义 JavaGateway 和 JavaGatewayPort 和  StartJavaPollers

启动zabbix-java-gateway服务 systemctl start zabbix-java-gateway

重启zabbix-server服务 systemctl restart zabbix-server

开启JMX

vim /usr/local/tomcat/bin/catalina.sh #在#!/bin/sh下增长
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.183.3
-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

监听了9999端口

添加Host连接模板

配置->主机->建立主机
agent代理程序的接口 -> 移除
JMX接口 -> Add -> 192.168.183.3  9999
模板-> 选择-> Template App Apache Tomcat JMX -> 添加-> 添加

 zabbix监控MySQL

受权一个监控用户

grant usage, process, replication client on *.* to 'mon'@'localhost' identified by 'x2ay9xodTvyM';

编辑配置文件

cat /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

mkdir /var/lib/zabbix   建立目录
vim /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

能够经过  mysql -umon -px2ay9xodTvyM   看是否可以链接

重启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

添加主机和模板

配置->主机->建立主机
模板->Template DB MySQL->添加->添加

相关文章
相关标签/搜索