Rootop 服务器运维与web架构

2017-05-27
发表者 Venus
elk日志分析安装及简单配置已关闭评论

elk日志分析安装及简单配置

服务器信息:
ip     :   192.168.1.50
系统:centos7.3 x64
elk官网:https://www.elastic.co/downloads
elk版本:5.4.0

elk 3个组件全部安装到一台机器测试

环境配置:
1、修改主机名及hosts映射

[root@elk ~]# hostname elk
[root@elk ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.50 elk
[root@elk ~]# cat /etc/hostname
elk

2、安装jdk1.8
过程略…

[root@elk ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

3、iptables停掉,firewalld停掉(安装完成后手动开放相应端口)。

安装elasticsearch:

[root@localhost ELK]# rpm -ivh elasticsearch-5.4.0.rpm
warning: elasticsearch-5.4.0.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Preparing... ################################# [100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
Updating / installing...
 1:elasticsearch-0:5.4.0-1 ################################# [100%]
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
 sudo systemctl daemon-reload
 sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
 sudo systemctl start elasticsearch.service

修改elasticsearch配置文件:

[root@elk ~]# cat /etc/elasticsearch/elasticsearch.yml | grep -v "#"
node.name: elk # 主机名
path.data: /home/elk/data # 数据目录
path.logs: /home/elk/logs # 日志目录
network.host: 192.168.1.50 # 监听地址
http.port: 9200 # 监听端口
discovery.zen.ping.unicast.hosts: ["elk"] # 手动发现节点
http.cors.enabled: true # 允许跨域
http.cors.allow-origin: "*" # 允许跨域

# 创建目录

[root@elk ~]# mkdir -p /home/elk/data
[root@elk ~]# mkdir -p /home/elk/logs

# 写入权限,否则/var/log/message里会提示拒绝访问
[root@elk ~]# chmod -R 777 /home/elk

# 文件打开数
[root@elk ~]# cat /etc/security/limits.conf | grep -v "#" | grep -v "^$"
* soft nofile 65535
* hard nofile 65535
# java命令软连接,否则启动es的时候日志报找不到java
[root@localhost ~]# ln -s /usr/local/jdk/bin/java /usr/local/bin/java
# 开机启动
[root@elk ~]# systemctl enable elasticsearch.service

# 启动elasticsearch
[root@elk ~]# systemctl start elasticsearch.service

# 查看elasticsearch端口状态
[root@elk ~]# netstat -tnlp | grep -E "9200|9300"
tcp6 0 0 192.168.1.50:9200 :::* LISTEN 5419/java
tcp6 0 0 192.168.1.50:9300 :::* LISTEN 5419/java


安装elasticsearch图形插件:
先安装nodejs

[root@elk ~]# yum install -y epel-*
[root@elk ~]# yum install -y nodejs

# 安装node.js构建工具
[root@elk ~]# npm install -g grunt

# 克隆elasticsearch-head
[root@elk ~]# cd /usr/local/
[root@elk local]# git clone git://github.com/mobz/elasticsearch-head.git
[root@elk local]# cd elasticsearch-head/
[root@elk elasticsearch-head]# npm install phantomjs-prebuilt@2.1.13 --ignore-scripts

# 修改 _site/app.js 里的地址
[root@elk elasticsearch-head]# vi _site/app.js

this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";
改为
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.1.50:9200";

# 启动 elasticsearch-head
[root@elk elasticsearch-head]# grunt server &
# 监听在9100端口

安装logstash:

[root@elk ELK]# ln -s /usr/local/jdk/bin/java /usr/bin/java
[root@elk ELK]# rpm -ivh logstash-5.4.0.rpm

# 创建配置文件目录
[root@elk ~]# mkdir /usr/share/logstash/conf
[root@elk ~]# cd /usr/share/logstash/conf

[root@elk conf]# cat test.conf
input {
 file {
 type => "nginx_log"
 path => "/var/log/nginx/access.log"
 }
}
output {
 elasticsearch {
 hosts => "192.168.1.50"
 index => "nginx-access-%{+YYYY.MM.dd}"
 }
 stdout {
 codec => rubydebug
 }
}

# 启动logstash
[root@elk conf]# /usr/share/logstash/bin/logstash -f /usr/share/logstash/conf/test.conf &

# yum 安装nginx测试,启动nginx,访问以下80端口,产生访问日志,去es里查看

安装kibana:

[root@elk ELK]# rpm -ivh kibana-5.4.0-x86_64.rpm
修改配置文件:
[root@elk ~]# cat /etc/kibana/kibana.yml | grep -v "#" | grep -v "^$"
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://elk:9200"

# 启动kibana ,端口5601
[root@elk ELK]# systemctl start kibana

浏览器访问

PS:
项目环境的jdk可能不会与elk的jdk版本一直,就会存在两个版本jdk
logstash可以修改java版本,通过在/usr/share/logstash/bin/logstash头部添加:
#!/bin/sh
JAVACMD=/usr/local/jdk1.8.0_131/bin/java

在/etc/logstash/startup.options 配置中发现可以修改jdk,但是始终没有生效。还是选择上面方法。
# After changing anything here, you need to re-run $LS_HOME/bin/system-install
# as root to push the changes to the init script.
################################################################################

# Override Java location
JAVACMD=/usr/local/jdk1.8.0_131/bin/java

最新的5.4版本要求jdk1.8,如果低于1.8,组件无法启动。

2017-05-27
发表者 Venus
dnsmasq简单配置使用已关闭评论

dnsmasq简单配置使用

[root@elk ~]# yum install -y dnsmasq

# 主配置文件
[root@elk ~]# cat /etc/dnsmasq.conf | grep -v “#” | grep -v “^$”

# 监听地址,必须指定具体ip
listen-address=192.168.1.50
no-hosts
conf-dir=/etc/dnsmasq.d

#all-servers表示对以下设置的所有server发起查询
#选择回应最快的一条作为查询结果返回
all-servers
server=8.8.8.8
server=114.114.114.114

# 手动指定解析
address=/www.rootop.org/192.168.1.1
address=/elk/192.168.1.50

# 启动,开机启动
[root@elk ~]# systemctl enable dnsmasq
[root@elk ~]# systemctl start dnsmasq

2017-04-25
发表者 Venus
windows下实现端口转发已关闭评论

windows下实现端口转发

用到passport这个软件

项目地址:
https://sourceforge.net/projects/pjs-passport/

下载安装,安装略。
启动的时候确保是用管理员权限启动,否则无法正常管理服务状态。

第一次启动,没有安装服务,提示安装。可以通过GUI或者命令行安装服务。

安装好的服务。

可以配置tcp和udp转发。第一个参数是监听地址,监听端口,目的地址,目的端口,协议类型。

启动服务即可。

# 查看tcp 8888
C:\Users\Administrator>netstat -an | find “8888”
TCP 0.0.0.0:8888 0.0.0.0:0 LISTENING

# 查看udp 53
C:\Users\Administrator>netstat -an | find “53” | find “UDP”
UDP 0.0.0.0:53 *:*

配置文件默认保存在安装目录下
C:\Program Files (x86)\PJS\PassPort\PassPortConfig.xml
有兴趣自己去看看

2017-04-24
发表者 Venus
linux下实现端口转发(非iptables)已关闭评论

linux下实现端口转发(非iptables)

linux下实现端口转发,不通过iptables实现

下载地址:
https://boutell.com/rinetd/http/rinetd.tar.gz

[root@localhost ~]# tar zxvf rinetd.tar.gz
[root@localhost rinetd]# make
[root@localhost rinetd]# mkdir -p /usr/man/man8
[root@localhost rinetd]# make install
[root@localhost ~]# vi /etc/rinetd.conf
0.0.0.0 80 118.190.21.91 80
#监听地址 监听端口 转发到地址 转发到端口

保存退出
启动服务:

[root@localhost ~]# rinetd -c /etc/rinetd.conf

 查看状态:

[root@localhost ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2403/rinetd

2017-04-21
发表者 Venus
tomcat日志中文乱码及时间差8个小时已关闭评论

tomcat日志中文乱码及时间差8个小时

原文来自:http://blog.csdn.net/u014738683/article/details/53785748

tomcat catalina.out中打印的信息包含中文,中文全部是?问号

解决过程:
1、安装中文语言包,设置语言。

yum install kde-l10n-Chinese #centos7安装中文语言(跟centos6不一样)

cat /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"

还是乱码

2、修改tomcat脚本
vi /usr/local/tomcat/bin/catalina.sh
脚本上面添加一句:
JAVA_OPTS=”-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8″
变为:

#!/bin/sh
JAVA_OPTS="-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"

重启解决

时间差问题:
系统时间及时区都没问题,但是日志里记录的时间相差8个小时
可能原因是跑在docker下,具体原因未知。
解决方法:
依旧修改/usr/local/tomcat/bin/catalina.sh
添加一句(我的方法):
-Duser.timezone=Asia/shanghai
或者(未测试):
-Duser.timezone=GMT+08
变为:

#!/bin/sh
JAVA_OPTS="-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"
JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/shanghai"

重启,日期时间正确了