首页 文章 精选 留言 我的

精选列表

搜索[centos],共5663篇文章
优秀的个人博客,低调大师

Centos7单机部署ELK

一、简介 1.1介绍 ELK是三个开源工具组成,简单解释如下: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。 Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。 Kibana 也是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。 1.2场景分析 日志主要包括系统日志、应用程序日志和安全日志等等。运维人员和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。 通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。 集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。 这里采用开源实时日志分析ELK平台能够完美的解决我们上述的问题,当然也还有别的平台或者工具可以使用,这里只讨论ELK,官方网站:https://www.elastic.co 二、安装Elasticsearch 2.1安装jdk 1 2 3 4 # java -version java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8 . 0_121 - b13) Java HotSpot(TM) 64 - Bit Server VM (build 25.121 - b13, mixed mode) 2.2安装Elasticsearch 1 2 3 4 5 # tar -zxvf elasticsearch-5.6.3.tar.gz # mv elasticsearch-5.6.3 /data/elasticsearch # cd elasticsearch/config/ # 备份配置文件 # cp elasticsearch.yml elasticsearch.yml.bak 编辑配置文件 1 2 3 4 5 6 7 8 9 # cat elasticsearch.yml | grep -v ^# cluster.name: elk - application node.name: node - 1 path.data: / data / elasticsearch / data path.logs: / data / elasticsearch / logs network.host: 172.16 . 220.248 http.port: 9200 discovery.zen.ping.unicast.hosts: [ "node-1" ] discovery.zen.minimum_master_nodes: 1 添加elasticsearch用户,不能使用root启动 1 2 3 # groupadd -g 1008 elasticsearch # useradd -g 1008 -u 1008 elasticsearch # chown -R elasticsearch:elasticsearch /data/elasticsearch/ 修改sysctl.conf文件 1 2 3 4 # vim /etc/sysctl.conf vm.max_map_count = 262144 # sysctl -p 修改/etc/security/limits.conf文件,修改打开文件句柄 1 2 3 4 * soft nofile 100000 * hard nofile 100000 * soft nproc 100000 * hard nproc 100000 添加hosts文件 1 2 # vim /etc/hosts 172.16 . 220.248 node - 1 启动 1 2 3 # su -s elasticsearch # cd /data/elasticsearch/bin # ./elasticearch & 查看是否启动 简单的curl测试 1 # curl http://172.16.220.248:9200 三、安装Logstash和filebeat filebeat用于在各个服务器上获取数据,发送到logstash上,再由logstash处理数据。 3.1安装logstash 1 2 # tar -zxvf logstash-5.6.3.tar.gz # mv logstash-5.6.3 /data/logstash 3.2安装filebeat 下载filebeat并启动,通过它来监听数据源文件的新增内容经过logstash处理后上传到es里面 1 2 3 4 # tar -zxvf filebeat-5.6.3-linux-x86_64.tar.gz # mv filebeat-5.6.3-linux-x86_64 /data/filebeat # cd /data/filebeat # cp filebeat.yml filebeat.yml.bak 编辑filebeat.yml文件 1 2 3 4 5 6 filebeat.prospectors: - input_type: log paths: - / var / log / message - log # 测试本机的一个log文件 output.logstash: hosts: [ "172.16.220.248:5044" ] 启动filebeat服务 1 2 # cd /data/filebeat # ./filebeat & 查看启动,filebeat没有监听端口,主要看日志和进程 1 2 # tialf logs/filebeat # ps -ef | grep filebeat filebeat监听的文件记录信息在/data/filebeat/data/registry 新建一个本地文件message-log,可以取几条本机系统的messages文件 3.3启动logstash 最后新建一个logstash的启动指定test.conf配置文件,内容如下: 1 2 3 4 5 6 7 8 9 10 11 input { beats { port = > "5044" } } output { elasticsearch { hosts = > "172.16.220.248:9200" } stdout { codec = > rubydebug } # 这是将输出打印在屏幕上,可以注释掉 } Logstash默认有input、filter、output三个区域,一般最少需要配置input和output即可! logstash的本身默认的logstash.yml配置文件选择不修改即可! 简单测试一下logstash不指定配置文件启动 1 2 # cd /data/filebeat/bin # ./logstash -e 'input { stdin {} } output {stdout {} }' 我们手动输入hello world,它也会输出 hello world 指定配置文件启动logstash 1 # ./logstash -f ../config/test.conf & 查看5044端口和9600端口是否开启 等待一会后应该会出现如下信息输出,这也就是test.conf里面最后一行定义输出到屏幕上 四、安装kibana 1 2 3 4 # tar -zxvf kibana-5.6.3-linux-x86_64.tar.gz # mv kibana-5.6.3-linux-x86_64 /data/kinbana # cd /data/kinbana/config/ # cp kibana.yml kibana.yml.bak 编辑kibana.yml配置文件 1 2 3 4 # vim kibana.yml server.port: 5601 server.host: "172.16.220.248" elasticsearch.url: "http://172.16.220.248:9200" 启动kinbana 1 2 # cd /data/kibana/bin # ./kibana & 查看端口 浏览器登入查看 点击create按钮后,然后点击上面的discover按钮,注意如果没数据的话,注意看看导入的时间@timestamp和现在的时间对比一下,kibana默认只显示最近15分钟的数据,如果超出15分钟请选择适当的时间,从kibana可以看到messages-log里面的15条数据都正常导入了。这就也完成我们的实现的第一个效果。但是这仅仅是把流程跑通了,接下来我们需要做的事情还有更多。注意只能先导入数据到es后才能在kibana创建索引。 五、获取Nginx access日志 Nginx日志格式在logstash的grok里面默认是没有的,需要我们手动配置,可以通过http://grokdebug.herokuapp.com/在线工具来判断配置是否正确。 5.1 在nginx服务器上安装filebeat 服务器: 172.16.200.160 1 2 3 4 # tar -zxvf filebeat-5.6.3-linux-x86_64.tar.gz # mv filebeat-5.6.3-linux-x86_64 /data/filebeat # cd /data/filebeat # cp filebeat.yml filebeat.yml.bak 修改filebeat配置文件 1 2 3 4 5 6 7 8 # cat filebeat.yml | grep -v ^$ | grep -v ^# | grep -v "#" filebeat.prospectors: - input_type: log paths: - /data/nginx/logs/160_access.log document_type: nginx_access output.logstash: hosts: ["172.16.220.248:5044"] 启动filebeat 1 # ./filebeat & 5.2 重新配置logstash启动配置文件 nginx日志格式,根据业务要求,我们这做了一些修改,比如增加cookie等,修改access.log日志时间格式等,这个会在另外的博客中写出来,会给出链接的。 nginx日志中添加cookie信息 nginx改变access.log中的时间格式 Nginx日志格式 1 2 3 4 5 6 7 8 log_format main '[$time_local] - $remote_addr:$remote_port - $upstream_addr $upstream_status $upstream_response_time - ' '"$request" $status $bytes_sent $request_time ' '"$http_referer" - "$http_user_agent" - ' '"$customerTag_cookie" - "$ym_cookie" - "$http_cookie" ' '"$http_x_forwarded_for"'; # 这里只是我们自己的格式,各位可以根据自己要求增删 grok使用表达式 可能我理解不是很到位,写的也比较复杂,我会把匹配对应项一一写出来,大家可以自己理解,然后为自己的项目配置 1 %{SYSLOG5424SD} - %{IPV4:clientip}:%{NUMBER:clientport} - %{IPV4:hostip}:%{NUMBER:itemport} %{INT:upstream_status} %{NUMBER:response_time} - \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{INT:status} %{INT:body_bytes_sent} %{NUMBER:request_time} %{QS:url} - %{QS:user_agent} - %{QS:customerTag} - %{QS:ym_traffic_session_id} - %{QS:all_cookies} %{IPV4:realip} grok匹配说明 1 %{SYSLOG5424SD} 时间格式 1 %{IPV4:clientip} 获取ip,clientip是自己命名的 1 %{NUMBER:clientport} NUMBER匹配数字 1 %{INT:upstream_status} INT整形 1 %{WORD:method} WORD单词 1 %{URIPATHPARAM:request} 获取请求内容request 1 %{QS:url} QS可以获取一段字符串 修改logstash启动配置文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 input { beats { port => "5044" } } filter { if [type] == "nginx_access" { grok { match => {"message" => "%{SYSLOG5424SD} - %{IPV4:clientip}:%{NUMBER:clientport} - %{IPV4:hostip}:%{NUMBER:itemport} %{INT:upstream_status} %{NUMBER:response_time} - \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{INT:status} %{INT:body_bytes_sent} %{NUMBER:request_time} %{QS:url} - %{QS:user_agent} - %{QS:customerTag} - %{QS:ym_traffic_session_id} - %{QS:all_cookies} %{IPV4:realip}"} } mutate { remove_field => "message" # 把message字段去掉,它会将上面单项获取的信息做个汇总,这样就重复了 } } } output { elasticsearch { hosts => "172.16.220.248:9200" } #stdout { codec => rubydebug } } 测试一下配置文件 1 ./logstash -t -f ../config/logstash.conf 重启logstash 不出问题elasticsearch 和kibana中就会有数据了

