第三十课预习笔记--linux监控平台

19.1 Linux监控平台介绍

常用的开源监控软件

  • cacti、nagios、zabbix、smokeping、open-falcon等等;
  • cacti、smokeping偏向于基础监控(网络设备),成图非常漂亮;
  • cacti、nagios、zabbix服务端监控中心,需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图;
  • open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究;
  • 后续以介绍zabbix为主。

 

19.2 zabbix监控介绍

  • C/S架构,基于C++开发,监控中心支持web界面配置和管理;
  • 单server节点理论上可以支持上万台客户端,瓶颈在于采集的数据量;
  • 最新版本4.0,官方文档https://www.zabbix.com/manuals;
  • zabbix建构中有5个组件;
  • zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操作数据;
  • 数据存储,存放数据,比如mysql;
  • web界面,也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因;
  • zabbix-proxy,可选组件(机器量比较大的时候),它可以代替zabbix-server的功能,减轻server的压力;
  • zabbix-agent,客户端软件,负责采集各个监控服务或项目的数据,并上报。

zabbix监控流程图:

34661a78502b8e7a676b74bc99c424c573c.jpg

 

19.3-19.6 安装zabbix

官网下载地址 www.zabbix.com/download。

1、yum安装。

1)下载和安装zabbix专用扩展源:

wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm

2)yum安装zabbix。

yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

zabbix-get:服务端软件,用来获得客户端的一些数据

zabbix-server-mysql:安装和mysql相关的文件。

zabbix-web:web UI。

zabbix-web-mysql:web UI和mysql相关。

安装会连带安装httpd和php。

如果之前没有安装过mysql,需要先安装mysql。

2、启动和编辑mysql。

1)在mysql的配置文件中添加内容:

character_set_server = utf8

重启mysql服务。

2)在mysql中创建zabbix库和创建zabbix用户。

mysql> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'liang';
Query OK, 0 rows affected (0.00 sec)

mysql> 

3)导入数据到zabbix库。

cd /usr/share/doc/zabbix-server-mysql-3.2.11/

[root@liang-00 ~]# cd /usr/share/doc/zabbix-server-mysql-3.2.11/
[root@liang-00 zabbix-server-mysql-3.2.11]# ls
AUTHORS  ChangeLog  COPYING  create.sql.gz  NEWS  README
[root@liang-00 zabbix-server-mysql-3.2.11]# gunzip create.sql.gz 
[root@liang-00 zabbix-server-mysql-3.2.11]# mysql -uroot -p123456 zabbix < create.sql 
Warning: Using a password on the command line interface can be insecure.
[root@liang-00 zabbix-server-mysql-3.2.11]# 

4)启动zabbix。

首先启动httpd服务。

systemctl start httpd.service

启动zabbix。

systemctl start zabbix-server.service

启动失败,排查问题。

查看zabbix日志:tail /var/logs/zabbix/zabbix-server.log

  3363:20190105:121750.825 database is down: reconnecting in 10 seconds
  3363:20190105:121800.826 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  3363:20190105:121800.826 database is down: reconnecting in 10 seconds
  3363:20190105:121810.827 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

得知,zabbix无法连接mysql,修改zabbix配置文件来解决。

vim /etc/zabbix/zabbix_server.conf

DBHost=127.0.0.1     //在DBName=zabbix上面增加,此ip是根据zabbix服务器所在ip设定
DBPassword=liang     //在DBuser下面增加

重启zabbix,zabbix监听10051端口。

5)web配置。

浏览器访问http://ip/zabbix/      [web界面下面配置zabbix]

802e5a832f1eafd113827d070482794d123.jpg

点击“Next step”

754b9b417131ec6394199e1b8c9dcddf0a7.jpg

找到“Fail”的选项,解决:修改php的timezone。

vim /etc/php.ini

重启httpd。

刷新页面,恢复正常。

点击“Next step”,继续配置。

0f79e0b51c3b69ce2af8d645f03d7da7c1b.jpg

7a8ad098848ed2c12a6839d98568fc54540.jpg

cde1afd95f5086a6b018d6860dab6d90226.jpg

完成web配置。

6)登录zabbix,zabbix的默认登录名密码为:

登录名:Admin

密码:zabbix

进入后台后第一件事就是要更改Admin密码。

eea10d41ca717d043f626ca188b5199d960.jpg

7)修改登录密码。

ebd049ab0c5ff42252ec24dc902cae0e0c9.jpg

