Rootop 服务器运维与web架构

2019-01-18
发表者 Venus
mysql数据同步到elasticsearch,用于实现产品搜索功能。已关闭评论

mysql数据同步到elasticsearch,用于实现产品搜索功能。

logstash、elasticsearch、kibana安装略,这里用的版本为6.5.1

# 安装jdbc插件 logstash5.X已经集成此插件

[root@localhost ~]# cd /usr/share/logstash/bin

# 查看是否安装jdbc插件

[root@localhost bin]# ./logstash-plugin list | grep jdbc

# 安装jdbc插件

[root@localhost bin]# ./logstash-plugin install logstash-input-jdbc

# 配置logstash,mysql数据同步到elasticsearch

1、创建logstash配置文件 mysql-sync-es.conf :

input {
  stdin {
  }
  
  jdbc {
      jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/test"
      jdbc_user => "root"
      jdbc_password => "root"
      # 这里需要设置正确的mysql-connector-java jar包路径,从 https://search.maven.org/search?q=mysql-connector 可以下载
      jdbc_driver_library => "/etc/logstash/mysql-connector-java-8.0.13.jar"
      jdbc_default_timezone =>"Asia/Shanghai"
      # the name of the driver class for mysql
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      # 最多取50000条更新的数据
      jdbc_page_size => "50000"
      # 以下对应着要执行的sql的绝对路径
      statement_filepath => "/etc/logstash/sql.sql"
      # 记录上一次运行的时间,用于sql中where条件过滤出新数据。
      last_run_metadata_path => "/root/dockermount/last_value"
      # 定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
      schedule => "* * * * *"
      # 设定ES索引类型
      type => "doc"
  }
}

output {
  elasticsearch {
      # ES IP地址与端口
      hosts => "192.168.10.17:9200"
      # ES索引名称(自己定义的)
      index => "user"
      # 唯一列名,保证更新后的mysql数据同步到es时,es中不会出现重复数据,类似mysql中更新数据的where条件。
      document_id => "%{id}"
  }
  stdout {
      # 以JSON格式输出到控制台
      codec => json_lines
  }
}

2、sql脚本,注意sql不能以分号结束:

SELECT * FROM `user` where `time` >= :sql_last_value

其中:sql_last_value的值就对应last_run_metadata_path => “/root/dockermount/last_value”这个参数的值。

3、最后启动logstash测试:

/usr/share/logstash/bin/logstash -f mysql-sync-es.conf

去kibana中添加user索引就可以查看同步过来的数据了。
测试结果:
logstash每分钟会执行一次sql脚本中的语句,其次logstash会计算下更新的数据条数是否超过配置文件中定义的值。
数据同步及数据更新功能测试通过。

参考过的资料:
http://hi.ktsee.com/697.html
https://blog.csdn.net/laoyang360/article/details/51747266
https://blog.csdn.net/laoyang360/article/details/51793301
https://blog.csdn.net/opera95/article/details/78553743
https://wenchao.ren/archives/393 # 数据重复问题 主键解决

2019-01-17
发表者 Venus
mysql临时开启慢日志记录已关闭评论

mysql临时开启慢日志记录

在不方便重启mysql情况下可以通过设置全局变量实现:

# 查询当前状态

SHOW VARIABLES LIKE '%slow_query%';
SHOW VARIABLES LIKE '%long_query_time%';

# 设置开启,设置sql执行时间超过3秒则记录

SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 3;

PS:
需要断开mysql客户端再次连接,执行SHOW VARIABLES LIKE ‘%long_query_time%’;才能看到修改后的时间。负责还是之前的时间。

2019-01-16
发表者 Venus
利用outpu插件实现将日志提交到指定url,并处理报警。已关闭评论

利用outpu插件实现将日志提交到指定url,并处理报警。

步骤简单记录。
java安装略
logstash5.4 解压版,安装略
前提条件:日志为json格式。
这里手动将nginx的日志拼为json。

input {
    file {
        type => "nginx_log"
        path => "/var/log/nginx/access.log"
    }
}

# 将message字段的数据(json格式) "导入",供下面if判断调用。
filter {
    json {
        source => "message"
    }        
}

output {
    # http 模块会将数据提交到指定url
    if [loglevel] == "error" {
        http {
            http_method => "post"
            url => "http://www.rootop.org/xxx.php"
        }
    }

    elasticsearch {
        hosts => "192.168.10.71"
        index => "nginx-access-%{+YYYY.MM.dd}"
    }
 
    stdout {
        codec => rubydebug
    }
}

path => “/var/log/nginx/access.log” 支持通配符,如*.log ,实现一天一个日志文件,并可以持续采集日志
路径中也可以带通配符

2019-01-16
发表者 Venus
centos7 进入单用户模式已关闭评论

centos7 进入单用户模式

改了一个配置文件导致无法进入系统,想通过进单用户模式改回去,发现跟centos5的方法不一样了。记录一下。

重启服务器,出来grub菜单以后按上下键对启动菜单进行编辑。

按字母 e 进行编辑。

找到倒数第二行配置,也就是linux16开头那个,把ro改为rw,方便保存编辑的文件,否则默认是只读文件系统。最后面追加一句 init=/bin/sh

ctrl+x 开始启动。

2019-01-08
发表者 Venus
network-status中状态为 blocked:mixed-content已关闭评论

network-status中状态为 blocked:mixed-content

谷歌浏览器开发工具console中报:
Mixed Content: The page at ‘https://www.xxx.cn/wp/wp-login.php’ was loaded over HTTPS, but requested an insecure stylesheet ‘http://www.xxx.cn/wp/wp-admin/load-styles.php?c=0&dir=ltr&load%5B%5D=dashicons,buttons,forms,l10n,login&ver=4.8.2’. This request has been blocked; the content must be served over HTTPS.

nginx虚拟主机中添加一行:
add_header Content-Security-Policy upgrade-insecure-requests;