优秀的个人博客,低调大师

CentOS下mysql备份脚本(mysqldump)

#!/bin/bash #全备方式,一般在从机上执行,适用于小中型mysql数据库 #删除15天以前备份 #作者:fafu_li #时间:2015.08.10 source /etc/profile #加载系统环境变量 source ~/.bash_profile #加载用户环境变量 set -o nounset #引用未初始化变量时退出 #set -o errexit #执行shell命令遇到错误时退出 user="root" password="123456" host="localhost" port="3306" #需备份的数据库,数组 db=("test") #备份时加锁方式, #MyISAM为锁表--lock-all-tables, #InnoDB为锁行--single-transaction lock="--single-transaction" mysql_path="/usr/local/mysql" backup_path="${mysql_path}/backup" date=$(date +%Y-%m-%d_%H-%M-%S) day=15 backup_log="${mysql_path}/backup.log" #建立备份目录 if [ ! -e $backup_path ];then mkdir -p $backup_path fi #删除以前备份 find $backup_path -type f -mtime +$day -exec rm -rf {} \; > /dev/null 2>&1 echo "开始备份数据库:${db[*]}" #备份并压缩 backup_sql(){ dbname=$1 backup_name="${dbname}_${date}.sql" #-R备份存储过程,函数,触发器 mysqldump -h $host -P $port -u $user -p$password $lock --default-character-set=utf8 --flush-logs -R $dbname > $backup_path/$backup_name if [[ $? == 0 ]];then cd $backup_path tar zcpvf $backup_name.tar.gz $backup_name size=$(du $backup_name.tar.gz -sh | awk '{print $1}') rm -rf $backup_name echo "$date 备份 $dbname($size) 成功 " else cd $backup_path rm -rf $backup_name echo "$date 备份 $dbname 失败 " fi } #循环备份 length=${#db[@]} for (( i = 0; i < $length; i++ )); do backup_sql ${db[$i]} >> $backup_log 2>&1 done echo "备份结束,结果查看 $backup_log" du $backup_path/*$date* -sh | awk '{print "文件:" $2 ",大小:" $1}'

