- 监控 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