7425d2334dd87baf46773307a6bb454b08b.jpg

 

6b9ac0e397b023eaa4864cf34c57bb67daa.jpg

语言可以改为中文。

2d16b44b23714b31a391cac49a4e3590467.jpg

8)忘记、重置登录密码

进入mysql命令行,选择zabbix库
mysql -uroot -p

use zabbix
update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
这样就更改了Admin用户的密码

 

9)zabbix-agent客户端安装

下载资源库:wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

安装扩展源:rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm

安装zabbix客户端:yum install -y zabbix-agent

修改客户端配置:

vim /etc/zabbix/zabbix_agentd.conf

Server=127.0.0.1修改为Server=192.168.37.200     //定义服务端的ip(被动模式)
ServerActive=127.0.0.1修改为ServerActive=192.168.37.200     //定义服务端的ip(主动模式)
Hostname=Zabbix server修改为Hostname=liang-01     //这是自定义的主机名,一会还需要在web界面下设置同样的主机名

启动zabbix客户端:systemcyl start zabbix-agent

zabbix-agent监听的是10050端口。

[root@liang-03 ~]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1445/zabbix_agentd  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      913/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1001/master         
tcp6       0      0 :::10050                :::*                    LISTEN      1445/zabbix_agentd  
tcp6       0      0 :::22                   :::*                    LISTEN      913/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1001/master         
[root@liang-03 ~]# 

 

19.7 主动模式和被动模式

  • 主动或者被动是相对客户端来讲的
  • 被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端
  • 主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。
  • 当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。
  • 服务端有公网ip,客户端只有内网ip,但却能连外网,这种场景适合主动模式

 

19.8 添加监控主机

  • 先添加主机组aming-test
  • 再添加主机,主机名称和可见名称都写aming-02
  • 群组选择aming_test
  • IP地址填写客户端的ip 192.168.133.132

 

几个概念:应用集、监控项、触发器、图形、自动发现、web监测

应用集:监控项的集合,更加方便的管理监控项。

60e64e529d84f97ee76613cb345975f5588.jpg

触发器:监控项目告警规则,级别,出现问题时会在监控主页显示

图形:用历史数据生成图标

自动发现规则:不同的机器可能分区和网卡不同。需自动发现

Web场景:监控具体的网页

 

19.9 添加自定义模板

  • 可以自定义一个常用模板,方便给新增主机添加监控项目
  • 自定义aming模板
  • 把其他自带模板里面的某些监控项目(比如cpu、内存等)复制到aming模板里
  • 定义触发器
  • 添加图形
  • 自动发现,找到Template OS Linux,点击右侧的自动发现,参考Mounted filesystem discovery和Network interface discovery定义规则
  • 可以直接导出、导入模板,然后再删除不需要的对象

1、创建模板

214f2ea79cf34fe1e9d2b124b95ef52df8b.jpg

 

2、增加监控项,从Template OS Linux模板中复制。

e5cbcaa9cbc21ef41ee79f075e79e2872c1.jpg

在增加“自动发现”时,不能够复制,这时我们有两种方法:

1)、导出模板,手动修改内容,只剩下“自动发现”

2)、链接模板。

71533287453af8584289772f6b614005209.jpg

之后在修改几个选项时,出现无法修改提示,这时需要取消链接来使修改能进行。

59e0a2b1c795e6bf42c611d5392403fbd44.jpg

a87ca4eef89edf52b2cd3d47c12fcd4b4ae.jpg

 

19.10 处理图形中的乱码

设置为中文后,zabbix图形的中文文字会显示小方框。这是因为在zabbix的字体库中没有中文字体,需要从windows上借用一个过来

vim /usr/share/zabbix/include/defines.inc.php     //搜索ZBX_FONTPATH

它定义的路径是“fonts”,它是一个相对路径,绝对路径为/usr/share/zabbix/fonts,而字体文件为“ZBX_GRAPH_FONT_NAME”所定义的“graphfont”,它是一个文件,绝对路径为/usr/share/zabbix/fonts/graphfont

windows字体路径为“C:\Windows\Fonts\”,找到“simkai.ttf”,先把它复制到桌面上,然后上传到linux的/usr/share/zabbix/fonts/,并且改名为graphfont.ttf