优秀的个人博客,低调大师

centos 6.5下KVM环境搭建

一、操作系统配置 1. 使用root权限登录 2. 修改内核模式为兼容内核启动 vim /boot/grub/grub.conf主要修改default=1 3. 关闭selinux 两种方式:1.使用setenforce 0命令:立即生效,重启后失效。 2.修改配置文件,vim /etc/selinux/config:重启后生效。主要修改SELINUX=disabled注:可以使用getenforce命令查看selinux状态 4.关闭防火墙 service iptables stop chkconfig iptables off service iptables status二、虚拟化环境搭建 1.查看cpu是否支持全虚拟化 egrep ‘(vmx|svm)’ /proc/cpuinfo有显示输出,表示支持 2.安装必要的安装包 安装包 作用 qumu-kvm KVM核心模块 libvirt 虚拟机管理工具,对虚拟机进行操作的集成各种接口库函数的中间件 python-virtinst 记录创建VM的xml文件 bridge-utils 网桥支持工具 virt-viewer 图形查看功能 virt-manager 安装图形界面管理虚拟机,virt-manager通过libvirt实现对虚拟机的操作 检查这些包是否安装 rpm -q qemu-kvm libvirt python-virtinst virt-viewer virt-manager bridge-utils 安装这些包 yum -y install qemu-kvm libvirt python-virtinst virt-viewer virt-manager bridge-utils三、查看虚拟化环境 1.重启libvirt服务: service libvirtd restart 2.查看虚拟化环境: virsh -c qemu:///system list 3.查看kvm模块支持:lsmod | grep kvm 4.查看虚拟工具版本: virsh –version virt-install –version ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm qemu-kvm -version四、虚拟网桥配置为了使KVM的虚拟机可以使用同一网段内网,配置虚拟网桥 1.首先关闭NetworkManager(此服务会使配置无效) service NetworkManager stop chkconfig NetworkManager off service NetworkManager status 2.创建网桥br0 3.修改网卡文件及网桥文件 网卡文件: 网桥文件: 4.重启网络服务 service network restart(必须在关闭了NetworkManager后) 5.查看网络信息 ifconfig brctl show至此KVM环境搭建完毕五、搭建VNC使用VNC工具远程可视化操作 1.查看是否已经安装 rpm -q vnc vnc-server 2.安装VNC yum -y install vnc vnc-server 3.设置VNC密码 首先:vncserver 然后:vncpasswd,输入两次密码注:如果在使用vncserver命令时没有反应或者提示未安装(反正我碰到了),则使用yum install *vncserver*命令安装一些包,就可以了。 4.修改配置文件配置桌面类型: vim ~/.vnc/xstartup配置账号,分辨率,连接方式 vim /etc/sysconfig/vncservers 5.配置防火墙,允许VNC连接 本文章开始已经关闭了防火墙。 若未关闭,vnc server监听从5900开始,若防火墙缺省则不允许连接这些端口,所以需要在防火墙文件里配置。 此处对应用户账号配置只打开了5901端口。 重启防火墙:service iptables restart(若防火墙不设置关闭的话) 6.设置服务自启动 chkconfig vncserver on 7.windows主机客户端vnc viewer:1代表的就是5901端口至此VNC搭建完毕 本文转自 chengxuyonghu 51CTO博客,原文链接:http://blog.51cto.com/6226001001/1895863,如需转载请自行联系原作者

