监控

  • 监控 linux 系统状态
  • 命令 W(查看系统负载)(w、uptime 最后三个数字表示 1 分钟、5 分钟、15 分钟平均有多
  • 少个进程占用 CPU,占用 CPU 的进程可以是 Running,也可以是 waiting。某一时刻 1 颗 CPU
  • 只能有一个进程在使用其资源)
  • 命令 uptime(查看系统负载,更加精确的时间比)
  • 命令 top(综合的动态查询系统负载,以 CPU 大小排序)(按 M 会以内存使用大小排序)
  • (在 top 命令界面按 1,可以显示所有 cpu 使用率详情)
  • 命令 top -bn1(以静态方式将系统当前负载列出)(静态显示进程信息,方便在 shell 脚本
  • 中使用 top 命令)
  • cat /proc/cpuinfo(命令可以查看当前机器的 cpu 核数)
  • lscpu(可以查看 cpu 的型号及详细信息)
  • free 命令(查看内存和 swap 使用情况,关注最后一列的 available,这个数字是真正剩余的
  • 物理内存大小)(free -h -m -g -k -b 分别将所显示内存大小以 KB M B 和自适应单位显示)
  • (buffer:这部分内存是从 cpu 产生即将写入到磁盘里去的那部分数据)
  • (cached:这部分数据是先从磁盘里读出来,然后临时存到内存里的那部分数据)
  • 手动增加 swap
  • dd if=/dev/zero of=/bigfile bs=1M count=1000 (创建一个 bigfile 就是模拟一个 swap)
  • mkswap /bigfile (将该磁盘格式化成 swap 的格式)
  • chmod 600 /bigfile (将权限修改成 600,只允许 root 用户读写)
  • swapon /bigfile (将 bigfile 挂载上)
  • Iostat(监控磁盘)(yum install -y sysstat 安装)(iostat -dx 1 只查看 device,只需要关注%util
  • (其中 1 为每隔 1 秒显示 1 次))
  • Iotop(将磁盘进程以动态百分比使用率大小显示)(yum install -y 安装)
  • vmstat 1(综合显示当前系统负载,断定瓶颈点)(其中 si=swap in 为从 swap 出来进入到内
  • 存里)(关注 r、b、si、so、bi、bo、id、wa)
  • sar -n DEV 1 5(监控网卡流量)(直接使用 sar 命令可以查看 cpu)(sar -b 查看磁盘)(sar
  • -q 查看系统负载)
  • nload(动态查看网卡流量,方向键查看不同网卡)(yum install -y epl-release 安装之后装 yum
  • instal -y nload)
  • ethtool ens33(查看当前网卡状态)
  • mii-tool(查看当前网卡连接状态)
  • ps aux、ps -elf、ps -eLf(查看当前系统所有进程,包括前台后台及系统默认)(stat:S slee、
  • R running、s 父进程、N 低优先级、< 高优先级、+ 前台进程、1 多线程进程、2 僵尸进程)
  • ls -l /proc/xxx(进程的 id,可以查看当前进程的所有运行相关)
  • netstat(查看网络连接状况)(netstat -lnp 可以查看监听端口)(netstat -lntp 只查看 tcp 监
  • 听端口)(netstat -lnutp 只查看 utp 和 tcp 监听端口)(netstat -an 查看所有网络连接的状
  • 态)
  • 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”)
  • 问什么要做监控?
  • 可以提前发现潜在故障隐患,第一时间解决问题,把影响降低。
  • 常见的监控软件:cacti、nagios、zabbix、open-falcon、prometheus、grafana 等等
  • 安装 zabbix4.0
  • 官网 www.zabbix.com
  • 安装:
  • 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 zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
  • 数据库相关操作
  • 1.进入 mysql
  • create database zabbix;
  • gant all on zabbix.* to ‘zabbix’@’127.0.0.1’ idebtified by ‘zabbix-pa’;
  • 2.导入数据
  • /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
  • 3.编辑 zabbix_server.conf
  • vim /etc/zabbix/zabbix_server.conf (定义数据库参数)
  • systemctl start zabbix-server
  • systemctl enble zabbix-server
  • 4.zabbix_agent.conf
  • vim /etc/zabbix/zabbix_agentd.conf(定义 server=127.0.0.1 和 serveractive=127.0.0.1)
  • systemctl start zabbix-agent
  • systemctl enable zabbix-agent
  • 5.Httpd
  • systemctl start httod(如果已经启动了 nginx,需要想把 nginx 关闭,然后启动 httpd)
  • 6.webui 配置
  • http://ip/zabbix 访问,解决 php 问题。(date.timezone Asia/Shanghai) /etc/php.ini
  • 默认密码 admin zabbix
  • 监控客户机-添加主机(在你需要监控的主机下操作)
  • rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
  • yum instll -y zabbix-aent
  • Vim /etc/zabbix/zabbix_agentd.conf/
  • 更改 server=192.168.xxx.xxx(zabbix server 的 IP)
  • 更改 serveractive=192.168.xxx.xxx(zabbix server 的 IP)
  • systemctl start zabbix-agent
  • netstat -ltnp(安装 yum install -y net-tools)(监听 10050 端口)
  • iptables -I INPUT -s 192.168.xxx.xxx(zabbix server 的 IP)-j ACCEPT(将指定 IP 加入白名单)
  • 选择图形模板
  • 应 用 图 形 模 板
  • 应 用 模 板
  • 应用模板之后,等一会自动添加了这些信息
  • 启用主机
  • 启用主机后
  • 重新创建个空模板:配置-模板-创建模板, 这一步创建的模板和上一步创建的模板步骤不
  • 一样,上一步需要点击去主机名之后再添加
  • 模板名称: network incoming or outcoming on ens33
  • 创建流量流入监控项 :Network incoming on ens33 监控项就是 item
  • 添加键值,修改键值: net.if.in[ens33,bytes] 复制到键值框里面
  • 单位:bps
  • 应用集:Network interfaces
  • 主机资产和描述不用填 然后点击添加
  • 添加成功,查看已经添加的监控项
  • 创建流量流出监控项 :Network outcoming on ens33
  • 添加键值,修改键值: net.if.out[ens33,bytes] 复制到键值框里面
  • 单位:bps
  • 应用集:Network interfaces
  • 主机资产和描述不用填 然后点击添加
  • 添加成功,查看已经添加的监控项
  • 创建 graph(图形) 名称:network incoming or outcoming on ens33
  • 选择之前创建的两个监控项并添加
  • 应用模板: 配置之前创建的空模板,把刚才创建的图形赋予给之前创建的空模板
  • 查看 zabbix 图形
  • 压力测试
  • 测试在客户端上下载东西看流量图会不会高,刷新 zabbix 图像,多几分钟观察流量是否增
  • 高,会有延迟。延迟原因可能 zabbix 客户端没有安装 ntp 同步时间
  • wget
  • http://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-D
  • VD-1810.iso
  • 查看 cpu
  • 创建触发器报警
  • 创建入口流量触发器
  • 添加入口大于 50k 报警触发器,
  • 名称:network incoming on ens33 > 50k
  • 报警级别:严重
  • 添加表达式:
  • 选择之前创建的监控项
  • 修改表达式: {www.test3.com:net.if.in[ens33].last()}>50 默认是 k 跟添加监 控项设置的是一致的
  • 查看已经添加的触发器
  • 查看已经添加的触发器,同时可以看到当前的告警级别是严重的
  • 创建出口流量触发器
  • 添加入口大于 50k 报警触发器,
  • 名称:network outcoming on ens33 > 50k
  • 报警级别:严重
  • 添加表达式:
  • 选择之前创建的监控项
  • 修改表达式: {www.test3.com:net.if.in[ens33].last()}>50 默认是 k 跟添加监 控项设置的是一致的
  • 查 看 已 经 添 加 的 触 发 器 , 可 以 看 到 当 前 的 告 警 级 别 属 于 严 重
  • 阿里云邮件推送服务
  • 阿里云=》管理控制台=》产品与服务=》云通信=》邮件推送=》立即开通=》发信域名=》
  • 新建域名=》点击配置
  • Dnspod=》TXT 记录、MX 记录、CNAME
  • 验证
  • 发信地址=》新建发信地址=》域名、账号、发信类型(触发)=》设置 smtp 密码
  • Smtp 服务地址:smtpdm.aliyun.com ,SMTP 服务端口号:25 或 80 或 465(SSL 加
  • 密)
  • vim amil.py(内容如下)
  • #!/usr/bin/python
  • #coding:utf-8
  • import smtplib
  • from email.mime.text import MIMEText
  • import sys
  • mail_user = ‘xxxxx’(用户名)
  • mail_pass = ‘xxxxx’(密码)
  • 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])
  • --------- Chmod 755 mail.py
  • ./mail.py xxxx(发送到你自己的邮箱中) “测试邮件” “’cat /etc/my.cnf’” 登陆自己的邮箱查看是否收到你发送的测试邮件
  • 设置 zabbix_server 配置文件
  • Vim /etc/zabbix/zabbix_server.conf
  • 找到 AlertScriptsPath=/usr/lib/zabbix/aliertscripts
  • Cd /usr/lib/zabbix/alertscripts
  • 把 mail.py 移动到这个目录下
  • Chmod 755 mail.py
  • 设置 zabbixWEB UI
  • 设置报警媒介
  • Administration=>Media types=>右上角(Create Media type)
  • Name:baojing
  • Type:Script
  • Script name:mail.py
  • Script parameters=>Add {ALERT.SENDTO}/Add {ALERT.SENDTO}/Add
  • {ALERT.MESSAGE}Add
  • 设置接收邮箱地址
  • Administration=>Users=>Admin(或新建用户)
  • Media=>Add
  • Type:baojing
  • Send to:邮箱地址
  • Add
  • Update
  • 配置动作
  • Configuration=>Actions=>Create action
  • Name:发邮件
  • Operations
  • New
  • Send to Users=>Admin
  • Send only to=>baojing
  • Add
  • Recovery operations
  • -------- 测试
  • Zabbix 监控 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
  • 配置 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 -s reload
  • 测试 curl 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/z
  • bx_export_templates.xml
  • Configuration -> Templates -> 右上角 Import
  • 链接模板
  • Configuration -> Hosts -> aminglinux02 -> Templates -> Select -> Add -> Update
  • 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
  • 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
  • 解决中文名称不能写入数据库的问题
  • 进入 mysql
  • Show create table triggers\G
  • Show variables like ‘character%’;
  • 退出 mysql,在 root 下执行
  • mysqldump -uroot -p --default-character-ser=utf8 zabbix > zabbix.sql(导出)
  • vim zabbix.sql
  • 更改 CHARSET=utf8,使用命令:1,$s/latin1/utf8/g(将所有的 latin1 替换成 utf8)
  • mysql -uroot -p --default-character-ser=utf8 zabbix < zabbix.sql(导入)
  • 以上即可解决将项目名等更改成中文问题
  • 解决图形中文乱码
  • Vim /usr/share/zabbix/include/defines.inc.php
  • 在 Windows c 盘 fonts 下为 Windows 中的字体文件,选择一个中文文件拷贝到桌面
  • 使用 rz 命令将中文文件上传到 linux 下
  • Mv simsun.ttc fonts/
  • Cd fonts/
  • Mv graphfont.ttf graphfont.ttf.bak; ln ./simsun.ttc graphfont.ttf
  • 即可修正图形中文的乱码

转载于:https://my.oschina.net/u/4095969/blog/3062731

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值