A. 为什么运维用python
基于Python本身的优点:简单,易学,速度快,免费、开源,高层语言,可移植性,解释性,可扩展性,可嵌入性,丰富的库,独特的语法。Python已经成为现在编程的必备语言。作为“胶水语言”它能够把其他语言制作的各种模块轻松联结在一起。
比起C和java,Python的魅力更为突显,因为完成同一项任务,C语言需要1000行代码,Java只需要100行代码,而Python可能只需要20行就轻松搞定。
相关推荐:《Python入门教程》
Python在系统运维上的优势在于其强大的开发多能力和完整的工业链,它的开发能力远强于各种Shell和Perl,的确通过Shell脚本来实现自动化运维!借助自动化运维来实现大规模集群维护的想法是对的,但由于Shell本身的可编程能力较弱,对很多日常维护中需要的特性支持不够,也没有现成的库可以借鉴,各种功能都需要从头写起,所以说Shell脚本力量不够。
而现Python是更好的选择,Python除了易读易写更兼具面向对象和函数式风格,已经成为IT运维、科学计算、数据处理等领域的主要编译语言。通过系统化的将各种管理工具结合,对各类工具进行二次开发,形成统一的服务器管理系统。
和Python类似的Ruby也很适合编写系统管理软件,但是在相关库和工具上比Python差远了。
让系统易运维管理是一个工程,Python在服务器管理工具上非常丰富:配置管理(Saltstack)、批量执行( Fabric, saltstack)、监控(Zenoss, nagios 插件)、虚拟化管理( Python-libvirt)、进程管理 (Supervisor)、云计算(Openstack)等,大部分系统C库都有Python绑定。
作为一门编程语言,Python几乎可以用在任何领域和场合,自身带有无限可能,担任任何角色。
从国内的豆瓣、搜狐、金山、腾讯、盛大、网易、网络、阿里、淘宝、热酷、薯仔、新浪、到国外的谷歌、NASA、YouTube、Facebook等互联网巨头公司都用Python完成各项任务。
随着云计算技术的发展与成熟,低端运维人员的市场越来越小,甚至是没有市场,因为中小型公司不需要运维,而大公司的门槛高,低端运维没有核心竞争力,会工程开发能力的运维才是大企业喜闻乐见的。
掌握linux技能是一个运维人员的基本,要胜任大公司以企业及的运维工作光会Linux还远远不够。Linux+Python是运维的最佳搭配。
B. 大数据如何入门
首先我们要了解Java语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。
大数据
Java :只要了解一些基础即可,做大数据不需要很深的Java 技术,学java SE 就相当于有学习大数据基础。
Linux:因为大数据相关软件都是在Linux上运行的,所以Linux要学习的扎实一些,学好Linux对你快速掌握大数据相关技术会有很大的帮助,能让你更好的理解hadoop、hive、hbase、spark等大数据软件的运行环境和网络环境配置,能少踩很多坑,学会shell就能看懂脚本这样能更容易理解和配置大数据集群。还能让你对以后新出的大数据技术学习起来更快。
Hadoop:这是现在流行的大数据处理平台几乎已经成为大数据的代名词,所以这个是必学的。Hadoop里面包括几个组件HDFS、MapRece和YARN,HDFS是存储数据的地方就像我们电脑的硬盘一样文件都存储在这个上面,MapRece是对数据进行处理计算的,它有个特点就是不管多大的数据只要给它时间它就能把数据跑完,但是时间可能不是很快所以它叫数据的批处理。
Zookeeper:这是个万金油,安装Hadoop的HA的时候就会用到它,以后的Hbase也会用到它。它一般用来存放一些相互协作的信息,这些信息比较小一般不会超过1M,都是使用它的软件对它有依赖,对于我们个人来讲只需要把它安装正确,让它正常的run起来就可以了。
Mysql:我们学习完大数据的处理了,接下来学习学习小数据的处理工具mysql数据库,因为一会装hive的时候要用到,mysql需要掌握到什么层度那?你能在Linux上把它安装好,运行起来,会配置简单的权限,修改root的密码,创建数据库。这里主要的是学习SQL的语法,因为hive的语法和这个非常相似。
Sqoop:这个是用于把Mysql里的数据导入到Hadoop里的。当然你也可以不用这个,直接把Mysql数据表导出成文件再放到HDFS上也是一样的,当然生产环境中使用要注意Mysql的压力。
Hive:这个东西对于会SQL语法的来说就是神器,它能让你处理大数据变的很简单,不会再费劲的编写MapRece程序。有的人说Pig那?它和Pig差不多掌握一个就可以了。
Oozie:既然学会Hive了,我相信你一定需要这个东西,它可以帮你管理你的Hive或者MapRece、Spark脚本,还能检查你的程序是否执行正确,出错了给你发报警并能帮你重试程序,最重要的是还能帮你配置任务的依赖关系。我相信你一定会喜欢上它的,不然你看着那一大堆脚本,和密密麻麻的crond是不是有种想屎的感觉。
Hbase:这是Hadoop生态体系中的NOSQL数据库,他的数据是按照key和value的形式存储的并且key是唯一的,所以它能用来做数据的排重,它与MYSQL相比能存储的数据量大很多。所以他常被用于大数据处理完成之后的存储目的地。
Kafka:这是个比较好用的队列工具,队列是干吗的?排队买票你知道不?数据多了同样也需要排队处理,这样与你协作的其它同学不会叫起来,你干吗给我这么多的数据(比如好几百G的文件)我怎么处理得过来,你别怪他因为他不是搞大数据的,你可以跟他讲我把数据放在队列里你使用的时候一个个拿,这样他就不在抱怨了马上灰流流的去优化他的程序去了,因为处理不过来就是他的事情。而不是你给的问题。当然我们也可以利用这个工具来做线上实时数据的入库或入HDFS,这时你可以与一个叫Flume的工具配合使用,它是专门用来提供对数据进行简单处理,并写到各种数据接受方(比如Kafka)的。
Spark:它是用来弥补基于MapRece处理数据速度上的缺点,它的特点是把数据装载到内存中计算而不是去读慢的要死进化还特别慢的硬盘。特别适合做迭代运算,所以算法流们特别稀饭它。它是用scala编写的。Java语言或者Scala都可以操作它,因为它们都是用JVM的。
C. Java如何监控Linux系统。
啥叫监控linux系统?
写java程序执行linux命令?
try {
String command = "ping localhost";
Process ps = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(ps
.getInputStream()));
String line;
System.out.println("------------------------");
while ((line = br.readLine()) != null) {
System.out.println(line);
}
System.out.println("------------------------");
} catch (Exception e) {
e.printStackTrace();
}
执行结果:
------------------------
Pinging xxx [127.0.0.1] with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
------------------------
修改对应的command就应该可以了 不知道你是不是这个需求?
D. 如何设计一个mysql性能监控的软件
首先介绍下 pt-stalk,它是 Percona-Toolkit 工具包中的一个工具,说起 PT 工具包大家都不陌生,平时常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自于这个工具包,这里就不多介绍了。
pt-stalk 的主要功能是在出现问题时收集 OS 及 MySQL 的诊断信息,这其中包括:
1. OS 层面的 CPU、IO、内存、磁盘、网络等信息;
2. MySQL 层面的行锁等待、会话连接、主从复制,状态参数等信息。
而且 pt-stalk 是一个 Shell脚本,对于我这种看不懂 perl 的人来说比较友好,脚本里面的监控逻辑与监控命令也可以拿来参考,用于构建自己的监控体系。
三、使用
接着我们来看下如何使用这个工具。
pt-stalk 通常以后台服务形式监控 MySQL 并等待触发条件,当触发条件时收集相关诊断数据。
触发条件相关的参数有以下几个:
function:
∘默认为 status,代表监控 SHOW GLOBAL STATUS 的输出;
∘也可以设置为 processlist,代表监控 show processlist 的输出;
variable:
∘默认为 Threads_running,代表 监控参数,根据上述监控输出指定具体的监控项;
threshold:
∘默认为 25,代表 监控阈值,监控参数超过阈值,则满足触发条件;
∘监控参数的值非数字时,需要配合 match 参数一起使用,如 processlist 的 state 列;
cycles:
∘默认为 5,表示连续观察到五次满足触发条件时,才触发收集;
连接参数:host、password、port、socket。
其他一些重要参数:
iterations:该参数指定 pt-stalk 在触发收集几次后退出,默认会一直运行。
run-time:触发收集后,该参数指定收集多长时间的数据,默认 30 秒。
sleep:该参数指定在触发收集后,sleep 多久后继续监控,默认 300 秒。
interval:指定状态参数的检查频率,判断是否需要触发收集,默认 1 秒。
dest:监控数据存放路径,默认为 /var/lib/pt-stalk。
retention-time :监控数据保留时长,默认 30 天。
daemonize:以后台服务运行,默认不开启。
log:后台运行日志,默认为 /var/log/pt-stalk.log。
collect:触发发生时收集诊断数据,默认开启。
∘collect-gdb:收集 GDB 堆栈跟踪,需要 gdb 工具。
∘collect-strace:收集跟踪数据,需要 strace 工具。
∘collect-tcpmp:收集 tcpmp 数据,需要 tcpmp 工具。
E. java如何对监控Mysql数据库对象是否出现错误
你说的数据库对象时什么不太明白。。。
一般做数据库监控都是定时执行一条简单的sql就OK了
类似:
select(0)fromtest;
不过这个功能很多有数据源的服务,或者监控系统都实现了。
weblogic、nagios啥的都有这个功能,自己配一下就行。
数据库监控端口也行,定时telnet