首页 文章 精选 留言 我的

精选列表

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

CentOS下日期时间修改方法

日期时间修改 1. 查看时间和日期 [root@qdy ~]# date 2017年 12月 04日 星期一 10:02:12 CST 或 1 2 [root@qdy ~]# clock 2017年12月04日 星期一 10时03分30秒 -0.517451 seconds 显示日历 1 2 3 4 5 6 7 8 9 [root@qdy ~]# cal 十二月 2017 日 一 二 三 四 五 六 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 31 2.设置时间和日期 例如:将系统日期设定成2017年11月3日的命令 1 2 [root@qdy ~]# date -s 2017/12/04 2017年 12月 04日 星期一 00:00:00 CST 将系统时间设定成下午11:45:50的命令 1 2 [root@qdy ~]# date -s 10:12:50 2017年 12月 04日 星期一 10:12:50 CST 3. 设置完系统时间后,还需要同步到硬件时钟上,将当前时间和日期写入BIOS,避免重启后失效, [root@qdy ~]#hwclock -w 或 [root@qdy ~]#clock --systohc 上面命令中,--hctosys表示Hardware Clock to SYStem clock。

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

yum升级centos6.4内核

一、导入官方Key [root@i-ylibhc7r ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 二、升级指定的内核,下载官方源 [root@i-ylibhc7r ~]# wget http://hkg.mirror.rackspace.com/elrepo/kernel/el6/x86_64/RPMS/kernel-lt-4.4.101-1.el6.elrepo.x86_64.rpm --2017-11-30 20:39:14-- http://hkg.mirror.rackspace.com/elrepo/kernel/el6/x86_64/RPMS/kernel-lt-4.4.101-1.el6.elrepo.x86_64.rpm Resolving hkg.mirror.rackspace.com... 180.150.156.88 Connecting to hkg.mirror.rackspace.com|180.150.156.88|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 40335112 (38M) [application/x-rpm] Saving to: “kernel-lt-4.4.101-1.el6.elrepo.x86_64.rpm” 100%[=============================================================================================================================>] 40,335,112 5.80M/s in 6.6s 2017-11-30 20:39:22 (5.80 MB/s) - “kernel-lt-4.4.101-1.el6.elrepo.x86_64.rpm” saved [40335112/40335112] 小结:这里给大家介绍的是香港的kernel源,下载速度很快,一般比官方也就慢个2天左右更新。 三、安装kernel的rpm包 [root@i-ylibhc7r ~]#yum install -y kernel-lt-4.4.101-1.el6.elrepo.x86_64.rpm Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile epel/metalink | 6.5 kB 00:00 * base: mirrors.sohu.com * epel: mirrors.sohu.com * extras: mirrors.cn99.com * rpmfusion-free-updates: mirror.lzu.edu.cn * rpmfusion-nonfree-updates: mirror.lzu.edu.cn * updates: mirrors.sohu.com epel | 4.7 kB 00:00 epel/primary_db | 6.0 MB 00:04 Setting up Install Process Examining kernel-lt-4.4.101-1.el6.elrepo.x86_64.rpm: kernel-lt-4.4.101-1.el6.elrepo.x86_64 Marking kernel-lt-4.4.101-1.el6.elrepo.x86_64.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package kernel-lt.x86_64 0:4.4.101-1.el6.elrepo will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================================================================= Package Arch Version Repository Size ======================================================================================================================================================================= Installing: kernel-lt x86_64 4.4.101-1.el6.elrepo /kernel-lt-4.4.101-1.el6.elrepo.x86_64 174 M Transaction Summary ======================================================================================================================================================================= Install 1 Package(s) Total size: 174 M Installed size: 174 M Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : kernel-lt-4.4.101-1.el6.elrepo.x86_64 1/1 Verifying : kernel-lt-4.4.101-1.el6.elrepo.x86_64 1/1 Installed: kernel-lt.x86_64 0:4.4.101-1.el6.elrepo Complete! 四、、编辑grub.conf文件,修改Grub引导顺序 因为一般新安装的内核在第一个位置,所以设置default=0,表示启动新内核 五、重启服务器 总结: 1、经过本人验证,这个最快升级内核的方法,参考网址:http://blog.csdn.net/reyleon/article/details/52229293 2、官方kernel源地址:http://elrepo.reloumirrors.net/kernel/ 3、香港的kernel源地址:http://hkg.mirror.rackspace.com/elrepo/kernel/

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

解决centos ping不通外网问题

确认三件事情 一。本地ip 二。网关 三。dns 一就不说了,设置好本地ip和掩码就行了,二网关 添加默认网关,命令:route add defaule gw 192.168.1.1 这是 你用route命令查看最下面会有一条默认路由,走192.168.1.1网关,当然这个网关是根据你本地的网段决定的,三 就是dns了,dns也需要到配置文件修改,#vi etc/resolv.conf 文件,我的文件默认是空白的。添加一条dns记录就可以了,比如我在河南,我添加:nameserver 222.85.85.85 然后保存退出,OK ping通外网了。 顺便记一下几个命令: 删除默认路由 : route 命令 设置和查看路由表都可以用 route 命令,设置内核路由表的命令格式是: # route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] 其中: add : 添加一条路由规则 del : 删除一条路由规则 -net : 目的地址是一个网络 -host : 目的地址是一个主机 target : 目的网络或主机 netmask : 目的地址的网络掩码 gw : 路由数据包通过的网关 dev : 为路由指定的网络接口 route 命令使用举例 添加到主机的路由 # route add -host 192.168.1.2 dev eth0:0 # route add -host 10.20.30.148 gw 10.20.30.40 添加到网络的路由 # route add -net 10.20.30.40 netmask 255.255.255.248 eth0 # route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41 # route add -net 192.168.1.0/24 eth1 添加默认路由 # route add default gw 192.168.1.1 删除路由 # route del -host 192.168.1.2 dev eth0:0 # route del -host 10.20.30.148 gw 10.20.30.40 # route del -net 10.20.30.40 netmask 255.255.255.248 eth0 # route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41 # route del -net 192.168.1.0/24 eth1 # route del default gw 192.168.1.1

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

CentOS 6.9之LVM创建,扩容

在系统安装时候大多情况下有可能因为考虑不周,导致服务器空间不足问题,这时候如果没有lvm逻辑卷管理工具的话,往往就是查找服务器大文件删除之,或者应用迁移。但如果有了lvm逻辑卷管理,只需要新增硬盘,并将新硬盘的空间划分到不足的分区及可,如果空间浪费也可以减少对应分区的空间,这样可大大增加对空间的利用率 在安装系统时使用lvm逻辑卷管理,创建方法如下: 在系统安装到硬盘分区时选择“创建自定义布局” 首先创建一个/boot分区,/boot分区不能在逻辑卷中,所以先需要创建一个分区给/boot,选中空闲的空间,点击创建,然后点击标准分区,点创建 创建/boot分区,挂载点选择/boot,大小设定为500,单位为MB,然后固定大小,点击创建,至此/boot分区创建完成 创建lvm物理卷点击剩余的空间,创建,创建时选择“lvm物理卷” 创建lvm物理卷,文件系统类型默认,空间大小使用全部可用空间,点击创建,至此物理卷创建完毕 从lvm物理卷创建lvm逻辑卷组,选中刚创建的lvm物理卷,然后点创建,创建时选择lvm卷组 从lvm逻辑卷组创建lvm逻辑卷,打开创建卷组对话框,输入卷组名称(随意,看懂就行),然后在下面添加卷组中包含的lvm逻辑卷,我这里在当前卷组分配了2048的swap,再把剩余所有空间分配到了根分区 效果图 效果图 通过以上步骤我们已经完成了在系统安装时采用lvm逻辑卷管理的方式 在已有系统中增加新硬盘并使用逻辑卷管理: 新增一块新硬盘(我这里使用的是虚拟机,新增硬盘步骤略) 将新硬盘初始化为物理卷(我这里新添加的新硬盘为/dev/sdb) pvcreate /dev/sdb 结果为“Physical volume "/dev/sdb" successfully created”代表创建成功 创建逻辑卷组 vgcreate VolGroup2 /dev/sdb VolGroup2为逻辑卷组的名称,/dev/sdb我们前面已经初始化成物理卷,所以这里我们指定的是物理卷。整条命令的意思是创建一个名为VolGroup2的逻辑卷组,并将/dev/sdb物理卷加入到此逻辑卷组中 结果为“Volume group "VolGroup2" successfully created”代表创建成功 创建逻辑卷 lvcreate -L 5G -n LogVol01 VolGroup2 此命令的意思是从VolGroup2卷组创建一个名为LogVol01的逻辑卷 结果为“Logical volume "LogVol01" created”表示逻辑卷创建成功,成功后会在/dev/mapper目录下生成一个名为VolGroup2-LogVol01名称的逻辑卷文件 格式化刚创建的VolGroup2-LogVol01逻辑卷 mkfs.ext4 /dev/mapper/VolGroup2-LogVol01 将格式化后的逻辑卷挂载到我们服务器的/data目录 mkdir /data blkid | grep VolGroup2-LogVol01 记住UUID 编辑/etc/fstab文件,在文件最后加入 UUID=c0d28e46-c8b8-4d39-a355-b155e2852e36 /data ext4 defaults 0 0 mount -a 效果如下 刚才新增的硬盘为10G,只分配了5G的空间给VolGroup2-LogVol01,我们现在再把其它剩余的空间用来给根分区扩容,操作步骤如下: 从VolGroup2创建一个新的逻辑卷,并使用剩余所有空间 lvcreate-l 100%FREE-n LogVol02 VolGroup2 将新创建的逻辑卷格式化,并挂载到/data2 mkdir /data2 mkfs.ext4 /dev/mapper/VolGroup2-LogVol02 blkid | grep VolGroup2-LogVol02 echo "UUID=7f427618-22bd-4e98-90ff-7f782d067644 /data2 ext4 defaults 0 0" >> /etc/fstab mount -a 效果如下 增加新硬盘为给现有lvm逻辑卷扩容空间: 新增一块新硬盘(我这里使用的是虚拟机,新增硬盘步骤略) 把新硬盘初始化成物理卷 pvcreate /dev/sdc 查看VolGroup2逻辑卷组信息 vgdisplay VolGroup2 从以上信息可以看出VolGroup2共有10G,也就是我们添加的第二块硬盘的大小 扩容VolGroup2的大小,用我们第三块盘去扩容 vgextend VolGroup2 /dev/sdc 查看扩容后的大小,为25G 通过上一步我们已经将VolGroup2 扩容到了25G,也就意味着还有剩余空间没有被分配到逻辑卷,这时候我们可以利用这些剩余空间来增加逻辑卷的大小,但只能增加VolGroup2中的逻辑卷,而VolGroup1中的逻辑卷还需要另外的新硬盘来扩展VolGroup1的空间 lvextend -L+5G /dev/mapper/VolGroup2-LogVol01 通过上面的命令,我们将VolGroup2-LogVol01逻辑卷增加了5G的空间 这时候我们实际显示还是原来的空间,我们需要再执行下面的命令 resize2fs /dev/mapper/VolGroup2-LogVol01 最后再查看空间,这时候/data增加了5G 将第三块硬盘的剩余所有空间,扩展到/data2 lvextend -l+100%FREE /dev/mapper/VolGroup2-LogVol02 resize2fs /dev/mapper/VolGroup2-LogVol02 结果如下 这时候如果我们要扩容根分区的容量,同样的道理,只需要再新增一块新硬盘,然后把硬盘初始化成物理卷,再把物理卷加入到VolGroup1的组里面,然后就可以扩容根分区了 执行以下命令 pvcreate /dev/sdd vgextend VolGroup1 /dev/sdd lvextend -l+100%FREE /dev/mapper/VolGroup1-LogVol01 在执行上面命令之前我已经对/dev/sdd的空间划分了3G给交换分机文件,详情见下面b步骤 resize2fs /dev/mapper/VolGroup1-LogVol01 通过上面命令,根分区也扩容了2G,结果如下 经测试如果要对lvm的交换分机进行扩容,操作如下: lvextend -l+3G /dev/mapper/VolGroup1-LogVol00 swapoff -a mkswap/dev/mapper/VolGroup1-LogVol00 swapon/dev/mapper/VolGroup1-LogVol00 这时候交换结果如下:

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

CentOS下安装JDK1.8

下载官方的软件包,参考地址:http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz?AuthParam=1511877655_249331a15c5f013ed07d656d98e82d72其中后面的AuthParam参数为本次下载的即时参数,自己记得在下载的时候进行更改 1 wget http: //download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz?AuthParam=1511877655_249331a15c5f013ed07d656d98e82d72 创建并进入/usr/local/java/文件夹,将软件包进行解压 1 tar -zxvf jdk-8u151-linux-x64.tar.gz 配置环境变量并使其生效 1 2 3 4 5 vi /etc/profile #在该文件中导入环境变量,其中HOME为jdk解压根目录 export JAVA_HOME=/usr/local/java/jdk1.8.0_151 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 验证环境安装 1 2 java javac

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

centos6.5 yum安装redis

1.yum添加epel源 yum install epel-release 2.安装yum yum install redis 3.Redis 服务端配置——Could not connect to Redis at 127.0.0.1:6379: Connection refused vim /etc/redis.conf 找到redis.conf 并修改daemonize no(第128行) 为daemonizeyes :set number(显示行号) . 4.开启客户端要确保服务端启动 redis-server /etc/redis.conf 5.redis-server -v 查看版本 redis-server /etc/redis.conf 启动 redis-cli ping PONG 测试启动 redis-cli ping 返回PONG,启动成功。 redis-cli 链接

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

CentOS查看、修改SELinux的状态

SELinux(Security-EnhancedLinux) 是美国国家安全局(NSA)对于强制访问控制的实现,是linux历史上最杰出的新安全子系统。但是我们一般都不用它,因为它管的东西太多了,想做安全可以用防火墙等其他措施。 我们可以通过查看配置文件的命令cat /etc/selinux/config来查看状态, [root@mazhonghua ~]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 12 发现SELinux共有3个状态enforcing (执行中)、permissive (不执行但产生警告)、disabled(关闭)。 我们可以通过修改配置文件来修改SELinux的状态 [root@mazhonghua ~]# sed -i s#SELINUX=enforcing#SELINUX=disabled# /etc/selinux/config [root@mazhonghua ~]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted 1 2 3 4 9 5 6 7 8 10 11 12 13

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

Centos7 中安装 gcc

今天在安装 Nodejs8.7 的时候,报了一个警告: WARNING: C++ Compiler too old, need g++ 4.9.4 or clang++ 3.4.2 (CXX=g++) 然后,查了一下自己系统上安装的版本:4.8.5 好吧,不能用 yum 升级了,那就手动安装了吧 一、选择需要升级的版本 gcc ftp 下载地址列表 (我选择了5.4.0) 二、获取安装包并解压 cd /usr/local/src wgethttps://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.bz2 tar -jxvfgcc-5.4.0.tar.bz2 注:bz2是一种压缩文件格式,若无法解压,安装 bzip2 即可:yum -y install bzip2 三、进入解压后的gcc文件夹,下载供编译需求的依赖项 cd gcc-build-5.4.0 ./contrib/download_prerequisites 四、建立一个文件夹存放编译文件 mkdir gcc-build-5.4.0 cd gcc-build-5.4.0 五、生成 Makefile 文件 make 注:这个过程非常耗时,我的1核1G内存大约花了一个来小时 六、安装 sudo make install 七、重启服务器,验证版本 gcc -v 等了那么久,总算是成功了,很激动对不对? 但是! 我执行到上边以后,屁颠屁颠的跑去编译 nodejs 了,耍出了一个错误: /usr/local/src/node-v8.7.0/out/Release/mksnapshot: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/local/src/node-v8.7.0/out/Release/mksnapshot) 编译失败~ 劳资等了30分钟 好吧,出了问题终究是要解决的 问题原因:升级gcc时,生成的动态库没有替换老版本 gcc 动态库导致的 解决方案:将gcc最新版本的动态库替换系统中老版本的动态库。 (1). 查找编译gcc时生成的最新动态库 find / -name "libstdc++.so*" (2) 将找到的动态库libstdc++.so.6.0.21复制到/usr/lib64 cp /usr/local/src/gcc-5.4.0/gcc-build-5.4.0/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64 (3). 切换工作目录至/usr/lib64,删除原来的软连接, 将默认库的软连接指向最新动态库。 cd /usr/lib64 rm -rf libstdc++.so.6 ln -s libstdc++.so.6.0.21 libstdc++.so.6 到这里才算是收工了。

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

centos下svn分组权限管理

1、打开svn安装目录。可以通过ps aux|grep svn 查找svn的安装目录 2、编辑svnserve.conf, 基本保留这些内容 [general] anon-access=none auth-access=write password-db=passwd // 这里可以填写具体路径比如:/z/svn/passwd 这样多个版本库可以使用同一套配置 authz-db=authz // 可以写具体路径 realm=repos [sasl] 3、编辑passwd文件, 配置用户名密码 [users] jk = jk123 ybh = ybh123 wus = wus123456 test = test123456 4、配置authz文件, 管理授权 [groups] //这里是分组权限管理,可以根据文件夹名字命名分组信息,分配下面人员账号 android=wus backend=jk,ybh ios=zhangc,hubert test=test lcej=jk,ybh [/] // 这里是根目录下权限,jk拥有根目录下可读可写权限(rw) jk=rw [soft:/] // jk拥有soft目录下可读可写的权限 jk=rw [soft:/Android] // 安卓组的全体成员拥有soft目录下Android目录下的可读写权限,这里安卓组只有wus @android=rw [soft:/Backend] // 后端组的全体成员拥有soft目录下Backend目录下的可读写权限,这里后端组有jk,ybh @backend=rw [soft:/Backend/lcyj-base] // 测试组的全体成员拥有soft目录下/Backend/lcyj-base目录下的只可读权限,这里测试组只有test @test=r [soft:/IOS] // IOS组的全体成员拥有soft目录下/IOS目录下的可读写权限,这里IOS组有zhangc,hubert @ios=rw [soft:/lcej] // lcej组的全体成员拥有soft目录下lcej目录下的可读写权限,这里lcej组有jk,ybh @lcej=rw 5、重启svn服务器。 /usr/local/nginx/sbin/nginx -s stop /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

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

CentOS7上配置ELK

一、Elasticsearch 1,从Elastic下载包到本地后解压缩。 2,Elasticsearch不让从root用户启动,所以需要单独建个用户 1 2 useradd elastic chown -Relastic:elasticelasticsearch-5.3.0 3,允许外网访问,修改conf里elasticsearch.yml,解注释: 1 network.host:0.0.0.0 4,启动elasticsearch 1 2 su elastic shelasticsearch-5.3.0 /bin/elasticsearch -d 5,验证,浏览器访问服务器9200端口,应看到类似: 1 2 3 4 5 6 7 8 9 10 11 12 13 { "name":"ufJRIlo", "cluster_name":"elasticsearch", "cluster_uuid":"_na_", "version":{ "number":"5.3.0", "build_hash":"3adb13b", "build_date":"2017-03-23T03:31:50.652Z", "build_snapshot":false, "lucene_version":"6.4.1" }, "tagline":"YouKnow,forSearch" } 二、LogStash 1,从elastic官网下包到本地解压。 2,创建配置文件logstash.conf 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 input{ file{ path=>[ "/tmp/*.log" , "/root/zhoulei/new/loginserver/logs/packages/*ACCOUNT.log" ] exclude=>[ "*DEBUG.log" , "*INFO.log" , "*ERROR.log" ] start_position=> "beginning" } } filter{ grok{ match=>{ "message" => "%{DATA:logTime}\|%{DATA:gameId}\|%{DATA:serverId}\|%{DATA:version}\|%{DATA:logType}\|%{DATA:behavior}\|%{DATA:channelId}\|%{DATA:clientVersion}\|%{DATA:platform}\|%{DATA:accountId}\|%{DATA:accountName}\|%{DATA:roleId}\|%{DATA:roleName}\|%{DATA:etc}\|*" } } date{ match=>[ "logTime" , "yyyy-MM-ddHH:mm:ss.SSS" ] target=> "@timestamp" locale=> "en" remove_field=>[ "logTime" ] } if ([logType]== "SERVER" ){ mutate{ split=>[ "message" , "|" ] add_field=>{ "online" => "%{[message][22]}" "onlineMax" => "%{[message][23]}" } remove_field=>[ "onlineNum" ] remove_field=>[ "maxNum" ] } mutate{ convert=>{ "online" => "integer" } convert=>{ "onlineMax" => "integer" } } } } output{ elasticsearch{ hosts=>[ "127.0.0.1:9200" ] } } 3,创建服务启动后台运行脚本 1 2 3 #!/bin/bash nohup . /logstash -flogstash.conf> nohup .out& 三、Kibana 1,下载安装包,可以下windows版,解压。 2,编辑conf里kibana.yml,设置elasticsearch服务url 1 elasticsearch.url: "http://127.0.0.1:9200/" 3,验证服务,浏览器访问kibana所在机器的5601端口,可以看到Kibana页面。 本文转自 zl1030 51CTO博客,原文链接:http://blog.51cto.com/zl1030/1919697

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

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中就会有数据了

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

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

用户登录
用户注册