[root@liang-00 ~]# ls /usr/share/zabbix/fonts/graphfont.ttf 
/usr/share/zabbix/fonts/graphfont.ttf
[root@liang-00 ~]# ll /usr/share/zabbix/fonts/graphfont.ttf 
lrwxrwxrwx 1 root root 33 Jan  5 11:59 /usr/share/zabbix/fonts/graphfont.ttf -> /etc/alternatives/zabbix-web-font
[root@liang-00 ~]# ls /etc/alternatives/zabbix-web-font
/etc/alternatives/zabbix-web-font
[root@liang-00 ~]# ll /etc/alternatives/zabbix-web-font
lrwxrwxrwx 1 root root 38 Jan  5 11:59 /etc/alternatives/zabbix-web-font -> /usr/share/fonts/dejavu/DejaVuSans.ttf
[root@liang-00 ~]# 
[root@liang-00 ~]# cd /usr/share/zabbix/fonts/
[root@liang-00 fonts]# mv graphfont.ttf graphfont.ttf.bak
[root@liang-00 fonts]# mv ~/simkai.ttf ./
[root@liang-00 fonts]# ln -s simkai.ttf graphfont.ttf
[root@liang-00 fonts]# ll
total 11512
lrwxrwxrwx 1 root root       10 Jan  5 23:28 graphfont.ttf -> simkai.ttf
lrwxrwxrwx 1 root root       33 Jan  5 11:59 graphfont.ttf.bak -> /etc/alternatives/zabbix-web-font
-rw-r--r-- 1 root root 11785184 Jan  5 23:21 simkai.ttf
[root@liang-00 fonts]# 

配置完成后zabbix图形就能显示正常了。

a432965577ee0cc3aa0936021a659f6b907.jpg

监控项添加。

配置--主机--图像--创建图形

75fda2f38be1f2d046be00c015f6b6be913.jpg

6240a68456dc09795bbf82099f0f23fad30.jpg

 

19.11 自动发现

自动发现规则在,模板中修改相关参数(图形颜色、绘图风格等)。

1e7d3986deec9e6ab3c2a4e4ede3160a6c0.jpg

 

19.12 添加自定义监控项目

自定义监控项目,方便运营人员分析。

1、监控某台机器上80端口的连接数,并绘图

1)第一步、在客户端自定义脚本

#!/bin/bash
##获取80端口并发连接数
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
~                                                                                                                        
~

更改执行权限:

chmod 755 /usr/local/sbin/estab_sh

在客户端上修改zabbix-agent配置文件:/etc/zabbix/zabbix_agentd.conf。
UnsafeUserParameters=1      //表示使用自定义脚本
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh         //自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,如果没有参数则可以省略,脚本为/usr/local/sbin/estab.sh

重启客户端的zabbix-agent

在zabbix服务端验证配置是否成功。

[root@liang-00 ~]# zabbix_get -s 192.168.37.203 -p 10050 -k 'my.estab.count'
0
[root@liang-00 ~]# 

2)第二步、在web监控中添加监控项。

306b489839b6a2ae10fe5c1b0e3f970870c.jpg

a6d979cfeac65c269451101c6c5dcce6f0b.jpg

6364f03062ca09dabec5cd88e08e08508df.jpg

 

我们还可以对并发链接数做一个触发器。

 

4d56bef6d08ab9ae1260a5c294280ff0285.jpg

f195566bac00c7008ca681fe07855199d56.jpg

 

19.13 配置邮件告警

  • 使用163或者QQ邮箱发告警邮件;
  • 首先登录你的163邮箱,设置开启POP3、IMAP、SMTP服务;
  • 开启并记录授权码;
  • 然后到监控中心设置邮件告警;
  • “管理”,“报警媒介类型”,“创建媒体类型”;
  • {ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE};

1、设置自己的邮箱开启POP3、IMAP、SMTP服务,开启并记录授权码:

2、zabbix监控中心设置邮件告警:

管理--报警媒介类型--创建媒体类型

2a9ebbcf510fe8dc8216c6ba0aa631bc7da.jpg

3、在服务端创建报警脚本mail.py

其中mail.py脚本位置由zabbix配置文件定义:

c0a33183890ef24ca7cc53bddfeb3e81787.jpg

内容地址:https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py

#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from  subprocess import *