优秀的个人博客,低调大师

CentOS中 mount 命令的用法

mount 的命令参数有很多,下面只介绍下一些常用的参数: mount 的命令格式: mount [-t] [-o] device dir 例如要将镜像挂载到指定文件夹 /mnt/cdrom下: mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom 1.-t 指定挂载文件系统的类型,通常不需要指定。mount 命令会自动选择正确的类型。其中常用的文件系统类型有以下: 光盘或光盘镜像:iso9660 Windows NT ntfs文件系统:ntfs DOS fat16文件系统:msdos Windows 9x fat32文件系统:vfat Mount Windows文件网络共享:smbfs UNIX(LINUX) 文件网络共享:nfs 2.-o options 主要用来描述设备或档案的挂载方式。常用的参数有: loop:用来把一个文件当成硬盘分区挂接上系统 ro:采用只读方式挂接设备 rw:采用读写方式挂接设备 iocharset:指定访问文件系统所用字符集 3.device 该处是指要挂接(mount)的设备。 4.dir 该处是选择设备在系统上的挂接点即:mount point。 如果需要linux下需要查看更多关于mount 命令,使用命令: man mount。

优秀的个人博客,低调大师

CentOS 7 Docker Swarm: pending解决

在Docker加入Swarm集群之后,跨主机容器不能正常通信,查看docker info看到 swarm:pending 原因是因为swarm node无法接收到leader传来的指令,就是防火墙问题引起. 解决: 1 2 yum-y install iptable.service iptables-save 然后编辑/etc/sysconfig/iptables,删除 1 2 -AINPUT-jREJECT--reject-withicmp-host-prohibited -AFORWARD-jREJECT--reject-withicmp-host-prohibited 执行 service docker restart 本文转自 rong341233 51CTO博客,原文链接:http://blog.51cto.com/fengwan/1955526

