bt365体育投注.主頁欢迎您!!

    <acronym id="zvmrr"></acronym>
    <td id="zvmrr"></td>
  • <tr id="zvmrr"><label id="zvmrr"></label></tr>
  • <acronym id="zvmrr"></acronym>
  • 民工哥

    民工哥 查看完整档案

    其它编辑  |  填写毕业院校不知名互联网企业  |  不知名程序员 编辑 github.com/mingongge 编辑
    编辑

    民工哥,10多年职场老司机的经验分享,坚持自学一路从技术小白成长为互联网企业信息技术部门的负责人。

    我的新书:《Linux系统运维指南》

    微信公众号:民工哥技术之路

    民工哥:知乎专栏

    欢迎关注,我们一同交流,相互学习,共同成长!!

    个人动态

    民工哥 发布了文章 · 今天 17:08

    程序员常用资源工具集合(建议收藏)

    搜索资源网站

    学习技术过程我们经常需要使用搜索引擎来检索资料,国内常用的也就是某度了。

    当然有条件的话,搜索引擎首先还是推荐使用 Google,如果没办法使用,可以使用以下几个作为备用:

    Bing

    Bing 国际版:https://cn.bing.com/

    比某度好用,之前还被停用了几天,最近可以了。

    DuckDuckGo

    DuckDuckGo:https://duckduckgo.com/

    从官网的介绍来看这个搜索引擎不收集用户信息,而且没有广告。

    Stack Overflow

    Stack Overflow:https://stackoverflow.com/

    我们如果常用 Google,很多技术问题的答案就在这个网站上,如果你无法使用 Google 可以在这个网站上直接检索就好了。

    Gitlogs

    Gitlogs:https://www.gitlogs.com/

    Gitlogs 是专门针对 GitHub 项目的搜索引擎,我们通过他可以快速找到想要项目。

    jiumo search

    文档搜索引擎 jiumo search 鸠摩搜书:https://www.jiumodiary.com/

    可以用来找一些技术文档手册,很多在百度网盘里。

    Ebooke

    Ebooke:https://ebookee.org/

    Ebookee 是一个基于互联网并提供免费电子图书下载的搜索引擎网站。

    Iconfinder

    图标搜索:https://www.iconfinder.com/

    用来查找 logo 图片。

    TinEye

    TinEye:https://www.tineye.com

    用图片来检索图片,我们可以上传图片或输入图片的 URL 来检索。

    SemanticScholar

    SemanticScholar:https://www.semanticscholar.org/

    SemanticScholar 是一个免费学术搜索引擎,其检索结果来自于期刊、学术会议资料或者是学术机构的文献。

    LibreStock

    LibreStock:https://librestock.com/

    LibreStock 上可以检索一些优质的高清图片。

    CC Search

    CC Search:https://ccsearch.creativecomm...

    CC Search 上搜索到的图片资源都是无版权的,我们可以免费的使用。

    Pexels

    Pexels:https://www.pexels.com/

    高质量的图片网站,可以免费使用。

    Unsplash

    Unsplash:https://unsplash.com/

    免费高清素材网站。

    The App Store

    The App Store:https://theappstore.org/

    The App Store 是一个针对苹果手机、iPad、Mac 设备的应用搜索工具。

    工具类

    图片相关工具

    TinyPNG:https://tinypng.com/

    免费的在线图片压缩工具,压缩率高,无损画质,直接拖拽使用,很方便。

    picdiet:https://www.picdiet.com/zh-cn

    独特且强悍的JavaScript 算法,能极速压缩 80% 的图片大小,而不损害其质量。

    SmartResize:

    https://www.smartresize.com/z...

    这个工具基于 javascript+HTML5 编写而成的,是一个批量裁剪缩放图片的神器!

    正则表达式相关工具

    以下两个工具以图形的方式来展示正则表达式,更易于理解:

    https://regexr.com/

    https://jex.im/regulex/#!flag...*%3F%24

    文件转换转换工具

    以下资源支持各种格式(PDF、图片、Word)相互转换。

    https://smallpdf.com/cn

    https://convertio.co/zh/

    https://www.online-convert.com/

    https://www.pdftoword.com/

    https://tools.pdf24.org/zh/

    https://cn.office-converter.com/

    在线编译器

    包含前后端(php、java、c等)都可以在线运行测试

    https://rextester.com/

    https://www.onlinegdb.com/

    https://c.runoob.com/

    HTML、CSS、JS、设计类的工具

    JSFiddle: https://jsfiddle.net/

    CodePen: https://codepen.io/

    Runoob: https://c.runoob.com/front-en...

    JSON 解析器: https://c.runoob.com/front-en...

    在线 PS: http://www.kantu.com/

    表格转换工具: https://tableconvert.com/

    支持的 Markdown、HTML table、CSV 和 Excel 的相互转换。

    DesignCap: https://www.designcap.com/

    在线设计海报,内置众多模板及素材。

    思维导图工具

    推荐几款绘图工具:

    Xmind:https://www.xmind.cn/

    跨平台、跨终端,拥有全功能的思维导图软件。

    ProcessOn:https://www.processon.com/

    免费在线作图,实时协作,支持流程图、思维导图、原型图、UML、网络拓扑图、组织结构图等。

    MindMaster:https://www.edrawsoft.cn/mind...

    多平台思维导图软件,可用于Windows,Mac和Linux等桌面环境,也可以在线使用或在苹果,安卓等移动端上使用。

    MindMeister:https://www.mindmeister.com/zh

    在线思维导图工具,已有超过1000万个用户。

    百度脑图:http://naotu.baidu.com/ 简洁的在线思维导图工具

    Gliffy:https://www.gliffy.com/

    我们可以在 Chrome 浏览器上安装 gliffy 插件。

    可以在线创建流程图、UML图、线框图、BPNM、组织架构图等。

    文档笔记平台

    推荐几个常用的国内外云笔记平台,比较常用的应该是印象、有道、石墨,有一些国外的访问速度比较慢,影响体验。

    现在用云笔记的人应该蛮多的,可以总结归纳自己的一些知识储备或者相关的业务资料,加上他们自带的跨平台特性,用起来还是很方便的。

    印象笔记:https://www.yinxiang.com/

    有道笔记:https://note.youdao.com/

    OneNote:https://www.onenote.com/

    幕布:https://mubu.com/

    为知笔记:https://www.wiz.cn/

    石墨文档:https://shimo.im/

    Google keep:https://keep.google.com/

    Simplenote:https://simplenote.com/

    作者:康华
    链接:http://rrd.me/emdDq

    image

    查看原文

    赞 4 收藏 4 评论 0

    民工哥 发布了文章 · 12月4日

    Oracle 常用运维命令整理

    一、oracle建库与删库命令

    (1)oracle11g

    建库(一般习惯配置gdbname与sid名一样,sys密码与system密码一样,以方便记忆)

    [oracledb@?~]$?dbca?-silent?-createDatabase?-templateName?/u01/oracle/product/11.2.0/dbhome_1/assistants/dbca/templates/General_Purpose.dbc?-gdbname?GDBNAME?-sid?SIDNAME?-characterSet?AL32UTF8?-NATIONALCHARACTERSET?UTF8?-sysPassword?SYSPASSWORD?-systemPassword?SYSTEMPASSWORD?-TOTALMEMORY?2048
    

    删库方法一:

    [oracledb@?~]$?dbca?-silent?-deleteDatabase?-sourceDB??SIDNAME?-sysDBAUserName?sys?-sysDBAPassword?SYSPASSWORD
    

    删除库方法二:

    #步骤1:配置回应文件:
    [oracledb@?~]$?cat?/u01/oracle/response/dbca.rsp
    OPERATION_TYPE?=?"deleteDatabase"
    SOURCEDB?=?"SIDNAME"
    SYSDBAUSERNAME?=?"sys"
    SYSDBAPASSWORD?=?"SYSPASSWORD"
    #步骤2:执行回应文件删库:
    [oracledb@?~]$?dbca?-silent?-responseFile?/u01/oracle/response/dbca.rsp
    

    (2)oracle12c ?建库

    [oracledb@?~]$?dbca?-silent?-createDatabase?-templateName?/u01/oracle/product/orahome/assistants/dbca/templates/General_Purpose.dbc??-gdbname?GDBNAME?-sid?SIDNAME?-characterSet?AL32UTF8?-NATIONALCHARACTERSET?UTF8?-sysPassword?SYSPASSWORD?-systemPassword?SYSTEMPASSWORD?-TOTALMEMORY?2048
    #删库命令同上,注意运行删库命令之后,需要手动删除遗留的目录
    

    (3)删除一般会自动删除以下路径或文件中的库信息

    A:/u01/oracle/admin/SIDNAME
    B:cat /etc/oratab
    C:/u01/oracle/oradata/SIDNAME
    

    以下路径需要手动清理

    D:/u01/oracle/cfgtoollogs/dbca/SIDNAME
    E:/u01/oracle/diag/rdbms/SIDNAME
    F:/u01/oracle/product/11.2.0/dbhome_1/dbs/hc_SIDNAME.dat
    

    二、创建库对应的账号密码

    1、切换SID

    [oracledb@?~]$?export?ORACLE_SID=SIDNAME
    

    2、切换字符集

    #查看oracle数据库的字符集
    SQL>?select?userenv('language')?from?dual;
    #查看oracle数据库的编码
    SQL>?select?*?from?nls_database_parameters?where?parameter?='NLS_CHARACTERSET';
    [oracledb@?~]$?set?NLS_LANG=AMERICAN_AMERICA.AL32UTF8?????#windows_os
    [oracledb@?~]$?export?NLS_LANG=AMERICAN_AMERICA.AL32UTF8??#linux_os
    

    3、创建库对应的用户信息

    SQL>?create?temporary?tablespace?SIDNAME_temp?tempfile?'/u01/oracle/oradata/SIDNAME/SIDNAME_temp.dbf?'size?64m?autoextend?on?next?64m?maxsize?unlimited?extent?management?local;
    SQL>?create?tablespace?SIDNAME_data?logging?datafile?'/u01/oracle/oradata/SIDNAME/SIDNAME_data.dbf'?size?64m?autoextend?on?next?64m?maxsize?2048m?extent?management?local;
    SQL>?create?user?USERNAME?identified?by?USERPASSWORD?default?tablespace?SIDNAME_data?temporary?tablespace?SIDNAME_temp;
    SQL>?grant?connect,resource?to?USERNAME;
    SQL>?grant?create?view?to?USERNAME;
    SQL>?grant?unlimited?tablespace?to?USERNAME;
    SQL>?grant?create?public?synonym?to?USERNAME;
    SQL>?grant?drop?public?synonym?to?USERNAME;
    SQL>?create?or?replace?directory?dir_dump??as?'/u01/oracle/backup';
    SQL>?grant?read,write?on?directory?dir_dump?to?USERNAME;
    SQL>?ALTER?PROFILE?DEFAULT?LIMIT?PASSWORD_LIFE_TIME?UNLIMITED;
    

    —根据实例环境修改processes与sessions参数值(需要重启oracle数据库)

    SQL>?alter?system?set?processes=1000?scope=spfile;??
    SQL>?alter?system?set?sessions=1105?scope=spfile; 

    知识点:

    • oracle11g:sessions值的定义应该大于或者定于1.1processes+5,如果小于1.1processes+5,则oracle在启动时自动将该参数设置为1.1processes+5。这主要是考虑到后台进程发起的session和大约10%的递归session。
    • oracle12c:1.1processes+22
    #查询当前oracle的并发连接数:
    SQL>?select?count(*)?from?v$session?where?status='ACTIVE';
    #查看不同用户的连接数:
    SQL>?select?username,count(username)?from?v$session?where?username?is?not?null?group?by?username;
    #查看所有用户:
    select?*?from?all_users;
    #当前的连接数
    select?count(*)?from?v$process;
    #数据库允许的最大连接数
    select?value?from?v$parameter?where?name?=?'processes';
    

    三、数据库的还原与备份命令

    查看expdp导出备份存储路径:

    sql>?select?*?from?dba_directories;
    

    1、针对整个库备份与还原操作

    • (1)、数据库的备份(注意有时SIDNAME与SCHEMASNAME不一致,要注意使用时区分,一般配置一样的名称,方便记忆的同时,也方便运维。parallel参数根据服务器内存等配置情况添加合理的数值。)
    #备份:
    [oracledb@?~]$??expdp?USERNAME/USERPASSWORD@SIDNAME?schemas=SCHEMASNAME?dumpfile=SIDNAME`date?+%Y%m%d`.dmp?directory=dir_dump?parallel=2
    12
    
    • (2)、还原

    情况1、原始库与目标库实例名不同(注意有些环境的数据表空间名不是SIDNAME_data,使用时注意核实)

    #格式:
    [oracledb@?~]$?impdp?USERNAME/USERPASSWORD@SIDNAME?schemas=SCHEMASNAME?DUMPFILE=XXXX.dmp??DIRECTORY=dir_dump?remap_schema=源SCHEMASNAME:目标SCHEMASNAME?remap_tablespace=源_data:目标_data
    

    情况2:源库与目标库实例名相同

    #格式:
    [oracledb@?~]$?impdp?USERNAME/USERPASSWORD@SIDNAME?schemas=SCHEMASNAME?DUMPFILE=XXXX.dmp??DIRECTORY=dir_dump?EXCLUDE=STATISTICS 

    知识扩展:使用EXCLUDE=STATISTICS还原时排除统计,可以使用如下命令完成统计

    #命令如下:
    SQL>?exec?dbms_stats.gather_schema_stats(ownname=>'SIDNAME',estimate_percent=>10,degree=>8,cascade=>true,granularity=>'ALL');
    

    2、针对单表备份与还原操作

    • (1)、备份单表
    格式:
    [oracledb@?~]$?expdp?USERNAME/USERPASSWORD@SIDNAME?dumpfile=tablenameXXXX.dmp?DIRECTORY=dir_dump?tables=TABLENAME
    
    • (2)、还原单表
    #格式:
    [oracledb@?~]$?impdp?USERNAME/USERPASSWORD@SIDNAME?dumpfile=tablenameXXXX.dmp?DIRECTORY=dir_dump?TABLES=TABLENAME?TABLE_EXISTS_ACTION=REPLACE
    

    扩展:table_exists_action参数说明

    使用imp进行数据导入时,若表已经存在,要先drop掉表,再进行导入。
    而使用impdp完成数据库导入时,若表已经存在,有四种的处理方式:
    参数(1) skip:默认操作
    参数(2) replace:先drop表,然后创建表,最后插入数据
    参数(3) append:在原来数据的基础上增加数据
    参数(4) truncate:先truncate,然后再插入数据
    
    • (3)备份多张表
    #格式:
    [oracledb@?~]$?expdp?USERNAME/USERPASSWORD@SIDNAME?dumpfile=tablenameXXXX.dmp?DIRECTORY=dir_dump?TABLES=源TABLENAME1,源TABLENAME2,.....
    
    • (4)还原多张表
    #格式:
    [oracledb@?~]$?impdp?USERNAME/USERPASSWORD@SIDNAME?dumpfile=tablenameXXXX.dmp?DIRECTORY=dir_dump?remap_table=源TABLENAME1:目标TABLENAME11?TABLE_EXISTS_ACTION=REPLACE
    [oracledb@?~]$?impdp?USERNAME/USERPASSWORD@SIDNAME?dumpfile=tablenameXXXX.dmp?DIRECTORY=dir_dump?remap_table=源TABLENAME2:目标TABLENAME22?TABLE_EXISTS_ACTION=REPLACE
    

    3、扩展知识

    • 1)扩展1:

    情况1、高版本往低版本导出还原时,如12往11还原时,在12c执行导出时,添加低版本的版本号version=11.1.0.2.0

    #格式:
    [oracledb@?~]$?expdp?USERNAME/USERPASSWORD@SIDNAME?schemas=SCHEMASNAME?dumpfile=XXX.dmp?DIRECTORY=dir_dump?version=11.1.0.2.0
    

    情况2、低版本往高版本还原时,高版本一般兼容低版本,目前个人运维工作中11往12还原没遇到什么问题。

    • 2)扩展2:

    (1)、按指定大小备份,如每份5G大小(parallel是多线程处理,线程数要小于生成文件个数,线程要小于 cpu 线程数)

    #备份格式
    [oracledb@?~]$?expdp?USERNAME/USERPASSWORD@SIDNAME?schemas=SCHEMASNAME?DIRECTORY=dir_dump?dumpfile=XXX_%U.dmp?logfile=expdpXXX.log?filesize=5G?parallel=16
    

    (2)、多个备份文件还原:

    #还原格式
    [oracledb@?~]$?impdp?USERNAME/USERPASSWORD@SIDNAME?schemas=SCHEMASNAME?DIRECTORY=dir_dump?dumpfile=XXX_%U.dmp?logfile=impdpXXX.log?parallel=16
    

    3)扩展3

    导出过滤不导出某张表:

    #格式
    [oracledb@?~]$?expdp?USERNAME/USERPASSWORD@SIDNAME?schemas=SCHEMASNAME?DIRECTORY=dir_dump?dumpfile=XXX.dmp??exclude=TABLE:"IN?'TABLENAME'" 

    4)扩展4

    不同库还原时不改变数据结构使用truncate参数:

    #格式
    [oracledb@?~]$?impdp?USERNAME/USERPASSWORD@SIDNAME?schemas=SCHEMASNAME?DIRECTORY=dir_dump?dumpfile=XXX.dmp?remap_schema=源SCHEMASNAME:目标SCHEMASNAME?remap_tablespace=源_data:目标_data?TABLE_EXISTS_ACTION=truncate
    

    5)扩展5

    导出备份时保留表,清除表数据(query参数):

    #格式
    [oracledb@?~]$?expdp?USERNAME/USERPASSWORD@SIDNAME?schemas=SCHEMASNAME?DIRECTORY=dir_dump?dumpfile=XXX.dmp?logfile=expdpXXX.log??query=TABLENAME1:'"?where?1=2"',TABLENAME2:'"?where?1=2"',........
    

    6)扩展6

    导出备份时保留表,清除表数据,同时过滤某两张表

    #格式
    [oracledb@?~]$?expdp?USERNAME/USERPASSWORD@SIDNAME?schemas=SCHEMASNAME?DIRECTORY=dir_dump?dumpfile=XXX.dmp?logfile=expdpXXX.log??query=TABLENAME1:'"?where?1=2"',TABLENAME2:'"?where?1=2"'?exclude=TABLE:"IN?'TABLENAME1''TABLENAME2'"
    

    7)扩展7

    仅统计数据库各表数据,但不导出,参数estimate_only=y

    #格式
    [oracledb@?~]$?expdp?USERNAME/USERPASSWORD@SIDNAME?schemas=SCHEMASNAME?DIRECTORY=dir_dump?estimate_only=y
    

    8)扩展8

    导入单表到某临时表:

    #格式(涉及统计与索引时添加参数EXCLUDE=STATISTICS?EXCLUDE=INDEX)
    —sql实现从这张表复制到另一张临时表
    SQL>?CREATE?TABLE?目标TABLENAME??AS?(SELECT?*?FROM?源TABLENAME);
    —清空表中的数据
    SQL>?delete??from?目标TABLENAME;
    [oracledb@?~]$?impdp?USERNAME/USERPASSWORD@SIDNAME?DIRECTORY=dir_dump?DUMPFILE=tablenameXXX.dmp?remap_table=源TABLENAME:目标TABLENAME?TABLE_EXISTS_ACTION=REPLACE?EXCLUDE=STATISTICS?EXCLUDE=INDEX
    ?[oracledb@?~]$?expdp?USERNAME/USERPASSWORD@SIDNAME?schemas=SCHEMASNAME?ESTIMATE_ONLY=y?NOLOGFILE=y?FULL=y
    

    9)扩展9

    个别sql脚本内容很长,使用PLSQL Developer工具执行时会一直卡住无响应时除使用PLSQL Developer工具的在命令窗口中执行外,也可以使用shell终端执行

    #格式
    [oracle@localhost?~]$?export?ORACLE_SID=SIDNAME
    [oracle@localhost?~]$?sqlplus??/?as?sysdba
    sql>?conn?USERNAME/USERPASSWORD@SIDNAME
    sql>?@/u01/oracle/backup/XXX.sql
    

    10)扩展10

    如何正确终止expdp与impdp任务,操作步骤如下:

    步骤1、查看视图dba_datapump_jobs
    select?job_name,state?from?dba_datapump_jobs;
    步骤2、正确停止expdp导出任务使用stop_job
    expdp?USERNAME/USERPASSWORD@SIDNAME?attach=SYS_EXPORT_SCHEMA_02
    步骤3、停止任务
    Export>?stop_job=immediate?
    Are?you?sure?you?wish?to?stop?this?job?([yes]/no):?yes??
    步骤4、查看系统中的备份job状态
    select?owner_name,job_name?,state?from?dba_datapump_jobs;
    

    扩展:下列命令在交互模式下有效:

    HELP:?总结交互命令。
    KILL_JOB:?分离和删除作业。
    PARALLEL:?更改当前作业的活动 worker 的数目。
    PARALLEL=.2
    START_JOB:?启动/恢复当前作业。
    START_JOB=SKIP_CURRENT 在开始作业之前将跳过作业停止时执行的任意操作。
    STATUS :在默认值(0)将显示可用时的新状态的情况下,要监视的频率(以秒计)作业状态。
    STATUS[=interval]
    STOP_JOB:?顺序关闭执行的作业并退出客户机。
    STOP_JOB=IMMEDIATE 将立即关闭数据泵作业。
    

    11)扩展11

    #查看DB中的NLS_CHARACTERSET的值
    SQL>?select?*?from?v$nls_parameters??where?parameter='NLS_CHARACTERSET';?
    SQL>?select?*?from?nls_database_parameters?t?where?t.parameter='NLS_CHARACTERSET';
    

    12)扩展12

    关于exp、imp、expdp、impdp

    (1)、exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
    (2)、expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用。
    (3)、imp只适用于exp导出的文件,不适用于expdp导出文件;impdp只适用于expdp导出的文件,而不适用于exp导出文件。
    (4)、对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出。
    

    13)扩展13

    oracle用户密码有@符号时,expdp与sqlplus连接方式及使用rar压缩备份的文件

    @echo?off
    rem?----?dmp?backup?directory,?same?as?dump?dir
    set?backup_dir=e:apporaclebackup
    rem?----?today,?day?for?dmp?file?remaining
    set?day=%date:~0,4%%date:~5,2%%date:~8,2%
    set?remain_day=7
    rem?---?delete?files?before?7?days
    forfiles?/p?"%backup_dir%"?/d?-%remain_day%??/c?"cmd?/c?del?/f?@path"
    rem?---?export?oracle?data?to?dmp?file
    expdp?用户名/"xxx@yyy"@orcl?directory=dir_dump?dumpfile=用户名_%day%.dmp?logfile=用户名_%day%.log?schemas=用户名?parallel=4?compression=ALL
    rem?---?sqlplus?conn
    sqlplus?用户名/"""xxx@yyy"""@orcl
    rem?----?if?compress?the?dumpfile?and?delete?source?dumpfile,?unmark?rem
    set?rar="C:Program?Files?(x86)WinRARWinRAR.exe"
    %rar%?a?-df?%backup_dir%用户名_%day%.rar?%backup_dir%用户名_%day%.dmp?%backup_dir%用户名_%day%.log
    

    四、清理(还原时出错,清用户表空间)

    1、删除数据表空间:

    #执行语句:
    [oracledb@?~]$?sqlplus?/?as?sysdba
    SQL>?drop?tablespace?mepro_data?including?contents?and?datafiles?cascade?constraint;
    

    2、删除临时表空间:

    #执行语句:
    SQL>?drop?tablespace?mepro_temp?including?contents?and?datafiles?cascade?constraints;
    

    3、删除用户:

    #执行语句:
    SQL>?drop?user?srmhdld?cascade;
    

    4、报用户正在连接,无法删除的解决方法

    ---方法1:重启并迅速执行drop user语句(个人推荐)
    SQL>?shutdown?immediate;
    SQL>?startup
    ---方法2:删除正在连接的session(连接的session连接着很多时,清理耗时,没有方法1快速)
    #查询用户会话
    SQL>?select?username,serial#,sid,program,machine,status?from?v$session?where?username='USERNAME'?AND?STATUS='ACTIVE';;
    SQL>?select?saddr,sid,serial#,paddr,username,status?from?v$session?where?username?is?not?null;
    ---删除相关用户会话
    SQL>?alter?system?kill?session?'serial#,?sid';
    

    来源:https://www.toutiao.com/a6885...

    image

    查看原文

    赞 3 收藏 2 评论 0

    民工哥 发布了文章 · 12月4日

    免费、小巧的全能 PDF 工具,PDF必备利器!

    PDF Shaper - 强大实用的全能PDF工具箱!这款PDF转换器包含了很多非常实用的PDF功能,

    可以轻松的把 PDF 转成 Word,PDF 转图像,PDF 加密等等。它还可以合并,分割,加密和解密 PDF,

    图像转换为 PDF,PDF 转换为 RTF 或 图像,从 PDF 中提取文本和图像,转换或裁剪已签名的PDF等。

    PDF Shaper,该软件原生免费仅限非商业用途,体积小巧,资源占用低,界面简单易用,支持批处理、支持Unicode文本。

    PDF Shaper 的功能可以说几乎覆盖了日常PDF操作的方方面面,并且它拥有无需安装的便携特性,整个软件虽然功能众多,

    但体积小巧;由于其界面直观优雅,所以无需学习简单易用!实乃PDF工具必备利器!


    安装包给大家下载好了,只需扫下方二维码回复 PDF 即可获取。
    image

    查看原文

    赞 2 收藏 2 评论 0

    民工哥 发布了文章 · 12月4日

    误删文件怎么办?莫慌,这里有解决方案!

    前言

    无论在哪个系统中,删除文件都是必须谨慎的操作。因为如果不小心删除了重要文件,就会导致个人或公司出现重大的损失。类似于windows系统误删了文件,可以使用一些软件进行恢复操作。Linux也是有几款软件可以做到误删恢复的。

    注意事项:虽然有软件可以对误删的数据进行恢复,但是完全恢复数据的概率并不是百分百的。

    因此,使用rm命令删除文件的时候,一定要小心;重要的数据一定要有备份;并且恢复删除的数据前,删除文件的目录内不能往进存放新东西,否则覆盖掉的信息无法找回。

    下面介绍的就是对Linux中误删文件的恢复操作。

    1、lsof

    原理:这个命令实际上并不能直接用来恢复文件,不过它可以列出被各种进程打开的文件信息。

    配合其他命令,从/proc目录下的信息中恢复“文件已删除,但进程仍保持打开该文件的状态”的文件。

    /proc目录是挂载的是在内存中所映射的一块区域,当我们对这些文件进行读取和写入时,实际上是在从内存中获取相关信息。

    因此,当我们对文件进行读取或写入时(即有进程正使用文件时),哪怕硬盘中的该文件已删除,还可以从内存中的信息恢复文件。

    注意:

    • 必须以 root 用户的权限运行, 因为lsof 需要访问核心内存和各种文件。
    • 只能恢复“文件已删除,但进程仍保持打开该文件的状态”的文件。
    • 如果误删了目录,目录中的其他文件未被进程打开,没有进行使用的文件将无法使用此方法恢复。

    lsof输出信息的意义:

    COMMAND???????#进程的PID(进程标识符)
    USER??????????#进程所有者
    FD????????????#用来识别该文件(文件描述符)
    DEVICE????????#指定磁盘的名称
    SIZE??????????#文件的大小
    NODE??????????#索引节点(文件在磁盘上的标识)
    NAME??????????#打开文件的确切名称

    最常用参数:

     `
     -c???????#显示某进程现在打开的文件
    ?-p???????#显示哪些文件被某pid进程打开
    ?-g???????#显示归属某gid的进程情况
    ?-d???????#显示目录下被进程开启的文件
    ?-d???????#显示使用fd为4的进程
    ?-i:80????#显示打开80端口的进程

    恢复文件操作

    环境:在/mnt下有一些文件,其中一个文件train.less正在被查看,然后另一个终端将其删除

    【1】lsof查看

    查看正在使用删除文件的进程号

    lsof?/mnt

    【2】恢复

    切换到/proc下,删除文件对应的进程的pid下的文件描述符中的目录中;将对应的内容重定向或cp到其他文件中。

    重点关注:PID 与 FD

    cd?/proc/31284/fd/
    cat?4?>?/mnt/ferris_train.less

    2、extundelete

    原理:使用存储在分区日志中的信息,尝试恢复已从ext3或ext4的分区中删除的文件

    优点:相比于ext3grep只能恢复ext3文件系统的文件,其适用范围更广,恢复速度更快

    extundelete官方地址(官方文档):http://extundelete.sourceforg...

    extundelete下载地址:http://downloads.sourceforge.... (最新版本的extundelete是0.2.4,于2013年1月发布)

    注意:

    • 在数据删除之后,要卸载被删除数据所在的磁盘或是分区
    • 如果是系统根分区遭到误删除,就要进入单用户模式,将根分区以只读的方式挂载,尽可能避免数据被覆盖
    • 数据被覆盖后无法找回
    • 恢复仍有一定的机率失败,平时应对重要数据作备份,小心使用rm

    安装

    1、依赖安装

    #centos安装操作
    yum?install?e2fsprogs-devel???e2fsprogs*?gcc*
    #ubuntu安装操作
    apt-get?install?build-essential??e2fslibs-dev??e2fslibs-dev

    2、编译安装

    wget?http://downloads.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
    tar?xf??extundelete-0.2.4.tar.bz2
    cd??extundelete-0.2.4
    ./configure
    make
    make?install

    cd?/root/extundelete-0.2.4/src

    extundelete?-v

    • 执行make命令会在src目录下生成extundelete可执行文件,可在此直接执行恢复命令。
    • 执行make install会将程序安装在/usr/local/bin/下

    恢复文件操作

    执行extundelete命令的当前目录必须是可写的。

    1、查看要恢复文件的分区的文件系统

    df??-Th

    2、对要恢复文件的分区解除挂载

    umount?/mnt

    3、查看可以恢复的数据

    指定误删文件的分区进行查找,最后一列标记为Deleted的文件,即为删除了的文件。

    extundelete?/dev/vdb1?--inode?2?(根分区的inode值是2)

    4、恢复单个目录

    指定要恢复的目录名,如果是空目录,则不会恢复。

    extundelete?/dev/vdb1?--restore-directory??ferris

    当执行恢复文件的命令后,会在执行命令的当前的目录下生成RECOVERED_FILES目录,恢复的文件都会放入此目录中。如未生成目录,即为失败。

    5、恢复单个文件

    指定要恢复的文件名,如果几k大小的小文件,有很大几率恢复失败。

    extundelete?/dev/vdb1?--restore-file?openssh-7.7p1.tar.gz

    6、恢复全部删除的文件

    无需指定文件名或目录名,恢复全部删除的数据。

    extundelete?/dev/vdb1?--restore-all

    作者:漠效
    _原文:https://blog.csdn.net/GX_1_11...

    image

    查看原文

    赞 0 收藏 0 评论 0

    民工哥 发布了文章 · 12月3日

    牛逼!竟然用一个脚本就把系统升级到 https了,还永久免费

    正文

    现在很多站长都会考虑将自己的站点从http升级到https,不仅是基于安全的考虑,有的也是因为第三方平台的限制,如谷歌浏览器会将http站点标记为不安全的站点,微信平台要求接入的微信小程序必须使用https等。

    那如何将一个http站点升级为https站点呢?

    http与https的区别

    为了数据传输的安全,https在http的基础上加入了ssl协议,ssl协议依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。要想将http升级为https,只需要给http站点增加一个CA证书即可。

    目前获取CA证书有两种途径:

    • 购买收费的CA证书
    • 获取免费的证书 收费的CA证书各大服务提供商都有卖,如阿里云、腾讯云等。收费的证书不便宜,从阿里云官方网站看,它的价格可以从几千元到上万元不等。

    这对于小公司平台,甚至是个人站点来说,是一个不小的开支。

    Letsencrypt是一个免费、自动化和开放的证书颁发机构,其颁发的证书一次有效期为三个月,但是只要能持续更新,基本可以永久使用。

    今天推荐的这个脚本acme.sh,实现了 acme 协议, 可以帮你持续自动从Letsencrypt更新CA证书。下载地址如下:

    https://github.com/Neilpang/acme.sh
    

    安装 acme.sh

    安装acme.sh很简单,一个命令即可:

    curl?get.acme.sh?|?sh
    

    普通用户和 root 用户都可以安装使用。安装过程进行了以下几步:

    1、把acme.sh安装到你的home目录下:

    ~/.acme.sh/
    

    并创建 一个 bash 的 alias,方便你使用:alias acme.sh=~/.acme.sh/acme.sh

    2、自动为你创建 cronjob,每天 0:00 点自动检测所有的证书。如果快过期了,需要更新,则会自动更新证书,安装过程不会污染已有的系统任何功能和文件,所有的修改都限制在安装目录中:

    ~/.acme.sh/
    

    生成证书

    acme.sh 实现了 acme 协议支持的所有验证协议, 一般有两种方式验证:http 和 dns 验证。

    1、http 方式,需要在你的网站根目录下放置一个文件, 来验证你的域名所有权,完成验证,然后就可以生成证书了。

    acme.sh?--issue?-d?mydomain.com?-d?www.mydomain.com?--webroot?/home/wwwroot/mydomain.com/
    

    acme.sh 会全自动的生成验证文件, 并放到网站的根目录,然后自动完成验证。最后会聪明的删除验证文件,整个过程没有任何副作用。

    如果你用的是apache服务器,acme.sh 还可以智能的从 apache的配置中自动完成验证,你不需要指定网站根目录:

    acme.sh?--issue?-d?mydomain.com?--apache
    

    如果你用的是nginx服务器,或者反代,acme.sh还可以智能的从 nginx的配置中自动完成验证,你不需要指定网站根目录:

    acme.sh?--issue?-d?mydomain.com?--nginx
    

    注意:无论是 apache 还是 nginx 模式,acme.sh在完成验证之后,会恢复到之前的状态,都不会私自更改你本身的配置。好处是你不用担心配置被搞坏,但也有一个缺点,你需要自己配置 ssl 的配置,否则,只能成功生成证书,你的网站还是无法访问https。但是为了安全,你还是自己手动改配置吧。

    如果你还没有运行任何 web 服务,80 端口是空闲的, 那么 acme.sh 还能假装自己是一个webserver, 临时听在80 端口,完成验证:

    acme.sh?--issue?-d?mydomain.com?--standalone
    

    2、dns方式,在域名上添加一条 txt 解析记录,验证域名所有权。

    这种方式的好处是,你不需要任何服务器,不需要任何公网 ip,只需要 dns 的解析记录即可完成验证。不过,坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。

    acme.sh?--issue?--dns?-d?mydomain.com
    

    然后,acme.sh 会生成相应的解析记录显示出来,你只需要在你的域名管理面板中添加这条 txt 记录即可。

    等待解析完成之后, 重新生成证书:

    acme.sh?--renew?-d?mydomain.com
    

    注意:第二次这里用的是 --renew

    dns 方式的真正强大之处在于可以使用域名解析商提供的 api 自动添加 txt 记录完成验证。

    acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成。

    copy/安装 证书

    前面证书生成以后,接下来需要把证书 copy 到真正需要用它的地方。

    注意:默认生成的证书都放在安装目录下:~/.acme.sh/,请不要直接使用此目录下的文件。例如,不要直接让 nginx/apache 的配置文件使用这下面的文件。这里面的文件都是内部使用,而且目录结构可能会变化。

    正确的使用方法是使用 --installcert 命令,并指定目标位置,然后证书文件会被copy到相应的位置,例如:

    acme.sh?--installcert?-d?<domain>.com?
    --key-file?/etc/nginx/ssl/<domain>.key?
    --fullchain-file?/etc/nginx/ssl/fullchain.cer?
    --reloadcmd?"service?nginx?force-reload"
    

    一个小提醒,这里用的是service nginx force-reload,不是service nginx reload,据测试, reload并不会重新加载证书,所以用的force-reload。

    Nginx的配置ssl_certificate使用/etc/nginx/ssl/fullchain.cer,而非/etc/nginx/ssl/.cer ,否则SSL Labs的测试会报Chain issues Incomplete错误。

    --installcert命令可以携带很多参数,来指定目标文件。并且可以指定 reloadcmd, 当证书更新以后,reloadcmd会被自动调用,让服务器生效。

    值得注意的是,这里指定的所有参数都会被自动记录下来,并在将来证书自动更新以后,被再次自动调用。

    更新证书

    目前证书在 60 天以后会自动更新,你无需任何操作。今后有可能会缩短这个时间,不过都是自动的,你不用关心。

    更新 acme.sh

    目前由于 acme 协议和 Letsencrypt CA 都在频繁的更新,因此 acme.sh 也经常更新以保持同步。

    升级 acme.sh 到最新版 :

    acme.sh?--upgrade
    

    如果你不想手动升级, 可以开启自动升级:

    acme.sh?--upgrade?--auto-upgrade
    

    之后, acme.sh 就会自动保持更新了。

    你也可以随时关闭自动更新:

    acme.sh?--upgrade?--auto-upgrade?0
    

    出错怎么办:如果出错, 请添加 debug log:

    acme.sh?--issue?.....?--debug
    或者:
    acme.sh?--issue?.....?--debug?2
    

    链接:https://www.toutiao.com/i6674...

    image

    查看原文

    赞 10 收藏 9 评论 0

    民工哥 发布了文章 · 12月3日

    简单、易用的 MySQL 官方压测工具,建议收藏!

    一、MySQL自带的压力测试工具 Mysqlslap

    mysqlslap是mysql自带的基准测试工具,该工具查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较。mysqlslap为mysql性能优化前后提供了直观的验证依据,系统运维和DBA人员应该掌握一些常见的压力测试工具,才能准确的掌握线上数据库支撑的用户流量上限及其抗压性等问题。

    1、更改其默认的最大连接数

    在对MySQL进行压力测试之前,需要更改其默认的最大连接数,如下:

    [root@mysql?~]#?vim?/etc/my.cnf
    ................
    [mysqld]
    max_connections=1024
    [root@mysql?~]#?systemctl?restart?mysqld
    `
    
    查看最大连接数
    
    `mysql>?show?variables?like?'max_connections';
    +-----------------+-------+
    |?Variable_name???|?Value?|
    +-----------------+-------+
    |?max_connections?|?1024??|
    +-----------------+--------+
    1?row?in?set?(0.00?sec)

    进行压力测试:

    [root@mysql?~]#?mysqlslap?--defaults-file=/etc/my.cnf?--concurrency=100,200?--iterations=1?--number-int-cols=20?--number-char-cols=30?
    --auto-generate-sql?--auto-generate-sql-add-autoincrement?--auto-generate-sql-load-type=mixed?--engine=myisam,innodb?--number-of-queries=2000?-uroot?-p123?--verbose

    上述命令测试说明:模拟测试两次读写并发,第一次100,第二次200,自动生成SQL脚本,测试表包含20个init字段,30个char字段,每次执行2000查询请求。测试引擎分别是myisam,innodb。(上述选项中有很多都是默认值,可以省略,如果想要了解各个选项的解释,可以使用mysqlslap --help进行查询)。

    测试结果说明:

    • Myisam第一次100客户端同时发起增查用0.557/s,第二次200客户端同时发起增查用0.522/s
    • Innodb第一次100客户端同时发起增查用0.256/s,第二次200客户端同时发起增查用0.303/s

    可以根据实际需求,一点点的加大并发数量进行压力测试。

    二、使用第三方sysbench工具进行压力测试

    1、安装sysbench工具

    [root@mysql?~]#?yum?-y?install?epel-release?#安装第三方epel源
    [root@mysql?~]#?yum?-y?install?sysbench?#安装sysbench工具
    [root@mysql?~]#?sysbench?--version?#确定工具已安装
    sysbench?1.0.17

    sysbench可以进行以下测试:

    • CPU 运算性能测试
    • 磁盘 IO 性能测试
    • 调度程序性能测试
    • 内存分配及传输速度测试
    • POSIX 线程性能测试

    数据库性能测试(OLTP 基准测试,需要通过 /usr/share/sysbench/ 目录中的 Lua 脚本执行,例如 oltp_read_only.lua 脚本执行只读测试)。

    sysbench 还可以通过运行命令时指定自己的 Lua 脚本来自定义测试。

    2、查看sysbench工具的帮助选项

    [root@mysql?~]#?sysbench?--help
    Usage:
    sysbench?[options]...?[testname]?[command]
    Commands?implemented?by?most?tests:?prepare?run?cleanup?help?#?可用的命令,四个
    General?options:?#?通用选项
    --threads=N?要使用的线程数,默认?1?个?[1]
    --events=N?最大允许的事件个数?[0]
    --time=N?最大的总执行时间,以秒为单位?[10]
    --forced-shutdown=STRING?在?--time?时间限制到达后,强制关闭之前等待的秒数,默认“off”禁用(number?of?seconds?to?wait?after?the?--time?limit?before?forcing?shutdown,?or?'off'?to?disable)?[off]
    --thread-stack-size=SIZE?每个线程的堆栈大小?[64K]
    --rate=N 平均传输速率。0?则无限制?[0]
    --report-interval=N?以秒为单位定期报告具有指定间隔的中间统计信息?0?禁用中间报告?[0]
    --report-checkpoints=[LIST,...]?转储完整的统计信息并在指定的时间点重置所有计数器。参数是一个逗号分隔的值列表,表示从测试开始经过这个时间量时必须执行报告检查点(以秒为单位)。报告检查点默认关闭。?[]
    --debug[=on|off]?打印更多?debug?信息?[off]
    --validate[=on|off]?尽可能执行验证检查?[off]
    --help[=on|off]?显示帮助信息并退出?[off]
    --version[=on|off]?显示版本信息并退出?[off]
    --config-file=FILENAME?包含命令行选项的文件
    --tx-rate=N?废弃,改用?--rate?[0]
    --max-requests=N?废弃,改用?--events?[0]
    --max-time=N?废弃,改用?--time?[0]
    --num-threads=N?废弃,改用?--threads?[1]
    Pseudo-Random?Numbers?Generator?options:?#?伪随机数发生器选项
    --rand-type=STRING?random?numbers?distribution?{uniform,gaussian,special,pareto}?[special]
    --rand-spec-iter=N?number?of?iterations?used?for?numbers?generation?[12]
    --rand-spec-pct=N?percentage?of?values?to?be?treated?as?'special'?(for?special?distribution)?[1]
    --rand-spec-res=N?percentage?of?'special'?values?to?use?(for?special?distribution)?[75]
    --rand-seed=N?seed?for?random?number?generator.?When?0,?the?current?time?is?used?as?a?RNG?seed.?[0]
    --rand-pareto-h=N?parameter?h?for?pareto?distribution?[0.2]
    Log?options:?#?日志选项
    --verbosity=N?verbosity?level?{5?-?debug,?0?-?only?critical?messages}?[3]
    --percentile=N?percentile?to?calculate?in?latency?statistics?(1-100).?Use?the?special?value?of?0?to?disable?percentile?calculations?[95]
    --histogram[=on|off]?print?latency?histogram?in?report?[off]
    General?database?options:?#?通用的数据库选项
    --db-driver=STRING?指定要使用的数据库驱动程序?('help'?to?get?list?of?available?drivers)
    --db-ps-mode=STRING?prepared?statements?usage?mode?{auto,?disable}?[auto]
    --db-debug[=on|off]?print?database-specific?debug?information?[off]
    Compiled-in?database?drivers:?#?內建的数据库驱动程序,默认支持?MySQL?和?PostgreSQL
    mysql?-?MySQL?driver
    pgsql?-?PostgreSQL?driver
    mysql?options:?#?MySQL?数据库专用选项
    --mysql-host=[LIST,...]?MySQL?server?host?[localhost]
    --mysql-port=[LIST,...]?MySQL?server?port?[3306]
    --mysql-socket=[LIST,...]?MySQL?socket
    --mysql-user=STRING?MySQL?user?[sbtest]
    --mysql-password=STRING?MySQL?password?[]
    --mysql-db=STRING?MySQL?database?name?[sbtest]
    --mysql-ssl[=on|off]?use?SSL?connections,?if?available?in?the?client?library?[off]
    --mysql-ssl-cipher=STRING?use?specific?cipher?for?SSL?connections?[]
    --mysql-compression[=on|off]?use?compression,?if?available?in?the?client?library?[off]
    --mysql-debug[=on|off]?trace?all?client?library?calls?[off]
    --mysql-ignore-errors=[LIST,...]?list?of?errors?to?ignore,?or?"all"?[1213,1020,1205]
    --mysql-dry-run[=on|off]?Dry?run,?pretend?that?all?MySQL?client?API?calls?are?successful?without?executing?them?[off]
    pgsql?options:?#?PostgreSQL?数据库专用选项
    --pgsql-host=STRING?PostgreSQL?server?host?[localhost]
    --pgsql-port=N?PostgreSQL?server?port?[5432]
    --pgsql-user=STRING?PostgreSQL?user?[sbtest]
    --pgsql-password=STRING?PostgreSQL?password?[]
    --pgsql-db=STRING?PostgreSQL?database?name?[sbtest]
    Compiled-in?tests:?#?內建测试类型
    fileio?-?File?I/O?test
    cpu?-?CPU?performance?test
    memory?-?Memory?functions?speed?test
    threads?-?Threads?subsystem?performance?test
    mutex?-?Mutex?performance?test
    See?'sysbench?<testname>?help'?for?a?list?of?options?for?each?test.

    3、sysbench测试MySQL数据库性能

    1)准备测试数据

    #查看sysbench自带的lua脚本使用方法
    [root@mysql?~]#?sysbench?/usr/share/sysbench/oltp_common.lua?help
    #必须创建sbtest库,sbtest是sysbench默认使用的库名
    [root@mysql?~]#?mysqladmin?-uroot?-p123?create?sbtest;
    #然后,准备测试所用的表,这些测试表放在测试库sbtest中。这里使用的lua脚本为/usr/share/sysbench/oltp_common.lua。
    [root@mysql?~]#?sysbench?--mysql-host=127.0.0.1?
    --mysql-port=3306?
    --mysql-user=root?
    --mysql-password=123?
    /usr/share/sysbench/oltp_common.lua?
    --tables=10?
    --table_size=100000?
    prepare
    #其中--tables=10表示创建10个测试表,
    #--table_size=100000表示每个表中插入10W行数据,
    #prepare表示这是准备数的过程。

    2)确认测试数据以存在

    [root@mysql?~]#?mysql?-uroot?-p123?sbtest;?#登录到sbtest库
    mysql>?show?tables;?#查看相应的表
    +------------------+
    |?Tables_in_sbtest?|
    +------------------+
    |?sbtest1?|
    |?sbtest10?|
    |?sbtest2?|
    |?sbtest3?|
    |?sbtest4?|
    |?sbtest5?|
    |?sbtest6?|
    |?sbtest7?|
    |?sbtest8?|
    |?sbtest9?|
    +------------------+
    10?rows?in?set?(0.00?sec)
    mysql>?select?count(*)?from?sbtest1;?#随机选择一个表,确认其有100000条数据
    +----------+
    |?count(*)?|
    +----------+
    |?100000?|
    +----------+
    1?row?in?set?(0.01?sec)

    3)数据库测试和结果分析

    稍微修改下之前准备数据的语句,就可以拿来测试了。需要注意的是,之前使用的lua脚本为oltp_common.lua,它是一个通用脚本,是被其它lua脚本调用的,它不能直接拿来测试。

    所以,我这里用oltp_read_write.lua脚本来做读、写测试。还有很多其它类型的测试,比如只读测试、只写测试、删除测试、大批量插入测试等等。可找到对应的lua脚本进行调用即可。

    #执行测试命令如下:
    [root@mysql?~]#?sysbench?--threads=4?
    --time=20?
    --report-interval=5?
    --mysql-host=127.0.0.1?
    --mysql-port=3306?
    --mysql-user=root?
    --mysql-password=123?
    /usr/share/sysbench/oltp_read_write.lua?
    --tables=10?
    --table_size=100000?
    run

    上述命令返回的结果如下:

    [root@mysql?~]#?sysbench?--threads=4?--time=20?--report-interval=5?--mysql-host=127.0.0.1?--mysql-port=3306?--mysql-user=root?--mysql-password=123?/usr/share/sysbench/oltp_read_write.lua?--tables=10?--table_size=100000?run
    sysbench?1.0.17?(using?system?LuaJIT?2.0.4)
    Running?the?test?with?following?options:
    Number?of?threads:?4
    Report?intermediate?results?every?5?second(s)
    Initializing?random?number?generator?from?current?time
    Initializing?worker?threads...
    Threads?started!
    #以下是每5秒返回一次的结果,统计的指标包括:
    #?线程数、tps(每秒事务数)、qps(每秒查询数)、
    #?每秒的读/写/其它次数、延迟、每秒错误数、每秒重连次数
    [?5s?]?thds:?4?tps:?1040.21?qps:?20815.65?(r/w/o:?14573.17/4161.25/2081.22)?lat?(ms,95%):?7.17?err/s:?0.00?reconn/s:?0.00
    [?10s?]?thds:?4?tps:?1083.34?qps:?21667.15?(r/w/o:?15165.93/4334.55/2166.68)?lat?(ms,95%):?6.55?err/s:?0.00?reconn/s:?0.00
    [?15s?]?thds:?4?tps:?1121.57?qps:?22429.09?(r/w/o:?15700.64/4485.30/2243.15)?lat?(ms,95%):?6.55?err/s:?0.00?reconn/s:?0.00
    [?20s?]?thds:?4?tps:?1141.69?qps:?22831.98?(r/w/o:?15982.65/4566.16/2283.18)?lat?(ms,95%):?6.09?err/s:?0.00?reconn/s:?0.00
    SQL?statistics:
    queries?performed:
    read:?307146?#?执行的读操作数量
    write:?87756?#?执行的写操作数量
    other:?43878?#?执行的其它操作数量
    total:?438780
    transactions:?21939?(1096.57?per?sec.)?#?执行事务的平均速率
    queries:?438780?(21931.37?per?sec.)?#?平均每秒能执行多少次查询
    ignored?errors:?0?(0.00?per?sec.)
    reconnects:?0?(0.00?per?sec.)
    General?statistics:
    total?time:?20.0055s?#?总消耗时间
    total?number?of?events:?21939?#?总请求数量(读、写、其它)
    Latency?(ms):
    min:?1.39
    avg:?3.64
    max:?192.05
    95th?percentile:?6.67?#?采样计算的平均延迟
    sum:?79964.26
    Threads?fairness:
    events?(avg/stddev):?5484.7500/15.12
    execution?time?(avg/stddev):?19.9911/0.00

    4、cpu/io/内存等测试

    sysbench内置的几个测试指标如下:

    [root@mysql?~]#?sysbench?--help
    ..........?#?省略部分内容
    Compiled-in?tests:
    fileio?-?File?I/O?test
    cpu?-?CPU?performance?test
    memory?-?Memory?functions?speed?test
    threads?-?Threads?subsystem?performance?test
    mutex?-?Mutex?performance?test

    可以直接help输出测试方法,例如,fileio测试:

    [root@mysql?~]#?sysbench?fileio?help
    sysbench?1.0.17?(using?system?LuaJIT?2.0.4)
    fileio?options:
    --file-num=N?number?of?files?to?create?[128]
    --file-block-size=N?block?size?to?use?in?all?IO?operations?[16384]
    --file-total-size=SIZE?total?size?of?files?to?create?[2G]
    --file-test-mode=STRING?test?mode?{seqwr,?seqrewr,?seqrd,?rndrd,?rndwr,?rndrw}
    --file-io-mode=STRING?file?operations?mode?{sync,async,mmap}?[sync]
    --file-async-backlog=N?number?of?asynchronous?operatons?to?queue?per?thread?[128]
    --file-extra-flags=[LIST,...]?list?of?additional?flags?to?use?to?open?files?{sync,dsync,direct}?[]
    --file-fsync-freq=N?do?fsync()?after?this?number?of?requests?(0?-?don't?use?fsync())?[100]
    --file-fsync-all[=on|off]?do?fsync()?after?each?write?operation?[off]
    --file-fsync-end[=on|off]?do?fsync()?at?the?end?of?test?[on]
    --file-fsync-mode=STRING?which?method?to?use?for?synchronization?{fsync,?fdatasync}?[fsync]
    --file-merged-requests=N?merge?at?most?this?number?of?IO?requests?if?possible?(0?-?don't?merge)?[0]
    --file-rw-ratio=N?reads/writes?ratio?for?combined?test?[1.5]

    1)测试io性能

    例如,创建5个文件,总共2G,每个文件大概400M。

    [root@mysql?~]#?sysbench?fileio?--file-num=5?--file-total-size=2G?prepare
    [root@mysql?~]#?ll?-lh?test*
    -rw-------?1?root?root?410M?May?26?16:05?test_file.0
    -rw-------?1?root?root?410M?May?26?16:05?test_file.1
    -rw-------?1?root?root?410M?May?26?16:05?test_file.2
    -rw-------?1?root?root?410M?May?26?16:05?test_file.3
    -rw-------?1?root?root?410M?May?26?16:05?test_file.4

    然后运行测试:

    [root@mysql?~]#?sysbench?--events=5000?
    --threads=16?
    fileio?
    --file-num=5?
    --file-total-size=2G?
    --file-test-mode=rndrw?
    --file-fsync-freq=0?
    --file-block-size=16384?
    run

    返回的结果如下:

    Running?the?test?with?following?options:
    Number?of?threads:?16
    Initializing?random?number?generator?from?current?time
    Extra?file?open?flags:?(none)
    5?files,?409.6MiB?each
    2GiB?total?file?size
    Block?size?16KiB
    Number?of?IO?requests:?5000
    Read/Write?ratio?for?combined?random?IO?test:?1.50
    Calling?fsync()?at?the?end?of?test,?Enabled.
    Using?synchronous?I/O?mode
    Doing?random?r/w?test
    Initializing?worker?threads...
    Threads?started!
    File?operations:
    reads/s:?9899.03
    writes/s:?6621.38
    fsyncs/s:?264.33
    Throughput:?#?吞吐量
    read,?MiB/s:?154.66?#表示读带宽
    written,?MiB/s:?103.46?#表示写的带宽
    General?statistics:
    total?time:?0.3014s
    total?number?of?events:?5000
    Latency?(ms):
    min:?0.00
    avg:?0.81
    max:?53.56
    95th?percentile:?4.10
    sum:?4030.48
    Threads?fairness:
    events?(avg/stddev):?312.5000/27.64
    execution?time?(avg/stddev):?0.2519/0.02

    2)测试cpu性能

    [root@mysql?~]#?sysbench?cpu?--threads=40?--events=10000?--cpu-max-prime=20000?run

    压测时,还请小心谨慎!!!!

    来源:https://www.toutiao.com/i6843...

    image

    查看原文

    赞 6 收藏 6 评论 2

    民工哥 发布了文章 · 12月2日

    如何用 Shell 监控文件变化?

    文件监控可以配合rsync实现文件自动同步,例如监听某个目录,当文件变化时,使用rsync命令将变化的文件同步。(可用于代码自动发布)

    实现文件自动同步,例如监听某个目录,当文件变化时,使用rsync命令将变化的文件同步。(可用于代码自动发布)。

    inotify 是linux内核的一个特性,在内核 2.6.13 以上都可以使用。

    如果在shell环境下,可以安装 yum install inotify-tools,安装以后有两个命令可以用inotifywait 和 inotifywatch,inotifywait 是需要使用的命令。

    监听/usr/local/src 目录:

    /usr/local/bin/inotifywait?-mrq?--timefmt?'%d/%m/%y?%H:%M'
    --format?'%T?%w?%f?%e'?-e?modify,delete,create,attrib?
    /usr/local/src

    参数:

    • -m 持续监听
    • -r 使用递归形式监视目录
    • -q 减少冗余信息,只打印出需要的信息
    • -e 指定要监视的事件,多个时间使用逗号隔开
    • --timefmt 时间格式
    • --format 监听到的文件变化的信息
    • --timefmt 说明:
    • ymd分别表示年月日,H表示小时,M表示分钟

    --format说明:执行上面的命令之后,在监听的目录下创建一个1.txt文件,得到如下结果:

    22/03/18?17:22?/usr/local/src/?1.txt?CREATE
    22/03/18?17:22?/usr/local/src/?1.txt?ATTRIB

    这个脚本的功能是循环监听文件或目录的增删改事件,当事件发生执行设置的脚本文件。

    #!/bin/sh
    ??#?监视的文件或目录
    ??filename=$1
    ??#?监视发现有增、删、改时执行的脚本
    ??script=$2
    ??inotifywait?-mrq?--format?'%e'?--event?create,delete,modify??$filename?|?while?read?event
    ??do
    ??????case?$event?in?MODIFY|CREATE|DELETE)?bash?$script?;;
    ??????esac
    ??done

    shell脚本后台执行

    nohup

    使用nohup,其中test.sh为所执行的脚本,out.txt为输出信息的地方。

    nohup?sh?test.sh>out.txt?&

    来源:https://www.cnblogs.com/youxi...

    image

    查看原文

    赞 4 收藏 2 评论 0

    民工哥 发布了文章 · 12月2日

    3 款强大的开源密码管理器

    我们现在每个人都离不开互联网,所以在很多网站上都有很多帐户和密码。如果每个账号都实用同一个密码,是非常不安全的,但如果使用不同的密码,又会记不住,所以今天给大家介绍3款强大的开源密码管理器,希望对你们有帮助。

    1、1Password

    这是很多人都爱用的密码管理器,被推荐过很多次了!1Password能帮助管理和保存我们所有的密码,加密后保存在本地,不同设备间可通过 Dropbox、iCloud 同步数据,在电脑浏览器或手机浏览器上安装插件后可以一键自动填写用户名密码,实现一键登录,非常方便,它支持Windows、 Mac、iOS、Android几乎所有的操作系统。

    2、bitwarden

    bitwarden是开源、免费的,不仅支持全平台同步,还支持二步验证和浏览器自动填写,通过插件和客户端,能方便地一键填入密码。它除了有网页版、iOS、Android 移动版客户端外,还有Chrome、FireFox、Opera、Edge 浏览器插件,基本能在所有电脑手机上同步和使用你的个人密码数据。

    3、KeeWeb

    KeeWeb是开源、跨平台的密码管理工具,具有云同步,键盘快捷键和插件等功能。KeePass 有一个官方客户端,功能简单易用,并且与 KeePass 存储加密密码的文件格式兼容。它可以在 Windows、Linux 和 Mac OS 上运行。

    你收藏了吗?如果还有什么想要了解的,或者你有其他好用的密码管理器,可以在下方评论留言和大家一起探讨~

    来源:https://www.toutiao.com/i6877...

    image

    查看原文

    赞 2 收藏 1 评论 1

    民工哥 发布了文章 · 12月1日

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    开发免不了要测试,同一个项目一两个人开发的时候,开发、测试、部署一个分支就行,但当项目变大,开发人员变多时,如果还是这样操作,你可能就会经常遇到不同需求的代码同时测试时的相互干扰问题。比如,1、合并代码时经常发生冲突;2、一人代码写错,影响所有人等。

    那么如何解决这个问题呢?

    这里我介绍一个多分支同时部署测试的方案。具体就是每一个开发者的分支代码都可以独立部署到测试服务器(比如,不同的根目录,不同的容器),然后,各开发者可以在各自的测试分支独立调试。

    下面以PHP项目为例来具体说明。

    首先列一下我们可能用到的工具清单:

    1. Linux:这是一切操作的基础,本文中主要用到的Linux版本为Centos8
    2. Gitlab:负责管理源代码
    3. Jenkins:负责持续集成部署,
    4. Docker:负责搭建Gitlab、Jenkins、Web应用。
    5. Nginx:Web应用服务器、反向代理
    6. PHP:解析PHP代码
    7. GIT:管理源代码
    需要说明的是,我们安装这些工具主要使用yum命令,因此在执行后面步骤前,请先确保你的Linux系统已经安装了yum命令。

    具体步骤如下:

    1、安装Docker

    yum install docker

    2、安装Gitlab

    下载Gitlab镜像:

    docker pull gitlab-ce

    创建Gitlab容器了:

    docker run --name gitlab -p 443:443 -p 80:80 -p 22:22 -v /data/www/gitlab/config:/etc/gitlab -v /data/www/gitlab/logs:/var/log/gitlab -v /data/www/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce /bin/bash

    访问localhost,查看效果:

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    3、安装Jenkins

    制作Jenkins镜像

    我们的仓库代码是不包含vendor目录的,需要git checkout 后,使用composer install命令自动生成。由于官方Jenkins镜像不包含Composer、PHP、Git等我们的PHP项目需要用到的命令,因此,在实际使用时,我们以官方镜像为基础制作了自己的Jenkins镜像。

    下载Centos镜像,如下:

    docker pull centos:latest

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    以Centos镜像为基础镜像,创建Jenkins容器:

    docker run -idt --name jenkins docker.io/centos /bin/bash

    进入jenkins容器内部:

    docker exec -it jenkins /bin/bash

    使用yum命令安装java、php、composer、git:

    yum -y php git java
    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    php -r "if (hash_file('sha384', 'composer-setup.php') === 'c31c1e292ad7be5f49291169c0ac8f683499edddcfd4e42232982d0fd193004208a58ff6f353fde0012d35fdd72bc394') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    php composer-setup.php
    php -r "unlink('composer-setup.php');"
    mv composer.phar /usr/bin/composer
    如果提示PHP拓展缺失,请使用yum命令安装相关拓展。

    使用yum命令,安装官方jenkins:

    wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
    rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
    yum install jenkins

    修改Jenkins配置,配置文件默认位置为:/etc/sysconfig/jenkins

    • JENKINS_HOME
    • JENKINS_USER
    • JENKINS_PORT

    JENKINS_HOME是Jenkins的主目录,Jenkins工作的目录都放在这里,Jenkins储存文件的地址,Jenkins的插件,生成的文件都在这个目录下。

    JENKINS_USER是Jenkins的用户,拥有$JENKINS_HOME和/var/log/jenkins的权限,一般使用root用户。

    JENKINS_PORT是Jenkins的端口,默认端口是8080。

    启动Jenkins:

    service jenkins start

    如果出现错误,可能要考虑文件/etc/init.d/jenkins是否缺少配置,Jenkins的启动需要Java的支持。

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    如果Jenkins安装没有问题,下面我们就需要设置开机自启了。这是为了我们后面创建Jenkins容器的时候,Jenkins可以自动启动,而不需要我们进入容器中手动启动。jenkins.sh重启脚本如下:

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    给jenkins.sh设置可执行权限:

    chmod +x /usr/local/jenkins/jenkins.sh

    将文件添加系统自动启动程序列表:

    echo "/usr/local/jenkins/jenkins.sh">> /etc/rc.d/rc.local

    使用exit命令退出容器,然后使用docker commit命令制作新的Jenkins镜像:

    docker commit -m 'Jenkins with docker/composer/git/php' jenkins jenkins:latest

    以新镜像创建Jenkins容器,如下:

    docker run -idt --name jenkins -p 8080:8080 -p 50000:50000 -v /var/run/docker.sock:/var/run/docker.sock -v /data/www/jenkins/jenkins_home:/var/lib/jenkins:rw jenkins /bin/bash

    至此,Jenkins就安装好了。

    4、在Gitlab创建项目

    1、设置access token,记录生成的秘钥,后面创建Jenkins任务需要使用。

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    2、创建代码仓库

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    3、为代码仓库,设置Webhook

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    5、在Jenkins创建任务

    在Jenkins中,Jenkins的主要功能都是由一个个插件提供的。因此,在搭建环境之前我们也需要先安装几个用到的插件。

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    我们用到的插件主要有以下几个:

    1. GitLab Plugin
    2. Gitlab Hook Plugin
    3. Gitlab API Plugin
    4. ruby-runtime

    从名字我们也可以看到,这主要是用于Jenkins与Gitlab的交互。

    说明一下,Jenkins与Gitlab的交互包括两部分,一部分是Gitlab通过Webhook提交Git Push事件,触发Jenkins开始执行集成任务,另一部分是Jenkins通过Git从Gitlab拉取源代码。

    1、配置Gitlab链接

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    这个是Gitlab上创建的access token

    2、创建集成任务

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    这是gitlab项目的仓库地址。

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    3、在本地Push代码到Gitlab,查看Jenkins任务执行情况

    如何使用Gitlab+Jenkins实现多分支自动独立部署?

    至此,多分支同时部署测试的环境就搭建好了。

    image

    查看原文

    赞 11 收藏 7 评论 0

    民工哥 发布了文章 · 11月30日

    2020年,值得收藏的50多种Kubernetes工具

    在过去几年,Kubernetes 在容器编排市场独占鳌头。自 2016 年以来,Docker Swarm 就退出了主要竞争者的行列,并且像 AWS 一样承诺对 K8s 进行支持和集成,换句话说,它承认了失败。

    目前,由 Kubernetes 作为首选的容器解决方案已迅速普及,因此,这里列出了所有 K8s 增强工具的综合清单,以进一步提升您的开发工作。

    Kubernetes 集群部署

    Kubespray

    Kubespray 为 Kubernetes 的部署和配置提供了一组 Ansible 角色。Kubespray 支持 AWS、GCE、Azure、OpenStack 或裸机 IaaS 平台。Kubespray 是具有开放开发模型的开源项目。由于无需使用其他工具进行配置和编排,因此对了解 Ansible 的人来说,该工具是一个不错的选择。Kubespray 基于 kubeadm 开发。

    地址:https://github.com/kubernetes...
    价格:免费

    Minikube

    Minikube 允许你在本地安装和试用 Kubernetes。该工具是探索 Kubernetes 的一个很好的起点,它可以让你在笔记本电脑上的虚拟机(VM)中轻松启动单节点 Kubernetes 集群。Minikube 在 Windows、Linux 和 OSX 上可用。只需 5 分钟,你就能探索 Kubernetes 的主要功能。只需一个命令即可直接启动 Minikube 控制台。

    地址:https://github.com/kubernetes...
    价格:免费

    Kubeadm

    自 1.4 版本以来,Kubeadm 成为 Kubernetes 的发行工具。该工具是在已有基础架构上搭建 Kubernetes 集群的最佳实践。但是,Kubeadm 无法为您提供基础架构。它的主要优势是能够在任何地方部署最小的可用 Kubernetes 集群。不过,Kubeadm 不包含其他附加组件和网络组件,因此你需要手动安装这些组件(或使用其他工具安装)。

    地址:https://github.com/kubernetes...
    价格:免费

    Kops

    Kops 可帮助你通过命令行创建、销毁、升级和维护生产级别的高可用 Kubernetes 集群。目前 Kops 正式版支持 Amazon Web Services(AWS),beta 版提供 GCE 支持,alpha 版提供 VMware vSphere 支持,其他平台的支持也在计划中。Kops 允许您控制整个 Kubernetes 集群生命周期——从基础架构配置到集群删除。

    地址:https://github.com/kubernetes...
    价格:免费

    Bootkube

    Bootkube 是一个用于启动自托管 Kubernetes 集群的优秀工具。它可以帮助您设置一个临时的 Kubernetes 控制平面,该临时控制平面将一直运行到自托管控制平面能够处理请求为止。

    地址:https://github.com/kubernetes...
    价格:免费

    Kubernetes on AWS (Kube-AWS)

    Kube-AWS 是 CoreOS 提供的控制台工具,可使用 AWS CloudFormation 部署功能齐全的 Kubernetes 集群。Kube-AWS 允许您部署传统的 Kubernetes 集群,并自动为每个 K8s 服务提供原生 AWS 功能(例如 ELB、S3 和自动扩展等)。

    地址:https://github.com/kube-aws/k...
    价格:免费

    JAAS

    JAAS(Juju 即服务)可简化目前复杂软件的配置、扩展和操作。Juju 可以部署在任何地方,包括公共云和私有云。JAAS 可将您的工作负载部署到您选择的云平台中。

    地址:https://jaas.ai/

    Conjure-up

    Conjure-up 是另一种 Canonical 产品,它允许您使用一些简单的命令在 Ubuntu 上部署 Kubernetes 的 Canonical 发行版。它支持 AWS、GCE、Azure、Joyent、OpenStack、VMware、裸机和本地主机等部署场景。Conjure-up 基于 Juju、MAAS 和 LXD 等基础技术。

    地址:https://conjure-up.io/
    价格:免费

    Amazon EKS

    Amazon EKS(Amazon Elastic Container Service)是一项管理服务,你可以用它来轻松使用 Kubernetes 部署、管理和扩展容器化应用程序。Amazon EKS 跨多个 AWS 可用区管理您的 Kubernetes 基础架构,同时自动检测和替换不正常的控制节点,并提供按需升级和修补。你只需要配置工作节点并将它们连接到可用的 Amazon EKS 终端即可。

    地址:https://aws.amazon.com/eks/
    价格:按使用的资源量付费

    监控工具

    Kubebox

    Kubebox 是一套用于 Kubernetes 集群的终端控制台,其能让用户通过美观且经典的界面对集群实时状态进行管理与监控。Kubebox 能显示容器资源的使用情况、集群监控以及容器日志等。除此之外,用户还可借助 Kubebox 轻松导航到目标名称空间,并在目标容器中执行相关操作,借此以快速排故 / 恢复。

    地址:https://github.com/astefanutt...
    价格:免费

    Kubernetes Operational View (Kube-ops-view)

    Kube-ops-view 是一款面向多个 Kubernetes 集群的系统监测面板。用户可通过 Kube-ops-view 导航到不同的 K8s 集群并监控节点以及 pod 健康状况,其还能够为部分 Kubernetes 过程提供动画效果,例如 pod 的创建与终止。Kube-ops-view 也将 Heapster 作为其数据源。

    地址:https://github.com/hjacobs/ku...
    价格:免费

    Kubetail

    Kubetail 是一个小型 bash 脚本,其能够将来自于多个 pod 的日志聚合到同一数据流中。Kubetail 的初始版本不提供过滤或高亮功能,但其目前已经在 GitHub 上添加了一个分支,该分支支持使用 multitail 工具构建日志并对日志着色。

    地址:https://github.com/johanhaleb...

    价格:免费

    Kubewatch

    Kubewatch 是一款 Kubernetes 监控工具,该产品可将 Kubernetes 事件(events)发布到团队协作应用 Slack。Kubewatch 以 Pod 形式运行于 Kubernetes 集群中,并监视系统中所发生的各种变化。此外,你可以通过编辑配置文件来指定需要接收的通知。

    地址:https://github.com/bitnami-la...
    价格:免费

    Weave Scope

    WeaveScope 是一款面向 Docker 与 Kubernetes 集群的故障排除与监控工具,该工具可自动生成应用程序与基础架构拓扑,借此帮助,用户能轻松识别应用程序的性能瓶颈。用户可在本地服务器或笔记本电脑上将 Weave Scope 部署为独立应用程序,或者选用 WeaveCloud 上的 Weave ScopeSaaS(软件即服务)解决方案。在 WeaveScope 的帮助下,用户可通过名称、标签或资源消耗量对容器执行分组、筛选或搜索。

    地址:https://www.weave.works/oss/s...
    价格:独立模式免费、标准模式每月 30 美元(免费试用期为 30 天)、企业模式每节点每月 150 美元

    Prometheus

    Prometheus 已迅速成为 Kubernetes 监控的必备工具。它提供了多维数据模型以及用户可访问的格式和协议。在 Kubernetes 中公开 Prometheus 指标非常容易,抓取的数据可解释性强且易于阅读,并使用标准 HTTP 服务方式发布。

    地址:https://prometheus.io/
    价格:免费

    Searchlight

    AppsCode 推出的 Searchlight 是一款面向 Icinga 的 Kubernetes 监控工具。Searchlight 会定期对 Kubernetes 集群执行各种检查,并会在发现问题后,通过电子邮件、短信或对话框发送警告信息。Searchlight 包含专为 Kubernetes 编写的默认检查套件。此外,其还能够通过联合外部黑盒子监控功能来增强 Prometheus 的监测性能,并在内部系统完全失效的情况下充当后备选项。

    地址:https://github.com/appscode/s...
    价格:免费

    cAdvisor

    CAdvisor 默认安装在所有集群节点中,它采集 Kubernetes 运行容器和节点的资源使用指标。CAdvisor Kubelet 通过 Kubelet API(默认值分辨率为一分钟)公开这些指标。Metrics Server 可识别所有可用节点并调用 Kubelet API 以获取容器和节点的资源使用情况,然后通过 Kubernetes 的聚合 API 公开这些指标。

    地址:https://github.com/google/cad...
    价格:免费

    Kube-state-metrics

    kube-state-metrics 通过监听 Kubernetes 的 API server 即可从 Kubernetes API 对象生成指标。它并不检查各个 Kubernetes 组件的运行状况,而是关注各种内部对象(如 deployment、节点和 Pod)的运行状况。

    地址:https://github.com/kubernetes...
    价格:免费

    Sumo Logic App

    Sumo Logic Kubernetes 应用提供对集群中的工作节点及其应用程序日志的完整监控。该应用程序允许用户监视容器健康状况、副本、负载均衡、Pod 状态和硬件资源分配并进行故障排除。该应用程序利用 Falco 事件来监视和检测异常的容器、应用程序、主机和网络活动。

    地址:https://www.sumologic.com/app...
    价格:专业版 108 美元每月,企业版 180 美元每月

    Dynatrace

    Dynatrace OneAgent 具有容器感知功能,并内置支持对 Kubernetes 集群的开箱即用监视。Dynatrace 为 Kubernetes 提供 全栈监视,即从应用程序到基础架构层的监视。但是,如果您无权访问基础架构层,则 Dynatrace 还提供仅监视应用程序的选项。

    地址:https://www.dynatrace.com/sup...
    价格:限时免费

    测试工具

    Kube-monkey

    Kube-monkey 是 Netflix 公司旗下 Chaos Monkey 项目的 Kubernetes 版本。Kube-monkey 是一款遵循混沌工程原理的工具,其可以随机删除 Kubernetes pod,检查服务是否具备抗失效能力并帮助维持系统的健康运转。Kube-monkey 也可经由 TOML 文件完成配置,而 TOML 文件不仅能够终止指定的应用程序,还可以决定恢复策略的执行时间。

    地址:https://github.com/asobti/kub...
    价格:免费

    K8s-testsuite

    K8s-testsuite 由两个 Helm charts 组合而成,适用于网络带宽测试与单个 Kubernetes 集群的负载测试。负载测试模拟了带有 loadbots 的简单网页服务器,这些服务器可以基于 Vegeta 以 Kubernetes 微服务的形式运行。网络测试则在内部使用 iperf3 与 netperf-2.7.0 运行三次。这两项测试都会生成涵盖全部结果与指标的综合日志信息。

    地址:https://github.com/mrahbar/k8...
    价格:免费

    Test-infra

    Test-infra 是一套用于 Kubernetes 测试与结果验证的工具集合。Test-infra 包括多种仪表板,分别用于显示历史记录、汇总故障以及当前正在测试的内容。用户还可以使用 Test-infra 创建自定义测试任务。此外,Test-infra 可在使用 Kubetest 的不同供应商平台上,通过模拟完整的 Kubernetes 生命周期实现端到端的 Kubernetes 测试。

    地址:https://github.com/kubernetes...
    价格:免费

    Sonobuoy

    Sonobuoy 允许用户以易于访问和非破坏性的方式运行一组测试,从而对当前 Kubernetes 集群状态进行评估。Sonobuoy 可生成有关集群性能详细信息的报告。Sonobuoy 支持 3 个 Kubernetes 小版本,分别是当前发布版本和此前的两个小版本。SonobuoyScanner 是一款基于浏览器的工具,使用该工具,用户只需点击数下即可完成对 Kubernetes 集群的测试。当然,其 CLI 版本有更丰富的测试功能。

    地址:https://sonobuoy.io/
    价格:免费

    PowerfulSeal

    PowerfulSeal 类似于 Kube-monkey,同样遵循混沌工程原理。PowerfulSeal 不仅可终止 pod,还能够在集群中添加或删除虚拟机。不同于 Kube-monkey,PowerfulSeal 具有交互模式,从而允许用户以手动方式中断特定的集群组件。另外,除了 SSH 以外,PowerfulSeal 没有其它外部依赖。

    地址:https://github.com/bloomberg/...
    价格:免费

    安全工具

    Trireme

    Trireme 是一项灵活且直接的 Kubernetes 网络策略实现方案,其适用于任何 Kubernetes 集群,并允许用户管理不同集群中的 pod 之间的流量。Tririme 的主要优势在于其无需任何集中式策略管理,能够轻松实现 Kubernetes 中所部署的两种资源的彼此交互,并且无需配合任何复杂的 SDN、VLAN 标签以及子网(Trireme 使用常规的 L3- 网络)。

    地址:https://github.com/aporeto-in...
    价格:免费

    Aporeto

    Aporeto 基于工作负载识别、加密和分布式策略为容器、微服务、云应用和遗留应用提供安全性。由于 Aporeto 策略独立于基础架构,因此可以在 Kubernetes 集群之间启用安全策略,甚至可以在包括 Kubernetes 和非 Kubernetes 的混合环境中使用。

    地址:https://www.aporeto.com/

    Twistlock

    Twistlock 持续监视你在 K8 上部署的应用程序是否存在漏洞和合规性问题,包括底层主机以及容器和映像。此外,Twistlock 运行时防御会自动对容器行为进行建模,从而警报或阻止异常活动并允许已知的良好行为。最后,Twistlock 提供了第 3 层微分段(microsegmentation)和第 7 层防火墙,可以保护前端微服务免受常见的攻击。

    地址:https://www.twistlock.com/

    Falco

    SysdigFalco 是一款行为活动监视器,旨在检测应用程序中的异常活动。Falco 基于 Sysdig 项目,Sysdig 是一款开源工具(现已转化为商业服务),可通过追踪内核系统调用来监控容器性能。Falco 允许用户通过一套规则来持续监控并检测容器、应用程序、主机以及网络活动。

    地址:https://sysdig.com/opensource...

    价格:独立工具免费、基础云每月 20 美元(可免费试用)、专业云每月 30 美元、专业版软件定制价格

    Sysdig Secure

    Sysdig Secure 是 Sysdig 容器智能平台的一部分,它开箱即用且具有无与伦比的容器可见性,并与容器编排工具深度集成。这些编排工具包括 Kubernetes、Docker、AWS ECS 和 Apache Mesos。借助 Sysdig Secure,你可以实现服务感知策略,阻止攻击,分析历史记录并监视群集性能。最后,Sysdig Secure 可作为云服务或内部部署软件产品。

    地址:https://sysdig.com/product/se...
    价格:独立工具免费、专业云和专业版软件定制价格

    Kubesec.io

    Kubesec.io 是一个能针对安全功能使用情况对 Kubernetes 资源进行评分的服务。Kubesec.io 可根据 Kubernetes 安全最佳实践来验证资源配置。你将拥有完全的控制权,结合它提供的额外建议,你将能够更好的提升系统的整体安全性。另外,该网站还包括大量与容器和 Kubernetes 安全相关的外部链接。

    地址:https://kubesec.io/
    价格:免费

    实用 CLI 工具

    Cabin

    更新:该项目目前不在活跃开发状态

    Cabin 可作为 Kubernetes 集群远程管理的移动仪表板。用户可通过 Cabin 快速管理应用程序、扩展部署,并通过 Android 或 iOS 设备对整个 Kubernetes 集群实施故障排查。对于 Kubernetes 集群的运营者而言,Cabin 无疑是一款强大的工具,其能够让管理者在故障发生时执行快速有效的补救措施。

    地址:https://github.com/bitnami-la...
    价格:免费

    Kubectx/Kubens

    更新:Kubectx 现在已经用 Go 语言重新编写,稳定的 bash 版本仍然可用

    Kubectx 是一款小型开源实用工具,其不仅能够增强 Kubectl 的功能,还能够同时与多个 Kubernetes 集群实现连接。另外,Kubens 允许用户在 Kubernetes 命名空间之间进行导航。最后,这两款工具均可在 bash/zsh/fish shell 上提供自动补全功能。

    地址:https://github.com/ahmetb/kub...
    价格:免费

    Kube-shell

    Kube-shell 能在使用 Kubectl 操作 Kubernetes 集群时提高效率。Kube-shell 支持命令自动补全与自动建议。此外,Kube-shell 还能够提供相关命令的内嵌文档,其甚至还可以在输入错误时执行检索与纠正命令。因此,这是一款能够在 Kubernetes 终端使用时提升效率与生产力的工具。

    地址:https://github.com/cloudnativ...
    价格:免费

    Kail

    Kail 是 Kubernetes tail 的缩写,适用于 Kubernetes 集群。利用 Kail,用户可以在所有匹配的 pod 当中获取最新的 Docker 日志(tail)。Kail 还允许用户通过服务(service)、部署(deployment)、标签(labels)或其他功能对 pod 进行过滤。如果 pod 符合某种条件, Kail 启动后会自动获取该 pod 的日志(或不再获取该 pod 的日志)。

    地址:https://github.com/boz/kail
    价格:免费

    部署工具

    Telepresence

    Telepresence 可将来自 Kubernetes 环境的数据转发至本地进程,进而在本地对 Kubernetes 集群进行调试。Telepresence 能够为你的本地代码提供对 Kubernetes 服务和 AWS/GCP 资源的访问权限,而本地代码将被部署在集群中。在 Telepresence 的帮助下,Kubernetes 会将本地代码视为集群中的普通 pod。

    地址:https://www.telepresence.io/
    价格:免费

    Helm

    Helm 是一款适用于 Kubernetes 的软件包管理器。其与 APT/Yum/Homebrew 类似,但适用于 Kubernetes。Helm 使用 Charts 进行操作,而 Charts 是一套 Kubernetes 资源清单文件,这些文件用于构建分布式应用程序。用户可通过创建 Helm Charts 来分享应用。Helm 使用户能够创建可复用的构建并轻松管理 Kubernetes 清单。

    地址:https://github.com/kubernetes...
    价格:免费

    Jaeger

    Jaeger Operator 是一个 Kubernetes Operator 扩展,它提供了另一种打包、部署和管理 Kubernetes 应用程序的方法。

    地址:https://www.jaegertracing.io/
    价格:免费

    turbonomic

    turbonomic 的 kubernetes 即服务(KaaS)管理功能包括对 Amazon EKS(Elastic Container Service for Kubernetes)、Microsoft AKS(Azure Kubernetes Service)、GKE(Google Kubernetes Engine)和 PKS(Pivotal Container Service)的支持。它可以提升自有 Kubernetes 集群的性能、效率和合规性,因此使 IT 组织可以扩展和加速云原生应用的发展。

    地址:https://turbonomic.com/produc...
    价格:定制价格

    Supergiant

    更新:Supergiant 目前为不活跃状态,但该项目仍然在 Github 上。

    Supergiant 是一个实用程序的开源集合,可简化安装和管理 Kubernetes 集群的过程。Supergiant Kubernetes 工具箱中有三个独立的应用程序,分别为控制(Control)、分析(Analyze)和能力(Capacity)。本质上,Supergiant 作为一种微服务应用程序允许分别使用这三个工具。

    地址:https://github.com/supergiant

    Keel

    Keel 使用户可以自动化 Kubernetes deployment 更新的过程,并且可以在专用命名空间中作为 Kubernetes 服务启动。通过这样的组织方式,Keel 在你的环境中引入的额外负载较小,但显著提升了鲁棒性。Keel 通过 labels、annotations 和 Charts 帮助部署 Kubernetes 服务,你只需要为每个 deployment 或由 Helm 部署的应用指定更新策略。一旦仓库中有新版本应用,Keel 会将其自动更新到你的环境中。

    地址:https://keel.sh/
    价格:免费

    Apollo

    Apollo 是一个开源应用程序,其为团队提供了自助式 UI,用于创建服务并将其部署到 Kubernetes。Apollo 使操作员只需点击一下即可查看日志并将 deployment 还原到任一时间点。对于 deployment,Apollo 有灵活的权限模型, 每个用户只能部署他需要部署的对象。

    地址:https://github.com/logzio/apollo
    价格:免费

    Draft

    Draft 是 Azure 团队提供的工具,可简化应用程序开发和部署到 Kubernetes 集群的过程。Draft 在代码部署和代码提交之间创建了“内部循环”,从而极大地加快了代码修改的验证过程。使用 Draft,开发人员可以使用两个命令准备应用程序的 Dockerfile 和 Helm Charts,并将应用程序部署到远程或本地 Kubernetes 集群。

    地址:https://github.com/azure/draft
    价格:免费

    Kel

    Kel 是 Eldarion 公司的开源 PaaS 平台,可帮助管理 Kubernetes 应用程序的整个生命周期。Kel 在 Kubernetes 之上提供了另外两层,这两层用 Python 和 Go 语言编写。级别 0 允许您提供 Kubernetes 资源,级别 1 可以帮助您在 K8 上部署任何应用程序。

    地址:http://www.kelproject.com/
    价格:免费

    Kong

    Kong 以前称为 Kong Community(CE),是由 Kong 公司发起的一种开源可扩展 API 网关技术,其具有不断发展的社区。Kong 允许开发人员在 Kubernetes 中使用 API 管理系统的标准功能,如身份验证、数据加密、日志、速率限制等等。所有这些都由一个简单的 RESTful API 提供支持,该平台本身基于 NGINX 代理服务器和 Apache Cassandra 数据库管理系统之上。

    地址:https://konghq.com/
    价格:Kong 云平台提供 15 天试用

    持续集成和持续交付流水线工具

    Cloud 66

    Cloud 66 是完整的 DevOps 工具链,可用于生产级别的容器化应用程序,它通过专用的 Ops 工具自动执行许多繁重的 Devs 开发工作。该平台当前在 Kubernetes 上运行 4,000 个客户工作负载,并管理 2,500 行配置。通过提供端到端基础架构管理,Cloud 66 使工程师能够在任何云平台或服务器中构建、交付、部署和管理任何应用程序。

    地址:https://www.cloud66.com/
    Cost: Free for 14 days
    价格:免费 14 天

    无服务器 / 函数工具

    Kubeless

    Kubeless 是 Kubernetes 原生的无服务器框架,可让您部署少量代码而不必担心基础架构的问题。Kubeless 能够获取 Kubernetes 资源,并提供自动扩展、API 路由、监视和排故。Kubeless 完全依赖于 K8s 原语,因此 Kubernetes 用户也将能够使用原生 K8s API-server 和 API 网关。

    地址:https://github.com/kubeless/k...
    价格:免费

    Fission

    Fission 是 Kubernetes 的快速无服务器框架,专注于提高开发人员的生产力和提升性能。Fission 可在任何地方的 Kubernetes 集群上工作,如笔记本电脑、任何公共云或私有数据中心。你可以使用 Python、NodeJS、Go、C#或 PHP 编写函数,然后使用 Fission 将其部署在 K8s 集群上。

    地址:https://fission.io/
    价格:免费

    Funktion

    更新:该项目已沙盒化(不活跃)

    长期以来,Kubernetes 仅有一个函数即服务(FaaS)的实现:Funktion。Funktion 是专为 Kubernetes 设计的开源事件驱动的 Lambda 风格编程模型,其与 fabric8 平台有紧密联系。使用 Funktion,你可以创建流程以从 200 多个事件源进行订阅以调用你的函数,这些事件源包括大多数数据库、消息系统、社交媒体以及其他中间件和协议。

    地址:https://github.com/funktionio...
    价格:免费

    IronFunction

    IronFunctions 是一个开源的无服务器平台或 FaaS 平台,你可以在任何地方运行 IronFunctions。该平台使用 Go 语言编写的,实际上可以支持任何语言的函数。IronFunction 的主要优点是它支持 AWS Lambda 风格。该平台允许你直接从 Lambda 导入函数,然后在任何需要的地方运行它们。

    地址:https://github.com/iron-io/fu...
    价格:免费

    OpenWhisk

    Apache OpenWhisk 是由 IBM 和 Adobe 驱动的强大的开源 FaaS 平台,其可以部署在本地设备或云上。Apache OpenWhisk 的设计意味着它充当异步且松耦合的运行环境,可以为外部触发器运行函数。OpenWhisk 在 Bluemix 上作为 SaaS 解决方案提供给用户,你也可以在本地部署基于 Vagrant 的虚拟机来运行它。

    地址:https://openwhisk.apache.org/
    价格:免费

    OpenFaaS

    OpenFaaS 框架用于在 Docker Swarm 或 Kubernetes 上管理无服务器函数,它将采集和分析这些平台中的各种指标。您可以将任何逻辑过程打包到函数中并使用它,而无需重复编码或执行任何其他常规操作。FaaS 内置了 Prometheus 采集器,这意味着它可以对你的函数实现按需缩放。FaaS 原生支持基于 Web 的界面,您可以在其中试用您的函数。

    地址:https://github.com/openfaas/faas
    价格:免费

    Nuclio

    Nuclio 是一个无服务器项目,旨在处理高性能事件和大量数据。Nuclio 可以作为独立库在本地设备上启动,也可以在虚拟机或 Docker 容器内启动。另外,Nuclio 开箱即用地支持 Kubernetes。Nuclio 提供具有最大并行度和最小开销的实时数据处理。你可以在 playground 页面上试用 Nuclio。

    地址:https://github.com/nuclio/nuclio
    价格:免费

    Virtual-Kubelet

    Virtual Kubelet 是开源的 Kubernetes Kubelet 实现,其为了将 Kubernetes 连接到其他 API 而伪装成 kubelet。Virtual Kubelet 允许节点接入其他服务(例如 ACI、Hyper.sh 和 AWS 等)。此连接器具有可插拔架构,可直接使用 Kubernetes 原语,从而使其更易于构建。

    地址:https://virtual-kubelet.io/
    价格:免费

    Fnproject

    Fnproject 是一个原生容器无服务器项目,它几乎支持任何编程语言,并且几乎可以在任何地方运行。Fn 是用 Go 语言编写的,因此性能较好且十分轻量。Fnproject 支持 AWS Lambda 风格,因此你可以轻松导入你的 Lambda 函数并通过 Fnproject 启动它。

    地址:http://fnproject.io/
    价格:免费

    服务网格工具

    Istio

    Istio 是一个开源服务网格,它使在容器中运行的微服务之间的连接、管理和流量保护变得更容易,此外,它还可以对微服务指标进行遥测。Istio 是 IBM、Google 和 Lyft 之间的合作成果。

    地址:https://istio.io/
    价格:免费

    Linkerd + Linkerd2

    Linkerd 是一种开源的服务网格工具,可以使服务之间的通信可靠、快速且安全。通过拦截应用程序内的网络通信,服务网格能够提取度量指标(遥测),配置服务与服务之间通信的策略并进行通信加密。Linkerd2 是 Linkerd 的超轻量级服务网格,专门用于 Kubernetes。

    地址:https://linkerd.io/
    https://github.com/linkerd/li...

    Hashicorp’s Consul

    Consul 是一种服务网格解决方案,可跨任何运行时平台和公有或私有云连接并保护服务。与上述 Istio 和 Linkerd 服务网格技术一样,HashiCorp 的 Consul Connect 选择部署旁路代理。代理透明地保护微服务之间的通信,还支持通过 Intentions 的概念来定义策略。

    地址:https://www.hashicorp.com/pro...
    价格:免费

    原生服务发现

    CoreDNS

    CoreDNS 是一组用 Go 编写的可执行 DNS 功能的插件。CoreDNS 和其他 Kubernetes 插件可以替换默认的 Kube-DNS 服务,并通过实现一套规范,完成基于 Kubernetes DNS 的服务发现。CoreDNS 还可以监听 UDP/TCP、TLS 和 gRPC 的 DNS 请求。

    地址:https://coredns.io/
    价格:免费

    原生可视化与控制

    Kubernetes Dashboard

    Kubernetes Dashboard 是用于 Kubernetes 集群的基于 Web 的通用 UI。使用原生控制面板使 K8s 集群中的故障排除和监视变得更容易。你需要在你的机器和 Kubernetes API-server 之间创建一个安全的代理通道以访问该控制面板。该原生 Kubernetes 控制面板依赖 Heapster 数据收集器,因此 Heapster 也需要安装在系统中。

    地址:https://github.com/kubernetes...
    价格:免费

    成本管理

    Replex

    Replex 是一个成本(cost)和治理(governance)管理平台,其工作于 Kubernetes 环境中。该工具通过统一用于云平台中 deployment 的成本(cost)和治理(governance)管理,解决了与 Kubernetes 动态特性相关的挑战。

    地址:https://www.replex.io/
    价格:定制价格

    以上就是今天给大家分享的,2020年,值得收藏的50多种Kubernetes工具

    原文链接:https://caylent.com/50-useful...
    作者 | Stefan Thorpe 译者 | Rayden

    image

    查看原文

    赞 5 收藏 4 评论 0

    认证与成就

    • 获得 5034 次点赞
    • 获得 9 枚徽章 获得 1 枚金徽章, 获得 3 枚银徽章, 获得 5 枚铜徽章

    擅长技能
    编辑

    开源项目 & 著作
    编辑

    • 《Linux系统运维指南》

      本书系统全面、由浅入深地介绍了Linux系统运维的知识,以及在企业实际环境中用到的各类服务、架构和运维管理。本书分基础篇、LAMP/LNMP架构篇、应用服务篇和架构运用篇。基础篇详细介绍Linux系统的基础知识,LAMP/LNMP架构篇介绍时下企业中最常见的两种架构的部署与配置,应用服务篇以企业实际运维环境为出发点详细介绍当下企业用到的各类开源软件服务,架构运用篇对前三篇的知识进行总结,并结合企业的实际场景加以实践。

    • 运维工程师打怪升级进阶之路

      内容由浅入深,从最基础的网络基础开始,逐渐深入系统的学习Linux系统运维知识。然后引入企业项目实战内容,从而让更多学习Linux系统运维的读者朋友们「无论前端、后端、测试还是运维,底层系统是必备技术点」,都能够快速入门、并且在一程度上掌握当下企业所需要的技术储备。再穿插企业面试题、面试经验等,同时也能帮助运维工程师们在求职的路上能更加顺畅,少踩坑。

    注册于 2019-02-21
    个人主页被 41.7k 人浏览

    bt365体育投注