def sendqqmail(username,password,mailfrom,mailto,subject,content):
    gserver = 'smtp.163.com'
    gport = 25

    try:
        # msg = MIMEText(unicode(content).encode('utf-8')) //如果发送的邮件有乱码,可以尝试把这行改成如下:
        msg = MIMEText(content,'plan','utf-8')
        msg['from'] = mailfrom
        msg['to'] = mailto
        msg['Reply-To'] = mailfrom
        msg['Subject'] = subject

        smtp = smtplib.SMTP(gserver, gport)
        smtp.set_debuglevel(0)
        smtp.ehlo()
        smtp.login(username,password)

        smtp.sendmail(mailfrom, mailto, msg.as_string())
        smtp.close()
    except Exception,err:
        print "Send mail failed. Error: %s" % err

 
def main():
    to=sys.argv[1]
    subject=sys.argv[2]
    content=sys.argv[3]
##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)
    sendqqmail('zhexiansql@163.com','##########','zhexiansql@163.com',to,subject,content)

if __name__ == "__main__":
    main()

修改权限:

chmod 755 mail.py

4、测试接收告警邮件。

python mail.py zhexiansql@163.com "alert-test" "chenggogjieshou"

python mail.py zhexiansql@163.com "alert-test1" "chenggogjieshou"

84b1d7dfb1a01ff669fa28baebe7291a54a.jpg

 

5、创建报警用户

创建一个接受告警邮件的用户,“管理”,“用户”,“创建用户”,“报警媒介”,类型选择“baojing-email”,注意用户的权限,如果没有需要到用户组去设置权限

1)用户配置

7ab4653adf798e9e0bb4a20ee709db14554.jpg

8d652a439584cebb4de7a25e79a37b345cb.jpg

权限要先在用户群组中先设置。

e01f68d083fedeb35fdb1e43c203b63ea3d.jpg

检查创建的报警用户有无错误。

2)动作配置,具体的行为配置,触发器触发后的行为。

7af024c653c802a82259e5be2585d247d06.jpg

63a8e8d4866cd23ed0b71fb1f77e58b5dd0.jpg

5cb163fe901b16c8215c4c0b79ec4dec0cf.jpg

fc5bacba7ff339e4e9a9b25d176a20c2798.jpg

7b079fd9dea0b83ba5f089007aa0297cd57.jpg

创建完成后的状态。

68aeb632d1634b3321179e277e217f8c5bc.jpg

 

19.15-19.6 测试告警和不发送邮件问题排查

为了测试方便我们创建一个自定义触发器。

050e579a0de23b1094bff19544ff6cc4823.jpg

等待告警触发

cd225b146bfd5107b8c7e3d797eaa29d058.jpg

收到邮件。

4ff148f00c493e4f9ea126d0e0debc4310a.jpg

恢复后收到恢复邮件。

5e5a0c2746218d45bfc83bfd36766e667d8.jpg

 

扩展:

zabbix监控交换机(思科) http://tryrus.blog.51cto.com/10914693/1789847
zabbix远程执行命令 http://www.ywnds.com/?p=6610
zabbix分布式部署 http://sfzhang88.blog.51cto.com/4995876/1364399
zabbix监控tomcat(版本有点老,大家只需要参考步骤,不能照搬) http://www.fblinux.com/?p=616

 

转载于:https://my.oschina.net/u/3993922/blog/2998086

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《JVM调优工具命令详解》是一份预习资料,主要介绍了Java虚拟机(JVM)调优过程中使用的一些工具命令。这些工具命令可以帮助开发人员诊断和优化JVM的性能问题。 文中首先介绍了常用的JVM调优工具命令,包括jps、jstat、jinfo、jmap、jhat等。这些命令可以用于查看JVM进程信息、统计JVM内存和线程情况、获取JVM配置参数等。通过使用这些工具命令,开发人员可以快速定位JVM性能瓶颈所在,进行优化。 接下来,文中详细介绍了每个工具命令的使用方法和参数解释。例如,jstat命令可以用于查看JVM内存情况,包括堆内存使用量、垃圾回收情况等。而jmap命令可以用于生成堆内存转储文件,帮助开发人员分析内存泄漏问题。通过掌握这些工具命令的使用,开发人员可以更加高效地进行JVM调优。 此外,文中还介绍了一些实际的调优案例,通过使用这些工具命令来解决实际的JVM性能问题。这些案例包括内存泄漏、线程死锁、CPU占用过高等问题。通过学习这些案例,开发人员可以更好地理解如何利用工具命令来诊断和解决JVM性能问题。 总的来说,《JVM调优工具命令详解》是一份非常实用的预习资料,适合那些需要深入学习JVM性能优化的开发人员。通过学习和掌握这些工具命令,开发人员能够更加高效地进行JVM调优,提升应用程序的性能和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值