优秀的个人博客,低调大师

CentOS离线安装htop源码包

在htop官网下载源码包,下载地址如下(本人下载的是2.0.2): http://hisham.hm/htop/releases/ 用工具上传到需要安装的服务器上,本人使用的是WinSCP 在服务器上解压源码包:tar -zxvf htop-2.0.2.tar.gz 跳转到源码包目录:cd htop-2.0.2 生成Makefile文件并指定后续安装时的安装路径:./configure –prefix=/usr/local/htop-2.0.2/ 编译源代码:make 安装:make install 跳转到安装的目录的bin目录:cd /usr/local/htop-2.0.2/bin 试运行htop:./htop 编辑profile文件:vi /etc/profile 移动到文件末尾,按Insert键进入编辑模式,增加以下内容: export PATH=$PATH:/usr/local/htop-2.0.2/bin 按Esc退出编辑模式,输入:wq保存并退出编辑器 使修改后的profile文件生效:source /etc/profile 查看系统当前PATH变量的值:echo $PATH 运行htop:htop 安装期间遇到的问题 使用configure生成Makefile文件失败,报错信息如下(只截取错误部分): checking for addnwstr in -lncursesw6... no checking for addnwstr in -lncursesw... no checking for addnwstr in -lncurses... no configure: error: You may want to use --disable-unicode or install libncursesw. 显示尝试configure增加–disable-unicode参数:./configure –prefix=/usr/local/htop-2.0.2/ –disable-unicode 如果出现以下报错信息,需要安装libncurses: configure: error: missing libraries: libncurses libncurses的下载地址如下,安装过程可以参考这次离线安装(如果是无法连接互联网的环境):http://ftp.gnu.org/gnu/ncurses/ 安装之后如果依然提示: configure: error: You may want to use --disable-unicode or install libncursesw. 可以尝试步骤1增加–disable-unicode参数 总结 虽然是一次在RedHat上离线安装htop的源码包,但是其实并未使用RedHat上特有的指令,也适用于其他Linux/Unix系统上离线安装源码包。

优秀的个人博客,低调大师

CentOS下修改OpenSSH,22端口

OpenSSH,22端口,内部敏感服务对外开放存在风险,容易引起安全问题;百度站长学院建议修改!修改OpenSSH,22端口的二种方法如下: 第一种: 01假如要改Linux SSH的默认端口(22),那么你只要修改:/etc/ssh/sshd_config中Port 22,这里把22改成自己要设的端口就行了,不过千万别设和现已有的端口相同哦,以防造成未知后果。 02假如要限制SSH登陆的IP,那么可以如下做: 先:修改/etc/hosts.deny,在其中加入sshd:ALL 然后:修改:/etc/hosts.allow,在其中进行如下设置:sshd:192.168.0.241 这样就可以限制只有192.168.0.241的IP通过SSH登陆上LINUX机器了。当然在做为服务器方面,我都不装gnome和KDE的,而且很多东东都不装,这样增加安全系数。 第二种: 首先修改配置文件 vi /etc/ssh/sshd_config 找到#Port 22一段,这里是标识默认使用22端口,修改为如下: Port 22 Port 50000 然后保存退出 执行/etc/init.d/sshd restart 这样SSH端口将同时工作与22和50000上。 现在编辑防火墙配置:vi /etc/sysconfig/iptables 启用50000端口。 执行/etc/init.d/iptables restart 现在请使用ssh工具连接50000端口,来测试是否成功。如果连接成功了,则再次编辑sshd_config的设置,将里边的Port22删除,即可。 之所以先设置成两个端口,测试成功后再关闭一个端口,是为了方式在修改conf的过程中,万一出现掉线、断网、误操作等未知情况时候,还能通过另外一个端口连接上去调试以免发生连接不上必须派人去机房,导致问题更加复杂麻烦。自己不会修改不要去测试哟

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册